私の必要は、charをキーコードに変換して、でイベントを送信することXSendEventです。
を使用してXStringToKeysym("a")いますが、文字を使用:すると無効な結果が得られます。
keysym の使用をバイパスして、char を直接XKeyEventキーコードに変換することは可能ですか?
どんな助けでも大歓迎です!
文字の Unicode 表現を取得して、その前に追加Uできます。たとえば、:これらの場合は同じことを行います:
XStringToKeysym("colon")
XStringToKeysym("U003A")
実際、@Artyomの答えよりもうまくいくことができます。見ると、 0x20-0xFF の場合、文字がに直接マップされて<X11/keysymdef.h>いることがわかります。したがって、その範囲の文字を として直接使用し、残りの 32 文字をマップする方が簡単だと思います。ASCIIXKeySymsKeyCodes
サンプル コードを含む詳細な回答については、 https ://stackoverflow.com/a/25771958/3149905 を参照してください。
XStringToKeysym名前をキーシムに変換するため、":"機能しません"colon"。代わりに使用する必要があります。
キーコードは標準ではありません (キーボード レイアウトはさまざまです)。そのため、キーシムが使用され、 で定義されてい<X11/keysymdef.h>ます。
あなたができる最善のことは、XKeysymToKeycodeXK_a と XK_colon を使用することです。