【Ubuntu】ThinkPadキーボード、「中ボタンクリックでペースト」機能を無効にする。

UbuntuをインストールしたデスクトップマシンでThinkPad トラックポイント・キーボードを愛用しています。


 ThinkPad トラックポイント・キーボード(有線):Lenovo

  → Amazon.co.jp
  → 楽天市場
  → Yahoo! ショッピング

センターボタンをホールドしながらトラックポイントを弄るとスクロールができるのですが、センターボタンを離すタイミングによって、これが「中ボタンクリック」と認識されてしまうことがある。

「中ボタンのクリック」が「ペースト」に割り当てられているので、プログラムのコードを書いているときなど、スクロールの途中で、意図しない場所に意図しない内容がペーストされたりして、これ、非常に困る。

この機能を無効にしたいのだけれど、Gnome Tweak で…

gnome_tweaks_202403.png

"中クリックによる貼付け" をオフにしても、うちでは何故か設定が反映されない。

そんなときはターミナルを立ち上げて、xinput コマンドで設定するのが良いんだそうだ。

まずはインプットデバイスのリストを確認。

$ xinput list

出力は以下のような感じ。"Virtual core pointer" セクションに表示されている "Lenovo ThinkPad Compact USB Keyboard with TrackPoint" というのが、このキーボードのボタン/トラックポイント。

xinput_list.png

これの id (id=9) を覚えておきます。

続いて、id=9 であるポインティングデバイスのボタンマップを調べる。

$ xinput get-button-map 9

うちの場合、出力は以下。

1 2 3 4 5 6 7 8 9

次に、xinput query-state を実行して、id=9なデバイスの、どのボタンクリックが何番に対応しているかを調べてみると…

$ xinput query-state 9

1 が左クリック、3 が右クリックだったので、多分 2 がセンタークリック。

なので、「id=9 のデバイスについて、センタークリックに対応する番号(=2)」を無効(=0)にしてやれば良いらしい。

$ xinput set-button-map 9 1 0 3 4 5 6 7 8 9

さて、これで思惑どおりに「外付けThinkPadキーボードのセンターボタンをクリックするとペーストが行われる」という動作を無効にできました。

この状態でも「センターボタンをホールド + トラックポイントでスクロール」という動作は生きたまま。

でも、今まで使えていた「ウェブページのリンクを中クリックすると、そのリンクをバックグラウンドタブで開く」という機能は動作しなくなってしまった。少し不便だけれども仕方がない。この操作は「Ctl + 左クリック」で代替しましょ。

この設定を永続化するには、ホームディレクトリ直下の .profile の末尾に、

xinput set-button-map 9 1 0 3 4 5 6 7 8 9

…と書き込んで保存。次回の起動/ログイン時にもこの設定が適用されます。

xinput は、例えば

$ xinput get-button-map "Device Name"

のように、id ではなくデバイス名を指定することもできます。

いろいろ文献にあたってみると「デバイスの id は常に同じ値が割り振られるとは限らないので、id ではなくデバイス名で指定したほうがより安全」と書いてあったりするのだけれど、うちの環境では、複数の同じデバイス名がリストに上がっているので、デバイス名で指定すると、どのデバイスなのか一意に決定できない…という問題が生じるので、id で指定するしか方法が無いのです。

カテゴリ: