Nueva utilidad para Workbench y teclado en español en WinUAE

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 16 Ene 2017 18:44

EDITO: Edito este post por si alguien lo lee de nuevo y no se traguen todo el rollo, jeje
Ya vi los programas que me enviaron amablemente, pero no los logro hacer funcionar del todo, o no funcionan.
Funcionan bien para las partes básicas, y las mayusculizables, pero no para los acentos, o no lo he sabido hacer, incluso la consola de test ni siquiera saca los acentos que en el CLI si.

Así que no me queda mas remedio que continuar mi programa, Ademas ya encontré la info necesaria, muy compleja por cierto
Amiga ROM Kernel Manual.pdf
Tratare de hacerlo bonito como el que me envio Estrayk

También haré una explicación (tratare de que sea entendible) para el programador a bajo nivel de Amiga.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Utilidad para modificar el Keymaps del Worbench.
Para los que usan WinUAE y teclados con distribución diferente al del ingles.


Hola Amigos
Tengo un año programando en Amos bajo WinUAE y tratando de utilizar mi teclado Español con las teclas cambiadas, tanto es así, que cuando escribo en Word ya me equivoco y empiezo a querer usas teclas raras en lugar de las corrientes.

Esto solo pasa si tu distribución de teclado en tu equipo es Español, Latino o cualquier otra, Si es en ingles no tienes problemas ya que WinUAE viene ya configurado para el.

Cambiando la distribución del teclado en Workbench
Ahora bien para cambiar la distribución del teclado en el Workbench puedes usar System/Preferencias/Input (o Preferencias de entradas), y colocas el idioma que prefieras, Pero claro esto es para una -coam1 Real, Para nuestro teclado Español no sirve, simplemente tienes la Ñ y las demás teclas otra vez aparecen cambiadas de otra manera.

Workbench Preferencias de entradas.png
Workbench Preferencias de entradas.png (56.03 KiB) Visto 4095 veces


Cambiando el teclado en WinUAE
Si tratas de cambiar el teclado por medio de WinUAE, a parte de ser inentendible (Mezcla Joystick y códigos de teclas de scan sin la verdadera salida del gráfico a usar), Aparte de lo bueno que pueda ser el WinUAE, vaya forma enredada que tiene de hacer las cosas. Por ejemplo no le hace caso al teclado numérico (solo en parte), no le interesa el Bloq Numérico y coloca el joystics en el, solo pudiendo usar el 7-9-1-3, por supuesto debe haber alguna configuración para cambiar esto pero no la he encontrado. En otros emuladores seguro que previenen esto. Por favor si estoy equivocado y hay otros métodos, por favor avisen.

HAQUEANDO
¿Hay otras utilidades en Workbench o en Windows para hacer esto?, no se, no he visto ninguna, Así que el fin de semana me puse a ver que sale.
Con las librerías del AmigaOS se pueden cambiar cosas pero no quería meterme en tanto rollo de C y Assembler. Los mapas de teclado está en \Devs\Keymaps\ identificados por algunas letras según el idioma. pero el formato interno de estos archivos no esta explicado, claro que investigándolo se puede haquear, por medio de las estructuras en las llamadas al Api de workbench deduje otras cosas, y pues nada.

Después de probar a mano varias cosas y viendo que se podía, me decidí a no hacerlo a mano, sino usar una utilidad mas cómoda para mi y para la comunidad, he aquí el resultado. Podría hacer un programa en Window pero ya que estamos en Amos pues a darle, lo haré en AMOS.

Listo este es el resultado, un programa en AMOS que hace lo que necesito, aun tiene los siguientes problemas:
las teclas que no aparecen son las Vocales y algunas teclas otras que se modifican con los acentos, dieresis y otros, aun no he haqueado como se cambian, no encuentro info del formato de este archivo. solo de las funciones que cambian distribución del teclado en el OS.

Lo llame: Editor de Keymaps
Editor de Keymaps1.png
Editor de Keymaps1.png (135.78 KiB) Visto 4024 veces


