LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1051|回复: 4

SCIM 中 HelperAgent 提交 BackSpace 键一问

[复制链接]
发表于 2006-12-14 00:14:07 | 显示全部楼层 |阅读模式
我试图在 HelperAgent 中直提交一个“BackSpace“ KeyEvent 来删除目标程序中已经输入的字符,相当于按键盘上的“BackSpace“,结果不成功,另外回车键也是如此,唯独空格键可以提交成功,我试过了 forward_key_event 和 send_key_event 都不行。 请问如何才能提交 Backspace 和 Enter 键?

以上功能是想在手写环境中(无键盘)使用。
 楼主| 发表于 2006-12-14 00:30:23 | 显示全部楼层
  1.    static void forward_key_button_clicked (GtkWidget *widget, gpointer data)
  2.    {
  3.            KeyEvent key;
  4.    
  5.            switch (GPOINTER_TO_INT(data)) {
  6.                    case SCIM_SHOUXIE_KEY_BACKSPACE:
  7.                            key = KeyEvent (SCIM_KEY_ReleaseMask,
  8.                                            SCIM_KEY_BackSpace,
  9.                                            SCIM_KEYBOARD_Default);
  10.                            break;
  11.                    case SCIM_SHOUXIE_KEY_ENTER:
  12.                            key = KeyEvent (SCIM_KEY_ReleaseMask,
  13.                                            SCIM_KEY_Return,
  14.                                            SCIM_KEYBOARD_Default);
  15.                            break;
  16.                    case SCIM_SHOUXIE_KEY_SPACE:
  17.                            key = KeyEvent ("space");
  18.                            break;
  19.            }
  20.            if (m_agent && cur_ic >= 0) {
  21.                    m_agent->send_key_event (cur_ic, cur_uuid, key);
  22.            }
  23.    }
复制代码

KeyMask 我还试过 NullMask, 也试过 key = KeyEvent ("backspace") 都不行,我猜输入程序是不处理 backspace 和 enter 这样的特殊键的(直接提交应用程序),所以我提交不成功?
回复 支持 反对

使用道具 举报

发表于 2006-12-14 01:41:05 | 显示全部楼层
have a look at the scim-input-pad source code
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-14 09:34:12 | 显示全部楼层
非常感谢,不知道还有 scim-input-add 这个东东,现在只看了一一点代码,初步认识是需要先发一个 keypress, 再发一个 keyrelease 这样就是完整的按键模拟了。一会做实验后再来报告。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-14 15:54:25 | 显示全部楼层
实际上是我把 KeyEvent 中的 code 和 mask 写反了,现在问题已经解决了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表