Thinkpad에서 트랙 포인트를 사용하는 동안 터치 패드를 비활성화하는 방법은 무엇입니까?


21

Thinkpad (예 : 사용중인 X230)에는 트랙 포인트와 터치 패드가 모두 있습니다. 입력시 터치 패드가 비활성화됩니다.

그러나 트랙 포인트를 사용하는 경우 종종 터치 패드를 만지고 피하고 싶은 마우스 클릭을 생성합니다. 트랙 포인트가 사용 중일 때 터치 패드에서 마우스 클릭을 비활성화하는 방법을 아는 사람이 있습니까?

편집 : 또한 누군가 입력 할 때 터치 패드를 비활성화하는 옵션이 어떻게 작동하는지 설명 할 수 있습니까? 무대 뒤에서 무엇을하고 있습니까? xinput 구성 명령입니까, 그렇다면 어떤 명령입니까?

EDIT2 : 설명; 여기서 바로 가기를 사용하여 터치 패드를 수동으로 비활성화하는 것은 문제가되지 않습니다. 터치 패드와 트랙 포인트를 서로 바꾸어 사용할 수 있기 때문에 "입력 할 때 터치 패드 비활성화"옵션과 동일하게 작동합니다 (가장 자주 스크롤을 위해 터치 패드를 사용하고 커서를 이동하려면 트랙 포인트를 사용합니다).


이것은 흥미로울 것입니다. 키보드가 배치되는 방식은 올바른 동작을 방해하는 길 잃은 제스처에 기여합니다. 나는 이것이 현재의 옵션으로는 가능하지 않다고 생각하지만 나중에는 가능할까요? 트랙 패드를 칫솔질 / 누드하는 일을 피하기 위해 두 손을 사용하여 타이핑하고 포인트를 정해야합니다.
벼룩

현재 터치 패드로 마우스 클릭을 비활성화했습니다. 대부분의 경우 터치 패드 상단의 버튼을 사용합니다.
1 월

답변:


10

키보드를 사용 중일 때 터치 패드 비활성화

이 기능은 패키지 syndaemon에서 유틸리티에 의해 수행됩니다 xserver-xorg-input-synaptics. 유휴 시간, 폴링 빈도 등과 같은 옵션을 설정할 수 있습니다 ( 런타임 도움말 참조 ).

사용법 : syndaemon [-i 유휴 시간] [-m poll-delay] [-d] [-t] [-k]
  -i 마지막 키를 누른 후 몇 초 동안 기다릴 것인지
     터치 패드를 활성화합니다. (기본값은 2.0입니다)
  -m 다음 폴링까지 대기 할 시간 (밀리 초)입니다.
     (기본은 200ms)
  ...
  -t 마우스 이동이 아니라 탭핑 및 스크롤 만 비활성화합니다.