Tengo que mejorarle lo siguiente:
    Que vea las vocales y otras teclas faltantes
    Tal vez colocar la distribución de teclado, mas parecida a un teclado normal.
    Tal vez quitar los códigos Hex de cada letra.
    Quitar las letras con shift para no hacer la pantalla tan engorrosa, ya que al final cada tecla tiene 4 opciones, Normal, Shift, Alt, y Shit-Alt y hay que modificarlas en el panel derecho.
    Que saque backup automático.
    Que maneje los .info.
    Que cree nuevos lenguajes, No se donde esta la lista de esto, si creo uno nuevo se ve pero no con el texto o nombre (como el Español que su archivo es "e" pero se lee en la utilidad Español).
    Soy terrible en decoración.
    Lo pondré en ingles y castellano.
    Agregar una tabla de caracteres.


Si aparecen mejores utilidades por ahí díganme por favor, habré perdido el fin de semana pero mejor es saber.

Si se fijan en la pantalla ya cambie las comillas, paréntesis ya están arriba del 8 y 9, ademas de otras cosas.
Pueden utilizar el mapa que yo ya hice o hacer el suyo propio. por supuesto también sirve para cualquier otro idioma o distribución de teclado

INSTRUCIONES TAMBIEN EN EL HELP DEL PROGRAMA

Código: Seleccionar todo

Utilize el botón derecho del mouse para el menu superior

Cargue el archivo por medio del menu, y despues de cambiar los códigos
recuerde guardarlo.

Siempre grabe una copia del original Keymaps.

Una vez grabado el archivo, debera cambiar las preferencias
de input (Teclado) o reiniciar el workbench.

Utilice las flechas y/o el mouse para posicionarse en el caracter que
sesea cambiar

Si esta sobre el caracter, puede presionar otro para cambiarlo
Si esta en la parte numerica, escriba el nuevo codigo del caracter
dependiendo la visualizadion lo podra escribir en Decimal o Hexadecimal

Si usa TAB se posicionará en el panel derecho, en el mismo código en el
que estaba.

En este panel podrá cambiar ademas de la tecla normal y mayuscula,
la tecla con Alt y Alt-Shift.

Presionando escape anula el cambio.


Este es el archivo
e.zip
(942 Bytes) Descargado 115 veces
de Keymaps para Español ya modificado, colocarlo en (después de sacar copia del original) Devs/Keymaps y reinicien (claro también seleccionen distribución de teclado en español).

Se le cambiaron las siguientes teclas:
- Los Shifts de los números
- La tecla a la izquierda antes de los números de arriba
- Las dos a la derecha, después del 0
- Las de después a la derecha de la P, no pude por ser acentos
- Las de después a la derecha de la Ñ (Parcialmente)
- Las de después a la derecha de la M

Y este es el programa
Edit Keymaps.zip
(42.73 KiB) Descargado 111 veces
V.0.91 Ya casi Version definitiva, no se si funciona en Workbenck que no tenga amos.
Luego que mejore el programa se los envio.
Espero que les guste. -grin




Adicionalmente puede cambiar el lenguaje en Workbench
Para poner el Wordbench en español(Algunos mensajes en español) por ejemplo en 3.2 En System/Preferencias/Locales puedes configurarlo así

Ya le agregare mas países que no esta Venezuela, jajaja

Workbench Preferencias locales.png
Workbench Preferencias locales.png (57.03 KiB) Visto 4095 veces

Avatar de Usuario
kikems
Mensajes: 5519
Registrado: 30 May 2013 19:23
Agradecido : 2651 veces
Agradecimiento recibido: 3133 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor kikems » 16 Ene 2017 22:00

Perdona, pero no lo he entendido muy bien. El programa es para modificar los carácteres desde dentro del AMOS cuando escribes código? o el programa una vez ejecutado vale para el Workbench?

Creo que lo mejor sería modificar o hackear el archivo de keymaps para que así funcione para todos los programas.

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 16 Ene 2017 23:58

Eso hace haquea el Keymaps aunque no lo entiendo bien todo
Y funciona para todos los programas y juegos de la -coam1, todo mientras usen llamadas al Workbench, y pienso que para todas las versiones de Workbench al menos desde la 3.2 hacia atrás, mientras haya Keymaps.

Solo que el programa esta hecho en amos, pero puede ser hecho en cualquier sistema incluso en Windows.

Pueden probar directamente con el archivo "e" colocandolo en el Directorio "Devs/Keymaps/e" guardando el original primero. Y listo a usarlo.

Avatar de Usuario
jjsaenz1969
Mensajes: 1563
Registrado: 21 Oct 2016 15:45
Agradecido : 539 veces
Agradecimiento recibido: 569 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor jjsaenz1969 » 17 Ene 2017 12:48

