「xinput リスト」の「仮想コア ポインターの ID は常に「2」ですか?」

「xinput リスト」の「仮想コア ポインターの ID は常に「2」ですか?」

こんにちは。私はUbuntu初心者です。

.shChrome のシェル ファイル (拡張子)で使用する仮想コア ポインター ID を知る必要があります。コマンドを使用しました--touch-devices=2が、正常に動作しています。ただし、仮想コア ポインターの値が常に 2 になるかどうかはわかりません。(実際のハードウェア デバイス ID は変化するため、Logitech Optical USB Mouse id=9常に 9 になるとは限らないことはわかっています。)

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech Optical USB Mouse id=9 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]

汎用コマンドを次のように使用したい

<some_command> --touch-devices=$(xinput --list --id-only 'Virtual core pointer')

しかし、それは機能しません。

どのようにアプローチすればよいか教えてください。

答え1

私が何をすべきか考えた方法は次のとおりです。

xinput --list
xinput --list| grep "Virtual core pointer"
xinput --list| grep "Virtual core pointer" | awk '{print $5}'
xinput --list| grep "Virtual core pointer" | awk '{print $5}' | cut -d= -f2

つまり、あなたの答えは次のようになります:

<some_command> --touch-devices=$(xinput --list| grep "Virtual core pointer" | awk '{print $5}' | cut -d= -f2)  

パイプは楽しいですが、実行することになっているawkタスクにのみ使用する方がよいでしょう:grepcut

<some_command> --touch-devices=$(xinput --list | awk '/Virtual core pointer/ { print(substr($5, 4)); exit; }')

良いプログラミングの実践です。かつては正しかった数値をハードコーディングするのではなく、システムが現在正しいと伝える数値から数値を決定します。

関連情報