터치패드를 자동으로 비활성화/활성화하는 스크립트를 작성하려고 하는데 bash
이를 i3wm
위해 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)]
나는 그것을 구현해 보았고 내가 달성한 최고는 다음과 같습니다 id
.Touchpad
awk
$ xinput | awk '/Touchpad/ && /id=/ { print $6 } '
id=15
문제는 여섯 번째 열이 매번 장치 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
답변2
sed
다음과 같은 목적 으로 사용할 수 있습니다 .
xinput | sed '/Touchpad/s/.*id=\([0-9]*\).*/\1/;t;d'
이렇게 하면 패턴이 발견된 줄의 전체 내용을 패턴의 숫자로 바꾸는 캡처 그룹을 사용하여 Touchpad
ID 부분만 효과적으로 인쇄하고 일치하지 않는 줄(끝 부분)을 무시합니다.id=digits
\([0-9]*\)
;t;d
답변3
아래의 단일 awk 명령을 사용하면 제대로 작동합니다.
테스트를 거쳐 잘 작동함
xinput |awk '/Touchpad/{for(i=1;i<=NF;i++){if ($i ~ /id/){print $i}}}'
산출
id=15