Pisząc na polskiej klawiaturze (polskim układzie) mamy 4 poziomy znaków: małe, duże (+Shift), małe “polskie” (+Alt Gr) i duże “polskie” (+Alt Gr + Shift). Wielu użytkowników Linuksa zapewne zauważyło, że prawy alt można wykorzystać z każdym znakiem i uzyskać można dużo więcej znaków, niż tylko polskie, m.in. Ω, ĸ, ħ, “, º, ², ⅛, ®(kombinacje zarówno z samym Altem, jak i z Shiftem).

Ale co to jest ten Compose Key? Stare klawiatury starych komputerów (nie PC) posiadały klawisza o takiej nazwie, obecne PC-towe klawiatury nie posiadają “sprzętowych” odpowiedników. Klawisz ten służy, jak sama nazwa wskazuje, do komponowania znaków.

Gdzie on jest?

To że nigdzie nie jest napisane Compose Key, nie znaczy że go nie ma. Domyślnie może być ustawiony na Shift + Alt Gr, lecz niestety nie w polskim układzie. Klawisz ten ustawić można w ustawieniach środowiska, przykładowo w KDE:

Ustawienia systemowe → Urządzenia wejściowe → Klawiatura → Zaawansowane → Położenie klawisza Compose

Podobnie w środowisku Cinnamon i innych. Wystarczy poszukać ustawień układu klawiatury. Ja ustawiłem sobie ten klawisz na Caps Lock. Wymagany jest restart X’ów.

Co nam da ten klawisz?

Compose Key otwiera nam całą paletę dodatkowych znaków ukrytych nie pod trudnymi do zapamiętania unikodami, tylko intuicyjnymi skrótami!

Przykładowo:

  • <Compose>+<o>+<r>/<c> = ® / ©
  • Strzałki: ←, ↓, →, ↑ (<compose> + 2*strzałka)
  • Ułamki: ½, ¾, ⅘ (<compose> + 2 liczby, nie ma ułamków skracalnych np. 2/4)
  • Znak funta – Przekreślone L: <Compose> + <L> + <-> (lub na odwrót): £
  • Euro – to znak C, lub E ze znakiem = pośrodku, więc <Compose> + <e> (lub <c>) + <=> (lub na odwrót): €
  • Emotikony również się znajdą: ☺ (<Compose> + <:> + <)>)
  • Spróbuj znaleźć metodą prób i błędów skróty dla symboli: ÷, ≠, ≤, ☺, ×, ², ³, &#177

Przede wszystkim Compose Key służy do pisania niestandardowych, znaków znając ich proste skróty, zamiast długich numerów. Listę znaków, jakie można skomponować, można zobaczyć m.in. na stronie http://www.hermit.org/Linux/ComposeKeys.html, choć lepiej zajrzeć do swojego pliku /usr/share/X11/locale/en_US.UTF-8/Compose (dostępny również tutaj: Compose Key – razi. Plik nieco skrócony, waży prawie 500 KiB).

Znajomość tego klawisza może zaoszczędzić wiele czasu, które normalnie trzeba by poświęcić na znalezienie danego znaku w tablicy znaków.

Aby wejść w tryb komponowania znaków, wystarczy nacisnąć ten klawisz, nie trzeba trzymać. Następnie wpisać kombinację, jeśli nie znajdzie danej kombinacji, wprowadzanie zostanie przerwane i wrócimy do normalnego pisania. Tryb się też kończy w momencie gdy zostanie już ukończona kombinacja. Znaki mogą składać się z więcej niż 2 znaków “składowych”.

Modyfikowanie tablicy

Tablica klawiszy komponowanych wczytywana jest z pliku ~/.XCompose. Trzeba najpierw mieć jednak podstawę. Najprościej „ukraść” ją z jednej z istniejących w systemie, np.:

cp /usr/share/X11/locale/en_US.UTF-8/Compose ~/.XCompose

Następnie edytujemy plik ~/.XCompose. Jego składnia w skrócie:

<klawisze> : "<znak>"  <Unicode> #komentarz

gdzie <Multi_key> to klawisz Compose (mała nieścisłość w nazewnictwie), od niego powinien się zaczynać każdy skrót (chyba że chcecie wyeliminować dany znak z prostego użytku).

