内蔵キーボードのキーマップ改変(不発)

Date: 2022/10/03 (initial publish), 2024/01/04 (last update)

Source: jp/note-00056.md

Previous Post Top Next Post

TOC

実験準備

内蔵キーボードのキーマップ改変準備の結果を生かす環境をつくるべく、とりあえずDebianの正式パッケージinterception-toolsをアップロードしました。

アップストリームはシェルからの直接起動方法の基本として以下を例示してます。

$ sudo nice -n -20 udevmon -c udevmon.yaml >udevmon.log 2>udevmon.err &

Interception plugin for vimproved inputの作者が示している、テスト時のトラブル防止策が参考になります。

# sleep 1 && sudo nice -n -20 timeout 10 udevmon -c /etc/udevmon.yml

(わたしは、追加の外付けUSBキーボードをつないでおくことも考えています。)

また、使用するフィルタープログラムは、起動時に入出力バッファをクリアーすることも推奨されるようです。

アップストリーム作成のudevmon.serviceファイルは、-3 Debian revision 以降はバイナリーパッケージに同梱されています。

udevmonudevmon.serviceファイルを使ってSystemdによりudevmonを自動起動させるよう、このファイルをとりあえず/etc/systemd/system/に置きます。 (もちろん、パッケージとしては/lib/systemd/system/にでもこのファイルをインストールして、そこに/etc/systemd/system/からsymlinkをはるようするのでしょう。)

この自動起動設定の有効化と起動実験は以下となります。(これだと、シェルからの直接起動の様にsleepすることはない模様)

$ sudo systemctl enable --now udevmon.service

また、フィルターを書く際に気になるのはclearing bufferですが、そえは後ほど。。。。

本体付属キーボード(i8042)用の設定

内蔵キーボードは/dev/input/by-path/platform-i8042-serio-0-event-kbdということがわかっているので、/etc/interception/udevmon.d/ディレクトリーを作成し、テスト用のダミーのint-kbd.yamlファイルを以下の内容で作成しました。

- JOB: intercept -g $DEVNODE | cat - | uinput -d $DEVNODE
  DEVICE:
    LINK: /dev/input/by-path/platform-i8042-serio-0-event-kbd

上記の様にして起動実験して問題無しです。

フィルター evmk

今度はsystemdのjournalへのログ出力ができるようにした、改良版のフィルター・ログ用のプログラムevmkを使うように、int-kbd.yamlファイルを以下の内容で作成しました。

- JOB: intercept -g $DEVNODE | /usr/local/bin/evmk | uinput -d $DEVNODE
  DEVICE:
    LINK: /dev/input/by-path/platform-i8042-serio-0-event-kbd

結果

キーボードのマッピングは一様できることは確認しました。

だた、キーボードのデバイスノード(R/W)を、データー一方向(Rオンリー)のみの パイプに繋ぐという基本デザイン由来の問題がCapsLock等であることに気づきました。

GNOMEのキーマッピングで実用上問題ないので、これは止めました。 基本デザイン

Previous Post Top Next Post