Instalador do emulador de joystick Xbox para joystick generico para PC, PS2, PS3 (Debian e Derivados

Publicado por MARX FABYAN CARVALHO DO MONTE (última atualização em 03/06/2025)

[ Hits: 220 ]

Homepage: marxfcmonte

Download InstallJoystickXbox360.sh




O arquivo InstallJoystickXbox360.sh pode ser executados no terminal como root, usando o comando sudo ou su.

Ele desenvolve três softwares, um para restabelecer a emulação do joystick Xbox 360, um para encerrar o serviço de emulação do joystick Xbox 360 e, por fim,
um para configurar o joystick. Além disso, permite que o serviço de emulação do joystick Xbox 360 seja iniciado automaticamente com a inicialização do sistema. (SysV)

Cria atalhos para a Área de trabalho e no menu dos aplicativos do sistema.

Dependências

xboxdrv antimicro dialog

Totalmente automatizado.

Ele reconhece o joystick e faz as configurações, apenas solicitando do usuário o perfil do joystick.

Há uma versão em arquivo Deb para instalar via instalador de pacotes no GitHub.

Link no GitHub: https://github.com/marxfcmonte/Instalador-do-emulador-de-joystick-Xbox-em-joystick-generico-de-PC-PS...

  



Esconder código-fonte

#!/bin/bash

if [ "$USER" != "root" ]; then
   echo "Use comando 'sudo'  ou comando 'su' antes de inicializar o programa."
   exit 1   
fi
if ! [ -e "/usr/bin/dialog" ]; then
   apt install -y dialog
fi
configuracao1="Instalador do emulador de joystick Xbox 360 v 1.8.1 (2025)"
cont="$[${#configuracao1} + 4]"
dialog --title "Desenvolvedor" --infobox "Desenvolvido por Marx F. C. Monte\n
Instalador do emulador de joystick Xbox 360 v 1.8.1 (2025)\n
Para a Distribuição Debian 12 e derivados (antiX 23)" 5 $cont
sleep 3
clear
configuracao1="SETAS PARA ESCOLHER, ESPAÇO PARA MUDAR E ENTER PARA CONFIRMAR"
cont="$[${#configuracao1} + 4]"
opcao=$(dialog --title "MENU" --radiolist "$configuracao1" 10 $cont 3 \
"1" "PARA INSTALAR" ON  \
"2" "PARA REMOVER" OFF \
"3" "PARA SAIR" OFF \
--stdout)
clear
case $opcao in
   1)
   while true; do
      xbox=$(dialog --title "MENU" --radiolist "ESCOLHA A CONFIGURAÇÃO DESEJADA\n(SETAS PARA ESCOLHER, ESPAÇO PARA MUDAR\nE ENTER PARA CONFIRMAR\nCTRL + c PARA SAIR)" 15 76 4 \
"1" "PARA CONFIGURAÇÃO PADRÃO" ON  \
"2" "PARA CONFIGURAÇÃO COM ANALÓGICO ESQUERDO COM SENTIDO INVERTIDO" OFF \
"3" "PARA CONFIGURAÇÃO COM ANALÓGICO DIREITO COM SENTIDO INVERTIDO" OFF \
"4" "PARA CONFIGURAÇÃO COM 2 ANALÓGICOS COM SENTIDO INVERTIDO" OFF \
--stdout)
      clear
      case $xbox in
         1)
         if [ -d "/usr/share/JoystickXbox360" ]; then
               echo -e "\nO diretório JoystickXbox360 existe..."
         else
            echo -e "\nO diretório JoystickXbox360 será criado..."
            mkdir /usr/share/JoystickXbox360
         fi
         cat <<EOF > /usr/share/JoystickXbox360/status.conf
configuração padrão...
EOF
         ;;      
         2)
         if [ -d "/usr/share/JoystickXbox360" ]; then
               echo -e "\nO diretório JoystickXbox360 existe..."
         else
            echo -e "\nO diretório JoystickXbox360 será criado..."
            mkdir /usr/share/JoystickXbox360
         fi
         cat <<EOF > /usr/share/JoystickXbox360/status.conf
