기술을 얘기한다 2011.01.11 16:58
우분투 리눅스에 포함되어 있는 X 윈도는 워낙 훌륭해서 USB  키브드와 잘 연동된다. 예를 들어, 내가 현재 사용하고 있는 IBM Ultranav 키보드의 경우 키보드에 빨콩이라고 불리는 스틱 형태의 포인터와 터치패드가 동시에 내장되어 있다. 따라서, 이 키보드를 연결하면 이들 모두가 인식되어 빨콩으로든 터치패드로든 모두 마우스 포인터 옮기기와 클릭 등을 할 수 있다.

그런데, 가끔 키보드를 치다가 터치패드를 건드려서 엉뚱한 윈도가 활성화 된다든지 하는 맘에 안드는 경우가 생겨서 나는 항상 터치패드는 disable 시켜놓고 쓴다. 윈도의 경우 Ultranav 용 드라이버를 설치하면 선택적으로  enable/disable 할 수 있지만 우분투에서는 어떻게 할까?

물론 항상 그렇지만 여러가지 방법이 있다. 그리고 그 방법은 현재 사용하고 있는 X 윈도의 버전 등과도 관련이 있다. 어쨌든 최신판의 우분투를 기준으로 하면 다음과 같이 해결된다.

우선, 입력 장치가 뭐가 달려 있는지 본다.

newcat@newcat:~$ xinput list
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ Synaptics Inc. Composite TouchPad / TrackPoint    id=12    [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                       id=14    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation            id=16    [slave  pointer  (2)]
⎜   ↳ Synaptics Inc. Composite TouchPad / TrackPoint    id=11    [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)]
    ↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav    id=9    [slave  keyboard (3)]
    ↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav    id=10    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=13    [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                      id=15    [slave  keyboard (3)]
포인터로는 시냅틱 터치패드/트랙포인트가 두개 (id 11번과 12번) 그리고 TPPS/2 IBM 트랙포인트가 하나 보인다. (후자의 경우 현재 사용하는 노트북에 내장된 빨콩인 듯) 키보드로는 울트라나브 키브드가 두개 보이는데 하나는 외장 USB이고 하나는 IBM ThinkPad 노트북에 내장된 키보드인 것으로 추정된다.

그렇다면 내가 disable 하고 싶은 터치패드가 11번인지 12번인지 어떻게 알 수 있을까? 다행히도 해당 장치가 발생시키는 이벤트를 볼 수 있는 기능도 xinput 이 제공한다.
newcat@newcat:~$ xinput test 11
motion a[0]=2316 a[1]=549
motion a[0]=2320 a[1]=545
motion a[0]=2325 a[1]=541
...
이런 식으로 각 장치 id 를 바꿔가면서 해보면 어느 장치가 몇 번인지를 알게 된다. 나의 경우는 11번을 disable 해야 한다는 걸 알게되었고 이제는 disable 시키려고 한다. 그럼 각 장치가 제공하는 기능이 무엇이 있는지 검사한다.
newcat@newcat:~$ xinput list-props 11
Device 'Synaptics Inc. Composite TouchPad / TrackPoint':
    Device Enabled (135):    1
    Device Accel Profile (265):    0
    Device Accel Constant Deceleration (266):    1.000000
    Device Accel Adaptive Deceleration (268):    1.000000
    Device Accel Velocity Scaling (269):    10.000000
    Evdev Reopen Attempts (250):    10
    Evdev Axis Inversion (270):    0, 0
    Evdev Axes Swap (272):    0
    Axis Labels (273):    "Rel X" (143), "Rel Y" (144)
    Button Labels (274):    "Button Left" (136), "Button Middle" (137), "Button Right" (138), "Button Wheel Up" (139), "Button Wheel Down" (140)
    Evdev Middle Button Emulation (257):    2
    Evdev Middle Button Timeout (258):    50
    Evdev Wheel Emulation (259):    0
    Evdev Wheel Emulation Axes (260):    0, 0, 4, 5
    Evdev Wheel Emulation Inertia (261):    10
    Evdev Wheel Emulation Timeout (262):    200
    Evdev Wheel Emulation Button (263):    4
    Evdev Drag Lock Buttons (264):    0
옳지. 첫 줄에 있는 "Device Enabled" 가 눈에 번쩍! 이걸 1 -> 0 으로 바꿔주면 되겠다.
newcat@newcat:~$ xinput set-int-prop 11 "Device Enabled" 8 0
0 앞에 있는 8은 8 비트짜리 데이터라는 뜻.






신고
posted by 신묘군