2013년 4월 9일 화요일

리눅스에서 마우스의 제어 [1]

MS-Windows에서는 SendInput() 함수를 이용하여 키보드의 입력이나 마우스의 입력을 흉내 낼 수 있다.

그렇다면 Linux에서는 사용자의 입력을 흉내낼 수 있는 방법이 있을까?
궁금해서 먼저 마우스에 대해 검색을 해 보자 다음과 같은 유용한 정보를 얻게 되었다.

http://stackoverflow.com/questions/7675379/how-to-control-mouse-movement-in-linux

리눅스의 특성상, 모든 장치들이 파일을 다루는 것과 동일한 방식을 취하기 때문에,
마우스의 경우에도 /dev/input/mouse* 혹은 /dev/input/event*를 활용하여 제어를 한다는 것이었다.

직접 원하는 결과를 얻을 수 있을지 시험해 보기 전에 간단한 시험을 해 보았다.

$ sudo cat /dev/input/mice

마우스를 움직이거나 버튼을 누르면 화면에 알 수 없는 문자들이 출력됨을 알 수 있다.
최소한 실제 마우스의 이벤트에 접근할 수 있음은 알 수 있었다.

위에서 지정한 장치 이외에도 내가 사용하고 있는 시스템에서는
/dev/input/mouse1
/dev/input/event4
에서 유사한 양상을 보이고 있었다.
단, /dev/input/event1에서는 같은 작동에 대해서도 더 많은 문자들이 출력되는 듯 하였다.


링크의 게시물에 있는 소스를 약간 수정하고 에러를 수정하였습니다.


이제 빌드를 하고 루트 권한으로 실행을 하면, 마우스의 커서가 우측으로 100 픽셀씩 점프하는 것을 보게 됩니다.

소스 파일 https://docs.google.com/file/d/0B8Yj1UpwCBnhR0Fkck85WDZZaHc/edit?usp=sharing