NetWalker PC-Z1 [A] キーを Control キーと兼用する実験

以前 キーボードのカスタマイズ でやりたかったのはこれです。
横に長い NetWalker の [A] キーを Ctrl キーと兼用にしています。

そのままキータイプした場合は文字 ‘A’ が入力され、[A] を押したまま他のキーを押すと
Ctrl キー操作になります。

欠点は
 ・Ctrl-A の入力ができない
 ・文字 ‘A’ キーのリピートができない
 ・[A] キーを離したときに文字 ‘A’ が入力されるので表示が遅れる

Ctrl-A の入力には本物の [Ctrl] キーを使う必要があります。
[A] + [F] (Ctrl-F) など、コントロールキーとして機能する場合はリピートできます。
[A] キーは遅延判定になるので表示が遅れますが連続したキー入力には影響は出ません。

NetWalker の場合そのままでは uinput が使えないので、次のどちらかの手段が必要です。

  (1) カーネルを入れ替えて uinput が使えるようにする。
  (2) uinput の代わりに別のキーボードをつないで代用する。

(1) はまだ試していないので、本当に使えるかどうか確認していません。
他の PC の Linux 上では一応 uinput を使ってテストしています。

(2) の場合 USB の外付けキーボードをつないで代わりの出力先として流用します。
常に USB のキーボードがぶら下がっていることになるので全く実用的ではないです。

取りあえず標準状態の NetWalker で走らせるには (2) の方法を使います。
USB キーボードをつないだ状態で下記のように実行します。

 $ sudo ./ctrla -u /dev/input/event7 /dev/input/event5

プログラム ctrla.tgz v1.00
プログラム ctrla110.tgz v1.10

●アルゴリズム

[A] を押し続けている間に他のキーを押して離すと Control キーと見なします。
いったん Control キーと認識されると [A] キーを離すまで状態が続きます。
それ以外のキーストロークはバッファリングした後、判断可能な状態になったら文字
として出力します。

他にも一定時間 [A] を押し続けると Control と判定するとか、短い時間で先に [A]
より他のキーを離したときは文字と見なすとかいろいろ試しましたが、結局シンプルな
この方法が自然に扱えました。

関連エントリ
NetWalker PC-Z1 設定とキーの打ち方
NetWalker PC-Z1 と親指シフト入力
NetWalker PC-Z1 Bluetooth とキーカスタムその他
NetWalker PC-Z1 意外にいける
Netwalker PC-Z1 買いました