Aplicació joanillo-keyboard

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

Ja tinc solucionat com canviar el volum des del front-end:

Però ara es tracta de canviar el volum des dels diferents emuladors. El que es persegueix és no utilitzar més els potenciòmetres dels amplificadors de so, i fer una solució totalment software.

Desenvolupament

Hem fet el projecte joanillo-keyboard que escolta les tecles que es pitgen en qualsevol programa. Concretament m'interessen les tecles 7/8 o e/f, associades al canvi de volum en els meus CPO. Llenço comandes amixer per canviar el volum, igual que faig en el fronte-end.

Recordar entrar en la configuració de MAME, doncs el 7 està associat al Pause

També he fet un canvi en l'emulador openmsx. Originalment el openmsx té en el settings.xml:

    <bind key="keyb 8,RELEASE">keymatrixup 7 16</bind>
    <bind key="keyb 8">keymatrixdown 7 16</bind>
   La tecla 8 estava associada al Stop. L'associo a la tecla 6:
    <bind key="keyb 8,RELEASE">keymatrixup 7 16</bind>
    <bind key="keyb 8">keymatrixdown 7 16</bind>

Penjo el projecte a la RPi i recompilo:

$ scp joanillo-keyboard-0.3.cpp pi@192.168.1.36:/home/pi/joanillo-keyboard
a la rpi:
$ g++ -DRPI -o joanillo-keyboard joanillo-keyboard-0.3.cpp

Recordar que hi ha màquines que tenen associat el 7/8, i d'altres e/f.

Ara he de fer que aquesta aplicació arrenqui en l'inici del sistema, abans del front-end: sudo joe /etc/rc.local -> no

$ sudo joe .profile (no era el fitxer /etc/rc.local !)

sudo /home/pi/joanillo-keyboard/joanillo-keyboard &

Per saber què consumeix el procés joanillo-keyboard:

$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | grep joanillo-keyboard

ToDo

El programa tal com està ara (joanillo-keyboard-0.3.cpp) funciona correctament.

La idea és ampliar aquest petit projecte ficant SDL, de manera que dins dels emuladors pugui veure el valor del volum. Aquesta és la part que més m'interessa, doncs obre la porta a fer canvis que tinc pendent, com ara limitar el temps que puc jugar una partida, posar una moneda en qualsevol dels emuladors, etc. És a dir, la comunicació entre el front-end i els emuladors passa per una aplicació intermitja que s'executa en background, i que sigui capaç de pintar un sprite en l'emulador.


creat per Joan Quintana Compte, febrer 2017