Alps 터치패드에서 두 손가락 스크롤(two-finger scroll)

현재 karmic beta를 사용중인데 터치패드 설정(메뉴>시스템>기본설정>마우스>터치패드 탭)에서 two-finger scroll을 사용하도록 설정할 수 있게 돼 있습니다. 물론 터치패드가 two-finger scroll을 지원해줘야 하는 거긴 하죠. 근데 제가 가진 vaio tz 노트북에 달린 터치패드는 alps 제품이라는데 바로 지원되진 않습니다. 근데 이 alps 터치패드도 synaptics 드라이버를 사용합니다. 그리고 이 드라이버에서 two-finger를 emulate 해 줍니다. 근데 이 emulation 기능이 기본으로 켜져 있진 않습니다. 이걸 hal 관련 설정 파일을 조금 고치면 켤 수 있습니다.

요기에 자세한 가이드가 있습니다: http://ubuntuforums.org/showthread.php?t=1127095&page=2

가이드에는
[list:1xfsbq0l]
[:1xfsbq0l]/usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi 라는 파일을 백업[/:m:1xfsbq0l]
[:1xfsbq0l]/usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi 에 몇줄 추가[/:m:1xfsbq0l]
[:1xfsbq0l]리붓[/:m:1xfsbq0l][/list:u:1xfsbq0l] 하라고 돼 있습니다. 저기에서 두번째 단계만 살펴보면 11-x11-synaptics.fdi 에 다음을 추가하라고 돼 있습니다.

[code:1xfsbq0l]
<merge key="input.x11_options.SHMConfig" type="string">On</merge>
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">100</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
[/code:1xfsbq0l] 근데 여기에서 아래 두 줄은 메뉴에서 찾아 들어가는 터치패드 설정에서 조정할 수 있습니다. 그러니 아래 두줄은 뺍니다. 그리고 두번째 줄은 가이드에 나와 있는대로 조사해서 바꿔주면 됩니다. 대부분 100이나 110 정도가 적당한 것 같습니다.

그리고! 저의 경우는 하나를 더 추가해야 했는데 EmulateTwoFingerMinZ 다음에 EmulateTwoFingerMinW를 추가해 줘야 했습니다. 이걸 추가해야하는지 여부를 알아보려면 다음과 같이 합니다. (가이드에 나온 것 참조)
/usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi 라는 파일을 열어서 일단 다음을 입력하고 리붓합니다.

[code:1xfsbq0l]
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
[/code:1xfsbq0l](이걸 먼저 해줘야 synclient -m 명령이 동작합니다.) 로긴 하고 나면 터미널을 열어서(alt+f2 다음 gnome-terminal 입력) 다음을 실행합니다.

[code:1xfsbq0l]
synclient -m 100
[/code:1xfsbq0l] synaptics 드라이버에서 터치패드의 상황을 모니터해서 터미널에 뿌려주는 명령입니다. 대충 요런 출력이 나옵니다.

[code:1xfsbq0l]
lbird@beren:~$ synclient -m 100
time x y z f w l r u d m multi gl gm gr gdx gdy
0.000 463 45 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0
1.908 766 273 87 1 0 0 0 0 0 0 00000000 0 0 0 0 0
2.008 478 204 88 1 0 0 0 0 0 0 00000000 0 0 0 0 0
2.108 367 167 103 1 0 0 0 0 0 0 00000000 0 0 0 0 0
2.208 355 175 62 1 0 0 0 0 0 0 00000000 0 0 0 0 0
2.308 355 179 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0
5.618 511 312 127 1 0 0 0 0 0 0 00000000 0 0 0 0 0
5.719 513 342 127 1 0 0 0 0 0 0 00000000 0 0 0 0 0
5.819 514 342 127 1 0 0 0 0 0 0 00000000 0 0 0 0 0
5.919 515 320 127 1 0 0 0 0 0 0 00000000 0 0 0 0 0
6.019 520 278 127 1 0 0 0 0 0 0 00000000 0 0 0 0 0
6.119 520 271 127 1 0 0 0 0 0 0 00000000 0 0 0 0 0
6.220 520 271 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0
[/code:1xfsbq0l] z가 0보다 큰 부분이 터치패드에 손가락을 대고 움직이는 부분인데 앞에 뭉터기는 한 손가락이고 뒤에 뭉터기는 두 손가락입니다. 두 손가락일 때 z 값이 127을 때리는 것을 볼 수 있죠. 그러니 EmulateTwoFingerMinZ의 값을 100(은 좀 아슬아슬)이나 110 정도로 해주면 됩니다. 근데 하나 더 신경 써야 하는 것이 w 값입니다. 손가락을 대건 안 대건 w 값은 0으로 고정된 값을 출력합니다. 근데 다음의 명령을 사용해서 기본 설정을 살펴보면 EmulateTwoFingerW의 값이 7로 설정돼 있습니다.

[code:1xfsbq0l]
lbird@beren:~$ synclient -l | grep TwoFinger
EmulateTwoFingerMinZ = 138
EmulateTwoFingerMinW = 7
VertTwoFingerScroll = 1
HorizTwoFingerScroll = 1
[/code:1xfsbq0l] 근데 실제로 synclient 명령을 통해서 모니터 해보면 w 값이 7보다 크지 않기 때문에 two finger emulation이 동작하지 않습니다. 그러니 앞에 설정 파일에 EmulateTwoFingerW도 수정하도록 추가해줍니다. 정리해서 /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi 파일에서

[code:1xfsbq0l]
<merge key="input.x11_driver" type="string">synaptics</merge>
[/code:1xfsbq0l]와 같은 부분을 찾아서 그 아래에 다음을 추가합니다.

[code:1xfsbq0l]
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
<merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">110</merge>
<merge key="input.x11_options.EmulateTwoFingerMinW" type="string">0</merge>
[/code:1xfsbq0l]첫째 줄에 SHMConfig를 true로 설정하는 건 synclient로 알아볼 것을 다 알아보고 나면 필요가 없긴 하지만 뭐 그냥 두도록 합니다.
이러고 나서 리붓하면 됩니다. 그 다음에는 (메뉴>시스템>기본설정>마우스>터치패드 탭)에서 입맛에 맞게 설정하면 됩니다. 저는 이렇게 돼 있습니다.
[attachment=0:1xfsbq0l]screenshot4.png[/attachment:1xfsbq0l]

사족) 근데 왠만하면 미니 usb 마우스 하나 들고 다니는 게 더 편하긴 합니다. 헤헤

사족2) 좀 적응하고 나니 손가락 두 개를 쓰는 것 보다 엄지손가락 끝 마디를 눕혀서 쓰는 게 더 편하고 오류도 적네요.