Mam program X11, który chwyta Caps-Lock i używa go. Problem polega na tym, że chcę wyłączyć zwykłe przełączanie z wciśniętym klawiszem Caps-Lock, ale wydaje się, że powoduje to wyłączenie klucza.
Więc cokolwiek X11 dostanie za naciśnięcie klawisza Caps-Lock, musi nadal uzyskać (nie wyłączając klawisza ani nie przypisując go do innego klawisza), ale bez niczego, co przekształciłoby naciśnięcie klawisza w klawisz Caps Lock (który może być na poziomie jądra? ).
Próbowałem zmienić scancode, ale po prostu odwzorowałem klucz. Usunąłem również wpis Capslock xmodmap
, ale to również wyłączyło Caps.
Jak mogę powiedzieć kernelowi, aby zignorował klawisz Caps (wrt jego normalna funkcjonalność), ale nadal przekazuje komunikat do X?
Aby dodać trochę więcej szczegółów:
„Program”, który próbuję uruchomić, jest humanizowany „enso”. Gdy nie ma klucza, pojawia się błąd „KRYTYCZNY: root: Nie można znaleźć klucza quasimode”. Kiedy nie ma błędu, mogę używać enso z capami, ale sofar nie wymyślił, jak wyłączyć funkcję caps, podczas gdy enso jest w stanie to zrobić.
setxkbmap -option ctrl:nocaps
remapujeControl_L
na przykład.Odpowiedzi:
Wydaje mi się, że mam technikę wyłączania przełączania Capslockklawisza, ale nie całkowitego wyłączania klawisza razem lub ponownego przypisywania go do innego klawisza na klawiaturze.
Jeśli użyjesz polecenia:
Klawiatura nie będzie się już przełączać. Potwierdziłem to na moim laptopie z Fedorą 14, dioda LED już nie świeci, a normalna Capslockfunkcjonalność zniknęła.
Jednak użycie xev nadal pokazuje, że klawisz jest wciśnięty:
Tak więc naciśnięte klawisze pozostają nienaruszone, aby inne aplikacje mogły je odebrać.
setxkbmap
Plik
/usr/share/X11/xkb/rules/xorg.lst
zawiera pełną listę opcji, które możesz podaćsetxkbmap
.Przeglądając ten plik dla „cap” zauważyłem następujący wiersz:
W tym pliku znajdują się inne wartości, więc jeśli nie o to ci chodzi, być może jedna z tych alternatywnych wartości będzie pasować.
Referencje
źródło
setxkbmap -option ""
.Jeśli nie chcesz, aby Caps Lockklawisz miał zwykły efekt, możesz wyłączyć
Lock
modyfikator, zachowując jednocześnie klawiszCaps_Lock
.źródło
Jest to bardzo podobne do odpowiedzi udzielonej na inne pytanie . Ten fragment kodu xkb powinien załatwić sprawę.
źródło