2

文字列をキーコードに変換してXlibで記述できるようにしたい(Linuxでのユーザーアクションをシミュレートするため)。キーコードはASCIIではなく、xevを使用したときに取得するコードです。

linuxKeyPress event, serial 33, synthetic NO, window 0x6400001,
    root 0x13c, subw 0x0, time 51212100, (259,9), root:(262,81),
    state 0x0, keycode 24 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

たとえば、「a」のキーコードは24です。

文字が大文字かどうかを簡単に検出して、ALT +小文字(文字)の組み合わせを作成できますが、キーコードの取得方法がわかりません。

1つの解決策は、すべての組み合わせ(a = 24、b = 56、c = 54、...)のリストにすることですが、関数がある場合はより良いでしょう。

私はAZERTYキーボードを使用しています。QWERTYキーボードでは、同じ文字のキーコードは異なりますか?

ありがとうございました

4

2 に答える 2

6

私が望んでいたことを正確に実行しているこのコードを見つけました。

関数を使用しますdisplay.keysym_to_keycode(Xlib.XK.string_to_keysym(char))

于 2009-12-24T12:01:54.627 に答える
4

キーコードは、キーボードハードウェアだけでなく、キーボードレイアウトに対するユーザーの好みにも依存します。たとえば、ユーザーはqwertyキーボードでdvorakレイアウトを使用できます。

最善の解決策は、おそらくpython-xlibを使用して、ユーザーのキーボード設定に従って情報を見つけることです。その方法の詳細はわかりません。

大まかな解決策は、出力を実行xmodmap -pkeして解析することです。

于 2009-12-24T11:47:37.590 に答える