Exemple #1
0
    def mouse(self):
        while True:
            self.events = get_gamepad()
            self.pos = pg.position()
            self.mouseX = self.pos[0]
            self.mouseY = self.pos[1]
            for event in self.events:
#                print(self.events)
#                print(event.code)
#                print(event.state)
                if event.code == self.b3 and event.state == 1:
                    self.clickmode = self.clickmode + 1
                    print("Current button:"),
                    if self.clickmode > self.maxclickmode:
                        self.clickmode = 0
                        self.mousebutton = 'left'
                        print(self.mousebutton)
                    elif self.clickmode == 1:
                        self.mousebutton = 'middle'
                        print(self.mousebutton)
                    elif self.clickmode == 2:
                        self.mousebutton = 'right'
                        print(self.mousebutton)
                    elif self.clickmode == 3:
                        self.mousebutton = 'exit mousemode'
                        print(self.mousebutton)
                elif event.code == self.b2 and event.state == 1:
                    self.vert = not self.vert
                    if self.vert == True:
                        print('Mousemode: Vertical')
                    elif self.vert == False:
                        print('Mousemode: Horizontal')
                elif event.code == self.b1 and self.clickmode != 3:
                    if event.state == 1:
                        pg.mouseDown(x = self.mouseX, y = self.mouseY, button = self.mousebutton)
                    elif event.state == 0:
                        pg.mouseUp(x = self.mouseX, y = self.mouseY, button = self.mousebutton)
                elif event.code == self.b1 and self.clickmode == 3:
                    MouseSim.exitmousemode(self)
                elif event.code == self.var1name:
                    self.movementactive = True
                    self.direction = event.state
                    print(self.direction)
                    if event.state == 0:
                        self.movementactive = False
                    while self.movementactive == True:
                        self.pos = pg.position()
                        self.mouseX = self.pos[0]
                        self.mouseY = self.pos[1]
                        self.events = get_gamepad()
                        for event in self.events:
                            if event.code == self.var1name and event.state == 0:
                                self.movementactive = False
                            else:
                                pass
                        if self.vert == True:
                            pg.moveTo(self.mouseX, self.mouseY + self.direction*self.mousespeed/30)
                        elif self.vert == False:
                            pg.moveTo(self.mouseX + self.direction*self.mousespeed/30, self.mouseY)
                sleep(.01)
    def test_get_gamepad(self, devices):
        """Get key reads from the first gamepad."""
        gamepad = mock.MagicMock()
        reader = mock.MagicMock()
        gamepad.read = reader
        devices.gamepads = [gamepad]

        inputs.get_gamepad()

        reader.assert_called_once()
Exemple #3
0
def main():
    direction = 0
    old_direction = 0
    run = True
    counter = 0
    closing = "Closing"
    while (run == True):
        events = get_gamepad()
        for event in events:
            if (event.ev_type == "Key"):
                if (event.code == "BTN_MODE"):
                    if (event.state == 1):
                        run = False
            if (event.code == "BTN_START"):
                if (event.state == 1):
                    counter += 1
            while (counter % 2 != 0):
                events = get_gamepad()
                for event in events:
                    if (event.ev_type == "Key"):
                        if (event.code == "BTN_MODE" and event.state == 1):
                            run = False
                        if (event.code == "BTN_START" and event.state == 1):
                            counter += 1
                        if (event.code == "BTN_TR"):
                            if (event.state == 1):
                                direction = 2
                            else:
                                direction = 0
                        if (event.code == "BTN_TL"):
                            if (event.state == 1):
                                direction = 1
                            else:
                                direction = 0
                    elif (event.ev_type == "Absolute"):
                        if (event.code == "ABS_HAT0X"):
                            if (event.state == 1):
                                direction = 3
                            elif (event.state == -1):
                                direction = 4
                            else:
                                direction = 0
                        else:
                            if (event.state == -1):
                                direction = 2
                            elif (event.state == 1):
                                direction = 1
                            else:
                                direction = 0
                if (old_direction != direction):
                    print("direction is:\t", direction)
                    sending.main(direction)
                    old_direction = direction
    sending.main(closing)
Exemple #4
0
def resolution():
    print('Checking resolution')
    while True:
        events = get_gamepad()
        for event in events:
            if event.code == "BTN_SOUTH" and event.state == 1:
                print(pyautogui.position())
