USB経由のLogitechK290キーボードでは、デフォルトでF.キーにアクセスできないため、を押す必要があります。 Fn それらを使用する前に、それは実際には使用できません。
ザ・ Fn キーだけでは、xev
でイベントは発生しません。
押す F1 なし Fn 2つのキーイベント、キーコード50(Shift_L
)およびキーコード133(Super_L
)Kubuntuに「タッチパッドが無効です」というメッセージが表示されます(すべてのキーで同じメッセージが表示されます) F1 使って F4)
ほとんどのメディアキーは機能しますが、Fキーに直接アクセスしたいのですが。切り替える方法を知っていますか Fn 動作?
これが私が押したときの出力です F1 なし Fn:
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
state 0x11, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 40, synthetic NO, window 0x0,
keys: 4294967238 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
state 0x51, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 40, synthetic NO, window 0x0,
request MappingPointer, first_keycode 0, count 0
そしてのために F2 (まだありません Fn):
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
state 0x18, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 40, synthetic NO, window 0x0,
keys: 4294967238 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
state 0x58, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
F1 と Fn 期待される結果が得られます:
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64820204, (-856,-213), root:(1097,247),
state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64820284, (-856,-213), root:(1097,247),
state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
キーコードをFn+Fx
とFx
の間で交換しても同じ結果が得られました。ここで、xは1,2,...12
です。
xmodmap -pke
を使用して、現在のキーコードとキーシンボルのリストを取得します。xev
を実行し、キーコードをメモしてF1
からF12
を押します。~/.Xmodmap
ファイルでスワップを行います。例:私のシステムでは、(1)の結果:
keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
keycode 68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
keycode 69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
keycode 70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
...
keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute
..
それから私はそれを~/.Xmodmap
で交換しました:
keycode 121 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
keycode 122 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
keycode 123 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
keycode 198 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
...
keycode 67 = XF86AudioMute NoSymbol XF86AudioMute
keycode 68 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 69 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
keycode 70 = XF86AudioMicMute NoSymbol XF86AudioMicMute
...
次に、有効にするにはxmodmap ~/.Xmodmap
を実行します。
xev
は、デスクトップ環境によってキャプチャされたイベントを表示できません。キーをテストするためのより良い方法は、showkey
コマンドを使用することです(X11内ではなくLinuxコンソールで)。 OSは実際にShift + Super +いくつかのキーの組み合わせを受け取っていると思います。
上記の組み合わせをFキーだけに再マッピングすることもできますが、面倒な場合があります。Shiftキーを「離す」必要があり(キーボードはそれを押すことをシミュレートするため)、Shift + F1を機能させるのはさらに複雑になります。 、Shiftキーが前に押されていた場合は追跡が必要になるため。
この問題は、マルチメディアホットキーを切り替えるためのキーの組み合わせ、またはBIOS /ファームウェアのオプションのいずれかを備えているラップトップで非常に一般的です。しかし、これは外部キーボードの特定のモデルに関するものであるとおっしゃっていましたが、オンラインで見ると、このプロジェクトが見つかりました。
https://github.com/milgner/k290-fnkeyctl
プロジェクトの説明には、「Logitech K290キーボードのファンクションキーの動作方法を再構成する」と記載されているため、試してみる価値があるかもしれません。