Source code for commands2.button.commandgamepad

# validated: 2024-01-20 DS 92149efa11fa button/CommandGamepad.java
from typing import Optional, Union

from wpilib import DriverStation, EventLoop, Gamepad

from .commandgenerichid import CommandGenericHID
from .trigger import Trigger


def _enum_value(value) -> int:
    try:
        return int(value)
    except TypeError:
        return value.value


[docs] class CommandGamepad: """ A version of :class:`wpilib.Gamepad` with :class:`.Trigger` factories for command-based. """ _hid: CommandGenericHID _gamepad: Gamepad def __init__(self, hid: Union[int, Gamepad]): """ Construct an instance of a controller. :param hid: The port index on the Driver Station that the controller is plugged into, or the Gamepad object to use for this controller. """ if isinstance(hid, int): self._hid = CommandGenericHID.get_command_generic_hid(hid) self._gamepad = DriverStation.get_gamepad(hid) else: self._hid = CommandGenericHID(hid.get_hid()) self._gamepad = hid def __getattr__(self, name: str): return getattr(self._hid, name)
[docs] def get_hid(self) -> CommandGenericHID: """ Get the underlying CommandGenericHID object. :returns: the wrapped CommandGenericHID object """ return self._hid
[docs] def get_gamepad(self) -> Gamepad: """ Get the underlying Gamepad object. :returns: the wrapped Gamepad object """ return self._gamepad
[docs] def button(self, button, loop: Optional[EventLoop] = None) -> Trigger: """ Constructs an event instance around this button's digital signal. :param button: the button index or :class:`wpilib.Gamepad.Button` :param loop: the event loop instance to attach the event to """ return self._hid.button(_enum_value(button), loop)
[docs] def face_down(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.FACE_DOWN, loop)
[docs] def face_right(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.FACE_RIGHT, loop)
[docs] def face_left(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.FACE_LEFT, loop)
[docs] def face_up(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.FACE_UP, loop)
[docs] def back(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.BACK, loop)
[docs] def guide(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.GUIDE, loop)
[docs] def start(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.START, loop)
[docs] def left_stick(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.LEFT_STICK, loop)
[docs] def right_stick(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.RIGHT_STICK, loop)
[docs] def left_bumper(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.LEFT_BUMPER, loop)
[docs] def right_bumper(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.RIGHT_BUMPER, loop)
[docs] def dpad_up(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.DPAD_UP, loop)
[docs] def dpad_down(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.DPAD_DOWN, loop)
[docs] def dpad_left(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.DPAD_LEFT, loop)
[docs] def dpad_right(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.DPAD_RIGHT, loop)
[docs] def misc1(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.MISC_1, loop)
[docs] def right_paddle1(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.RIGHT_PADDLE_1, loop)
[docs] def left_paddle1(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.LEFT_PADDLE_1, loop)
[docs] def right_paddle2(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.RIGHT_PADDLE_2, loop)
[docs] def left_paddle2(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.LEFT_PADDLE_2, loop)
[docs] def touchpad(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.TOUCHPAD, loop)
[docs] def misc2(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.MISC_2, loop)
[docs] def misc3(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.MISC_3, loop)
[docs] def misc4(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.MISC_4, loop)
[docs] def misc5(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.MISC_5, loop)
[docs] def misc6(self, loop: Optional[EventLoop] = None) -> Trigger: return self.button(Gamepad.Button.MISC_6, loop)
[docs] def left_trigger( self, threshold: float = 0.5, loop: Optional[EventLoop] = None ) -> Trigger: return self.axis_greater_than(Gamepad.Axis.LEFT_TRIGGER, threshold, loop)
[docs] def right_trigger( self, threshold: float = 0.5, loop: Optional[EventLoop] = None ) -> Trigger: return self.axis_greater_than(Gamepad.Axis.RIGHT_TRIGGER, threshold, loop)
[docs] def axis_less_than( self, axis, threshold: float, loop: Optional[EventLoop] = None ) -> Trigger: return self._hid.axis_less_than(_enum_value(axis), threshold, loop)
[docs] def axis_greater_than( self, axis, threshold: float, loop: Optional[EventLoop] = None ) -> Trigger: return self._hid.axis_greater_than(_enum_value(axis), threshold, loop)
[docs] def axis_magnitude_greater_than( self, axis, threshold: float, loop: Optional[EventLoop] = None ) -> Trigger: return self._hid.axis_magnitude_greater_than(_enum_value(axis), threshold, loop)
[docs] def get_axis(self, axis) -> float: """ Get the value of the axis. :param axis: the axis index or :class:`wpilib.Gamepad.Axis` """ return self._hid.get_raw_axis(_enum_value(axis))
[docs] def get_left_x(self) -> float: return self._gamepad.get_left_x()
[docs] def get_left_y(self) -> float: return self._gamepad.get_left_y()
[docs] def get_right_x(self) -> float: return self._gamepad.get_right_x()
[docs] def get_right_y(self) -> float: return self._gamepad.get_right_y()
[docs] def get_left_trigger_axis(self) -> float: return self._gamepad.get_left_trigger_axis()
[docs] def get_right_trigger_axis(self) -> float: return self._gamepad.get_right_trigger_axis()