Linuxのxinput出力からデバイスIDと一致する文字列を印刷します。

Linuxのxinput出力からデバイスIDと一致する文字列を印刷します。

タッチパッドを自動的に無効化/有効化するスクリプトを作成しようとしてbashi3wmますxinput。スクリプトのアイデアは、異なるコンピュータ間で簡単に転送できるようにすることであるため、タッチパッドのデバイスIDを自動的に抽出しようとしています。

$ xinput                                                                    
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DLL07BE:01 06CB:7A13 Mouse                id=14   [slave  pointer  (2)]
⎜   ↳ PS/2 Generic Mouse                        id=22   [slave  pointer  (2)]
⎜   ↳ DLL07BE:01 06CB:7A13 Touchpad             id=15   [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)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=13   [slave  keyboard (3)]
    ↳ Intel HID events                          id=16   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=17   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=18   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=19   [slave  keyboard (3)]

私はそれを実装し、私が達成した最高は次のとおりですidTouchpadawk

$ xinput | awk '/Touchpad/ && /id=/ { print $6 } '                          
id=15

問題は、6番目の列が毎回デバイスIDではないため、最初に含む行を取得し、次の数字を印刷して最初のTouchpadスペースid=/タブを切り取る必要があることです。

ベストアンサー1

の場合はxinputコマンドが必要です。装備パラメータ(たとえば--enable device)は、デバイスの名前またはIDを使用できます。

たとえば、次の両方が同じです。

xinput --enable 'DLL07BE:01 06CB:7A13 Touchpad'
xinput --enable 15

デバイスのフルネームが事前にわからない場合は、出力を使用してxinput --list --name-only一致する名前を見つけます。

xinput --list --name-only | grep Touchpad
xinput --enable "$(xinput --list --name-only | grep Touchpad | head -n 1)"

man 1 xinputこのオプションは、で説明されているようにデバイス--listパラメータも受け入れます。したがって、特定の名前のIDを印刷できます。

xinput --list --id-only 'DLL07BE:01 06CB:7A13 Touchpad'

またはIDが付与された名前:

xinput --list --name-only 15

おすすめ記事