#title USB 마우스 설정 팁 [[TableOfContents]] = USB 마우스 설정 팁 = == 소개 == 이 글은 리눅스에서 USB 마우스를 설정하기 위한 팁이다. == 설정 == === BIOS 설정 === BIOS 설정은 필요 없다. USB legacy support가 필요하다는 소문이 있지만, 그 설정은 USB 드라이버가 없지만 키보드나 마우스가 절실히 필요한 상황에서 입력 장치를 사용할 수 있게 해주는 설정일 뿐이다. "fsck를 할까요? (y/n)"이라고 컴퓨터가 물어볼 때 USB 키보드가 인식이 안되고 있으면 난감할 것이다. 그럴 때 필요하긴 하지만, 마우스 지원을 위해 꼭 필요한 옵션은 아니다. === 커널 설정 (2.6.9) === * General setup -> Support for hot-pluggable devices * General setup -> Configure standard kernel features (for small systems) * Bus options (PCI, PCMCIA, EISA, MCA, ISA) -> PCI support 위와 같이 준비를 마치고 다음을 선택한다. 1. Device Drivers -> Input device support -> Input devices -> Userland interfaces -> Mouse interface 1. Device Drivers -> USB support -> Support for Host-side USB 1. USB 컨트롤러에 맞는 host controller interface 선택 * "lspci -v | grep HCI"로 컨트롤러 확인 * EHCI HCD (USB 2.0) support * UHCI HCD (most Intel and VIA) support * OHCI HCD support 1. 마우스 드라이버 선택 * Device Drivers -> USB support -> USB Human Interface Device (full HID) support: 추천 * Device Drivers -> USB support -> HID input layer support * Device Drivers -> USB support -> USB HID Boot Protocol drivers: 비추천 * Device Drivers -> USB support -> USB HID Boot Protocol drivers -> USB HIDBP Mouse (simple Boot) support 마우스 드라이버를 두개 모두 선택하더라도 실질적으로는 하나만 사용된다. 확실하게 필요한 것 한가지만 선택하면 속 편하다. 입력장치 설정에서 X/Y 해상도를 입력하면 마우스의 감도가 변한다는 소문(?)이 있지만 커널 설정의 도움말에는 그런 말은 없다. === 장치 설정 === 마우스 장치 파일이 없을 경우 만들어주자. 배포판에 따라서는 /dev/input/mice 대신에 /dev/input 파일이 사용될 수도 있다. {{{ # cd /dev && MAKEDEV usb && MAKEDEV input }}} 다음과 같이 수동으로 할 수도 있다. {{{ # mkdir /dev/input # mknod /dev/input/mice c 13 63 # mknod /dev/input/mouse0 c 13 32 }}} {{{ crw-rw---- 1 root root 13, 63 2004-01-01 09:31 mice crw-rw---- 1 root root 13, 32 2004-01-01 09:31 mouse0 crw-rw---- 1 root root 13, 33 2004-01-01 09:31 mouse1 crw-rw---- 1 root root 13, 34 2004-01-01 09:31 mouse2 crw-rw---- 1 root root 13, 35 2004-01-01 09:31 mouse3 }}} /dev/input/mice는 USB 마우스 전체를 대표하는 장치이고, /dev/input/mouse*는 USB 마우스 하나하나의 장치이다. 필요하다면 원하는 만큼 만들어주자. ==== 장치 시험 ==== 모듈 생성을 선택했다면 입력 장치(input), 마우스 장치(mousedev), USB 지원(usbcore), USB 호스트 컨트롤러, 마우스 드라이버(usbhid/hid/usbmouse) 등의 모듈을 modprobe로 올린다. 아래 모듈 예제 부분을 참고바람. (참고로 커널 2.6의 경우 input 모듈이 생기지 않을 수도 있다.) root로 콘솔에서 "cat /dev/input/mice"를 실행한 후 마우스를 움직였을 때 콘솔 화면에 내용이 나타나면 성공이다. 확인이 끝나면 Ctrl-C를 누른다. 혹시 화면이 깨진다면 침착하게 "setterm -reset" 또는 "setterm -initialize"를 실행한다. === 프로그램 설정 === ==== X 설정 ==== {{{#!vim xf86conf Section "InputDevice" Identifier "USB Mice" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" Option "Buttons" "5" EndSection }}} [XFree86] 4.x등의 경우 프로토콜은 IMPS/2로, 장치는 적절한 장치로 맞춘다. 버튼이 셋보다 많다면 !ZAxisMapping, Buttons를 적절히 수정하고 xmodmap을 활용한다. {{{#!vim xf86conf Section "ServerLayout" Identifier "XFree86 Configured" Screen "Screen0" InputDevice "Mouse0" "CorePointer" InputDevice "Mouse1" "SendCoreEvents" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "PS/2" Option "Device" "/dev/psaux" Option "Buttons" "5" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "Buttons" "5" Option "ZAxisMapping" "4 5" EndSection }}} PS/2 마우스와 USB 마우스를 동시에 사용할 경우 한쪽은 !CorePointer로, 다른 한쪽은 !SendCoreEvents로 잡는다. ==== 콘솔 설정 ==== {{{ # /usr/sbin/gpm -m /dev/input/mice -t imps2 }}} 프로토콜은 imps2로, 장치는 적절한 장치로 한다. {{{ # /usr/sbin/gpm -m /dev/input/mice -t imps2 -M -m /dev/psaux -t ps2 -R imps2 }}} 콘솔만 사용하고 PS/2 마우스와 USB 마우스를 함께 사용할 경우 위와 같이 해준다. DeleteMe 혹시 X에서도 마우스 설정을 두번 해주고 gpm에서도 -R을 켜주면 X에서 PS/2 마우스가 두배 빠르게 움직이지 않나요? == 모듈 예제 == === Full HID 설정 === Kernel 2.6 {{{ Module Size Used by uhci_hcd 32880 0 mousedev 10444 0 usbhid 32768 0 usbcore 114784 4 uhci_hcd,usbhid }}} Kernel 2.4 {{{ Module Size Used by Not tainted uhci 25884 0 (unused) mousedev 4308 0 hid 21988 0 (unused) usbcore 63756 1 [uhci hid] input 3648 0 [mousedev hid] }}} Kernel 2.2 {{{ Module Size Used by hid 11820 0 (unused) mousedev 3952 0 (unused) input 2908 0 [hid mousedev] usb-uhci 20040 0 (unused) usbcore 27908 0 [hid usb-uhci] }}} === HIDBP 설정 === Kernel 2.6 {{{ Module Size Used by usbmouse 5664 0 uhci_hcd 32880 0 mousedev 10444 0 usbcore 114784 4 usbmouse,uhci_hcd }}} Kernel 2.4 {{{ Module Size Used by Not tainted usbmouse 2264 0 (unused) uhci 25884 0 (unused) mousedev 4308 0 usbcore 63756 1 [usbmouse uhci] input 3648 0 [usbmouse mousedev] }}} Kernel 2.2 {{{ Module Size Used by mousedev 3952 0 (unused) usbmouse 1708 0 (unused) input 2908 0 [mousedev usbmouse] usb-uhci 20040 0 (unused) usbcore 27908 0 [usbmouse usb-uhci] }}} == 그래도 안되면 == KLDPBBS:34151#133667 = 참고 문헌 = [http://www.linux-usb.org/ The Linux USB Guide] DebianKorea:UseUSBmouseWithPS2mouse = Q and A = '''Q''' : mousedev 를 모듈로 넣으려면 menuconfig 에서 어떤 옵션을 선택해야 하나요?(커널은 2.6.7 입니다.) {{{ CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 }}} 처럼, 모듈이 아닌, 커널내에 들어가는 것 같은데. 저것을 임의로 m 으로 바꾸면 안되죠?(make menuconfig 에서는 못 찾겠습니다.) 이런것을 대조 해놓은 것은 없나요? (usbmouse 는 menuconfig 의 어느 항목 이런식으로 찾기 쉽게. ) '''A''' : 위의 섹션 1.2.2를 보시면 menuconfig에서 어떤 항목을 골라야 할지 대충 아실 수 있습니다. Full HID 로 시도를 했는데, HIDBP 로 바꾸어서 성공했습니다. mousedev 는 모듈이 아닌 커널 내로 들어가는 것 같습니다. 모듈로딩에서 빼고 시도했습니다. 모듈 예제 부분을 보시면 아시겠지만 mousedev를 모듈로 만드셔도 충분히 잘 돌아갈 수 있습니다. 예. 그부분이 mousedev 을 올리려면 실패를 해서요. CONFIG_INPUT_MOUSEDEV=y 이 m (모듈) 로는 안되더라구요.그냥커널안으로..다른버전,커널로 해봐야 겠습니다.(젠투에서 하는데, 안되는 것인지 못하는 것인지..^^) .config 파일을 임의로 편집하지 마시고, make menuconfig을 하셔서 정상적인 설정을 해주시기 바랍니다. 설정 항목 관련 help 내용을 읽어보시면 어떤 모듈 이름이 사용될지를 확인하실 수 있습니다. ---- CategoryTips