たとえば、左コントロールのキーコードは常に37ですか?そのようなキーコードのリストはどこにありますか?
答え1
いいえ。これはキーボード構成(および最終的にハードウェア)によって異なります。同じハードウェアを使用している場合は問題ありません。
xtermでキーコードを使用するmodifyOtherKeys
特徴。いくつかの背景知識(および複数のキーボードタイプの例)XTerm - 「その他」修飾キーページ。
このページのテーブルは、次のように作成されました。修正キー.pl、与えられたXキーボード構成に対するxtermの動作をエミュレートするスクリプトです。以下から情報を取得します。「ローカライズ状態」、そして一部はkbmapの設定(やや読みやすい形で)。最終的に、このデータは他のソースからコンパイルされたテーブルから来ますが、これらのユーティリティはXキーボード構成で利用可能な情報を取得する最も簡単な方法です。
私の記憶を確認しながら、次の表の変更に関する詳細を表示するスクリプトを作成しました。
#!/bin/sh
for kbd in apple altgr-intl pc105
do
for lang in us gb fr
do
setxkbmap -model $kbd -layout $lang -print | \
xkbcomp - -C -o - >/tmp/$kbd-$lang.log 2>/dev/null
done
done
XキーコードsymCache
これらのソースファイルで定義された配列のインデックスは、正確に次のようになります。たとえば、次のようになります。
#define NUM_SYMBOLS 358
static KeySym symCache[NUM_SYMBOLS]= {
ただし、テーブルのサイズは構成によって変わります。
altgr-intl-fr.log:#define NUM_SYMBOLS 347
altgr-intl-gb.log:#define NUM_SYMBOLS 348
altgr-intl-us.log:#define NUM_SYMBOLS 254
apple-fr.log:#define NUM_SYMBOLS 358
apple-gb.log:#define NUM_SYMBOLS 359
apple-us.log:#define NUM_SYMBOLS 265
pc105-fr.log:#define NUM_SYMBOLS 375
pc105-gb.log:#define NUM_SYMBOLS 376
pc105-us.log:#define NUM_SYMBOLS 282
そして、左/右のコントロールシンボルは、いくつかのテーブルで異なるオフセットとして表示されます。
altgr-intl-fr.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
altgr-intl-gb.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
altgr-intl-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
apple-fr.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
apple-gb.log: XK_Control_L, XK_Super_L, XK_Shift_R, XK_Control_R,
apple-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
pc105-fr.log: XK_Control_L, XK_q, XK_Q, XK_at,
pc105-gb.log: XK_Control_L, XK_a, XK_A, XK_ae,
pc105-us.log: XK_Num_Lock, XK_Shift_L, XK_Control_L, XK_Super_L,
だから私はこのキーコードを望んでいませんいつもすべてのキーボード構成では、値は同じです。
問題のコメントには、xev
現在設定されているキーコードを表示する方法が記載されています。私の左のコントロールは67(いいえ37):
KeyRelease event, serial 34, synthetic NO, window 0xa00001,
root 0x111, subw 0xa00002, time 51155669, (23,30), root:(43,73),
state 0x4, keycode 67 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 34, synthetic NO, window 0xa00001,
root 0x111, subw 0xa00002, time 51156901, (23,30), root:(43,73),
state 0x0, keycode 70 (keysym 0xffe4, Control_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False