USANDO o joy2key no ubuntu 12.04

Iniciado por risislunit, 01 de Dezembro de 2013, 23:39

tópico anterior - próximo tópico

risislunit

Olá pessoal hoje venho postar este tutorial para aqueles que possuem alguma dificuldade em usar esta brilhante ferramenta.

Minhas aspirações para usar este programa surgiram depois que estava tentando jogar DARK SOULS PREPARE TO DIE EDITION
no meu wine e simplesmente meu controle não funcionava (OBS: nos outros jogos funcionam sem problemas).

Para a solução dos meus problemas não posso deixar de agradecer e citar o usuário

naivri

lá do forum do ubuntu internacional.
Segue o link: http://ubuntuforums.org/archive/index.php/t-646564.html para quem quiser.

Para situar o pessoal estou usando ubuntu 12.04 precise x86_64

E meu joystick é um HOLTEK Twin Shock da marca CLONE (já está fora de linha - auhauahuahuahuahuahuhauha)
link do joystick : http://www.clone.com.br/site/Pages/Produto.aspx?Produto=59&Categoria=50


Então vamos lá.
Como pré-requisito recomendo instalar os pacotes
   
   - joystick;
   - jstest-gtk;
   - joy2key.

sudo apt-get install joystick jstest-gtk joy2key

Eles irão nos ajudar a entender o raciocínio para se usar o joy2key.

Após isto plugue o seu joystick e se tudo correr bem ele deve aparecer no sistema como /dev/input/js0 ou /dev/js0

Inicie o jstest-gtk pelo Painel Inicial e seu controle deve aparecer algo como:

http://screencloud.net/v/d8b3

HOLTEK Twin Shock
Device: /dev/input/js0
Axes: 6
Buttons: 12

http://screencloud.net/v/73u2

Clique em propriedades e você pode acessar as configurações do seu joystick.

http://screencloud.net/v/D5EN

É importante agora que vc saiba o número de Axis e Buttons para que adicione-os nas configurações do seu joy2key.
Além disso, no jstest-gtk você sabe os números dos buttons na sequência correta.
Um exemplo disso é que o butão triângulo do joystick, representa o button0 no mapeamento.

http://screencloud.net/v/fAeq


CALIBRANDO O JOY2KEY

Após tudo isto vamos para o joy2key. Você vai começar a calibrar os Axis. Abra um terminal e digite :

joy2key -dev /dev/input/js0 -terminal

Uma nota importante: Ao se calibrar os Axis do joystick, primeiro se calibra o eixo HORIZONTAL e depois o VERTICAL, logo vc deve repetir a calibragem 2(duas) vezes para cada Axis (1 na horizontal e 1 na vertical).

1 - Não movimente NENHUM eixo e aperte qualquer botão do joystick;

2 - Movimente o eixo que funciona (vc vai notar que somente um Axis e um eixo (horizontal ou vertical) funcionam).

3 - ATENÇÃO: quando ele pedir o lowest position você deve movimentar para ESQUERDA (horizontal) ou para CIMA (vertical),
              quando ele pedir o highest position você deve movimentar para a DIREITA (horizontal) ou para BAIXO (vertical).

4 - Em cada calibragem SEGURE o eixo na posição e aparecerá um número (-32767/32767) quando aparecer pressione qualquer botão do joystick SEGURANDO o eixo na posição lowest ou highest(dependendo do que for pedido).

5 - Após isto ele mostra na tela algumas mensagens e passa para o próximo Axis até chegar no final.

joy2key - reads joystick status and dispatches keyboard events
By Peter Amstutz (tetron@interreality.org)
This is free software under the GNU General Public License (GPL v2)
              (see COPYING in the joy2key archive)
You are welcome to use/modify this code, and please e-mail me
if anything cool comes of it!
Version: 1.6.3   Binary built on Dec 22 2009 at 13:45:44


Calibrating axis 0
Please center the axis and press a button.
?
Locked at 0
Please move the axis to its lowest position and press a button.
value: -32767   
Please move the axis to its highest position and press a button.
value: 32767   
Using deadzone of 50%
Calibrations set at:
Axis 0 low threshold set at -16383
Axis 0 high threshold set at 16383
(you can put these in your .joy2keyrc to avoid calibrating in the future)