Exemple #5
0
def main():
    """Just print out some event infomation when the gamepad is used."""
    while 1:
        events = get_gamepad()
        for event in events:
            print("env_type: ", event.ev_type, "code: ", event.code, "state: ",
                  event.state)
def control_gamepad(s):
    while True:
        events = get_gamepad()
        for event in events:
            action = gamepad_to_action(event)
            if action != None:
                send_action(s, action)
Exemple #7
0
def main():
    # x box one controller uses unsigned 10 bit number for triggers
    # uses 16 bit signed number for joystick axes
    # y is inverted, down is positive from input, it gets inverted immediately
    throttle = 0
    x_vel = 0
    y_vel = 0

    with serial.Serial(SERIAL_PORT, BAUD_RATE) as ser:
        while (1):
            event = get_gamepad()[0]
            # all events that control flight are this type
            if event.ev_type == "Absolute":
                # this is left trigger, used for throttle
                if event.code == "ABS_RZ":
                    throttle = event.state
                # control direction side to side
                if event.code == "ABS_X":
                    x_vel = event.state
                # control direction forward and back
                if event.code == "ABS_Y":
                    y_vel = -1 * event.state

            # message = str(event.ev_type) + "," + str(event.code) + \
            #         "," + str(event.state) + "\n\r"
            message = str(throttle) + "," + str(x_vel) + "," + str(
                y_vel) + "\n\r"
            ser.write(bytearray(message, "utf8"))
Exemple #8
0
def main(controller):

    global gas_pub, dir_pub, verbose

    if controller == 'keyboard':

        os.system('xset r off')

        kpub = rospy.Publisher('dir_gas', String, queue_size=20)
        rospy.init_node('keyboard_pub', anonymous=True)

        if verbose: print('Please control the car with the keyboard arrows')

        root = Tk()
        app = Application(kpub, master=root)
        app.mainloop()
        root.destroy()

    elif controller == 'gamepad':

        gp_gas_pub = rospy.Publisher('gas', Float32, queue_size=20)
        gp_dir_pub = rospy.Publisher('dir', Float32, queue_size=20)
        gp_rev_pub = rospy.Publisher('rev', Bool, queue_size=3)
        rospy.init_node('gp_pub', anonymous=True)

        if verbose: print('Please control the car with the gamepad')

        quit = False
        while not quit:
            events = get_gamepad()
            for event in events:
                if event.ev_type == 'Absolute' and event.code == 'ABS_X':
                    if abs(event.state) > 9000:
                        gp_dir_pub.publish(event.state/32000.)
                    else:
                        gp_dir_pub.publish(0)
                if event.ev_type == 'Absolute' and event.code == 'ABS_Z':
                    if abs(event.state) > 10:
                        gp_gas_pub.publish(-1)
                if event.ev_type == 'Absolute' and event.code == 'ABS_RZ':
                    if abs(event.state) > 5:
                        gp_gas_pub.publish(event.state/255.)
                    else:
                        gp_gas_pub.publish(0)
                if event.code == 'BTN_MODE' and event.state == 1 :
                    if verbose: print('Quitting, bye!')
                    quit = True
                if event.code == 'BTN_WEST' and event.state == 1:
                    if verbose: print('Switching direction')
                    gp_rev_pub.publish(True)

    elif controller == 'autopilot':
        if verbose: print('Autopilot is ready')

        rospy.init_node('autopilot', anonymous=True)
        gas_pub = rospy.Publisher('gas', Float32, queue_size=20)
        dir_pub = rospy.Publisher('dir', Float32, queue_size=20)
        sub = rospy.Subscriber("/camera", CompressedImage, callback_autopilot, queue_size=1000)
        log_image = rospy.Subscriber('/camera', CompressedImage, callback_log, queue_size=1000)
        rospy.spin()
def monitor_gamepad():
    while True:
        # Get the latest gamepad events
        event_list = get_gamepad()

        # Process the gamepad events
        gamepad.update_relevant(event_list)
