Tablas de teclado para SMSQ/E

Subforo oficial del Sinclair QL: realiza aquí las consultas relativas a tu QL.

Moderador: Sir Cilve Sinclair

Responder
afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Tablas de teclado para SMSQ/E

Mensaje por afx » Jue Mar 12, 2009 6:24 pm

¿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.

.

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Tablas de teclado para SMSQ/E

Mensaje por Zerover » Vie Mar 13, 2009 9:14 am

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:

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.

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Tablas de teclado para SMSQ/E

Mensaje por Zerover » Vie Mar 13, 2009 1:39 pm

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:

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.

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Tablas de teclado para SMSQ/E

Mensaje por afx » Vie Mar 13, 2009 10:32 pm

¡¡Gracias Zerover!!

Con esto ya tengo medio camino andado ... :D . 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.

.

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Tablas de teclado para SMSQ/E

Mensaje por Zerover » Lun Abr 18, 2011 11:31 pm

É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.

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

Avatar de Usuario
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

Mensaje por programandala.net » Mar Abr 19, 2011 2:17 pm

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)

Avatar de Usuario
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

Mensaje por programandala.net » Mar Abr 19, 2011 2:19 pm

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)

afx
Sabreman
Mensajes: 396
Registrado: Dom Feb 24, 2008 10:56 pm

Re: Tablas de teclado para SMSQ/E

Mensaje por afx » Mar Abr 19, 2011 11:20 pm

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.

Zerover
Jack The Nipper
Mensajes: 112
Registrado: Mar Abr 08, 2008 9:00 am

Re: Tablas de teclado para SMSQ/E

Mensaje por Zerover » Mié Abr 20, 2011 7:55 am

afx escribió:...pero sigue sin pillarme la Ñ y los acentos.


En cuanto tenga un rato probaré en mi QL.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 19 invitados