analógico esquerdo com sentido invertido...
EOF
         ;;
         3)
         if [ -d "/usr/share/JoystickXbox360" ]; then
               echo -e "\nO diretório JoystickXbox360 existe..."
         else
            echo -e "\nO diretório JoystickXbox360 será criado..."
            mkdir /usr/share/JoystickXbox360
         fi
         cat <<EOF > /usr/share/JoystickXbox360/status.conf
analógico direito com sentido invertido.
EOF
         ;;
         4)
         if [ -d "/usr/share/JoystickXbox360" ]; then
            configuracao1="O diretório JoystickXbox360 existe..."
            cont="$[${#configuracao1} + 4]"
            dialog --infobox "$configuracao1" 3 $cont
            sleep 3
            clear
         else
            configuracao1="O diretório JoystickXbox360 será criado..."
            cont="$[${#configuracao1} + 4]"
            dialog --infobox "$configuracao1" 3 $cont
            sleep 3
            clear
            mkdir /usr/share/JoystickXbox360
         fi
         cat <<EOF > /usr/share/JoystickXbox360/status.conf
2 analógicos com sentido invertido...
EOF
         ;;
      esac
      if [[ "$xbox" = "1" || "$xbox" = "2" || "$xbox" = "3" || "$xbox" = "4" ]]; then
         configuracao="$(cat /usr/share/JoystickXbox360/status.conf)"
         configuracao1="Opção $xbox selecionada: $configuracao"
         cont="$[${#configuracao1} + 4]"
         dialog --infobox "Instalação sendo iniciada...\n$configuracao1" 4 $cont
         sleep 3
         clear
         if [ -e "/usr/share/JoystickXbox360/install.conf" ]; then
            configuracao1="A instalação dos pacotes não será necessária..."
            cont="$[${#configuracao1} + 4]"
            dialog --infobox "$configuracao1" 3 $cont
            sleep 3
            clear
         else
            apt update && apt-get upgrade -y
            apt install -y xboxdrv antimicro dialog
         fi
         if [ -e "/usr/share/JoystickXbox360/install.conf" ]; then
            configuracao1="O arquivo install.conf existe..."
            cont="$[${#configuracao1} + 4]"
            dialog --infobox "$configuracao1" 3 $cont
            sleep 3
            clear
         else
            configuracao1="O arquivo install.conf será criado..."
            cont="$[${#configuracao1} + 4]"
            dialog --infobox "$configuracao1" 3 $cont
            sleep 3
            clear
            echo "Pacotes instalados xboxdrv antimicro" >\
             /usr/share/JoystickXbox360/install.conf
         fi
         pkill xboxdrv &
         sleep 5
         i=0
         while true 
         do
            udevadm info -a -n /dev/input/event$i > /usr/share/JoystickXbox360/joystick.log
            if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
               read -p "Porta do joystick não localizada... Aperte Enter para sair." erro 
               exit 1
            fi
            udevadm info -a -n /dev/input/event$i | grep -q "Joystick"
            if [ "$?" = "0" ]; then
               configuracao1="Porta do joystick localizada..."
               cont="$[${#configuracao1} + 4]"
               dialog --infobox "$configuracao1" 3 $cont
               sleep 3
               clear
               jost=$i 
               break
            fi
            i=$[ i + 1 ]
         done
         chmod 775 /dev/input/event$jost 
         xboxdrv --evdev /dev/input/event$jost --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=y2,\
