씽크패드 요가 370 슬랙웨어 버추얼박스 안에서 원노트 사용하기

1   멀티터치 설정하기

오늘도 날이 밝아 삽질을 시작했다. 우선 원노트의 잉킹을 사용하기 위해서는 멀티터치 기능을 활용해야 한다. 새벽에 완성한 하이버네이션을 즐기며 리쥼을 해서 Stylus Labs의 Write를 설치했다. 펜을 잘 인식했다. 그런데 손가락 터치가 마우스 커서로 인식되는 것이 아닌가? 멀티터치는 고사하고 두 손가락 줌도 안 됐다. 또 한 두 시간 검색으로 세월을 보냈다. 이것, 저것, 요것, 조것을 읽어 보니 같은 증상이 많이 일어 나는 것 같았다. 하지만 시원한 해결책은 찾을 수가 없었다. 그러던 중 mtdev-test라는 프로그램으로 멀티터치가 인식되는지 확인하는 과정에서 손가락 갯수에 따라서 데이터의 양이 달라지는 것을 확인했다. 커널 레벨에서 멀티터치가 인식된다는 뜻이다. 그렇다면 문제는 X윈도의 Wacom 드라이버일 것이라 생각했다. 역시나 xf86-input-wacom X윈도 드라이버의 문서를 읽어 보니 레거시 2 핑커 멀티터치가 기본으로 설정되어 있어서 X윈도가 멀티터치를 인식하지 못 했던 것이었다.

# type: TOUCH인 줄의 디바이스 이름을 찾는다.
xsetwacom --list devices
# 찾은 터치 디바이스의 인 드라이브 제스쳐를 비활성화한다.
xsetwacom --set "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" Gesture off

이제 멀티터치가 제대로 인식되었다. 다음 줄을 ~/.xinitrc에 넣어 주면 X윈도 구동시 자동으로 멀티터치를 지원한다.

# Wacom multitouch
xsetwacom --set "`xsetwacom --list | sed -n '/\ttype: TOUCH/{s/\t.*//; p}'`" Gesture off

2   원노트 온라인에서 잉킹하기

리눅스용 원노트 클라이언트 프로그램이 따로 없기 때문에 버추얼머신 없이 원노트를 사용하기 위해서는 웹브라우저에서 사용 가능한 온라인 버전을 써야 한다. 온라인 버전에서 펜으로 잉킹이 가능했지만 압필을 지원하지 않았다. 그래서 버추얼박스에서 원노트를 사용하기로 결정했다.

3   버추얼박스에서 원노트 설정하기

버추얼박스 안에서 윈도 7을 부팅한 후 원노트를 써봤다. 잉킹이 잘 되는 듯 했으나 펜이나 손가락을 마우스로 인식하고 있었다. 물론 필압도 지원되지 않았다. 터치스크린을 전혀 인식하지 못 하고 있었다. 검색을 해보니 Settings => System => Motherboard => Pointing Device를 USB Multi-Touch Tablet으로 설정하면 된다고 했다. 하지만 이렇게 설정해도 컨트롤 패널에 펜과 터치 관련된 설정만 새로 생길 뿐 변하는 것은 없었다. 더 검색을 해보니 이 설정은 터치스크린보다는 진짜 태블릿을 위한 설정 같았다.

더 검색을 하다보니 USB 디바이스 필터라는 것을 발견했다. Settings => USB => USB Device Filters라는 설정을 보면 USB 디바이스를 추가할 수 있는 버튼이 있다. 그런데 호스트에 연결된 USB 디바이스를 추가한다는 버튼을 눌러 보니 아무런 USB 디바이스도 보이지 않았다. 터치스크린이 USB 디바이스가 아닌가라는 의문이 들어서 root 계정에서 lsusb -v의 출력을 살펴보니 Pen and multitouch sensor가 분명히 보였다. 그래서 수작업으로 관련된 정보를 USB 디바이스 필터에 추가를 하고 재부팅을 했으나 아직도 인식되지 않았다. 분명히 접근권한 문제일 것이라 생각하고 더 검색을 해 본 결과 역시나 사용자계정을 vboxusers라는 그룹에 추가를 해야 USB 디바이스에 접근이 가능하다는 것을 알았다. 내 일반계정을 vboxusers 그룹에 추가를 하고나니 터치스크린을 USB 디바이스 필터에 추가할 수 있었고 재부팅 후에는 원노트에서도 필압과 함께 잉킹이 제대로 되는 것을 확인할 수 있었다.

4   버추얼박스 안의 윈도 7과 화면 돌리기

하이버네이션 문제의 주범인 자이로스코프 센서를 쓸 수 없기 때문에 태블릿 모드로 바꾼 다음 화면을 돌릴 때마다 필요한 이벤트를 생성하지 못 하는 것을 확인했다. 그러나 태블릿 모드로 진입할 때와 랩탑 모드로 진입할 때는 ACPI 이벤트가 발생되는 것을 확인하고 이것을 이용해서 태블릿 모드로 진입할 때는 정해진 방향으로만 화면을 돌리게 설정을 했다. 버추얼박스 안의 윈도 7도 화면이 제대로 돌아 갔다. 그런데 문제가 있었다. 터치스크린의 좌표는 화면과 같이 돌아가지 않았다. 그래서 윈도 7에 있는 화면 돌리기 기능을 사용하려고 보니 기능 자체를 찾을 수 없었다. 아마도 버추얼박스의 그래픽스 어탭터가 화면회전을 지원하지 않는 듯 했다. 대신 버추얼박스의 게스트 어디션이 화면해상도를 돌아간 화면에 맞게 자동으로 바꿔 주는 듯 했다. 그러니 윈도 7은 화면이 돌아갔다는 것을 알 길이 없고 터치스크린의 좌표도 회전시키지 못 하는 것이었다. 원노트를 세로 화면에서 쓸 수 없는 안타까운 일이 생긴 것이다. 일단 태블릿 모드로 바뀔 때 버추얼박스가 돌고 있으면 화면을 안 돌리게 설정을 해서 터치스크린을 가로 화면으로 쓸 수 있게 설정을 했다.

5   풀스크린이 아닌 윈도 7에서의 터치

그런데 윈도 7을 전체 화면이 아닌 윈도 안에서 실행을 해보니까 터치스크린이 마치 스케일 다운된 것처럼 인식이 되었다. 즉, 윈도 7이 실행되고 있는 윈도 밖에서 터치를 해도 실제 물리적인 터치스크린의 크기와 터치된 좌표의 비율만큼 윈도 7 내의 화면에서 터치가 인식되었다. 예를 들어 네 가장자리를 터치하면 윈도 7의 화면이 풀스크린이 아니니까 그 가장자리에 있지도 않지만 윈도 7은 가장자리가 터치된 것처럼 인식을 했다. 한마디로 풀스크린이 아니면 터치스크린을 제대로 쓸 수 없다는 말이다. 뭐 풀스크린으로 쓰면 되니까 큰 문제는 안 된다고 생각한다.

6   호스트와 게스트

게스트가 USB 디바이스 필터를 이용해서 터치스크린을 사용하는 중에는 호스트가 같은 디바이스를 공유할 수 없기 때문에 리눅스에서는 터치스크린을 사용할 수 없다. 버추얼박스를 끈 다음에야 다시 호스트에서 터치스크린을 사용할 수 있다.

참고문헌

이 칸을 비워 두세요.