Forums » General
Joystick Questions
Ok, so I just got a joystick, (yes, I'm going to suck for a nice long time,) because I realized that my old keyboard-only setup wouldn't work on a laptop that can only recognize 3 key-presses at once. I ordered a $12, (a Saitek ST290,) joystick and it arrived yesterday, but needless to say I've got a couple JS-n00b questions.
1. Does the throttle really only have 3 settings? It kinda goes 0, 1/2, 1 and that's it.
2. The hat switch understandably only has 3 settings per axis, -1, 0, 1, so it's not very useful to bind to an actual axis. Besides, I'm quite satisfied with my left-handed strafing setup as is. So the question is, is there any official/easy way to bind something to a certain hat position? So if I press the hat up, it turbos? If there isn't, I can probably work something out in Lua, but it would be nice not to have to.
Speculative thanks for any help you can offer,
-Calder
1. Does the throttle really only have 3 settings? It kinda goes 0, 1/2, 1 and that's it.
2. The hat switch understandably only has 3 settings per axis, -1, 0, 1, so it's not very useful to bind to an actual axis. Besides, I'm quite satisfied with my left-handed strafing setup as is. So the question is, is there any official/easy way to bind something to a certain hat position? So if I press the hat up, it turbos? If there isn't, I can probably work something out in Lua, but it would be nice not to have to.
Speculative thanks for any help you can offer,
-Calder
I'm not the right person to reply to this thread. But just from my experience:
1) All my joysticks have analog-esque throttles, with a great many steps between 0 and 1. If yours is doing just three steps, that seems kinda lame. We have a bunch of Saiteks at work, but I doubt we have that one (ours are kinda old), but I don't recall hearing about that problem.
2) I remember at one point some internal discussion about making hat directions into individual "buttons", essentially. I.. don't remember if we actually did that or not. Clearly, I never use a joystick (aside from testing, ages ago). I'll let someone more informed take this.
1) All my joysticks have analog-esque throttles, with a great many steps between 0 and 1. If yours is doing just three steps, that seems kinda lame. We have a bunch of Saiteks at work, but I doubt we have that one (ours are kinda old), but I don't recall hearing about that problem.
2) I remember at one point some internal discussion about making hat directions into individual "buttons", essentially. I.. don't remember if we actually did that or not. Clearly, I never use a joystick (aside from testing, ages ago). I'll let someone more informed take this.
Thanks Inc! I also found a little program called 'joy2key', but that's going to be a last resort, as I'd need to get the kernel to recognize the joystick first, which I've heard is a pain. BTW, I'm running Ubuntu 8.10.
I just got Ubuntu, and know nothing about it! hehe But in XP the JS hat is 4 buttons. Even if your JS hat has 8 directions; NW, NE, SW, and SE aren't recognized as buttons in VO. I don't know how to bind the hat on a JS.
Binding other JS buttons:
JOY0BUTTON0 is for Button 1
JOY0BUTTON1 is for Button 2
ect...
Binding other JS buttons:
JOY0BUTTON0 is for Button 1
JOY0BUTTON1 is for Button 2
ect...
Thanks Toimu, but that didn't work for my joystick. I think it's joystick specific because I don't think it's OS-dependent, as I don't even have a joystick module in my kernel, (ie. the OS doesn't recognize the JS but VO does :D).
[OFFTOPIC]Congratulations on the switch to Ubuntu! I'm 99.687% sure you won't be disapointed. :D If you need any help with it, just ask. I and many much more knowledgeable people will be more than willing to help out a fellow penguin![/OFFTOPIC]
[OFFTOPIC]Congratulations on the switch to Ubuntu! I'm 99.687% sure you won't be disapointed. :D If you need any help with it, just ask. I and many much more knowledgeable people will be more than willing to help out a fellow penguin![/OFFTOPIC]
Check your config.ini file; any button recognized by VO should be listed there in the section for your joystick. You can bind commands or aliases to any recognized buttons. Not sure about your throttle, though. Good luck!
EDIT: Just checked Saitek's website on your ST90. Looks like your throttle is digital which is why it doesn't work for VO. On a Mac, there is a way to map a digital control to analog output that VO recognizes via a third-party program called ControllerMate but I don't know if there is an equivalent for Linux.
EDIT: Just checked Saitek's website on your ST90. Looks like your throttle is digital which is why it doesn't work for VO. On a Mac, there is a way to map a digital control to analog output that VO recognizes via a third-party program called ControllerMate but I don't know if there is an equivalent for Linux.
Thanks Daare, but the problem is that they show as JOYRZ and JOYRY, which are axis not buttons.
The JOYRZ is probably your twist rudder control and JOYRY may be your throttle but I can't be sure. POV hat should show as JOYPOV0UP, etc.
Could you copy the config setting for your joystick here? That would help give me a better idea of what we are dealing with here. For comparison, here's my config for my X45; it's not complete since I am also mapped to a virtual joystick for certain other functions but will give you an idea of what to look for.
[Saitek X45 Flight Control Stick ]
enabled=1
JOYX=NONE
xaxisinvert=0
xaxiscenter=0
xaxismindeadzone=-3
xaxisdeadzone=3
xaxisminsaturation=-99
xaxissaturation=99
JOYY=NONE
yaxisinvert=0
yaxiscenter=0
yaxismindeadzone=-3
yaxisdeadzone=3
yaxisminsaturation=-99
yaxissaturation=99
JOYRU=Throttle
Ruaxisinvert=1
Ruaxiscenter=0
Ruaxismindeadzone=0
Ruaxisdeadzone=0
Ruaxisminsaturation=-99
Ruaxissaturation=99
JOYRZ=NONE
Rzaxisinvert=1
Rzaxiscenter=0
Rzaxismindeadzone=-3
Rzaxisdeadzone=3
Rzaxisminsaturation=-99
Rzaxissaturation=99
JOYRX=StrafeLR
Rxaxisinvert=0
Rxaxiscenter=0
Rxaxismindeadzone=-1
Rxaxisdeadzone=1
Rxaxisminsaturation=-99
Rxaxissaturation=99
JOYBUTTON0=+weaponCheckPrimary
JOYBUTTON1=+zoom
JOYBUTTON2=FlyModeToggle
JOYBUTTON3=+weaponCheckSecondary
JOYBUTTON4=+doTurbo
JOYBUTTON5=doActivate
JOYBUTTON6=+Brakes
JOYBUTTON7=+weaponCheckTertiary
JOYBUTTON8=
JOYBUTTON9=
JOYBUTTON10=
JOYBUTTON11=+Decelerate
JOYBUTTON12=
JOYBUTTON13=+Accelerate
JOYBUTTON14=weaponCycle1
JOYBUTTON15=cfireToggle
JOYBUTTON16=toggleautoaim
JOYBUTTON17=weaponCycle
JOYBUTTON18=RadarNone
JOYBUTTON19=RadarNextNearestEnemy
JOYBUTTON20=RadarNextFrontEnemy
JOYBUTTON21=RadarHitBy
JOYBUTTON22=
JOYBUTTON23=
JOYBUTTON24=
JOYBUTTON25=
JOYPOV0UP=+StrafeUp
JOYPOV0RIGHT=+StrafeRight
JOYPOV0DOWN=+StrafeDown
JOYPOV0LEFT=+StrafeLeft
28_hascenter=1
28_min=0
28_max=4094
28_center=2047
29_hascenter=1
29_min=0
29_max=4094
29_center=2047
30_hascenter=0
30_min=0
30_max=255
30_center=127
31_hascenter=1
31_min=0
31_max=255
31_center=127
33_hascenter=1
33_min=0
33_max=255
33_center=127
Could you copy the config setting for your joystick here? That would help give me a better idea of what we are dealing with here. For comparison, here's my config for my X45; it's not complete since I am also mapped to a virtual joystick for certain other functions but will give you an idea of what to look for.
[Saitek X45 Flight Control Stick ]
enabled=1
JOYX=NONE
xaxisinvert=0
xaxiscenter=0
xaxismindeadzone=-3
xaxisdeadzone=3
xaxisminsaturation=-99
xaxissaturation=99
JOYY=NONE
yaxisinvert=0
yaxiscenter=0
yaxismindeadzone=-3
yaxisdeadzone=3
yaxisminsaturation=-99
yaxissaturation=99
JOYRU=Throttle
Ruaxisinvert=1
Ruaxiscenter=0
Ruaxismindeadzone=0
Ruaxisdeadzone=0
Ruaxisminsaturation=-99
Ruaxissaturation=99
JOYRZ=NONE
Rzaxisinvert=1
Rzaxiscenter=0
Rzaxismindeadzone=-3
Rzaxisdeadzone=3
Rzaxisminsaturation=-99
Rzaxissaturation=99
JOYRX=StrafeLR
Rxaxisinvert=0
Rxaxiscenter=0
Rxaxismindeadzone=-1
Rxaxisdeadzone=1
Rxaxisminsaturation=-99
Rxaxissaturation=99
JOYBUTTON0=+weaponCheckPrimary
JOYBUTTON1=+zoom
JOYBUTTON2=FlyModeToggle
JOYBUTTON3=+weaponCheckSecondary
JOYBUTTON4=+doTurbo
JOYBUTTON5=doActivate
JOYBUTTON6=+Brakes
JOYBUTTON7=+weaponCheckTertiary
JOYBUTTON8=
JOYBUTTON9=
JOYBUTTON10=
JOYBUTTON11=+Decelerate
JOYBUTTON12=
JOYBUTTON13=+Accelerate
JOYBUTTON14=weaponCycle1
JOYBUTTON15=cfireToggle
JOYBUTTON16=toggleautoaim
JOYBUTTON17=weaponCycle
JOYBUTTON18=RadarNone
JOYBUTTON19=RadarNextNearestEnemy
JOYBUTTON20=RadarNextFrontEnemy
JOYBUTTON21=RadarHitBy
JOYBUTTON22=
JOYBUTTON23=
JOYBUTTON24=
JOYBUTTON25=
JOYPOV0UP=+StrafeUp
JOYPOV0RIGHT=+StrafeRight
JOYPOV0DOWN=+StrafeDown
JOYPOV0LEFT=+StrafeLeft
28_hascenter=1
28_min=0
28_max=4094
28_center=2047
29_hascenter=1
29_min=0
29_max=4094
29_center=2047
30_hascenter=0
30_min=0
30_max=255
30_center=127
31_hascenter=1
31_min=0
31_max=255
31_center=127
33_hascenter=1
33_min=0
33_max=255
33_center=127
Daare, JOYZ is the throttle, JOYRX is the rotation, but JOYRY and JOYRZ are the problematic hat switches. Here's the relevant section of my config.ini:
[Saitek ST290 Pro (/dev/input/js0)]
enabled=1
JOYX=Turn
xaxisinvert=1
xaxiscenter=0
xaxismindeadzone=-10
xaxisdeadzone=10
xaxisminsaturation=-95
xaxissaturation=95
JOYY=Pitch
yaxisinvert=0
yaxiscenter=20
yaxismindeadzone=-3
yaxisdeadzone=7
yaxisminsaturation=-95
yaxissaturation=95
JOYZ=Throttle
zaxisinvert=0
zaxiscenter=0
zaxismindeadzone=-10
zaxisdeadzone=10
zaxisminsaturation=-10
zaxissaturation=10
JOYRX=Roll
Rxaxisinvert=0
Rxaxiscenter=0
Rxaxismindeadzone=-10
Rxaxisdeadzone=10
Rxaxisminsaturation=-95
Rxaxissaturation=95
JOYRY=NONE
Ryaxisinvert=0
Ryaxiscenter=0
Ryaxismindeadzone=-10
Ryaxisdeadzone=10
Ryaxisminsaturation=-95
Ryaxissaturation=95
JOYRZ=
Rzaxisinvert=0
Rzaxiscenter=0
Rzaxismindeadzone=-10
Rzaxisdeadzone=10
Rzaxisminsaturation=-95
Rzaxissaturation=95
JOYBUTTON0=+Shoot2
JOYBUTTON1=+Shoot1
JOYBUTTON2=+Shoot3
[Saitek ST290 Pro]
0_hascenter=1
0_min=-999
0_max=-999
0_center=-999
1_hascenter=1
1_min=-999
1_max=-999
1_center=-999
2_hascenter=1
2_min=-999
[Saitek ST290 Pro (/dev/input/js0)]
enabled=1
JOYX=Turn
xaxisinvert=1
xaxiscenter=0
xaxismindeadzone=-10
xaxisdeadzone=10
xaxisminsaturation=-95
xaxissaturation=95
JOYY=Pitch
yaxisinvert=0
yaxiscenter=20
yaxismindeadzone=-3
yaxisdeadzone=7
yaxisminsaturation=-95
yaxissaturation=95
JOYZ=Throttle
zaxisinvert=0
zaxiscenter=0
zaxismindeadzone=-10
zaxisdeadzone=10
zaxisminsaturation=-10
zaxissaturation=10
JOYRX=Roll
Rxaxisinvert=0
Rxaxiscenter=0
Rxaxismindeadzone=-10
Rxaxisdeadzone=10
Rxaxisminsaturation=-95
Rxaxissaturation=95
JOYRY=NONE
Ryaxisinvert=0
Ryaxiscenter=0
Ryaxismindeadzone=-10
Ryaxisdeadzone=10
Ryaxisminsaturation=-95
Ryaxissaturation=95
JOYRZ=
Rzaxisinvert=0
Rzaxiscenter=0
Rzaxismindeadzone=-10
Rzaxisdeadzone=10
Rzaxisminsaturation=-95
Rzaxissaturation=95
JOYBUTTON0=+Shoot2
JOYBUTTON1=+Shoot1
JOYBUTTON2=+Shoot3
[Saitek ST290 Pro]
0_hascenter=1
0_min=-999
0_max=-999
0_center=-999
1_hascenter=1
1_min=-999
1_max=-999
1_center=-999
2_hascenter=1
2_min=-999
Yeah, JOYRY and JOYRZ do look like your hat switch. You can try the below to turbo as you wanted but it will activate in both directions so only one function for each axis. Also, I can't guarantee that VO won't get wonky with something like this since it most definitely isn't supported.
JOYRY=+turbo
This may fix your throttle problem: zaxisminsaturation and zaxissaturation are corrected to -95 and 95 respectively.
JOYZ=Throttle
zaxisinvert=0
zaxiscenter=0
zaxismindeadzone=-10
zaxisdeadzone=10
zaxisminsaturation=-95
zaxissaturation=95
Your JOYY center and deadzone settings look off. If you are having problems with it, try:
JOYY=Pitch
yaxisinvert=0
yaxiscenter=0
yaxismindeadzone=-10
yaxisdeadzone=10
yaxisminsaturation=-95
yaxissaturation=95
I'm unsure which axes the below map to specifically but the min values should be 0 and the max values should be 999 with the center value being exactly between them. Something like this for all of them:
[Saitek ST290 Pro]
0_hascenter=1
0_min=0
0_max=999
0_center=499
... etc.
However, I'm pretty sure these values are hardware dependent and not all of them use the same range so you might check the Linux forum and see what other users have in their config.ini if the above values cause problems.
I've run out of ideas. Hope this helps. Cheers.
JOYRY=+turbo
This may fix your throttle problem: zaxisminsaturation and zaxissaturation are corrected to -95 and 95 respectively.
JOYZ=Throttle
zaxisinvert=0
zaxiscenter=0
zaxismindeadzone=-10
zaxisdeadzone=10
zaxisminsaturation=-95
zaxissaturation=95
Your JOYY center and deadzone settings look off. If you are having problems with it, try:
JOYY=Pitch
yaxisinvert=0
yaxiscenter=0
yaxismindeadzone=-10
yaxisdeadzone=10
yaxisminsaturation=-95
yaxissaturation=95
I'm unsure which axes the below map to specifically but the min values should be 0 and the max values should be 999 with the center value being exactly between them. Something like this for all of them:
[Saitek ST290 Pro]
0_hascenter=1
0_min=0
0_max=999
0_center=499
... etc.
However, I'm pretty sure these values are hardware dependent and not all of them use the same range so you might check the Linux forum and see what other users have in their config.ini if the above values cause problems.
I've run out of ideas. Hope this helps. Cheers.
Well, thanks for trying Daare, looks like I'll have to descend into the land of Lua hackery. Using a combination of 'joy2key' to simulate key presses of unused keys, binds to those keys to run Lua commands, and a Lua plugin to decide what should happen for each of the nine settings, I might just get it to work.
I didnt like how throttle works differently in the two flight modes so I left it off and only use the accelerate/decellerate keys. I also removed all the mouse bindings so that bumping the mouse wont send my ship off course.
Lemme know when yer ingame sos I can shoot ya, Cald... I mean "Person". Still flying the 'tard boxes?
I use dual Saitek EVO's and they usually do OK. Just set the keyboard settings to your joystick controls. For example, go into the key mapping options area for controls, and then double-click "turbo" - you'll notice the designated key turns red in the second column. Then press the joystick key that you want for "turbo".
If you think of the non-analog items on the joystick as keypresses, you'll do fine.
Unless your joystick isn't setup right, this should work.
I use dual Saitek EVO's and they usually do OK. Just set the keyboard settings to your joystick controls. For example, go into the key mapping options area for controls, and then double-click "turbo" - you'll notice the designated key turns red in the second column. Then press the joystick key that you want for "turbo".
If you think of the non-analog items on the joystick as keypresses, you'll do fine.
Unless your joystick isn't setup right, this should work.
Thanks, Leber, but the problem is not me not recognizing of the axis as a button, but the game not recognizing it as such.
It's great to see you though Leber, and no, I'd already started using other ships too when I left... Remeber Redlac? Still flies a Cent, and I made another char Fatus Lachesis that's a Valk pilot.
Also, if you want to kill me, you should probably do it pretty soon, while you still have the advantage of my 4 years of rust and my keyboard which doesn't register more than 2 keys at once. I've practically given up on the joystick by now, it feels so unnatural to me. ;-) That said, I look forward to shooting at you, as always!
-Calder
It's great to see you though Leber, and no, I'd already started using other ships too when I left... Remeber Redlac? Still flies a Cent, and I made another char Fatus Lachesis that's a Valk pilot.
Also, if you want to kill me, you should probably do it pretty soon, while you still have the advantage of my 4 years of rust and my keyboard which doesn't register more than 2 keys at once. I've practically given up on the joystick by now, it feels so unnatural to me. ;-) That said, I look forward to shooting at you, as always!
-Calder