キーコンフィグで入力環境のレベル底上げを目論む
筆者の手元には多種多様なキーボードがあります。
それぞれに一長一短があり、なかなか『コレ!』と決め打ち出来る状況に無いのですが、それとは別にいつまでも同じ製品を使い続けられるとは限らない、という普遍的な問題があります。
一短のところを工夫で乗り切ることが出来れば、それぞれの製品の魅力をより引き出せることになり、ひいては、常用できるレベルの使い勝手を持つキーボードを増やせることにも繋がります。
幸い、Linuxでは苦労して調べる必要こそあるものの、ある程度柔軟に設定変更することが出来ますので、ここはちょっと頑張って勉強してみて、筆者的にイマイチだったキーボードを常用に足るレベルへと引き上げよう!
というのが今回の趣旨です。
筆者の手元にはあまり多機能なポインティングデバイスというのが無く(トラックボールであるM-HT1URXBKは割と多機能なのですが、基本的に筆者はタッチパッドを使いたいです。)、キーボード操作の頻度が高いことから、キーボードで出来る操作はキーボードでしたい、また、タッチパッドで機能的に足りないところもキーボードのセッティングでなんとか補っていきたい。
などと思っています。
過去記事『PERIPAD-501 Ⅱ』にも書いていますが、単独の有線タッチパッドデバイスであるPERIPAD-501 Ⅱはタッチパッドに触れている間のクリックボタン操作が無効化されてしまう、という筆者には致命的な極悪仕様がありまして、基本的には割と感度も精度も良い(ただもう少しポインタ移動速度のベースを上げたい)製品なんですが、ここだけは本当に許せないので、ここ暫くはキーボード側でクリックボタン相当のキーを用意して、そちらを使用することでタッチパッド操作中でもクリックボタン操作が出来るようにならないかと、調べまくっていました。
このタッチパッドでは物理クリックボタンがタッチパッド下にあるのですが、ちょっと離れて設置されているため、絶対的に遠くなってしまうという弱点もありました。
物理クリックボタンが遠くて手を大きく動かさなければならないんですね。
そして、例えばそのクリックボタンと[Esc]キーなんかを行ったり来たり、なんていう局面では(筆者の作業では割とそういう場面があります)都度左手を大きく動かさなければならなくなり、効率が悪いです。
その辺りもキーボードでクリックボタン処理が行えるようになればキーボード上のクリックボタンキーと[Esc]キーを行ったり来たりするだけになるので手の動きは非常に少なくすることが出来、大きな効率向上が見込めます。
また、『Bluetooth 3.0 Keyboard』みたいに物理クリックボタンがタッチパッドの裏に隠れてしまっているタッチパッド一体型クリックボタンは、そもそも押そうとするとポインタがズレるという大問題を抱えた設計思想からしてダメなものでして、見た目はスッキリ綺麗に見えるかもしれませんが、ハッキリ言って全く使えません。
ポインタが少々ズレるだけで何喧々囂々捲し立ててるんだ? とか思われるかもしれませんが、クリックするときにポインタがズレるってことは操作者の思いとは関係無いモノをドラッグ操作してしまうことに繋がります。
筆者はこれで何度かフォルダーを丸ごとどこかにすっ飛ばしてしまったことがありますので、本当に全く許せません!
このようなケースでもキーボード側でクリックボタン相当のキーを用意してあげることが出来れば、タッチパッド一体型クリックボタンなど一切使用せずに済みますので、大きな効率改善に繋がるわけです。
いや、物理クリックボタンなんてなくとも、タップすれば良いやろ? という意見もあるかもしれません。
タップ操作するには一度タッチパッドから指を離してもう一度触れる必要があります。それだと遅いんですよ、圧倒的に。
使用頻度の低い右クリックは2本指タップでも良いとは思いますし、キー数に余裕の無いキーボードで左クリック用と右クリック用と2つもキーを融通するのは大変なので、左クリックだけをキーボードに割り当てたいとは思いますが、左クリックは頻度が高いので『タップ』で我慢は出来ません。
また、ドラッグ操作をするときに、タップ&ドラッグですと、指をズラす動きが1回で狙いのところまで移動できなかったときに一旦指を離したところでドラッグ操作も途切れてしまって、再度タップ&ドラッグをやり直す必要が生じてしまいます。
物理クリックボタンがあればクリックしっぱなしで指を一旦離してもドラッグ操作を継続できます。
この辺の効率には大きな隔たりがあるので、タップ操作は『タップ操作でも遅くならない』(物理クリックがしづらい状況とか)ようなとき以外では筆者は使用したくありません。
というわけで、PERIPAD-501 Ⅱと組み合わせて使うキーボードやBluetooth 3.0 Keyboardみたいに物理クリックボタンが使い物にならないタッチパッド付きキーボードでは1つのキーを物理クリックボタン用に捻出したい。というのが、キーコンフィグの第一基本方針となります。
候補は[Space]キーの左隣り近辺がベストです。
キーコンフィグの方法ですが、Xubuntuではいくつも方法がありますが、大きく分けて大元のマッピングを変更してしまうやり方と、GUIデスクトップ画面上の振る舞いを設定変更するやり方に二分するかと思います。
大抵の方はデスクトップ画面上でしか作業されないかとは思うので、表面上はどちらでコンフィグしても同じ結果になるのですが、例えば[Ctrl]+[Alt]+[F1]キーなどを押してTTYを切り替えてCLI画面なんかに移動すると、X上の振る舞いをコンフィグした分は反映されないことになりますので、そういった差は出ます。
ただ、特に筆者が冒頭で騒いでいたクリックボタンなんてのはGUIでないと意味が無いので、大元からコンフィグしててもCLI画面では無駄にしかならないという結果にはなります。
ただ、画一的に変更したいのであれば大元から変更しちゃった方がGUI,CLIに関わらず同じように動くようになります。
逆に、[Ctrl]や[Alt]キーなど絡めたときだけクリックボタンとして機能させたい、などという場合はCLIでのコンフィグ方法は筆者は知りませんが、GUI上ではxkbやxbindkeysなんかを使用してコンフィグすることになるかと思います。
キー1つを丸々コンフィグしてよいのであれば、GUIではxmodmapを使用するのが手軽かと思います。
大元からコンフィグする場合は/etc/udev/hwdb.d/直下にnn-xxxx.hwdb(nnは数値、xxxxは任意の文字列)ファイルを作成し、そこに定義を書いて認識させる方法があります。
クリックボタンをキーボードで実現する際、xmodmapを使用する方法ではアクセスビリティの設定で「マウスエミュレーション」(「マウスキー」とされてるケースもあります)をオンにする必要があります。
このマウスエミュレーションをオンにすると、NumLockをオフにしたときのテンキーパッドの[5]がクリックボタンの動きになってくれますので、このキーを割り当ててあげると任意のキーをクリックボタンにすることが出来ます。
例えば[F12]キーをクリックボタンにするには、コマンド
xmodmap -e "keycode 96 = KP_5"
を実行してからマウスエミュレーションをオンにします。
固定化したい場合は起動時の自動開始アプリケーションに登録するなどすると良いかと思います。
なお、マウスエミュレーションをオンにしたときは上記の他に「Pointer_Button1」というキーワードも左クリックボタンとして使用できますので、
xmodmap -e "keycode 96 = Pointer_Button1"
とコマンド発行してもOKです。いずれにせよ、xmodmapによる方法ではマウスエミュレーションをオンにする必要があります。
Keycode nn のところの数字は「xmodmap -pke」コマンドで調べることができます。
/etc/udev/hwdb.d/直下にnn-xxxx.hwdb(nnは数値、xxxxは任意の文字列)ファイルを作成し、そこに定義を書いて認識させる方法ではこんな感じの記述になります。
evdev:name:〇〇:dmi:bvn*:bvr*:bd*:svn*:pn* KEYBOARD_KEY_70045=btn_left
〇〇のところはデバイス名が入りますが、他のところが全て「*」になっているように、全てのデバイスで共通してコンフィグしても良いのであればここも「*」にしても大丈夫かと思います(けど試していないので間違っていたらスミマセン)。
デバイス名は「xinput list」コマンドで取得できます。
また、同時に取得できたidを使用して「xinput list-props id」(idは取得した数値)コマンドを叩くと「Device Node」というのが分かります。「/dev/input/event△△」みたいな形になっているかと思います。
「sudo evtest /dev/input/event△△」コマンドを実行すると、そのキーボードの現在の(キー)イベント設定情報が表示され、さらにそのキーボードでのイベント発生状況を表示し続けることができます。(キーを押したりする度に表示が増えます)[Ctrl]+[c]キーで中断するまで続きます。
そこでKEYBOARD_KEY_□□の□□の部分はvalueとして表示されますので、コンフィグしたいキーを押下して表示を確認してください。
こちらは「btn_left」と定義して認識させるだけで有効になります。アクセスビリティのマウスエミュレーション(マウスキー)の設定をオンにする必要はありません。
起動中に即時反映したい場合は次の2つのコマンドを発行します。
sudo systemd-hwdb update sudo udevadm trigger
[Space]キーすぐ側のキーを1つ物理クリックボタンとして使用してしまうと、その分のしわ寄せをどうにかする必要が生じます。
筆者は『IBM UltraNavキーボードSK-8845のキーコンフィグを最小限弄って使い易くする』の記事で主に日本語入力関連のキーを[Space]キー周辺に固めるコンフィグをしていますが、他のキーボード等も考慮するとUS配列のキーボードもそこそこ持っていたりしますので、この辺りは[Ctrl]+[,][.][/]辺りに寄せた方があらゆるキーボードで共通の設定に出来るので良いかもしれません。
英語配列キーボードでは元々[半角/全角][無変換][変換]キーが無いので、物理クリックボタンの割当が[Windows]キー等を奪ってしまうことになります。[Space]キー周辺のキーで一番使用頻度が少ないキーが[Win]キーになるので。
そうなると[Win]キーの行き場所ですが、実はここ最近、使用頻度が極端に落ちているキー達がありますので、その辺りに割り当てれば良いかと筆者は考えています。
その使用頻度が極端に落ちているキーというのは[F8][F9][F10]キー辺りです。
日本語入力でひらがなにしたりカタカナにしたり半角英数字にしたり全角英数字にしたりといった操作が[F6]〜[F10]キーに標準で割り当てられていまして、筆者も長いことこれらのキーを使用してきたのですが、[F1]〜[F12]キーの行がまるまる省略されて[Fn]+数字キーとされているキー数の少ないコンパクトキーボードを小説執筆のメインキーボードに据えたときにこれらのキー操作を[Ctrl]+[T][U][I][O][P]キーで行うように筆者は学習し直しました。
その結果、現在ではここら辺のキーは全く押下しないキーとなっています。
ただし、Xubuntuでは[Alt]+[F6]で画面縦方向のみ最大化など良く使いますので[F6]はコンフィグ対象外としまして、残りの使用頻度がほとんど無いキーに割り振れば良いかと思います。
また、キーボードによっては[PrintScreen]キーが無いキーボードとかもあるので、そういったものも、ここら辺にキーコンフィグすれば良いかなとか思っています。
なお、[F11]キーは画像の最大化表示などで使用頻度が高く、[F12]キーもアプリケーションによっては設定画面を開くショートカットキーになっていたりするので、[F11][F12]はあまり弄らない方が良さそうです。
実際にどうまとめていくかはまたこれから詰めて行きますが、大分方針は定まってきた感があります。
あとは、PERIPAD-501 Ⅱとキーボードを組み合わせて使う際には位置決めとパームレストにもなる土台を作りたいところですし、Bluetooth 3.0 Keyboardも今のままだとタッチパッド誤爆が頻繁に起きるのでパームレストを盛ったりタッチパッドを一部反応しないように隠すなどの細工を施して作業効率向上を目指したいと考えております。