udev를 사용한 솔루션
HAL은 더 이상 사용되지 않으며 udev
현재 사용 되기 때문에이 접근법은 다른 대답 보다 선호됩니다 (HAL을 사용하는 솔루션이 더 간단하다고 생각하지만).
그러나 많은 기능 키의 경우 시스템 설정> 키보드> 바로 가기 를 사용하여 스크립트를 바인딩하면됩니다. 많은 문제를 해결합니다. 예를 들어 밝기 키가 작동하지 않습니다 (왜 그런지 모르겠습니다). 예를 들어 밝기 키의 동작을 변경하는 방법을 알고 싶다면 계속 읽으십시오.
참고 : Samsung 노트북을 사용하는 경우 http://www.voria.org/forum/ 에서 samsung-tools
패키지를 설치하여 모델에 따라 모든 기능 키를 수정할 수 있습니다 .
이 하우투에서는 터미널 사용법을 알고 있다고 가정하고 vim
편집기를 사용합니다 . 모르는 경우 vim
명령에서 gedit
또는로 대체하십시오 nano
.
키보드 결정
/lib/udev/findkeyboards
제 경우에는 컴퓨터에 연결된 키보드를 인쇄해야합니다
USB keyboard: input/event9
USB keyboard: input/event7
AT keyboard: input/event4
이제 두 가지 옵션이 있습니다.
USB 키보드 : USB 키보드
를 다시 매핑하려면 다음을 실행하여 검사하십시오.
udevadm info --export-db | awk '/event9/' RS="" | grep -P 'ID_(VENDOR|MODEL)(?!_ENC)'
awk 문의 9를 올바른 숫자로 바꿔야합니다. 출력은 다음과 유사해야합니다
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
이것은 내 키보드가 내 Logitech USB 수신기 (입력 / 이벤트 7이 프로그래밍 가능한 버튼이있는 Logitech G9 마우스로 밝혀 짐)를 통해 처리되었음을 나타냅니다.
랩톱 키보드 : 랩톱 키보드
를 다시 매핑하려면 AT keyboard
내 경우 4 의 숫자를 기억해야합니다 . 랩탑의 dmi 정보도 얻으십시오.
cat /sys/class/dmi/id/sys_vendor
내 경우에는
SAMSUNG ELECTRONICS CO., LTD.
과
cat /sys/class/dmi/id/product_name
내 경우에는
305U1A
기능 키의 현재 매핑 결정
이제 키보드를 들으면서 현재 키매핑을 결정할 수 있습니다 (올바른 숫자 삽입)
sudo /lib/udev/keymap -i input/event4
Esc키보드 또는 다른 키보드에서 Ctrl+ c를 사용하여이 명령을 종료 할 수 있습니다 .
화면이 매우 아래로 스크롤되기 시작하면 Esc및 Ctrl+ c를 몇 번 누르고
sudo /lib/udev/keymap -i input/event4 2> /dev/null
또는 여전히 스크롤 문제가있는 경우
sudo /lib/udev/keymap -i input/event4 > ~/keymap.log
마지막 경우에는 여전히 스크롤이 있지만 기능 키를 누르면 ~/keymap.log
나중에 읽을 수있는 위치 로 이동해야 합니다.
이제 우리는 당신에게 같은 목록을 제공해야하는 그들를 눌러 기능 키의 현재 매핑을 확인할 수 있습니다 (이것은 내입니다 Fn+ F1를 통해 Fn+이 F12) :
scan code: 0xCE key code: kpplusminus
scan code: 0x89 key code: brightnessdown
scan code: 0x88 key code: brightnessup
scan code: 0x82 key code: switchvideomode
scan code: 0xF9 key code: f23
scan code: 0xA0 key code: mute
scan code: 0xAE key code: volumedown
scan code: 0xB0 key code: volumeup
scan code: 0x43 key code: f9
scan code: 0x44 key code: f10
scan code: 0xB3 key code: prog3
scan code: 0x86 key code: wlan
이제 동작을 변경하려는 스캔 코드를 기록해 두십시오.
스캔 코드의 키 코드 변경
키 코드가 키의 예상 사항을 명확하게 다루지 않는 경우 키와 버튼/usr/include/linux/input.h
아래 에서 실제로 원하는 것과 더 일치하는 키 코드가 있는지 확인할 수 있습니다. 키 코드는 형식으로 되어 있으며 소문자로 표시 한 후 부분을 작성해야합니다 . 때때로 이것을 변경하면 문제를 해결하기에 충분합니다.KEY_KEYCODE
KEY_
그러나 밝기 키에는 종종 올바른 키 코드가 연결되어 있으며이 키를 다시 매핑 할 수 없습니다. 따라서 다른 키 코드로 변경해야합니다. 우리는 사용 prog1
하고 prog2
이 내 컴퓨터에서 사용하지 않기 때문에 그러나 당신은 또한 사용할 수 있습니다,이 예제 f13
를 통해 f24
, 또는 f20
를 통해 f24
당신이 애플 키보드가있는 경우 F1를 통해 F19키를.
사용자 정의 키맵
작성 : 디렉토리 /lib/udev/keymaps
에 적절한 이름 으로 키맵 파일을 작성 하고 출력 ls /lib/udev/keymaps
을보고 적절한 이름을 찾으십시오 . 나는 custom-brightness
이 질문의 목적으로 가고 있습니다.
sudo vim /lib/udev/keymaps/custom-brightness
변경하려는 키의 스캔 코드와 원하는 스캔 코드를 입력하십시오. 내 custom-brightness
모습은 다음과 같습니다.
# /lib/udev/keymaps/custom-brightness
0x89 prog1
0x88 prog2
사용자 정의 키 릴리스 파일을 작성하십시오. 랩톱 키보드를 변경 한 경우에만 :
때때로 키 릴리스 이벤트가 제대로 전송되지 않아 컴퓨터가 중단됩니다. 이를 피하기 위해 사용자 정의 키 릴리스 파일도 작성합니다.
sudo vim /lib/udev/keymaps/force-release/custom-brightness
이 파일은 동일한 스캔 코드를 포함해야합니다.
# /lib/udev/keymaps/force-release/custom-brightness
0x89
0x88
새 매핑이 규칙 파일에로드
되었는지 확인 이제 매핑이로드되었는지 확인해야합니다. 편집하여이 작업을 수행 할 수 /lib/udev/rules.d/95-keymap.rules
있으므로 백업하는 것이 현명합니다.
다시 두 가지 옵션이 있습니다.
USB 키보드 : USB 키보드가
있으므로 아래에 항목을 추가 LABEL="keyboard_usbcheck"
해야하며 키보드 제조업체의 다른 항목이 있어야합니다. 내 키보드가
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
이미 규칙 중 하나와 일치하고 그렇지 않으면 덮어 씁니다.
당신은을 변경해야합니다 다음과 같은 규칙을 추가 ID_VENDOR_ID
하고 ID_MODEL_ID
및 appropiately 당신의 키 맵의 이름을
ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c52b", RUN+="keymap $name custom-brightness"
랩탑 키보드 : 규칙에 따라 랩탑 키보드를보고 한
경우 , 그렇지 않은 경우 /lib/udev/findkeyboards
키보드를 AT keyboard
놓습니다 . 다시 랩톱 제조업체의 다른 항목 아래에 넣으십시오. 다음 규칙을 추가하십시오 ( 약간 길어서 와일드 카드를 사용했습니다).LABEL="keyboard_vendorcheck"
LABEL="keyboard_modulecheck"
SAMSUNG ELECTRONICS CO., LTD.
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keymap $name custom_brightness"
이제 /lib/udev/rules.d/95-keyboard-force-release.rules
백업 후 규칙을 추가 하십시오.
sudo cp /lib/udev/rules.d/95-keyboard-force-release.rules /lib/udev/rules.d/95-keyboard-force-release.rules.bak
sudo vim /lib/udev/rules.d/95-keyboard-force-release.rules
제조업체의 다른 항목에 다시 추가하십시오.
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keyboard-force-release.sh $devpath custom_test"
udev가 새 규칙
을로드 하는지 확인 새 규칙 을로드하려면 다음을 실행하십시오.
sudo adevadm trigger
참고 : udevadm control --reload-rules
(여전히 많은 웹 사이트에서 지침을 따르십시오) 작동하지 않습니다.
이제 규칙이 성공적으로 적용되었는지 확인하십시오.
sudo /lib/udev/keymap -i input/event4
이제 밝기 키를보고해야합니다.
scan code: 0x89 key code: prog1
scan code: 0x88 key code: prog2
시스템 설정에서 키 다시 매핑
마지막 단계에서 올바른 키 코드가보고되면 키가 자동으로 작동하기 시작합니다 (처음 키 코드가 잘못된 경우).
밝기를 유지하려면 시스템 설정> 키보드> 바로 가기를 사용하여 키를 스크립에 바인딩해야합니다 .
즐겨
참고 사항 :
키에 잘못된 키 코드가 있고이 방법으로 수정 된 경우의 지침을 따르고 /usr/share/doc/udev/README.keymap.txt.gz
(를 사용하여 추출하지 않고 열 수 있음 zless
) 결과를 이메일 주소로 보내면 다음 릴리스에 변경 사항이 포함될 수 있습니다. 많은 사용자들이 혜택을받을 것입니다!
Vaidas Jablonskis 의이 유용한 게시물에 감사드립니다 .