mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2025-08-17 17:05:50 +00:00
Implement LiSendControllerEvent
This commit is contained in:
parent
51b78b628b
commit
d9bbe53681
@ -32,4 +32,24 @@ typedef struct _NV_MOUSE_BUTTON_PACKET {
|
|||||||
int button;
|
int button;
|
||||||
} NV_MOUSE_BUTTON_PACKET, *PNV_MOUSE_BUTTON_PACKET;
|
} NV_MOUSE_BUTTON_PACKET, *PNV_MOUSE_BUTTON_PACKET;
|
||||||
|
|
||||||
|
#define PACKET_TYPE_CONTROLLER 0x18
|
||||||
|
#define HEADER_A 0x0000000A
|
||||||
|
#define HEADER_B 0x1400
|
||||||
|
#define TAIL_A 0x0000009C
|
||||||
|
#define TAIL_B 0x0055
|
||||||
|
typedef struct _NV_CONTROLLER_PACKET {
|
||||||
|
NV_INPUT_HEADER header;
|
||||||
|
int headerA;
|
||||||
|
short headerB;
|
||||||
|
short buttonFlags;
|
||||||
|
char leftTrigger;
|
||||||
|
char rightTrigger;
|
||||||
|
short leftStickX;
|
||||||
|
short leftStickY;
|
||||||
|
short rightStickX;
|
||||||
|
short rightStickY;
|
||||||
|
int tailA;
|
||||||
|
short tailB;
|
||||||
|
} NV_CONTROLLER_PACKET, *PNV_CONTROLLER_PACKET;
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
@ -23,6 +23,7 @@ typedef struct _PACKET_HOLDER {
|
|||||||
NV_KEYBOARD_PACKET keyboard;
|
NV_KEYBOARD_PACKET keyboard;
|
||||||
NV_MOUSE_MOVE_PACKET mouseMove;
|
NV_MOUSE_MOVE_PACKET mouseMove;
|
||||||
NV_MOUSE_BUTTON_PACKET mouseButton;
|
NV_MOUSE_BUTTON_PACKET mouseButton;
|
||||||
|
NV_CONTROLLER_PACKET controller;
|
||||||
} packet;
|
} packet;
|
||||||
} PACKET_HOLDER, *PPACKET_HOLDER;
|
} PACKET_HOLDER, *PPACKET_HOLDER;
|
||||||
|
|
||||||
@ -229,3 +230,34 @@ int LiSendKeyboardEvent(short keyCode, char keyAction, char modifiers) {
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int LiSendControllerEvent(short buttonFlags, char leftTrigger, char rightTrigger,
|
||||||
|
short leftStickX, short leftStickY, short rightStickX, short rightStickY)
|
||||||
|
{
|
||||||
|
PPACKET_HOLDER holder;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
holder = malloc(sizeof(*holder));
|
||||||
|
if (holder == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
holder->packetLength = sizeof(NV_CONTROLLER_PACKET);
|
||||||
|
holder->packet.controller.header.packetType = PACKET_TYPE_CONTROLLER;
|
||||||
|
holder->packet.controller.headerA = HEADER_A;
|
||||||
|
holder->packet.controller.headerB = HEADER_B;
|
||||||
|
holder->packet.controller.buttonFlags = buttonFlags;
|
||||||
|
holder->packet.controller.leftTrigger = leftTrigger;
|
||||||
|
holder->packet.controller.rightTrigger = rightTrigger;
|
||||||
|
holder->packet.controller.leftStickX = leftStickX;
|
||||||
|
holder->packet.controller.leftStickY = leftStickY;
|
||||||
|
holder->packet.controller.rightStickX = rightStickX;
|
||||||
|
holder->packet.controller.rightStickY = rightStickY;
|
||||||
|
holder->packet.controller.tailA = TAIL_A;
|
||||||
|
holder->packet.controller.tailB = TAIL_B;
|
||||||
|
err = LbqOfferQueueItem(&packetQueue, holder);
|
||||||
|
if (err != LBQ_SUCCESS) {
|
||||||
|
free(holder);
|
||||||
|
}
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
@ -111,6 +111,24 @@ int LiSendMouseButtonEvent(char action, int button);
|
|||||||
#define MODIFIER_ALT 0x04
|
#define MODIFIER_ALT 0x04
|
||||||
int LiSendKeyboardEvent(short keyCode, char keyAction, char modifiers);
|
int LiSendKeyboardEvent(short keyCode, char keyAction, char modifiers);
|
||||||
|
|
||||||
|
#define A_FLAG 0x1000
|
||||||
|
#define B_FLAG 0x2000
|
||||||
|
#define X_FLAG 0x4000
|
||||||
|
#define Y_FLAG 0x8000
|
||||||
|
#define UP_FLAG 0x0001
|
||||||
|
#define DOWN_FLAG 0x0002
|
||||||
|
#define LEFT_FLAG 0x0004
|
||||||
|
#define RIGHT_FLAG 0x0008
|
||||||
|
#define LB_FLAG 0x0100
|
||||||
|
#define RB_FLAG 0x0200
|
||||||
|
#define PLAY_FLAG 0x0010
|
||||||
|
#define BACK_FLAG 0x0020
|
||||||
|
#define LS_CLK_FLAG 0x0040
|
||||||
|
#define RS_CLK_FLAG 0x0080
|
||||||
|
#define SPECIAL_FLAG 0x0400
|
||||||
|
int LiSendControllerEvent(short buttonFlags, char leftTrigger, char rightTrigger,
|
||||||
|
short leftStickX, short leftStickY, short rightStickX, short rightStickY);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
Loading…
x
Reference in New Issue
Block a user