터치패드는 유지하지만 버튼을 비활성화하고 싶은 경우

터치패드는 유지하지만 버튼을 비활성화하고 싶은 경우

우리 아이의 acer v5 오른쪽 버튼이 고장났습니다. 우유에 젖어 있었는데 갑자기 눌려진 것처럼 보였습니다.

터치패드만 사용하려면 버튼을 완전히 비활성화하려면 어떻게 해야 하나요?

OpenSUSE 13.1과 KDE가 있습니다.

답변1

대부분의 터치패드는 명령줄 도구 synclientxinput.

이 두 가지 도구 중에서 비활성화 uttons 을 사용할 수 있다고 생각하지 않습니다 synclient. 를 사용하여 이 작업을 수행할 수 있습니다 xinput. 두 가지 도구 중에서 이것이 사용하기가 더 번거롭지만 그리 어렵지는 않습니다.

스위치를 사용하여 실행 하면 -h다음과 같은 사용 정보를 얻을 수 있습니다.

$ xinput -h
usage :
    xinput get-feedbacks <device name>
    xinput set-ptr-feedback <device name> <threshold> <num> <denom>
    xinput set-integer-feedback <device name> <feedback id> <value>
    xinput get-button-map <device name>
    xinput set-button-map <device name> <map button 1> [<map button 2> [...]]
    xinput set-pointer <device name> [<x index> <y index>]
    xinput set-mode <device name> ABSOLUTE|RELATIVE
    xinput list [--short || --long || --name-only || --id-only] [<device name>...]
    xinput query-state <device name>
    xinput test [-proximity] <device name>
    xinput create-master <id> [<sendCore (dflt:1)>] [<enable (dflt:1)>]
    xinput remove-master <id> [Floating|AttachToMaster (dflt:Floating)] [<returnPointer>] [<returnKeyboard>]
    xinput reattach <id> <master>
    xinput float <id>
    xinput set-cp <window> <device>
    xinput test-xi2 <device>
    xinput map-to-output <device> <output name>
    xinput list-props <device> [<device> ...]
    xinput set-int-prop <device> <property> <format (8, 16, 32)> <val> [<val> ...]
    xinput set-float-prop <device> <property> <val> [<val> ...]
    xinput set-atom-prop <device> <property> <val> [<val> ...]
    xinput watch-props <device>
    xinput delete-prop <device> <property>
    xinput set-prop <device> [--type=atom|float|int] [--format=8|16|32] <property> <val> [<val> ...]
    xinput disable <device>
    xinput enable <device>

이름에 "Button"이라는 텍스트가 포함된 옵션부터 시작하겠습니다.

$ xinput -h 2>&1 | grep button
    xinput get-button-map <device name>
    xinput set-button-map <device name> <map button 1> [<map button 2> [...]]

쿼리하려면 장치 이름이 필요합니다. 이렇게 하려면 를 사용합니다 xinput list.

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4013   id=9    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=12   [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)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=13   [slave  keyboard (3)]

장치 핸들은 일반적으로 "SynPS/2 Synaptics TouchPad"이지만 특정 하드웨어에 따라 다를 수 있습니다.

$ xinput get-button-map "SynPS/2 Synaptics TouchPad"
1 2 3 4 5 6 7 8 9 10 11 12 

이것은 내 Thinkpad T410 노트북의 터치패드에 할당된 모든 "버튼"입니다. 터치패드의 모든 모서리 등도 "버튼"으로 간주되므로 위 출력에 버튼이 너무 많습니다. 스위치를 사용하면 위 목록에서 어떤 버튼이 어떤 숫자인지 자세히 알아볼 수 있습니다 --long.

$ xinput list --long "SynPS/2 Synaptics TouchPad" 
...
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
    Reporting 8 classes:
        Class originated from: 11. Type: XIButtonClass
        Buttons supported: 12
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" None None None None None
        Button state:
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: 1472.000000 - 5888.000000
          Resolution: 75000 units/m
          Mode: relative
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: 1408.000000 - 4820.000000
          Resolution: 105000 units/m
          Mode: relative
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Scroll
          Range: 0.000000 - -1.000000
          Resolution: 0 units/m
          Mode: relative
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Scroll
          Range: 0.000000 - -1.000000
          Resolution: 0 units/m
          Mode: relative
    ...

좋습니다. 그런데 버튼을 어떻게 비활성화합니까?

매뉴얼 페이지를 보면 xinput다음과 같은 단서를 볼 수 있습니다.

$ man xinput
...
   --set-button-map device map_button_1 [map_button_2 [...]]
        Change the button mapping of device. The buttons are specified 
        in physical order (starting with button 1) and  are  mapped  to
        the logical button provided. 0 disables a button. The default 
        button mapping for a device is 1 2 3 4 5 6 etc.
...

따라서 비활성화하려는 버튼을 기록하는 경우 xinput list --long "SynPS/2 Synaptics TouchPad"다음을 수행할 수 있습니다(버튼 #5를 비활성화하려는 경우).

$ xinput set-button-map "SynPS/2 Synaptics TouchPad" 1 2 3 4 0 6 7 8 9 10 11 12

노트:위의 예에서 "SynPS/2 Synaptics TouchPad"이는 로 대체될 수도 있습니다 11. 이는 특정 입력의 ID이므로 위와 동일합니다.

$ xinput set-button-map 11 1 2 3 4 0 6 7 8 9 10 11 12

장치 이름에 대한 팁

출력에서 xinput liststrings 가 포함된 열이 있음을 알 수 있습니다 id=#.

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4013   id=9    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=12   [slave  pointer  (2)]

귀찮은 긴 문자열 대신 "SynPS/2 Synaptics TouchPad"라는 ID를 사용할 수 있습니다.

$ xinput list-props 11

관련 정보