Exemple #10
0
def getinfo():  #Gets values from the gamepad every change of state
    events = get_gamepad()  #Updates the events data set with the current state

    for event in events:  #Operates on the most recent event, will not skip events

        stick = event.code  #Gets the input type
        stickval = event.state  #Gets the input value

        if stick == 'ABS_Y':  #Y-axis joystick
            global analogvalueY  #Sets appropriate global value from joystick
            analogvalueY = stickval
        elif stick == 'ABS_X':  #X-axis joystick
            global analogvalueX  #Sets appropriate global value from joystick
            analogvalueX = stickval
        elif stick == 'ABS_RZ':  #Right Trigger
            global analogvalueTR
            analogvalueTR = stickval
        elif stick == 'BTN_SOUTH':  #South Button
            global digitalvalueDECR  #Decrement
            digitalvalueDECR = stickval
        elif stick == 'BTN_WEST':  #West Button
            global digitalvalueLINEL  #Black line command Left
            digitalvalueLINEL = stickval
        elif stick == 'BTN_EAST':  #East Button
            global digitalvalueLINER
            digitalvalueLINER = stickval  #Follow Black Line Right
        elif stick == 'BTN_NORTH':  #North Button
            global digitalvalueINCR
            digitalvalueINCR = stickval  #Increment
Exemple #11
0
 def run(self, running, startButton, leftJoystickX, leftJoystickY,
         rightJoystickX, rightJoystickY, R1Button, L1Button):
     running.value = True
     while (running.value):
         events = inputs.get_gamepad()
         for event in events:
             #print(event.ev_type, event.code, event.state)
             if event.ev_type == 'Absolute':
                 if event.code == 'ABS_X':
                     leftJoystickX.value = event.state / 32768.0
                 if event.code == 'ABS_Y':
                     leftJoystickY.value = event.state / 32768.0
                 if event.code == 'ABS_RX':
                     rightJoystickX.value = event.state / 32768.0
                 if event.code == 'ABS_RY':
                     rightJoystickY.value = event.state / 32768.0
             if (event.ev_type == 'Key'):
                 if event.code == 'BTN_START':
                     startButton.value = event.state
                     print(event.state)
                 elif event.code == 'BTN_TR':
                     R1Button.value = event.state
                     print(event.state)
                 elif event.code == 'BTN_TL':
                     L1Button.value = event.state
                     print(event.state)
Exemple #12
0
def controllerInput():
    rotateRight = 0.0
    rotateLeft = 0.0
    global translate
    global tilt
    global rotate
    global updown

    while True:
        events = get_gamepad()

        for event in events:
            # print(event.ev_type, event.code, event.state)

            if event.code == "ABS_X":
                translate[1] = int(event.state / DPAD_SCALE)
            if event.code == "ABS_Y":
                translate[0] = int(event.state / DPAD_SCALE)
            if event.code == "ABS_RX":
                tilt[1] = int(event.state / DPAD_SCALE)
            if event.code == "ABS_RY":
                tilt[0] = int(event.state / DPAD_SCALE)
            if event.code == "ABS_Z":
                rotateLeft = event.state / TRIG_SCALE
            if event.code == "ABS_RZ":
                rotateRight = event.state / TRIG_SCALE
            if event.code == "ABS_HAT0Y":
                if event.state == -1:
                    updown = 1
                elif event.state == 1:
                    updown = -1
                else:
                    updown = 0
        rotate = int(rotateRight - rotateLeft)
Exemple #13
0
def waitGamepad(keyList=[],
                maxWait=float('inf'),
                timeStamped=True,
                state='down'):
    """
    Equivalent to psychopy.event.waitKeys(timeStamped=True) but for gamepads using the inputs module.

    maxWait: number of seconds to wait before returning None
    timeStamped: True, False or a core.Clock
    state: 'down' or 'release'. The state of the button.
    """
    if timeStamped in (True, False):
        clock.reset()
    else:
        pass  # Using the same clock

    while clock.getTime() < maxWait:
        presses = inputs.get_gamepad()
        for press in presses:
            if press.code in keyList:
                if (state == 'down'
                        and press.state != 0) or (state == 'release'
                                                  and press.state == 0):
                    return press.code, clock.getTime()

    else:
        return '', ''
def controller_code_and_state():
    # Check Inputs
    while True:
        events = get_gamepad()
        for event in events:
            print("[TibiaController] Code: ", event.code, " State: ",
                  event.state)
