Skip to content

Commit

Permalink
[client,mac] key down & up for CAPS and NUM lock
Browse files Browse the repository at this point in the history
  • Loading branch information
akallabeth committed Jan 18, 2024
1 parent e4fd65c commit 192c649
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions client/Mac/MRDPView.m
Original file line number Diff line number Diff line change
Expand Up @@ -568,9 +568,9 @@ - (void)keyUp:(NSEvent *)event

static BOOL updateFlagState(rdpInput *input, DWORD modFlags, DWORD kbdModFlags, DWORD flag)
{
const BOOL press = ((modFlags & flag) != 0) && ((kbdModFlags & flag) == 0);
const BOOL release = ((modFlags & flag) == 0) && ((kbdModFlags & flag) != 0);
DWORD keyFlags = press ? KBD_FLAGS_DOWN : (release ? KBD_FLAGS_RELEASE : 0);
BOOL press = ((modFlags & flag) != 0) && ((kbdModFlags & flag) == 0);
BOOL release = ((modFlags & flag) == 0) && ((kbdModFlags & flag) != 0);
DWORD keyFlags = 0;
const char *name = NULL;
DWORD scancode = 0;

Expand All @@ -579,6 +579,7 @@ static BOOL updateFlagState(rdpInput *input, DWORD modFlags, DWORD kbdModFlags,
case NSEventModifierFlagCapsLock:
name = "NSEventModifierFlagCapsLock";
scancode = RDP_SCANCODE_CAPSLOCK;
release = press = TRUE;
break;
case NSEventModifierFlagShift:
name = "NSEventModifierFlagShift";
Expand All @@ -603,6 +604,7 @@ static BOOL updateFlagState(rdpInput *input, DWORD modFlags, DWORD kbdModFlags,
case NSEventModifierFlagNumericPad:
name = "NSEventModifierFlagNumericPad";
scancode = RDP_SCANCODE_NUMLOCK;
release = press = TRUE;
break;

case NSEventModifierFlagHelp:
Expand All @@ -620,7 +622,7 @@ static BOOL updateFlagState(rdpInput *input, DWORD modFlags, DWORD kbdModFlags,
return FALSE;
}

keyFlags |= (scancode & KBDEXT);
keyFlags = (scancode & KBDEXT);
scancode &= 0xFF;

#if defined(WITH_DEBUG_KBD)
Expand All @@ -630,10 +632,16 @@ static BOOL updateFlagState(rdpInput *input, DWORD modFlags, DWORD kbdModFlags,
#endif

if (press)
return freerdp_input_send_keyboard_event(input, keyFlags | KBD_FLAGS_DOWN, scancode);
{
if (!freerdp_input_send_keyboard_event(input, keyFlags | KBD_FLAGS_DOWN, scancode))
return FALSE;
}

if (release)
return freerdp_input_send_keyboard_event(input, keyFlags | KBD_FLAGS_RELEASE, scancode);
{
if (!freerdp_input_send_keyboard_event(input, keyFlags | KBD_FLAGS_RELEASE, scancode))
return FALSE;
}

return TRUE;
}
Expand Down

0 comments on commit 192c649

Please sign in to comment.