Calibrating axis 1
Please center the axis and press a button.
value: 0   64   
Locked at 0
Please move the axis to its lowest position and press a button.
value: -32767   
Please move the axis to its highest position and press a button.
value: 32767   
Using deadzone of 50%
Calibrations set at:
Axis 1 low threshold set at -16383
Axis 1 high threshold set at 16383
(you can put these in your .joy2keyrc to avoid calibrating in the future)

Calibrating axis 2
Please center the axis and press a button.
value: 0   67   
Locked at 0
Please move the axis to its lowest position and press a button.
value: -32767   
Please move the axis to its highest position and press a button.
value: 32767   
Using deadzone of 50%
Calibrations set at:
Axis 2 low threshold set at -16383
Axis 2 high threshold set at 16383
(you can put these in your .joy2keyrc to avoid calibrating in the future)

Calibrating axis 3
Please center the axis and press a button.
value: 0       
Locked at 0
Please move the axis to its lowest position and press a button.
value: -32767   
Please move the axis to its highest position and press a button.
value: 32767   
Using deadzone of 50%
Calibrations set at:
Axis 3 low threshold set at -16383
Axis 3 high threshold set at 16383
(you can put these in your .joy2keyrc to avoid calibrating in the future)

Calibrating axis 4
Please center the axis and press a button.
value: 0   67   
Locked at 0
Please move the axis to its lowest position and press a button.
value: -32767   
Please move the axis to its highest position and press a button.
value: 32767   
Using deadzone of 50%
Calibrations set at:
Axis 4 low threshold set at -16383
Axis 4 high threshold set at 16383
(you can put these in your .joy2keyrc to avoid calibrating in the future)

Calibrating axis 5
Please center the axis and press a button.
value: 0   7   
Locked at 0
Please move the axis to its lowest position and press a button.
value: -32767   
Please move the axis to its highest position and press a button.
value: 32767   
Using deadzone of 50%
Calibrations set at:
Axis 5 low threshold set at -16383
Axis 5 high threshold set at 16383
(you can put these in your .joy2keyrc to avoid calibrating in the future)
Initialization complete, entering main loop, ^C to exit...


6 - Para finalizar aperte Ctrl + C.

Nós fizemos a calibragem do joystick somente para pegar os dois números que ele mostra:

low threshold set at -16383
high threshold set at 16383


CONFIGURANDO O JOY2KEY

Agora vamos criar uma configuração padrão para seu joystick

Crie um arquivo no seu diretório HOME digitando no terminal:

nano ~/.joy2keyrc

Aqui você vai adicionar o número de Axis do seu joystick e a calibragem de cada um deles.


COMMON
-X
-dev /dev/input/js0
-thresh -16383 16383 -16383 16383 -16383 16383 -16383 16383 -16383 16383 -16383 16383



Explicando nos mínimos detalhes (de um modo bem simples):

- COMMON - mostra o que vai ser comum na configuração;

- X - informa que vamos usar no X11;

- dev - aponto para onde está o meu joystick;

- tresh - informa a calibragem de cada axis, lembrando que para cada axis temos duas posiçoes (lowest/highest) e cada axis é um eixo (horizontal/vertical), em outras palavras, o joy2key obedece a seguinte sintaxe:
   
    -Axis0 +Axis0   -Axis1 +Axis1  -Axis2 +Axis2   -Axis3 +Axis3 -Axis4 +Axis4 -Axis5 +Axis5.
   |-HORIZONTAL-| |--VERTICAL-| |-HORIZONTAL-||--VERTICAL-| |-HORIZONTAL-||--VERTICAL-|

Agora precisamos informar a configuração do jogo que você quer.

Recordando o que foi visto no jstest-gtk, que meu joystick possui 12 buttons (do 0 ao 11).

Citando como exemplo, vou configurar para o o jogo DARK SOULS, mas poderia ser qualquer outro.

Ainda no arquivo .joy2keyrc adicione:


START darksouls
-X
-buttons h Shift_L Tab u e space q Control_L g Alt_L o End
-axis a d w s j l i k c v r f



