Ubuntuでalt+wasdにカーソルキーのショートカットを割り当てる
はじめに
PCでFPSやTPSをやったことがある人なら、wasdキーで移動というのは当たり前なことだと思います。
私もフォートナイトをやっていたのでwasdキーでキャラクターを操作していました。
wasdキーでカーソル移動できたら、ホームポジションを崩さずカーソル移動できて便利なのではと思いやってみました。
環境
OS: Ubuntu20.04
設定方法
xmodmap
というユーティリティーを利用して設定していきます。
キーボードにはkeycodeが割り当てられており、それを上書きすることでキーを押したときの挙動を変更することができます。
まずはキーコードを調べます。xev
というコマンドで直前に押したキーのkeycodeを確認することができます。
$ xev
# aキーを押すと以下のように出力される
KeyRelease event, serial 37, synthetic NO, window 0x7a00001,
root 0x6c5, subw 0x0, time 215752625, (106,542), root:(2124,656),
state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
a
に38
というkeycodeが割あたっていることがわかりました。
次に現在aキーに割り合っている入力を確認します。
$ xmodmap -pke | grep 38
keycode 38 = a A a A
keycode 138 = SunProps NoSymbol SunProps
keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
keycode38
にa A a A
が割当っていることがわかります。
これは左から
-
keycode38
のみを入力した場合に入力される値 -
shift + keycode38
を入力した場合に入力される値 -
mode_switch + keycode38
を入力した場合に入力される値 -
shift + mode_switch + keycode38
を入力した場合に入力される値
という意味です。
ではあとはこれを上書いていきます。
まず、mode_switch
を右Altキーに当てはめます。
先程同様、xev
で右Altキーのkeycodeを確認します。
右Altキーのkeycodeは108
です。
以下のコマンドで上書くことができます。
$ xmodmap -e 'keycode 108 = Mode_switch'
続いてmode_switch+keycode38
とshift+mode_switch+keycode38
にLeft
を割り当てます。
$ xmodmap -e 'keycode 38 = a A Left Left'
コマンド実行後に右alt+aを押すとカーソルが左に移動した思います。
以下同様にwsdにも適用します。
最終的に以下のコマンドを実行します。
$ xmodmap -e 'keycode 108 = Mode_switch'
$ xmodmap -e 'keycode 38 = a A Left Left'
$ xmodmap -e 'keycode 25 = w W Up Up'
$ xmodmap -e 'keycode 39 = s S Down Down'
$ xmodmap -e 'keycode 40 = d D Right Right'
カーソル移動がAlt+wasdでも可能になったと思います。
他にもいろんなキーを割り当てるともっと便利になるかも知れません。