Hola.
No se si te será de utilida pero tienes en Aminet el archivo del keymap con el mapeado de un teclado windows en castellano.
Sirve para WinUAE y también para Amiga con teclado de pc.
También existen aplicaciones para crear tu propio mapeado, todo en Aminet.

Te pongo el enlace: Teclado en Español

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 17 Ene 2017 13:56

Jeje yo savia que debía existir algo, pero no lo encontraba, bueno ni modo, igual sirve para aprender

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 17 Ene 2017 14:00

jjsaenz1969 escribió:Hola.
No se si te será de utilida pero tienes en Aminet el archivo del keymap con el mapeado de un teclado windows en castellano.
Sirve para WinUAE y también para Amiga con teclado de pc.
También existen aplicaciones para crear tu propio mapeado, todo en Aminet.

Te pongo el enlace: Teclado en Español

Vi que el archivo no cambia los ( ) , tendré que probarlo, y el programa cual es?

Por cierto, el código del programa es hecho por mi, si alguien lo necesita que me mande un privado.

Avatar de Usuario
Estrayk
Mensajes: 1232
Registrado: 05 Jun 2015 18:36
Ubicación: Valencia
Agradecido : 348 veces
Agradecimiento recibido: 985 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor Estrayk » 17 Ene 2017 16:02

pero no entiendo, hay docenas de programas que puedes cambiar el keymap.
En aminet hay la tira, por ejemplo:
http://aminet.net/package/util/misc/EditKeys163

¿No conocías Aminet Luis? Es la mayor base de datos de programas de Amiga Freeware y Shareware. Seguramente todo lo que pienses que no está hecho, alguien lo habrá programado y dejado allí.

Imagen
-j4tar1 ・Falcon 060 ・・MegaSTE ・・STe ・
-coam1・v600・A1000・A1220・A1230・A1260・v1200・CD32・G5 MorphOS・
MiSTMiSTer・X68000・Acorn A3010・Performa 630・PowerMac 4400/7600/G3/G4・Ultimate64・Atari XE 1Mb+VBXE・MSX2F1XD

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 17 Ene 2017 21:55

Ciertamente, no busque bien, lo siento mucho, jeje igual me divertí, gracias Estrayk, buscare para agregar países, jeje

Avatar de Usuario
fireb0y
Mensajes: 184
Registrado: 24 Oct 2016 00:00
Ubicación: Valencia, Spain
Agradecido : 62 veces
Agradecimiento recibido: 63 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor fireb0y » 18 Ene 2017 07:45

La verdad es, que hace tiempo buscaba una herramienta similar, y mira por donde...

Gracias Luiscoco por el aporte, y a Estrayk por la solucion ;)
-coam1 500,600,2000,1200,CDTV,4000- -m3s3x 1,2,2+- -4mstr4d 6128,464- -cocbm1 64- -sp3zy +2A- -j4tar1 2600,STE520-Sega SMS,MD2,Saturn,DC-Nintendo NES,SNES,GC,WII-X68000 ACE-NEC SuperGraphx-Xbox 1.1,1.4,1.6,360-Sony Ps1,Ps2,Ps3,PsP.

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 18 Ene 2017 13:25

Verdad que no es fácil encontrar cosas especificas

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 20 Ene 2017 15:45

fireb0y escribió:La verdad es, que hace tiempo buscaba una herramienta similar, y mira por donde...

Gracias Luiscoco por el aporte, y a Estrayk por la solucion ;)

Hola haz logrado hacer lo del teclado?
Yo aun tengo problemas con los acentos usando ese programa, Ademas no usa los números para generar las letras y aunque tiene unos doble clics que activan cosas, es bastante criptico, y si modificas alguna tecla especial tiene un borrador no muy explicativo

Ya estoy entendiendo el mecanismo del Keymaps y si no logro usar completo el programa continuare el mio.

Avísame si lo logras

Avatar de Usuario
luiscoco
Mensajes: 2431
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 42 veces
Agradecimiento recibido: 72 veces

Re: Nueva utilidad para Workbench y teclado en español en WinUAE

Mensajepor luiscoco » 20 Ene 2017 23:44

