マウスを左利き、タッチパッドを右利きにする


10

マウスとタッチパッドをすべて1つのパネルで構成できることがわかりました(Ubuntu 13.10、デフォルト、Gnome)。これはある程度拡張することです。つまり、タッチパッドをマウスとは別に構成したいのですが...

(USB)マウスを接続している場合、通常は左利きのマウスを使用します。そのため、ボタンを左利きに切り替えます。しかし、タッチパッドを使用すると、そのような構成では少し迷ってしまいます。だから右利きにしたい。

次のことを達成する方法はありますか:マウスをプラグインすると(それぞれ検出されると)自動的に左利きに切り替わり、プラグを抜くと自動的に右利きに切り替わりますか?

回答:


10

ご不便をおかけして申し訳ありませんが、この問題はxinputツールを使用して簡単に解決できます。

まずUSBマウスを接続してから、次のコマンドを実行します。

xinput list

見るためにidあなたのマウスのを。上記のコマンドの出力は次のようになります。

xinput | ネコ
⎡仮想コアポインターid = 2 [マスターポインター(3)]
core↳仮想コアXTESTポインターid = 4 [スレーブポインター(2)]
⎜↳SynPS / 2 Synaptics TouchPad id = 14 [スレーブポインタ(2)]
Mouse↳USBマウスid = 11 [スレーブポインター(2)]
⎣仮想コアキーボードid = 3 [マスターキーボード(2)]
    ...

上記の例では、USBマウスにがありid=11ます。これidを次のコマンドで使用します。これにより、USBマウスに対してのみ左利きのボタンが交換されます(タウフパッドでは使用できません)。

xinput set-button-map 11 3 2 1

一般に:

xinput set-button-map id 3 2 1

変更を元に戻すには、次のコマンドを使用します。

xinput set-button-map id 1 2 3

変更を永続的にするには、次のコマンドをスタートアップアプリケーションに追加しますダッシュスタートアップアプリケーションを検索します)。

sh -c "xinput set-button-map id 3 2 1"

更新:

以来idは再起動後に変更される場合がありますが、USBmouseの名前ではなく、あなたはまた、マウスの名前をgrepし、それを適用することができます。詳細レジストリをスキップするには。最終的な解決策は次のようになります。

`/ usr / bin / xinputリストのidの場合| / bin / grep ' USBマウス ' | / bin / grep -o [0-9] [0-9] `; xinput set-button-map $ id 3 2 1を実行します。完了。

上記のスタートアップアプリケーションにパックして、最終的に取得します。

sh -c "` / usr / bin / xinputリストのidの場合| / bin / grep ' USBマウス ' | / bin / grep -o [0-9] [0-9] `; do xinput set-button-map $ id 3 2 1; done;」

2
投稿を編集する必要があるかどうかはわかりません。あなたのアプローチは私に正しい方向を与えました、しかし問題は/再起動がマウスのidを変えるかもしれないということでした/です。したがって、私はそれをに変更しsh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"、これは機能します(おそらく適切なハイフンに注意する必要があります)。ヒントのThx。
LeO 2013年

@LeO私の場合、再起動しても、マウスのIDは変更されません。もっとマウスを使ってテストしたり、USBポートの位置を変更したりはしていません。
RaduRădeanu2013年

@LeOとにかく、あなたのアイデアはとても良いので、どうぞ、答えを編集してください。そうでない場合は、後で行います。
RaduRădeanu2013年

8

RaduRădeanuの答えよりもさらに簡単な方法がありますxinput数値IDの代わりに入力デバイスの名前を受け入れます。USBマウスは一般的に扱われている可能性が高いため、その名前が最も可能性が高いUSB Mouseです。したがって、おそらく実行する必要さえありませんxinput list

したがってxinput set-button-map、数値IDの代わりにこの名前を使用したは、次のようになります。

xinput set-button-map "USB Mouse" 3 2 1

これは、数値IDの方法を使用する場合と同様に、マウスを左利きにすることで、同じことを実現します。(と交換しても動作しますと、右利き用マウスであることに、それを切り替えます。)xinput set-button-map id 3 2 13 2 13 2 11 2 3

これには、最初に機能する場合は、長く複雑なコマンドを使用してデバイスのID番号を取得しなくても、再起動後も引き続き機能するという利点があります。


1
この答えは、より多くの賛成票に値します。
Mephisto

私の場合、私はワイヤレスマウス+キーボードを持っているので、xinput list1つが「[スレーブポインター(2)]」、もう1つが「[スレーブキーボード(3 )] "。だからあなたの解決策で私はこのエラーがあります「「2.4Gワイヤレスキーボードとマウス」という名前の複数のデバイスがあります」。現時点では、Raduのソリューションを追加していgrep 'slave pointer'ます。xinputがこれを何もせずにポインターを参照していることを何らかの形で指定できるかどうか疑問に思います。
matiascelasco 2017

1

他の回答の起動コマンドは、IDが2桁の数字である場合にのみ機能することがわかりました。1桁と2桁の両方の番号で機能するはずの変更を以下に示します。

スタートアップアプリケーション

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"

0
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

2つの問題を解決するより詳細なソリューションを次に示します。

  • 任意の桁数のデバイスIDで機能します(@robbieソリューションと同じですが、少し異なります)
  • デバイス名が重複している可能性があることを考慮しています。私の場合、私はワイヤレスマウス+キーボードを持っているので、xinput list1つが「[スレーブポインター(2)]」、もう1つが「[スレーブキーボード(3 )] "。したがって、@ reedstrmソリューションでは、「2.4G Wireless Keyboard&Mouse」という名前の複数のデバイスがあります」というエラーが発生しましたが、@ RaduRădeanuソリューションではfor、1つがマウス用で、もう1つがキーボード用であり、 「デバイスにボタンがありません」というエラーメッセージが表示されます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.