- Zmiana szybkości i czasu powtarzania klawiszy w systemie Linux może odbywać się zarówno w środowisku graficznym, jak i przy użyciu narzędzi konsolowych.
- System tłumaczy kody skanujące na kody klawiszy, a następnie na znaki, korzystając z map klawiatury, modyfikatorów i różnych trybów konsoli.
- Narzędzia takie jak kbdrate, setkeycodes, loadkeys i dumpkeys umożliwiają szerokie dostosowanie zachowania klawiatury i klawiszy specjalnych.
- Stała konfiguracja opiera się na skryptach rozruchowych, mapach w /usr/share/kbd i bazie danych terminfo dla modelu terminalowego.
Gdy pracujesz z Linuksem na co dzień, sposób, w jaki reaguje klawiatura, stanowi różnicę między płynnym pisaniem a desperacją. Czas powtarzania klawisza, opóźnienie początkowe i zachowanie każdego klawisza Można je modyfikować z ogromną precyzją, zarówno ze środowiska graficznego, jak i z konsoli tekstowej oraz samego jądra.
Co więcej, w systemie Linux można nie tylko zmienić czas, po jakim klawisz zaczyna się powtarzać, lub liczbę znaków generowanych na sekundę po jego przytrzymaniu, ale także zmodyfikuj układ klawiatury, zdefiniuj na nowo klawisze specjalne, zmień układ, a nawet przypisz zaawansowane akcje jako programy startowe lub wyłącz system.
Graficzna konfiguracja czasu powtarzania klawiszy w systemie Linux
W większości nowoczesnych środowisk Linux (np. GNOME, KDE Plasma, Cinnamon itd.) pierwszym miejscem, w którym można dostosować zachowanie klawiszy, jest panel ustawień systemowych. Środowiska te oferują specjalną sekcję klawiatury, w której można regulować opóźnienie i częstotliwość powtarzania. bez walki z konsolą.
W środowisku typu GNOME zwykle wykonuje się przejście do „Ustawienia systemu → Klawiatura → Powtarzanie klawisza”Istnieją dwa główne elementy sterujące: opóźnienie przed rozpoczęciem powtarzania klawisza po jego przytrzymaniu oraz prędkość powtarzania (ile znaków jest generowanych na sekundę).
„Opóźnienie powtarzania” kontroluje czas, jaki upływa od momentu naciśnięcia klawisza do momentu, w którym zacznie on nieprzerwanie wystrzeliwać znaki. Jeśli masz problem z szybkim podnoszeniem palca lub używasz klawiatury do precyzyjnego przesuwania kursorówByć może będziesz chciał zwiększyć to opóźnienie lub po prostu wyłączyć automatyczne powtarzanie.
„Częstotliwość powtarzania” wskazuje, ile znaków zostanie wygenerowanych po rozpoczęciu powtarzania. Duża prędkość może okazać się bardzo przydatna do szybkiego przewijania tekstu lub gier.Ale może to też spowodować pominięcie zbyt wielu znaków, jeśli przesadzisz z wartością.
W konkretnym przypadku kluczy specjalnych, takich jak pokrętło lub pokrętło głośności zintegrowane z klawiaturąMożesz chcieć innego zachowania. Na przykład, możesz chcieć, aby głośność zwiększała się lub zmniejszała natychmiast po przekręceniu pokrętła, bez typowego opóźnienia 600 ms, charakterystycznego dla innych klawiszy. W standardowych środowiskach graficznych zazwyczaj nie ma możliwości ustawienia innego opóźnienia dla każdego klawisza, więc tutaj do gry wchodzą narzędzia niższej warstwy systemu i konsoli.
Sterowanie klawiaturą z systemu: kody skanowania, kody klawiszy i BIOS
Pod warstwą graficzną Linux obsługuje klawiaturę znacznie bardziej szczegółowo, niż mogłoby się wydawać. Po naciśnięciu klawisza urządzenie nie wysyła bezpośrednio litery, lecz kod skanowaniaTen kod skanu dociera do jądra, które przekształca go w Kod KluczaNastępnie stosowana jest mapa klawiatury, która ostatecznie generuje postać lub akcję.
Tradycyjnie przerwanie BIOS-u nr 9 obsługiwało klawiaturę (typowe w systemach typu MS-DOS), ale w systemie Linux Jądro instaluje własną procedurę serwisową dla przerwania klawiaturyProcedura ta opiera się na schemacie podobnym do klasycznej, choć występują w niej różnice w interpretacji kodów skanowania i sposobie wypełniania buforów wewnętrznych.
Większość klawiszy generuje dwa kody: jeden po naciśnięciu (utworzenie kodu), a drugi po puszczeniu (złamanie kodu). W praktyce jądro zazwyczaj ignoruje kody przerwania, aby uprościć obsługęz wyjątkiem szczególnych przypadków, takich jak klawisze przełączające (Shift, Ctrl, Alt itp.). Ponadto niektóre klawisze specjalne generują podwójne sekwencje: najpierw bajt prefiksu (na przykład 0xE0), a następnie kod klawisza.
W przypadku kodów skanowania z zakresu 0x01-0x58 (od 1 do 88 w systemie dziesiętnym) system Linux domyślnie stosuje bardzo prostą regułę: kod_klucza = kod_skanowaniaW innych zakresach (na przykład 0x59-0x7F lub sekwencjach zaczynających się od 0xE0) zależność nie jest już tak prosta i używana jest wewnętrzna tablica jądra, która definiuje, który kod klawisza odpowiada każdej kombinacji kodów skanowania.
Z narzędziami takimi jak Pokaż klucz y pobierzkodykluczy Możesz dokładnie zobaczyć, jakie kody generuje Twoja klawiatura. Na przykład, uruchamiając showkey -k W wirtualnej konsoli (nie w terminalu graficznym) zobaczysz kody klawiszy generowane przez każde naciśnięcie klawisza, a wraz z nimi showkey -s Można zobaczyć surowe kody skanowania wysyłane przez sprzęt, co pomaga w rozwiązywaniu problemów, np. klawiatura laptopa nie działa.
Modyfikuj przypisanie klawiszy: polecenie setkeycodes
W sytuacjach, gdy specjalny klawisz (taki jak pokrętło głośności, klawisze multimedialne lub dodatkowe klawisze na klawiaturze) nie jest poprawnie interpretowany, można go użyć ustaw kody klawiszy aby dostosować powiązanie pomiędzy kodem skanowania i kodem klawisza. To polecenie pozwala powiedzieć jądru, że „gdy zobaczysz ten kod skanowania, traktuj go tak, jakby był to ten kod klucza”.
Podstawowa składnia to:
setkeycodes kod skanowania kod klucza
El kod skanowania Wyraża się ją w systemie szesnastkowym (na przykład e049) A Kod Klucza w systemie dziesiętnym (na przykład 112W ten sposób możesz zmienić przypisanie nietypowych kluczy, tak aby system widział je jako klucze standardowe lub inne klucze, które Cię interesują.
Wyobraź sobie, że Twoja klawiatura generuje sekwencję 0xE0 0x49 po naciśnięciu fizycznego klawisza „Page Up”. Zgodnie z domyślną tabelą jądra, może to odpowiadać kodowi klawisza 104. Jeśli wolisz, aby ten klucz zachowywał się jak inny, możesz uruchomić coś takiego:
ustaw kody klawiszy e049 112
Po tej zmianie naciśnięcie tego klawisza wygeneruje kod 112 zamiast 104. Ważne jest tutaj to, że To ponowne przypisanie odbywa się na poziomie jądra, zanim mapa klawiatury przekształci kod klawisza w konkretną akcję.Następnie na mapie możesz ustalić, do czego służy kod 112.
Aby sprawdzić, które kody klawiszy rozpoznaje system i jakie zakresy obsługuje, możesz użyć pobierzkodykluczyktóry wyświetli tabele wewnętrzne. Te narzędzia zazwyczaj wymagają uprawnień administratora, ponieważ Modyfikują globalne zachowanie klawiatury we wszystkich konsolach wirtualnych..
Tryby pracy konsoli Linux
W konsolach tekstowych (typowych TTY, do których uzyskujesz dostęp za pomocą Ctrl+Alt+F1…F6), sterownik klawiatury i konsoli Linux może działać w kilku trybach, które określają dokładnie, co otrzymuje aplikacja. Tryby te mają wpływ na sposób interpretacji kodów skanowania, kodów klawiszy i znaków..
Główne tryby to:
Tryb RAW (tryb skanowania)Sterownik niczego nie tłumaczy; wysyła kody skanowania do aplikacji w niezmienionej postaci. Jest to tryb najniższego poziomu, używany zazwyczaj, gdy system graficzny lub specjalistyczna aplikacja chce mieć pełną kontrolę nad klawiaturą.
Tryb MEDIUMRAW (tryb kodu klawiszowego)Jądro konwertuje kody skanowania na kody klawiszy, ale nie idzie dalej. Aplikacja otrzymuje kody kluczy i decyduje, co zrobićPodejście to jest przydatne w przypadku programów, które implementują własny system skrótów i tłumaczeń.
Tryb XLATE (tryb ASCII)To tradycyjny tryb domyślny w konsolach tekstowych. W nim kody skanujące są konwertowane na kody klawiszy, a następnie na znaki zgodnie z 8-bitową mapą klawiatury (zazwyczaj opartą na normie ISO-8859-1). Jest to najczęstsza metoda pracy bezpośrednio w TTY z powłoką.
Tryb UNICODE (UTF-8)Metoda podobna do poprzedniej, ale wykorzystująca zestaw znaków Unicode i wysyłająca sekwencje UTF-8 do jądra w celu reprezentacji znaków większych niż jeden bajt. Ten tryb jest kluczowy w nowoczesnych systemach, które chcą obsługiwać różne alfabety lub rozszerzone symbole.
Efektywny tryb działania konsoli jest powiązany ze zmienną środowiskową TERM. Jeśli to zrobisz printenv TERMW konsoli wirtualnej zazwyczaj zobaczysz „linux”, natomiast w terminalu graficznym w X lub Waylandzie zobaczysz „xterm”, „xterm-256color” lub coś podobnego. Gdy serwer X jest uruchomiony, sam X zarządza klawiaturą a jądro zwykle pozostawia konsolę w trybie RAW, delegując interpretację do serwera graficznego.
Klucz inny W tym kontekście jest on znany jako klawisz Meta, a kombinacja Alt+X jest zazwyczaj zapisywana jako MetaX. Działanie tych skrótów klawiszowych Meta można dostosować za pomocą narzędzia ustawmetamodktóry pozwala wybrać, czy naciśnięcie Alt+X wyśle sekwencję ESC X (klawisz escape i znak) lub znak, którego wartość wynosi X plus 128, czyli z aktywowanym bitem 7.
Model terminala i baza danych terminfo
Linux dziedziczy klasyczną koncepcję z UNIX-a: System traktuje każdą sesję jako typ terminalaktóry ma pewne dobrze znane cechy (specjalne klawisze, możliwości kolorystyczne, sterowanie kursorem itp.). Nawet jeśli masz tylko monitor i klawiaturę, jądro widzi Cię podłączonego przez konkretny model terminala.
Możliwości każdego modelu terminala opisane są w bazie danych. termino, zwykle znajduje się w /usr/share/terminfo/Baza danych zawiera pliki uporządkowane w podkatalogach według pierwszej litery (na przykład plik vt100 znajduje się w podkatalogu, którego nazwa zaczyna się od pierwszej litery terminala).
Każdy plik terminfo opisuje nazwę terminala, alias i długą listę możliwości: które sekwencje ucieczki odpowiadają klawisze funkcyjnejak porusza się kursor, jak czyszczone są linieitp. Typowy przykład klasycznego nagłówka terminala wygląda mniej więcej tak: „vt100|vt100-am|dec vt100 (z zaawansowanym wideo)…”.
Aby korzystać z funkcji terminala z poziomu wiersza poleceń, masz do dyspozycji kilka narzędzi:
stty: Służy do przeglądania i dostosowywania parametrów terminala (echa, kontroli przepływu, usuwania znaków itp.).
ustalony terminTo polecenie pozwala modyfikować atrybuty konsoli, takie jak zachowanie wideo, migotanie, kolory i inne. Uruchomione bez argumentów, zazwyczaj wyświetla listę wszystkich funkcji, które można dostosować w bieżącym terminalu.
tputOpiera się na terminfo, które wysyła standardowe sekwencje sterujące do terminala, takie jak czyszczenie ekranu, przesuwanie kursora lub zmiana atrybutów, bez konieczności ręcznego wpisywania sekwencji ANSI.
Konfiguracja klawiatury podczas uruchamiania systemu
Zgodnie ze specyfikacją Linux Standard Base (LSB)Skrypty uruchamiania systemu znajdują się w /etc/init.d/ i są uruchamiane bezpośrednio lub pośrednio przez /sbin/init, proces nadrzędny dla wszystkich pozostałych. W ramach tej struktury zdefiniowane są kroki inicjalizacji sprzętu, sieci, konsol i oczywiście klawiatury.
Zazwyczaj wykonywane są skrypty zlokalizowane w sekwencji rozruchowej. /etc/init.d/boot.d/ lub równoważne trasy w zależności od dystrybucji. Te skrypty obsługują takie elementy, jak porty szeregowe, karty sieciowe, zegar CMOS, woluminy logiczne i innych podstawowych komponentów. Ostatecznie skrypt jest zazwyczaj wykonywany. /etc/init.d/boot.local dla zamówień niestandardowych składanych przez administratora.
Jeśli chodzi o klawiaturę konsoli tekstowej, wiele dystrybucji korzysta z pliku konfiguracyjnego, takiego jak /etc/sysconfig/klawiaturaOkreśla kluczowe parametry, w tym mapę klawiatury, która ma zostać załadowana podczas uruchamiania, oraz ustawienia powtarzania.
Plik ten zawiera dyrektywy takie jak:
KEYTABLE: oznacza plik mapy klawiatury, zwykle znajdujący się w /usr/share/kbd/mapy klawiszy/Typową wartością może być „es.map.gz”, która wskazuje mapę dla klawiatury hiszpańskiej.
KBD_RATE y OPÓŹNIENIE KBD: określ częstotliwość powtarzania (na przykład od 2.0 do 30.0 znaków na sekundę) i początkowe opóźnienie w milisekundach (250, 500, 750, 1000 itd.). Jeżeli chcesz, aby system uruchamiał polecenie kbdrate przy starcie, musisz ustawić obie wartości..
Dodatkowo istnieją ustawienia stanu klucza początkowego, takie jak: NumLock, ScrollLock i CapsLockUstawienia te można ustawić na „tak”, „nie” lub „BIOS” (zgodnie z konfiguracją BIOS-u). Dostępna jest nawet opcja wyłączenia funkcji Caps Lock i zamiany klawisza Caps Lock na zwykły klawisz Shift.
Najważniejszym wierszem dla ogólnego zachowania klawiatury jest ten, który definiuje mapę, mniej więcej tak:
KEYTABLE="es.map.gz"
Mapa ta określa, co robi każdy kod klawiszowy, czyli jaki znak lub akcja zostanie wygenerowana po naciśnięciu danego klawisza w połączeniu z modyfikatorami (Shift, AltGr, Control itd.). Stamtąd możesz dostosować zachowanie na bieżąco za pomocą narzędzi takich jak loadkeys, dumpkeys, showkey i kbdrate.
Kluczowe narzędzia: showkey, loadkeys, dumpkeys i kbdrate
Po uruchomieniu systemu będziesz mieć do dyspozycji szereg potężnych narzędzi umożliwiających sterowanie klawiaturą w czasie rzeczywistym. Są to narzędzia konsoli, które przy rozsądnym użyciu pozwalają dostosować klawiaturę do niemal każdych potrzeb..
Pokaż kluczUżywa się tego, aby sprawdzić, jakie kody faktycznie generuje klawiatura. showkey -s Widzisz kody skanowania dokładnie tak, jak pochodzą ze sprzętu; showkey -k Poniżej przedstawiono kody klawiszy wygenerowane przez procedurę jądra po pierwszej konwersji.
klucze ładowania: Ładuje nową mapę klawiatury w konsolach wirtualnych. Wymaga uprawnień roota i należy jej używać ostrożnie, ponieważ Dotyczy to wszystkich urządzeń TTY, także urządzenia TTY do logowania.Źle skonfigurowana mapa może znacznie utrudnić wprowadzenie hasła lub nawet zalogowanie się.
kluczePozwala to na sprawdzenie aktualnego układu klawiatury i innych powiązanych szczegółów, takich jak definicje funkcji, układy znaków i równoważności symboliczne. Dzięki opcjom takim jak dumpkeys – długie informacje, dumpkeys – tylko funkcje o dumpkeys – tylko do tworzenia Możesz uzyskać bardzo szczegółowe informacje na temat struktury swojej mapy.
kbdrateJest to bezpośrednie narzędzie do zmiany częstotliwość powtarzania i początkowe opóźnienie klawiaturyW wielu systemach wartości domyślne naśladują standard klawiatury IBM: około 10 znaków na sekundę i około 250 ms opóźnienia. Dzięki kbdrate można je zmienić bez ponownego uruchamiania, co jest przydatne do zrozumienia opcji ułatwień dostępu, takich jak: filtruj klawisze w systemie Windows.
Na przykład, w celu uzyskania bardzo krótkiego opóźnienia i szybkiego powtórzenia, możesz użyć czegoś takiego:
kbdrate -d 200 -r 30
gdzie -d Zaznacz opóźnienie (w milisekundach) i -r częstotliwość powtarzania (liczba znaków na sekundę). Jeśli chcesz uzyskać ogólnie wolniejszą wydajność, zwiększ opóźnienie lub zmniejsz szybkość.A jeśli chcesz uzyskać efekt niemal natychmiastowy, możesz zmniejszyć opóźnienie do 200 ms lub nawet mniej, w zależności od możliwości twojego sprzętu.
Mapa klawiatury: definicja wewnętrzna i modyfikatory
„Mapa klawiszy” lub mapa klawiatury to serce zaawansowanej konfiguracji. Mapy te można wkompilować w jądro lub zapisać jako pliki tekstowe w /usr/share/kbd/mapy klawiszy/, z domyślną konfiguracją w plikach takich jak /etc/defkeymap.map. Każda dystrybucja zawiera zazwyczaj zbiory map dla różnych języków i układów.
Mapy klawiatury definiują, za pomocą określonej składni, działanie każdego kodu klawisza w połączeniu z różnymi modyfikatorami. Ogólnie rzecz biorąc, do 256 różnych akcji dla tego samego klawisza, powiązane z możliwymi kombinacjami modyfikatorów (Shift, Alt, Control, AltGr, itd.).
Plik mapy wykorzystuje wiersze w następującej formie:
numer kodu klucza = symbol symbol symbol …
El número Jest to wewnętrzny identyfikator klucza (kod klucza), który może być wyrażony w systemie dziesiętnym, ósemkowym lub szesnastkowym. symbol (keysym) reprezentuje powiązaną akcję, która może być znakiem, sekwencją znaków lub specjalną funkcją, taką jak Usuń, Uruchom, Konsola_15 i wiele innych. Zazwyczaj nie używa się bezpośrednich kodów numerycznych; zamiast nich stosuje się stałe symboliczne, które pozostają stabilne w różnych wersjach jądra.
Modyfikatory są traktowane jak bity oktetu, z których każdy ma określoną „wagę”. Na przykład Shift może mieć wagę 1, AltGr wagę 2, Control wagę 4, Alt wagę 8 i tak dalej z lewym Shiftem, prawym Shiftem, lewym Control i prawym Controlem. Po naciśnięciu klawisza, skuteczna akcja jest ustalana poprzez zsumowanie wag aktywnych modyfikatorów i sprawdzenie odpowiedniej kolumny. w definicji tego klucza.
Na przykład, jeśli naciśniesz klawisz z klawiszami Shift i Alt, suma może wynieść 9, a definicja w kolumnie 9 określa, co zostanie wygenerowane. Bez żadnego modyfikatora indeks wynosi 0 i przyjmowany jest pierwszy symbol zdefiniowany w wierszu kodu klawisza..
Istnieje również znak specjalny, znak + Litery poprzedzające niektóre symbole oznaczają, że należy je traktować jak litery, co oznacza, że odpowiadają klawiszom Caps Lock i Shift. Typowy przykład:
kod klucza 30 = +a
Oznacza to, że klucz generuje małą literę „a” bez modyfikatorów, „A” jeśli używana jest wielka litera itd. Aby uzyskać bardziej szczegółowe zachowanie, kolumnę wielkich liter można zdefiniować jawnie, na przykład:
kod klucza 30 = +a A
Jeśli nie chcesz, aby konkretna kombinacja klawiszy cokolwiek robiła, użyj słowa kluczowego Symbol pustkiNa przykład, aby klawisz generował tylko „a” bez modyfikatorów i nic w określonych kombinacjach, można zastosować definicje, w których te przypadki są oznaczone symbolem VoidSymbol. Co więcej, składnia pozwala na uproszczenia: Jeśli zdefiniowano pojedynczy symbol i nie jest to litera ASCII, przyjmuje się, że jest on powielany we wszystkich określonych kolumnach..
Inne części mapy: zawiera, mapy klawiszy, zestaw znaków, funkcje i kompozycję
Pliki map klawiatury zawierają nie tylko definicje kodów klawiszy, ale także inne elementy ważne dla ogólnego zachowania. Dzięki temu możliwe jest modułowe tworzenie kodu, obsługa różnych zestawów znaków oraz definiowanie klawiszy funkcyjnych i kombinacji znaków akcentowych..
Dyrektywa zawierać Umożliwia dołączanie innych plików, podobnie jak w przypadku „importu”. Jest to przydatne do ponownego wykorzystania wspólnych części na kilku mapach, na przykład tabeli akcentów lub zestawu standardowych funkcji.
Linia mapy klawiszy Definiuje, które kolumny (indeksy modyfikatorów) są określone na mapie. Zamiast wymieniać wszystkie 256 możliwych kolumn, zazwyczaj określa się zakresy, takie jak: mapy klawiszy 0-2,4-5,8,12, co oznacza, że używane są kolumny 0, 1, 2, 4, 5, 8 i 12 (normalny, Shift, AltGr, Control, Control+Shift, Alt i Control+Alt). Jeżeli brakuje tego wiersza, przyjmuje się, że istnieją definicje od 0 do M, przy czym M jest maksymalnym znalezionym indeksem. w wierszach kodu klawisza.
Te definicje zestawów znaków Wykonuje się je z linii typu:
zestaw znaków «iso-8859-2»
i określić, której stronie kodowej odpowiadają wartości liczbowe znaków. Domyślnie zazwyczaj używany jest kod ISO-8859-1 (Latin-1), ale można również użyć innych, takich jak ISO-8859-2 lub ISO-8859-7. Dotyczy to symboli takich jak grecka litera mu lub znaków specjalnych charakterystycznych dla niektórych języków.
Te definicje ciągów Używają następującej składni:
ciąg kluczy = "tekst"
i służą do kojarzenia klawiszy funkcyjnych lub specjalnych z określonymi sekwencjami znaków. Na przykład, możesz określić, że F1 wysyła „ESC”.
Pisarz z pasją zajmujący się światem bajtów i technologii w ogóle. Uwielbiam dzielić się swoją wiedzą poprzez pisanie i właśnie to będę robić na tym blogu, pokazywać Ci wszystkie najciekawsze rzeczy o gadżetach, oprogramowaniu, sprzęcie, trendach technologicznych i nie tylko. Moim celem jest pomóc Ci poruszać się po cyfrowym świecie w prosty i zabawny sposób.