Solo para programadores de nivel de sistema operativo: Extracto de Amiga ROM Kernel Manual.pdf
INFORMACIÓN DEL KEYMAP:
Las teclas con Scancode 0-$3F son nombradas LO y las de $40-$7F como HI (teclas de control), si el Scancode trae $80 es la señal de que se soltó la tecla, Puede procesarse asi:

Código: Seleccionar todo

if (keyvalue & 0x80) { /* do key up processing */ }
else { /* do key down processing */ }


Tabla 34-3: Valores Hexadecimales para las Teclas Altas

Código: Seleccionar todo

Table 34-3: High Key Map Hex Values
Key Number Keycap Legend or Function Key Number Key Legend or Function
40 Space
41 Backspace
42 Tab
43 Enter
44 Return
45 Escape
46 Delete
4A Numeric Pad character
4C Cursor Up
4D Cursor Down
4E Cursor Right
4F Cursor Left
50-59 Function keys F1-F10
5A-5E Numeric Pad characters
5F Help
60 Left Shift
61 Right Shift
62 Caps Lock
63 Control
64 Left Alt
65 Right Alt
66 Left Amiga
67 Right Amiga


El archivo de idioma en keymap tiene el siguiente formato:
Normalmente divide todo en mapas LO y Hi (Códigos 0-3F y 40-7F), tan fácil que seria de corrido.

Código: Seleccionar todo

struct KeyMap{
UBYTE *km_LoKeyMapTypes;  1 Byte de tipo por cada Scancode en LO y HO de 64 bytes mas 64 bytes pero separados. Mas abajo los explico
ULONG *km_LoKeyMap;       4 bytes por cada Scancode, Max 2 Teclas Especiales, Ejem: Shift-Alt+Key, Alt+Key, Shift+Key, Key (en ese orden)
UBYTE *km_LoCapsable;      1 bit por Key, total 8 Bytes, indica si es Mayusculizable por el CapsLock.
UBYTE *km_LoRepeatable;   1 bit por Key, total 8 Bytes, indica si es repetible al dejarla pisada.
UBYTE *km_HiKeyMapTypes;
ULONG *km_HiKeyMap;
UBYTE *km_HiCapsable;
UBYTE *km_HiRepeatable;
};


1ro.- El mapa KeyType, contiene un byte por Scan con una de estas 3 posibilidades:
--1) Cualquier grupo de calificadores, o ninguno, a saber un SHIFT, _ALT y/o CONTROL
--2) O lo primero mas KCF_DEAD (Si se desea una tecla muerta que modifique a otras, como la tecla acento)
--3) O lo primero mas KCF_STRING (Si se desea una cadena para una tecla)

Código: Seleccionar todo

* KC_NOQUAL 0x00 (Es ninguna)
* KCF_SHIFT 0x01
* KCF_ALT 0x02
* KCF_CONTROL 0x04
* KC_VANILLA 0x07    (Es la suma de KCF_SHIFT+KCF_ALT+KCF_CONTROL)
* KCF_DOWNUP 0x08 Cuando se suelta la tecla
* KCF_DEAD 0x20L    (Este valor no aparece en el Kernel, tiene ese error)
* KCF_STRING 0x40   (Si se desea una cadena para una tecla)

* DPF_MOD   0x01
* DPF_DEAD   0x08

EXPLICACIÓN:
--1) Dependiendo de la cantidad de calificadores en el KeyType, y para un máximo de 2 calificadores, los 4 bytes del mapa se interpretan así: (valor de la tecla (T), valor de la tecla con Shift (S), valor de la tecla con _Alt (A), el Valor de la tecla con control(C) y sus combinaciones
Nota: Solo se pueden usar 2 calificadores, luego, para la tecla con todos los calificadores (KC_VANILLA), el código de la tecla saldrá con los bits 6 y 5 establecidos a 0. (Falto haber puesto 8 bytes por tecla)

Código: Seleccionar todo

Si el KeyType es:
KC_NOQUAL (Sin calificador):  0,0,0,T
KCF_SHIFT: 0,0,S,T
KCF_ALT: 0,0,A,T
KCF_CONTROL: 0,0,C,T
KCF_ALT+KCF_SHIFT: A-S,A,S,T
KCF_CONTROL+KCF_ALT: C-A,C,A,T
KCF_CONTROL+KCF_SHIFT: C-S,C,S,T
KCF_VANILLA: A-S,A,S,T  (ademas a la salida se le limpian los bits 5 y 6 puestos a cero 0)


--2) KCF_STRING, Si agregamos a lo primero esta bandera, el resultado de presionar la tecla sera una cadena de bytes (una cadena para cada combinación). Para Hacer esto los 4 bytes del Keymap se convierten en un apuntador a un descriptor de cadena, que contiene un byte del tamaño de la cadena, y un byte de la cantidad de bytes entre el comienzo de este descriptor de cadena y el comienzo de la cadena, También habrá mas de estos descriptores según las combinaciones de Keytype.
Nota: Cualquier tecla puede producir hasta ocho cadenas de bytes si KCF_STRING está configurado en su tipo de tecla. La única limitación es que la longitud total de todas las cadenas asignadas a una clave debe estar dentro del ¨Rango de salto" de un simple byte de incremento. Consulte la sección "Teclas de salida de cadena" a continuación para obtener más información.

