UNPKG

@flyskypie/joypad-ts

Version:

A JavaScript library that lets you connect various gaming controllers to your browser using the Gamepad API.

116 lines (103 loc) 3.38 kB
declare interface AsixMovmentData { /** * @case 0: Horizontal axis for left stick (negative left/positive right) * @case 1: Vertical axis for left stick (negative up/positive down) * @case 2: Horizontal axis for right stick (negative left/positive right) * @case 3: Vertical axis for right stick (negative up/positive down) */ axis: number; axisMovementValue: number; directionOfMovement: DirectionOfMovement; gamepad: Gamepad; stickMoved: StickMoved; totalSticks: number; } export declare interface AxisMoveEvent extends CustomEvent { detail: AsixMovmentData; } declare interface ButtonPressData { button: GamepadButton; buttonName: string; gamepad: Gamepad; /** * @case 0: A * @case 1: B * @case 2: X * @case 3: Y * @case 4: LT * @case 5: RT * @case 6: LB * @case 7: RB * @case 8: SELECT * @case 9: START * @case 10: Left stick pressed button * @case 11: Right stick pressed button * @case 12: D-pad up * @case 13: D-pad down * @case 14: D-pad left * @case 15: D-pad right * @case 16: Vendor button 1 * @case 17: Vendor button 2 */ index: number; } export declare interface ButtonPressEvent extends CustomEvent { detail: ButtonPressData; } declare type DirectionOfMovement = "top" | "bottom" | "left" | "right"; declare enum EventEnum { CONNECT_NATIVE = "gamepadconnected", CONNECT_ALIAS = "connect", DISCONNECT_NATIVE = "gamepaddisconnected", DISCONNECT_ALIAS = "disconnect", BUTTON_PRESS_ALIAS = "button_press", BUTTON_RELEASE_ALIAS = "button_release", AXIS_MOVEMENT_ALIAS = "axis_move" } declare type EventMap = { "gamepadconnected": [event: GamepadEvent]; "connect": [event: GamepadEvent]; "gamepaddisconnected": [event: GamepadEvent]; "disconnect": [event: GamepadEvent]; "button_press": [event: ButtonPressEvent]; "button_release": [event: ButtonPressEvent]; "axis_move": [event: AxisMoveEvent]; }; declare class Joypad { loopStarted: boolean; instances: Record<number | string, Gamepad>; buttonEvents: { joypad: (Record<string, JoypadItem> | null)[]; }; settings: JoypadSettings; remove(index: number): boolean; on<TEventName extends keyof EventMap & string>(event: TEventName, callback: (...eventArg: EventMap[TEventName]) => void): { unsubscribe: () => void; } | undefined; vibrate(gamepadInstance: Gamepad, options?: GamepadEffectParameters): Promise<GamepadHapticsResult> | undefined; set(settings: JoypadSettings): void; trigger(event: EventEnum, data: unknown): void; } declare const joypad: Joypad; export default joypad; declare type JoypadItem = { index?: number; gamepad?: Gamepad; pressed: boolean; hold: boolean; released: boolean; last_event?: EventEnum; button?: GamepadButton; }; declare interface JoypadSettings { vibration?: { startDelay: number; duration: number; weakMagnitude: number; strongMagnitude: number; }; axisMovementThreshold?: number; customButtonMapping?: Record<string, number>; } declare type StickMoved = "left_stick" | "right_stick"; export { }