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 調
/// 調
import CocoaExtension
import LangModelAssembly
import Shared
@ -54,7 +55,7 @@ extension InputHandler {
return false
}
// MARK: Caps Lock processing.
// MARK: Caps Lock
/// Caps Lock
/// Caps Lock
@ -186,63 +187,34 @@ extension InputHandler {
return true
}
// MARK: -
// MARK:
// MARK: Esc
if input.isEsc { return handleEsc(state: state, stateCallback: stateCallback) }
// MARK: Tab
if input.isTab {
if let keyCodeType = KeyCode(rawValue: input.keyCode) {
switch keyCodeType {
case .kEscape: return handleEsc(state: state, stateCallback: stateCallback)
case .kTab:
return handleInlineCandidateRotation(
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 {
}
if input.isCursorBackward { // Forward
return handleBackward(
state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback
)
}
// MARK: Cursor forward
if input.isCursorForward {
if input.isCursorForward { // Backward
return handleForward(
state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback
)
}
// 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.isCursorClockLeft || input.isCursorClockRight { // Clock keys
if input.isOptionHold, state.type == .ofInputting {
if input.isCursorClockRight {
return handleInlineCandidateRotation(
@ -257,30 +229,21 @@ extension InputHandler {
}
return handleClockKey(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
}
// MARK: BackSpace
if input.isBackSpace {
case .kHome: return handleHome(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
case .kEnd: return handleEnd(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
case .kBackSpace:
return handleBackSpace(state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback)
}
// MARK: Delete
if input.isDelete {
case .kWindowsDelete:
return handleDelete(state: state, input: input, stateCallback: stateCallback, errorCallback: errorCallback)
}
// MARK: Enter
if input.isEnter {
case .kCarriageReturn, .kLineFeed:
return (input.isCommandHold && input.isControlHold)
? (input.isOptionHold
? handleCtrlOptionCommandEnter(state: state, stateCallback: stateCallback)
: handleCtrlCommandEnter(state: state, stateCallback: stateCallback))
: handleEnter(state: state, stateCallback: stateCallback)
default: break
}
}
// MARK: -
// MARK: Punctuation list