Make sure the blocked combinations are only blocked from the host, not the guest.
This commit is contained in:
@@ -143,13 +143,10 @@ keyboard_getkeymap()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static LRESULT CALLBACK
|
static void
|
||||||
input_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
|
kbd_handle(uint16_t scancode, uint16_t flags)
|
||||||
{
|
{
|
||||||
LPKBDLLHOOKSTRUCT lpKdhs = (LPKBDLLHOOKSTRUCT) lParam;
|
if (flags & LLKHF_EXTENDED)
|
||||||
uint16_t scancode = lpKdhs->scanCode & 0x00ff;
|
|
||||||
|
|
||||||
if (lpKdhs->flags & LLKHF_EXTENDED)
|
|
||||||
scancode |= 0x100;
|
scancode |= 0x100;
|
||||||
|
|
||||||
/* Translate the scan code to 9-bit */
|
/* Translate the scan code to 9-bit */
|
||||||
@@ -175,7 +172,15 @@ input_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
|
|||||||
/* Normal scan code pass through, pass it through as is if
|
/* Normal scan code pass through, pass it through as is if
|
||||||
it's not an invalid scan code. */
|
it's not an invalid scan code. */
|
||||||
if (scancode != 0xFFFF)
|
if (scancode != 0xFFFF)
|
||||||
keyboard_input(!(lpKdhs->flags & LLKHF_UP), scancode);
|
keyboard_input(!(flags & LLKHF_UP), scancode);
|
||||||
|
}
|
||||||
|
|
||||||
|
static LRESULT CALLBACK
|
||||||
|
input_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
LPKBDLLHOOKSTRUCT lpKdhs = (LPKBDLLHOOKSTRUCT) lParam;
|
||||||
|
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
|
|
||||||
main_window->checkFullscreenHotkey();
|
main_window->checkFullscreenHotkey();
|
||||||
|
|
||||||
@@ -192,26 +197,34 @@ emu_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
|
|||||||
if ((nCode < 0) || (nCode != HC_ACTION) || (!mouse_capture && !video_fullscreen))
|
if ((nCode < 0) || (nCode != HC_ACTION) || (!mouse_capture && !video_fullscreen))
|
||||||
return CallNextHookEx(NULL, nCode, wParam, lParam);
|
return CallNextHookEx(NULL, nCode, wParam, lParam);
|
||||||
else if ((lpKdhs->scanCode == 0x01) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
else if ((lpKdhs->scanCode == 0x01) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
||||||
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED)))
|
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED))) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((lpKdhs->scanCode == 0x01) && bCtrlDown && !(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED)))
|
} else if ((lpKdhs->scanCode == 0x01) && bCtrlDown && !(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED))) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((lpKdhs->scanCode == 0x0f) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
} else if ((lpKdhs->scanCode == 0x0f) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
||||||
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED)))
|
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED))) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((lpKdhs->scanCode == 0x0f) && bCtrlDown && !(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED)))
|
} else if ((lpKdhs->scanCode == 0x0f) && bCtrlDown && !(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED))) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((lpKdhs->scanCode == 0x39) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
} else if ((lpKdhs->scanCode == 0x39) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
||||||
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED)))
|
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED))) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((lpKdhs->scanCode == 0x3e) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
} else if ((lpKdhs->scanCode == 0x3e) && (lpKdhs->flags & LLKHF_ALTDOWN) &&
|
||||||
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED)))
|
!(lpKdhs->flags & (LLKHF_UP | LLKHF_EXTENDED))) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((lpKdhs->scanCode == 0x49) && bCtrlDown && !(lpKdhs->flags & LLKHF_UP))
|
} else if ((lpKdhs->scanCode == 0x49) && bCtrlDown && !(lpKdhs->flags & LLKHF_UP)) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if ((lpKdhs->scanCode >= 0x5b) && (lpKdhs->scanCode <= 0x5d) && (lpKdhs->flags & LLKHF_EXTENDED))
|
} else if ((lpKdhs->scanCode >= 0x5b) && (lpKdhs->scanCode <= 0x5d) && (lpKdhs->flags & LLKHF_EXTENDED)) {
|
||||||
|
kbd_handle(lpKdhs->scanCode & 0x00ff, lpKdhs->flags);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else
|
} else
|
||||||
return CallNextHookEx(NULL, nCode, wParam, lParam);
|
return CallNextHookEx(NULL, nCode, wParam, lParam);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user