キーボードのいくつかのキーを再マッピングすることに興味があります。特に、ファンクションキーを押しながらF1キーを押して、スクリプトをトリガーさせたいと思います。 xev
キープレスに関連付けられているキーコードを把握するのに役立ちます。たとえば、x
を押すと キー、私は得る:
KeyPress event, serial 41, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1597243, (-190,43), root:(910,336),
state 0x0, keycode 53 (keysym 0x78, x), same_screen YES,
XLookupString gives 1 bytes: (78) "x"
XmbLookupString gives 1 bytes: (78) "x"
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1597363, (-190,43), root:(910,336),
state 0x0, keycode 53 (keysym 0x78, x), same_screen YES,
XLookupString gives 1 bytes: (78) "x"
XFilterEvent returns: False
これは私には理にかなっています。
ただし、Function-F1を押すと、何が起こるかわかりません。 Function-F1を押すと、Windowsボタンを押したまま、文字l
を入力したように見えるのはなぜですか。 ?
xev
Function-F1:
KeyPress event, serial 41, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1735349, (-157,221), root:(943,514),
state 0x0, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 41, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1735350, (-157,221), root:(943,514),
state 0x40, keycode 46 (keysym 0x6c, l), same_screen YES,
XLookupString gives 1 bytes: (6c) "l"
XmbLookupString gives 1 bytes: (6c) "l"
XFilterEvent returns: False
MappingNotify event, serial 41, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 41, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1735356, (-157,221), root:(943,514),
state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1735357, (-157,221), root:(943,514),
state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 42, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyRelease event, serial 42, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1735463, (-157,221), root:(943,514),
state 0x40, keycode 46 (keysym 0x6c, l), same_screen YES,
XLookupString gives 1 bytes: (6c) "l"
XFilterEvent returns: False
KeyRelease event, serial 43, synthetic NO, window 0x2600001,
root 0xae, subw 0x0, time 1735470, (-157,221), root:(943,514),
state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
テキストウィンドウをフォーカスした状態でFunction-F1を押すと、文字l
が入力されます。 。
背景情報:Toshibar835でLubuntu11.10を実行しています。役立つ可能性のある詳細をお知らせください。
編集:
比較のために、Function-F12と入力すると、次のようになります。
KeyPress event, serial 41, synthetic NO, window 0x2200001,
root 0xae, subw 0x0, time 8369184, (-620,473), root:(480,766),
state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x2200001,
root 0xae, subw 0x0, time 8369344, (-620,473), root:(480,766),
state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
F1-F12キーに何か特別なものがあるかどうかを確認したかったのですが、少なくともいくつかは期待どおりに機能しているようです。
関連:Ubuntu 14.04の「DumtheOutput」サウンド?承認された回答:
Function-F1と言うときは、ラップトップの隅にある面白い小さなFnキーを押してから、キーボードの左上にあるF1キーを押すことを意味すると思います。そして、一部のラップトップキーボードにあるSleepのような追加のキーの1つをマップしようとしていること。そのキーは文字通り複数のキーを押しているようです。まず、Win+Lを1つのコンボと見なします。 Windowsでは、このショートカットは画面をロックしますが、スクリーンセーバーは起動しません。次に、XF86ScreenSaverのマッピングが表示されます。これは、Xが何らかのスリープキーコードを認識していることを意味している可能性があります。ノートパソコンのキーボードのそのキーは、Windowsユーザーが画面をすばやくロックしてスクリーンセーバーをアクティブにするのに便利なように、Win + L+Sleepの3つのキーコードを物理的に送信していると思います。それらを除外する良い方法がわかりません。キーボードのFnキーは通常、Linuxカーネルには表示されません。代わりに、キーボードがカーネルに指示するコードを変更します。 LinuxでOOoを使用してUSBRFPowerPointリモコンを使用しようとしたときに、プレゼンテーションを開始/停止するボタンが、F5キーコードとESCキーコードを交互に送信するための不完全なコントロールであることがわかりました。他のボタンは、bを送信して画面を空白にするのと同じように不完全でした。