====== 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