ABS_Z=x2,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=lt,BTN_BASE2=rt,\
BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent > /tmp/joystick.log &
         sleep 5 
         i=0
         while true 
         do
            udevadm info -a -n /dev/input/event$i > /usr/share/JoystickXbox360/joystick.log
            if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
               read -p "Porta do joystick Xbox 360 emulado não localizada... Aperte Enter para sair." erro 
               exit 1
            fi
            udevadm info -a -n /dev/input/event$i | grep -q "Microsoft X-Box 360 pad"
            if [ "$?" = "0" ]; then
               configuracao1="Porta do joystick Xbox 360 emulado localizada..."
               cont="$[${#configuracao1} + 4]"
               dialog --infobox "$configuracao1" 3 $cont
               sleep 3
               clear
               jost1=$i 
               break
            fi
            i=$[ i + 1 ]
         done
         chmod 775 /dev/input/event$jost1
         sleep 2
         cat <<EOF > /etc/X11/xorg.conf.d/51-joystick.conf
Section "InputClass"
   Identifier "joystick catchall"
   MatchIsJoystick "on"
   MatchDevicePath "/dev/input/event$jost"
   Driver "joystick"
   Option "StartKeysEnabled" "False"
   Option "StartMouseEnabled" "False"
EndSection

Section "InputClass"
   Identifier "joystick catchall"
   MatchIsJoystick "on"
   MatchDevicePath "/dev/input/event$jost1"
   Driver "joystick"
   Option "StartKeysEnabled" "False"
   Option "StartMouseEnabled" "False"
EndSection
EOF
      fi
      case $xbox in
         1)
         cat <<EOF > /usr/share/JoystickXbox360/xboxdrv.conf
--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=y2,ABS_Z=x2,\
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=lt,BTN_BASE2=rt,\
BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
EOF
         break
         ;;
         2)
         cat <<EOF > /usr/share/JoystickXbox360/xboxdrv.conf
--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=y2,ABS_Z=x2,\
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=lt,BTN_BASE2=rt,BTN_TOP2=lb,\
BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
EOF
         break
         ;;
         3)
         cat <<EOF > /usr/share/JoystickXbox360/xboxdrv.conf
--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=lt,BTN_BASE2=rt,BTN_TOP2=lb,\
BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
EOF
         break
         ;;
         4)
         cat <<EOF > /usr/share/JoystickXbox360/xboxdrv.conf
--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=lt,BTN_BASE2=rt,BTN_TOP2=lb,\
BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
EOF
         break
         ;;
         *)
         echo "
Opção $xbox - inválida!
Tente novamente... ou Ctrl + C para sair
"
         ;;
      esac
   done
   joystickconf="$(cat /usr/share/JoystickXbox360/xboxdrv.conf)"
   fim="EOF"
   cat <<EOF > /usr/share/JoystickXbox360/MudarControle.sh
#!/bin/bash
senha=\$(dialog --title "AUTORIZAÇÃO" --passwordbox "Digite a senha (SUDO):" 8 40 --stdout)
if [ -z "\$senha" ]; then
   dialog --title "ERRO" --infobox "A senha (SUDO) não foi digitada." 3 40
   exit 1
fi
clear
echo \$senha|sudo -S -p "" chown $SUDO_USER:$SUDO_USER /usr/share/JoystickXbox360/joystick.log
sudo pkill xboxdrv &
sudo touch /usr/share/JoystickXbox360/joystick1.log
sudo chown $SUDO_USER:$SUDO_USER /usr/share/JoystickXbox360/joystick1.log
sudo chown $SUDO_USER:$SUDO_USER /usr/share/JoystickXbox360/joystickxbox360.conf 
sudo chown $SUDO_USER:$SUDO_USER /usr/share/JoystickXbox360/status.conf
sudo chown $SUDO_USER:$SUDO_USER /usr/share/JoystickXbox360/xboxdrv.conf
sleep 5
i=0
while true 
do
   udevadm info -a -n /dev/input/event\$i > /usr/share/JoystickXbox360/joystick.log
   if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
      clear
      read -p "Porta do joystick não localizada... Aperte Enter para sair." erro
      echo -e "Joystick Xbox 360\e[31;1m falhou\e[0m..." >\
        /usr/share/JoystickXbox360/joystickxbox360.conf
      exit 1
   fi
   udevadm info -a -n /dev/input/event\$i | grep -q "Joystick"
   if [ "\$?" = "0" ]; then
      dialog --infobox "Porta do joystick localizada..." 3 35
      echo -e "Joystick Xbox 360\e[32;1m iniciado\e[0m..." >\
        /usr/share/JoystickXbox360/joystickxbox360.conf
      jost=\$i 
      break
   fi
   i=\$[ i + 1 ]
