Linux Mint キーマップの変更

経緯

現在ノートパソコンにLinux Mintを入れていて、それで作業を行うことが多い。
ただ今まで利用していたPCがThinkpad X220 であり、古くなってきたこともあってかここ最近調子が悪いことが多くなった。

そのため新しくThinkpad T480に移行することにしたが、従来のX220の7段キーボードにあった、アプリケーションキーが、新しいT480にはない。

個人的に1つのキーでコンテキストメニューを呼び出せるアプリケーションキーがとても便利で利用することが多いため、なんとかT480でも同じことが出来るようにしたかった。

環境

・Thinkpad T480 (日本語キーボード)

・Linux Mint 20.3 Una

参考サイト

Linux MintでSuperキーを無変換キーに割り当て

キーボードマッピングの仕組み

XmodMap

Ubuntu documentation キーボード

要約

以下のファイルを作成、再読込を行うことで

普段あまり使わない右シフトキーを、アプリケーションキー(LinuxではMenuキーというのか?)として利用できるようになった。

■.Xmodmap

keycode 62 = Menu

keycode 62 は右シフトキー 、機種によって違うのかは不明(参考サイトを見る限り、違いそうな気はする)

■作成した.Xmodmapの読み込み

$ xmodmap .Xmodmap

設定手順

■1.キーコードの確認

一先ず参考サイトを参照し、キーコード一覧を見てみる

$ xmodmap -pke
keycode   8 =
keycode   9 = Escape NoSymbol Escape
keycode  10 = 1 exclam 1 exclam
keycode  11 = 2 quotedbl 2 quotedbl
keycode  12 = 3 numbersign 3 numbersign
keycode  13 = 4 dollar 4 dollar
keycode  14 = 5 percent 5 percent
keycode  15 = 6 ampersand 6 ampersand
keycode  16 = 7 apostrophe 7 apostrophe
keycode  17 = 8 parenleft 8 parenleft
keycode  18 = 9 parenright 9 parenright
keycode  19 = 0 asciitilde 0 asciitilde
keycode  20 = minus equal minus equal
keycode  21 = asciicircum asciitilde asciicircum asciitilde
keycode  22 = BackSpace BackSpace BackSpace BackSpace
keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab

うーん、一覧を見てもピンと来ない、、、

なのでxevから該当キーのコードを探す。なおT480にアプリケーションキーは無いため、別途キーボードを繋いで確認した。

$ xev

表示されたウィンドウの黒枠にカーソルを合わせ、該当キーを押す。

●右シフトキーを押したとき

KeyPress event, serial 37, synthetic NO, window 0x5a00001,
    root 0x7b8, subw 0x5a00002, time 5646504, (39,54), root:(2830,522),
    state 0x10, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x5a00001,
    root 0x7b8, subw 0x5a00002, time 5646646, (39,54), root:(2830,522),
    state 0x11, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

よくわからんが “keycode 62” と表示されているので、62なのだろう・・・

同じようにアプリケーションキーを押してみる。

●アプリケーションキーを押したとき

KeyPress event, serial 37, synthetic NO, window 0x5a00001,
    root 0x7b8, subw 0x5a00002, time 5761550, (25,46), root:(2816,514),
    state 0x10, keycode 135 (keysym 0xff67, Menu), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x5a00001,
    root 0x7b8, subw 0x5a00002, time 5761712, (25,46), root:(2816,514),
    state 0x10, keycode 135 (keysym 0xff67, Menu), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

こちらはkey codeが135らしく、keysym 0xff67 , Menu となっている。

■2.設定ファイルの作成

上記でそれぞれのkey code が分かったので、設定ファイルを作成。

記載方法については、参考サイトのxmodmapコマンドを見たところ

keycode NUMBER = KEYSYMNAME

で、指定するみたい。

keysym と言うのがよく分かっていなかったが、参考サイトをみたところ

X window system 上では、そのボタンが押されたさいの役割を定義しているようなものをkeysymというらしく、

物理配置上のkey codeに、このkeysymを関連付けることで、動作するもののようだ・・・

(初めて知った、こんな仕組みになっていたのね)

なので.xmodmapのファイルに記載するkeysymについては、前項のxevより得られた結果より、

以下のように記載した

●.Xmodmap

keycode 62 = Menu

■3.設定の適用

作成したファイルを適用する

$ xmodmap .Xmodmap

適用後、右シフトキーを押して見る。

・・・

アプリケーションキーと同様にキー押下でコンテキストメニューが表示されることが確認出来た。

もともとThinkpadの7段キーボードが使いやすく感じており、アイソレーションキーで アプリケーションキーが無い最近のThinkpadへの移行をためらっていたが、これで少しは使いやすくなったかな・・・

でも未だプリントスクリーン キーがなんでこんなところにあるの?ホーム・エンドキーが打ちにくいなぁ、などと思うことも多いが・・・慣れの問題なのだろうか?

7段キーボードが復活してほしい・・・

コメントを残す

メールアドレスが公開されることはありません。