やりたいこと
- USBボリュームコントローラーによるRaspberryPiへの入力を
aやbなどにカスタマイズしたい
環境
- RaspberryPi
- RaspberryPi OS Lite 64bit
- 元々はCUIモードで起動
- USBボリュームコントローラー
結論
- GUIをインストールして起動する
-
setxkbmap -printを流して、どのsymbolsファイルが使われているかチェックする -
usr/share/X11/xkb/symbols/の中から使われているsymbolsをバックアップした後、編集する- (ここで、無理に同時押し(
a+bとか)をやるとOSが起動しなくなる) - 無理は禁物。1キーにつき1キーの割り当て。
- (ここで、無理に同時押し(
- RaspberryPiを再起動する
作業
方法の模索(追想)
今回は作業しながらのメモではなく、作業後に書いているので、キャプチャが少なめ
xkbを使うと実際のキーボードで入力されたものを、他のものに変換できるらしい。
まずWindows11のPCからRaspberryPiにSSH接続して、setxkbmap -printをやってみたが、上記サイト通りの出力にはならない。
Cannot open display "default display"
SSH接続が原因かもしれない(下記参考サイトより)と思って、直接RaspberryPiにキーボードを接続して同様のコマンドを入力してみたが、出力は変わらなかった。

export Display:=0.0っていう風にしてるサイトがあった。
RaspiのCUIに直接打つと
Cannot open display ":0.0"
でも今SSH上でやってみたらうまくいった。不思議。でも当時は気付かなかった。

GUIの起動
displayがどうたらって言ってるからGUIを起動すればいいんじゃないかってなって、以下の手順でGUIを起動する。SSH接続でも操作可能。
なお、GUIは後付けでもインストールできるらしい。一番下にリンクを貼っておく。
sudo raspi-config
B4 Desktop Autologinを選択。(AutoLoginである必要はなく、B3 Desktopでも良いはず)

Exit等でraspi-config状態を出た後、sudo rebootで再起動。
ターミナルでsetxkbmap -printを実行。表示された。

xkbを利用してキーマップの書き換え
以下SSH接続した画面。
大事なのはxkb_symbolsのところ。

これらのファイルは/usr/share/X11/xkb/symbols/の中にある。
(X11のXは大文字)
これらのファイルは慎重に編集すること。変なコードを書くとOSの起動に失敗したりする。

pcという名前のファイルにはEscapeやReturn(これがEnterに相当する)などの基幹コードが設定されている。
これを書き換えて、Enterが打てなくなったりしたら大変そう。

usという名前のファイルにはUSキーボードの基幹コード以外の定義がある。
2つの定義が並んでいるが、このうち1はそのまま打ったもの、excalmは!のことで、Shiftを打ちながら売った場合の定義。
key <AE01> { [ 1, exclam ] };
これらを書き換えたあと再起動すると、実際に1のキーでReturn(Enter)が打てたりするようになる。
ただし、書き換える時は元々のファイルにあるキーコードを参考にすること。じゃないとOSがクラッシュする可能性がある。

inetには特殊キーの定義が入っている。この中のevdevの記述があるところが採用されている。
ちなみに、使用したUSBボリュームコントローラーがどのようなキー入力をしたかはQMK configuratorのテスト機能を使えば分かりやすい。今回のケースではAudioVolumeDownなどのようである。
だから、inetの赤矢印の部分を変更する。
RaspberryPi上でも、音量を調整している様子が見られる。

いざinetを編集。赤矢印のところが変更を加えたところ。明らかにインデントがずれている。
Vol-でa、Vol+でbが入力されるようにした

再起動してキーマップの変更を適用する。狙い通りVol-でa、Vol+でbが入力されるようになった。
これでread -n 1 input_str(入力を1キーだけ受け付けるコード)と組み合わせれば、aが入力された度に繰り返したい作業などが実行できる。

CLIに戻すと音量キーがなくなる小話
それで入力できるようになったから、CLIに戻してみた。
するとなんとVol+の回転では何も入力されず、Vol-の回転では~が入力される。
inetを元に戻しても同様だったから、CLIの時はVol+やVol-は存在しないらしい。

だからGUIに戻した。
参考サイト
GUIのインストール方法 (筆者はなぜかGUIが元々入っていたのでやっていない)
xkbを使うことになったきっかけ
xkbの設定で簡単だったサイトたち
cannot open display "default display"に関するサイト
export Display:=0.0っていう風にしてるサイト







