====== Batocera ====== Batocera root user password is linux (z.B. ssh) SMB: smb://BATOCERA.local/share ====== Tricks zum Debbuggen ====== Änderungen in dmesg permanent anzeigen: dmesg -wH (-H: human) (wie: tail -F) Neustart der Oberfläche (ssh) batocera-es-swissknife --restart ===== Eigene Knöpfe für Sound oder andere Aktionen ===== Quelle((https://wiki.batocera.org/scripting_function_keys)) cp /etc/triggerhappy/triggers.d/multimedia_key.conf /userdata/system/configs/ ==== Identifying key names ==== Open a terminal and type the following command: evtest Then select your intended controller and press the button on your controller. The detected input will then be displayed like so: Event: time 1614795871.549381, type 1 (EV_KEY), code 99 (KEY_SYSRQ), value 0 Look for the key name in parenthesis and its value when depressed after the “code” number. In this example, the key name would be KEY_SYSRQ and its value would be 0. cat multimedia_keys.conf KEY_VOLUMEUP 1 batocera-audio setSystemVolume +5 KEY_VOLUMEUP 2 batocera-audio setSystemVolume +5 KEY_VOLUMEDOWN 1 batocera-audio setSystemVolume -5 KEY_VOLUMEDOWN 2 batocera-audio setSystemVolume -5 KEY_MUTE 1 batocera-audio setSystemVolume mute-toggle KEY_POWER 1 batocera-shutdown 1 KEY_POWER 0 batocera-shutdown 0 # display some information on X displays KEY_F2 1 /usr/bin/batocera-info --short | LANG=en_US HOME=/userdata/system XAUTHORITY=/var/lib/.Xauthority DISPLAY=:0.0 osd_cat -f -*-*-bold-*-*-*-38-120-*-*-*-*-*-* -cred -s 3 -d 4 KEY_F10+KEY_LEFTCTRL+KEY_LEFTALT 1 /etc/init.d/S31emulationstation stop KEY_F11+KEY_LEFTCTRL+KEY_LEFTALT 1 chvt 1 KEY_LEFTMETA 1 batocera-brightness cycle KEY_SYSRQ 1 batocera-screenshot BTN_PINKIE 1 batocera-audio setSystemVolume -5 BTN_TOP2 1 batocera-audio setSystemVolume +5 ===== Hardware ===== ==== Joystick ==== === Anlog Joystick on this cheap USB-encoder === Quelle((https://www.instructables.com/Zero-Delay-USB-Encoder-True-Analog-Joystick-Modifi/)) When I discovered these cheap CY-822A / USB Joystick X1 - Game Control Board USB Joystick Encoders on Ebay and Amazon I was puzzled by their description and construction. A lot of people like to make their own input devices and controllers and these are a cheap way to get started - but just switches are not always what you want. Despite the Analogue description its a very Digital device. {{::joystick-usb-analog.jpg?600|}} Bessere Möglichkeit mit dem gleichen CY-822A: Brücken, damit das Ding direkt in den Analogmodus bootet: [[https://beko.famkos.net/2022/03/17/cy-822a-with-analogue-input/]] ==== VPinball ==== Visual Pinball X - nimmt nur vpx-files. Problem: Batocera > v38_: rom MUSS in dem Verzeichnis sein (bzw. Unterverzeichnis rom/) in dem auch vpx ist. Das Editieren der /media/SHARE/system/configs/vpinball/VPinballX.ini bringt nicht, weil VPX bei jeden Start diese Datei wieder mit dem default überschreibt (warum?). Offenbar von einem r-Overlay. Lösung: Script schreibt in jedes Verzeichnis einen symlink zum rom hinein. create_symlinks.sh #!/bin/bash # Pfad zum zentralen ROM-Verzeichnis rom_source="/userdata/roms/vpinball/pinmame/roms" # Pfad zu den Tabellenverzeichnissen table_dirs="/userdata/roms/vpinball/" # Liste der Verzeichnisse, die ausgespart werden sollen exclude_dirs=("pinmame" "videos" "ini" "images" "manuals") # Schleife über alle Unterverzeichnisse im table_dirs-Pfad for dir in "$table_dirs"*/; do # Überprüfen, ob es sich um ein Verzeichnis handelt if [ -d "$dir" ]; then # Verzeichnisname extrahieren dir_name=$(basename "$dir") # Prüfen, ob das Verzeichnis in der Ausschlussliste enthalten ist if [[ " ${exclude_dirs[@]} " =~ " ${dir_name} " ]]; then echo "Verzeichnis $dir_name wird ausgelassen" continue fi # Symlink erstellen, wenn er nicht bereits existiert if [ ! -L "$dir/roms" ]; then ln -s "$rom_source" "$dir/roms" echo "Symlink erstellt: $dir/roms -> $rom_source" else echo "Symlink existiert bereits in $dir" fi fi done cat remove_symlinks.sh #!/bin/bash # Pfad zu den Tabellenverzeichnissen table_dirs="/userdata/roms/vpinball/" # Schleife über alle Unterverzeichnisse im table_dirs-Pfad for dir in "$table_dirs"*/; do # Überprüfen, ob es sich um ein Verzeichnis handelt und ob ein Symlink existiert if [ -d "$dir" ] && [ -L "$dir/roms" ]; then # Symlink entfernen rm "$dir/roms" echo "Symlink entfernt: $dir/roms" else echo "Kein Symlink vorhanden in $dir" fi done