의 소스 코드다음과 같습니다syndaemon.c .

  • 중요한 기능은 keyboard_activity(...)main_loop(...)
  • keyboard_activityXQueryKeyMap API 호출을 사용하여 키보드의 현재 상태 ( 키당 1 비트)를 가져온 다음 is를 마지막 (이전) 상태와 비교합니다. 서로 다르면 1을 반환합니다.
  • main_loop밀리 초 keyboard_activity마다 폴링 m하고 "마지막 활동 시간"및 keyboard_activitytrue 또는 false 반환 여부에 따라 터치 패드를 사용할지 여부를 결정합니다.
  • dp_get_device함수는 X 입력 장치가 열거되는 방법을 보여줍니다. keyboard_activity트랙 포인트 활동을 확인하기 위해이 기능 과 기능 을 수정할 수 있어야합니다 .

  • xinput도구는 장치 및 ID를 표시합니다 (예 : "

    가상 코어 포인터 id = 2 [마스터 포인터 (3)]
    core ↳ 가상 코어 XTEST 포인터 id = 4 [슬레이브 포인터 (2)]
    PS ↳ SynPS / 2 Synaptics TouchPad id = 11 [슬레이브 포인터 (2)]
    TP ↳ TPPS / 2 IBM TrackPoint id = 12 [슬레이브 포인터 (2)]

  • XListInputDevices 함수를 통해이 ID를 얻을 수 있습니다.

  • 그런 다음 XOpenDevice를 사용하여 ID에서 장치 핸들을 가져와야합니다.
  • 그런 다음 XQueryDeviceState 함수를 사용하여 TrackPoint 포인터의 좌표를 가져옵니다. 기존의 루프와 유사하게, 이것을 자주 폴링하고 좌표가 변경되었는지 (즉, TrackPoint가 사용 중인지) 확인한 후이를 사용하여 터치 패드를 켜거나 끕니다.
  • 스위치 및 장치 ID와 xinput함께 유틸리티를 사용 query-state하여 프로그래밍이 올바른지 확인할 수 있습니다. 예를 들면 다음과 같습니다.

    xinput 쿼리 상태 12
    2 개 수업 :
    버튼 클래스
    버튼 [1] = 위
    버튼 [2] = 위
    버튼 [3] = 위
    버튼 [4] = 위
    버튼 [5] = 위
    버튼 [6] = 위
    버튼 [7] = 위
    ValuatorClass Mode = 상대 근접 = In
    평가자 [0] = 854
    평가자 [1] = 867
    
  • TrackPoint의 X 및 Y 좌표 인 평가 기 값에 관심이 있습니다.
  • xinput더 많은 팁 은 소스를 참조하십시오
  • 이 패키지를 수정하고 다시 작성하려면

    1. 와 소스를 얻을 apt-get source...
    2. 수정 tools/syndaemon.c
    3. 기존의 해제 syndaemon아웃 주석에 의해 패치 118...124...에 선을debian/patches/series
    4. 수정 된 패키지를 빌드 dpkg-buildpackage -us -uc하면 deb 파일이 상위 디렉토리에 있습니다.

1
바운티는 3 일 후에 만료되므로 더 나은 답변이 표시되지 않는 한 귀하와 거래를 할 것입니다. xinput 식별자로 장치를 쿼리하는 API를 알려 주시면 바운티를 지정하겠습니다. 수정 된 소스에서 deb 패키지를 작성하는 방법을 설명하는 페이지에 대한 링크를 제공하십시오. 그런 다음이 접근법을 적용 할 수 있습니다. 괜찮을까요?
1 월

죄송합니다. 잘 들립니다. 몇 시간 안에 정보를 찾고 답을 편집하려고 노력할 것입니다.
ish

걱정 마! 괜찮아
일 1

1
약속 한대로 현상금을받습니다. 그러나 솔루션을 먼저 코딩해야하기 때문에 대답을 받아들이지 않습니다.
1 월

1
@January, 아직 솔루션을 코딩했는지 확실하지 않습니까? 트랙 포인트 모니터링을 지원하기 위해 syndaemon을 패치했습니다. github.com/eyko/xf86-input-synaptics (commit here github.com/eyko/xf86-input-synaptics/commit/… ) TrackPoint를 모니터링하려면 syndaemon을 실행할 때 -T 옵션 플래그를 전달해야합니다.
Vince

4

가장 먼저해야 할 일은 터치 패드 ID를 아는 것입니다.

먼저 터미널을 열고이 명령을 실행하십시오.

~$ xinput --list

여기서 우리는 이것을 얻습니다 Touchpad id = <id Number>

열린 키보드 단축키 후에 키보드 단축키를 사용하여 두 개의 명령 아래에 이것을 추가하십시오.

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


고맙지 만 터치 패드를 수동으로 비활성화하는 것은 여기서 문제가되지 않으며 (바로 가기로도) 수행 방법을 알고 있습니다. 키보드를 사용할 때 터치 패드가 자동으로 비활성화되는 것과 유사한 방식 으로 트랙 포인트 를 사용 하는 동안 터치 패드를 자동으로 비활성화하는 것이 좋습니다 ( "마우스 및 터치 패드"설정에서 "입력하는 동안 터치 패드 비활성화"설정 참조).
1 월

0

다음은 전력 사용량에 좋지 않은 저급 솔루션입니다 (syndaemon -T 패치가 작동하지 않음).

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

각 5 초 간격 동안에 만 좌표를 알려줄 수 있기 때문에 트랙 포인트를 사용하고 있음을 알면 약간 운이 좋을 것입니다. 즉, 터치 패드를 비활성화하는 것이 보수적이지만 트랙 포인트가 유휴 상태 일 때 터치 패드를 안정적으로 다시 활성화해서는 안됩니다.

어쨌든 팜 프레스에서 방황하는 커서로 울트라 북에서 많은 도움이됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.