Exemple #15
0
def worker():
    while 1:
        global speedY
        global speedZ
        events = get_gamepad()
        for event in events:
            if event.code == 'BTN_EAST':
                if event.state == 1:
                    print("say")
                    client.publish("admin/say",
                                   "Play;Добро пожаловать в зоопарк")
            if event.code == 'BTN_WEST':
                if event.state == 1:
                    print("say")
                    client.publish("admin/say",
                                   "Play;Вы можете приобрести билеты у меня")
            if event.code == 'BTN_SOUTH':
                if event.state == 1:
                    print("say")
                    client.publish("admin/say", "Play;Привет я ВэйБот.")
            if event.code == 'BTN_NORTH':
                if event.state == 1:
                    print("say")
                    client.publish(
                        "admin/say",
                        "Play;Я не кусаюсь. Разработчики не вложили в меня такой функции"
                    )

    return
    def run(self):
        while not rospy.is_shutdown():
            events = inputs.get_gamepad()

            for event in events:
                # print(event.ev_type, event.code, event.state)
                if event.code == 'ABS_Y':
                    self.curr_y_input = event.state
                elif event.code == 'ABS_X':
                    self.curr_x_input = event.state
                elif event.code == 'BTN_SOUTH':
                    self.curr_btn_south = event.state
                elif event.code == 'BTN_EAST':
                    self.curr_btn_east = event.state

            # Only detect "new" presses
            if self.curr_btn_south == 1 and self.prev_curr_btn_south == 0: # a button
                spawn_cmd = Bool(data = True)
                self.run_spawn_publisher.publish(spawn_cmd)
            if self.curr_btn_east == 1 and self.prev_curr_btn_east == 0: # b button
                save_cmd = Bool(data = True)
                self.save_publisher.publish(save_cmd)

            # 2D Drive
            # new_cmd = self.computeTwistCmd(self.curr_x_input, self.curr_y_input)
            # 1D Drive
            new_cmd = self.computeTwistCmd(0, self.curr_y_input)
            self.twist_pub.publish(new_cmd)

            # Update button states
            self.prev_curr_btn_south = self.curr_btn_south
            self.prev_curr_btn_east = self.curr_btn_east
            self.update_rate.sleep()
Exemple #17
0
    def update(self):
        try:
            kb_event = None
            for d in devices.gamepads:
                if d._device_path == self.comport:
                    kb_event = d.read()

            if kb_event is None:
                kb_event = get_gamepad()

            for e in kb_event:
                val = False
                if e.state > 0:
                    val = True
                if e.ev_type == 'Key':
                    self.on_key_data({
                        'type': 'button',
                        'name': e.code,
                        'val': val
                    })
                elif e.ev_type == 'Absolute':
                    self.on_key_data({
                        'type': 'stick',
                        'name': e.code,
                        'val': e.state
                    })

        except UnpluggedError as e:
            self.onerror(e)
        except UnknownEventCode as e:
            # print(e)
            self.buffer = {}
Exemple #18
0
    def CheckForChanges(self):
        # Remove Sync events, these don't seem to be useful, they are just duplicates of the Absolute or Key events
        prunedEvents = []
        while prunedEvents == []:
            try:
                events = get_gamepad()
            except:
                print("Joystick Lost")
                break
            for event in events:
                if event.ev_type != "Sync":
                    prunedEvents.append(event)

        # Update variables
        for event in prunedEvents:
            if (event.ev_type == "Absolute" or event.ev_type == "Key"):
                if (event.code == "ABS_X"):
                    self.ABS_X = event.state
                elif (event.code == "ABS_Y"):
                    self.ABS_Y = event.state
                elif (event.code == "ABS_RX"):
                    self.ABS_RX = event.state
                elif (event.code == "ABS_RY"):
                    self.ABS_RY = event.state
                elif (event.code == "BTN_NORTH"):
                    self.BTN_NORTH = event.state
                elif (event.code == "BTN_SOUTH"):
                    self.BTN_SOUTH = event.state
                elif (event.code == "BTN_EAST"):
                    self.BTN_EAST = event.state
                elif (event.code == "BTN_WEST"):
                    self.BTN_WEST = event.state
                elif (event.code == "ABS_HAT0X"):
                    self.ABS_HAT0X = event.state
                elif (event.code == "ABS_HAT0Y"):
                    self.ABS_HAT0Y = event.state
                elif (event.code == "BTN_SELECT"):
                    self.BTN_SELECT = event.state
                elif (event.code == "BTN_START"):
                    self.BTN_START = event.state
                elif (event.code == "ABS_RZ"):
                    self.ABS_RZ = event.state
                elif (event.code == "ABS_Z"):
                    self.ABS_Z = event.state
                elif (event.code == "BTN_TL"):
                    self.BTN_TL = event.state
                elif (event.code == "BTN_TR"):
                    self.BTN_TR = event.state
                elif (event.code == "BTN_THUMBR"):
                    self.BTN_THUMBR = event.state
                elif (event.code == "BTN_THUMBL"):
                    self.BTN_THUMBL = event.state

        return ([
            self.ABS_X, self.ABS_Y, self.ABS_RX, self.ABS_RY, self.BTN_NORTH,
            self.BTN_SOUTH, self.BTN_EAST, self.BTN_WEST, self.ABS_HAT0X,
            self.ABS_HAT0Y, self.BTN_SELECT, self.BTN_START, self.ABS_RZ,
            self.ABS_Z, self.BTN_TL, self.BTN_TR, self.BTN_THUMBR,
            self.BTN_THUMBL
        ])