done
sleep 5
clear
xbox=\$(dialog --radiolist "ESCOLHA A CONFIGURAÇÃO DESEJADA\n(SETAS PARA ESCOLHER, \
ESPAÇO PARA MUDAR\nE ENTER PARA CONFIRMAR\nCTRL + C PARA SAIR)" 15 76 4 \
"1" "PARA CONFIGURAÇÃO PADRÃO" ON  \
"2" "PARA CONFIGURAÇÃO COM ANALÓGICO ESQUERDO COM SENTIDO INVERTIDO" OFF \
"3" "PARA CONFIGURAÇÃO COM ANALÓGICO DIREITO COM SENTIDO INVERTIDO" OFF \
"4" "PARA CONFIGURAÇÃO COM 2 ANALÓGICOS COM SENTIDO INVERTIDO" OFF \
--stdout)
clear
case \$xbox in
   1)
   cat <<$fim > /usr/share/JoystickXbox360/status.conf
configuração padrão...
$fim
   cat <<$fim > /usr/share/JoystickXbox360/xboxdrv.conf
--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=y2,ABS_Z=x2,\
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=lt,BTN_BASE2=rt,\
BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
$fim
   ;;
   2)
   cat <<$fim > /usr/share/JoystickXbox360/status.conf
analógico esquerdo com sentido invertido...
$fim
   cat <<$fim > /usr/share/JoystickXbox360/xboxdrv.conf
--evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RZ=y2,ABS_Z=x2,\
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=lt,BTN_BASE2=rt,BTN_TOP2=lb,\
BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
$fim
   ;;
   3)
   cat <<$fim > /usr/share/JoystickXbox360/status.conf
analógico direito com sentido invertido...
$fim
   cat <<$fim > /usr/share/JoystickXbox360/xboxdrv.conf
--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=lt,BTN_BASE2=rt,BTN_TOP2=lb,\
BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
$fim
   ;;
   4)
   cat <<$fim > /usr/share/JoystickXbox360/status.conf
2 analógicos com sentido invertido...
$fim
   cat <<$fim > /usr/share/JoystickXbox360/xboxdrv.conf
--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=lt,BTN_BASE2=rt,BTN_TOP2=lb,\
BTN_PINKIE=rb,BTN_BASE5=tl,BTN_BASE6=tr --mimic-xpad --silent
$fim
   ;;
esac
configuracao="opção \$xbox selecionada: \$(cat /usr/share/JoystickXbox360/status.conf)"
cont="\$[\${#configuracao} + 4]"
joystickconf="\$(cat /usr/share/JoystickXbox360/xboxdrv.conf)"
clear
dialog --infobox "Configuração sendo iniciada...\n\$configuracao" 4 \$cont
sudo chmod 775 /dev/input/event\$jost 
sudo xboxdrv --evdev /dev/input/event\$jost \$joystickconf > /usr/share/JoystickXbox360/joystick1.log &
sudo rm /usr/share/JoystickXbox360/joystick1.log
sleep 5 
i=0
while true 
do
   udevadm info -a -n /dev/input/event\$i > /usr/share/JoystickXbox360/joystick.log
   if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
      clear
      read -p "Porta do joystick Xbox 360 emulado não localizada... Aperte Enter para sair." erro
      echo -e "Joystick Xbox 360\e[31;1m falhou\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      exit 1
   fi
   udevadm info -a -n /dev/input/event\$i | grep -q "Microsoft X-Box 360 pad"
   if [ "\$?" = "0" ]; then
      dialog --infobox "Porta do joystick Xbox 360 emulado localizada..." 3 52
      echo -e "Joystick Xbox 360\e[32;1m iniciado\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      jost1=\$i 
      break
   fi
   i=\$[ i + 1 ]
