File map_gamepad.sh of Package shanwan-gamepad
#!/bin/bash
find_event() {
local input=$1
grep -E "Handlers=.*$input" /proc/bus/input/devices | grep -oe 'event[0-9]*'
}
start_xboxdrv() {
local input=$1
local event=$2
echo "Joystick detected: $input"
echo "Event number: $event"
sudo xboxdrv --evdev "/dev/input/$event" \
--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=x2,ABS_Z=y2,ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y \
--axismap -Y1=Y1,-Y2=Y2 \
--evdev-keymap BTN_TOP=x,BTN_TRIGGER=y,BTN_THUMB2=a,BTN_THUMB=b,BTN_BASE3=back,BTN_BASE4=start,BTN_BASE=lb,BTN_BASE2=rb,BTN_TOP2=lt,BTN_PINKIE=rt,BTN_BASE5=tl,BTN_BASE6=tr \
--mimic-xpad --silent > /dev/null 2>&1 & disown
}
sleep 3
event_js0=$(find_event 'js1')
event_js1=$(find_event 'js2')
if [ -n "$event_js0" ]; then
start_xboxdrv 'js1' "$event_js0"
else
echo "Joystick js1 not found."
fi
if [ -n "$event_js1" ]; then
start_xboxdrv 'js2' "$event_js1"
else
echo "Joystick js2 not found."
fi
echo "Joysticks configured and running in the background."