Numlockキーを無効にする(テンキー番号が常に機能するようにキーを何もしない)と同時に、追加のマウスボタン(マウスの側面にある)をショートカットにマッピングしてカスタムアクションを実行するのに問題があります。
Arch LinuxとXfceを使用しており、ログインマネージャーはLightDMです。
私はこのコードを使用してbashファイルに入れ、起動時にnumlockを無効にします。
xmodmap -e "keycode 77 = NoSymbol"
そして、ホームディレクトリに.xbindkeysrcファイルがあります。
"xdotool key ctrl+w"
b:8 + Release
"xdotool key ctrl+d"
b:9 + Release
(タブとブックマークを閉じる)
起動時に「Numlockを無効にする」コードを有効にすると、.xbindkeysrcファイルは無効になります。これは、xmodmapコマンド(その前)と同じbashファイルにあるコマンドnumlockx on
に関連しているようです。どうすれば解決できますか?
追加する
"NoCommand"
c:77
to .xbindkeysrcにも、望ましい効果はありません。 Numlockは理論的には修飾キーであるため、cをmに変更しても役に立ちません。 c:77の代わりにNum_Lockを使用することも機能しません。
何が起こっているのか、そしてなぜあなたのアイデアがうまくいかないのかについての説明から始めましょう。まず、モディファイアマップを見てください。
$ xmodmap
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
ご覧のとおり、ここではNum_Lock
はmod2
です。オンの場合、すべてのキー押下イベントはmod2
ビットがオンになっています。
このように無効にすると:
$ xmodmap -e "keycode 77 = NoSymbol"
$ xmodmap
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 BadKey (0x4d)
mod3
mod4 Super_L (0x85), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
mod2
がBadKey
に関連付けられていることに注意してください。これは、Xorgを大いに混乱させるようです。実際、モディファイアマップの変更のほとんどは、私にとってX11を壊しているようです。
現在、モディファイアマップで遊ぶことを含む良い解決策を見つけることができません。しかし、私には別の考えがあります。すべてのキーパッドキーをマップして、numlockをオンとオフの両方で同じように機能させることができます。あれは:
xmodmap -e "keysym KP_Up = KP_8"
xmodmap -e "keysym KP_Left = KP_4"
# ...
これを行うと、numlockの状態は重要ではなくなります。
後でモディファイアを削除して、LEDの切り替えをオフにすることもできます。
xmodmap -e "remove mod2 = Num_Lock"
@MichałGórnyの回答に基づいています。 num-lockを無効にし、とにかく数値を使用し、numlockをF13にマップするコマンドは次のとおりです(ウィンドウマネージャーの特別な関数にバインドすると便利な場合があります)
# NumLock is F13
xmodmap -e "remove mod2 = Num_Lock" \
-e "keycode 77 = F13"
# Use numbers even when numlock is off
xmodmap -e "keysym KP_End = KP_1" \
-e "keysym KP_Down = KP_2" \
-e "keysym KP_Next = KP_3" \
-e "keysym KP_Left = KP_4" \
-e "keysym KP_Begin = KP_5" \
-e "keysym KP_Right = KP_6" \
-e "keysym KP_Home = KP_7" \
-e "keysym KP_Up = KP_8" \
-e "keysym KP_Prior = KP_9" \
-e "keysym KP_Insert = KP_0" \
-e "keysym KP_Delete = KP_Decimal"
numlockライトが常に点灯しないのはいいことです:)
脚本:
#timeout, otherwise it will not work upon boot/login (make two variants of the script. Use sleep 2 for the login variant)
sleep 20
xmodmap -e "keysym KP_Up = KP_8"
xmodmap -e "keysym KP_Left = KP_4"
xmodmap -e "keysym KP_Right = KP_6"
xmodmap -e "keysym KP_Down = KP_2"
#
xmodmap -e "keysym KP_Begin = KP_5"
#
xmodmap -e "keysym KP_Home = KP_7"
xmodmap -e "keysym KP_Next = KP_3"
xmodmap -e "keysym KP_Prior = KP_9"
xmodmap -e "keysym KP_End = KP_1"
#
xmodmap -e "keysym KP_Insert = KP_0"
xmodmap -e "keysym KP_Delete = KP_Decimal"
#
numlockx on
Num_Lockを押すと、このライトはオフになります。これがこのソリューションの唯一の欠点であり、私が持っていたものの大幅な改善です。このソリューションは、Altのような他の修飾キーを壊しません。
このソリューションを提供してくれたMichałGórnyに感謝します。
ログオフして再度ログインすると、スクリプトは機能しなくなります(再度機能させるには、再起動する必要があります)。これを修正するには、/ etc/lightdm/lightdm.conf(Manjaro Linux内の場所)を編集して、スクリプトのログインバリアントを追加します。
session-setup-script=sh /home/$USER/numlockalwayson-login.sh
また、LightDMは、ログオフするとnumロックをオフに切り替えます。これを修正するには、同じファイルに追加します。
greeter-setup-script=/usr/bin/numlockx on
保存することを忘れないでください。
常に機能させるには、Xfceの起動とこの構成の両方が必要です。
xmodmap
が有効になっている場合は、xkb
を使用しないでください(現在は常に使用されています)。 xkbベースのソリューションは次のとおりです。numlockのキーコードを未使用のキーのコードに変更します。
/usr/bin/numlockx on
/usr/bin/xkbcomp $DISPLAY /tmp/kbmap.xkb
sed -i.bak 's/<NMLK> = 77;/<NMLK> = 98;/
s/<KATA> = 98;/<KATA> = 77;/' /tmp/kbmap.xkb
/usr/bin/xkbcomp /tmp/kbmap.xkb $DISPLAY