Jak ustawić układ klawiatury Colemak w systemie Linux
Instrukcja konfiguracji układu Colemak w konsoli, X11 oraz Wayland. Dowiedz się, jak zmiana wpływa na skróty w Vim, działanie klawiszy Ctrl oraz dlaczego SSH nie wymaga zmian.
Gdzie w systemie Linux znajduje się układ klawiatury Colemak
Układ Colemak w systemie Linux nie jest pojedynczym ustawieniem systemowym. Układ jest stosowany przez komponent, który w danej chwili odczytuje sygnały z klawiatury, dlatego znajduje się w jednym z trzech miejsc: konsoli tekstowej, serwerze X11 lub kompozytorze Wayland. Ustawienie go w niewłaściwym miejscu sprawia, że zmiany nie są widoczne.
Czwarta opcja całkowicie pomija system operacyjny. Klawiatura z własnym firmware, na przykład działająca w oparciu o QMK lub VIA, wysyła kody pożądanych znaków. Dzięki temu każde urządzenie, do którego zostanie podłączona, obsługuje układ Colemak bez żadnej konfiguracji, wliczając w to konsolę serwera oraz maszyny, do których nie posiada się uprawnień. Wadą tego rozwiązania jest to, że wbudowana klawiatura laptopa nadal będzie działać w układzie QWERTY.
Dalsza część tego przewodnika omawia trzy warstwy programowe, powód, dla którego zdalny serwer niemal nigdy ich nie wymaga, oraz wpływ zmiany układu na edytor Vim i skróty terminalowe.
Sprawdzenie bieżącej konfiguracji systemu
Uruchom poniższe polecenia przed wprowadzeniem jakichkolwiek zmian. Wyświetlą one aktualne ustawienia oraz listę wariantów układu Colemak dostępnych w bazie danych klawiatur X.
localectl status
setxkbmap -query
localectl list-x11-keymap-variants us | grep colemakOstatnie polecenie powinno zwrócić colemak oraz colemak_dh. Układ Colemak jest obecny w xkeyboard-config od lat. Wariant Colemak-DH został dodany w wersji 2.34, więc brakuje go tylko w bardzo starych wydaniach. Według stanu na sierpień 2026, zarówno Ubuntu 24.04, jak i Debian 13 dostarczają nowszą wersję pakietu.
Jeśli setxkbmap -query zgłasza błąd otwarcia wyświetlacza, oznacza to pracę w sesji Wayland, gdzie układ klawiatury jest zarządzany przez kompozytor. Ten przypadek został opisany w osobnej sekcji poniżej.
Colemak lub Colemak-DH
Układ Colemak zmienia położenie siedemnastu klawiszy względem QWERTY, pozostawiając dziesięć na swoich miejscach, w tym Z, X, C oraz V. Dzięki temu skróty klawiszowe dla operacji cofania, wycinania, kopiowania i wklejania pozostają w zasięgu lewej ręki. Ta kompatybilność jest głównym powodem, dla którego układ wygląda w ten sposób.
Colemak-DH to modyfikacja układu Colemak. Przenosi ona klawisze D, B i G oraz zamienia miejscami H z M. W standardowym układzie Colemak wpisywanie zarówno D, jak i H wymaga wyciągnięcia palca wskazującego do środkowej kolumny klawiatury. Oficjalna modyfikacja zachowuje przypisanie każdej litery do tego samego palca, co w układzie Colemak, więc użytkownik przechodzący na DH musi przyswoić jedynie niewielką zmianę, a nie uczyć się układu od nowa. Wariant XKB to colemak_dh, natomiast colemak_dh_iso przeznaczony jest dla klawiatur posiadających dodatkowy klawisz obok lewego Shift.
Przejście z QWERTY w obu przypadkach wymaga jednorazowego procesu nauki, dlatego należy wybrać układ zapewniający większy komfort i na tym poprzestać. Kolejna zmiana układu kosztuje tyle samo wysiłku co pierwsza, ponieważ proces ten polega na odbudowie pamięci mięśniowej powiązanej z fizycznym położeniem klawiszy.
Ustawienie układu Colemak w X11 za pomocą setxkbmap i localectl
setxkbmap us -variant colemak
setxkbmap -querysetxkbmap -query powinno teraz zwracać variant: colemak, a pisanie w dowolnym oknie powinno skutkować użyciem układu Colemak. Zmiana trwa przez czas trwania sesji X i nie zapisuje żadnych danych na dysku, co czyni tę metodę bezpiecznym sposobem na przetestowanie układu przez godzinę.
Aby zachować ustawienie po restarcie systemu:
sudo localectl set-x11-keymap us pc105 colemak
localectl statusKolejność argumentów to układ, model, a następnie wariant. localectl status powinno teraz pokazywać X11 Layout: us oraz X11 Variant: colemak. Polecenie localectl konwertuje również wybór na najbliższy dostępny układ klawiatury konsolowej, chyba że dodasz flagę --no-convert, więc w wielu systemach to jedno polecenie obejmuje również tty. W systemach Debian i Ubuntu należy sprawdzić plik /etc/default/keyboard po wykonaniu operacji, ponieważ to z niego korzysta console-setup podczas rozruchu.
Ustawienie układu Colemak w środowisku Wayland
Sesja Wayland nie korzysta z serwera X, który można by skonfigurować. Kompozytor ładuje mapę klawiszy i przekazuje ją do każdej aplikacji, dlatego układ klawiatury jest ustawieniem kompozytora. Z tego powodu polecenie setxkbmap nie działa poprawnie: albo nie znajduje wyświetlacza, albo zmienia ustawienia tylko dla XWayland, podczas gdy natywne aplikacje Wayland ignorują te zmiany.
W środowisku GNOME ustawienie to jest kluczem gsettings:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak')]"Zmiana jest stosowana natychmiast, bez konieczności wylogowania. Ciąg znaków us+colemak to nazwa układu oraz wariant połączone znakiem plusa.
W przypadku sway, należy dodać odpowiedni wpis w ~/.config/sway/config:
input type:keyboard {
xkb_layout us
xkb_variant colemak_dh
}Przeładuj konfigurację za pomocą swaymsg reload. Polecenie swaymsg -t get_inputs wyświetla listę wszystkich urządzeń wejściowych wraz z używanym przez nie układem; jest to test, który należy wykonać, gdy tylko jedna klawiatura działa nieprawidłowo.
W środowisku KDE Plasma należy otworzyć Ustawienia systemowe, przejść do sekcji Klawiatura, następnie Układy i dodać układ angielski (US) z wariantem Colemak.
Ustawienie układu Colemak w konsoli tekstowej
Konsola to tekstowy interfejs tty dostępny po naciśnięciu Ctrl+Alt+F3, który posiada własną mapę klawiszy. Ustawienia wprowadzone w X11 lub w kompozytorze nie mają na nią wpływu, co jest istotne w przypadku pracy na terminalu na czystej konsoli wirtualnej.
W systemach Debian i Ubuntu należy edytować plik /etc/default/keyboard:
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="colemak"
XKBOPTIONS=""Następnie należy zastosować zmiany:
sudo setupconNależy przetestować układ w konsoli, aby potwierdzić działanie. Pakiet console-setup konwertuje opis XKB na mapę klawiszy konsoli za pomocą ckbcomp, dzięki czemu konsola i środowisko X korzystają z tego samego opisu w tych systemach.
W dystrybucjach korzystających bezpośrednio z map klawiszy kbd, najpierw należy sprawdzić nazwę układu:
localectl list-keymaps | grep -i -e colemak -e latin9
sudo localectl set-keymap en-latin9Pakiet kbd dostarcza mapę konsolową Colemak jako i386/colemak/en-latin9, dlatego zazwyczaj podaje się nazwę en-latin9, a nie colemak. Należy podać nazwę znajdującą się na liście, ponieważ nieistniejąca nazwa zostanie odrzucona.
Polecenie sudo loadkeys en-latin9 zmienia układ bieżącej konsoli natychmiast, a sudo loadkeys us przywraca poprzedni stan. Polecenie loadkeys należy traktować jako test, a nie jako trwałą konfigurację: zmiana utrzymuje się do restartu, a w systemach Debian i Ubuntu proces startowy /etc/default/keyboard przywraca ustawienia zdefiniowane w konfiguracji.
Czy bezgłowy VPS wymaga układu klawiatury Colemak?
Prawie nigdy i warto zrozumieć dlaczego. Protokół SSH przesyła znaki, a nie fizyczne położenie klawiszy. Emulator terminala odbiera naciśnięcie klawisza, lokalny układ klawiatury zamienia je na znak i tylko ten znak jest przesyłany przez połączenie. Serwer otrzymuje n bez możliwości sprawdzenia, który fizyczny klawisz go wygenerował. Zatem układ klawiatury ustawiony na laptopie towarzyszy użytkownikowi w każdej sesji SSH, w tmux oraz w każdym edytorze uruchamianym zdalnie, a maszyna zdalna nie wymaga żadnej konfiguracji klawiatury.
Należy o tym pamiętać przed rozpoczęciem edycji plików klawiatury na serwerach produkcyjnych. Jeśli zarządzasz flotą serwerów Linux, układ klawiatury należy do maszyny znajdującej się przed użytkownikiem, a nie do floty, więc nie ma on miejsca w procesie wdrażania. Pierwsze dziesięć minut na nowym VPS zawiera więcej użytecznej pracy niż ta czynność.
Warto zaplanować dwa wyjątki. Pierwszym jest konsola podłączona bezpośrednio do maszyny. Konsola przeglądarkowa w panelu dostawcy zazwyczaj przedstawia się maszynie wirtualnej jako klawiatura, więc naciśnięcia klawiszy docierają jako kody skanowania (scancodes), a mapa klawiatury konsoli serwera decyduje o tym, jaki znak się pojawi. Jest to jedyne miejsce, w którym układ ustawiony na serwerze ma znaczenie; jest to również ścieżka ratunkowa w przypadku awarii SSH, więc niedokończona mapa klawiatury konsoli stanowi realne ryzyko.
Konsola szeregowa zachowuje się inaczej, ponieważ przesyła znaki i stosuje się w niej układ lokalny. Drugim wyjątkiem jest maszyna współdzielona. Mapa klawiatury konsoli jest ustawieniem systemowym, więc ustawienie Colemak na maszynie, do której logują się inni użytkownicy, zmieni układ również dla nich, a oni nie będą w stanie odgadnąć przyczyny.
Co dzieje się z klawiszami hjkl w Vim
W układzie Colemak klawisz h nie powoduje ruchu. Pozostałe trzy działają. Klawisz j znajduje się pod klawiszem Y z układu QWERTY, k pod klawiszem N, a l pod klawiszem U, przez co klawisze kursora są rozproszone w trzech rzędach zamiast znajdować się pod czterema palcami.
Istnieją dwa praktyczne rozwiązania i oba mają swoich użytkowników.
Pozostawienie ustawień domyślnych i ponowna nauka pozycji. Nic w konfiguracji nie ulega awarii, wszystkie wtyczki działają poprawnie, a każda wskazówka dotycząca Vim napisana przez inne osoby pozostaje w pełni aktualna.
Alternatywnie można zmapować cztery klawisze znajdujące się pod prawą dłonią w miejscu, gdzie wcześniej znajdowały się hjkl. W układzie Colemak klawisze te odpowiadają h, n, e oraz i. W układzie Colemak-DH te same cztery fizyczne klawisze odpowiadają m, n, e oraz i, ponieważ wariant DH zamienia miejscami H oraz M.
noremap n j
noremap e k
noremap i l
noremap l i
noremap k nKlawisz n przesuwa teraz kursor w dół, e w górę, i w prawo, a h już wcześniej odpowiadał za ruch w lewo. Ostatnie dwie linie przywracają polecenia, które zostały zastąpione: l uruchamia tryb wstawiania, a k powtarza ostatnie wyszukiwanie. Należy zastosować to samo podejście dla wielkich liter, w przeciwnym razie użycie Shift wraz z klawiszem kursora wywoła nieoczekiwane zachowanie.
Opcja langmap w Vim wykonuje podobne zadanie przy użyciu mniejszej liczby linii:
set langmap=nj,ek,il,li,knKażda para jest odczytywana jako znak wpisany, po którym następuje znak, na który Vim ma zareagować. Dotyczy to wyłącznie trybu normalnego, więc w trybie wstawiania tekst w układzie Colemak jest wpisywany normalnie. W dokumentacji pomocy Vim opisano dwa ograniczenia: langmap nie ma zastosowania do kombinacji z Ctrl lub Alt, a mapowania wtyczek utworzone dla klawiszy domyślnych mogą działać w tym trybie w sposób nieprzewidywalny.
Niezależnie od wyboru, należy zdecydować się raz. Mapowanie porzucone po miesiącu kosztuje kolejny miesiąc nauki.
Co dzieje się ze skrótami terminalowymi
Kod sterujący terminala pochodzi od znaku, a nie od fizycznego klawisza, dlatego każdy skrót Ctrl przemieszcza się wraz z układem klawiatury. Skróty Ctrl+C, Ctrl+Z, Ctrl+X oraz Ctrl+V zachowują swoje pozycje, ponieważ układ Colemak celowo pozostawia klawisze Z, X, C i V w miejscach, w których znajdują się w układzie QWERTY.
Cztery skróty używane codziennie zmieniają swoje położenie. Ctrl+D, kończący wprowadzanie danych, znajduje się teraz w miejscu, gdzie w QWERTY jest G. Ctrl+R, służący do wyszukiwania w historii, znajduje się tam, gdzie w QWERTY jest S. Ctrl+E, przenoszący kursor na koniec linii, znajduje się tam, gdzie w QWERTY jest K. Ctrl+U, czyszczący linię, znajduje się tam, gdzie w QWERTY jest I.
Program tmux zachowuje swój domyślny prefiks, ponieważ klawisz B nie zmienia położenia w układzie Colemak. W wariancie Colemak-DH klawisz B przesuwa się do górnego rzędu, a wraz z nim wędruje prefiks, co jest pierwszą rzeczą, którą zauważysz, jeśli utrzymujesz długo działającą sesję tmux na serwerze VPS. Zmiana przypisania prefiksu na wybrany klawisz to modyfikacja jednowierszowa i jest łatwiejsza niż dwukrotne trenowanie tego samego odruchu.
Skróty systemowe działają według tej samej zasady. Powiązanie klawiszy Super+E przemieszcza się wraz z układem, ponieważ jest definiowane przez znak. Powiązanie Super+F1 pozostaje w tym samym miejscu, ponieważ klawisze funkcyjne nie są mapowane przez układ klawiatury.
Ile czasu zajmuje zmiana układu klawiatury
Nikt nie jest w stanie podać konkretnej liczby godzin dla Twoich dłoni. Pisanie bezwzrokowe to pamięć mięśniowa. Nie uczysz się położenia liter, lecz przebudowujesz odruch, który zamienia słowo w sekwencję ruchów palców, więc jedynym czynnikiem wspomagającym jest czas poświęcony na pisanie.
Użytkownicy zgłaszają – choć są to subiektywne dzienniki praktyki, a nie kontrolowane pomiary – że w pierwszym tygodniu osiągają znacznie mniej niż połowę swojej dotychczasowej prędkości, a powrót do dawnego tempa następuje po okresie od jednego do trzech miesięcy codziennego użytkowania. Rozpiętość między poszczególnymi osobami jest duża, więc traktuj te liczby jako ogólny zarys, a nie sztywny harmonogram.
Dwa nawyki spowalniają ten proces. Przełączanie się między QWERTY a Colemak w ciągu dnia osłabia oba odruchy, dlatego większość osób, które skutecznie dokonały zmiany, korzysta wyłącznie z nowego układu na swoim głównym komputerze. Rozpoczęcie nauki w trakcie intensywnego tygodnia pracy oznacza pisanie z błędami pod presją czasu, co wyrabia nawyk patrzenia na klawisze.
Przygotuj drogę powrotną, zanim będzie potrzebna, ponieważ moment, w którym będziesz chciał wrócić do QWERTY, to chwila, w której coś uległo awarii, a ktoś inny czeka na rozwiązanie problemu.
Jak szybko przełączyć się z powrotem na QWERTY
W środowisku X11 polecenie setxkbmap us natychmiast przywraca układ QWERTY. W konsoli to samo zadanie wykonuje sudo loadkeys us. Aby cofnąć trwałe ustawienie, należy wykonać sudo localectl set-x11-keymap us.
Przełącznik jest wygodniejszy niż polecenie, które trzeba wpisać, używając układu klawiatury, w którym pisanie jest obecnie niemożliwe:
setxkbmap -layout us,us -variant colemak, -option grp:win_space_togglePowyższa konfiguracja ładuje Colemak jako pierwszy układ, a standardowy US jako drugi; kombinacja Super+Space przełącza się między nimi. Końcowy przecinek w colemak, nie jest błędem: przypisuje on pierwszemu układowi wariant colemak, a drugiemu brak wariantu. W środowisku GNOME należy dodać oba źródła wejściowe w ustawieniach, gdzie kombinacja Super+Space domyślnie obsługuje przełączanie.
Dwa monity o hasło pojawiają się poza sesją graficzną i wymagają osobnej uwagi. Ekran logowania uruchamia się przed zastosowaniem ustawień sesji, dlatego działanie należy przetestować poprzez wylogowanie się, zamiast polegać wyłącznie na ustawieniach. Jeśli dysk jest zaszyfrowany, monit o hasło pojawia się z poziomu initramfs, który posiada własną kopię mapy klawiatury. W systemach Debian i Ubuntu należy przebudować obraz za pomocą sudo update-initramfs -u po zmianie pliku /etc/default/keyboard, a następnie wykonać restart, aby przetestować zmiany, mając jeszcze alternatywną metodę dostępu do maszyny.
Czy można zachować układ QWERTY dla jednego programu?
Układ klawiatury jest stosowany, zanim aplikacja otrzyma sygnał klawisza. Serwer X lub kompozytor zamienia kod skanowania (scancode) na znak i przekazuje go dalej, dlatego aplikacja nie może wymusić innego układu. Może jedynie zmapować otrzymane znaki. Z tego powodu poprawka dla Vim znajduje się w jego konfiguracji i dlatego nie istnieje ogólny mechanizm przełączania układu dla poszczególnych okien.
Działają dwa podejścia. Pierwsze polega na konfiguracji dla konkretnego urządzenia. Jeśli pisanie w układzie QWERTY odbywa się na oddzielnej klawiaturze, należy ustawić układ dla tego urządzenia zamiast dla całego systemu:
xinput list
setxkbmap -device 12 -layout usPobierz identyfikator z xinput list i potwierdź go, pisząc kolejno na każdej z klawiatur. sway akceptuje te same ustawienia dla poszczególnych identyfikatorów wejściowych z swaymsg -t get_inputs, a bardziej szczegółowy selektor ma pierwszeństwo przed type:keyboard.
Drugie podejście polega na wykonaniu remapowania wewnątrz aplikacji, tak jak robi to langmap w programie Vim. Gry niemal zawsze posiadają ekran przypisywania klawiszy, a zmiana klawiszy ruchu w tym miejscu zajmuje mniej czasu niż walka z układem klawiatury z zewnątrz. W przypadku programów, które nie oferują żadnej z tych opcji, należy skonfigurować przełącznik układu zgodnie z powyższym opisem i używać go przed uruchomieniem aplikacji.
FAQ
Czy muszę ustawiać układ Colemak na moim VPS?
Nie, jeśli logujesz się przez SSH. SSH przesyła znaki, więc układ klawiatury jest interpretowany na laptopie przed wysłaniem danych, a serwer otrzymuje te same bajty, co w przypadku użytkownika QWERTY. Wyjątkiem jest konsola przeglądarkowa w panelu dostawcy, która łączy się z maszyną wirtualną jako klawiatura i korzysta z mapy klawiszy konsoli serwera. Ta konsola stanowi ścieżkę ratunkową w razie awarii SSH, więc zmieniaj jej ustawienia tylko wtedy, gdy masz pewność, i przetestuj je, dopóki SSH działa.
Czy powinienem uczyć się Colemak czy Colemak-DH?
Oba układy wymagają ponownej nauki pisania w porównaniu do QWERTY, więc wybierz ten, który jest dla Ciebie wygodniejszy. Colemak-DH zmienia położenie klawiszy D, B i G oraz zamienia miejscami H i M, ponieważ standardowy Colemak wymaga sięgania palcem wskazującym do środkowej kolumny przy wpisywaniu D i H. Nazwy wariantów XKB to colemak oraz colemak_dh, a colemak_dh_iso dotyczy klawiatur z dodatkowym klawiszem obok lewego Shift. Uruchom localectl list-x11-keymap-variants us | grep colemak, aby sprawdzić, które z nich są dostępne w systemie.
Co dzieje się z klawiszami hjkl w Vim przy układzie Colemak?
h pozostaje na swoim miejscu. j przesuwa się pod klawisz Y z układu QWERTY, k pod N, a l pod U, przez co klawisze kursora rozpraszają się na trzy rzędy. Możesz nauczyć się ich nowych pozycji, co zachowa zgodność wszystkich wtyczek i poradników, albo zmapować cztery klawisze pod prawą ręką: h, n, e oraz i w układzie Colemak, lub m, n, e oraz i w Colemak-DH. Opcja langmap w Vim wykonuje to samo zadanie dla trybu normalnego, choć nie dotyczy kombinacji z Ctrl i może powodować konflikty z mapowaniami wtyczek.
Ile czasu zajmie powrót do dawnej prędkości pisania?
Należy liczyć się z tygodniami, a nie dniami, ponieważ jest to kwestia pamięci mięśniowej, którą buduje się wyłącznie przez praktykę. Dzienniki postępów użytkowników zazwyczaj wskazują, że w pierwszym tygodniu prędkość jest znacznie niższa niż połowa dotychczasowej, a powrót do niej następuje po jednym do trzech miesięcy codziennego używania. Naprzemienne używanie QWERTY i Colemak wydłuża ten proces, ponieważ żaden z odruchów nie ma szans się utrwalić.
Dlaczego polecenie setxkbmap nie zadziałało na moim pulpicie?
Prawie na pewno dlatego, że sesja działa w środowisku Wayland. W Wayland to kompozytor zarządza mapą klawiszy i przekazuje ją do każdej aplikacji, więc setxkbmap albo nie znajduje wyświetlacza, albo zmienia ustawienia tylko dla XWayland, co jest ignorowane przez natywne aplikacje. Ustaw układ w kompozytorze: klucz gsettings org.gnome.desktop.input-sources w GNOME, xkb_variant w konfiguracji sway lub stronę Layouts w ustawieniach systemowych KDE Plasma.