web-dev-qa-db-ja.com

マウスの進む/戻るボタンを無効にする方法

私のマウスには残念な機能があります。左側、右側に親指を置いたときの優しいところに、2つのボタンがあり、非常に敏感なので、ブラシを押すだけでクリックできます。

もちろん、ブラウザで押すと、その1時間のYouTube動画をもっと見るのが難しくなる厄介な進む/戻るボタンについて話しています。それらを無効にする方法はありますか?これはXによって処理されますか?

37
n0pe

ターミナルでプログラムxevを起動します。 xevウィンドウ内でマウスを動かします。多くのものがスクロールして表示されます。各ボタンを順番に押します。次に、ターミナルウィンドウに切り替えて、 Ctrl+Cxevは、各入力イベントの説明、特にマウスクリックの場合はButtonPressおよびButtonReleaseを示します(マウスの動きの場合もMotionNotifyの数が表示されます)およびその他のイベント)。

進むボタンと戻るボタンがマウスボタン、おそらくボタン8と9にマップされている可能性があります。

ButtonPress event, serial 29, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100159, (166,67), root:(1769,98),
    state 0x0, button 8, same_screen YES

その場合は、可能であれば、これらのボタンをブラウザーの別のアクションに再マップしてください。または、ブラウザが反応しない別のボタン番号にボタンを再マッピングするか、システムレベルでボタンを完全に無効にすることもできます。これを行うには、これらの行を~/.Xmodmapというファイルに入れます。

! Remap button 8 to 10 and disable button 9.
pointer = 1 2 3 4 5 6 7 10 0

コマンドxmodmap ~/.Xmodmapでテストします。ほとんどのデスクトップ環境とウィンドウマネージャーは、ログイン時にこのコマンドを自動的に実行します。そうでない場合は、Xの起動時に実行するように調整してください。

これらのボタンを押すと、マウスがキーボードイベントを送信することもあります。

KeyPress event, serial 32, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100963, (957,357), root:(2560,388),
    state 0x0, keycode 166 (keysym 0x1008ff26, XF86Back), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

その場合は、次のような行を~/.Xmodmapに入れます。

keycode 166 = NoSymbol
keycode 167 = NoSymbol

xevを使用してボタンがマップするキーを見つけ、以下のコード($ HOME/.xsessionrc内)を使用して、使用していないものにマップすることができます。

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

または、Gnome/KDEまたはその他の最新のデスクトップを使用するGUIからそれを実行できるはずです。

さらに別のオプションは、xorg.confをハックしてボタン定義を削除することです。

xmodmapコマンド(WeylandではなくX上)を試していて、_X_SetPointerMapping_でBadValue (integer parameter out of range for operation)エラーが発生する場合は、xinputを使用する必要があるかもしれません。代わりに。パラメーターなしでxinputを実行してデバイスIDを取得し(ポインターに対応するIDを探します)、次に実行します。

_xinput set-button-map [pointer-device-id] 1 2 3 4 5 0 0 0 0
_

私の場合、私のマウスはデバイス#4で、ボタン6と7を8と9にして前と後を機能させる必要があったので、

_xinput set-button-map 4 1 2 3 4 5 8 9 8 9
_

(ボタン8と9を保持しましたまたマウスを変更した場合に備えて、8と9にマップしました。)

1
DerfK

それを修正するための簡単なコマンドであり、他の回答とそれほど違いはありません。

xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0" #the fix

テスト

xmodmap -pp # check the changes
xterm -e xev # test the nullified buttons

# to restore in case you are going to play some game that uses them
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13"

スタートアップアプリに修正コマンドを配置できます。

xdotoolを使用してアクティブウィンドウがブラウザーのいずれかであるかどうかを確認し、オンデマンドでxmodmapを呼び出して無効化/有効化することをお勧めしますが、スクリプトを実行する必要があります。

7以上のボタンを有効にしておく理由はありませんでした。理由はありますか?

1
Aquarius Power

Xorg設定ファイルで実行できます

水平スクロールを無効にする例を次に示します(新しいファイルを保存して再起動します)

nano /etc/X11/xorg.conf.d/40-libinput-mouse-left-right.conf

Section "InputClass"
        Identifier "Logitech catchall"
        MatchIsPointer  "on"
        Driver "libinput"
        Option "HorizontalScrolling" "false"
EndSection

その他の便利なコマンド

xinput list
xinput list-props 15

この質問では、xorg構成ファイルを使用してボタンを再マップできます。ここに例を示します。

Section "InputClass"
    # ...
    Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
    # ...
EndSection
0
intika