web-dev-qa-db-ja.com

すべてのプログラムで「マウスの中央ボタンの貼り付け」機能をオフにするにはどうすればよいですか?

私はEclipseでコンパイルできないコードになってしまうことが多いため、マウスの中央ボタンを貼り付けたくありません。 (すべてのプログラムで)これをオフにするにはどうすればよいですか? Fedoraを実行しています。

50
derekhh

このソリューションはグローバルに機能し、中央マウスの機能を維持します。

インストールxbindkeys xsel xdotool

これを~/.xbindkeysrc

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2 + Release

再読み込みxbindkeys -p

起動時にxbindkeysを実行します、pkill xbindkeys 止まる。

31
Radivarig

Fedora 24では、次のコマンドを使用してgnome-Tweak-toolをインストールできます:

$ Sudo dnf install gnome-Tweak-tool

gnome-Tweak-toolを開き、[キーボードとマウス]タブに移動して、[中クリック貼り付け]を無効にします。

18
Pawan Kumar

中央ボタンの貼り付けは、左ボタンの選択やアクティブ化などのUNIXユーザーインターフェイスの標準であり、右ボタンでは他の操作(拡張、切り替え、メニューの起動など)を行います。ほとんどのUNIXアプリケーションでは、貼り付けにバインドされていることがわかります。

ホイールに指を置いたときにマウスの感度が高すぎるという問題がある場合は、より良いマウスを入手することをお勧めします。安価なまともなマウスがたくさんあります。

マウスボタン2を別の番号に再割り当てできます。アプリケーションは、左、中央、右のマウスボタンをそれぞれボタン1、2、3として識別します。 Xセッションの開始時に実行されるスクリプトにこのコードを挿入します(方法はデスクトップ環境によって異なります)。

echo 'pointer = 1 6 3 4 5' | xmodmap -

スクロールホイールマウスは、スクロールホイールを押したときの中ボタンクリックイベントをサポートします。これは優れた機能ですが、不愉快なことに気付くかもしれません。幸い、無効にすることができます。

まず、次のようにマウスのIDを知る必要があります。

$ xinput list | grep 'id='

のようなものを印刷します

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜ PixArt Dell MS116 USB Optical Mouse       id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
  Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
  Power Button                              id=6    [slave  keyboard (3)]
  Video Bus                                 id=7    [slave  keyboard (3)]
  Power Button                              id=8    [slave  keyboard (3)]
  Sleep Button                              id=9    [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=10   [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=11   [slave  keyboard (3)]
  Eee PC WMI hotkeys                        id=13   [slave  keyboard (3)]

私のDell Usbマウスがここに印刷されました。id= 12

したがって、次のようにマウスボタンのマッピングを表示できます。

$ xinput get-button-map 12

印刷する

1 2 3 4 5 6 7 8 9 10 11 12

ここでは、最初の3つの数字だけが私にとって意味があります。左、中央、右のマウスボタンを表します。

マウスの中央ボタンを0に設定してオフにすることができます。

$ xinput set-button-map 12 1 0 3

または、マウスの中央ボタンを1に設定して、左マウスボタンに変えることもできます。

$ xinput set-button-map 12 1 1 3

ref。リンク https://wiki.ubuntu.com/X/Config/Input

それは私のために動作します(kubuntu 18.04 LTS)

10
Suraj Inamdar

ここでは、貼り付けを行わずにミドルクリック機能(たとえば、新しいタブでリンクを開くためにクリックする)を維持したい場合に実行できる操作を示します。

最初にsxhkdxselをインストールします。

次に./。config/sxhkd/sxhkdrcを設定します

~button2
    echo -n | xsel -n -i
~control + c
    echo -n | xsel -n -i
~control + shift + c
    echo -n | xsel -n -i
~control + x
    echo -n | xsel -n -i

そして、それは基本的にそれです。

ここでsxhkdを起動します(または起動時に起動するように構成します)。これで、中マウスボタンは何も貼り付けなくなりますが、それ以外は通常のように機能します。

2
Cestarian

編集:私が投稿したソリューションに問題が見つかりました:一部のプログラム(少なくともgitk、一般的ではないか不明)では、テキストの選択が機能しなくなります。試してみてください。ただし、定期的に使用するプログラムでテキストの選択に問題がある場合は、解決策としてこれを使用しないようにしてください。

xselをインストールしてから、次のシェルスクリプトを実行します。

#!/bin/sh
while true; do
    xsel -fin </dev/null
done

このスクリプトが実行されている限り(ログイン時に実行するように設定できます)、中マウスボタンはどのアプリケーションにも貼り付けられません。したがって、技術的には貼り付けられますが、貼り付けるものは常にありません。

それが動作する方法は、それがxselを実行し、バックグラウンド(-i)にフォークせずに/dev/nullの内容をコピー(-n)し、実際に保持することです。バッファをクリアして終了するのではなく、バッファ内の空の文字列(-f)。終了するたびに、同じオプションを使用してxselを再度呼び出します。 xselは、別のプログラムが別のプログラムをコピーして「義務を軽減する」まで実行を続けるため、新しいプロセスが常に作成されるわけではなく、単一のプロセスが再び必要になるまで正確に実行され続けます。 (スクリプトの複数のインスタンスを実行している場合を除いて、実行する必要はありません。)

また、いいえ、これは通常のコピー/貼り付けの妨げにはなりません。中クリックで貼り付けが別のクリップボードを使用するためです。

2
flarn2006

これは、多くのプログラムが従う一般的な規則です。これをオフにするグローバルな方法はありません。プログラムごとに行う必要があります。

編集:(Gillesが言うように、マウスボタン2を無効にするのではなく、一部のプログラムにはマウスボタン2の他の用途があるため、これはお勧めしません。)

1
wnoise

これは私のスクリプトです。微調整が必​​要な場合があります

#!/bin/bash 
clear
echo
echo
echo
echo -----Now fixing your scroll button --- -hold onto pants
echo
xinput --list|grep "Virtual core XTEST pointer"
echo ---------------------------------------------------------------------------------
echo


id=$(
xinput --list|grep "Virtual core XTEST pointer" |awk '{
        for(i=1; i<=NF; i++) {
                tmp=match($i, /id=[0-9]+/)
                if(tmp) {
                        print $i
                }
        }
}' $1 |  tr -d '[:alpha:]='
)

echo fixing $id:

xinput set-button-map $id  1 10 2 4 5 6 7 8 9 3

echo
echo
xinput get-button-map $id
echo ---------------------------------------------------------------------------------
0
Max Robbertze