InputHandler // Add new hotkeys for revolving candidates.

* InputHandler // Add Shift+↑↓ candidate revolving support.

* InputHandler // Add (Shift+)kContextMenu candidate revolving support.

* InputHandler // Add Ctrl+Command+[] candidate revolving support.
This commit is contained in:
ShikiSuen 2023-01-28 16:18:25 +08:00
parent 9ce3c2a9e4
commit 84c2232f8c
1 changed files with 20 additions and 4 deletions

View File

@ -119,21 +119,37 @@ extension InputHandler {
return true
}
// MARK: Ctrl+Command+[]
// Shift+Command+[] Chrome Ctrl
revolveCandidateWithBrackets: if input.modifierFlags == [.control, .command] {
if state.type != .ofInputting { break revolveCandidateWithBrackets }
// JIS US
let isJIS: Bool = KBGetLayoutType(Int16(LMGetKbdType())) == kKeyboardJIS
switch (input.keyCode, isJIS) {
case (30, true): return revolveCandidate(reverseOrder: true)
case (42, true): return revolveCandidate(reverseOrder: false)
case (33, false): return revolveCandidate(reverseOrder: true)
case (30, false): return revolveCandidate(reverseOrder: false)
default: break
}
}
// MARK:
if let keyCodeType = KeyCode(rawValue: input.keyCode) {
switch keyCodeType {
case .kEscape: return handleEsc()
case .kTab: return rotateCandidate(reverseOrder: input.isShiftHold)
case .kTab, .kContextMenu: return revolveCandidate(reverseOrder: input.isShiftHold)
case .kUpArrow, .kDownArrow, .kLeftArrow, .kRightArrow:
let rotation: Bool = input.isOptionHold && state.type == .ofInputting
let rotation: Bool = (input.isOptionHold || input.isShiftHold) && state.type == .ofInputting
handleArrowKey: switch (keyCodeType, delegate.isVerticalTyping) {
case (.kLeftArrow, false), (.kUpArrow, true): return handleBackward(input: input)
case (.kRightArrow, false), (.kDownArrow, true): return handleForward(input: input)
case (.kUpArrow, false), (.kLeftArrow, true):
return rotation ? rotateCandidate(reverseOrder: true) : handleClockKey()
return rotation ? revolveCandidate(reverseOrder: true) : handleClockKey()
case (.kDownArrow, false), (.kRightArrow, true):
return rotation ? rotateCandidate(reverseOrder: false) : handleClockKey()
return rotation ? revolveCandidate(reverseOrder: false) : handleClockKey()
default: break handleArrowKey //
}
case .kHome: return handleHome()