この回答プライマリマウスボタンとセカンダリマウスボタンを交換するためのコマンドラインを表示します。しかし、実行するたびにマウスボタンを自動的に置き換えるスクリプトを持っていると思います。誰かが私にこれを行う方法についてのヒントを与えることができますか?私はbashスクリプトについて全く知りません。
ベストアンサー1
xinput list
出力を提供しません。あなたのシステム内の誰もあなたが直接使用できる答えを提供することはできません。xinput
表示されているものとは異なるデバイスが表示される可能性があるためです。端末でマウスボタンを左手ボタンに切り替えるには?。
たとえば、OSXの出力は次のようになります。
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ xquartz virtual pointer id=6 [slave pointer (2)]
⎜ ↳ pen id=8 [slave pointer (2)]
⎜ ↳ cursor id=9 [slave pointer (2)]
⎜ ↳ eraser id=10 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ xquartz virtual keyboard id=7 [slave keyboard (3)]
これは私のDebian/テストの結果です:
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ VMware VMware Virtual USB Mouse id=7 [slave pointer (2)]
⎜ ↳ VirtualPS/2 VMware VMMouse id=9 [slave pointer (2)]
⎜ ↳ VirtualPS/2 VMware VMMouse id=10 [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)]
↳ AT Translated Set 2 keyboard id=8 [slave keyboard (3)]
したがって、あるシステムには1つの選択可能なIDがあり(xquartz仮想ポインタ)、他のシステムには3つの可能性があります。この内容を注意深く読むと、ここに引用された例は人為的なものではないことがわかります。
変更(およびあいまいさ)を考慮して出荷書類ビーチxinput
)、マウスデバイスIDを取得する部分を自動化できない場合があります。
使用可能な識別子の1つを選択するとし、説明のためにこれを「12」と呼びます。スクリプトは出力を読み取ることができます
xinput get-button-map 12
配列として。たとえば、一部のスクリプト言語は配列を提供しますbash
。しかし、いくつかの落とし穴があります。
- 私のOSXシステムでは「1 2 3」のリストが返され、Debianシステムでは「1 2 3 4 5 6 7 8 9 10 11 12」のリストが返されます。
- 追加ボタンが何を意味するのかを推測する必要があります。
- ボタン番号3個を割り当てても左/中央/右が明確ではない場合があります。
キーを切り替えるスクリプトは、ホームディレクトリのファイルなど、どこかに状態を保存する必要があります。管理スクリプトは次のようにする必要があります。
- 現在のボタンを使用したファイルの初期化
- トグルボタンの設定に応じて更新します(3つのボタンには「3!」配列があります)。
最も単純な構成(および説明)があると仮定すると、スクリプトで次のことができます。
#!/bin/sh
id=$1
cfg=$HOME/.mousebuttons
[ -f "$cfg" ] || xinput get-button-map $id | awk ' { printf "normal: %s\n", $0; }' >$cfg
mode=$(awk '{print $1;}' <$cfg)
# read and toggle
list=$(awk '{printf "%d %d %d\n", $3, $2, $4; }' <$cfg)
if [ "x$mode" = "xnormal" ]
then
mode=reverse
else
mode=normal
fi
# update the configuration
echo "$mode $list" | awk '{ printf "%s %d %d %d\n", $1, $2, $3, $4; }' >$cfg
xinput set-button-map $id $list
# show result
xinput get-button-map $id
スクリプトは1つのパラメータ(マウスデバイスの識別子)を受け入れます。与えられた例について(そしてスクリプト名を「toggle-buttons」として指定し、実行可能にした後、ユーザーのスクリプトに入れます$PATH
):
toggle-buttons 12
仕事をしなければなりません。