Można również stworzyć pusty plik i podobnie jak w języku C: zaincludować inny plik:

include /usr/share/X11/locale/en_US.UTF-8/Compose

“Domyślne reguły” (czyli ten plik) jest też pod “zmienną” %L.

Przy pisaniu sprawozdań z laboratoriów z fizyki używałem greckiego układu klawiszy, przerzucanie układów nie było zbyt wygodne, zrzuciłem sobie więc najczęściej używane greckie litery do tego pliku:

<Multi_key> <O> <m> : "Ω"  U03A9
<Multi_key> <o> <m> : "ω"  U03C9
<Multi_key> <p> <i> : "π"  U03C0
<Multi_key> <D> <e> : "Δ"  U0394
<Multi_key> <d> <e> : "δ"  U03B4
<Multi_key> <l> <a> : "λ"  U03BB

Unikod na końcu jest raczej tylko informacją dodatkową, ponieważ w cudzysłowach można spokojnie zamieścić więcej literek, tworząc np. makra do podpisywania się, czy też przypisując dłuższe słowa kluczowe (lub „stałe fragmenty”) w programowaniu, a bez unikodu również działa. Przy definiowaniu „skrótu” trzeba niestety używać angielskich nazw znaków. Niestety po każdej zmianie potrzebny jest restart X’ów.

Profile tablic

Pewnie zniechęciłem ostatnim zdaniem, ale to nie jest do końca prawda. Uruchamiający się program może działać na nowej tablicy Compose, wystarczy uruchomić go ze zmienną XCOMPOSEFILE ze ścieżką do nowego pliku z tablicą, przykładowo:

XCOMPOSEFILE=~/.XC1 kwrite

A czy da się przypisać na stałe? Może nie bezpośrednio, ale da: trzeba zmodyfikować plik .desktop dorzucając przed nazwę programu „XCOMPOSEFILE=/sciezka/do/tablicy/.XC1”.

Problemy w GTK+

O ile w KDE i aplikacjach w Qt wszystko działa pięknie, niektóre GTK+ stwarzają problemy, używają własnych tablic. Jest na to jednak sposób:

export GTK_IM_MODULE=xim

Tą linijkę należy dodać do autostartu, na przykład poprzez:

echo "export GTK_IM_MODULE=xim" >> ~/.bashrc

Podobne artykuły

  • Razi

    Właściwie to nie są skróty klawiszowe, tylko komponowanie znaków, nie da się tym uruchomić żadnej komendy, tylko wpisać jakiś znak (lub ciąg znaków).
    BTW. zauważyłem że po zmianie ~/.XCompose nie trzeba resetować całych X'ów, tylko programy.

    • Kasieńka

      Przyda mi się do pracy inżynierskiej :D Dzięki :*

    • A ja głupi zawsze te znaczki kopiowałem z Wikipedii :P

    • o_O

      Kcharselect?

    • Gerard Stańczak

      Nie miałem pewności jak dokładnie to opisać, faktycznie dobrałem dość nietrafny tytuł
      wina po mojej stronie, poprawione, dzięki

  • o_O

    > w KDE i aplikacjach w Qt wszystko działa pięknie,
    > niektóre GTK+ stwarzają problemy

    Bo GTK to kupa gówna i nawet nie dorasta do pięt Qt.
    Nawwt porównywanie tych dwuch bibliotek jest obrazą dla Qt…

    • Razi

      Za to ten standardowy system wprowadzania znaków w GTK pozwala wprowadza łatwo Unikody rcznie. Poza tym GTK nie jest gorsze od Qt, tylko zastosowane jest inne podejście. Osobiście mi si sposób rysowania bardziej podoba w GTK niż w Qt (te babranie się z QPen i QBrush osobno, gdy chcę tylko inny kolor…). W obu frameworkach nie podoba mi si nazewnictwo funkcji/metod, preferuję te z Javy.
      Poza tym GTK jest rozwiązaniem lżejszym. Osobiście preferuję Qt, ale GTK nie wybrzydzam.

    • o_O (wiecznie krytykujący trollu), pisze się "dwóch".