개요
얼마전 로터리 게임들을 advmame에서 설정했습니다.
advmame 설정중 save state와 load state 기능도 단축키를 할당했는데요.
아쉽게도 키보드로 저장할 slot을 숫자로 지정해 줘야하는 문제점이 있더군요.

자주 사용하는 기능인데 키보드 없이 save/load state 기능을 수행하고 싶어서
특정 버튼이 눌러지면 키보드 누르는 동작을 수행하도록 꼼수를 부려봤습니다.
저는 라즈베리파이로 동작시 뷰릭스에서 안쓰는 버튼(GUIDE버튼)이 있어서
여기에 키보드의 "1" 값을 매핑하였습니다.
패키지 설치
$ sudo pip3 install keyboard
$ sudo pip3 install inputs- 참고 - keyboard : https://pypi.python.org/pypi/keyboard/
- 참고 - inputs : https://inputs.readthedocs.io/en/latest/index.html
관련 파일 설치
첨부된 파일의 위치를 참고하여 적당한 위치에 파일을 복사합니다.
저는 kimstar라는 디렉토리에 필요한 파이썬파일을 넣어두었습니다.
실행과 종료를 수행할 스크립트는 실행권한을 아래와 같이 설정합니다.
$ chmod +x /home/pi/RetroPie/roms/ports/startButton2key.sh
$ chmod +x /home/pi/RetroPie/roms/ports/stopButton2key.sh port에는 매핑프로그램을 시작/종료하는 스크립트를 넣었습니다.
/home/pi/RetroPie/roms/ports/gamelist.xml 파일을 첨부파일을 참고하여 수정해주세요.
....
<game>
<path>./startButton2key.sh</path>
<name>START : Guide to 1</name>
</game>
<game>
<path>./stopButton2key.sh</path>
<name>STOP : Guide to 1</name>
</game>
....버튼 이름 확인
매핑할 버튼의 이름을 확인합니다.
$ python3 /home/pi/kimstar/buttonDetect.py
.......
KeyError: 300
......저는 여기서 300이란 값의 버튼을 모른다는 오류가 발생하여,
해당 패키지에 300에 해당하는 버튼 이름을 추가하였습니다.
$ sudo vi /usr/local/lib/python3.5/dist-packages/inputs.py
....
(300, "KEY_VEWLIX_GUIDE"),
....다시 실행해 보면 버튼을 누를때 버튼이름이 출력됩니다.
확인하였으면 Ctrl+C로 빠져나갑니다.
$ sudo python3 /home/pi/kimstar/buttonDetect.py
Press Button
button : KEY_VEWLIX_GUIDEstartButton2key.py 수정
startButton2key.sh 파일을 열어서 "KEY_VEWLIX_GUIDE" 부분을 원하는 버튼이름으로 변경하고 저장합니다.
$ nano /home/pi/kimstar/startButton2key.py실행방법
1) ports에서 START를 실행하면 매핑 프로그램이 동작합니다.
2) 원하는 mame 게임을 실행하고, save state 또는 load state 버튼을 누릅니다.
3) slot을 입력하라고 나오면 설정한 버튼을 누르면position 1에 저장/로드되었다고 화면에 표시됩니다.
4) 게임 종료 후 더이상 매핑이 필요없으면, ports에서 STOP을 수행합니다.




