Linux将unicode字符发送到活动应用程序

时间:2012-12-25 23:23:51

标签: c++ linux qt

好的,所以我正在尝试使用C ++和Qt4 for Linux开发一个应用程序,它将某些键序列映射到特殊的Unicode字符。此外,我正在努力使其成为双语,因此发送的特殊Unicode字符取决于所选语言。示例:AltGr + s将发送ß或ş,具体取决于是选择德语还是罗马尼亚语。在Windows上,我使用AutoHotKey实现了这一点。但是,我无法让IronAHK在Linux上工作,因此我自己编写了一个很好的Qt应用程序,使用Qxt注册“全局”快捷方式。我试过这个片段:

void mainWnd::sendKeypress( unsigned int keycode )
{
    Display *display = QX11Info::display();
    Window curr_focus;
    int revert_to;

    XGetInputFocus( display, &curr_focus, &revert_to );

    XTestFakeKeyEvent( display, keycode, true,  0 );
    XTestFakeKeyEvent( display, keycode, false, 1 );

    XFlush( display );
}

从另一个应用程序(它工作的地方)复制,但在这里似乎什么都不做。此外,可能存在一个问题,即我正在尝试发送的字符在US 101键盘上找不到,我目前在笔记本电脑上使用(以及作为操作系统中的布局)。

所以我的问题是:如何让应用程序向任何具有焦点的应用程序发送Unicode字符,插入一个特殊字符(有点像KCharMap)?请记住,这些是普通美国键盘上找不到的特殊字符。提前谢谢。

0 个答案:

没有答案