외부 키보드가 연결되어있을 때 NumLock을 자동으로 켜고 끄지 않도록 Ubuntu를 설정하는 방법은 무엇입니까?


12

NumLock을 켜면 전체 크기의 외부 키보드 (키패드 사용)를 사용할 때 편리하고 랩톱의 내장 키보드를 사용할 때 매우 불편합니다 (Fn을 누르지 않으면 키보드의 오른쪽 문자에 문자 대신 숫자를 배치 함).

따라서 외부 키보드를 연결할 때마다 (또는 연결된 키보드로 부팅 할 때마다) NumLock을 켜고 외부 키보드를 분리 할 때마다 (또는 키보드를 분리 한 상태에서 부팅 할 때마다) NumLock을 켜야합니다. 풀 사이즈의 외장 키보드를 선호하지만 마우스, 3G 모뎀 및 외장 하드 / 플래시 드라이브와 함께 연결할 USB 포트가 충분하지 않기 때문에이 작업을 자주 수행합니다.

이것을 자동화 할 수 있습니까? 매우 공식적이고 논리적으로 간단한 작업 인 것 같습니다. USB 키보드가 연결되어있는 경우 (/ dev에 일부 장치가 있습니까?)-NumLock이 켜져 있고 그렇지 않은 경우-NumLock이 꺼져 있습니다. 내 노트북의 내장 키보드는 PS / 2 연결 방식이며 외부는 USB입니다.

어쩌면 내가 직접 코딩해야하지만이 경우 어디에 배치해야합니까?

우분투 10.10을 사용합니다.

답변:


14

먼저 numlockx 를 설치하십시오 ( numlockx를 설치하려면 여기를 클릭하십시오 ). 기본적으로 Num Lock 상태를 설정하는 스크립트를 작성할 수 있습니다 . 자세한 내용은 numlockx 매뉴얼 페이지 를 참조하십시오.

다음으로 udev 규칙의 재미를 탐구해야합니다. 먼저 키보드 식별 방법을 찾아야합니다. 당신은 이것을 할 수 있습니다

ls /dev/input/by-id/

이렇게하면 사람이 읽을 수있는 파일 이름 (특히 읽을 수없는 실제 이름에 대한 소프트 링크)이 제공됩니다. 내 키보드는

/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd

키보드에 대한 모든 정보를 찾아야합니다. 내가 했어

udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)

그러나 물론 자신의 경로를 삽입하십시오. 많은 정보를 얻을 수 있지만 키보드의 이름을 가진 첫 번째 블록을 보려고합니다 SUBSYSTEMS=="usb". (USB 컨트롤러 등이 아닌). 제 경우에는 다음과 같습니다.

  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
    KERNELS=="3-2.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="a0"
    ATTRS{bMaxPower}==" 50mA"
    ATTRS{urbnum}=="6284"
    ATTRS{idVendor}=="058f"
    ATTRS{idProduct}=="9410"
    ATTRS{bcdDevice}=="0122"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{speed}=="1.5"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2.3"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
    ATTRS{product}=="KB700 Kinesis Freestyle"

이제 규칙을 작성하기에 충분한 정보가 있습니다. 좋아하는 편집기를 사용하여 다음을 작성하십시오 /etc/udev/rules.d/10-local.rules.

BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"

다시 한 번 키보드 이름을 여기에 입력하고 다른 경우 ATTRS를 입력하십시오. 그런 다음 작동해야합니다 :)

참고 rules 파일을 만들 때까지 모든 명령을 실행했지만이 테스트를 수행 할 수 없었습니다. 추가 조사가 필요한 경우의 출처는 다음과 같습니다.


대단히 감사합니다. 솔직히 말해서, 나는 그러한 정보에 가까운 대답을 기대하지 않았습니다. 정확하고 +1하는 것 이상을 수여하기를 바랍니다. 내 질문에 출연하고 투표 한 모든 사람들이 당신에게 상을 수 있기를 바랍니다.
Ivan


0

이 키보드의 numlock이 기본적으로 켜져 있기 때문에 다르게 작동하는 것이 확실하지 않습니다 (Mac Pro 알루미늄 키보드 임). 트릭을 수행 해야하는 몇 가지 지침이 있습니다 .

도움이 되었기를 바랍니다!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.