Hello, I am having some trouble compiling my keyboard. Starting on line 294, all non-commented lines of code are returning the error, “Error: 4054 Statement extended is not currently supported in context”. I tried searching around for information about the error message, but couldn’t find much.
It appears that it has to do with creating rules with context, but by using the actual key names rather than the characters they produce.
Here is my code:
c
c Keyman keyboard generated by ImportKeyboard
c Imported: 2024-03-11 14:40:31
c
c Source Keyboard File: KBDLA.DLL
c Source KeyboardID: 0000080a
c
c
store(&Version) "10.0"
store(&NAME) 'Test Teclado Quechua'
store(&TARGETS) 'any'
store(&VISUALKEYBOARD) 'test_teclado_quechua.kvks'
store(&BITMAP) 'test_teclado_quechua.ico'
store(&LAYOUTFILE) 'test_teclado_quechua.keyman-touch-layout'
store(©RIGHT) '©'
store(&KEYBOARDVERSION) '1.0'
begin Unicode > use(main)
c vea un mapa del teclado en https://help.keyman.com/developer/language/guide/virtual-keys
c Lo que aparece en [corchetes] es el nombre de la misma tecla física en el teclado. Su nombre por lo general se basa en la letra o carácter que tiene en el teclado inglés.
c Los códigos que empiezan con U+ y que son seguidas por un código alfanumérico de 4 dígitos son los códigos Unicode, que especifican un carácter.
c En este idioma de programación, la letra c empieza un comentario. Al final de cada Línea he puesto "c | " y después el carácter en sí
group(main) using keys
+ [K_SPACE] > U+0020 c | (hace un espacio)
+ [K_0] > U+0030 c | 0
+ [SHIFT K_0] > U+003d c | =
+ [K_1] > U+0031 c | 1
+ [SHIFT K_1] > U+0021 c | !
+ [K_2] > U+0032 c | 2
+ [SHIFT K_2] > U+0022 c | "
+ [K_3] > U+0033 c | 3
+ [SHIFT K_3] > U+0023 c | #
+ [K_4] > U+0034 c | 4
+ [SHIFT K_4] > U+0024 c | $
+ [K_5] > U+0035 c | 5
+ [SHIFT K_5] > U+0025 c | %
+ [K_6] > U+0036 c | 6
+ [SHIFT K_6] > U+0026 c | &
+ [K_7] > U+0037 c | 7
+ [SHIFT K_7] > U+002f c | /
+ [K_8] > U+0038 c | 8
+ [SHIFT K_8] > U+0028 c | (
+ [K_9] > U+0039 c | 9
+ [SHIFT K_9] > U+0029 c | )
+ [NCAPS K_A] > U+0061 c | a | cuando el usuario teclea la tecla de A, pone una "a"
+ [CAPS K_A] > U+0041 c | A | cuando el usuario teclea la tecla de A y el Bloq Mayúscula está activado, pone una "A"
+ [NCAPS SHIFT K_A] > U+0041 c | A | cuando el usuario teclea la tecla Mayúscula y después la tecla de A, pone una "A"
+ [CAPS SHIFT K_A] > U+0061 c | a | cuando el usuario teclea la tecla Mayúscula y después la tecla de A, y el Bloq Mayúscula está activado, pone una "a"
+ [NCAPS K_B] > U+0062 c | b
+ [CAPS K_B] > U+0042 c | B
+ [NCAPS SHIFT K_B] > U+0042 c | B
+ [CAPS SHIFT K_B] > U+0062 c | b
+ [NCAPS K_C] > U+0063 c | c
+ [CAPS K_C] > U+0043 c | C
+ [NCAPS SHIFT K_C] > U+0043 c | C
+ [CAPS SHIFT K_C] > U+0063 c | c
+ [NCAPS K_D] > U+0064 c | d
+ [CAPS K_D] > U+0044 c | D
+ [NCAPS SHIFT K_D] > U+0044 c | D
+ [CAPS SHIFT K_D] > U+0064 c | d
+ [NCAPS K_E] > U+0065 c | e
+ [CAPS K_E] > U+0045 c | E
+ [NCAPS SHIFT K_E] > U+0045 c | E
+ [CAPS SHIFT K_E] > U+0065 c | e
+ [NCAPS K_F] > U+0066 c | f
+ [CAPS K_F] > U+0046 c | F
+ [NCAPS SHIFT K_F] > U+0046 c | F
+ [CAPS SHIFT K_F] > U+0066 c | f
+ [NCAPS K_G] > U+0067 c | g
+ [CAPS K_G] > U+0047 c | G
+ [NCAPS SHIFT K_G] > U+0047 c | G
+ [CAPS SHIFT K_G] > U+0067 c | g
+ [NCAPS K_H] > U+0068 c | h
+ [CAPS K_H] > U+0048 c | H
+ [NCAPS SHIFT K_H] > U+0048 c | H
+ [CAPS SHIFT K_H] > U+0068 c | h
+ [NCAPS K_I] > U+0069 c | i
+ [CAPS K_I] > U+0049 c | I
+ [NCAPS SHIFT K_I] > U+0049 c | I
+ [CAPS SHIFT K_I] > U+0069 c | i
+ [NCAPS K_J] > U+006a c | j
+ [CAPS K_J] > U+004a c | J
+ [NCAPS SHIFT K_J] > U+004a c | J
+ [CAPS SHIFT K_J] > U+006a c | j
+ [NCAPS K_K] > U+006b c | k
+ [CAPS K_K] > U+004b c | K
+ [NCAPS SHIFT K_K] > U+004b c | K
+ [CAPS SHIFT K_K] > U+006b c | k
+ [NCAPS K_L] > U+006c c | l
+ [CAPS K_L] > U+004c c | L
+ [NCAPS SHIFT K_L] > U+004c c | L
+ [CAPS SHIFT K_L] > U+006c c | l
+ [NCAPS K_M] > U+006d c | m
+ [CAPS K_M] > U+004d c | M
+ [NCAPS SHIFT K_M] > U+004d c | M
+ [CAPS SHIFT K_M] > U+006d c | m
+ [NCAPS K_N] > U+006e c | n
+ [CAPS K_N] > U+004e c | N
+ [NCAPS SHIFT K_N] > U+004e c | N
+ [CAPS SHIFT K_N] > U+006e c | n
+ [NCAPS K_O] > U+006f c | o
+ [CAPS K_O] > U+004f c | O
+ [NCAPS SHIFT K_O] > U+004f c | O
+ [CAPS SHIFT K_O] > U+006f c | o
+ [NCAPS K_P] > U+0070 c | p
+ [CAPS K_P] > U+0050 c | P
+ [NCAPS SHIFT K_P] > U+0050 c | P
+ [CAPS SHIFT K_P] > U+0070 c | p
+ [NCAPS K_Q] > U+0071 c | q
+ [CAPS K_Q] > U+0051 c | Q
+ [NCAPS SHIFT K_Q] > U+0051 c | Q
+ [CAPS SHIFT K_Q] > U+0071 c | q
+ [NCAPS RALT K_Q] > U+0040 c | @
+ [NCAPS K_R] > U+0072 c | r
+ [CAPS K_R] > U+0052 c | R
+ [NCAPS SHIFT K_R] > U+0052 c | R
+ [CAPS SHIFT K_R] > U+0072 c | r
+ [NCAPS K_S] > U+0073 c | s
+ [CAPS K_S] > U+0053 c | S
+ [NCAPS SHIFT K_S] > U+0053 c | S
+ [CAPS SHIFT K_S] > U+0073 c | s
+ [NCAPS K_T] > U+0074 c | t
+ [CAPS K_T] > U+0054 c | T
+ [NCAPS SHIFT K_T] > U+0054 c | T
+ [CAPS SHIFT K_T] > U+0074 c | t
+ [NCAPS K_U] > U+0075 c | u
+ [CAPS K_U] > U+0055 c | U
+ [NCAPS SHIFT K_U] > U+0055 c | U
+ [CAPS SHIFT K_U] > U+0075 c | u
+ [NCAPS K_V] > U+0076 c | v
+ [CAPS K_V] > U+0056 c | V
+ [NCAPS SHIFT K_V] > U+0056 c | V
+ [CAPS SHIFT K_V] > U+0076 c | v
+ [NCAPS K_W] > U+0077 c | w
+ [CAPS K_W] > U+0057 c | W
+ [NCAPS SHIFT K_W] > U+0057 c | W
+ [CAPS SHIFT K_W] > U+0077 c | w
+ [NCAPS K_X] > U+0078 c | x
+ [CAPS K_X] > U+0058 c | X
+ [NCAPS SHIFT K_X] > U+0058 c | X
+ [CAPS SHIFT K_X] > U+0078 c | x
+ [NCAPS K_Y] > U+0079 c | y
+ [CAPS K_Y] > U+0059 c | Y
+ [NCAPS SHIFT K_Y] > U+0059 c | Y
+ [CAPS SHIFT K_Y] > U+0079 c | y
+ [NCAPS K_Z] > U+007a c | z
+ [CAPS K_Z] > U+005a c | Z
+ [NCAPS SHIFT K_Z] > U+005a c | Z
+ [CAPS SHIFT K_Z] > U+007a c | z
+ [K_LBRKT] > dk(00b4) c | Esta tecla pone los acentos encima de los vocales en español. ( " ´ " ). Es una tecla muerta.
+ [SHIFT K_LBRKT] > dk(00a8) c | Esta tecla (con Mayúscula) pone los umlaut encima de los vocales en español. ( " ¨ " ). Es una tecla muerta.
+ [K_RBRKT] > U+002b c | +
+ [SHIFT K_RBRKT] > U+002a c | *
+ [RALT K_RBRKT] > U+007e c | ~
+ [K_COMMA] > U+002c c | ,
+ [SHIFT K_COMMA] > U+003b c | ;
+ [K_SLASH] > U+002d c | -
+ [SHIFT K_SLASH] > U+005f c | _
+ [K_PERIOD] > U+002e c | .
+ [SHIFT K_PERIOD] > U+003a c | :
+ [K_BKSLASH] > U+007d c | }
+ [SHIFT K_BKSLASH] > U+005d c | ]
+ [RALT K_BKSLASH] > dk(0060) c | alt derecho más "}" hace una "tecla muerta virtual" que pondrá un "`" encima del vocal siguiente. Por ejemplo: ALT-DERECHO + "}" + e > ê
+ [NCAPS K_COLON] > U+00f1 c | ñ
+ [CAPS K_COLON] > U+00d1 c | Ñ
+ [NCAPS SHIFT K_COLON] > U+00d1 c | Ñ
+ [CAPS SHIFT K_COLON] > U+00f1 c | ñ
+ [K_HYPHEN] > U+0027 c | '
+ [SHIFT K_HYPHEN] > U+003f c | ?
+ [RALT K_HYPHEN] > U+005c c | \
+ [K_BKQUOTE] > U+007c c | |
+ [SHIFT K_BKQUOTE] > U+00b0 c | °
+ [RALT K_BKQUOTE] > U+00ac c | ¬
+ [K_EQUAL] > U+00bf c | ¿
+ [SHIFT K_EQUAL] > U+00a1 c | ¡
+ [K_QUOTE] > U+007b c | {
+ [SHIFT K_QUOTE] > U+005b c | [
+ [RALT K_QUOTE] > dk(005e) c | alt derecho más "{" hace una "tecla muerta virtual" que pondrá un "^" encima del vocal siguiente.
c | Por ejemplo: ALT-DERECHO + "{" + e > ê. También, para conseguir el "^" solo, solo hay que teclear
c | Alt-DERECHO + "{" + ESPACIO > "^"
+ [K_oE2] > U+003c c | <
+ [SHIFT K_oE2] > U+003e c | >
match > use(deadkeys)
group(deadkeys)
c | "store(vocales) A E I O U" quiere decir, "recuerda esta lista de caracteres que nombro 'vocales'
c | "store(vocales_con_acentos) Á E Í Ó U" quiere decir, "recuerda esta lista de caracteres que nombro 'vocales_con_acentos'
c | "dk(tecla_muerta_de_acento) any(vocales) > index(vocales_con_acentos, 2)" quiere decir, "Cuando tecleo la tecla muerta de acento
c | y después un carácter en la lista "vocales", pone el carácter de la lista "vocales_con_acentos" que aparece en la misma posición
c | del carater en la lista de "vocales". Por elemplo, "´" + "e" > "é".
store(dkf00b4) U+0020 U+0061 U+0041 U+0065 U+0045 U+0069 U+0049 U+006f U+004f U+0075 U+0055 U+0079 U+0059 c | a A e E i I o O u U y Y
store(dkt00b4) U+00b4 U+00e1 U+00c1 U+00e9 U+00c9 U+00ed U+00cd U+00f3 U+00d3 U+00fa U+00da U+00fd U+00dd c | ´ á Á é É í Í ó Ó ú Ú ý Ý
dk(00b4) any(dkf00b4) > index(dkt00b4, 2)
store(dkf00a8) U+0020 U+0061 U+0041 U+0065 U+0045 U+0069 U+0049 U+006f U+004f U+0075 U+0055 U+0079 c | a A e E i I o O u U y
store(dkt00a8) U+00a8 U+00e4 U+00c4 U+00eb U+00cb U+00ef U+00cf U+00f6 U+00d6 U+00fc U+00dc U+00ff c | ¨ ä Ä ë Ë ï Ï ö Ö ü Ü ÿ
dk(00a8) any(dkf00a8) > index(dkt00a8, 2)
store(dkf0060) U+0020 U+0061 U+0041 U+0065 U+0045 U+0069 U+0049 U+006f U+004f U+0075 U+0055 c | a A e E i I o O u U
store(dkt0060) U+0060 U+00e0 U+00c0 U+00e8 U+00c8 U+00ec U+00cc U+00f2 U+00d2 U+00f9 U+00d9 c | ` à À è È ì Ì ò Ò ù Ù
dk(0060) any(dkf0060) > index(dkt0060, 2)
store(dkf005e) U+0020 U+0061 U+0041 U+0065 U+0045 U+0069 U+0049 U+006f U+004f U+0075 U+0055 c | a A e E i I o O u U
store(dkt005e) U+005e U+00e2 U+00c2 U+00ea U+00ca U+00ee U+00ce U+00f4 U+00d4 U+00fb U+00db c | ^ â Â ê Ê î Î ô Ô û Û
dk(005e) any(dkf005e) > index(dkt005e, 2)
c | inicio de modificaciones para el teclado Quechua
c | == sección de consonantes ==
c | == Habilitar consonantes con acento ==
store(consonantes_sin_tilde) U+0063 U+0043 U+0072 U+0052 U+0073 U+0053 c | c C r R s S
store(consonantes_con_tilde) U+0107 U+0106 U+0155 U+0154 U+015B U+015A c | ć Ć ŕ Ŕ ś Ś
dk(00b4) any(consonantes_sin_tilde) > index(consonantes_con_tilde, 2) c | usa la tecla "´" para poner el acento, igual como los vocales
[K_BKQUOTE] any(consonantes_sin_tilde) > index(consonantes_con_tilde, 2) c | usa la tecla "|" ("`" en teclados norteamericanos) para lograr lo mismo que "'" (método heredero)
c | == Habilitar la C con circunflejo ==
store(c) U+0063 U+0043 c | c C
store(c_con_circunflejo) U+0109 U+0108 c | ĉ Ĉ
dk(005e) any(c) > index(c_con_circunflejo, 2) c | AltDerecho + "{" + "c" > "ĉ"
[SHIFT K_6] any(c) > index(c_con_circunflejo, 2) c | Mayús + "6" + c" > "ĉ"
c | == Habilitar consonantes con caron ==
store(consonantes_sin_caron) U+0063 U+0043 U+0073 U+0053 c | c C s S
store(consonantes_con_caron) U+010D U+010C U+0161 U+0160 c | č Č š Š
[SHIFT K_5] any(consonantes_sin_caron) > index(consonantes_con_caron, 2) c | Mayús + "5" + c > "č"
c | == sección de puntuación ==
c | == Habilitar menor-que y mayor-que en teclados norteamericanos
[ALT K_COMMA] > U+003C c | Alt + "," = "<"
[ALT K_PERIOD] > U+003E c | Alt + "." = ">"
c | == Habilitar las comillas angulares simples y dobles ==
c | ==== Primer método. Funciona en teclados Latinoamericanos. ====
[K_oE2] [K_oE2] > U+00AB c | "<" + "<" = "«"
[K_oE2] [K_oE2] [K_oE2] > U+2039 c | "<" + "<" + "<" = "‹" No estoy seguro si esto va a funcionar
[SHIFT K_oE2] [SHIFT K_oE2] > U+00BB c | ">" + ">" = "»"
[SHIFT K_oE2] [SHIFT K_oE2] [SHIFT K_oE2] > U+203A c | ">" + ">" + ">" = "›" No estoy seguro si esto va a funcionar
c | ==== segundo método. Funciona en teclados norteamericanos. ====
[ALT K_COMMA] [ALT K_COMMA] > U+00AB c | Alt + "," + "," > "«"
[ALT K_COMMA] [ALT K_COMMA] [ALT K_COMMA] > U+2039 c | Alt + "," + "," + "," > "‹" . No estoy seguro si esto va a funcionar
[ALT K_PERIOD] [ALT K_PERIOD] > U+00BB c | Alt + "." + "." > "»"
[ALT K_PERIOD] [ALT K_PERIOD] [ALT K_PERIOD] > U+203A c | Alt + "." + "." + "." > "›" . No estoy seguro si esto va a funcionar
[K_COLON] [K_LBRKT] > U+A78C c | ꞌ para teclear el glotal
c | == Seccion de AFI ==
c | basado en el SIL IPA Keyboard (https://help.keyman.com/keyboard/sil_ipa/1.8.6/sil_ipa),
c | pero considerando la configuración del teclado latinoamericano
[SHIFT K_SLASH] [SHIFT K_SLASH] > U+02BC c | ʼ "]" + "]" eyectiva
[SHIFT K_LBRKT] [SHIFT K_0] > U+0294 c | ʔ "?" + "=" glotal
[K_A] [SHIFT K_0] > U+0251 c | ɑ "a" + "="
[K_A] [SHIFT K_QUOTE] > U+00E6 c | æ "a" + "["
[K_O] [SHIFT K_QUOTE] > U+0254 c | ɔ "o" + "["
[K_E] [SHIFT K_0] > U+0259 c | ə "e" + "="
[K_E] [SHIFT K_QUOTE] > U+025B c | ɛ "e" + "["
[SHIFT K_G] [SHIFT K_0] > U+0262 c | ɢ "G" + "="
[K_G] [SHIFT K_0] > U+0263 c | ɣ "g" + "="
[K_H] [SHIFT K_6] > U+02B0 c | ʰ "h" + "&"
[K_I] [SHIFT K_0] > U+026A c | ɪ "i" + "="
[K_N] [SHIFT K_0] > U+0272 c | ɲ "n" + "="
[K_F] [SHIFT K_0] > U+0278 c | ɸ "f" + "="
[K_S] [SHIFT K_0] > U+0283 c | ʃ "s" + "="
[K_U] [SHIFT K_QUOTE] > U+028A c | ʊ "u" + "["
[SHIFT K_L] [SHIFT K_QUOTE] > U+028E c | ʎ "L" + "["
[K_B] [SHIFT K_0] > U+03B2 c | β "b" + "="
[K_T] [SHIFT K_0] > U+03B8 c | θ "t" + "="
[K_X] [SHIFT K_0] > U+03C7 c | χ "x" + "="
c | Keyboard name: "Winchus"? No contentious graphemes!
c | Communicate the ideas of beauty, eligance, speed!
I’m sorry all of the comments are in Spanish. They are spell-checked, so they should be fairly marchine-translatable. For every line I tried to give the desired output, then the key combination needed to generate it (assuming a Latin American keyboard).
What do I need to do differently?
Thanks so much.