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
- sleepで1秒待つことで、ターミナルから離れて実験環境に移動できます。
- timeoutでキーボード入力ができなくなったままになる事を回避しています。
(わたしは、追加の外付けUSBキーボードをつないでおくことも考えています。)
また、使用するフィルタープログラムは、起動時に入出力バッファをクリアーすることも推奨されるようです。
アップストリーム作成のudevmon.service
ファイルは、-3
Debian revision 以降はバイナリーパッケージに同梱されています。
udevmon
をudevmon.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 |