Exemple #19
0
def main():
    while 1:

        events = get_gamepad()

        for event in events:
            #print ("Code: " + event.code)

            if event.code == "ABS_X" and event.state > 127:
                #print ("right")
                keyboard.press_and_release('right')

            if event.code == "ABS_X" and event.state < 127:
                #print ("left")
                keyboard.press_and_release('left')

            if event.code == "ABS_Y" and event.state > 127:
                #print ("down")
                keyboard.press_and_release('down')

            if event.code == "ABS_Y" and event.state < 127:
                keyboard.press_and_release('up')
                #print ("up")

            #if event.code == "BTN_THUMB2" and event.state > 0:
            if "BTN" in event.code and event.state > 0:
                keyboard.press_and_release('enter')
                #print ("SNES B")
                exit()
Exemple #20
0
def main():
    c = 0
    mute = False
    while 1:
        events = get_gamepad()
        for event in events:
            #print(event.code)
            if("ABS_HAT0Y" == event.code):
                if(-1 == event.state):
                    print("Plus Volume")
                    changeVolume(0.05)

                if(1 == event.state):
                    print("Minus Volume")
                    changeVolume(-0.05)

            if("ABS_HAT0X" == event.code):
                if(-1 == event.state):
                    print("stop")
                if(1 == event.state):
                    print("play")
            
            if("BTN_NORTH" == event.code):
                #print(c % 2)
                c += 1
                if(c % 2 == 1):
                    break
                print("mute: " + str(mute))
                if(mute == True):
                    changeVolume(-1)
                if(mute == False):
                    changeVolume(0)
                print(str(mute is not mute) + "\n")
                mute = (mute == False)
 def _listenController(self):
     events = get_gamepad()
     with self._lock:
         for event in events:
             for key, value in self._simpleButtons.items():
                 if (event.code == key):
                     self._virtualController[value] = bool(event.state)
             for key, value in self._directionalButtons.items():
                 if (event.code == key):
                     for i in range(len(value)):
                         self._virtualController[value[i]] = (
                             False, False, True)[i + event.state]
             for key, value in self._analogValues.items():
                 if (event.code == key):
                     if (value[1] != 2):
                         self._virtualController[value[0]][value[1]] = map(
                             event.state,
                             self._lastMaximas[value[0]][("L",
                                                          "D")[value[1]]],
                             self._lastMaximas[value[0]][("R",
                                                          "U")[value[1]]],
                             self._newMaximas[value[0]][("L",
                                                         "D")[value[1]]],
                             self._newMaximas[value[0]][("R",
                                                         "U")[value[1]]])
                     else:
                         self._virtualController[value[0]] = map(
                             event.state, self._lastMaximas[value[0]]["R"],
                             self._lastMaximas[value[0]]["P"],
                             self._newMaximas[value[0]]["R"],
                             self._newMaximas[value[0]]["P"])
Exemple #22
0
def TeleOp():
    while 1:

        events = get_gamepad()
        for event in events:

            if event.code != 'ABS_X':
                pass  #this may not be the 'correct' way to do this, but this makes the steering servo ignore any other inputs
            else:
                steeringvalue = event.state / 1.43  #for scaling the 0-255 axis range to a 0-180 degree scale
                steering.servo[0].angle = steeringvalue
                print(steeringvalue)

            if event.code != 'BTN_TRIGGER':
                pass
            else:
                fwdthrottlevalue = event.state * throttle_gain
                motor.motor3.throttle = fwdthrottlevalue
                print(fwdthrottlevalue)

            if event.code != 'BTN_SOUTH':
                pass
            else:
                revthrottlevalue = event.state * throttle_gain
                motor.motor3.throttle = -revthrottlevalue
                print(revthrottlevalue)
