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."
openSUSE Build Service is sponsored by