From e555b6393140c9dba431f9317b0ef0f04d6997f0 Mon Sep 17 00:00:00 2001 From: wake Date: Sat, 7 Feb 2026 14:23:30 +0800 Subject: [PATCH] fix: extra "a" with Rime and apply clang-format --- src/lib/platform/OSXKeyState.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/platform/OSXKeyState.cpp b/src/lib/platform/OSXKeyState.cpp index b05d07a01..29c50e4c8 100644 --- a/src/lib/platform/OSXKeyState.cpp +++ b/src/lib/platform/OSXKeyState.cpp @@ -566,11 +566,13 @@ kern_return_t OSXKeyState::postHIDVirtualKey(uint8_t virtualKey, bool postDown) kern_return_t result = KERN_FAILURE; if (driver) { + // Gotcha: `keyCode` must be set for all event types (including modifier key press); + // the default zero value is interpreted as the 'a' key by some input methods (e.g. Chinese). + event.key.keyCode = virtualKey; if (isModifier(virtualKey)) { result = IOHIDPostEvent(driver, NX_FLAGSCHANGED, {0, 0}, &event, kNXEventDataVersion, getKeyboardEventFlags(), true); } else { - event.key.keyCode = virtualKey; const auto eventType = postDown ? NX_KEYDOWN : NX_KEYUP; result = IOHIDPostEvent(driver, eventType, {0, 0}, &event, kNXEventDataVersion, 0, false); }