死键(急性,分音等)的问题c ++

时间:2010-03-06 05:41:19

标签: c++ x11 xlib

我目前正在使用X11 lib为linux编写自己的虚拟键盘,我无法找到模拟任何死键的KeyPress事件的方法。 例如,我尝试使用asigned宏写入“á”,即XK_aacute,没有任何反应。 后来我试图发送XK_acute(急性重音宏)然后发送XK_a,再一次,没有任何反应:(

在KDE虚拟键盘“Kvkbd”中可以这样做,所以我下载了源代码,但它只支持英文键盘布局

这是我的测试代码:

#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
#include <iostream>

int main(){
 Display *display;
 unsigned int keycode;
 unsigned int keycode1;
 display = XOpenDisplay(NULL);

 keycode = XKeysymToKeycode(display, XK_aacute); 
 XTestFakeKeyEvent(display, keycode, True, 0);
 XTestFakeKeyEvent(display, keycode, False, 0);

 keycode1 = XKeysymToKeycode(display, XK_acute);
 XTestFakeKeyEvent(display, keycode1, True, 0);


 keycode = XKeysymToKeycode(display, XK_a);
 XTestFakeKeyEvent(display, keycode, True, 0);
 XTestFakeKeyEvent(display, keycode, False, 0);

 XTestFakeKeyEvent(display, keycode1, False, 0);


 keycode = XKeysymToKeycode(display, XK_D);
 XTestFakeKeyEvent(display, keycode, True, 0);
 XTestFakeKeyEvent(display, keycode, False, 0);
 XFlush(display);
}

任何帮助或想法都会被贬低

1 个答案:

答案 0 :(得分:2)

我刚刚想出了¬¬

#include <X11/extensions/XTest.h>
#include <X11/keysym.h>
#include <X11/Xlib.h>
#include <iostream>

int main(){
 Display *display;
 unsigned int keycode;
 unsigned int keycode1;
 display = XOpenDisplay(NULL);

 keycode1 = XKeysymToKeycode(display, XK_dead_acute);
 XTestFakeKeyEvent(display, keycode1, true, 0);


 keycode = XKeysymToKeycode(display, XK_A);
 XTestFakeKeyEvent(display, keycode, true, 0);
 XTestFakeKeyEvent(display, keycode, false, 0);

 XTestFakeKeyEvent(display, keycode1, false, 0);

 XFlush(display);
}

我使用了错误的宏