Exemple #23
0
def main():
    while 1:
        events = get_gamepad()
        for event in events:
            print(f"{event.ev_type}={event.code}={event.state}")

            if event.ev_type == "Absolute":
                if event.code == "ABS_Y":
                    if event.state > 10000:
                        signal(258)  # forward
                    elif event.state < -10000:
                        signal(259)  # reverse
                if event.code == "ABS_X":
                    if event.state > 10000:
                        signal(261)  # turn right
                    elif event.state < -10000:
                        signal(260)  # turn left
                if event.code == "ABS_RZ" and event.state == 255:
                    signal(301)  # rotate right hand clockwise
                if event.code == "ABS_Z" and event.state == 255:
                    signal(303)  # rotate left hand clockwise
            if event.ev_type == "Key":
                if event.code == "BTN_TR" and event.state == 1:
                    signal(302)  # rotate right hand anti clockwise
                if event.code == "BTN_TL" and event.state == 1:
                    signal(304)  # rotate left hand anti clockwise
                if event.code == "BTN_EAST" and event.state == 1:  # Button B
                    signal(32)  # stop
Exemple #24
0
def recordInputs(config):
    input_list = []
    state_queue = {}
    toggled = False

    for e in controller_events:
        state_queue[e] = time.time()
    # Record inputs until toggle is pressed
    while not toggled:
        events = get_gamepad()
        for event in events:
            current_time = time.time()
            if event.code in controller_events:
                try:  # Record how long an event lasted
                    previous_event = state_queue[event.code]
                    input_list.append({
                        "Event": event.code,
                        "Start": previous_event[1],
                        "End": current_time,
                        "State": previous_event[0]
                    })
                    state_queue[event.code] = [event.state, current_time]
                except Exception as e:  # Used to initialize state_queue
                    state_queue[event.code] = [event.state, current_time]
            elif event.code in config['Record'] and event.state == 0:
                toggled = True
    return cleanInputs(input_list)
Exemple #25
0
    def run(self):
        while True:
            events = get_gamepad()
            for event in events:
                # ignore all other events
                if event.code not in self._buttons:
                    continue

                # update out internal controller state
                if event.code == "ABS_X":
                    self.x = event.state / (2**15 - 1)
                elif event.code == "ABS_Y":
                    self.y = event.state / (2**15 - 1)
                elif event.code == "BTN_TL":
                    self.tl = event.state
                elif event.code == "BTN_TR":
                    self.tr = event.state
                elif event.code == "ABS_Z":
                    self.lz = event.state / (2**10 - 1)
                elif event.code == "ABS_RZ":
                    self.rz = event.state / (2**10 - 1)
                elif event.code == "BTN_SOUTH":
                    self.btn_a = event.state
                elif event.code == "BTN_NORTH":
                    self.btn_x = event.state
                elif event.code == "BTN_WEST":
                    self.btn_y = event.state
                elif event.code == "BTN_EAST":
                    self.btn_b = event.state
Exemple #26
0
 def events_handling_loop(self):
     while 1:
         events = get_gamepad()
         for event in events:
             if event.code != INPUT_CODE:
                 continue
             self.currentValue = position_to_percents(event.state)
def getXYZ(prev_coord, prev_gradient):
    """
    Returns an integer x,y,z vector from the current controller inputs.
    Allows for continuous controller inputs, or simulates that at least.
    """
    speed = 0.01  # Controls the speed the controller outputs change.
    null_zone = 0  # Controls the null margin for the controller.

    events = inputs.get_gamepad()
    gradient = prev_gradient

    for event in events:
        # print(event.ev_type, event.code, event.state)
        type = str(event.ev_type)
        code = str(event.code)
        state = int(event.state)

        if (type == "Absolute"):
            state = (state - 127.5) / 127.5 * speed

            if (abs(state) < null_zone):
                state = 0

            if (code == "ABS_X"):
                gradient[0] = state
            elif (code == "ABS_Y"):
                gradient[1] = -state
            elif (code == "ABS_RZ"):
                gradient[2] = -state

    new_coord = [0, 0, 0]
    for i in range(3):
        new_coord[i] = prev_coord[i] + gradient[i]
    return new_coord, gradient