done
sudo chown root:root /usr/share/JoystickXbox360/joystick.log
sudo chown root:root /usr/share/JoystickXbox360/joystickxbox360.conf 
sudo chown root:root /usr/share/JoystickXbox360/status.conf
sudo chown root:root /usr/share/JoystickXbox360/xboxdrv.conf
sudo chmod 775 /dev/input/event\$jost1
sleep 6
clear
sudo service joystickxbox360 status
sleep 6
clear
dialog --infobox "Teste o Joystick Xbox 360 emulado no AntiMicroX caso algum\n
dos analógicos ficar com sentido invertido,\
 use o aplicativo 'Muda a configuração do joystick Xbox 360': \n
opção escolhida agora - Opção \$xbox." 6 65

sleep 20
clear
antimicrox

exit 0

EOF
   cat <<EOF > /usr/share/JoystickXbox360/StartJoystick.sh
#!/bin/bash

pkill xboxdrv &
sleep 5
i=0
while true 
do
   udevadm info -a -n /dev/input/event\$i > /usr/share/JoystickXbox360/joystick.log
   if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
      read -p "Porta do joystick não localizada... Aperte Enter para sair." erro 
      echo -e "Joystick Xbox 360\e[31;1m falhou\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      exit 1
   fi
   udevadm info -a -n /dev/input/event\$i | grep -q "Joystick"
   if [ "\$?" = "0" ]; then
      echo -e "\nPorta do joystick localizada..."
      echo -e "Joystick Xbox 360\e[32;1m reiniciado\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      jost=\$i 
      break
   fi
   i=\$[ i + 1 ]
done
joystickconf="\$(cat /usr/share/JoystickXbox360/xboxdrv.conf)"
xboxdrv --evdev /dev/input/event\$jost \$joystickconf > /tmp/joystick.log &
sleep 5
i=0
while true 
do
   udevadm info -a -n /dev/input/event\$i > /usr/share/JoystickXbox360/joystick.log
   if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
      read -p "Porta do joystick Xbox 360 emulado não localizada... Aperte Enter para sair." erro 
      echo -e "Joystick Xbox 360\e[31;1m falhou\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      exit 1
   fi
   udevadm info -a -n /dev/input/event\$i | grep -q "Microsoft X-Box 360 pad"
   if [ "\$?" = "0" ]; then
      echo "Porta do joystick Xbox 360 emulado localizada..."
      echo -e "Joystick Xbox 360\e[32;1m iniciado\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      jost1=\$i 
      break
   fi
   i=\$[ i + 1 ]
done
chmod 775 /dev/input/event\$jost1
sleep 2

exit 0

EOF
   cat <<EOF > /usr/share/JoystickXbox360/RStarJoystick.sh
#!/bin/bash

pkill xboxdrv &
sleep 5
i=0
while true 
do
   udevadm info -a -n /dev/input/event\$i > /usr/share/JoystickXbox360/joystick.log
   if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
      read -p "Porta do joystick não localizada... Aperte Enter para sair." erro 
      echo -e "Joystick Xbox 360\e[31;1m falhou\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      exit 1
   fi
   udevadm info -a -n /dev/input/event\$i | grep -q "Joystick"
   if [ "\$?" = "0" ]; then
      echo -e "\nPorta do joystick localizada..."
      echo -e "Joystick Xbox 360\e[32;1m reiniciado\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      jost=\$i 
      break
   fi
   i=\$[ i + 1 ]
