KeyHandler // Commiting HTML Ruby Composition by ⌘⌃⌥Enter.

This commit is contained in:
ShikiSuen 2022-05-09 22:08:55 +08:00
parent 8d0babf954
commit 2540b3137c
2 changed files with 36 additions and 2 deletions

View File

@ -341,7 +341,9 @@ extension KeyHandler {
if input.isEnter {
return (input.isCommandHold && input.isControlHold)
? handleCtrlCommandEnter(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
? (input.isOptionHold
? handleCtrlOptionCommandEnter(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
: handleCtrlCommandEnter(state: state, stateCallback: stateCallback, errorCallback: errorCallback))
: handleEnter(state: state, stateCallback: stateCallback, errorCallback: errorCallback)
}

View File

@ -268,7 +268,7 @@ extension KeyHandler {
return true
}
// MARK: - CMD+Enter
// MARK: - CMD+Enter
func handleCtrlCommandEnter(
state: InputState,
@ -292,6 +292,38 @@ extension KeyHandler {
return true
}
// MARK: - CMD+Alt+Enter Ruby
func handleCtrlOptionCommandEnter(
state: InputState,
stateCallback: @escaping (InputState) -> Void,
errorCallback _: @escaping () -> Void
) -> Bool {
if !(state is InputState.Inputting) {
return false
}
var composed = ""
for theAnchor in _walkedNodes {
if let node = theAnchor.node {
let key = node.currentKeyValue().key.replacingOccurrences(of: "-", with: " ")
let value = node.currentKeyValue().value
if key.contains("_") { //
composed += value
} else {
composed += "<ruby>\(value)<rp>(</rp><rt>\(key)</rt><rp>)</rp></ruby>"
}
}
}
clear()
stateCallback(InputState.Committing(poppedText: composed))
stateCallback(InputState.Empty())
return true
}
// MARK: - Backspace (macOS Delete)
func handleBackspace(