PDA

Ver la versión completa : [Programación] Códigos de teclas WIZ



turco
21/11/2011, 23:32
Hola a todos, sé que hay varios hilos hablando de esto en el foro, pero los he consultado y no encuentro una respuesta segura. ¿Alguien me puede confirmar si estos códigos son los correctos para WIZ?


/* Codigos de teclas para WIZ */
#define MG_KEY_UP 0
#define MG_KEY_LEFT 2
#define MG_KEY_DOWN 4
#define MG_KEY_RIGHT 6
#define MG_KEY_ACTION_1 12 // A
#define MG_KEY_ACTION_2 13 // B
#define MG_KEY_ACTION_3 14 // X
#define MG_KEY_ACTION_4 15 // Y
#define MG_KEY_PREV 10 // L
#define MG_KEY_NEXT 11 // R
#define MG_KEY_START 8
#define MG_KEY_SELECT 9


Gracias desde ya. Saludos :brindis:

jcom
21/11/2011, 23:34
Parece que sí.


enum GP2X_Key {
UP = 0,
UP_LEFT = 1,
LEFT = 2,
DOWN_LEFT = 3,
DOWN = 4,
DOWN_RIGHT = 5,
RIGHT = 6,
UP_RIGHT = 7,
MENU = 8,
SELECT = 9,
L = 10,
R = 11,
A = 12,
B = 13,
X = 14,
Y = 15,
VOL_UP = 16,
VOL_DOWN = 17
};

turco
21/11/2011, 23:47
Muchas gracias jcom, entonces el problema debe estar en otro sitio :o jej

< - >
Otra pregunta a ver si alguien ve algo que yo no veo :-( ¿Veis algo que no esté bien en este código?

Fichero MG_ControlsMapping.h

#ifndef _MG_CONTROLSMAPPING_H
#define _MG_CONTROLSMAPPING_H

#ifdef WIZ
/* Codigos de teclas para WIZ */
#else
#ifdef CAANOO
/* Codigos de teclas para CAANOO */
#else
#ifdef JOYSTICK
/* Còdigos para Joystick PC */
#else
/* Codigos de teclas para Teclado PC */
#endif
#endif
#endif

#endif // _MG_CONTROLSMAPPING_H

Es que tengo puesto eso y en tiempo de compilación para wiz creo el #define WIZ, pero a la hora de ejecutar el programa los mapeos no son correctos, de echo sólo me interpreta el botón SELECT como si fuese el R teniendo los mapeos tal como describo en el primer post

¿A alguien se le ocurre que puede estar pasando? :loco:

Jurk
22/11/2011, 00:21
creo que es porque el mapeo de SDL no concuerda con el mapeo de gpio...

por eso te puede pasar, XD.

buscate un codigo fuente de aqui (http://dl.openhandhelds.org/cgi-bin/wiz.cgi?0,0,0,0,46) que seguro que alguno tiene los numeros para solucionartelo...

jcom
22/11/2011, 00:26
Vaya, ¿no te haces un lío con tanto #ifdef anidado? Ten en cuenta que en tu código se usarán los mapeos para Caanoo (por poner un ejemplo) si CAANNOO está definido y si no está definido WIZ.

Para mí resulta más práctico y legible poner las macros sin anidar:



#ifdef WIZ
/* ... */
#endif

#ifdef CAANOO
/* ... */
#endif

#ifdef PC_JOYSTICK
/* ... */
#endif

#ifdef PC_KEYBOARD
/* ... */
#endif


En principio tu código está bien, quizás el problema está en el Makefile o script que uses para compilar.

hardyx
22/11/2011, 09:19
Es cierto, los códigos para GPIO y para SDL son diferentes. Mira también que no estés mezclando los códigos de varias teclas con un OR (|) al leerlas.

turco
22/11/2011, 10:09
Gracias a todos por vuestras respuestas. Esta noche me miraré lo de GPIO, que la verdad ahora mismo no se ni lo que es jeje. Ya os contaré los resultados ;-)

Jurk
22/11/2011, 10:12
resumiendo, los numeros asignados a las teclas son distintas si usas gpio que si usas el key de SDL

turco
23/11/2011, 01:17
Buenas noches :sobando:, antes de nada aclarar que lo mío es una aplicación SDL. Entiendo que entonces lo de GPIO no interviene para nada ¿es así?

He descargado algunos códigos fuentes y he consultado los mapeos de teclas. Algunos lo tenían definido tal y como lo tengo yo, y he encontrado uno con los códigos distintos. He probado estos códigos y tampoco me funcionan :o, así que he optado por crearme una pequeña utilidad que me muestre por pantalla el código de la tecla pulsada...

Pues los códigos que me muestra la utilidad por pantalla son los mismos que tengo mapeados, así que no sé realmente en qué estoy fallando.

PD: Os dejo la utilidad por si a alguien le interesa: 24308 Para salir de la utilidad basta con tocar la pantalla

Jurk
23/11/2011, 01:32
pues entonces me parece que el problema puede estar en la rutina de interpretacion de pulsaciones

turco
24/11/2011, 00:02
Por fin he podido encontrar el error de mi programa y el problema no estaba en los códigos utilizados sino en la lógica del programa :o
Disculpadme y muchas gracias a todos,
Saludos :brindis:

hardyx
24/11/2011, 00:19
Suele pasar, utiliza el printf() para sacar mensajes con las teclas a un archivo o a la consola, y asi podrás ver si estás cogiendo la tecla correcta. Enhorabuena por arreglar el error.