feat: add keyboard layout support
This commit is contained in:
@@ -179,7 +179,9 @@ namespace Drivers::PS2::Keyboard {
|
||||
.Shift = g_Modifiers.LeftShift || g_Modifiers.RightShift,
|
||||
.Ctrl = g_Modifiers.LeftCtrl || g_Modifiers.RightCtrl,
|
||||
.Alt = g_Modifiers.LeftAlt || g_Modifiers.RightAlt,
|
||||
.CapsLock = g_Modifiers.CapsLock
|
||||
.CapsLock = g_Modifiers.CapsLock,
|
||||
.AltGr = g_Modifiers.RightAlt,
|
||||
.Extended = true
|
||||
};
|
||||
PushAndNotify(event);
|
||||
|
||||
@@ -237,7 +239,9 @@ namespace Drivers::PS2::Keyboard {
|
||||
.Shift = g_Modifiers.LeftShift || g_Modifiers.RightShift,
|
||||
.Ctrl = g_Modifiers.LeftCtrl || g_Modifiers.RightCtrl,
|
||||
.Alt = g_Modifiers.LeftAlt || g_Modifiers.RightAlt,
|
||||
.CapsLock = g_Modifiers.CapsLock
|
||||
.CapsLock = g_Modifiers.CapsLock,
|
||||
.AltGr = g_Modifiers.RightAlt,
|
||||
.Extended = false
|
||||
};
|
||||
PushAndNotify(event);
|
||||
return;
|
||||
@@ -261,7 +265,9 @@ namespace Drivers::PS2::Keyboard {
|
||||
.Shift = g_Modifiers.LeftShift || g_Modifiers.RightShift,
|
||||
.Ctrl = g_Modifiers.LeftCtrl || g_Modifiers.RightCtrl,
|
||||
.Alt = g_Modifiers.LeftAlt || g_Modifiers.RightAlt,
|
||||
.CapsLock = g_Modifiers.CapsLock
|
||||
.CapsLock = g_Modifiers.CapsLock,
|
||||
.AltGr = g_Modifiers.RightAlt,
|
||||
.Extended = false
|
||||
};
|
||||
|
||||
PushAndNotify(event);
|
||||
@@ -298,7 +304,18 @@ namespace Drivers::PS2::Keyboard {
|
||||
}
|
||||
|
||||
void InjectKeyEvent(const KeyEvent& event) {
|
||||
PushAndNotify(event);
|
||||
// Caps Lock is owned here rather than by each injecting driver: USB HID
|
||||
// reports the key as an ordinary usage and carries no lock state, so
|
||||
// without this the lock would never toggle on a USB keyboard.
|
||||
KeyEvent stamped = event;
|
||||
if (stamped.Scancode == ScCapsLock && stamped.Pressed)
|
||||
g_Modifiers.CapsLock = !g_Modifiers.CapsLock;
|
||||
stamped.CapsLock = g_Modifiers.CapsLock;
|
||||
PushAndNotify(stamped);
|
||||
}
|
||||
|
||||
bool GetCapsLock() {
|
||||
return g_Modifiers.CapsLock;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user