archives tags
2020年8月1日

Linuxで中クリックによるペーストを無効化する

Linux

はじめに

ThinkPadは中クリックを押しながらTrackPointを動かすことでスクロールができます.便利です.
しかし,私が使っているThinkpad T480sは中クリックが押し続けにくく,スクロールしている最中に押す,離すが繰り返されます.
するとどうなるか…クリップボードの中身が連続でペーストされます.ブラウザやCalibre等でなら問題ないのですが,これがIDEで起こるとかなり悲惨なことになります.ストレスがマッハです.
これをどうにか無効化しようとがんばります.

環境

OS: Manjaro Linux x86_64 
Host: 20L7CTO1WW ThinkPad T480s 
Kernel: 5.4.52-1-MANJARO 
Shell: bash 5.0.18  
WM: i3 
CPU: Intel i5-8250U (8) @ 3.400GHz 

使用コマンド

方針

どうやら中クリックによるペースト自体を無効化することは難しいようです.
そこで,クリップボードの中身を消すという手段をとります.クリップボードにはPRIMARY,SECONDARY,CLIPBOARDがあり,中クリックによるペーストで使用されるものはPRIMARYです.また,右クリック->貼り付けで使用されるのはCLIPBOARDです.
中クリックを離したタイミングでペーストされるので,中クリックが押されたタイミングでPRIMARYをクリアします.

やってみる

追記を見たほうが幸せになれると思います.

xevで中クリックを調べてみると以下のようです.

ButtonRelease event, serial 34, synthetic NO, window 0x3600001,
    root 0x1a2, subw 0x0, time 5610176, (345,459), root:(1635,474),
    state 0x200, button 2, same_screen YES

先駆者様を参考にさせていただくと以下のように記述すれば良さそうです.
/home/[username]/.xbindkeysrc

"xsel --primary --clear"
b:2

その後xbindkeys -pを実行します.

永続化する

/home/[username]/.xprofileに以下を追記します.

xbindkeys -p

追記

どうやら中クリックのもとの動作も上書きしてしまうようです.いずれどうにかします. どうにかしました.
/home/[username]/.xbindkeys

"xsel --primary --clear; pkill xbindkeys; xdotool click 2; xbindkeys -p"
b:2

xdotool click 2でのループを避けるためpkill xbindkeysします.

参考