Explicando nos mínimos detalhes (de um modo bem simples):

   - START nome_que_vc_quiser - informa o nome da configuração para o jogo que você quer, no meu caso darksouls;

   - X - informa que vamos usar no X11 (poderia ser no terminal, percebeu?);

   - buttons - passo para o joy2key quais teclas irei usar e na sequência de 0 a 11 (para saber qual é o button0, etc, lembre-se vá no jstest-gtk e aperte o botão que ele informa qual é que está pressionado), em outras palavras, obece a seguinte sintaxe:
      
      -buttons tecla_para_button0 tecla_para_button1 tecla_para_button2 tecla_para_button3 ... tecla_para_button11.

   - axis - passo para o joy2key quais teclas irei usar e na sequência de 0 0 a 5 5 (lembre-se da sequência - esquerda direita cima baixo), em outras palavras, obece a seguinte sintaxe:

      -buttons tecla_para_-axis0(esquerda) tecla_para_+axis0(direita) tecla_para_-axis1(cima) tecla_para_+axis1(baixo) ...
             |----------------------------------------------------Eixo1---------------------------------------------------------------|
          tecla_para_-axis4(esquerda) tecla_para_+axis4(direita) tecla_para_-axis5(cima) tecla_para_+axis5(baixo).
          |----------------------------------------------------Eixo3-------------------------------------------------------------|

Salve (Ctrl + o) e saia (Ctrl + x) do arquivo .joy2keyrc

Vamos fazer um exmplo agora para outro jogo:

abra no seu diretório home (~/) o arquivo .joy2keyrc:

nano ~/.joy2keyrc

acrescente na linha após a configuração darksouls

START jogoqualquer
-X
-buttons 0 1 2 3 4 5 6 7 8 9
-axis Left Right Up Down a d w s


Basicamente aqui o que eu fiz foi o seguinte.
Para um determinado "jogoqualquer" adicionei as teclas de 0 a 9 para funcionarem como um botão de um joystick que possui 10 botões
Adicionei ainda as teclas esquerda direita cima baixo para um Eixo e as teclas w, a, s, d para outro Eixo.

Logo nesta minha configuração (configurei para um joystick de 10 botões(0 a 9) e 2 Eixos(LRUD e ADWS)).

Agora simplesmente é entrar no jogo e configurar as teclas (do jogo) para que ele funcione com o joy2key.


INICIE SEU JOGO

e após isto digite em um terminal

joy2key -config darksoul "DARK SOULS"

onde :

-config nome_da_configuracao - Informa qual configuração vc quer usar no joy2key;

"DARK SOULS" - nome da janela do jogo (aquela que aparece em cima, se está em tela cheia mude as configurações para modo janela e veja o nome)

http://screencloud.net/v/ebwh


se vc não sabe a o nome da janela, ao invés de digitar o comando anterior digite simplesmente

joy2key -config darksoul

e após isto o ponteiro do mouse vai mudar para uma cruz e selecione a janela que vc quer.
Após terminar o joy2key detecta que a janela fechou e se mata.


CONSIDERAÇÕES FINAIS: 

O joy2key não funciona apenas para o wine, ele pode ser usado também naquele jogo do linux que não reconhece seu joystick(coisa muito dificil hoje em dia)

Lembre-se de informar as teclas corretamente, teclas como shift, espaço, esc e enter são escritas na seguinte forma - Shift_L(shift left - esquerdo), Control_R(control right - direito), Tab, Alt_L, Super_R(tecla do windows direito), End, Return(enter), etc. Se você não souber qual a tecla que você vai usar abra outro terminal e digite o comando:

xev

Irá sair um monte de lixo, mas ao apertar a tecla que você precisa, ele informar o nome dela.
Aí estão alguns exemplos, note que após o keycode está o nome da tecla:

KeyPress event, serial 35, synthetic NO, window 0x4a00001,
    root 0x295, subw 0x0, time 8612739, (338,-113), root:(339,323),
    state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "
"   XmbLookupString gives 1 bytes: (0d) "
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x4a00001,
    root 0x295, subw 0x0, time 8615691, (338,-113), root:(339,323),
    state 0x10, keycode 71 (keysym 0xffc2, F5), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x4a00001,
    root 0x295, subw 0x0, time 8618906, (338,-113), root:(339,323),
    state 0x10, keycode 47 (keysym 0xe7, ccedilla), same_screen YES,
    XLookupString gives 2 bytes: (c3 a7) "ç"
    XmbLookupString gives 2 bytes: (c3 a7) "ç"
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x4a00001,
    root 0x295, subw 0x0, time 8623151, (338,-113), root:(339,323),
    state 0x10, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
    XLookupString gives 1 bytes: (08) "
    XmbLookupString gives 1 bytes: (08) "
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4a00001,
    root 0x295, subw 0x0, time 8638477, (191,-112), root:(192,324),
    state 0x50, keycode 134 (keysym 0xffec, Super_R), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False



É isto aí pessoal espero que gostem e qualquer dúvida perguntem aqui no forum!!!!!