Nota 2: la cantidad de bytes al comienzo del descriptor de cadenas, aumenta al doble por cada calificador, así sin calificador serian 2 bytes (Tamaño y distancia desde el comienzo del descriptor hasta el comienzo de la cadena), Si tiene 1 calificador 4 bytes, si tiene 2, 8 bytes y si tiene 3, 16 bytes.

Código: Seleccionar todo

When a key is to output a string, the keymap table contains the address of a string descriptor in place of a 4-byte
mapping of a key. Here is a partial table for a new high keymap table that contains only three entries thus far. The
first two are for the space bar and the backspace key; the third is for the tab key, which is to output a string that
says "[TAB]". An alternate string, "[SHIFTED-TAB]", is also to be output when a shifted TAB key is pressed.
newHiMapTypes:
DC.B KCF_ALT,KC_NOQUAL, ;key 41
DC.B KCF_STRING+KCF_SHIFT, ;key 42
... ;(more)
newHiMap:
DC.B 0,0,$A0,$20 ;key 40: space bar, and Alt-space bar
DC.B 0,0,0,$08 ;key 41: Back Space key only
DC.L newkey42 ;key 42: new string definition to output for Tab
... ;(more)
newkey42:
DC.B new42ue - new42us ;length of the unshifted string
DC.B new42us - newkey42 ;number of bytes from start of
;string descriptor to start of this string
DC.B new42se - new42ss ;length of the shifted string
DC.B new42ss - newkey42 ;number of bytes from start of
;string descriptor to start of this string
new42us: DC.B ’[TAB]’
new42ue:
new42ss: DC.B ’[SHIFTED-TAB]’
new42se:
Keymap Library 821


--3) KCF_DEAD, Si agregamos a lo primero esta bandera, la tecla entonces es una tecla muerta (momentáneamente sin salida, como los acentos) y por lo tanto puede modificar o ser modificada por otra tecla de clase muerta. Tanto la tecla muerta como la tecla a cambiar llevan esta bandera.

Luego la Keymap lleva un apuntador a la tabla de descriptores de teclas muertas, que consiste en 2 bytes por cada calificador + (1 para ninguno), para un máximo de 4 * 2 bytes.
El primer Byte apuntado puede tener uno de 3 valores, 0 o las banderas DPF_DEAD=8 o DPF_MOD=1 según la tecla sea muerta(acento) o modificable, Si 0 se usa el dato del segundo byte como valor de la tecla,
Si DPF_DEAD, el segundo byte tiene el desplazamiento en la tabla de datos.
Si DPF_MOD, el segundo byte tiene el desplazamiento desde el comienzo de este descriptor hasta la data de la tecla.

Esta data consta de 1 a 8 bytes dependiendo la cantidad de calificadores

2ro.- El mapa KeyMap, contiene un 4 bytes por Scan con una de estas 3 posibilidades: ya vistas anteriormente
-- Como cuatro bytes
-- Como un apuntador (LONGWORD) que contiene la dirección de un descriptor de cadena.
-- Como un apuntador (LONGWORD) que contiene la dirección de un descriptor de tecla muerta

3ro.- El mapa Capsable, contiene un bit por Scancode (64) para un total de 8 bytes: Si esta en 1 el CapsLook lo coloca en mayuscula.
3ro.- El mapa Repeatable, contiene un bit por Scancode (64) para un total de 8 Bytes: Si esta en 1 la tecla es Auto-Repetible.


Volver a “Software & OS Amiga”

¿Quién está conectado?

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