Tablas de teclado para SMSQ/E
Moderador: Sir Cilve Sinclair
-
- Sabreman
- Mensajes: 396
- Registrado: Dom Feb 24, 2008 10:56 pm
Tablas de teclado para SMSQ/E
¿Alguien tiene documentación o sabe algo sobre las "keyboard tables" para el SMSQ/E? Concretamente estoy buscando dichas tablas para el teclado español o alguna documentación de cómo construirlas.
.
.
-
- Jack The Nipper
- Mensajes: 112
- Registrado: Mar Abr 08, 2008 9:00 am
Re: Tablas de teclado para SMSQ/E
Yo me he creado unas tablas basándome en la información encontrada en http://www.dilwyn.me.uk/docs/smsqegd2/smsqmodu.zip.
Primero hay que ejecutar este programa:
Esto genera un fichero llamado "win1_langes_rext".
Después, para que entre en funcionamiento, hay que hacer esto:
Primero hay que ejecutar este programa:
Código: Seleccionar todo
1000 fch=FOP_OVER("win1_langes_rext")
1010 IF fch<0 THEN PRINT #0;"Error"!fch:STOP
1020 :
1030 BPUT #fch,$70,$30 :REMark MOVEQ #sms.lldm,D0
1040 BPUT #fch,$43,$FA,$0,$6 :REMark LEA lang_mod,A1
1050 BPUT #fch,$4E,$41 :REMark TRAP #1
1060 BPUT #fch,$4E,$75 :REMark RTS
1070 : :REMark lang_mod:
1080 :
1090 ldm_link=0
1100 MakeLDM 0,0,34,ldm_link,spa_pref
1110 MakeLDM 1,0,34,ldm_link,spa_kbd
1120 MakeLDM 3,0,34,ldm_link,spa_ms0
1130 MakeLDM 3,4,34,ldm_link,spa_ms4
1140 MakeLDM 3,8,34,ldm_link,spa_ms8
1150 MakeLDM 3,12,34,ldm_link,spa_ms12
1160 :
1170 SetLDMPointer spa_pref
1180 BPUT #fch,"E "
1190 BPUT #fch,0,34,0,0
1200 :
1210 SetKbdHeader spa_kbd,34,512 : REMark - set IBM PC size keyboard
1220 :
1230 BPUT #fch, 0, 27,'1','2','3','4','5','6','7','8','9','0', 39,179,194, 9
1240 BPUT #fch,'q','w','e','r','t','y','u','i','o','p',159,'+', 10, 0,'a','s'
1250 BPUT #fch,'d','f','g','h','j','k','l','ñ',150,'º', 0,'ç','z','x','c','v'
1260 BPUT #fch,'b','n','m',',','.','-', 0,'*', 0,' ',224,232,236,240,244,248
1270 BPUT #fch, 0, 0, 0, 0, 0, 0,249,'7','8','9','-','4','5','6','+','1'
1280 BPUT #fch,'2','3','0',',', 0, 0,'<', 0, 0, 0, 0, 0, 0, 0, 0, 0
1290 BPUT #fch, 0, 0, 0, 0, 0, 0, 0,213,208,212,'-',192, 0,200,'+',221
1300 BPUT #fch,216,220,246,202, 0,'/', 0, 0, 0, 0, 0, 0, 10, 0, 0, 0
1310 :
1320 BPUT #fch, 0, 27,'!','"', 0,'$','%','&','/','(',')','=','?','¿',198,253
1330 BPUT #fch,'Q','W','E','R','T','Y','U','I','O','P','^','*',254, 0,'A','S'
1340 BPUT #fch,'D','F','G','H','J','K','L','Ñ',132,130, 0,'Ç','Z','X','C','V'
1350 BPUT #fch,'B','N','M',';',':','_', 0,'*', 0,252,228,234,238,242,246,250
1360 BPUT #fch, 0, 0, 0, 0, 0, 0,251,'7','8','9','-','4','5','6','+','1'
1370 BPUT #fch,'2','3','0',',', 0, 0,'>', 0, 0, 0, 0, 0, 0, 0, 0, 0
1380 BPUT #fch, 0, 0, 0, 0, 0, 0, 0,213,212,212,'-',196, 0,204,'+',221
1390 BPUT #fch,220,220,246,206, 0,'/', 0, 0, 0, 0, 0, 0,254, 0, 0, 0
1400 :
1410 BPUT #fch, 0, 0,'|','@','#',$7E,$B5, 0,$60,$9D,$9E,$B7,$9C, 0,194, $9
1420 BPUT #fch, 17, 23, 5, 18, 20, 25, 21, 9, 15, 16,'[',']', $A, 0, 1, 19
1430 BPUT #fch, 4, 6, 7, 8, 10, 11, 12,'~','{','\', 0,'}', 26, 24, 3, 22
1440 BPUT #fch, 2, 14, 13, 0,$B6,$BB, 0,'*', 0,$FF,226,233,237,241,245,249
1450 BPUT #fch, 0, 0, 0, 0, 0, 0,249,'7','8','9','-','4','5','6','+','1'
1460 BPUT #fch,'2','3','0','.', 0, 0,'©', 0, 0, 0, 0, 0, 0, 0, 0, 0
1470 BPUT #fch, 0, 0, 0, 0, 0, 0, 0,215,210,214,'-',194, 0,202,'+',223
1480 BPUT #fch,218,222,247,202, 0,'/', 0, 0, 0, 0, 0, 0, $A, 0, 0, 0
1490 :
1500 BPUT #fch, 0,$1F, 0, 0, 0, 0, 0, 0,134, 0, 0,$1E,185,184,198,253
1510 BPUT #fch, 0, 0,139, 0, 0, 0, 0, 0, 0,$B1,$BE,$BC,254, 0,$AC, 0
1520 BPUT #fch,$AD,$B2, 0, 0, 0, 0,$AF, 0,$BF,$A2, 0,$BD, 0, 0,$AE, 0
1530 BPUT #fch, 0, 0,$B0, 0, 0, 0, 0,'*', 0,252,230,235,239,243,247,251
1540 BPUT #fch, 0, 0, 0, 0, 0, 0,251,'7','8','9','-','4','5','6','+','1'
1550 BPUT #fch,'2','3','0','.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1560 BPUT #fch, 0, 0, 0, 0, 0, 0, 0,215,214,214,'-',198, 0,206,'+',223
1570 BPUT #fch,222,222,247,206, 0,'/', 0, 0, 0, 0, 0, 0,254, 0, 0, 0
1580 :
1590 nsid=FPOS(#fch)
1600 BPUT #fch,FILL$(CHR$(0),256)
1610 BPUT #fch\nsid+94,13
1620 BPUT #fch\nsid+126,26
1630 BPUT #fch\nsid+132,39
1640 BPUT #fch\nsid+134,52
1650 BPUT #fch\nsid+139,65
1660 BPUT #fch\nsid+150,78
1670 BPUT #fch\nsid+159,91
1680 BPUT #fch\nsid+256
1690 BPUT #fch," AENOUaeinou",0
1700 BPUT #fch,"^AENOUâêînôû",0
1710 BPUT #fch,"~ÃEÑÕUãeiñõu",0
1720 BPUT #fch,'"ÄENÖÜäëïnöü',0
1730 BPUT #fch,"/AENØUaeinøu",0
1740 BPUT #fch,"eÆENŒUæeinœu",0
1750 BPUT #fch,"'AÉNOUáéínóú",0
1760 BPUT #fch,"`AENOUàèìnòù",0
1770 :
1780 :
1790 :
1800 SetMessageHeader spa_ms0,34,23
1810 MessageNL "no completado"
1820 MessageNL "tarea inválida"
1830 MessageNL "sin memoria"
1840 MessageNL "fuera de rango"
1850 MessageNL "memoria intermedia llena"
1860 MessageNL "canal no abierto"
1870 MessageNL "no encontrado"
1880 MessageNL "ya existe"
1890 MessageNL "en uso"
1900 MessageNL "fin de fichero"
1910 MessageNL "medio lleno"
1920 MessageNL "nombre inválido"
1930 MessageNL "error de transmisión"
1940 MessageNL "fallo en formateo"
1950 MessageNL "parámetro inválido"
1960 MessageNL "medio incorrecto"
1970 MessageNL "expresión errónea"
1980 MessageNL "desbordamiento aritmético"
1990 MessageNL "no implementado"
2000 MessageNL "sólo lectura"
2010 MessageNL "error de sintaxis"
2020 MessageNL "mensaje desconocido"
2030 MessageNL "acceso denegado"
2040 :
2050 SetMessageHeader spa_ms4,34,47
2060 MessageNL "error de sintaxis en expresión"
2070 MessageNL "falta abrir paréntesis"
2080 MessageNL "falta cerrar paréntesis"
2090 MessageNL "error en número de línea"
2100 MessageNL "cadena malformada: falta delimitador"
2110 MessageNL "definición de procedimiento o función incorrecta"
2120 MessageNL "definición de procedimiento o función no permitida aquí"
2130 MessageNL "DEFine no puede estar dentro de otras cláusulas"
2140 MessageNL "END DEFine mal situado"
2150 MessageNL "LOCal mal situado"
2160 MessageNL "RETurn no está en procedimiento o función"
2170 MessageNL "cláusula WHEN no puede estar anidada"
2180 MessageNL "END WHEN mal situado"
2190 MessageNL "ELSE mal situado"
2200 MessageNL "END IF mal situado"
2210 MessageNL "estructuras de programa anidadas demasiado profundamente"
2220 MessageNL "cláusula IF incompleta"
2230 MessageNL "cláusula SELect incompleta"
2240 MessageNL "DEFine incompleto"
2250 MessageNL "cláusula WHEN incompleta"
2260 MessageNL "variable de bucle inaceptable"
2270 MessageNL "incapaz de encontrar un bucle abierto"
2280 MessageNL "variable de control de bucle no definida"
2290 MessageNL "cláusula SELect estructurada incorrectamente"
2300 MessageNL "END SELect mal situado"
2310 MessageNL "DATA no tiene significado en la línea de comandos"
2320 MessageNL "parámetros para READ inaceptables"
2330 MessageNL "SBASIC no puede realizar READ dentro de expresiones DATA"
2340 MessageNL "fin de DATA"
2350 MessageNL "procedimiento desconocido"
2360 MessageNL "función o matriz desconocida"
2370 MessageNL "sólo las matrices pueden ser dimensionadas"
2380 MessageNL "los parámetros de procedimientos y funciones no pueden ser dimensionados"
2390 MessageNL "SBASIC no puede trabajar con dimensiones negativas"
2400 MessageNL "desbordamiento dimensional"
2410 MessageNL "error en lista de índices"
2420 MessageNL "demasiados índices"
2430 MessageNL "imposible asignar a sub-matriz"
2440 MessageNL "lista de índices de la matriz inaceptable"
2450 MessageNL "índice de matriz fuera de rango"
2460 MessageNL "sólo matrices o cadenas pueden tener índice"
2470 MessageNL "la asignación sólo es posible a una variable o elemento de una matriz"
2480 MessageNL "línea mal formada (MISTake) en programa"
2490 MessageNL "durante proceso de WHEN"
2500 MessageNL "estado interno PROC/FN inicializado"
2510 Message "En la línea "
2520 MessageNL "error fatal en el intérprete SBASIC"
2530 :
2540 SetMessageHeader spa_ms8,34,13
2550 Message "Para formatear el disco, pulse "
2560 Message "******* ABORTADO *******"
2570 Message "Reserva de memoria de trabajo (KiB) >"
2580 Message "recordar la última línea"
2590 Message "SNTC"
2600 Message "? (S/N) "
2610 Message "? (S/N/T/C) "
2620 Message " A "
2630 Message " existe, "
2640 Message "¿sobreescribir"
2650 MessageNL " sectores"
2660 MessageNL "Tarea Etiqueta Propietario Prioridad"
2670 MessageNL "red abortada"
2680 :
2690 SetMessageHeader spa_ms12,34,2
2700 Message "EneFebMarAbrMayJunJulAgoSepOctNovDic"
2710 Message "DomLunMarMiéJueVieSáb"
2720 :
2730 TRUNCATE #fch
2740 CLOSE #fch
2750 STOP
2760 :
2770 DEFine PROCedure MakeLDM(type,group,lang,link,pointer)
2780 LOCal old_link,d
2790 old_link=link
2800 link=FPOS(#fch)
2810 IF old_link THEN d=link-old_link:BPUT #fch\old_link,(d DIV 256),(d MOD 256)
2820 BPUT #fch\link,(type DIV 256),(type MOD 256)
2830 BPUT #fch\link,(group DIV 256),(group MOD 256)
2840 BPUT #fch\link,(lang DIV 256),(lang MOD 256)
2850 pointer=link+2
2860 BPUT #fch\(link),0,0,0,0,0,0
2940 END DEFine
2950 :
2960 DEFine PROCedure SetLDMPointer(pointer)
2970 LOCal here,d,dh,dl
2980 here=FPOS(#fch)
2990 d=here-pointer:dh=d DIV 65536:dl=d MOD 65536
3000 BPUT #fch\(pointer),(dh DIV 256),(dh MOD 256),(dl DIV 256),(dl MOD 256)
3010 BPUT #fch\(here)
3020 END DEFine SetLDMPointer
3030 :
3040 DEFine PROCedure SetKbdHeader(pointer,lang,size)
3050 LOCal s
3060 SetLDMPointer pointer
3070 s=2+size
3080 BPUT #fch,(lang DIV 256),(lang MOD 256),0,4,(s DIV 256),(s MOD 256)
3090 END DEFine SetKbdHeader
3100 :
3110 DEFine PROCedure SetMessageHeader(pointer,lang,size)
3120 LOCal i
3130 :
3140 SetLDMPointer pointer
3150 :
3160 message_table_base = FPOS(#fch)
3170 BPUT #fch,(lang DIV 256),(lang MOD 256)
3180 message_table_pointer = FPOS(#fch)
3190 FOR i=1 TO size: BPUT #fch,0,0
3200 message_text_pointer = FPOS(#fch)
3210 END DEFine SetMessageHeader
3220 :
3230 DEFine PROCedure Message(msg$)
3240 LOCal disp
3250 disp=message_text_pointer-message_table_base
3260 BPUT #fch\message_table_pointer,(disp DIV 256),(disp MOD 256)
3270 PUT #fch\message_text_pointer,msg$
3280 IF LEN(msg$)&&1 THEN BPUT #fch\message_text_pointer,0
3290 END DEFine Message
3300 :
3310 DEFine PROCedure MessageNL(msg$)
3320 LOCal disp
3330 disp=message_text_pointer-message_table_base
3340 BPUT #fch\message_table_pointer,(disp DIV 256),(disp MOD 256)
3350 PUT #fch\message_text_pointer,msg$&CHR$(10)
3360 IF NOT (LEN(msg$)&&1) THEN BPUT #fch\message_text_pointer,0
3370 END DEFine MessageNL
Esto genera un fichero llamado "win1_langes_rext".
Después, para que entre en funcionamiento, hay que hacer esto:
Código: Seleccionar todo
LRESPR win1_langes_rext
LANG_USE 34
KBD_TABLE 34
Última edición por Zerover el Mar Abr 19, 2011 6:19 pm, editado 1 vez en total.
-
- Jack The Nipper
- Mensajes: 112
- Registrado: Mar Abr 08, 2008 9:00 am
Re: Tablas de teclado para SMSQ/E
Esta es la tabla de correspondencia de las teclas con los caracteres, está un poco fea, pero está separada por tabuladores, así que si copiáis y pegáis en Writer y después convertís texto en tabla quedará perfecta:
Las combinaciones de teclas con acentos las pongo aparte:
Yo he asignado las pulsaciones como me ha dado la gana, siempre respetando la serigrafía de las teclas y la costumbre en el PC. Los caracteres que se obtienen con AltGr los saco con la tecla Ctrl. Creo que se pueden obtener por teclado todos los caracteres del QL (no de Minerva). Se admiten sugerencias.
Código: Seleccionar todo
Decimal Hexadecimal Teclas Visualización/Función
0 00 Ctrl Esc Valor nulo
1 01 Ctrl A
2 02 Ctrl B
3 03 Ctrl C Cambiar el canal de entrada
4 04 Ctrl D
5 05 Ctrl E
6 06 Ctrl F
7 07 Ctrl G
8 08 Ctrl H
9 09 Ctrl I / ⇥ Campo siguiente
10 0A Ctrl J / ↵ Nueva línea / entrada de comandos
11 0B Ctrl K
12 0C Ctrl L
13 0D Ctrl M Enter
14 0E Ctrl N
15 0F Ctrl O
16 10 Ctrl P
17 11 Ctrl Q
18 12 Ctrl R
19 13 Ctrl S
20 14 Ctrl T
21 15 Ctrl U
22 16 Ctrl V
23 17 Ctrl W
24 18 Ctrl X
25 19 Ctrl Y
26 1A Ctrl Z
27 1B Esc
28 1C
29 1D
30 1E
31 1F
32 20 Espacio Espacio
33 21 ⇧ 1 !
34 22 ⇧ 2 "
35 23 Ctrl 3 #
36 24 ⇧ 4 $
37 25 ⇧ 5 %
38 26 ⇧ 6 &
39 27 ' '
40 28 ⇧ 8 (
41 29 ⇧ 9 )
42 2A ⇧ + *
43 2B + +
44 2C , ,
45 2D − −
46 2E . .
47 2F ⇧ 7 /
48 30 0 0
49 31 1 1
50 32 2 2
51 33 3 3
52 34 4 4
53 35 5 5
54 36 6 6
55 37 7 7
56 38 8 8
57 39 9 9
58 3A ⇧ . :
59 3B ⇧ , ;
60 3C < <
61 3D ⇧ 0 =
62 3E ⇧ < >
63 3F ⇧ ' ?
64 40 Ctrl 2 @
65 41 ⇧ A A
66 42 ⇧ B B
67 43 ⇧ C C
68 44 ⇧ D D
69 45 ⇧ E E
70 46 ⇧ F F
71 47 ⇧ G G
72 48 ⇧ H H
73 49 ⇧ I I
74 4A ⇧ J J
75 4B ⇧ K K
76 4C ⇧ L L
77 4D ⇧ M M
78 4E ⇧ N N
79 4F ⇧ O O
80 50 ⇧ P P
81 51 ⇧ Q Q
82 52 ⇧ R R
83 53 ⇧ S S
84 54 ⇧ T T
85 55 ⇧ U U
86 56 ⇧ V V
87 57 ⇧ W W
88 58 ⇧ X X
89 59 ⇧ Y Y
90 5A ⇧ Z Z
91 5B Ctrl ` [
92 5C Ctrl º \
93 5D Ctrl + ]
94 5E ⇧ ` ^
95 5F ⇧ − _
96 60 Ctrl 7 £
97 61 A a
98 62 B b
99 63 C c
100 64 D d
101 65 E e
102 66 F f
103 67 G g
104 68 H h
105 69 I i
106 6A J j
107 6B K k
108 6C L l
109 6D M m
110 6E N n
111 6F O o
112 70 P p
113 71 Q q
114 72 R r
115 73 S s
116 74 T t
117 75 U u
118 76 V v
119 77 W w
120 78 X x
121 79 Y y
122 7A Z z
123 7B Ctrl ´ {
124 7C Ctrl 1 |
125 7D Ctrl Ç }
126 7E Ctrl 4 ~
127 7F Ctrl < ©
128 80 ä (a diéresis)
129 81 ã (a tilde)
130 82 ⇧ º å (a anillo)
131 83 é (e aguda)
132 84 ⇧ ´ ö (o diéresis)
133 85 õ (o tilde)
134 86 ⇧ Ctrl 7 ø (o barra)
135 87 ü (u diéresis)
136 88 Ç ç (c cedilla)
137 89 Ñ ñ (n tilde)
138 8A æ (ligadura ae)
139 8B ⇧ Ctrl E œ (ligadura oe)
140 8C á (a aguda)
141 8D à (a grave)
142 8E â (a circunfleja)
143 8F ë (e diéresis)
144 90 è (e grave)
145 91 ê (e circunfleja)
146 92 ï (i diéresis)
147 93 í (i aguda)
148 94 ì (i grave)
149 95 î (i circunfleja)
150 96 ´ ó (o aguda)
151 97 ò (o grave)
152 98 ô (o circunfleja)
153 99 ú (u aguda)
154 9A ù (u grave)
155 9B û (u circunfleja)
156 9C Ctrl ' ß
157 9D Ctrl 8 ¢ (cent)
158 9E Ctrl 9 ¥ (yen)
159 9F ` `
160 A0 Ä (A diéresis)
161 A1 Ã (A tilde)
162 A2 ⇧ Ctrl º Å (A anillo)
163 A3 É (E aguda)
164 A4 Ö (O diéresis)
165 A5 Õ (O tilde)
166 A6 Ø (O barra)
167 A7 Ü (U diéresis)
168 A8 ⇧ Ç Ç (C cedilla)
169 A9 ⇧ Ñ Ñ (N tilde)
170 AA Æ (ligadura AE)
171 AB Œ (ligadura OE)
172 AC ⇧ Ctrl A α (alfa)
173 AD ⇧ Ctrl D δ (delta)
174 AE ⇧ Ctrl C θ (theta)
175 AF ⇧ Ctrl L λ (lambda)
176 B0 ⇧ Ctrl M μ (mu)
177 B1 ⇧ Ctrl P π (pi)
178 B2 ⇧ Ctrl F φ (phi)
179 B3 ¡ ¡
180 B4 ⇧ ¡ ¿
181 B5 Ctrl 5 € (euro)
182 B6 Ctrl . §
183 B7 Ctrl 0 ¤
184 B8 ⇧ Ctrl ¡ «
185 B9 ⇧ Ctrl ' »
186 BA º °
187 BB Ctrl − ÷
188 BC ⇧ Ctrl + ←
189 BD ⇧ Ctrl Ç →
190 BE ⇧ Ctrl ` ↑
191 BF ⇧ Ctrl ´ ↓
192 C0 ← Mover el cursor a la izquierda un carácter
193 C1 Alt ←
194 C2 Ctrl ← / ⌫ Borrar un carácter a la izquierda
195 C3 Ctrl Alt ←
196 C4 ⇧ ←
197 C5 ⇧ Alt ←
198 C6 ⇧ Ctrl ←
199 C7 ⇧ Ctrl Alt ←
200 C8 → Mover el cursor a la derecha un carácter
201 C9 Alt →
202 CA Ctrl → / Supr Borrar el carácter bajo el cursor
203 CB Ctrl Alt →
204 CC ⇧ →
205 CD ⇧ Alt →
206 CE ⇧ Ctrl →
207 CF ⇧ Ctrl Alt →
208 D0 ↑ Mover el cursor arriba un carácter
209 D1 Alt ↑
210 D2 Ctrl ↑
211 D3 Ctrl Alt ↑
212 D4 ⇧ ↑ / RePág
213 D5 ⇧ Alt ↑ / Inicio
214 D6 ⇧ Ctrl ↑
215 D7 ⇧ Ctrl Alt ↑
216 D8 ↓ Mover el cursor abajo un carácter
217 D9 Alt ↓
218 DA Ctrl ↓
219 DB Ctrl Alt ↓
220 DC ⇧ ↓ / AvPág
221 DD ⇧ Alt ↓ / Fin
222 DE ⇧ Ctrl ↓
223 DF ⇧ Ctrl Alt ↓
224 E0 BloqMayús Bloqueo de mayúsculas
225 E1 Alt BloqMayús
226 E2 Ctrl BloqMayús
227 E3 Ctrl Alt BloqMayús
228 E4 ⇧ BloqMayús
229 E5 ⇧ Alt BloqMayús
230 E6 ⇧ Ctrl BloqMayús
231 E7 ⇧ Ctrl Alt BloqMayús
232 E8 F1
233 E9 Ctrl F1
234 EA ⇧ F1
235 EB ⇧ Ctrl F1
236 EC F2
237 ED Ctrl F2
238 EE ⇧ F2
239 EF ⇧ Ctrl F2
240 F0 F3
241 F1 Ctrl F3
242 F2 ⇧ F3
243 F3 ⇧ Ctrl F3
244 F4 F4
245 F5 Ctrl F4
246 F6 ⇧ F4 / Insert
247 F7 ⇧ Ctrl F4
248 F8 F5
249 F9 Ctrl F5 / BloqDespl
250 FA ⇧ F5
251 FB ⇧ Ctrl F5
252 FC ⇧ Espacio
253 FD ⇧ ⇥ ⇤
254 FE ⇧ ↵
255 FF Alt ...
Las combinaciones de teclas con acentos las pongo aparte:
Código: Seleccionar todo
Dec Hex Teclas A E I N O U a e i n o u
94 5E ⇧ ` ^ â ê î ô û
126 7E Ctrl 4 ~ Ã Ñ Õ ã ñ õ
132 84 ⇧ ´ " Ä Ö Ü ä ë ï ö ü
134 86 ⇧ Ctrl 7 / Ø ø
139 8B ⇧ Ctrl E e Æ Œ æ œ
150 96 ´ ' É á é í ó ú
159 9F ` ` à è ì ò ù
Yo he asignado las pulsaciones como me ha dado la gana, siempre respetando la serigrafía de las teclas y la costumbre en el PC. Los caracteres que se obtienen con AltGr los saco con la tecla Ctrl. Creo que se pueden obtener por teclado todos los caracteres del QL (no de Minerva). Se admiten sugerencias.
-
- Sabreman
- Mensajes: 396
- Registrado: Dom Feb 24, 2008 10:56 pm
Re: Tablas de teclado para SMSQ/E
¡¡Gracias Zerover!!
Con esto ya tengo medio camino andado ... . Ahora SMSQE ya reconoce el teclado español en QPC2, y los mensajes aparecen traducidos al castellano.
La parte que me queda pendiente es configurar esas tablas para el teclado del QL, por lo que veo el mapa de teclado corresponde al de los PC (para la QXL y emuladores). Por el artículo de Dilwyn hay otros mapas de teclado que corresponden al QL original y al Atari.
Lo que no veo muy claro en el código del programa en SBASIC es dónde o cómo se configura (o se define) que el mapa de teclado corresponde al hardware del QL. En mi QL con SMSQE, los mensajes ya aparecen en castellano pero la configuración de teclado sigue siendo la inglesa.
.
Con esto ya tengo medio camino andado ... . Ahora SMSQE ya reconoce el teclado español en QPC2, y los mensajes aparecen traducidos al castellano.
La parte que me queda pendiente es configurar esas tablas para el teclado del QL, por lo que veo el mapa de teclado corresponde al de los PC (para la QXL y emuladores). Por el artículo de Dilwyn hay otros mapas de teclado que corresponden al QL original y al Atari.
Lo que no veo muy claro en el código del programa en SBASIC es dónde o cómo se configura (o se define) que el mapa de teclado corresponde al hardware del QL. En mi QL con SMSQE, los mensajes ya aparecen en castellano pero la configuración de teclado sigue siendo la inglesa.
.
-
- Jack The Nipper
- Mensajes: 112
- Registrado: Mar Abr 08, 2008 9:00 am
Re: Tablas de teclado para SMSQ/E
Ésta es una nueva versión del programa que genera los módulos de idioma. Crea los módulos por separado, de esta manera se puede elegir si cargar el módulo de teclado QL (para SMSQ en GoldCard) o el módulo de teclado PC (para QXL o QPC) mientras se carga el mismo módulo de mensajes.
Lo he copiado directamente con el juego de caracteres del QL, por eso los caracteres españoles no se ven bien.
Esto genera varios ficheros:
Después, para cargar los módulos, hay que hacer esto:
o esto:
Código: Seleccionar todo
1000 savedatadir$ = DATAD$
1010 DATA_USE "win1_"
1020 spa_pref$ = MakeSpanishPreferencesModule$()
1030 SaveModuleExtension spa_pref$,"preferences_esES_rext"
1040 :
1050 spa_kbdql$ = MakeSpanishQLKeyboardModule$()
1060 SaveModuleExtension spa_kbdql$,"keyboard_QL_esES_rext"
1070 :
1080 spa_kbdpc$ = MakeSpanishPCKeyboardModule$()
1090 SaveModuleExtension spa_kbdpc$,"keyboard_PC_esES_rext"
1100 :
1110 spa_msg$=""
1120 LinkModule spa_msg$,MakeSpanishMessages0Module$()
1130 LinkModule spa_msg$,MakeSpanishMessages4Module$()
1140 LinkModule spa_msg$,MakeSpanishMessages8Module$()
1150 LinkModule spa_msg$,MakeSpanishMessages12Module$()
1160 SaveModuleExtension spa_msg$,"messages_esES_rext"
1170 :
1180 DATA_USE savedatadir$
1190 STOP
1200 :
1210 DEFine PROCedure SaveModuleExtension(module$,filename$)
1220 LOCal fch
1230 IF module$="" THEN RETurn
1240 fch=FOP_OVER(filename$)
1250 IF fch<0 THEN PRINT #0;filename$&" ";:REPORT fch: RETurn
1260 BPUT #fch,$70,$30 :REMark MOVEQ #sms.lldm,D0
1270 BPUT #fch,$43,$FA,$0,$6 :REMark LEA lang_mod,A1
1280 BPUT #fch,$4E,$41 :REMark TRAP #1
1290 BPUT #fch,$4E,$75 :REMark RTS
1300 : :REMark lang_mod:
1310 BPUT #fch,module$
1320 TRUNCATE #fch
1330 CLOSE #fch
1340 END DEFine
1350 :
1360 DEFine PROCedure LinkModule(ml$,m$)
1370 LOCal ph,rh,plh,pnh,pnb
1380 IF ml$="" THEN ml$=m$:RETurn
1390 IF m$="" THEN RETurn
1400 ph = 0
1410 pnh = ph + 12
1420 REPeat
1430 rh = CODE_W(ml$(ph+7 TO ph+8))
1440 IF rh=0 THEN EXIT
1450 ph = ph+6 + rh
1460 IF ph+12>pnh THEN pnh=ph+12
1470 END REPeat
1480 ph = 0
1490 REPeat
1500 rh = CODE_W(ml$(ph+7 TO ph+8))
1510 IF ph+8+CODE_L(ml$(ph+9 TO ph+12))>=pnh THEN
1520 ml$(ph+9 TO ph+12)=CHR_L$(CODE_L(ml$(ph+9 TO ph+12))+12)
1530 END IF
1540 IF rh=0 THEN EXIT
1550 ph = ph+6 + rh
1560 END REPeat
1570 plh = ph
1580 ml$(plh+7 TO plh+8)=CHR_W$(pnh-(plh+6))
1590 pnb = LEN(ml$) + 12
1600 ml$ = ml$(1 TO pnh) & m$(1 TO 12) & ml$(pnh+1 TO) & m$(13 TO)
1610 ml$(pnh+9 TO pnh+12)=CHR_L$(pnb-(pnh+8))
1620 END DEFine
1630 :
1640 DEFine FuNction MakeModuleHeader$(type,group,lang)
1650 LOCal h$
1660 h$ = ""
1670 h$ = h$ & CHR_W$(type)
1680 h$ = h$ & CHR_W$(group)
1690 h$ = h$ & CHR_W$(lang)
1700 h$ = h$ & CHR_W$(0)
1710 h$ = h$ & CHR_L$(4)
1720 RETurn h$
1730 END DEFine
1740 :
1750 DEFine FuNction MakeSpanishPreferencesModule$
1760 LOCal m$
1770 m$ = MakeModuleHeader$(0,0,34)
1780 m$ = m$ & "esES": REMark o "E "
1790 m$ = m$ & CHR_W$(34)
1800 m$ = m$ & CHR_W$(44): REMark Si no spanish, english
1810 m$ = m$ & CHR_W$(0)
1820 RETurn m$
1830 END DEFine
1840 :
1850 DEFine FuNction MakeSpanishQLKeyboardModule$
1860 LOCal h$,k$,c$
1870 :
1880 h$ = MakeModuleHeader$(1,0,34)
1890 h$ = h$ & CHR_W$(34)
1900 h$ = h$ & CHR_W$(4)
1910 h$ = h$ & CHR_W$(2+256)
1920 :
1930 k$ = ""
1940 k$ = k$ & CHR_8$( 0, 0, 0,120,118, 60,110, 44)
1950 k$ = k$ & CHR_8$( 56, 50, 54,113,101, 48,116,117)
1960 k$ = k$ & CHR_8$( 57,119,105, 9,114, 45,121,111)
1970 k$ = k$ & CHR_8$(108, 51,104, 49, 97,112,100,106)
1980 k$ = k$ & CHR_8$( 39,224,107,115,102, 61,103,137)
1990 k$ = k$ & CHR_8$(159,122, 46, 99, 98, 91,109, 59)
2000 k$ = k$ & CHR_8$( 10,192,208, 27,200, 93, 32,216)
2010 k$ = k$ & CHR_8$(244,232, 53,236,240,248, 52, 55)
2020 :
2030 REMark CTRL
2040 k$ = k$ & CHR_8$( 0, 0, 0, 24, 22,157, 14,140)
2050 k$ = k$ & CHR_8$( 64,173,177, 17, 5,124, 20, 21)
2060 k$ = k$ & CHR_8$( 92, 23, 9, 9, 18, 96, 25, 15)
2070 k$ = k$ & CHR_8$( 12,174, 8,172, 1, 16, 4, 10)
2080 k$ = k$ & CHR_8$( 39,226, 11, 19, 6,123, 7,155)
2090 k$ = k$ & CHR_8$(159, 26,142, 3, 2,125, 13,189)
2100 k$ = k$ & CHR_8$( 10,194,210, 0,202,126,255,218)
2110 k$ = k$ & CHR_8$(245,233,176,237,241,249,175,178)
2120 :
2130 REMark SHIFT
2140 k$ = k$ & CHR_8$( 0, 0, 0, 88, 86, 62, 78, 63)
2150 k$ = k$ & CHR_8$( 42,180, 47, 81, 69, 41, 84, 85)
2160 k$ = k$ & CHR_8$( 40, 87, 73,253, 82, 95, 89, 79)
2170 k$ = k$ & CHR_8$( 76, 35, 72,179, 65, 80, 68, 74)
2180 k$ = k$ & CHR_8$( 34,228, 75, 83, 70, 43, 71,169)
2190 k$ = k$ & CHR_8$( 94, 90, 33, 67, 66,136, 77, 58)
2200 k$ = k$ & CHR_8$(254,196,212,127,204,135,252,220)
2210 k$ = k$ & CHR_8$(246,234, 37,238,242,250, 36, 38)
2220 :
2230 REMark CTRL SHIFT
2240 k$ = k$ & CHR_8$( 0, 0, 0,184,182,160,147,156)
2250 k$ = k$ & CHR_8$(139,130,134,144,165,187,150,181)
2260 k$ = k$ & CHR_8$(141,183,151,253,128, 28,185,148)
2270 k$ = k$ & CHR_8$(145,131,168,129,161,149,164,170)
2280 k$ = k$ & CHR_8$(190,230,171,143,166, 30,167,152)
2290 k$ = k$ & CHR_8$(191,186,158,163,162, 27,146,188)
2300 k$ = k$ & CHR_8$(254,198,214, 31,206, 29,255,222)
2310 k$ = k$ & CHR_8$(247,235,133,239,243,251,132,138)
2320 :
2330 c$ = FILL$(CHR$(0),256)
2340 c$(1+94) = CHR$(13)
2350 c$(1+126) = CHR$(26)
2360 c$(1+132) = CHR$(39)
2370 c$(1+134) = CHR$(52)
2380 c$(1+139) = CHR$(65)
2390 c$(1+150) = CHR$(78)
2400 c$(1+159) = CHR$(91)
2410 c$ = c$ & " AENOUaeinou" & CHR$(0)
2420 c$ = c$ & "^AENOUéëïnòõ" & CHR$(0)
2430 c$ = c$ & "~°E©•UÅeiâÖu" & CHR$(0)
2440 c$ = c$ & '"†EN§ßÄèínÑá' & CHR$(0)
2450 c$ = c$ & "/AEN¶UaeinÜu" & CHR$(0)
2460 c$ = c$ & "e™EN´Uäeinãu" & CHR$(0)
2470 c$ = c$ & "'A£NOUåÉìnñô" & CHR$(0)
2480 c$ = c$ & "üAENOUçêînóö" & CHR$(0)
2490 :
2500 h$(17 TO 18) = CHR_W$(2+LEN(k$))
2510 RETurn h$ & k$ & c$
2520 END DEFine
2530 :
2540 DEFine FuNction MakeSpanishPCKeyboardModule$
2550 LOCal h$,k$,c$
2560 :
2570 h$ = MakeModuleHeader$(1,0,34)
2580 h$ = h$ & CHR_W$(34)
2590 h$ = h$ & CHR_W$(4)
2600 h$ = h$ & CHR_W$(2+512)
2610 :
2620 k$ = ""
2630 k$ = k$ & CHR_16$( 0, 27, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 39,179,194, 9)
2640 k$ = k$ & CHR_16$(113,119,101,114,116,121,117,105,111,112,159, 43, 10, 0, 97,115)
2650 k$ = k$ & CHR_16$(100,102,103,104,106,107,108,137,150,186, 0,136,122,120, 99,118)
2660 k$ = k$ & CHR_16$( 98,110,109, 44, 46, 45, 0, 42, 0, 32,224,232,236,240,244,248)
2670 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0,249, 55, 56, 57, 45, 52, 53, 54, 43, 49)
2680 k$ = k$ & CHR_16$( 50, 51, 48, 44, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0)
2690 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0, 0,213,208,212, 45,192, 0,200, 43,221)
2700 k$ = k$ & CHR_16$(216,220,246,202, 0, 47, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0)
2710 :
2720 REMark SHIFT
2730 k$ = k$ & CHR_16$( 0, 27, 33, 34, 35, 36, 37, 38, 47, 40, 41, 61, 63,180,198,253)
2740 k$ = k$ & CHR_16$( 81, 87, 69, 82, 84, 89, 85, 73, 79, 80, 94, 42,254, 0, 65, 83)
2750 k$ = k$ & CHR_16$( 68, 70, 71, 72, 74, 75, 76,169,132,130, 0,168, 90, 88, 67, 86)
2760 k$ = k$ & CHR_16$( 66, 78, 77, 59, 58, 95, 0, 42, 0,252,228,234,238,242,246,250)
2770 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0,251, 55, 56, 57, 45, 52, 53, 54, 43, 49)
2780 k$ = k$ & CHR_16$( 50, 51, 48, 44, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0)
2790 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0, 0,213,212,212, 45,196, 0,204, 43,221)
2800 k$ = k$ & CHR_16$(220,220,246,206, 0, 47, 0, 0, 0, 0, 0, 0,254, 0, 0, 0)
2810 :
2820 REMark CTRL
2830 k$ = k$ & CHR_16$( 0, 0,124, 64, 35,$7E,$B5, 0,$60,$9D,$9E,$B7,$9C, 0,194, $9)
2840 k$ = k$ & CHR_16$( 17, 23, 5, 18, 20, 25, 21, 9, 15, 16, 91, 93, $A, 0, 1, 19)
2850 k$ = k$ & CHR_16$( 4, 6, 7, 8, 10, 11, 12,126,123, 92, 0,125, 26, 24, 3, 22)
2860 k$ = k$ & CHR_16$( 2, 14, 13, 0,$B6,$BB, 0, 42, 0,$FF,226,233,237,241,245,249)
2870 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0,249, 55, 56, 57, 45, 52, 53, 54, 43, 49)
2880 k$ = k$ & CHR_16$( 50, 51, 48, 46, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0)
2890 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0, 0,215,210,214, 45,194, 0,202, 43,223)
2900 k$ = k$ & CHR_16$(218,222,247,202, 0, 47, 0, 0, 0, 0, 0, 0, $A, 0, 0, 0)
2910 :
2920 REMark CTRL SHIFT
2930 k$ = k$ & CHR_16$( 0,$1F, 0, 0, 0, 0, 0, 0,134, 0, 0,$1E,185,184,198,253)
2940 k$ = k$ & CHR_16$( 0, 0,139, 0, 0, 0, 0, 0, 0,$B1,$BE,$BC,254, 0,$AC, 0)
2950 k$ = k$ & CHR_16$($AD,$B2, 0, 0, 0, 0,$AF, 0,$BF,$A2, 0,$BD, 0, 0,$AE, 0)
2960 k$ = k$ & CHR_16$( 0, 0,$B0, 0, 0, 0, 0, 42, 0,252,230,235,239,243,247,251)
2970 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0,251, 55, 56, 57, 45, 52, 53, 54, 43, 49)
2980 k$ = k$ & CHR_16$( 50, 51, 48, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
2990 k$ = k$ & CHR_16$( 0, 0, 0, 0, 0, 0, 0,215,214,214, 45,198, 0,206, 43,223)
3000 k$ = k$ & CHR_16$(222,222,247,206, 0, 47, 0, 0, 0, 0, 0, 0,254, 0, 0, 0)
3010 :
3020 c$ = FILL$(CHR$(0),256)
3030 c$(1+94) = CHR$(13)
3040 c$(1+126) = CHR$(26)
3050 c$(1+132) = CHR$(39)
3060 c$(1+134) = CHR$(52)
3070 c$(1+139) = CHR$(65)
3080 c$(1+150) = CHR$(78)
3090 c$(1+159) = CHR$(91)
3100 c$ = c$ & " AENOUaeinou" & CHR$(0)
3110 c$ = c$ & "^AENOUéëïnòõ" & CHR$(0)
3120 c$ = c$ & "~°E©•UÅeiâÖu" & CHR$(0)
3130 c$ = c$ & '"†EN§ßÄèínÑá' & CHR$(0)
3140 c$ = c$ & "/AEN¶UaeinÜu" & CHR$(0)
3150 c$ = c$ & "e™EN´Uäeinãu" & CHR$(0)
3160 c$ = c$ & "'A£NOUåÉìnñô" & CHR$(0)
3170 c$ = c$ & "üAENOUçêînóö" & CHR$(0)
3180 :
3190 h$(17 TO 18) = CHR_W$(2+LEN(k$))
3200 RETurn h$ & k$ & c$
3210 END DEFine
3220 :
3230 DEFine FuNction MakeSpanishMessages0Module$
3240 LOCal p$,m$
3250 p$="": m$=""
3260 MessageNL p$,m$,"no completado"
3270 MessageNL p$,m$,"tarea invålida"
3280 MessageNL p$,m$,"sin memoria"
3290 MessageNL p$,m$,"fuera de rango"
3300 MessageNL p$,m$,"memoria intermedia llena"
3310 MessageNL p$,m$,"canal no abierto"
3320 MessageNL p$,m$,"no encontrado"
3330 MessageNL p$,m$,"ya existe"
3340 MessageNL p$,m$,"en uso"
3350 MessageNL p$,m$,"fin de fichero"
3360 MessageNL p$,m$,"medio lleno"
3370 MessageNL p$,m$,"nombre invålido"
3380 MessageNL p$,m$,"error de transmisiñn"
3390 MessageNL p$,m$,"fallo en formateo"
3400 MessageNL p$,m$,"paråmetro invålido"
3410 MessageNL p$,m$,"medio incorrecto"
3420 MessageNL p$,m$,"expresiñn errñnea"
3430 MessageNL p$,m$,"desbordamiento aritmÉtico"
3440 MessageNL p$,m$,"no implementado"
3450 MessageNL p$,m$,"sñlo lectura"
3460 MessageNL p$,m$,"error de sintaxis"
3470 MessageNL p$,m$,"mensaje desconocido"
3480 MessageNL p$,m$,"acceso denegado"
3490 AdjustMessagePointers p$
3500 RETurn MakeModuleHeader$(3,0,34) & CHR_W$(34) & p$ & m$
3510 END DEFine
3520 :
3530 DEFine FuNction MakeSpanishMessages4Module$
3540 LOCal p$,m$
3550 p$="": m$=""
3560 MessageNL p$,m$,"error de sintaxis en expresiñn"
3570 MessageNL p$,m$,"falta abrir parÉntesis"
3580 MessageNL p$,m$,"falta cerrar parÉntesis"
3590 MessageNL p$,m$,"error en nômero de lìnea"
3600 MessageNL p$,m$,"cadena malformada: falta delimitador"
3610 MessageNL p$,m$,"definiciñn de procedimiento o funciñn incorrecta"
3620 MessageNL p$,m$,"definiciñn de procedimiento o funciñn no permitida aquì"
3630 MessageNL p$,m$,"DEFine no puede estar dentro de otras clåusulas"
3640 MessageNL p$,m$,"END DEFine mal situado"
3650 MessageNL p$,m$,"LOCal mal situado"
3660 MessageNL p$,m$,"RETurn no estå en procedimiento o funciñn"
3670 MessageNL p$,m$,"clåusula WHEN no puede estar anidada"
3680 MessageNL p$,m$,"END WHEN mal situado"
3690 MessageNL p$,m$,"ELSE mal situado"
3700 MessageNL p$,m$,"END IF mal situado"
3710 MessageNL p$,m$,"estructuras de programa anidadas demasiado profundamente"
3720 MessageNL p$,m$,"clåusula IF incompleta"
3730 MessageNL p$,m$,"clåusula SELect incompleta"
3740 MessageNL p$,m$,"DEFine incompleto"
3750 MessageNL p$,m$,"clåusula WHEN incompleta"
3760 MessageNL p$,m$,"variable de bucle inaceptable"
3770 MessageNL p$,m$,"incapaz de encontrar un bucle abierto"
3780 MessageNL p$,m$,"variable de control de bucle no definida"
3790 MessageNL p$,m$,"clåusula SELect estructurada incorrectamente"
3800 MessageNL p$,m$,"END SELect mal situado"
3810 MessageNL p$,m$,"DATA no tiene significado en la lìnea de comandos"
3820 MessageNL p$,m$,"paråmetros para READ inaceptables"
3830 MessageNL p$,m$,"SBASIC no puede realizar READ dentro de expresiones DATA"
3840 MessageNL p$,m$,"fin de DATA"
3850 MessageNL p$,m$,"procedimiento desconocido"
3860 MessageNL p$,m$,"funciñn o matriz desconocida"
3870 MessageNL p$,m$,"sñlo las matrices pueden ser dimensionadas"
3880 MessageNL p$,m$,"los paråmetros de procedimientos y funciones no pueden ser dimensionados"
3890 MessageNL p$,m$,"SBASIC no puede trabajar con dimensiones negativas"
3900 MessageNL p$,m$,"desbordamiento dimensional"
3910 MessageNL p$,m$,"error en lista de ìndices"
3920 MessageNL p$,m$,"demasiados ìndices"
3930 MessageNL p$,m$,"imposible asignar a sub-matriz"
3940 MessageNL p$,m$,"lista de ìndices de la matriz inaceptable"
3950 MessageNL p$,m$,"ìndice de matriz fuera de rango"
3960 MessageNL p$,m$,"sñlo matrices o cadenas pueden tener ìndice"
3970 MessageNL p$,m$,"la asignaciñn sñlo es posible a una variable o elemento de una matriz"
3980 MessageNL p$,m$,"lìnea mal formada (MISTake) en programa"
3990 MessageNL p$,m$,"durante proceso de WHEN"
4000 MessageNL p$,m$,"estado interno PROC/FN inicializado"
4010 Message p$,m$,"En la lìnea "
4020 MessageNL p$,m$,"error fatal en el intÉrprete SBASIC"
4030 AdjustMessagePointers p$
4040 RETurn MakeModuleHeader$(3,4,34) & CHR_W$(34) & p$ & m$
4050 END DEFine
4060 :
4070 DEFine FuNction MakeSpanishMessages8Module$
4080 LOCal p$,m$
4090 p$="": m$=""
4100 Message p$,m$,"Para formatear el disco, pulse "
4110 Message p$,m$,"******* INTERRUMPIDO *******"
4120 Message p$,m$,"Reserva de memoria de trabajo (KiB) > "
4130 Message p$,m$,"recuperar la ôltima lìnea"
4140 Message p$,m$,"SNTC"
4150 Message p$,m$,"? (S/N) ": REMark Sì / No
4160 Message p$,m$,"? (S/N/T/C) ": REMark Sì / No / sì a Todo / Cancelar
4170 Message p$,m$," A "
4180 Message p$,m$," existe, "
4190 Message p$,m$,"¥sobreescribir"
4200 MessageNL p$,m$," sectores"
4210 MessageNL p$,m$,"Tarea Etiq. Prop. Prior."
4220 MessageNL p$,m$,"red interrumpida"
4230 MessageNL p$,m$,"KiB en ficheros"
4240 AdjustMessagePointers p$
4250 RETurn MakeModuleHeader$(3,8,34) & CHR_W$(34) & p$ & m$
4260 END DEFine
4270 :
4280 DEFine FuNction MakeSpanishMessages12Module$
4290 LOCal p$,m$
4300 p$="": m$=""
4310 Message p$,m$,"EneFebMarAbrMayJunJulAgoSepOctNovDic"
4320 Message p$,m$,"DomLunMarMiÉJueVieSåb"
4330 AdjustMessagePointers p$
4340 RETurn MakeModuleHeader$(3,12,34) & CHR_W$(34) & p$ & m$
4350 END DEFine
4360 :
4370 DEFine PROCedure Message(p$,m$,msg$)
4380 LOCal l
4390 l = LEN(msg$)
4400 IF l MOD 2 > 0 THEN msg$ = msg$ & CHR$(0)
4410 p$ = p$ & CHR_W$(LEN(m$))
4420 m$ = m$ & CHR_W$(l) & msg$
4430 END DEFine Message
4440 :
4450 DEFine PROCedure MessageNL(p$,m$,msg$)
4460 LOCal l
4470 msg$ = msg$ & CHR$(10)
4480 l = LEN(msg$)
4490 IF l MOD 2 > 0 THEN msg$ = msg$ & CHR$(0)
4500 p$ = p$ & CHR_W$(LEN(m$))
4510 m$ = m$ & CHR_W$(l) & msg$
4520 END DEFine MessageNL
4530 :
4540 DEFine PROCedure AdjustMessagePointers(p$)
4550 LOCal i,d
4560 d = 2 + LEN(p$)
4570 FOR i=1 TO LEN(p$) STEP 2
4580 p$(i TO i+1) = CHR_W$(CODE_W(p$(i TO i+1)) + d)
4590 END FOR
4600 END DEFine
4610 :
4620 DEFine FuNction CHR_W$(n)
4630 RETurn CHR$(n DIV 256) & CHR$(n MOD 256)
4640 END DEFine
4650 :
4660 DEFine FuNction CODE_W(c$)
4670 IF LEN(c$)<2 THEN
4680 RETurn CODE(c$)
4690 ELSE
4700 RETurn CODE(c$(1))*256+CODE(c$(2))
4710 END IF
4720 END DEFine
4730 :
4740 DEFine FuNction CHR_L$(n)
4750 LOCal h,l
4760 h = n DIV 65536
4770 l = n MOD 65536
4780 RETurn CHR$(h DIV 256) & CHR$(h MOD 256) & CHR$(l DIV 256) & CHR$(l MOD 256)
4790 END DEFine
4800 :
4810 DEFine FuNction CODE_L(c$)
4820 SELect ON LEN(c$)
4830 =0,1: RETurn CODE(c$)
4840 =2: RETurn CODE(c$(1))*256+CODE(c$(2))
4850 =3: RETurn (CODE(c$(1))*256+CODE(c$(2)))*256+CODE(c$(3))
4860 =REMAINDER : RETurn ((CODE(c$(1))*256+CODE(c$(2)))*256+CODE(c$(3)))*256+CODE(c$(4))
4870 END SELect
4880 END DEFine
4890 :
4900 DEFine FuNction CHR_8$(n0,n1,n2,n3,n4,n5,n6,n7)
4910 LOCal p$
4920 p$ = ""
4930 p$ = p$ & CHR$(n0)
4940 p$ = p$ & CHR$(n1)
4950 p$ = p$ & CHR$(n2)
4960 p$ = p$ & CHR$(n3)
4970 p$ = p$ & CHR$(n4)
4980 p$ = p$ & CHR$(n5)
4990 p$ = p$ & CHR$(n6)
5000 p$ = p$ & CHR$(n7)
5010 RETurn p$
5020 END DEFine
5030 :
5040 DEFine FuNction CHR_16$(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15)
5050 LOCal p$
5060 p$ = ""
5070 p$ = p$ & CHR$(n0)
5080 p$ = p$ & CHR$(n1)
5090 p$ = p$ & CHR$(n2)
5100 p$ = p$ & CHR$(n3)
5110 p$ = p$ & CHR$(n4)
5120 p$ = p$ & CHR$(n5)
5130 p$ = p$ & CHR$(n6)
5140 p$ = p$ & CHR$(n7)
5150 p$ = p$ & CHR$(n8)
5160 p$ = p$ & CHR$(n9)
5170 p$ = p$ & CHR$(n10)
5180 p$ = p$ & CHR$(n11)
5190 p$ = p$ & CHR$(n12)
5200 p$ = p$ & CHR$(n13)
5210 p$ = p$ & CHR$(n14)
5220 p$ = p$ & CHR$(n15)
5230 RETurn p$
5240 END DEFine
5250 :
5260 DEFine PROCedure SaveMe
5270 SAVE_O "win2_SMSQ_spanish_bas"
5280 SAVE_O "flp1_spanish_bas"
5290 END DEFine
Lo he copiado directamente con el juego de caracteres del QL, por eso los caracteres españoles no se ven bien.
Esto genera varios ficheros:
- preferences_esES_rext
keyboard_QL_esES_rext
keyboard_PC_esES_rext
messages_esES_rext
Después, para cargar los módulos, hay que hacer esto:
Código: Seleccionar todo
LRESPR win1_preferences_esES_rext
LRESPR win1_keyboard_QL_esES_rext
LRESPR win1_messages_esES_rext
LANG_USE 34
KBD_TABLE 34
o esto:
Código: Seleccionar todo
LRESPR win1_preferences_esES_rext
LRESPR win1_keyboard_PC_esES_rext
LRESPR win1_messages_esES_rext
LANG_USE 34
KBD_TABLE 34
- programandala.net
- Manic Miner
- Mensajes: 210
- Registrado: Mié Ago 04, 2010 9:20 pm
- Ubicación: España
- Contactar:
Re: Tablas de teclado para SMSQ/E
afx escribió:¿Alguien tiene documentación o sabe algo sobre las "keyboard tables" para el SMSQ/E?
.
En la sección de descargas de la página de mi programa Transkeyer tienes el artículo de Tony Tebby aparecido en International QL Report en 1995; ahí lo explica. Me lo proporcionaron Salvador Merino y Pedro Reina.
La tabla de teclado español para SMSQ (en QXL) ya la creó Pedro Reina en 1995, y es la que uso en SMSQ/E con QPC2, con algunas modificaciones mías: gentabla2.
Marcos Cruz (programandala.net)
- programandala.net
- Manic Miner
- Mensajes: 210
- Registrado: Mié Ago 04, 2010 9:20 pm
- Ubicación: España
- Contactar:
Re: Tablas de teclado para SMSQ/E
Zerover escribió:Ésta es una nueva versión del programa que genera los módulos de idioma. Crea los módulos por separado, de esta manera se puede elegir si cargar el módulo de teclado QL (para SMSQ en GoldCard) o el módulo de teclado PC (para QXL o QPC) mientras se carga el mismo módulo de mensajes.
Tiene una pinta estupenda, gracias. Lo probaré con QPC2.
Marcos Cruz (programandala.net)
-
- Sabreman
- Mensajes: 396
- Registrado: Dom Feb 24, 2008 10:56 pm
Re: Tablas de teclado para SMSQ/E
Con preferences_esES_rext, keyboard_QL_esES_rext y messages_esES_rext generados por spanish_bas me van bien los mensajes, pero sigue sin pillarme la Ñ y los acentos.
Con lo que pone el artículo de Tebby, he entendido más o menos la organización de esas tablas (el tema de los acentos aún no lo pillo del todo). Por lo que he podido comprobar de las tablas de spanish_bas, parece que la Ñ está en su sitio y debería funcionar pero lo cierto es que no me coge el teclado en castellano.
No se lo que me puede estar fallando.
Con lo que pone el artículo de Tebby, he entendido más o menos la organización de esas tablas (el tema de los acentos aún no lo pillo del todo). Por lo que he podido comprobar de las tablas de spanish_bas, parece que la Ñ está en su sitio y debería funcionar pero lo cierto es que no me coge el teclado en castellano.
No se lo que me puede estar fallando.
-
- Jack The Nipper
- Mensajes: 112
- Registrado: Mar Abr 08, 2008 9:00 am
Re: Tablas de teclado para SMSQ/E
afx escribió:...pero sigue sin pillarme la Ñ y los acentos.
En cuanto tenga un rato probaré en mi QL.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados