Colemak z polskimi literami: warianty pl w Linuksie
Chcesz Colemaka bez utraty ą, ę, ł i ż? Wybierz wariant z układu pl zamiast us(colemak). Pokazujemy, gdzie lądują polskie litery i jak nie pomylić wariantów Colemak DH.
Colemak z polskimi literami: krótka odpowiedź
Colemak z polskimi literami działa w Linuksie bez instalowania czegokolwiek. Wystarczy wybrać wariant z układu pl, a nie z układu us. Pakiet xkeyboard-config ma w pliku symbols/pl osobną rodzinę wariantów Colemaka. W tych wariantach ą, ę, ś, ć, ń, ó, ż i ł leżą pod AltGr, na klawiszu swojej litery bazowej, a ź pod AltGr+x. Nawyk z polskiego układu programisty zostaje: AltGr+a nadal daje ą, a AltGr+s nadal daje ś.
Ogólną zmianę układu na Colemak, czyli setxkbmap, localectl i pliki konfiguracyjne, opisuje poradnik o przejściu na Colemak w Linuksie. Tamten tekst ustawia us(colemak). Tutaj opisujemy tylko to, co zmienia się dla osoby piszącej po polsku. Który wariant pl wybrać? Czym różnią się warianty DH? Gdzie najłatwiej się pomylić?
Wszystkie szczegóły układów pochodzą z plików źródłowych xkeyboard-config w Debianie, w dwóch wersjach: 2.48-1 (Debian forky i sid) oraz 2.35.1-1 (Debian 12 bookworm). Twoja dystrybucja może mieć inną wersję. Dlatego dalej pokazujemy, jak sprawdzić warianty na własnym komputerze, zanim cokolwiek zmienisz.
Jak AltGr+litera przechodzi z układu programisty do Colemaka
Polski układ programisty to w XKB (X Keyboard Extension, system opisu klawiatur w Linuksie) po prostu układ pl bez wariantu. Każdy klawisz ma w nim do czterech poziomów. Poziom 1 to zwykła litera. Poziom 2 to litera z Shiftem. Poziom 3 to AltGr, czyli prawy Alt. Poziom 4 to Shift+AltGr. Polskie litery leżą na poziomach 3 i 4. Tak wygląda wpis dla klawisza S w pliku /usr/share/X11/xkb/symbols/pl w wersji 2.48-1:
key <AC02> { [ s, S, sacute, Sacute ] };Nazwa w nawiasach ostrych to fizyczna pozycja klawisza. Nie zależy od tego, co jest nadrukowane na nakładce. AC to środkowy rząd liter, a 02 to drugi klawisz od lewej. AD to górny rząd liter, a AB dolny.
Wariant pl(colemak) w wersji 2.48-1 zaczyna się od dołączenia us(colemak). Potem nadpisuje klawisze, na których leżą litery z polskimi odpowiednikami. Oto fragment:
xkb_symbols "colemak" {
include "us(colemak)"
name[Group1]= "Polish (Colemak)";
key <AC01> { [ a, A, aogonek, Aogonek ] };
key <AC03> { [ s, S, sacute, Sacute ] };
key <AC07> { [ n, N, nacute, Nacute ] };
key <AC08> { [ e, E, eogonek, Eogonek ] };
key <AD07> { [ l, L, lstroke, Lstroke ] };W Colemaku litera s leży na <AC03>, czyli tam, gdzie w QWERTY jest D. Litera ś przesuwa się razem z nią. Polska litera leży na poziomie 3 klawisza swojej litery bazowej z jednym wyjątkiem: ź jest pod AltGr+x, a AltGr+z daje ż. Ruch „AltGr plus litera” w głowie się nie zmienia. Zmienia się tylko miejsce, w które idzie palec, a to i tak musisz przećwiczyć przy samym Colemaku.
Pełna lista dla pl(colemak) w wersji 2.48-1:
- ą: AltGr+a, klawisz
<AC01>, to samo miejsce co w QWERTY - ę: AltGr+e, klawisz
<AC08>, w QWERTY tu jest K - ś: AltGr+s, klawisz
<AC03>, w QWERTY tu jest D - ć: AltGr+c, klawisz
<AB03>, bez zmian - ń: AltGr+n, klawisz
<AC07>, w QWERTY tu jest J - ó: AltGr+o, klawisz
<AC10>, w QWERTY tu jest średnik - ł: AltGr+l, klawisz
<AD07>, w QWERTY tu jest U - ż: AltGr+z, klawisz
<AB01>, bez zmian - ź: AltGr+x, klawisz
<AB02>, bez zmian
Zwróć uwagę na ź. Tak samo jak w układzie programisty, ź jest pod AltGr+x, a AltGr+z daje ż. Kto ma ten odruch, nie musi go zmieniać.
Ten sam blok umieszcza też trzy znaki spoza polskiego alfabetu. AltGr+q daje æ. AltGr+f daje ß. AltGr+w to martwy klawisz daszka (dead circumflex), czyli klawisz, który nic nie wpisuje, dopóki nie naciśniesz następnego. Jeśli AltGr+w „połyka” znak, to właśnie dlatego.
Skąd się bierze AltGr? W wersji 2.48-1 us(colemak) dołącza us(colemak_base), a ten dołącza level3(ralt_switch). Ten wpis daje trzeci poziom pod prawym Altem. Sam pl(colemak) nie dołącza go osobno, więc dostaje go przez us(colemak).
Dlaczego Caps Lock nagle kasuje znaki
Po przejściu na pl(colemak) wiele osób zauważa, że Caps Lock działa jak Backspace. To nie jest błąd. W wersji 2.48-1 us(colemak) przypisuje klawiszowi <CAPS> symbol BackSpace. pl(colemak) dołącza us(colemak), więc dziedziczy to przypisanie. W bookworm, w wersji 2.35.1-1, us(colemak) ma tę samą zamianę:
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };Warianty DH zachowują się inaczej. Polskie warianty DH dołączają us(colemak_dh), a ten nie ma linii dla <CAPS>. W wersji 2.48-1 us(colemak_dh) dołącza tylko wspólne us(colemak_base), w którym takiej linii też nie ma. W efekcie Caps Lock w pl(colemak_dh) i pokrewnych zostaje zwykłym Caps Lockiem.
Praktyczny skutek: zmiana z colemak na wariant DH przywraca Caps Lock, a zmiana w drugą stronę go zabiera. Jeśli chcesz to zmienić, XKB ma osobne opcje dla Caps Lock. Wypisze je polecenie localectl list-x11-keymap-options | grep -i caps. Sprawdź u siebie, jak wybrana opcja działa razem z twoim wariantem, zanim zapiszesz ją na stałe.
Pułapka: ta sama nazwa Colemak-DH w dwóch wersjach
To najważniejsza część tego tekstu. Każdy wariant ma dwie nazwy. ID, na przykład colemak_dh, trafia do plików konfiguracyjnych i do localectl. Etykieta z linii name[Group1] pojawia się w panelu ustawień. W dwóch wersjach xkeyboard-config ta sama etykieta wskazuje różne ID.
W wersji 2.48-1 plik symbols/pl ma cztery warianty Colemaka:
colemak: „Polish (Colemak)”colemak_dh_ansi: „Polish (Colemak-DH)”colemak_dh: „Polish (Colemak-DH ISO)”colemak_dh_ortho: „Polish (Colemak-DH Ortholinear)”
W wersji 2.35.1-1, którą ma Debian 12 bookworm, są tylko dwa:
colemak: „Polish (Colemak)”colemak_dh: „Polish (Colemak-DH)”
W 2.35.1 nie ma colemak_dh_ansi. Etykieta „Polish (Colemak-DH)” należy tam do ID colemak_dh. W 2.48 ta sama etykieta należy do colemak_dh_ansi, a colemak_dh nazywa się „Polish (Colemak-DH ISO)”.
Różnica nie jest kosmetyczna. Stary colemak_dh z wersji 2.35.1 kładzie z na klawiszu <LSGT>, x na <AB01>, c na <AB02>, a na <AB05> stawia backslash. To układ dla klawiatury ISO. <LSGT> to dodatkowy klawisz między krótkim lewym Shiftem a Z. Klawiatura ANSI ma długi lewy Shift i tego klawisza nie ma.
Z tego wynikają dwa typowe problemy:
- Masz klawiaturę ANSI i system z wersją 2.35.1. Wybierasz jedyny dostępny Colemak-DH. Litera z i litera ż trafiają na
<LSGT>, którego fizycznie nie masz, więc nie da się ich wpisać. - Kopiujesz
XKBVARIANT="colemak_dh"ze starego poradnika na nowy system, bo w panelu widziałeś „Polish (Colemak-DH)”. W 2.48 to ID oznacza wariant ISO, a etykieta, którą widziałeś, należy docolemak_dh_ansi. Dostajesz inny układ niż ten, który testowałeś w panelu.
Zasada na przyszłość: przy wariantach DH zawsze patrz na ID, nie na etykietę. Etykiety mogą być też przetłumaczone w polskiej wersji środowiska, więc ID jest jedyną pewną nazwą.
Dla porządku, mapowanie wersji w Debianie: 2.35.1-1 jest w bookworm, 2.42-1 w trixie, a 2.48-1 w forky i sid. Pliku z wersji 2.42 nie sprawdzaliśmy. Nie sprawdzaliśmy też, które warianty mają Ubuntu 24.04 i 26.04. Dlatego następny krok wykonujesz sam, na swoim systemie.
Jak sprawdzić, które warianty pl ma twój system
Pierwsze polecenie wypisuje ID wszystkich wariantów dostępnych dla układu pl:
localectl list-x11-keymap-variants plSzukaj linii zaczynających się od colemak. Jeśli widzisz colemak_dh_ansi, masz nowszy podział na ANSI, ISO i ortholinear. Jeśli widzisz tylko colemak i colemak_dh, masz starszy układ nazw, w którym colemak_dh jest wariantem ISO.
Drugie polecenie pokazuje ID razem z etykietą, prosto z pliku źródłowego:
grep -A2 'xkb_symbols "colemak' /usr/share/X11/xkb/symbols/plKażdy blok zaczyna się linią z ID. Pod nią jest linia include, a pod nią linia name[Group1] z etykietą. Linia include mówi też, na czym wariant się opiera. include "us(colemak)" oznacza, że Caps Lock będzie Backspace'em. include "us(colemak_dh)" lub include "pl(colemak_dh_ansi)" oznacza, że Caps Lock zostaje sobą.
Który wariant Colemaka wybrać
Najpierw spójrz na klawiaturę. Długi lewy Shift bez dodatkowego klawisza obok oznacza ANSI. Krótki lewy Shift z dodatkowym klawiszem obok oznacza ISO. Klawisze ułożone w równych kolumnach, bez przesunięcia rzędów, to klawiatura ortholinear.
- Zwykły Colemak, dowolna klawiatura:
colemak. Polskie litery leżą jak w liście powyżej. - Colemak-DH na ANSI:
colemak_dh_ansi, jeśli twój system go ma. W 2.48-1 x leży na<AB01>, c na<AB02>, a z na<AB05>. Dlatego ź (AltGr+x) jest tam, gdzie w QWERTY jest Z, ć (AltGr+c) tam, gdzie X, a ż (AltGr+z) tam, gdzie B. - Colemak-DH na ISO:
colemak_dh. Od wariantu ANSI różni się tym, że z i ż leżą na<LSGT>, a na<AB05>jest backslash. - Colemak-DH na klawiaturze ortholinear:
colemak_dh_ortho. W 2.48-1 dolny rząd zaczyna się od z, x, c, d, v na<AB01>do<AB05>, więc ż, ź i ć wracają na pozycje znane z QWERTY.
Jeśli masz ANSI, chcesz DH, a system nie ma colemak_dh_ansi, nie wybieraj colemak_dh. Zostań przy colemak albo poczekaj na nowszą wersję pakietu. Po co w ogóle przenosić D i H, wyjaśnia tekst o tym, czym jest Colemak Mod-DH.
Ustawienie wariantu pl w GNOME
W GNOME układ dodajesz w panelu Klawiatura (Keyboard), w sekcji źródeł wejścia (Input Sources). Kliknij przycisk dodawania źródła (w angielskiej wersji „+ Add Input Source…”), wybierz język polski, potem wariant, i zatwierdź. Warianty są pogrupowane według języka. Zostaw na liście zwykły układ pl, żeby móc wrócić do niego jednym skrótem. Domyślnie Super+Spacja przełącza na następne źródło, a Shift+Super+Spacja na poprzednie.
GNOME domyślnie ukrywa rzadziej używane warianty. Jeśli nie widzisz polskiego Colemaka na liście, włącz pokazywanie wszystkich:
gsettings set org.gnome.desktop.input-sources show-all-sources trueTo samo możesz ustawić jednym poleceniem, bez klikania. Klucz sources przyjmuje pary typu xkb i nazwy w formacie układ+wariant. Poniższe polecenie zastępuje całą listę, więc wpisz w nim oba układy:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'pl'), ('xkb', 'pl+colemak')]"Dla wariantu DH zamień pl+colemak na pl+colemak_dh_ansi lub inne ID z listy, którą wypisał localectl.
Ustawienie wariantu pl w KDE Plasma
W Plasma 6 otwórz Ustawienia systemowe, potem Klawiatura i kartę Układy. Zaznacz opcję konfigurowania układów i kliknij Dodaj. W oknie dialogowym wybierz układ polski i jego wariant. Nazwy menu mogą się nieco różnić między wersjami Plasmy, więc w razie wątpliwości sprawdź dokumentację swojej wersji. Także tutaj porównaj etykietę z ID z poprzedniej sekcji, zanim zatwierdzisz.
Ustawienie domyślne dla całego systemu: localectl
Panel GNOME lub KDE ustawia układ dla twojej sesji. localectl ustawia domyślne mapowanie klawiatury dla X11 i dla konsoli wirtualnej. Kolejność argumentów to UKŁAD, MODEL, WARIANT, OPCJE. Wariant stoi po modelu, więc model trzeba podać:
sudo localectl set-x11-keymap pl pc105 colemak
localectl statuslocalectl status powinien teraz pokazywać układ pl i wariant colemak. Bez opcji --no-convert localectl przenosi ustawienie także na konsolę tekstową. Wybiera wtedy najbliższą pasującą mapę konsoli, która nie musi być identyczna z wariantem XKB. Sprawdź wynik na konsoli. Jeśli się nie zgadza, użyj pliku z następnej sekcji.
Na krótki test w sesji X11, bez zapisywania niczego, wystarczy setxkbmap. Pierwsze polecenie włącza polski Colemak, drugie pokazuje bieżące ustawienie, trzecie wraca do układu programisty:
setxkbmap pl -variant colemak
setxkbmap -query
setxkbmap plKonsola tekstowa: /etc/default/keyboard
W systemach w stylu Debiana standardowe miejsce ustawień klawiatury to /etc/default/keyboard. XKBLAYOUT to nazwa układu, XKBVARIANT to wariant, XKBMODEL to model (na większości platform domyślnie pc105), a XKBOPTIONS to opcje. Otwórz plik:
sudo nano /etc/default/keyboardUstaw w nim te wartości:
XKBMODEL="pc105"
XKBLAYOUT="pl"
XKBVARIANT="colemak"
XKBOPTIONS=""Zmiana nie działa od razu. Na konsoli tekstowej uruchom:
sudo setupconX nie widzi zmiany w tym pliku natychmiast. Uruchom ponownie komputer albo wywołaj:
sudo udevadm trigger --subsystem-match=input --action=changeNa Ubuntu przed edycją przeczytaj man keyboard na swoim systemie, żeby upewnić się, że opis pliku jest taki sam.
Jak sprawdzić, że polskie litery działają
Otwórz terminal albo edytor tekstu i wpisz klasyczne zdanie testowe „zażółć gęślą jaźń”. Zawiera ono wszystkie dziewięć polskich liter. Każdą poza ź wpisujesz jako AltGr plus litera bazowa, w jej nowym miejscu z Colemaka; ź wpisujesz przez AltGr+x. Potem wpisz to samo z Shiftem, żeby sprawdzić poziom 4: „ZAŻÓŁĆ GĘŚLĄ JAŹŃ”.
Jeśli zamiast polskiej litery pojawia się zwykła, AltGr nie działa jako klawisz trzeciego poziomu. Sprawdź setxkbmap -query lub localectl status, czy układ to naprawdę pl, a nie us. Jeśli w miejscu ż nic się nie dzieje, a masz klawiaturę ANSI, prawdopodobnie wybrałeś wariant ISO. Wróć do sekcji o pułapce z nazwami.
Windows i macOS
Oficjalna strona colemak.com podaje, że Colemak jest dziś fabrycznie dostępny w Windows, macOS i Linuksie, a dla starszych wersji systemów jest plik do pobrania. Osobne podstrony dla Windows i Maca wciąż opisują jednak ręczną instalację, więc szczegóły dla swojej wersji systemu sprawdź na stronie pobierania colemak.com. Nie sprawdzaliśmy, jak te wersje dają dostęp do polskich liter. Osobną drogą jest Colemak[eD] autorstwa DreymaR. Na jego liście wariantów jest lokalizacja pl. Dla Windows autor odsyła do EPKL, a dla Maca pisze, że sam niczego nie przygotował.
Ile trwa przestawienie się
Polskie litery są najmniejszym problemem. Nawyk AltGr zostaje, więc całą pracę robi nauka nowych pozycji podstawowych liter. Realistyczne tempo opisuje tekst o tym, ile trwa nauka Colemaka. Jeśli jeszcze wybierasz układ, porównanie Colemaka, Dvoraka i QWERTY pomoże zdecydować, zanim zaczniesz ćwiczyć.
FAQ
Czy w Colemaku na Linuksie zachowam polskie znaki pod AltGr?
Tak, jeśli wybierzesz wariant z układu pl, na przykład pl(colemak). W xkeyboard-config każda polska litera poza ź leży w nim na poziomie AltGr klawisza swojej litery bazowej. AltGr+a daje ą, AltGr+l daje ł, a ź jest pod AltGr+x, tak jak w polskim układzie programisty. Klawisz fizycznie przesuwa się razem z literą bazową.
Dlaczego po włączeniu Colemaka Caps Lock kasuje znaki?
pl(colemak) dołącza us(colemak), a ten przypisuje klawiszowi Caps Lock symbol BackSpace. Polskie warianty Colemak-DH opierają się na us(colemak_dh), który tej zamiany nie ma, więc w nich Caps Lock działa normalnie. Opcje XKB dla Caps Lock wypiszesz poleceniem localectl list-x11-keymap-options | grep -i caps.
Który wariant Colemak-DH wybrać na klawiaturę ANSI?
Wybierz ID colemak_dh_ansi, jeśli localectl list-x11-keymap-variants pl go pokazuje. Nie wybieraj colemak_dh, bo to wariant ISO, który kładzie z i ż na klawiszu <LSGT>. Klawiatura ANSI tego klawisza nie ma. Jeśli colemak_dh_ansi nie istnieje w twojej wersji pakietu, użyj zwykłego colemak.
Dlaczego w moim systemie nie ma wariantu colemak_dh_ansi?
Starsze wersje xkeyboard-config, na przykład 2.35.1 w Debianie 12 bookworm, mają tylko colemak i colemak_dh. W tej wersji colemak_dh nosi etykietę „Polish (Colemak-DH)” i działa jak wariant ISO. W wersji 2.48 ta sama etykieta należy do colemak_dh_ansi. Sprawdź swoje warianty poleceniem grep -A2 'xkb_symbols "colemak' /usr/share/X11/xkb/symbols/pl i zawsze kieruj się ID, nie etykietą.