Próbuję ponownie użyć bezużytecznego klawisza Caps Lock do czegoś przydatnego na 16.04 MATE. Natknąłem się
setxkbmap -option ctrl:nocaps
aby go wyłączyć, ale czy można go ponownie mapować, aby na przykład odtwarzać / wstrzymywać VLC? Dzięki za odpowiedzi!
vlc --key-play-pause <key-string>
, ale nie znalazłem łańcucha, który VLC akceptuje jako capslock ...dconf-editor
wypróbowałem kilka rzeczy, zainstalowałemxdotool
wypróbowałem kilka rzeczy, a na koniecxbindkeys
wypróbowałem kilka rzeczy. Pod koniec tego bezowocnego ćwiczenia mój przycisk pauzy / odtwarzania na klawiaturze został zepsuty, a mój własny przycisk odtwarzania / pauzy na ekranie był wyszarzony i muzyka nie grała. Zrobiłem to w 16.04, więc zrestartowałem w 18.04, aby potwierdzić, że wszystko nadal działa i zrobiły to włamania do oprogramowania. Jedyną zaletą jest to, że odtwarzam muzykę tylko na telefonie z Androidem, a nie na komputerze. Tylko jedna głowa do góry, aby inni byli ostrożni i dokumentowali, co robisz na swoim komputerze lepiej niż ja.Odpowiedzi:
evtest i dbus
Oto wersja z małym skryptem działającym w tle. Należy podjąć kilka łatwych kroków:
Zainstalować evtest programu:
sudo apt install evtest
. Ten program jest w stanie dekodować i drukować nieprzetworzone zdarzenia z/dev/input/
hierarchii urządzeń.Dodaj swoje konto użytkownika do grupy
input
. Wyloguj się i zaloguj ponownie. (Jest to konieczne, ponieważ będziemy czytać z jakiegoś urządzenia poniżej/dev/input/
, co normalnie może zrobić tylko root lub użytkownicy w grupieinput
. Możemy uruchomić skrypt jako root, ale wtedy musimy znaleźć sposób, aby powiedzieć mu, który użytkownik instancja dbus, z którą musi porozmawiać.)Wyłącz klawisz Capslock tak jak ty lub użyj odpowiedniej preferencji Mate. Działa to również, jeśli mapujesz klawisz Capslock na ctrl, jak robi to wiele osób.
Zapisz gdzieś następujący skrypt, np.
$HOME/bin/capshack
I uruchom go:Powyższy skrypt nasłuchuje zdarzeń na klawiaturze i wykona polecenie po naciśnięciu klawisza Capslock. Uruchamiane polecenie używa dbus do wysłania zdarzenia play / pause do działającej instancji VLC. Być może trzeba będzie zmodyfikować
KEYBOARD
zmienną, aby wskazywała rzeczywistą klawiaturę, ale prawdopodobnie powyższa wartość zadziała.Jeśli wolisz wywoływać funkcję toggleVLC () po zwolnieniu klawisza Capslock, możesz zmienić
EVENT
zmienną w skrypcie tak, aby kończyła się navalue 0
zamiastvalue 1
.Możliwe też, że dla ciebie kod klawisza Capslock różni się od 58. Możesz to sprawdzić, uruchamiając
evtest
, spojrzeć na wynik po naciśnięciu klawisza Capslock i odpowiednio dostosować zmienną EVENT. Nie musisz nawet dopasowywać kodu i ustawiać WYDARZENIE po prostu na(KEY_CAPSLOCK), value 1
.Zamiast używać evtest i powyższego skryptu, możesz użyć thd z pakietu triggerhappy (coś podobnego
thd --dump /dev/input/*
dałoby podobny wynik), ale okazało się, że to trochę mniej edukacyjne.Teraz tworzymy jednostkę systemową użytkownika, która automatycznie uruchamia skrypt w tle:
Utwórz hierarchię systemową użytkownika:
mkdir -p $HOME/.config/systemd/user
Dodaj następujący tekst do pliku
$HOME/.config/systemd/user/capshack.service
Włącz właśnie utworzoną jednostkę serwisową:
systemctl --user enable capshack
Uruchom usługę:
systemctl --user start capshack
Od teraz powinieneś być w stanie przełączać odtwarzanie / pauzę w VLC za pomocą klawisza Capslock. Skrypt w tle powinien zostać automatycznie uruchomiony po zalogowaniu.
spusthappy
Jak już wspomniano, w tym celu można również użyć pakietu triggerhappy. Jest to preferowana metoda dla osób, które chcą mniej bawić się z systemem i raczej bardziej solidnym rozwiązaniem.
Dodaj użytkownika do
input
grupy jak wyżejZainstaluj pakiet:
sudo apt install triggerhappy
Dodaj konfigurację dla triggerhappy do
~/.config/thd/capslock.conf
:Uruchom tak:
thd --triggers ~/.config/thd/capslock.conf /dev/input/event*
Uruchom już teraz dla swojego użytkownika w podobny sposób, jak opisano już dla capshack.
Upewnij się, że działa tylko jedna z wymienionych metod (capshack lub thd), aby nie przełączać dwukrotnie naciśnięcia każdego klawisza.
Przetestowałem to wszystko 18.04 w ramach sesji standardowej i kolega 16.04. Ale teoretycznie powinien on również działać w terenie lub w innych środowiskach stacjonarnych.
źródło
[[ test ]] && \
a w drugiej linii wcięto cztery spacje,<command>
aby uruchomić pozytywny test. Z całego serca zgadzam się co do czytelności, ponieważ moje zalecenie jest obce większości języków programowania.triggerhappy
powinno być, ponieważevtest
tak naprawdę jest to program do debugowania :)m
taki, że skrypt nie działa. Zalecam sprawdzeniexmodmap -pke | grep Caps_Lock
przed użyciem tego skryptu, aby upewnić się, że kod klucza jest poprawny.W Ubuntu 16.04 po spędzeniu godzin googlowania i bawiąc się
dconf-editor
ixbindkeys
znalazłem bardzo proste rozwiązanie:Jeśli potrzebujesz
XF86AudioPlay
wsparcia Gnome , potrzebujeszxdotool
(nie jest potrzebne do VLC, jak przewiduje OP):Oto podchwytliwa część. Za każdym razem, gdy naciskasz Caps LocKklawisz, aby przełączać muzykę między Odtwarzaniem a Pauzą, wielkie litery również się włączają i wyłączają.
Użyj tej metody, aby wyłączyć przełączanie Caps Lock przy jednoczesnym utrzymaniu aktywnego klawisza:
Odtwarzacze muzyczne zgodne z Gnome
Następnie w Ubuntu 16.04 przejdź do Ustawienia >> Klawiatura >> Skróty >> Skróty niestandardowe :
Audio Play
xdotool key XF86AudioPlay
Po dodaniu nowej opcji przypisany klawisz skrótu wyświetli komunikat Wyłączony . Kliknij opcję Wyłączone, a po wyświetleniu monitu o przypisanie Caps LocKklucza naciśnij klawisz.
Odtwarzacze muzyki takie jak VLC
Postępuj zgodnie z instrukcjami dla Gnome w poprzedniej sekcji, ale zamiast tego użyj polecenia :
VLC nie rozpoznaje klawiszy multimedialnych: Jak sprawić, by klawisze multimedialne klawiatury działały globalnie z VLC? nawet po wbudowaniu w klawiaturę. Dlatego niestandardowy skrót klawiaturowy do XF86AudioPlay jest bezużyteczny
xdotool
.Ustawianie niestandardowych skrótów klawiaturowych z wiersza poleceń
W tym pytaniu omówiono sposób ustawiania niestandardowych skrótów klawiaturowych z wiersza poleceń: Jak ustawić niestandardowe skróty klawiaturowe z terminala?
Dezaktywacja zatrzasków blokuje się na stałe
Następnym krokiem jest uczynienie tego
setxkbmap -option caps:none
trwałym podczas ponownego uruchamiania. Wyniki wyszukiwania Google w tej odpowiedzi Terdon: Zapisz ustawienia setxkbdmap :Prostym sposobem byłoby dodanie polecenia do
$HOME/.profile
pliku (możesz go utworzyć, jeśli nie istnieje):To powinno sprawić, że będzie działać przy każdym logowaniu.
Zauważ , że należy użyć
$HOME/.profile
zamiast$HOME/.bash_profile
,$HOME/.bashrc
lub jakiś inny plik podobny. Wynika to z faktu, że menedżer logowania powinien odczytać to ustawienie.źródło
setxkbmap -option caps:none
. Program narzędziowy jest zainstalowany, jednak Wayland ciągle przełącza wielkie i małe litery. Możesz zadać osobne pytanie, jak przekonać Waylanda do respektowaniasetxkbmap
.Ta odpowiedź została przetestowana na Ubuntu MATE 16.04.4 LTS na maszynie wirtualnej (ale klawiatura była przejściową klawiaturą USB, więc to nie powinno mieć znaczenia). Nie wymaga również dodatkowego oprogramowania i można to zrobić przy instalacji waniliowej bez instalowania żadnych pakietów, i jest trwały między butami.
Zmień mapowanie Caps Lock
Edytuj plik
/usr/share/X11/xkb/symbols/pc
jako root. Uważaj, aby nie popełnić tutaj błędu (np. Zapomnienie przecinka), ponieważ w takim przypadku możesz nie być w stanie korzystać z klawiatury. (Zgadnij, czego nauczyłem się na własnej skórze?)Skomentuj linię
umieszczając dwa ukośniki do przodu (
//
) na początku.Dodaj pod nim następujący wiersz:
Skomentuj linię
w taki sam sposób jak powyżej.
Restart.
Uwaga: ( podziękowania dla danzela za wskazanie tego) Aktualizacje pakietu
xkb-data
mogą zastąpić ten plik. Racjonalnie bezpieczną metodą zapobiegania temu jest przekierowanie ścieżkidpkg-divert
. (Mówię „w miarę bezpieczny”, ponieważ źródłowe źródło tego pliku nie zostało zmodyfikowane od trzech lat).Alternatywna metoda
Ręcznie wyłącz klawisz Caps Lock w ustawieniach układu klawiatury, a następnie zastosuj podejście z tej odpowiedzi, aby dodać własne ponowne mapowanie klawiszy.
Problemy?
Klawisz blokady Caps nie blokuje już Caps i w tym momencie został ponownie przypisany do Play / Pause. Powinieneś być teraz w stanie odtwarzać i wstrzymywać muzykę w VLC. Jeśli to działa, możesz pominąć resztę instrukcji.
Jednak gdy spróbowałem, VLC nie zareagował na klawisz Play / Pause.
Upewnij się, że skrót klawiaturowy jest ustawiony prawidłowo
Otwórz skróty klawiaturowe (System → Preferencje → Sprzęt → Skróty klawiaturowe)
Upewnij się, że „Play (or Play / Pause)” jest ustawione na „XF86AudioPlay”
Jeśli nie jest, kliknij sekcję „Skrót” i naciśnij nowy klawisz Odtwarzaj / Pauza, aby ustawić skrót.
Jeśli nadal nie działa, uruchom ponownie kilka razy, aby zachować dokładność. (Właśnie to mnie naprawiło.)
źródło
xkb
opcje, szczególniecaps:...
te. Można go również zastąpić aktualizacjami systemu.Zainstaluj
xbindkeys
, xcape i playerctl . Upewnij się, żexcape
(mapowanieCapsLock
do klucza zapasowego jakAlt+F12
przezxcape -e 'Caps_Lock=Alt_L|F12
) iplayerctl
są autostarted na log-in, i dodać do pliku~/.xbindkeysrc
dwie linieźródło
Ustaw klawisz Capslock jako klawisz odtwarzania / pauzy
To rozwiązanie spowoduje ponowne przypisanie kodu scancode klawisza Capslock do innego kodu w sterowniku wejściowym jądra, w tym przypadku odtwarzanie / pauza.
Zalety
xkb
konfiguracjiNiedogodności
Wymagania wstępne
sudo apt-get install evtest
)Procedura
W terminalu uruchom
sudo evtest
i wybierz klawiaturę. Jeśli po naciśnięciu klawisza nie ma wyjścia, naciśnij Ctrl+ Ci wypróbuj inne urządzenie. Zapamiętaj wybrany numer zdarzenia urządzenia, będziemy go później potrzebować. Naciśnij klawisz Capslock. Pojawią się następujące wiersze:Potrzebujemy wartości z
MSC_SCAN
linii poprzedzającejKEY_CAPSLOCK
linię. W powyższym przykładzie byłoby to 70039, ale skancode na klawiaturze jest prawdopodobnie inny.Teraz uruchom następujące polecenie, ale zamień X na numer zdarzenia urządzenia użyty dla
evtest
polecenia:... to wyjście wola
bustype
,product
,vendor
iversion
na klawiaturze.Utwórz plik o nazwie
65-keyboard-custom.hwdb
w/etc/udev/hwdb.d/
(wymagane uprawnienia roota) o następującej treści:...gdzie
evdev:...
linia ma żadnych poprzedzających przestrzeńKEYBOARD_KEY...
linia ma dokładnie jeden poprzedni przestrzeńNa przykład:
Na koniec skompiluj nową konfigurację do sprzętowej bazy danych:
Jeśli chcesz natychmiast zastosować zmiany, poinformuj udev:
Jeśli chcesz przywrócić zmiany, po prostu usuń utworzony plik i uruchom ponownie.
Bardziej szczegółowe informacje można znaleźć w mojej oryginalnej odpowiedzi na ten temat.
źródło
Może za pomocą
xbindkeys
lubXTE
możesz to zrobić. Ale najpierw upewnij się, co to są kody, możesz zobaczyć kod klawisza Capslock za pomocą poleceniaxev
w terminalu i naciskając go (możesz zobaczyć kod dowolnego przycisku keu lub myszy, w tym myszy do gier). Mając w ręku kod klawiszy Capslock i Play możesz edytować plik confi xbindkeys i wprowadzać tam swoje zmiany. użyjtouch ~/.xbindkeysrc
do utworzenia pliku konfiguracyjnego (jeśli system nie utworzy go automatycznie) inano ~/.xbindkeysrc
do edycji. Użyłem go w zeszłym miesiącu i tutaj jest to egzamin. spójrz na te linki, które mogą być dla Ciebie bardzo pomocne.https://help.ubuntu.com/community/MultimediaKeys
https://gist.github.com/jbonney/5743509
Zmień przypisanie przycisku myszy do gier na klawisz klawiatury
https://matmunn.me/post/binding-volume-control-mouse-buttons-ubuntu/
źródło