done
joystickconf="\$(cat /usr/share/JoystickXbox360/xboxdrv.conf)"
xboxdrv --evdev /dev/input/event\$jost \$joystickconf > /tmp/joystick.log &
sleep 5
i=0
while true 
do
   udevadm info -a -n /dev/input/event\$i > /usr/share/JoystickXbox360/joystick.log
   if [ ! -s "/usr/share/JoystickXbox360/joystick.log" ]; then
      read -p "Porta do joystick Xbox 360 emulado não localizada... Aperte Enter para sair." erro 
      echo -e "Joystick Xbox 360\e[31;1m falhou\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      exit 1
   fi
   udevadm info -a -n /dev/input/event\$i | grep -q "Microsoft X-Box 360 pad"
   if [ "\$?" = "0" ]; then
      echo "Porta do joystick Xbox 360 emulado localizada..."
      echo -e "Joystick Xbox 360\e[32;1m reiniciado\e[0m..." >\
       /usr/share/JoystickXbox360/joystickxbox360.conf
      jost1=\$i 
      break
   fi
   i=\$[ i + 1 ]
done
chmod 775 /dev/input/event\$jost1
echo -e "\e[31;1mAGUARDE...\e[0m"
sleep 60

exit 0

EOF
   if [ -d "/usr/share/pixmaps/JoystickXbox360" ]; then
      configuracao1="O diretório para os icones já existe..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   else
      configuracao1="O diretório para os icones será criado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      mkdir /usr/share/pixmaps/JoystickXbox360
      cat <<EOF > /usr/share/JoystickXbox360/xbox360
https://raw.githubusercontent.com/marxfcmonte/Instalador-do-emulador-de-\
joystick-Xbox-em-joystick-generico-de-PC-PS2-PS3-Debian-e-Derivados-antix-\
/refs/heads/main/Icones/xbox360.png
https://raw.githubusercontent.com/marxfcmonte/Instalador-do-emulador-de-\
joystick-Xbox-em-joystick-generico-de-PC-PS2-PS3-Debian-e-Derivados-antix-\
/refs/heads/main/Icones/xbox360preto.png   
EOF
      wget -i /usr/share/JoystickXbox360/xbox360 -P /tmp/
      mv /tmp/xbox360.png /usr/share/pixmaps/JoystickXbox360
      mv /tmp/xbox360preto.png /usr/share/pixmaps/JoystickXbox360
   fi
   cat <<EOF > /usr/share/JoystickXbox360/StopJoystick.sh
#!/bin/bash

pkill xboxdrv &
sleep 2

exit 0

EOF

   cat <<EOF > /usr/share/applications/MudarControle.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Muda a configuração do joystick Xbox 360
Name[pt_BR]=Muda a configuração do joystick Xbox 360
Exec=roxterm -e "bash -c /usr/share/JoystickXbox360/MudarControle.sh"
Terminal=false
StartupNotify=true
Comment=Muda a configuração do joystick Xbox 360
Comment[pt_BR]=Muda a configuração do joystick Xbox 360
Categories=GTK;System;
Keywords=joystick;calibration;
Keywords[pt_BR]=joystick;calibration;
GenericName=Restart joystick Xbox 360
GenericName[pt_BR]=Restart do joystick Xbox 360
Icon=/usr/share/pixmaps/JoystickXbox360/xbox360.png
   
EOF
   cat <<EOF > /usr/share/applications/RStarJoystick.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Restart do joystick Xbox 360
Name[pt_BR]=Restart do joystick Xbox 360
Exec=roxterm -e "sudo service joystickxbox360 restart"
Terminal=false
StartupNotify=true
Comment=Reinicia o joystick Xbox 360
Comment[pt_BR]=Reinicia o joystick Xbox 360
Categories=GTK;System;
Keywords=joystick;calibration;
Keywords[pt_BR]=joystick;calibration;
GenericName=Restart joystick Xbox 360
GenericName[pt_BR]=Restart do joystick Xbox 360
Icon=/usr/share/pixmaps/JoystickXbox360/xbox360.png

EOF
   
   cat <<EOF > /usr/share/applications/StopJoystick.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Finaliza o joystick Xbox 360
