CCCPaste

Control Shell Script Menu with Game Controller Joystick

#!/bin/bash
######################################################################
#Copyright (C) 2024  Kris Occhipinti
#https://filmsbykris.com

#This program is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation version 3 of the License.

#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with this program.  If not, see .
######################################################################

#uses the first game controller to select items from menu

let i="0"
list=("continue" "reboot" "poweroff" "thunar")

function next() {
	[[ $1 ]] && let i+=1 || let i-=1
	[[ $i == ${#list[@]} ]] && let i=0
	[[ $i -lt 0 ]] && let i=${#list[@]}-1
	selected
}

function selected() {
	clear
	echo "What would you like to do?"
	echo ${list[$i]}
}

function select_item() {
	[[ ${list[$i]} == "continue" ]] && exit
	eval ${list[$i]}
	exit
}

selected

jstest --event /dev/input/js0 | while read l; do
	[[ "$l" == *"number 1, value 1"* ]] && select_item
	[[ "$l" == *"number 2, value 1"* ]] && select_item
	[[ "$l" == *"number 5, value -32767"* ]] && next
	[[ "$l" == *"number 5, value 32767"* ]] && next 1
done