Exemple #28
0
def gamepad_buttons(csv_writer, directory):
    done = True
    counter = 0
    row = [['', 0, 0, 0, 0, 0, 0]]
    while done:

        events = 12

        image = screenshot.grab(bbox=(0, 56, 1172, 898))

        while events is not None and done:
            try:
                events = get_gamepad(False)
            except RuntimeError:
                events = None
            if events is not None:
                event = events[0]
                if event.code == 'BTN_TR':
                    done = False
                if event.code == 'ABS_HAT0Y' or event.code == 'ABS_HAT0X' or event.code == 'BTN_SOUTH' or \
                        event.code == 'BTN_WEST' or 'BTN_TR':
                    # UP
                    if event.code == 'ABS_HAT0Y' and event.state == -1:
                        row[0][1] = 1
                    elif event.code == 'ABS_HAT0Y' and event.state == 0:
                        row[0][1] = 0
                    # DOWN
                    if event.code == 'ABS_HAT0Y' and event.state == 1:
                        row[0][2] = 1
                    elif event.code == 'ABS_HAT0Y' and event.state == 0:
                        row[0][2] = 0
                    # LEFT
                    if event.code == 'ABS_HAT0X' and event.state == -1:
                        row[0][3] = 1
                    elif event.code == 'ABS_HAT0X' and event.state == 0:
                        row[0][3] = 0
                    # RIGHT
                    if event.code == 'ABS_HAT0X' and event.state == 1:
                        row[0][4] = 1
                    elif event.code == 'ABS_HAT0X' and event.state == 0:
                        row[0][4] = 0
                    # A
                    if event.code == 'BTN_SOUTH' and event.state == 1:
                        row[0][5] = 1
                    elif event.code == 'BTN_SOUTH' and event.state == 0:
                        row[0][5] = 0
                    # B
                    if event.code == 'BTN_WEST' and event.state == 1:
                        row[0][6] = 1
                    elif event.code == 'BTN_WEST' and event.state == 0:
                        row[0][6] = 0
        image_directory = str(counter) + ".png"
        row[0][0] = image_directory
        image_directory = directory + "\\" + str(counter) + ".png"
        image.resize((586, 449))
        image.save(image_directory)
        print(row)
        csv_writer.writerow(row)
        # print(row)
        counter += 1
Exemple #29
0
def main():
    reverse = False
    throttle = 0
    steering = 0
    while True:
        events = get_gamepad()
        
        for event in events: # event.ev_type, event.code, event.state
            # steering
            if event.code == 'ABS_Z':
                steering = clip([event.state], 0, 254)[0]
                # print(steering)

            # check reverse
            if event.code == 'BTN_PINKIE':
                reverse = event.state
                # print(reverse)

            # trottle
            if event.code == 'ABS_Y':
                throttle = convert_to_0_255(event.state)
                throttle = -throttle if reverse else throttle
                throttle = clip([throttle], 0, 254)[0]
                # print(throttle)

            message = Message(throttle=throttle,
                            steering=steering,
                            reverse=reverse)
            ss.send(msg=message)
Exemple #30
0
 def inputs(self):
     from inputs import get_gamepad, devices
     if 0 == len(devices.gamepads):
         logging.error('inputs found no gamepads. no driver available')
         return
     self.running = True
     while self.running:
         events = get_gamepad()
         for event in events:
             # stick actions
                 # ABS_X = left x [0,128,255] left to right
                 # ABS_Y = left y [0,128,255] up to down
                 # ABS_Z = right x [0,128,255] left to right
                 # ABS_RZ = right y [0,128,255] up to down
             # hat actions
                 # ABS_HAT0X == cross x [-1,1] left, right
                 # ABS_HAT0Y == cross y [-1,1] up, down
             # button actions
                 # BTN_SOUTH == a
                 # BTN_EAST == b
                 # BTN_NORTH == x
                 # BTN_WEST == y
                 # BTN_TL == l1 [0,1]
                 # BTN_TR == r1
                 # BTN_TL2 == l2b [0,1]
                 # BTN_TR2 == r2b [0,1]
                 # ABS_BRAKE == l2m [0,255]
                 # ABS_GAS == r2m [0,255]
                 # BTN_THUMBL == l3 [0,1]
                 # BTN_THUMBR == r3 [0,1]
                 # ABS_SELECT == select
                 # ABS_START == start
             self.running = self.handler(event.code,event.state)
 def run(self):
     while 1:
         events = get_gamepad()
         for event in events:
             self.update_pressed_buttons(event)
             try:
                 sendthis = badname_thing[''.join(self.buttons_pressed)]
                 self.send_to_mud(sendthis)
