mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2026-04-17 05:39:53 +00:00
Added unicode input event (#63)
* Added unicode input event * Prevents strcpy overflow * Updated according to change requests
This commit is contained in:
@@ -26,6 +26,7 @@ typedef struct _PACKET_HOLDER {
|
||||
NV_MULTI_CONTROLLER_PACKET multiController;
|
||||
NV_SCROLL_PACKET scroll;
|
||||
NV_HAPTICS_PACKET haptics;
|
||||
NV_UNICODE_PACKET unicode;
|
||||
} packet;
|
||||
LINKED_BLOCKING_QUEUE_ENTRY entry;
|
||||
} PACKET_HOLDER, *PPACKET_HOLDER;
|
||||
@@ -607,6 +608,38 @@ int LiSendKeyboardEvent(short keyCode, char keyAction, char modifiers) {
|
||||
return err;
|
||||
}
|
||||
|
||||
int LiSendUtf8TextEvent(const char *text, unsigned int length) {
|
||||
PPACKET_HOLDER holder;
|
||||
int err;
|
||||
|
||||
if (!initialized) {
|
||||
return -2;
|
||||
}
|
||||
|
||||
if (length > UTF8_TEXT_EVENT_MAX_COUNT) {
|
||||
return -1;
|
||||
}
|
||||
holder = allocatePacketHolder();
|
||||
if (holder == NULL) {
|
||||
return -1;
|
||||
}
|
||||
// Size + magic + string length
|
||||
holder->packetLength = 4 + 4 + length;
|
||||
// Magic + string length
|
||||
holder->packet.unicode.size = BE32(4 + length);
|
||||
holder->packet.unicode.magic = LE32(UTF8_TEXT_EVENT_MAGIC);
|
||||
memcpy(holder->packet.unicode.text, text, length);
|
||||
|
||||
err = LbqOfferQueueItem(&packetQueue, holder, &holder->entry);
|
||||
if (err != LBQ_SUCCESS) {
|
||||
LC_ASSERT(err == LBQ_BOUND_EXCEEDED);
|
||||
Limelog("Input queue reached maximum size limit\n");
|
||||
freePacketHolder(holder);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sendControllerEventInternal(short controllerNumber, short activeGamepadMask,
|
||||
short buttonFlags, unsigned char leftTrigger, unsigned char rightTrigger,
|
||||
short leftStickX, short leftStickY, short rightStickX, short rightStickY)
|
||||
|
||||
Reference in New Issue
Block a user