def update(self): # sdl2.SDL_PumpEvents() # Pump, retreive events so they clear sdl2.SDL_JoystickUpdate() # Read all the joystick values axisScale = 1 / 2**15 self.axis = [ sdl2.SDL_JoystickGetAxis(self.joy, i) for i in range(sdl2.SDL_JoystickNumAxes(self.joy)) ] self.button = [ sdl2.SDL_JoystickGetButton(self.joy, i) for i in range(sdl2.SDL_JoystickNumButtons(self.joy)) ] self.roll = axisScale * self.axis[0] self.pitch = axisScale * self.axis[1] self.throttle = axisScale * self.axis[2] self.yaw = axisScale * self.axis[3] self.flap = 0.0 self.autoEngage = 2 * self.button[0] - 1 # "Soc-Engage-Switch" self.testMode = axisScale * self.axis[4] # "Test-Mode-Switch" self.testSel = axisScale * self.axis[5] # "Test-Select-Switch" self.trig = 2 * self.button[1] - 1 # "Trigger-Switch" self.thrSafe = 2 * self.button[2] - 1 # "Throttle-Safety-Switch" self.baseSel = axisScale * self.axis[ -1] # "Baseline-Select-Switch" (On Windows it came up as 6, on Linux 7...)
def update(self): sdl2.SDL_JoystickUpdate() button_array = ( self.a, self.b, self.x, self.y, self.left_bumper, self.right_bumper, self.start_button, self.select_button, self.center_button, self.left_stick_button, self.right_stick_button) axis_array = self._axises() for event in sdl2.ext.get_events(): if event.type == sdl2.SDL_JOYBUTTONUP: button_array[event.jbutton.button].process_event( ButtonEvent(event.jbutton.timestamp, False)) elif event.type == sdl2.SDL_JOYBUTTONDOWN: button_array[event.jbutton.button].process_event( ButtonEvent(event.jbutton.timestamp, True)) elif event.type == sdl2.SDL_JOYAXISMOTION: axis_array[event.jaxis.axis].process_event( AxisEvent(event.jaxis.timestamp, event.jaxis.value)) elif event.type == sdl2.SDL_JOYHATMOTION: self.hat.process_event(HatEvent(event.jhat.timestamp, event.jhat.value))
"Buttons": buttons, "Hats": hats, "Obj": joy, } joysticks.append(joystick) joysticksSorted = sorted(joysticks, key=lambda k: k["Win ID"]) # Resolve the Sticks (Press Left Trigger) print "\n-- RESOLVING THE STICKS --" testRunning = True print " > Press the LEFT Trigger" while testRunning: for joystick in joysticksSorted: if joystick["Name"] == "T.16000M": sdl2.SDL_JoystickUpdate() if sdl2.SDL_JoystickGetButton(joystick["Obj"], 0): print " Left Stick has Win ID: " + str(joystick["Win ID"]) joystick["Res Name"] = "Left Stick" for otherJoystick in joysticksSorted: if otherJoystick["Name"] == "T.16000M" and otherJoystick[ "Res Name"] == None: otherJoystick["Res Name"] = "Right Stick" print " Right Stick has Win ID: " + str( otherJoystick["Win ID"]) testRunning = False # Label the Control Panel print "\n-- RESOLVING CONTROL PANEL --" for joystick in joysticksSorted: if joystick["Name"] == "Arduino Leonardo":
def get(self): if not self.valid: return None js = self.js sdl2.SDL_JoystickUpdate() share = sdl2.SDL_JoystickGetButton(js, 8) if share: exit(0) ls = Axis(sdl2.SDL_JoystickGetAxis(js, 0), sdl2.SDL_JoystickGetAxis(js, 1)) rs = Axis(sdl2.SDL_JoystickGetAxis(js, 2), sdl2.SDL_JoystickGetAxis(js, 5)) triggers = Trigger(sdl2.SDL_JoystickGetAxis(js, 3), sdl2.SDL_JoystickGetAxis(js, 4)) shoulder = [ sdl2.SDL_JoystickGetButton(js, 4), sdl2.SDL_JoystickGetButton(js, 5) ] stick = [ sdl2.SDL_JoystickGetButton(js, 10), sdl2.SDL_JoystickGetButton(js, 11) ] # I seem to have lost sensors # a = Sensors( # sdl2.SDL_JoystickGetAxis(js, 6), # sdl2.SDL_JoystickGetAxis(js, 7), # sdl2.SDL_JoystickGetAxis(js, 8) # ) # # g = Sensors( # sdl2.SDL_JoystickGetAxis(js, 9), # sdl2.SDL_JoystickGetAxis(js, 10), # sdl2.SDL_JoystickGetAxis(js, 11) # ) b = [ sdl2.SDL_JoystickGetButton(js, 0), # square sdl2.SDL_JoystickGetButton(js, 3), # triangle sdl2.SDL_JoystickGetButton(js, 2), # circle sdl2.SDL_JoystickGetButton(js, 1) # x ] hat = sdl2.SDL_JoystickGetHat(js, 0) share = sdl2.SDL_JoystickGetButton(js, 8) options = sdl2.SDL_JoystickGetButton(js, 9) ps4 = PS4(ls, rs, triggers, hat, shoulder, stick, b, options, share) # left axis # x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768 # y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768 # ps4['leftStick'] = [x, y] # # # right axis # x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768 # y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768 # ps4['rightStick'] = [x, y] # # other axes # ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768 # ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768 # # # accels # x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768 # y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768 # z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768 # ps4.axes.accels = [x, y, z] # # # gyros # x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768 # y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768 # z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768 # ps4.axes.gyros = [x, y, z] # # # get buttons # ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0) # ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1) # ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2) # ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3) # ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4) # ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5) # ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6) # ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7) # ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8) # ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9) # ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10) # ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11) # ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12) # ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13) # # # get hat # # [up right down left] = [1 2 4 8] # ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0) # print('b 12', sdl2.SDL_JoystickGetButton(js, 12)) # print('b 13', sdl2.SDL_JoystickGetButton(js, 13)) return ps4
def read(self, verbose=False): js = self.js dt = self.sleep ps4 = Msg.Joystick() twist = Msg.Twist() try: sdl2.SDL_JoystickUpdate() # left axis x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768 ps4.axes.leftStick = [x, y] # right axis x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768 ps4.axes.rightStick = [x, y] # other axes ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768 ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768 # accels x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768 z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768 ps4.axes.accels = [x, y, z] # gyros x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768 z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768 ps4.axes.gyros = [x, y, z] # get buttons ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0) ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1) ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2) ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3) ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4) ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5) ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6) ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7) ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8) ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9) ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10) ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11) ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12) ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13) # get hat # [up right down left] = [1 2 4 8] ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0) # print('b 12', sdl2.SDL_JoystickGetButton(js, 12)) # print('b 13', sdl2.SDL_JoystickGetButton(js, 13)) #self.pub.pub('js', ps4) x, y = ps4.axes.rightStick twist.linear.set(x, y, 0) x, y = ps4.axes.leftStick twist.angular.set(x, y, 0) # verbose = True if verbose: print(twist) if (self.old_twist.angular == twist.angular) and (self.old_twist.linear == twist.linear): # print('js no msg') pass else: self.pub.pub(self.topic, twist) self.old_twist = twist # print('js message sent') time.sleep(dt) except (IOError, EOFError): print('[-] Connection gone .... bye')
def run(self, verbose, rate): js = self.js dt = 1.0/rate ps4 = Msg.Joystick() while True: try: sdl2.SDL_JoystickUpdate() # left axis x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768 ps4.axes.leftStick = [x, y] # right axis x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768 ps4.axes.rightStick = [x, y] # other axes ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768 ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768 # accels x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768 z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768 ps4.axes.accels = [x, y, z] # gyros x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768 z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768 ps4.axes.gyros = [x, y, z] # get buttons ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0) ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1) ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2) ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3) ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4) ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5) ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6) ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7) ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8) ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9) ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10) ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11) ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12) ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13) # get hat # [up right down left] = [1 2 4 8] ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0) # print('b 12', sdl2.SDL_JoystickGetButton(js, 12)) # print('b 13', sdl2.SDL_JoystickGetButton(js, 13)) if verbose: print(Msg.Joystick.screen(ps4)) self.pub.pub('js', ps4) time.sleep(dt) except (IOError, EOFError): print('[-] Connection gone .... bye') break # except Exception as e: # print('Ooops:', e) # else: # raise Exception('Joystick: Something bad happened!') # clean-up sdl2.SDL_JoystickClose(js) print('Bye ...')
def get(self): ps4 = self.ps4 js = self.js sdl2.SDL_JoystickUpdate() # left axis x = sdl2.SDL_JoystickGetAxis(js, 0) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 1) / 32768 ps4['leftStick'] = [-x, -y] # right axis x = sdl2.SDL_JoystickGetAxis(js, 2) / 32768 y = sdl2.SDL_JoystickGetAxis(js, 5) / 32768 ps4['rightStick'] = [-x, -y] # # other axes # ps4.axes.L2 = sdl2.SDL_JoystickGetAxis(js, 3) / 32768 # ps4.axes.R2 = sdl2.SDL_JoystickGetAxis(js, 4) / 32768 # # # accels # x = sdl2.SDL_JoystickGetAxis(js, 6) / 32768 # y = sdl2.SDL_JoystickGetAxis(js, 7) / 32768 # z = sdl2.SDL_JoystickGetAxis(js, 8) / 32768 # ps4.axes.accels = [x, y, z] # # # gyros # x = sdl2.SDL_JoystickGetAxis(js, 9) / 32768 # y = sdl2.SDL_JoystickGetAxis(js, 10) / 32768 # z = sdl2.SDL_JoystickGetAxis(js, 11) / 32768 # ps4.axes.gyros = [x, y, z] # # # get buttons # ps4.buttons.s = sdl2.SDL_JoystickGetButton(js, 0) # ps4.buttons.x = sdl2.SDL_JoystickGetButton(js, 1) # ps4.buttons.o = sdl2.SDL_JoystickGetButton(js, 2) # ps4.buttons.t = sdl2.SDL_JoystickGetButton(js, 3) # ps4.buttons.L1 = sdl2.SDL_JoystickGetButton(js, 4) # ps4.buttons.R1 = sdl2.SDL_JoystickGetButton(js, 5) # ps4.buttons.L2 = sdl2.SDL_JoystickGetButton(js, 6) # ps4.buttons.R2 = sdl2.SDL_JoystickGetButton(js, 7) # ps4.buttons.share = sdl2.SDL_JoystickGetButton(js, 8) # ps4.buttons.options = sdl2.SDL_JoystickGetButton(js, 9) # ps4.buttons.L3 = sdl2.SDL_JoystickGetButton(js, 10) # ps4.buttons.R3 = sdl2.SDL_JoystickGetButton(js, 11) # ps4.buttons.ps = sdl2.SDL_JoystickGetButton(js, 12) # ps4.buttons.pad = sdl2.SDL_JoystickGetButton(js, 13) # # # get hat # # [up right down left] = [1 2 4 8] # ps4.buttons.hat = sdl2.SDL_JoystickGetHat(js, 0) # print('b 12', sdl2.SDL_JoystickGetButton(js, 12)) # print('b 13', sdl2.SDL_JoystickGetButton(js, 13)) # if verbose: # print(Msg.Joystick.screen(ps4)) # print(ps4.axes.accels) # except (IOError, EOFError): # print('[-] Connection gone .... bye') # break # # except (KeyboardInterrupt, SystemExit): # print('js bye ...') # break # except Exception as e: # print('Ooops:', e) # else: # raise Exception('Joystick: Something bad happened!') return ps4
def update(self): sdl2.SDL_JoystickUpdate()
def read_axis(self, axis, smoothing): sdl2.SDL_JoystickUpdate() return sdl2.SDL_JoystickGetAxis(self.joy, axis) / smoothing
def get(self): if not self.valid: return None js = self.js sdl2.SDL_JoystickUpdate() ls = Axis(sdl2.SDL_JoystickGetAxis(js, 0), sdl2.SDL_JoystickGetAxis(js, 1)) rs = Axis( sdl2.SDL_JoystickGetAxis(js, 3), # 2 sdl2.SDL_JoystickGetAxis(js, 4) # 5 ) triggers = Trigger( sdl2.SDL_JoystickGetAxis(js, 2), # 3 sdl2.SDL_JoystickGetAxis(js, 5) # 4 ) # shoulder = [ # sdl2.SDL_JoystickGetButton(js, 4), # sdl2.SDL_JoystickGetButton(js, 5) # ] # stick = [ # sdl2.SDL_JoystickGetButton(js, 10), # sdl2.SDL_JoystickGetButton(js, 11) # ] b = ( sdl2.SDL_JoystickGetButton(js, 0), # square sdl2.SDL_JoystickGetButton(js, 3), # triangle sdl2.SDL_JoystickGetButton(js, 2), # circle sdl2.SDL_JoystickGetButton(js, 1) # x ) # print("6", sdl2.SDL_JoystickGetButton(js, 6)) # left trigger T/F # print("7", sdl2.SDL_JoystickGetButton(js, 7)) # right trigger T/F # for n in [10,11,12]: # print(n, sdl2.SDL_JoystickGetButton(js, n)) # # b_triggers = ( # sdl2.SDL_JoystickGetButton(js, 6)), # sdl2.SDL_JoystickGetButton(js, 7)), # ) ps = sdl2.SDL_JoystickGetButton(js, 10) lb = ( sdl2.SDL_JoystickGetButton(js, 4), # L1 sdl2.SDL_JoystickGetButton(js, 6), # L2 sdl2.SDL_JoystickGetButton(js, 11) # L3 ) rb = ( sdl2.SDL_JoystickGetButton(js, 5), # R1 sdl2.SDL_JoystickGetButton(js, 7), # R2 sdl2.SDL_JoystickGetButton(js, 12) # R3 ) hat = sdl2.SDL_JoystickGetHat(js, 0) share = sdl2.SDL_JoystickGetButton(js, 8) option = sdl2.SDL_JoystickGetButton(js, 9) # 'leftStick rightStick triggers leftButtons rightButtons hat buttons option share ps' ps4 = PS4(ls, rs, triggers, lb, rb, hat, b, option, share, ps) return ps4