私はMSIノートブックを所有しており、Fキーにはいくつかの特別な機能があります。たとえば、F4キーはタッチパッドを切り替えます。
Windowsでは、このキーは期待どおりに機能します。つまり、タッチパッドを有効/無効にします。ただし、Linux(Fedora)では機能しません。
showkey -s
このキーを押すと、次のような結果が表示されます。
0x1d 0xe0 0x5b 0x76 0x9d 0xe0 0xdb 0xf6
showkey
どのパラメータもこの結果を生成しません。
keycode 28 release
keycode 29 press
keycode 125 press
keycode 85 press
keycode 29 release
keycode 125 release
keycode 85 release
私が得るものとほぼ同じですxev
。
KeyPress event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277257, (692,1239), root:(692,1314),
state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277259, (692,1239), root:(692,1314),
state 0x4, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277261, (692,1239), root:(692,1314),
state 0x44, keycode 93 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277262, (692,1239), root:(692,1314),
state 0x44, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277265, (692,1239), root:(692,1314),
state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277266, (692,1239), root:(692,1314),
state 0x0, keycode 93 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
合計3つのKeyPressイベントと3つのKeyReleaseイベントがあります。
xbindkeys --multikey
F4キーを押すと、次の情報が表示されます。
"(Scheme function)"
m:0x44 + c:37
Control+Mod4 + Control_L
"(Scheme function)"
m:0x40 + c:133
Mod4 + Super_L
"(Scheme function)"
m:0x0 + c:93
NoSymbol
xbindkeys
最初の部分を使用して、キーを私のお気に入りの.xbindkeysrcファイルに再マップしてみました。
"xdotool key --clearmodifiers XF86TouchpadToggle"
m:0x44 + c:37 + Release
しかし、それはうまくいきませんでした。
Fedoraでこれを達成する方法の正しい方向/ツールを教えてください。私の最初の候補はxchainkeys
信頼できる/フュージョンリポジトリでは利用できません。長いシーケンススキャンコードを介してキーを再マッピングする他の方法はありますか?
答え1
~からFnキーに関連するキーボードショートカットの定義この質問に答えることができるいくつかの洞察力があります。
Fnほとんどのシステムではキー自体を検出することはできませんが、次のことを試すことができます。
$ xev | grep --line-buffered keysym
どのキーを見つけてFn-Left送ってくださいFn-Right。 (こう
grep
すると騒音が減ります。)幸運な場合は、重要でないキーストロークをコンピュータに送信して再マップできます。
たとえば、私のシステムでは、キーが実際にイベントを送信しているように
xev
見えます。Fn-LeftXF86AudioPrev
state 0x0, keycode 173 (keysym 0x1008ff16, XF86AudioPrev), same_screen YES,
これをHome主要イベントに簡単に再マッピングできます。
$ xmodmap -e 'keysym XF86AudioPrev = Home'
End、PageUp、PageDownでも同じことができることを願っています。
残念ながら、xevを押したときに一意の情報を受け取らない限り、運は Fn-Leftありません。
Fnキーストロークが他の修飾キーのように直接送信されないことは残念です。もしそうなら、私たちはソフトウェアを通してその意味を構成する能力がより多くなったでしょう。
答え2
msi p15(a10sc)ノートブックでも同じ問題が発生します。
toggleTouchpad.sh
私は「同じキーの組み合わせにマッピング」というスクリプトを作成しました。
xbindkeys --key
F4そのキーを押してLeftCtrlに変えると、その順番( + + )RightCtrlがより自然になります。CtrlMod4RightCtrl
- スクリプト:
#!/usr/bin/bash touchpadId=$(xinput list | grep -o 'Touchpad.*id=[0-9]*' | awk 'NF{print $NF}' | sed 's/id=//') propId=$(xinput list-props $touchpadId | awk '/Device Enabled \([0-9]+\)/{print $3}' | sed 's/[():]//g') propVal=$(xinput list-props $touchpadId | awk '/Device Enabled \([0-9]+\)/{print $4}') if [ "$propVal" -eq "1" ]; then xinput set-prop $touchpadId $propId 0 else xinput set-prop $touchpadId $propId 1 fi
- 私のもの
.xbindkeysrc
"toggleTouchpad.sh" Control+Mod4 + Control_R
スクリプトを使用している場合は、タッチパッドIDを正しくインポートしたことを確認してください(私はbashの専門家ではありません)。アーチスウィキ行ってください。
明らかに、スクリプトを別のキーの組み合わせにバインドできます。
ノート
- これは重要な問題を解決しませんが、F4解決策を見つけるのに役立ちます。
- Mod4Windows鍵です
答え3
ついにこの問題を解決しました。ソリューションの主なステップはArch wikiにあります。ここ。私が所有しているMSIノートブックとまったく同じではありませんが、それでも私はうまくいきます。
私がしなければならなかったのは、元の機能にキーコード93を割り当てることだけでした。
~/.Xmodmap
keycode 93 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
その後、ショートカット設定でKDEを使用しているので、タッチパッドの切り替え動作を必要なF4キーにマッピングしました。