NSEventImpl // Implement .layoutTranslated().
This commit is contained in:
parent
a940bcc49f
commit
8bc621f126
|
@ -310,22 +310,13 @@ public enum EmacsKey {
|
|||
|
||||
// MARK: - Apple ABC Keyboard Mapping
|
||||
|
||||
let arrAppleABCKeyboardMap: [UInt16: (String, String)] = [
|
||||
50: ("`", "~"), 18: ("1", "!"), 19: ("2", "@"), 20: ("3", "#"), 21: ("4", "$"), 23: ("5", "%"), 22: ("6", "^"),
|
||||
26: ("7", "&"), 28: ("8", "*"), 25: ("9", "("), 29: ("0", ")"), 27: ("-", "_"), 24: ("=", "+"), 12: ("q", "Q"),
|
||||
13: ("w", "W"), 14: ("e", "E"), 15: ("r", "R"), 17: ("t", "T"), 16: ("y", "Y"), 32: ("u", "U"), 34: ("i", "I"),
|
||||
31: ("o", "O"), 35: ("p", "P"), 33: ("[", "{"), 30: ("]", "}"), 42: ("\\", "|"), 0: ("a", "A"), 1: ("s", "S"),
|
||||
2: ("d", "D"), 3: ("f", "F"), 5: ("g", "G"), 4: ("h", "H"), 38: ("j", "J"), 40: ("k", "K"), 37: ("l", "L"),
|
||||
41: (";", ":"), 39: ("'", "\""), 6: ("z", "Z"), 7: ("x", "X"), 8: ("c", "C"), 9: ("v", "V"), 11: ("b", "B"),
|
||||
45: ("n", "N"), 46: ("m", "M"), 43: (",", "<"), 47: (".", ">"), 44: ("/", "?"),
|
||||
]
|
||||
|
||||
public extension NSEvent {
|
||||
var inAppleABCStaticForm: NSEvent {
|
||||
func layoutTranslated(to layout: LatinKeyboardMarkings = .qwerty) -> NSEvent {
|
||||
let mapTable = layout.mapTable
|
||||
if type == .flagsChanged { return self }
|
||||
guard modifierFlags == .shift || modifierFlags.isEmpty else { return self }
|
||||
if !arrAppleABCKeyboardMap.keys.contains(keyCode) { return self }
|
||||
guard let dataTuplet = arrAppleABCKeyboardMap[keyCode] else { return self }
|
||||
if !mapTable.keys.contains(keyCode) { return self }
|
||||
guard let dataTuplet = mapTable[keyCode] else { return self }
|
||||
let result: NSEvent? = reinitiate(
|
||||
characters: isShiftHold ? dataTuplet.1 : dataTuplet.0,
|
||||
charactersIgnoringModifiers: dataTuplet.0
|
||||
|
|
|
@ -124,7 +124,7 @@ public extension SessionCtl {
|
|||
|
||||
// 在啟用注音排列而非拼音輸入的情況下,強制將當前鍵盤佈局翻譯為美規鍵盤。
|
||||
if !inputHandler.isComposerUsingPinyin || IMKHelper.isDynamicBasicKeyboardLayoutEnabled {
|
||||
eventToDeal = eventToDeal.inAppleABCStaticForm
|
||||
eventToDeal = eventToDeal.layoutTranslated(to: .qwerty)
|
||||
}
|
||||
|
||||
// Apple 數字小鍵盤處理
|
||||
|
|
Loading…
Reference in New Issue