Skip to content

Commit df2de67

Browse files
committed
Control, Command 입력되면 초기화, 쌓인 입력이 먼저 처리되도록 초기화 순서 변경
단축키로 창이나 커서를 움직이는 경우 중복 입력되거나 조합이 종료되지 않아 유실되는 문제 해결
1 parent e6c0793 commit df2de67

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

SokIM/AppDelegate.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,19 +174,18 @@ class AppDelegate: NSObject, NSApplicationDelegate {
174174
@objc func reset() {
175175
debug()
176176

177-
if let sender = eventContext.sender {
178-
eventContext.strategy.flush(from: state, to: sender)
177+
if getKeyboardCapsLock() {
178+
setKeyboardCapsLock(enabled: false)
179179
}
180180

181181
var inputs = inputMonitor.flush()
182182
filterInputs(&inputs, event: nil)
183183
inputs.forEach { state.next($0) }
184-
state = State(engine: state.engine)
185-
186-
if getKeyboardCapsLock() {
187-
setKeyboardCapsLock(enabled: false)
184+
if let sender = eventContext.sender {
185+
eventContext.strategy.flush(from: state, to: sender)
188186
}
189187

188+
state = State(engine: state.engine)
190189
eventContext = EventContext()
191190
InputContext.reset()
192191
}

SokIM/InputMonitor.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,12 @@ class InputMonitor {
149149
if let key = ModifierUsage(rawValue: usage) {
150150
modifier[key] = type
151151

152+
// 별도 처리: Control, Command 입력되면 조합 종료 및 초기화
153+
if (type, key) == (.keyDown, .leftControl) || (type, key) == (.keyDown, .rightControl)
154+
|| (type, key) == (.keyDown, .leftCommand) || (type, key) == (.keyDown, .rightCommand) {
155+
AppDelegate.shared().reset()
156+
}
157+
152158
// 별도 처리: 오른쪽 Command: 한/A 표시만 우선 갱신, 실제 처리는 State에서
153159
if (type, key) == (.keyDown, .rightCommand)
154160
&& Preferences.rotateShortcut == .rightCommand {

0 commit comments

Comments
 (0)