InputHandler // Simplify handleInput().

This commit is contained in:
ShikiSuen 2022-10-14 11:44:27 +08:00
parent d9cf938b29
commit 4522921a0f
1 changed files with 54 additions and 91 deletions

View File

@ -9,6 +9,7 @@
/// 調 IMK 調 /// 調 IMK 調
/// 調 /// 調
import CocoaExtension
import LangModelAssembly import LangModelAssembly
import Shared import Shared
@ -54,7 +55,7 @@ extension InputHandler {
return false return false
} }
// MARK: Caps Lock processing. // MARK: Caps Lock
/// Caps Lock /// Caps Lock
/// Caps Lock /// Caps Lock
@ -186,63 +187,34 @@ extension InputHandler {
return true return true
} }
// MARK: - // MARK:
// MARK: Esc if let keyCodeType = KeyCode(rawValue: input.keyCode) {
switch keyCodeType {
if input.isEsc { return handleEsc(state: state, stateCallback: stateCallback) } case .kEscape: return handleEsc(state: state, stateCallback: stateCallback)
case .kTab:
// MARK: Tab
if input.isTab {
return handleInlineCandidateRotation( return handleInlineCandidateRotation(
state: state, reverseModifier: input.isShiftHold, stateCallback: stateCallback, errorCallback: errorCallback state: state, reverseModifier: input.isShiftHold, stateCallback: stateCallback, errorCallback: errorCallback
) )
case .kUpArrow, .kDownArrow, .kLeftArrow, .kRightArrow:
if (input.isControlHold || input.isShiftHold) && (input.isOptionHold) {
if input.isLeft { // Ctrl+PgLf / Shift+PgLf
return handleHome(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
} else if input.isRight { // Ctrl+PgRt or Shift+PgRt
return handleEnd(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
} }
}
// MARK: Cursor backward if input.isCursorBackward { // Forward
if input.isCursorBackward {
return handleBackward( return handleBackward(
state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback
) )
} }
if input.isCursorForward { // Backward
// MARK: Cursor forward
if input.isCursorForward {
return handleForward( return handleForward(
state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback
) )
} }
if input.isCursorClockLeft || input.isCursorClockRight { // Clock keys
// MARK: Home
if input.isHome {
return handleHome(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
}
// MARK: End
if input.isEnd {
return handleEnd(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
}
// MARK: Ctrl+PgLf or Shift+PgLf
if (input.isControlHold || input.isShiftHold) && (input.isOptionHold && input.isLeft) {
return handleHome(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
}
// MARK: Ctrl+PgRt or Shift+PgRt
if (input.isControlHold || input.isShiftHold) && (input.isOptionHold && input.isRight) {
return handleEnd(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
}
// MARK: Clock-Left & Clock-Right
if input.isCursorClockLeft || input.isCursorClockRight {
if input.isOptionHold, state.type == .ofInputting { if input.isOptionHold, state.type == .ofInputting {
if input.isCursorClockRight { if input.isCursorClockRight {
return handleInlineCandidateRotation( return handleInlineCandidateRotation(
@ -257,30 +229,21 @@ extension InputHandler {
} }
return handleClockKey(state: state, stateCallback: stateCallback, errorCallback: errorCallback) return handleClockKey(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
} }
case .kHome: return handleHome(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
// MARK: BackSpace case .kEnd: return handleEnd(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
case .kBackSpace:
if input.isBackSpace {
return handleBackSpace(state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback) return handleBackSpace(state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback)
} case .kWindowsDelete:
// MARK: Delete
if input.isDelete {
return handleDelete(state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback) return handleDelete(state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback)
} case .kCarriageReturn, .kLineFeed:
// MARK: Enter
if input.isEnter {
return (input.isCommandHold && input.isControlHold) return (input.isCommandHold && input.isControlHold)
? (input.isOptionHold ? (input.isOptionHold
? handleCtrlOptionCommandEnter(state: state, stateCallback: stateCallback) ? handleCtrlOptionCommandEnter(state: state, stateCallback: stateCallback)
: handleCtrlCommandEnter(state: state, stateCallback: stateCallback)) : handleCtrlCommandEnter(state: state, stateCallback: stateCallback))
: handleEnter(state: state, stateCallback: stateCallback) : handleEnter(state: state, stateCallback: stateCallback)
default: break
}
} }
// MARK: -
// MARK: Punctuation list // MARK: Punctuation list