Raspberry Pi 4 RK61 xmodmap XKB(X KeyBoard extension)

メカニカルキーボードRK61を使い始めて1週間ほどになります。
なんとか少し慣れてきて常時運用する目処が立ってきました。
それでもやはりいづい、気になるキーがいくつかあります。

XKB(X KeyBoard extension)

xmodmap – ArchWiki
X KeyBoard extension – ArchWiki
xmodmapとXKB(X KeyBoard extension)は独立したツールとあります。
xmodmapで設定した内容はXKBからも設定可能のようですがなかなかわかりにくい、サクッとはいかないようです。
前回のCapsLock設定はそのままxmodmapから実行、簡単に修正出来そうなキー2箇所をXKBから実行してみました。

slash,question(/?)キー
/?キーはUP(↑)と兼用になっています。デフォルトはUP(↑)
Fn + EnterでUP(↑)と/?がトグルします。
デフォルトUP(↑)時は右Shift + (/?)で? Fn + (/?)で/ の動作
当サイトではHistoryを多用します。デフォルトUP(↑)でいいのですが右Shift + (/?)で/ の動作にしたい

semicolon,colon(;:)キー
セミコロン、コロンキーは優先がセミコロン Shift + がコロン
コロンを多用するのでコロンを優先したい

xkbcomp

現在の設定をファイルに出力

$ xkbcomp $DISPLAY output.xkb

出力したファイルをコピー(ファイル名は任意)

$ cp output.xkb .Xkeymap

Xサーバーにアップロード

$ xkbcomp .Xkeymap $DISPLAY


Warningが表示されますがデフォルト設定を再アップロードしただけなので見なかったことにします。

.Xkeymap編集
デフォルト(数値は行番号)

1280     key <AC10> {         [         semicolon,         colon ] };
1315     key <AB10> {         [         slash,          question ] };

項目の順位を入れ替えて保存

1280     key <AC10> {         [          colon,        semicolon ] };
1315     key <AB10> {         [          question,         slash ] };

再度アップロード

$ xkbcomp .Xkeymap $DISPLAY

上記の設定が有効になります。

xmodmap XKBを有効にする

xmodmap XKBとも起動時及びキーボードのsleepからの復帰時は設定が有効になっていません。

マウスから実行(以前作成したアプリケーションメニューに登録)

# Button902 xmodmap xkbcomp
def x902():
    subprocess.run("xmodmap /home/pi/.Xmodmap", shell=True)
    time.sleep(0.1)
    subprocess.run("xkbcomp /home/pi/.Xkeymap $DISPLAY", shell=True)
icon902 = PhotoImage(file=dir+'xmodmap.png')
button902 = ttk.Button(frame1,image=icon902,command=x902)
button902.grid(row=1,column=2)

キーボードから実行(~/.xbindkeysrcに登録)
キーは左Shift + (/?↑)

"xmodmap ~/.Xmodmap && sleep 0.1 && xkbcomp ~/.Xkeymap $DISPLAY"
  m:0x1 + c:111
  Shift + Up

xbindkeys

# apt install xbindkeys

RaspberrypiOS desktop環境では自動で起動しているはずです。
キーを登録したら

$ killall xbindkeys
$ xbindkeys

キーの取得は

$ xbindkeys -k

Raspberry Pi4(64bit)では一旦日本語レイアウトで設定したキーボード(RK61)でキーを取得(値)しないと認識しませんでした。
訂正 USキーボードで問題なく取得できます。(既に登録済みのキーは正常な値を取得しないという落ちでした)
以前Pi3(k270)で使っていた値はキーがマッチしていればそのまま使えます。
vncserverも同様にxbindkeysをインストール設定、vnc-clientのRaspberry Pi4からコントロールが可能(必要なキーはvncserverに記載)
vncserver側で使用するキーとRaspberry Pi4自身で使用するキーは明確に分ける必要があります。


Bluetooth接続は10秒近く掛かることがあります。
取り敢えずキーボードも最低限の設定が出来てきました。
XKBについてはボチボチ調べようと思います。