Rozwiązanie za pomocą halevt
Według stron halevt
podręcznika jest to ogólna procedura obsługi zdarzeń HAL. Jest przestarzałe i zastąpione przez udev
, ale ponieważ nie wiem wystarczająco dużo o udev
, dam halevt
rozwiązanie.
EDYCJA: po poważnym pocie udało mi się to zrobić udev
. Zobacz moją drugą odpowiedź .
Użyję vim
do edycji plików, ale jeśli nie wiesz vim
, możesz go zastąpić przez nano
lub gedit
.
Instalowanie halevt
sudo apt-get update && sudo apt-get install halevt
Określanie, które zdarzenia chcesz powiązać ze skryptem
Zatrzymaj halevt
działającego już demona:
sudo /etc/init.d/halevt stop
Teraz sprawdź, czy halevt
rozpoznaje zdarzenia klawiszy, których chcesz użyć, uruchom detektor:
sudo -u halevt halevt -fig:plugdev
Teraz naciśnij klawisz funkcyjny na klawiaturze, z którą chcesz powiązać skrypt. Wiem, że OP chce uruchomić swoje klawisze jasności, więc idźmy z tym. Dane wyjściowe dla klawiszy jasności powinny wyglądać mniej więcej tak:
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)
Widać, że zdarzenia brightness-down
i brightness-up
są transmitowane.
Powiąż wydarzenie ze skryptem
Teraz edytuj plik /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
i dodaj następujące linie (zrobiłem to na dole, tuż przed </halevt:Configuration>
):
<halevt:Device match="hal.info.category = input">
<halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>
<halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>
</halevt:Device>
gdzie oczywiście powinieneś zmienić value
na wydarzenie, które otrzymałeś od nasłuchującego, i exec
poleceniem, które chcesz wykonać.
Zezwól użytkownikowi halevt na wykonanie polecenia lub skryptu
Ponieważ halevt
demon jest uruchamiany jako halevt
użytkownik, musisz dać mu uprawnienia do robienia tego, co podałeś exec
.
Uruchom (pamiętaj, aby zastąpić vim
wybranym edytorem)
sudo EDITOR=vim visudo
i dodaj następujące linie na dole
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
i zapisz i wyjdź.
Upewnij się, że skrypt jest wykonywalny
sudo chmod +x /home/user/brightness-script.sh
Uruchom ponownie demona halevt
sudo /etc/init.d/halevt start
I powinno działać!
udev
. Ale nie wahaj się trzymać innego rozwiązania, ważne jest to, że działa;)E: Unable to locate package halevt
14.04.Rozwiązanie za pomocą udev
Ponieważ HAL jest przestarzałe i
udev
jest teraz używane, takie podejście jest lepsze niż moja inna odpowiedź (chociaż myślę, że rozwiązanie wykorzystujące HAL jest prostsze).Jednak w przypadku wielu klawiszy funkcyjnych możesz po prostu użyć Ustawienia systemowe> Klawiatura> Skróty, aby powiązać skrypt, wypróbuj to najpierw! Oszczędza ci to wielu kłopotów. Na przykład klawisze jasności to nie działa (nie mam pojęcia, dlaczego nie), więc jeśli chcesz wiedzieć, jak zmienić zachowanie np. Klawiszy jasności, czytaj dalej.
UWAGA : Jeśli korzystasz z notebooka Samsung, możesz naprawić wszystkie (w zależności od modelu) klawisze funkcyjne, instalując
samsung-tools
pakiet ze strony http://www.voria.org/forum/To howto zakłada, że wiesz, jak korzystać z terminala i używa
vim
edytora. Jeśli nie wiesz,vim
zastąp go w poleceniach jednymgedit
lubnano
.Określanie klawiatury
powinien wydrukować klawiatury podłączone do komputera, w moim przypadku
Teraz są dwie opcje:
Klawiatury USB :
jeśli chcesz ponownie przypisać klawiaturę USB, sprawdź je, uruchamiając
gdzie musisz zastąpić 9 w instrukcji awk prawidłową liczbą. Dane wyjściowe powinny być podobne do
co poprawnie wskazuje, że moja klawiatura jest obsługiwana przez mój odbiornik Logitech USB (wejście / event7 okazało się moją myszką Logitech G9, która ma kilka programowalnych przycisków).
Klawiatura laptopa :
jeśli chcesz ponownie mapować klawiaturę laptopa, powinieneś zapamiętać liczbę,
AT keyboard
która w moim przypadku wynosi 4. Uzyskaj także informacje o dmi dla swojego laptopa:co jest w moim przypadku
i
co jest w moim przypadku
Określ bieżące mapowanie klawiszy funkcyjnych
Teraz możemy ustalić nasze aktualne mapowanie klawiszy, słuchając klawiatury (wstaw prawidłową liczbę)
możesz wyjść z tego polecenia, używając Escna klawiaturze lub Ctrl+ cna innej klawiaturze.
Jeśli ekran zacznie się przesuwać w dół bardzo ciężko, naciśnij Esci Ctrl+ ckilka razy i spróbuj ponownie
lub jeśli nadal masz problem z przewijaniem
W ostatnim przypadku nadal będziesz mieć przewijanie, ale jeśli naciśniesz klawisze funkcyjne, powinny one przejść do
~/keymap.log
miejsca, w którym możesz je później przeczytać.Teraz możemy sprawdzić bieżące mapowanie klawiszy funkcyjnych, naciskając je, co powinno dać ci listę jak (to jest mój Fn+ F1do Fn+ F12):
Teraz zapisz kody skanowania, dla których chcesz zmienić zachowanie.
Zmiana kodów kluczowych dla kodów skanowania
Jeśli widzisz, że kod klucza wyraźnie nie obejmuje tego, czego oczekujesz od klucza, możesz zajrzeć
/usr/include/linux/input.h
pod Klucze i przyciski, aby sprawdzić, czy istnieje kod klucza, który lepiej pasuje do tego, co naprawdę chcesz się wydarzyć. Kluczowe kody są w formacieKEY_KEYCODE
i musisz zapisać część późniejKEY_
małymi literami. Czasami zmiana tego wystarczy, aby rozwiązać problem.Jednak klawisze jasności często są powiązane z odpowiednim kodem klucza, a to nie pozwala na ich ponowne mapowanie. Musimy więc zmienić je na inne kody. Będziemy wykorzystywać
prog1
iprog2
na tym przykładzie, ponieważ nie są w użyciu na moim komputerze, jednak można również używaćf13
przezf24
lubf20
za pośrednictwemf24
jeśli masz klawiaturę firmy Apple, który ma F1za F19klucze.Utwórz niestandardową mapę klawiszy :
Utwórz plik mapy klawiszy w katalogu
/lib/udev/keymaps
o odpowiedniej nazwie, zajrzyj do wyjścia,ls /lib/udev/keymaps
aby zobaczyć odpowiednie nazwy. Idę zcustom-brightness
celem tego pytania.i wprowadź kody skanowania kluczy, które chcesz zmienić, a następnie skancody, które chcesz mieć. Mój
custom-brightness
wygląda tak:Utwórz niestandardowy plik wydania klucza. Tylko jeśli zmieniasz klawiaturę laptopa :
czasami zdarzenie zwolnienia klawisza nie jest poprawnie wysyłane, co powoduje zawieszenie się komputera. Aby tego uniknąć, napiszemy również niestandardowy plik wydania klucza
ten plik powinien zawierać te same kody skanowania, mój wygląda
Upewnij się, że nowe mapowania zostały załadowane w plikach reguł
Teraz musimy upewnić się, że twoje mapowania są załadowane. Możemy to zrobić, edytując
/lib/udev/rules.d/95-keymap.rules
, więc mądrze jest wykonać kopię zapasowąPonownie mamy dwie opcje:
Klawiatury USB :
Ponieważ masz klawiaturę USB, powinieneś dodać swój wpis pod,
LABEL="keyboard_usbcheck"
a powinien on znajdować się poza pozostałymi wpisami producenta klawiatury. To dlatego, że moja klawiatura zjest już zgodny z jedną z reguł, w przeciwnym razie zostanie zastąpiony.
Dodaj następującą regułę, w której należy odpowiednio zmienić
ID_VENDOR_ID
iID_MODEL_ID
oraz nazwę mapy klawiszyKlawiatura laptopa :
jeśli
/lib/udev/findkeyboards
zgłoszono, że klawiatura laptopa jest zgodnaAT keyboard
z regułąLABEL="keyboard_vendorcheck"
, w przeciwnym razie połóż jąLABEL="keyboard_modulecheck"
. Ponownie umieść go pod innymi wpisami dotyczącymi producenta laptopa. Dodaj następującą regułę (SAMSUNG ELECTRONICS CO., LTD.
jest trochę długa, więc użyłem symbolu wieloznacznego)Teraz dodaj także regułę
/lib/udev/rules.d/95-keyboard-force-release.rules
po utworzeniu kopii zapasowejPonownie pod innymi wpisami twojego producenta dodaj
Upewnij się, że udev ładuje nowe reguły
Aby załadować nowe reguły, uruchom
UWAGA:
udevadm control --reload-rules
(nadal w instrukcjach na wielu stronach internetowych) nie działa.Teraz sprawdź, czy reguły zostały pomyślnie zastosowane przez
które powinny teraz zgłaszać klucze jasności
Ponownie przypisz klucze w Ustawieniach systemu
Jeśli w ostatnim kroku zgłoszono prawidłowe kody kluczy, albo klucze zaczną działać automatycznie (w przypadku, gdy najpierw miały nieprawidłowe kody kluczy).
Aby uzyskać jasność, nadal musisz powiązać klawisze ze skrawkiem, co jest teraz możliwe przy użyciu Ustawienia systemu> Klawiatura> Skróty .
Cieszyć się
Uwagi :
Jeśli twoje klucze miały niewłaściwy kod klucza i zostały naprawione dzięki temu podejściu, postępuj zgodnie z instrukcjami w
/usr/share/doc/udev/README.keymap.txt.gz
(możesz to otworzyć bez rozpakowywania za pomocązless
) i wyślij swoje wyniki podany tam adres e-mail, wówczas zmiany mogą zostać uwzględnione w następnej wersji. Wielu użytkowników skorzysta!Ogromne podziękowania za ten pomocny post Vaidasa Jablonskisa.
źródło
$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory
także$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory