Tworzenie własnego pliku klawiaturowego

Istnieje możliwość tworzenia własnych układów klawiatury poprzez pliki klawiaturowe. Obecnie KTouch nie posiada edytora klawiatur, ale wciąż jest bardzo łatwo zdefiniować własną klawiaturę. Nie wymaga to nic ponad niewielką znajomością matematyki aby ustalić geometrię i nieco czasu. Najlepiej rozpocząć z istniejącym plikiem klawiatury, stworzyć kopię i po prostu dopasować linijki.

Obecnie pliki klawiatur są zwykłymi kodowanymi w UTF-8 plikami tekstowymi. W następnych wersjach KTouch, dane będą przechowywane również w plikach XML. Dlatego wyjaśnię tylko pokrótce strukturę pliku układu klawiatury.

Plik układu klawiatury zwykle rozpoczyna się od nagłówka zawierającego informacje o autorze i rodzaju klawiatury.

####################################################
#   KTouch
#    Plik układu klawiatury dla języka niemieckiego
#    Kodowanie=UTF-8
####################################################

Wszystkie linijki rozpoczynające się od '#' są uważane za komentarze. Po nagłówku, następuje blok tak zwanych klawiszy palca, oznaczających miejsca spoczynku dla wszystkich 8 palców.

#
#          Unicode  KeyChar  x    y
#
KlawiszPalca  97       A        18   20
KlawiszPalca  115      S        28   20
KlawiszPalca  100      D        38   20
KlawiszPalca  102      F        48   20
KlawiszPalca  106      J        78   20
KlawiszPalca  107      K        88   20
KlawiszPalca  108      L        98   20
KlawiszPalca  246      Ö        108  20

Klawisze mają domyślny rozmiar 8 jednostek, więc siatka 10 jednostek daje w rezultacie normalnie wyglądająca klawiaturę. Pierwsza liczba to kod Unicode znaku (liczba dziesiętna). KeyText to tekst wyświetlany na klawiszu kodowany w UTF-8 (domyślne kodowanie w nowych wersjach systemu Linux®, upewnij się tylko, że Twój edytor zapisuje pliki w formacie UTF-8).

Następna sekcje zawiera klawisze specjalne, które - poza Backspace'm i Enterem - spełniają wyłącznie funkcje dekoracyjne.

#
#           Unicode  KeyText    x     y     Width Height
#
KlawiszKontrolny  260      Tab        0     10    15    10
KlawiszKontrolny  13       Enter      138   20    12    10
KlawiszKontrolny  258      Shift      123   30    27    10
KlawiszKontrolny  264      AltGr      120   40    15    10
KlawiszKontrolny  265      Ctrl       135   40    15    10
KlawiszKontrolny  263      Alt        15    40    15    10
KlawiszKontrolny  262      Strg       0     40    15    10
KlawiszKontrolny  32       Space  30    40    90    10
KlawiszKontrolny  257      Shift      0     30    13    10
KlawiszKontrolny  259      CapsLock   0     20    18    10
KlawiszKontrolny  8        BackSpace  130   0     20    10

Tekst, który wyspecyfikujesz dla klawisza jest wyświetlany w całości na klawiaturze ekranowej. Jednak opisyShift, CapsLock, Tab, BackSpace i Enter wyświetlają odpowiednie symbole. Dzięki temu możesz użyć tych tekstów niezależnie od języka. Inne opisy, jak Ctrl i Alt muszą być jednak przetłumaczone. Geometria klawiszy funkcyjnych, to dowolny prostopadłościan, zdefiniowany poprzez górny lewy punkt x i y oraz szerokość i wysokość.

Następna sekcja zawiera wszystkie znaki na klawiaturze (poza już zdefiniowanymi klawiszami palców) które można uzyskać bez naciśnięcia klawisza Shift.

#
#          Unicode  KeyChar   x    y      FingerKeyUnicode
#
KlawiszNormalny  94       ^         0    0      97
KlawiszNormalny  49       1         10   0      97
KlawiszNormalny  50       2         20   0      115
KlawiszNormalny  51       3         30   0      100
KlawiszNormalny  52       4         40   0      102
KlawiszNormalny  53       5         50   0      102
KlawiszNormalny  54       6         60   0      102
.
.
.
KlawiszNormalny  46       .         103  30     108
KlawiszNormalny  45       -         113  30     246

Definicja tych podstawowych klawiszy jest praktycznie taka sama jak dla klawiszy palców, ale zawierają one dodatkową właściwość. Ostatni kod Unicode identyfikuje połączony klawisz palca, czyli generalnie, który palec jest używany do naciśnięcia tego klawisza.

Następna, a jednocześnie ostatnia sekcja w układzie klawiatury definiuje wszystkie klawisze uzyskiwane przez naciśnięcie klawisza modyfikującego, takiego jak na przykład Shift.

#
#           Unicode   TargetUnicode   FingerUnicode   ControllUnicode    
Komentarz
#
KlawiszUkryty   65        97              97              258                 #A
KlawiszUkryty   66        98              102             258                 #B
KlawiszUkryty   67        99              100             258                 #C
KlawiszUkryty   68        100             100             258                 #D
.
.
.
KlawiszUkryty   124       60              97              264                 #|
KlawiszUkryty   64        113             97              264                 #@

Klawisz ukryte w rzeczywistości kontrolują co powinno się zdarzyć na klawiaturze kiedy wpiszesz konkrety znak. Pierwszy kod Unicode to kod znaku który definiujesz. Druga liczba jest kodem znaku klawisza na klawiaturze (jednego z już zdefiniowanych, normalnych klawiszy) Trzecia liczba oznacza klawisz palca (gdzie spoczywa palec potrzebny do napisania tego znaku) natomiast ostatnia liczba oznacza klawisz modyfikacyjny, który musisz nacisnąć aby uzyskać ten znak.

Popatrzmy na przykład:

Potrzebujesz klawisza dużego 'R', który ma kod Unicode 82. Znak uzyskiwany gdy naciśnie się klawisz 'R' bez modyfikatora to małe 'r' o kodzie 114. Klawisz palca dla 'R' spoczywa nad klawiszem 'f' o kodzie Unicode 102. Ażeby uzyskać duże 'R' musisz nacisnąć prawy (lub lewy) Shift który ma kod 264 (nie jest to kod Unicode, lecz liczba uzyskana ze zdarzenia "keypress" w QT). Pamiętaj, że identyfikacja klawiszy sterujących, prawdopodobnie ulegnie zmianie w następnej wersji programu KTouch. Ale obecnie możesz używać kodów zawartych w innych plikach klawiatury.