PDA

View Full Version : Joystick controlled virtual mouse


Seadna
02-25-2016, 09:21 AM
Hi folks,

I have been working on code to control the canvas mouse cursor using a joystick. Below is the code i have come up with. The issues i'm having are that I cannot figure out how to bind the mouse click to a button on the joystick. Also i'm sure my beginners code needs tidying up but i cannot figure out where. For some reason when making a 'psoitive' movement (i.e. x+ and y+) the cursor movement seems to jump a little and is not smooth however in reverse when move towarsd 0,0 on the canvas it works perfectly smooth. I cannot see what i need to change in my code. Can hear my brain sizzling at this stage!!

Any help is super appreciated!

jx = 0.000
jy = 0.000
def UpdateJoystickMovement():
e = viz.elapsed()
x,y,z = joystick.getPosition()
print 'Cursor is at ' + str(canvas.getCursorPosition())
print 'XY: ' + str(x) + '-' + str(y)
global jx
global jy

if x > 0:
if x < jx:
jx = jx
else:
jx = (x+jx/1000)
elif x < 0:
if x > jx:
jx = jx
else:
jx = (jx+x/1000)

if y > 0:
if y < jy:
jy = jy
else:
jy = (y+jy/1000)
elif y < 0:
if y > jy:
jy = jy
else:
jy = (jy+y/1000)

canvas.setCursorPosition([jx,jy])
vizact.ontimer(0, UpdateJoystickMovement)

Seadna
02-25-2016, 09:25 AM
I figured the smoothness issue out less than a minute after original post!

I needed to change jx = (x+jx/1000) to jx = (jx+x/1000)

Had been looking at it for hours and didnt see it! I'm still not sure how to replicate the mouse click however.

Seadna
02-26-2016, 02:56 AM
I have tried using pyautogui library for the left-click but it does not work when the mouse is captured in the canvas. I get an error 'Specified procedure could not be found'

I'm going to look up if there is another way maybe using windows API's, hopefully it is not too complicated to implement.

Seadna
02-26-2016, 03:29 AM
I eventually found the .sendMouseButtonEvent :) don't know why it took me so long to find it in the help file!

JasmineJasmine
02-29-2016, 03:18 PM
I don't believe that you are making the right interface decisions if you require a joystick controlled by the mouse. If you are porting a mobile game to PC redesigning the interface to match the Keyboard/Mouse paradigm will be a better overall experience for the player. If you could give us more information as to what this Joystick is controlling that would help a lot as well.