distribution/packages/virtual/emulators/scripts/mkcontroller

84 lines
2.1 KiB
Bash
Executable file

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
TMPFILE=$(uuidgen)
OUTFILE=$(uuidgen)
CONTROLLER=$(grep -b4 js0 /proc/bus/input/devices | awk 'BEGIN {FS="\""}; /Name/ {printf $2}')
xmlstarlet sel -t \
-m "/inputList/inputConfig[@deviceName='${CONTROLLER}']/input" \
-v "concat(@name,'|',@type,'|',@id,'|',@value)" \
-n /storage/.config/emulationstation/es_input.cfg >/tmp/${TMPFILE}
while read -r line
do
BTN=$(echo ${line} | awk 'BEGIN { FS="|" } {print $1}')
TYPE=$(echo ${line} | awk 'BEGIN { FS="|" } {print $2}')
ID=$(echo ${line} | awk 'BEGIN {FS="|" } {print $3}')
VALUE=$(echo ${line} | awk 'BEGIN { FS="|" } {print $4}')
if [ "${TYPE}" == "axis" ]
then
if [[ "${VALUE}" =~ ^[0-9] ]]
then
ID="+${ID}"
else
ID="-${ID}"
fi
elif [ "${TYPE}" == "hat" ]
then
ID="h${ID}${BTN}"
fi
if [[ ${BTN} == "pagedown" ]]
then
BTN="leftshoulder"
elif [[ ${BTN} == "pageup" ]]
then
BTN="rightshoulder"
elif [[ ${BTN} == "l2" ]]
then
BTN="lefttrigger"
elif [[ ${BTN} == "r2" ]]
then
BTN="righttrigger"
elif [[ ${BTN} == "l3" ]]
then
BTN="leftthumb"
elif [[ ${BTN} == "r3" ]]
then
BTN="rightthumb"
fi
echo "${BTN}=${ID}" >>/tmp/${OUTFILE}
done < /tmp/${TMPFILE}
rm -f /tmp/${TMPFILE}
source /tmp/${OUTFILE}
echo "${CONTROLLER}" >/storage/.controller
cat <<EOF >/storage/.config/profile.d/098-controller
DEVICE_BTN_SOUTH="${b}"
DEVICE_BTN_EAST="${a}"
DEVICE_BTN_NORTH="${x}"
DEVICE_BTN_WEST="${y}"
DEVICE_BTN_TL="${leftshoulder}"
DEVICE_BTN_TR="${rightshoulder}"
DEVICE_BTN_TL2="${lefttrigger}"
DEVICE_BTN_TR2="${righttrigger}"
DEVICE_BTN_SELECT="${select}"
DEVICE_BTN_START="${start}"
DEVICE_BTN_MODE="${hotkeyenable}"
DEVICE_BTN_THUMBL="${leftthumb}"
DEVICE_BTN_THUMBR="${rightthumb}"
DEVICE_BTN_DPAD_UP="${up}"
DEVICE_BTN_DPAD_DOWN="${down}"
DEVICE_BTN_DPAD_LEFT="${left}"
DEVICE_BTN_DPAD_RIGHT="${right}"
EOF
### Link jslisten to load after mkcontroller
ln -sf /usr/config/jslisten_profile /storage/.config/profile.d/099-jslisten
rm /tmp/${OUTFILE}