KeyHandler // Commiting HTML Ruby Composition by ⌘⌃⌥Enter.
This commit is contained in:
parent
8d0babf954
commit
2540b3137c
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue