노트북 트랙패드를 전환하는 스크립트

노트북 트랙패드를 전환하는 스크립트

내 ThinkPad에서 터치패드를 비활성화하는 스크립트가 있습니다.

#!/usr/bin/env bash

xinput --disable 12

단순히 비활성화하는 대신 터치패드의 현재 상태를 확인하고 활성화/비활성화를 전환하도록 스크립트를 조정하려면 어떻게 해야 합니까?

답변1

이상한 점은 xinput출력 자체를 필터링할 수 없다는 것입니다. 하지만 우리는 그렇습니다 grep!

xinput --list-props 12 | grep -q 'Device Enabled.*1$' && echo enabled || echo disabled

답변2

도착하다스위치터치패드의 경우 다음 스크립트에서 Perl 단일 라이너를 실행할 수 있습니다.

perl -e '$dev="SynPS/2 Synaptics TouchPad"; `xinput list-props $dev` =~ /^.*Device Enabled.+?(\d)$/m ;  $1 ? `xinput --disable $dev` : `xinput --enable $dev`;

짧은 확장:

  • 백틱은 시스템/리눅스 명령을 실행합니다.
  • "Device Enabled"라는 줄을 일치시킬 때 정규식은 줄의 마지막 숫자 문자를 찾습니다(0...은 꺼짐을 의미하고 1...은 켜짐을 의미함).
  • 정규식의 /m은 다음을 의미합니다. 명령 출력의 각 줄을 별도의 요소로 사용합니다. 그렇지 않으면 정규식의 ^ 및 $가 줄이 아닌 문자열의 시작/끝을 나타냅니다.
  • 대괄호는 일치하는 숫자를 변수 $1에 저장합니다.
  • 이제 남은 것은 삼항 연산자입니다: "if true"? "do this": "else to this", 즉 $1이 0 또는 1과 같은 경우 -> 비활성화 또는 활성화를 의미합니다.

("i3" 창 관리자와 함께 사용하려면 다음과 같이 작성해야 합니다.

bindsym XF86TouchpadToggle exec --no-startup-id perl -e '{`xinput list-props 10` =~ /^.*Device Enabled.+?(\d)$/m and  {$1 ? `xinput --disable 10` : `xinput --enable 10`}} '

관련 정보