답변:
/etc/udev/rules.d/98-ms-ergo.rules
다음 내용으로 파일 을 작성하십시오 .
ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"
SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"
GOTO="keyboard_end"
설치된 파일을 변경하지 않고 확대 / 축소 키를 페이지 업 / 페이지 다운에 매핑합니다 /lib/udev
.
추가 한 후에는 키보드를 분리했다가 다시 연결하면 작동합니다.
evtest
Ergonomic 7000 키보드의 다른 대부분의 키와 달리 줌 슬라이더가 이벤트를 트리거하지 않는다는 사실과 관련 이 있습니다. evtest
Ubuntu 가 선택 하더라도 웹 / 홈 버튼에는 출력이 표시되지 않으므로 확실하지 않습니다 .
xev
.
xev
은 나 에게도 효과 가 없습니다. 무엇입니까 evtest /dev/input/event3
. 만약이 event3
다른 이벤트와 어떤이 키에 대한 반응 검사를하지 않습니다 ( event[0..9]
).
Xubuntu 13.10 (아마도 Ubuntu 13.10에서도)은 다음과 같이 수행 할 수 있습니다.
편집 키 매핑에 /lib/udev/hwdb.d/60-keyboard.hwdb
:
###########################################################
# Microsoft
###########################################################
# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
KEYBOARD_KEY_c022d=pageup
KEYBOARD_KEY_c022e=pagedown
운영
sudo udevadm hwdb --update
재부팅하십시오.
katakana
및 katakanahiragana
(또는 hal.freedesktop.org/quirk/quirk-keymap-list.txt 에서 사용되지 않은 다른 키 코드 )에 매핑 할 수 있습니다 . 이 방법으로 키를 인식하고 수정 자와 함께 사용하여 볼륨, 언어, 크기 등을 토글 할 수 있습니다 (두 개의 새로운 슈퍼 키를 즐기도록 창 관리자 구성).
구성하기 위해 마이크로 소프트 인체 공학 키보드 4000을 우리는 키보드 선언과 키를 매핑에 대한 기록을 포함하는 구성 파일을 생성해야합니다.
이를 위해서는 다음 세 가지 유형의 정보가 필요합니다.
scancode
키보드의 실제 키입니다name
선택된 키에 원하는 기능을 할당먼저 키보드 유형을 찾으십시오.
터미널에서 다음 명령을 실행하십시오.
lsusb
출력에 따라 키보드 유형이 결정됩니다.
...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...
다음에 나타납니다 ID
. 이 경우045e:00db
두 번째로 스캔 코드와 키 이름을 찾으십시오.
이를 확인하기 위해 evtest
터미널에서 특정 장치의 이벤트 정보를 로그 아웃하는 프로그램을 사용합니다 .
evtest
프로그램이없는 경우 다음 명령을 실행하여 설치하십시오.
sudo apt-get install evtest
evtest
프로그램 을 실행하면 다음과 같은 결과가 나타납니다.
No device specified, trying to scan all of /dev/input/event* Available devices:
/dev/input/event0: Power Button
/dev/input/event1: Power Button
/dev/input/event2: PixArt USB Optical Mouse
/dev/input/event3: Microsoft Natural® Ergonomic Keyboard 4000
/dev/input/event4: Microsoft Natural® Ergonomic Keyboard 4000
/dev/input/event5: HDA Intel Front Headphone
/dev/input/event6: HDA Intel Line Out
/dev/input/event7: HDA Intel Line
/dev/input/event8: HDA Intel Rear Mic
/dev/input/event9: HDA Intel Front Mic
/dev/input/event10: HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:
출력은 설명이 필요 없으며 키보드에 적절한 숫자를 3
입력하십시오.
그렇게하면 터미널에 많은 정보가 출력되고 다음 줄로 끝납니다.
...
Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------
이제 키보드를 누를 때마다 키 정보가 덤프됩니다. 예를 들어 오른쪽 이동 옆에 있는 슬래시 키는 다음을 보여줍니다.
Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------
로그의 첫 번째 줄에는 키보드 의 실제 키 에 대한 정보 ( 예 : scancode
값 뒤에 오는 키) 가 포함됩니다. 이 경우 70038입니다
두 번째 줄에는 키 이름과 같은 할당 된 기능 정보가 있습니다. 이 경우 SLASH 입니다. 다른 키를 검사하여 적절한 이름을 찾으십시오.
간단히 말해 :
필요한 정보를 수집 한 후 구성 파일을 만듭니다.
sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb
히트 i
활성화하기 위해 삽입 모드를 하고 다음을 입력합니다 :
keyboard:usb:v045Ep00DB*
KEYBOARD_KEY_70038=minus
을 누르고 저장 escape
한 다음 Enter 키 를 눌러 저장하고 종료 :wq
하십시오.
그런 다음 구성을 적용하려면 다음 두 명령을 실행하십시오.
sudo udevadm hwdb --update
sudo udevadm control --reload
마지막으로 키보드를 분리했다가 다시 연결하십시오.
구성 파일에 대한 참고 사항 :
sudoedit
다른 텍스트 편집기를 사용하는 대신 위에 설명한대로 파일의 정확한 형식을 따라야합니다.v
및 p
공급 업체 및 제품에 서있다. 그들은 또한 중요하다.KEYBOARD_KEY_
문제 이다 > evdev 운전자가 키 코드를 무시한다 (255) . Marco Chiappero
덕분에 솔루션 :
1) 필요한 모든 리 맵핑을 정의해야합니다 ( "scancode keycode"list) 파일을 "/ lib / udev / keymaps /"아래의 파일에 저장하십시오 (예를 들어 logitech-lx710-cordless를 만들었습니다). 당신은 찾을 수 있습니다 evtest를 사용하여 스캔 코드 ( "sudo evtest / dev / input / eventX", 여기서 X는 키보드 장치. 때때로 이러한 추가 키가 노출 될 수 있으므로주의하십시오 다른 장치 또는 마우스 인터페이스 : 예. event3-> kbd, event4-> 마우스 및 추가 키). 다음은 샘플 출력입니다. 이벤트 : 시간 1294153475.909379, 유형 4 (기타), 코드 4 (ScanCode), 값 c1028 "c1028"은 키맵 파일에 넣을 스캔 코드 값입니다. 앞에서 설명한대로 input.h에서 숫자를 가져 와서 16 진수. 그런 다음 파일에 다시 매핑 쌍을 작성하십시오. 다음과 같이 의견 : 0xC1028 0x9a # 회전 버튼 255보다 큰 모든 키에 대해 반복하십시오. 2) udev에게이 리매핑 파일이 발생할 때마다 적용하도록 지시해야합니다. 키보드에서 "/lib/udev/rules.d/95-keymap.rules"파일을 추가하여 편집하십시오. HW와 일치하는 udev 규칙. 규칙을 정의하도록 요청하지 마십시오. 당신. 참고 : 직접 입력하여 키맵 파일을 즉시 적용 할 수 있습니다 "sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE"및 다시 한번 evtest로 확인하십시오. 이제 Gnome 단축키 편집기를 사용하여 키가 X 안에서 사용할 수 있고 새로운 단축키를 만듭니다. 그러나 그것은 일어날 수 있습니다 keysym이 해당 키 코드에 할당되므로 XF86Foo 대신 0xXY가 표시됩니다. xmodmap -pke를 통해 현재 매핑을 볼 수 있습니다. 필요한 경우 파일을 작성하고 편집하십시오 (전체 키심 코드 목록은 "/ usr / lib / X11 / XKeysymDB"). 다시 매핑 한 키에 키 심을 추가하면이 파일을 저장할 수 있습니다 ~ / .Xmodmap으로 (또는 모든 사용자에게 적용하려면 / etc / X11 / Xmodmap으로)
/lib/udev/rules.d/95-keymap.rules
. (런치 패드에있을 수 있습니다. 동일한 하드웨어를 가진 사람들을 찾을 수 있으므로 bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 를 더 잘 도울 수 있습니다 ). 위에서 언급 한 파일을 편집 했습니까?