joymap
Version:
A Gamepad API wrapper and mapping tool.
71 lines (70 loc) • 1.88 kB
TypeScript
export declare type Button = number[];
export declare type Stick = {
indexes: number[][];
inverts: boolean[];
};
export interface ButtonResult {
type: 'button';
value: number;
pressed: boolean;
justChanged: boolean;
}
export interface StickResult {
type: 'stick';
value: number[];
pressed: boolean;
justChanged: boolean;
inverts: boolean[];
}
export declare type InputResult = ButtonResult | StickResult;
export interface RawGamepad extends Gamepad {
vibrationActuator?: {
playEffect: (type: 'dual-rumble', effect: StrictEffect) => Promise<string>;
reset: () => Promise<string>;
};
}
export interface CustomGamepad {
axes: number[];
buttons: number[];
rawPad?: RawGamepad;
}
export interface JoymapParams {
onPoll?: () => void;
autoConnect?: boolean;
}
export interface BaseParams {
padId?: string;
threshold?: number;
clampThreshold?: boolean;
}
export declare type Effect = number | {
duration: number;
weakMagnitude?: number;
strongMagnitude?: number;
};
export interface StrictEffect {
duration: number;
weakMagnitude: number;
strongMagnitude: number;
}
export interface ListenOptions {
callback: (indexes: number[] | number[][]) => void;
quantity: number;
type: 'buttons' | 'axes';
currentValue: number;
useTimeStamp: boolean;
targetValue: number;
consecutive: boolean;
allowOffset: boolean;
}
export interface InputToken {
inputName: string;
inputState: 'justPressed' | 'justReleased' | 'pressed' | 'released';
}
export declare type OperatorToken = string;
export declare type EventToken = InputToken | OperatorToken;
export interface InputEvent {
name: string;
callback: (button: InputResult[]) => void;
tokens: EventToken[];
}