Exemple #32
0
def gamepad_event_loop():
    while True:
        events = inputs.get_gamepad()
        for event in events:
            if event.ev_type != "Sync":
                if event.code in event_interpretation:
                    path = event_interpretation[event.code]
                    gamepad_state_lock.acquire()
                    if len(path) == 1:
                        gamepad_state[path[0]] = event.state
                    elif len(path) == 2:
                        gamepad_state[path[0]][path[1]] = event.state
                    else:  # Weird HAT0X/Y for pad
                        if event.state > 0:
                            gamepad_state[path[0]][path[2]] = event.state
                        elif event.state < 0:
                            gamepad_state[path[0]][path[1]] = -event.state
                        else:
                            gamepad_state[path[0]][path[2]] = event.state
                            gamepad_state[path[0]][path[1]] = -event.state
                    gamepad_state_lock.release()
                else:
                    print("Unknown event: ", event.code, event.state)
        print(gamepad_state)
Exemple #33
0
	def get_events(self, old_events):
		new_events = get_gamepad()
		
		absY = old_events[0]
		absX = old_events[1]
		absRY = old_events[2]
		absRX = old_events[3]
		absZ = old_events[4]
		absRZ = old_events[5]
		absHY = 0
		absHX = 0
		B_E = 0
		B_W = 0
		B_N = 0
		B_S = 0
		B_ST = 0
		B_SEL = 0
		B_TR = 0
		B_TL = 0
		B_THL = 0
		B_THR = 0
		B_MODE = 0

		events = old_events

		for event in new_events:
			if event.ev_type != "Sync" :
				if event.code == "BTN_MODE" and event.state == 1:
					B_MODE = event.state
				elif event.code == "ABS_RY":
					if abs(event.state - absRY) > 500:
						absRY = event.state
				elif event.code == "ABS_Y":
					if abs(event.state - absY) > 500:
						absY = event.state
				elif event.code == "ABS_RX":
					if abs(event.state - absRX) > 500:
						absRX = event.state
				elif event.code == "ABS_X":
					if abs(event.state - absX) > 500:
						absX = event.state
				elif event.code == "ABS_HAT0Y":
					absHY = event.state
				elif event.code == "ABS_HAT0X":
					absHX = event.state
				elif event.code == "ABS_Z":
					absZ = float(event.state)
				elif event.code == "ABS_RZ":
					absRZ = float(event.state)
				elif event.code == "BTN_EAST":
					B_E = event.state
				elif event.code == "BTN_WEST":
					B_W = event.state
				elif event.code == "BTN_NORTH":
					B_N = event.state
				elif event.code == "BTN_SOUTH":
					B_S = event.state
				elif event.code == "BTN_START":
					B_ST = event.state
				elif event.code == "BTN_SELECT":
					B_SEL = event.state
				elif event.code == "BTN_TR":
					B_TR = event.state
				elif event.code == "BTN_TL":
					B_TL = event.state
				elif event.code == "BTN_THUMBL" and event.state == 1:
					B_THL = event.state
					self.quit_attempt = event.state
				elif event.code == "BTN_THUMBR":
					B_THR = event.state
				events = (absY, absX, absRY, absRX, absZ, absRZ, absHY, absHX, B_E, B_W, B_N, B_S, B_ST, B_SEL, B_TR, B_TL, B_THL, B_THR, B_MODE)
		return events
Exemple #34
0
def main():
    """Just print out some event infomation when the gamepad is used."""
    while 1:
        events = get_gamepad()
        for event in events:
            print(event.ev_type, event.code, event.state)
Exemple #35
0
from inputs import devices
from inputs import get_gamepad

import i3ipc

i3 = i3ipc.Connection()

while 1:
        events = get_gamepad()
        for event in events:
            if event.code == "BTN_TR" and event.state ==1:
                    i3.command("workspace next")
            if event.code == "BTN_Z" and event.state ==1:
                    i3.command("workspace prev")
            if event.code == "BTN_EAST" and event.state ==1:
                    i3.command("fullscreen toggle")
            if event.code == "BTN_NORTH" and event.state ==1:
                    i3.command("kill")
            if event.code == "ABS_HAT0X" and event.state == -1:
                    i3.command("focus left")
            if event.code == "ABS_HAT0X" and event.state == 1:
                    i3.command("focus right")
            if event.code == "ABS_HAT0Y" and event.state == -1:
                    i3.command("focus up")
            if event.code == "ABS_HAT0Y" and event.state == 1:
                    i3.command("focus down")
            else:
                print(event.code)