web-dev-qa-db-ja.com

xinputを使用してスクリプトで複数のデバイスを構成するにはどうすればよいですか?

スクリプトを使用して複数のデバイスを自動的に設定するようにxinputをどのように構成しますか?

    $ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS GlidePoint                  id=12   [slave  pointer  (2)]
⎜   ↳ ALPS PS/2 Device                          id=13   [slave  pointer  (2)]
⎜   ↳ Corsair Corsair M65 Gaming Mouse          id=15   [slave  pointer  (2)]
⎜   ↳ Corsair Corsair M65 Gaming Mouse          id=17   [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)]
    ↳ Laptop_Integrated_Webcam_HD               id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=14   [slave  keyboard (3)]
    ↳ Corsair Corsair M65 Gaming Mouse          id=16   [slave  keyboard (3)]

そして問題は、これらの「corsairゲーミングマウス」の両方が毎回異なるIDを持っていることです。マウスが2つある理由はわかりませんが、それが私が住んでいる世界です。両方のマウスのプロパティを設定するスクリプトを作成するにはどうすればよいですか。これを使用しましたが、次に起動したときに機能しませんでした(IDが変更されました)。

#!/bin/sh
xinput --set-pr
op 10 "Device Accel Profile" 6
xinput --set-prop 10 "Device Accel Velocity Scaling" 5
xinput --set-prop 10 "Device Accel Constant Deceleration" 3
#xinput --set-prop 10 "Device Accel Velocity Tracker Count" 2

名前を使ってみましたが、一致するデバイスが複数あると文句を言います。

どんな助けでも大歓迎です。

3
Exaeta

両方に変更を加える必要がある場合は、ループを使用できます

#!/bin/sh
for id in $(xinput --list | \
            sed -n '/Corsair Corsair M65 Gaming Mouse.*pointer/s/.*=\([0-9]\+\).*/\1/p')
do
  xinput --set-prop $id "Device Accel Profile" 6
  ...
  whatever you want to do
  ...
done
3
Costas

名前の前に「pointer:」または「keyboard:」を追加できます。例えば

xinput list-props 'pointer:Logitech M585/M590'
xinput list-props 'keyboard:Logitech M585/M590'
0
jtsagata