キーの押下を処理するために XI2 拡張機能を使用しています。次に、フィールド event->xcookie->data で、XIDeviceEvent deviceEvent を取得します。そして、deviceEvent->detail で 32 ビット キー コードを取得します。
この 32 ビット キー コードを文字列または文字に変換するにはどうすればよいですか? Qキーが押された場合のように、文字列「q」を取得したい。
わかりました、私はこれを理解したと思います:
XIDeviceEvent *d_ev = (XIDeviceEvent*) ev.xcookie.data;
KeyCode keycode = d_ev->detail;
int keysyms_per_keycode;
KeySym *keysym = XGetKeyboardMapping (dpy, keycode, 1, &keysyms_per_keycode);
char * result = XKeysymToString (keysym[0]);
keysym[0] の 0 は、おそらく修飾子がないことを意味します。keysym[1] はシフト (-> 大文字) であり、keysyms_per_keycode-1 までは他のすべての可能な修飾子があります。