Jak skonfigurować Ubuntu, aby automatycznie włączał NumLock, gdy podłączona jest zewnętrzna klawiatura, i wyłącza się, gdy nie jest?


12

Włączenie NumLock jest wygodne, gdy używasz pełnowymiarowej klawiatury zewnętrznej (posiadającej klawiaturę) i bardzo niewygodne, gdy używasz wbudowanej klawiatury laptopa (która umieszcza cyfry zamiast liter na prawej stronie klawiatury, chyba że zostanie naciśnięty Fn).

Więc muszę włączać NumLock za każdym razem, gdy podłączam zewnętrzną klawiaturę (lub uruchamiam z podłączoną) i wyłączam za każdym razem, gdy odłączam zewnętrzną klawiaturę (lub uruchamiam z odłączoną klawiaturą). Robię to często, ponieważ wolę korzystać z pełnowymiarowej klawiatury zewnętrznej, ale nie mam wystarczającej liczby (tylko 3) portów USB, aby ją podłączyć wraz z myszą, modemem 3G i zewnętrznym dyskiem twardym / flash.

Czy mogę to zautomatyzować? Wydaje się to bardzo formalnym, logicznie prostym zadaniem: jeśli jest podłączona klawiatura USB (jakieś urządzenie w / dev jest obecne?) - NumLock jest włączony, jeśli nie - NumLock jest wyłączony. Wbudowana klawiatura mojego laptopa jest podłączona do PS / 2, zewnętrzna to USB.

Może powinienem sam to zakodować, ale gdzie w tym przypadku umieścić?

Używam Ubuntu 10.10.

Odpowiedzi:


14

Po pierwsze, zainstaluj numlockx ( kliknij tutaj, aby zainstalować numlockx ). Zasadniczo ten pozwala na pisanie skryptów, aby ustawić stan Num Lock - patrz strona podręcznika numlockx szczegóły.

Następnie musimy zacząć zagłębiać się w zabawę z regułami udev. Najpierw musimy dowiedzieć się, jak identyfikowana jest klawiatura. Możesz to zrobić przez

ls /dev/input/by-id/

To powinno dać ci nazwy plików czytelne dla człowieka (które są miękkimi linkami do niezbyt czytelnej prawdziwej nazwy). Moja klawiatura była

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

Musimy więc znaleźć wszystkie informacje na temat klawiatury. Zrobiłem

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

Ale oczywiście wstaw tam własną ścieżkę. Otrzymasz wiele informacji, ale chcesz spojrzeć na pierwszy blok, który nazywa klawiaturę i ma SUBSYSTEMS=="usb". (Zamiast kontrolera USB lub cokolwiek innego). W moim przypadku było to:

  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"

Mamy teraz wystarczającą ilość informacji, aby napisać kilka zasad. Użyj swojego ulubionego edytora, aby utworzyć /etc/udev/rules.d/10-local.rulesi wprowadzić:

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"

Ponownie wpisz tutaj nazwę swojej klawiatury i ATTRS, jeśli jest inna. To powinno działać :)

Uwaga: Nie byłem w stanie tego przetestować, chociaż uruchomiłem wszystkie polecenia aż do utworzenia pliku reguł. Źródła na wypadek, gdybyś musiał przeprowadzić dodatkowe dochodzenie, to:


Wielkie dzięki, doskonale. Szczerze mówiąc, nie spodziewałem się, że otrzymam odpowiedź na takie informacje. Chciałbym móc przyznać więcej niż tylko poprawne i +1. Mam nadzieję, że wszyscy ci, którzy wystąpili i głosowali na moje pytanie, również cię nagrodzą.
Ivan


0

Nie jestem pewien, co robię inaczej, ponieważ mój numlock na tej klawiaturze domyślnie jest włączony (To jest klawiatura Mac Pro Aluminium). Jest tu kilka instrukcji, które powinny załatwić sprawę.

Mam nadzieję że to pomoże!


0

Jeśli używasz gnome-shell, możesz zainstalować Numlock i Capslock na rozszerzeniu panelu „Blokuj klawisze”. Proszę, znalazłem to tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.