Name[pt_BR]=Finaliza o joystick Xbox 360
Exec=roxterm -e "sudo service joystickxbox360 stop"
Terminal=false
StartupNotify=true
Comment=Finaliza o joystick Xbox 360
Comment[pt_BR]=Finaliza o joystick Xbox 360
Categories=GTK;System;
Keywords=joystick;calibration;
Keywords[pt_BR]=joystick;calibration;
GenericName=Restart do joystick Xbox 360
GenericName[pt_BR]=Restart do joystick Xbox 360
Icon=/usr/share/pixmaps/JoystickXbox360/xbox360preto.png

EOF
   
   cp /usr/share/applications/MudarControle.desktop /home/$SUDO_USER/Desktop
   cp /usr/share/applications/RStarJoystick.desktop /home/$SUDO_USER/Desktop
   cp /usr/share/applications/StopJoystick.desktop /home/$SUDO_USER/Desktop
   configuracao1="Os atalhos na Àrea de trabalho foram criados..."
   cont="$[${#configuracao1} + 4]"
   dialog --infobox "$configuracao1" 3 $cont
   sleep 3
   clear
   chmod +x /usr/share/JoystickXbox360/*.sh /usr/share/applications/*.desktop
   chmod 775 /home/$SUDO_USER/Desktop/*.desktop
   chown $SUDO_USER:$SUDO_USER /home/$SUDO_USER/Desktop/*.desktop
   cat <<EOF >  /etc/init.d/joystickxbox360
#!/bin/sh

### BEGIN INIT INFO
# Provides:      joystickxbox360
# Required-Start:   $null
# Required-Stop:   $null
# Should-Start:      $null
# Should-Stop:
# Default-Start:   2 3 4 5
# Default-Stop:      0 1 6
# Short-Description:   Emulação de joystick Xbox 360
# Description:      Emulação de joystick Xbox 360
#         
### END INIT INFO

. /lib/lsb/init-functions

case "\$1" in
  start)
   sleep 3 
   /usr/share/JoystickXbox360/StartJoystick.sh
   ;;
  stop)
   /usr/share/JoystickXbox360/StopJoystick.sh
   ;;
  restart)
   /usr/share/JoystickXbox360/RStarJoystick.sh
   ;;
  status)
   cat /usr/share/JoystickXbox360/joystickxbox360.conf
   ;;
esac

exit 0

EOF
   chmod +x /etc/init.d/joystickxbox360
   update-rc.d joystickxbox360 defaults
   cat /etc/sudoers | grep -q "$SUDO_USER ALL=NOPASSWD: /etc/init.d/joystickxbox360"
   if [ "$?" = "1" ]; then
      configuracao1="As configurações serão atualizadas..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear 
      sed '/^$/d' /etc/sudoers > /tmp/temp.conf && mv /tmp/temp.conf /etc/sudoers
      echo "$SUDO_USER ALL=NOPASSWD: /etc/init.d/joystickxbox360" >> /etc/sudoers
   else
      configuracao1="As configurações estão atualizadas..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   desktop-menu --write-out-global
   configuracao1="Testanto o serviço Joystickxbox360"
   cont="$[${#configuracao1} + 4]"
   dialog --infobox "$configuracao1" 3 $cont
   sleep 3
   clear
   service joystickxbox360 start
   service joystickxbox360 status
   sleep 6
   clear
   dialog --infobox "Teste o Joystick Xbox 360 emulado no AntiMicroX caso algum\n
dos analógicos ficar com sentido invertido,\
 use o aplicativo 'Muda a configuração do joystick Xbox 360': \n
opção escolhida agora - Opção $xbox." 6 65
   sleep 6
   clear
   antimicrox
   ;;
   2)
   if [ -d "/usr/share/JoystickXbox360" ]; then
      configuracao1="O diretório JoystickXbox360 será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear 
      service joystickxbox360 stop
      update-rc.d joystickxbox360 remove
      rm -rf /usr/share/JoystickXbox360
      rm /etc/init.d/joystickxbox360
   else
      configuracao1="O diretório JoystickXbox360 não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -d "/usr/share/pixmaps/JoystickXbox360" ]; then
      configuracao1="O diretório ../pixmaps/JoystickXbox360 será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm -rf /usr/share/pixmaps/JoystickXbox360
   else
      configuracao1="O diretório ../pixmaps/JoystickXbox360 não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -e "/etc/X11/xorg.conf.d/51-joystick.conf" ]; then
      configuracao1="O arquivo 51-joystick.conf será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm /etc/X11/xorg.conf.d/51-joystick.conf
   else
      configuracao1="O arquivo 51-joystick.conf não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -e "/usr/share/applications/RStarJoystick.desktop" ]; then
      configuracao1="O arquivo ../applications/RStarJoystick.desktop será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm /usr/share/applications/RStarJoystick.desktop
   else
      configuracao1="O arquivo ../applications/RStarJoystick.desktop não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -e "/usr/share/applications/MudarControle.desktop" ]; then
      configuracao1="O arquivo ../applications/MudarControle.desktop será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm /usr/share/applications/MudarControle.desktop
   else
      configuracao1="O arquivo ../applications/MudarControle.desktop não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -e "/usr/share/applications/StopJoystick.desktop" ]; then
      configuracao1="O arquivo ../applications/StopJoystick.desktop será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm /usr/share/applications/StopJoystick.desktop
   else
      configuracao1="O arquivo ../applications/StopJoystick.desktop não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -e "/home/$SUDO_USER/Desktop/RStarJoystick.desktop" ]; then
      configuracao1="O arquivo ../Desktop/RStarJoystick.desktop será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm /home/$SUDO_USER/Desktop/RStarJoystick.desktop
   else
      configuracao1="O arquivo ../Desktop/RStarJoystick.desktop não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -e "/home/$SUDO_USER/Desktop/StopJoystick.desktop" ]; then
      configuracao1="O arquivo ../Desktop/StopJoystick.desktop será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm /home/$SUDO_USER/Desktop/StopJoystick.desktop
   else
      configuracao1="O arquivo ../Desktop/StopJoystick.desktop não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   if [ -e "/home/$SUDO_USER/Desktop/MudarControle.desktop" ]; then
      configuracao1="O arquivo ../Desktop/MudarControle.desktop será removido..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      rm /home/$SUDO_USER/Desktop/MudarControle.desktop
   else
      configuracao1="O arquivo ../Desktop/MudarControle.desktop não encontrado..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   fi
   cat /etc/sudoers | grep -q "$SUDO_USER ALL=NOPASSWD: /etc/init.d/joystickxbox360"
   if [ "$?" = "1" ]; then
      configuracao1="Configuração não encontrada.."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
   else
      configuracao1="A configuração será deletada..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      awk -F "$SUDO_USER ALL=NOPASSWD: /etc/init.d/joystickxbox360" '{print $1}' /etc/sudoers > /tmp/temp.conf
      mv /tmp/temp.conf /etc/sudoers
      configuracao1="Os arquivos foram removidos..."
      cont="$[${#configuracao1} + 4]"
      dialog --infobox "$configuracao1" 3 $cont
      sleep 3
      clear
      apt remove -y xboxdrv antimicro
      apt autoremove -y
   fi
   ;;    
   3)
   configuracao1="Saindo do instalador..."
   cont="$[${#configuracao1} + 4]"
   dialog --infobox "$configuracao1" 3 $cont
   sleep 3
   clear
   ;; 
esac

exit 0

Scripts recomendados

Script para Backup de Logs

Baixar pdf do "slide share" sem login usando shell script

bookmaker.bash: Script para imprimir livros com 4 páginas em uma folha

Script para rodar software Mr Bayes em paralelo

Script que gera um relatório diário do sistema!!!


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts