Crear un teclado propio

Pódense crear teclados propios creando ficheiros de teclado. Actualmente o KTouch carece de editor de teclados, mais ainda así é bastante doado definir un teclado personalizado. Non require máis que algo de matemáticas averiguar a xeometría e algo de tempo. O mellor é comezar cun ficheiro de teclado xa existente, crear unha copia para a nova disposición do teclado e simplemente axustar as liñas.

Actualmente os ficheiros de teclado son ficheiros simples de texto codificados en UTF-8. Nunha próxima versión do KTouch, os datos almacenaranse tamén en ficheiros XML. Polo tanto, só vou explicar brevemente a estrutura dun ficheiro de teclado.

Un ficheiro de teclado normalmente comeza cun cabezallo que inclúe información acerca do autor e o tipo de teclado.

####################################################
#    KTouch
#    Keyboard layout file for german keyboard layout
#    Code=UTF-8
####################################################

Todas as liñas que comecen co carácter "#" considéranse comentarios. Despois da sección do cabezallo sigue un bloque do que se chaman « teclas dos dedos », que indica onde repousa cada un dos oito dedos.

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

As teclas teñen por omisión un tamaño de 8 unidades, polo que empregar unha grella de 10 unidades crea un teclado de aparencia normal. O primeiro número é o código do carácter unicode como número decimal. KeyText é o texto impreso na tecla codificado como UTF-8 (automático nas versións recentes do Linux®; asegúrate de que o editor garda os ficheiros no formato UTF-8).

A sección seguinte contén teclas especiais que son, aparte da que borra para tras e o Intro, simplemente decorativas.

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

O texto especificado para a tecla imprímese completamente no teclado. Porén, o KTouch debuxa os símbolos axeitados para « Maiúsculas », « Bloqueo de maiúsculas »« Tabulador », « Borrado para tras » e « Intro ». Por iso se poden empregar estes textos de tecla independentemente da lingua. Porén, hai que traducir os outros, como Ctrl ou Alt. A xeometría das teclas de control poden ser calquera rectángulo, definido con coordenadas x e y arriba á esquerda e largura e altura.

A sección seguinte contén todos os caracteres do teclado (excepto as teclas dos dedos xa definidas) que se poden escribir sen premer as Maiúsculas.

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

A definición destas teclas ou caracteres primarios é basicamente a mesma que as teclas dos dedos, mais inclúen unha propiedade adicional. O derradeiro carácter unicode identifica a tecla do dedo asociada. Basicamente, que dedo hai que empregar para premer esta tecla.

A seguinte, e derradeira, sección dunha disposición de teclado define todas as teclas que se premen empregando unha tecla modificadora como a das maiúsculas.

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

As « teclas acochadas » realmente controlan o que acontece no teclado cando se escribe determinado carácter. O primeiro número unicode é o código do carácter do carácter que se defina. O segundo número é o código do carácter da tecla do teclado (unha das teclas normais xa definidas). O terceiro número indica unha tecla de dedo (onde repousa o dedo que hai que empregar con esa tecla) e o derradeiro número indica a tecla modificadora que hai que premer para obter ese carácter.

Vexamos un exemplo:

Queremos definir o carácter "R" maiúsculo. Ten o unicode 82. O carácter que se obtén cando se preme a tecla "R" sen modificar é o "r" minúsculo, co unicode 114. O dedo do "R" repousa sobre a tecla "f", que ten o unicode 102. Para obter o "R" hai que premer a tecla de maiúsculas dereita (ou esquerda), que ten o unicode 264 (realmente non se trata dun unicode, senón do código que se obtén dun evento "premer tecla" do Qt). Lembra que a identificación das teclas de control mudará probabelmente na vindeira versión do KTouch. Mais, polo de agora, pódense empregar os códigos utilizados noutros ficheiros de teclado.