Ver la versión completa : [Ayuda] ¿Simular teclado con joystick en linux?
Dullyboy
31/10/2013, 14:49
Creía que lo había conseguido con joy2key pero el muy ****** solo me coge caracteres ascii, y es me imprescindible poder mapear las flechas del teclado. Estoy con la raspberry y querría que me funcionase desde la consola sin cargar el sistema gráfico (hay soluciones por ahí que solo funcionan con las X) ¿Alguna idea de con que debería de probar? Porque ya me he dejado los cuernos con el joy2key :D. De mano había pensado en hacer un script que detectase las pulsaciones del joystick, pero no encontré nada por google que no fuese en C ¿Meaba fuera del tiesto no :D?
Dullyboy
01/11/2013, 17:23
Dado que no encuentro solución para hacerlo como quería, estoy mirando a ver si puedo hacer un apaño pero na. El XBMC se supone que admite que lo controlen con un joystick editando un fichero como este:
<keymap>
<global>
<joystick name="Xbox 360 Wireless Receiver">
<altname>Controller (Gamepad for Xbox 360)</altname>
<altname>Controller (XBOX 360 For Windows)</altname>
<button id="1">Select</button>
<button id="2">Back</button>
<button id="3">FullScreen</button>
<button id="4">ContextMenu</button>
</joystick>
</global>
</keymap>
Pero no he conseguido nada ¿Alguien lo tiene hecho para comparar a ver si tengo algo mal?
Y luego, he intentado meter una cuenta atrás para elegir una opción por defecto en el menú pero soy incapaz. ¿Alguien sabe como hacerlo? El menú lo hice a partir de este:
http://bash.cyberciti.biz/guide/A_menu_box
Creía que lo había conseguido con joy2key pero el muy ****** solo me coge caracteres ascii, y es me imprescindible poder mapear las flechas del teclado. Estoy con la raspberry y querría que me funcionase desde la consola sin cargar el sistema gráfico (hay soluciones por ahí que solo funcionan con las X) ¿Alguna idea de con que debería de probar? Porque ya me he dejado los cuernos con el joy2key :D. De mano había pensado en hacer un script que detectase las pulsaciones del joystick, pero no encontré nada por google que no fuese en C ¿Meaba fuera del tiesto no :D?
Yo me tiré unas 6 horas intentando hacer lo mismo, y no lo conseguí. El autor de pimame dice que lo implementará en próximas versiones, así que yo no me molestaría mucho.
Dullyboy
01/11/2013, 18:31
Yo me tiré unas 6 horas intentando hacer lo mismo, y no lo conseguí. El autor de pimame dice que lo implementará en próximas versiones, así que yo no me molestaría mucho.
Yo uso el emulationstation y si tiene soporte para el mando. Yo lo quiero para poder llegar él (y también manejar el XBMC por si no puedo con el mando de la tele).
3XCL4M4t10N
01/11/2013, 19:26
Pues yo venia a recomendarte el Joy2Key mira tu por donde :P
Dullyboy
01/11/2013, 19:40
Pues yo venia a recomendarte el Joy2Key mira tu por donde :P
Pues si me dices como hacer que la pulsación de las flechas sin las X te acepto la recomendación :D.
3XCL4M4t10N
01/11/2013, 19:44
Linux lo tengo muy oxidado y mas para este tipo de cosas. Entra tanto:
http://qjoypad.sourceforge.net/#download
Dullyboy
01/11/2013, 20:11
Linux lo tengo muy oxidado y mas para este tipo de cosas. Entra tanto:
http://qjoypad.sourceforge.net/#download
Ya estaba descaratado por esto :)
QJoyPad is only meant for Linux computers and will only work in XWindows.
3XCL4M4t10N
01/11/2013, 21:38
Vale, ahora se a lo que te referias con X XD
Hay 2 utilidades para hacer lo mismo en consola, pero implica mirar keycodes y no se que mandangas. No recuerdo el nombre, pero insisto que probé todas las formas posibles y no fui capaz, incluso metiéndome en foros oscuros de internet y examinando código fuente.
En éste post explican que hay un tío que está trabajando en ello en los menús en python que usa pimame, así que imagino que no se podrá de ninguna forma.
http://pimame.org/forum/discussion/576/remove-the-need-for-a-keyboard-when-using-gamepad
Dullyboy
02/11/2013, 08:11
¿Este? https://sourceforge.net/projects/linuxjoymap/
Porque tiene buena pinta. Le he hecho una pregunta al tio por sourceforge a ver si me contesta.
Creía que lo había conseguido con joy2key pero el muy ****** solo me coge caracteres ascii, y es me imprescindible poder mapear las flechas del teclado. Estoy con la raspberry y querría que me funcionase desde la consola sin cargar el sistema gráfico (hay soluciones por ahí que solo funcionan con las X) ¿Alguna idea de con que debería de probar? Porque ya me he dejado los cuernos con el joy2key :D. De mano había pensado en hacer un script que detectase las pulsaciones del joystick, pero no encontré nada por google que no fuese en C ¿Meaba fuera del tiesto no :D?
El terminal codifica las flechas y otras teclas de control como secuencias de caracteres ASCII. Supongo entonces que joy2key no deja asignar más de un caracter por botón, porque de otro modo no debería haber problema. Ahora no puedo, pero ya le echaré un vistazo, que igual no es difícil hacerle un apaño.
Y luego, he intentado meter una cuenta atrás para elegir una opción por defecto en el menú pero soy incapaz. ¿Alguien sabe como hacerlo? El menú lo hice a partir de este:
http://bash.cyberciti.biz/guide/A_menu_box
No sé si te sirve, pero podrías usar el parámetro "timeout" de dialog, que se utiliza para especificar, en segundos, la duración máxima del cuadro de diálogo si no hay interacción del usuario. La opción predeterminada la puedes poner en el "case", añadiéndole una opción por defecto que tenga por código el mismo que el de la opción que quieres que sea la predeterminada. Siguiendo el ejemplo que has usado, de forma esquemática, sería algo así:
dialog --timeout 5 ...
case ...
...
opcion n) codigo n;;
...
*) codigo n;;
esac
Dullyboy
02/11/2013, 16:21
El terminal codifica las flechas y otras teclas de control como secuencias de caracteres ASCII. Supongo entonces que joy2key no deja asignar más de un caracter por botón, porque de otro modo no debería haber problema. Ahora no puedo, pero ya le echaré un vistazo, que igual no es difícil hacerle un apaño.
No sé si te sirve, pero podrías usar el parámetro "timeout" de dialog, que se utiliza para especificar, en segundos, la duración máxima del cuadro de diálogo si no hay interacción del usuario. La opción predeterminada la puedes poner en el "case", añadiéndole una opción por defecto que tenga por código el mismo que el de la opción que quieres que sea la predeterminada. Siguiendo el ejemplo que has usado, de forma esquemática, sería algo así:
dialog --timeout 5 ...
case ...
...
opcion n) codigo n;;
...
*) codigo n;;
esac
Muchas gracias crack, me sirve todo perfecto. Mira que llegué a buscar dialog y timeout junto y no llegué a encontrar nada. Y acabo de mirar y pone gente en foros que el joy2key permite bindear más de una tecla por botón, así que tengo que investigar :).
-----Actualizado-----
Lo de la cuenta atrás en el menú ya funciona :), pero lo joy2key no he encontrado la forma aún, igual es solo para la versión de windows lo de poder usar más de una tecla :D.
3XCL4M4t10N
02/11/2013, 17:10
En windows si se puede, de echo lo uso para el Garou.
Muchas gracias crack, me sirve todo perfecto. Mira que llegué a buscar dialog y timeout junto y no llegué a encontrar nada. Y acabo de mirar y pone gente en foros que el joy2key permite bindear más de una tecla por botón, así que tengo que investigar :).
-----Actualizado-----
Lo de la cuenta atrás en el menú ya funciona :), pero lo joy2key no he encontrado la forma aún, igual es solo para la versión de windows lo de poder usar más de una tecla :D.
La versión (http://sourceforge.net/projects/joy2key/) que he visto del joy2key, en el modo terminal, no permite asignar más de un caracter por botón. Le he hecho un apaño y parece que funciona. Hay que compilarlo para la RasPI, sustituyendo el fichero joy2key.c que va en el archivo enlazado en esa página por éste (http://pastebin.com/hEJkvJgg), que es el modificado.
Por cierto, si tratas de usarlo con un programa que ponga el teclado en modo raw o semi-raw, no va a funcionar, ya que ese programa espera recibir scancodes o keycodes, no caracteres ASCII, que es lo que le envía el joy2key. Pero vamos, eso no tiene que ver con la modificación, ya era así antes de hacerla.
Te explico como va ahora...
Para no liarme mucho, lo he modificado (la modificación solo afecta al modo terminal) de manera que ahora el valor que le asignas a cada botón o dirección de un eje no es ya el caracter que envías, sino un índice a una tabla en la aparecen los caracteres que se enviarán. Así, por ejemplo, con la siguiente configuración:
-terminal
-buttons 10 11 12 13 14 15 16
-axis 17 18 19 20
La dirección izquierda del primer eje tiene asignada el número 17. Ese número corresponde a una entrada de un nuevo fichero, "~/.joy2key_map", en el que figuran las asignaciones. Por ejemplo, su contenido podría ser:
10 97 a
11 98 b
12 99 c
13 100 d
14 32 space
15 27 esc
16 13 enter
17 27 91 68 left
18 27 91 67 right
19 27 91 65 up
20 27 91 66 down
Cada línea es una entrada. El primer número de una línea es el índice y los siguientes, los caracteres que se envían para ese índice (pueden ponerse hasta cinco caracteres). Lo que aparece a la derecha de cada línea son simplemente comentarios, no son relevantes. Siguiendo con el ejemplo, la dirección izquierda tiene asignada el índice 17, y éste, en ese fichero, tiene asignados los caracteres 27, 91 y 68 (en decimal), que son los caracteres que se enviarán, los correspondientes a la flecha izquierda. Para crear ese fichero hay que saber qué caracteres le corresponden a cada tecla. Eso puedes averiguarlo ejecutando "showkey -m" y pulsando las teclas que te interesen.
Si alguien es capaz de obtener un binario de ese joy2key modificado y funcional bajo terminal en las raspi le estaría muy agradecido.
Dullyboy
03/11/2013, 08:30
La versión (http://sourceforge.net/projects/joy2key/) que he visto del joy2key, en el modo terminal, no permite asignar más de un caracter por botón. Le he hecho un apaño y parece que funciona. Hay que compilarlo para la RasPI, sustituyendo el fichero joy2key.c que va en el archivo enlazado en esa página por éste (http://pastebin.com/hEJkvJgg), que es el modificado.
Por cierto, si tratas de usarlo con un programa que ponga el teclado en modo raw o semi-raw, no va a funcionar, ya que ese programa espera recibir scancodes o keycodes, no caracteres ASCII, que es lo que le envía el joy2key. Pero vamos, eso no tiene que ver con la modificación, ya era así antes de hacerla.
Te explico como va ahora...
Para no liarme mucho, lo he modificado (la modificación solo afecta al modo terminal) de manera que ahora el valor que le asignas a cada botón o dirección de un eje no es ya el caracter que envías, sino un índice a una tabla en la aparecen los caracteres que se enviarán. Así, por ejemplo, con la siguiente configuración:
-terminal
-buttons 10 11 12 13 14 15 16
-axis 17 18 19 20
La dirección izquierda del primer eje tiene asignada el número 17. Ese número corresponde a una entrada de un nuevo fichero, "~/.joy2key_map", en el que figuran las asignaciones. Por ejemplo, su contenido podría ser:
10 97 a
11 98 b
12 99 c
13 100 d
14 32 space
15 27 esc
16 13 enter
17 27 91 68 left
18 27 91 67 right
19 27 91 65 up
20 27 91 66 down
Cada línea es una entrada. El primer número de una línea es el índice y los siguientes, los caracteres que se envían para ese índice (pueden ponerse hasta cinco caracteres). Lo que aparece a la derecha de cada línea son simplemente comentarios, no son relevantes. Siguiendo con el ejemplo, la dirección izquierda tiene asignada el índice 17, y éste, en ese fichero, tiene asignados los caracteres 27, 91 y 68 (en decimal), que son los caracteres que se enviarán, los correspondientes a la flecha izquierda. Para crear ese fichero hay que saber qué caracteres le corresponden a cada tecla. Eso puedes averiguarlo ejecutando "showkey -m" y pulsando las teclas que te interesen.
*****, me quedé muy corto con lo de crack :D.
Dullyboy
03/11/2013, 11:40
Si alguien es capaz de obtener un binario de ese joy2key modificado y funcional bajo terminal en las raspi le estaría muy agradecido.
Solo tienes que compilarlo sustituyendo el archivo.
(Dar permiso de ejecución a "configure" es lo único raro)
sudo chmod +x ./configure
./configure
make
sudo make install
(Todo esto por supuesto dentro de la carpeta donde hayas descomprimido el código fuente del joy2key y después de haber desinstalado el joy2key normal si lo tienes :))
Yo es que no tengo la Raspberry y no me he parado a montar una toolchain, si no ya hubiese puesto el correspondiente binario.
No he probado mucho la versión modificada, pero parece que funciona. No sé si quedó clara la explicación que puse antes sobre cómo se configura, etc. Si tenéis dudas, preguntad :)
Dullyboy
03/11/2013, 17:08
Yo es que no tengo la Raspberry y no me he parado a montar una toolchain, si no ya hubiese puesto el correspondiente binario.
No he probado mucho la versión modificada, pero parece que funciona. No sé si quedó clara la explicación que puse antes sobre cómo se configura, etc. Si tenéis dudas, preguntad :)
Yo no he tenido ningún problema, de hecho lo primero que he hecho después de ver que funcionaba ha sido jugar con el archivo de configuración a ver si me dejaba hacer lo quería y no fallado nada :):
13 13 Return
15 27 Esc
17 27 91 68 Left
18 27 91 67 Right
19 27 91 65 Up
20 27 91 66 Down
21 27 91 53 126 PagUp
22 27 91 54 126 PagDown
32 32 Space
97 97 a
98 98 b
99 99 c
100 100 d
109 109 m
127 127 Backspace
Yo no he tenido ningún problema, de hecho lo primero que he hecho después de ver que funcionaba ha sido jugar con el archivo de configuración a ver si me dejaba hacer lo quería y no fallado nada :)
¡Genial! Me alegro de que haya funcionado todo bien :)
Yo no he tenido ningún problema, de hecho lo primero que he hecho después de ver que funcionaba ha sido jugar con el archivo de configuración a ver si me dejaba hacer lo quería y no fallado nada :):
13 13 Return
15 27 Esc
17 27 91 68 Left
18 27 91 67 Right
19 27 91 65 Up
20 27 91 66 Down
21 27 91 53 126 PagUp
22 27 91 54 126 PagDown
32 32 Space
97 97 a
98 98 b
99 99 c
100 100 d
109 109 m
127 127 Backspace
Puedes colgar el binario en algun sitio ?
Dullyboy
04/11/2013, 10:34
No se como va esto en linux, supongo que será este archivo solo.
36710
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.