노트북 키보드가 고장나서( Esc계속 무작위로 쳐도 수리가 안됨) USB 키보드를 구입했습니다. 로그인 시 실행되어 USB 키보드가 연결되어 있는지 확인하고 연결된 경우 노트북 키보드를 비활성화하는 스크립트를 작성하고 싶습니다.
이 작업을 수행하기 위해 xinput을 사용하고 싶습니다. 백그라운드에서 ID 14의 장치를 비활성화하는 올바른 명령은 다음과 같습니다.
xinput set-int-prop 14 "Device Enabled" 8 0
나는 올바른 장치를 비활성화했는지 확인하는 신뢰할 수 있는 방법이라고 생각합니다. 즉, 목록을 작성하고, grep하고, 잘라서 ID 번호를 얻은 다음 다음과 같이 올바른 명령에 사용하는 것입니다.
xinput --list | egrep "AT Translated" | cut -d "=" -f 2| cut -d "[" -f 1 | xargs -I {} xinput set-int-prop {} "Device Enabled" 8 0
그러나 이 경우에도 오류가 발생합니다.
unable to find device 14
왜 이런 일이 발생하는지 잘 모르겠지만(첫 번째 질문) USB 키보드가 있는지 확인하는 방법이 궁금합니다. 분명히 if 함수가 필요합니다.어느"USB USB Keykoard" 문자열에서 .grep을 실행하면[예, 철자가 틀리지만 목록에 표시됨] 결과가 반환됩니다 xinput --list
. 두 번째 질문은 if 함수를 작성하는 방법입니다.
답변1
쉘 명령의 문제가 여기에 있다고 생각됩니다.
| cut -d "[" -f 1
그러면 하나의 매개변수만 남게 됩니다 14
(숫자 14 뒤에 몇 개의 공백이 옵니다. 어떤 이유로 마크다운에서는 이를 표시하지 않는다는 점에 유의하세요). xinput
찾고 있는 매개변수가 (14 + 몇 개의 공백)이 14
아니기 때문에 명령이 실패합니다.14
대신 이 섹션에서는 공백을 [
구분 기호로 사용하세요.
| cut -d " " -f 1