好的,所以我正在尝试使用 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)?请记住,这些是在普通美式键盘上找不到的特殊字符。提前致谢。