From 86b85b9c83c2f8afdd31917b23c9e38a61cd46d6 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Fri, 10 Feb 2023 21:16:54 +0800 Subject: [PATCH] CandidateNode // Add data of Hanin Keyboard Symbols for query. --- Source/Modules/SymbolMenuDefaultData.swift | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/Source/Modules/SymbolMenuDefaultData.swift b/Source/Modules/SymbolMenuDefaultData.swift index 26aacaa0..08c1e093 100644 --- a/Source/Modules/SymbolMenuDefaultData.swift +++ b/Source/Modules/SymbolMenuDefaultData.swift @@ -398,3 +398,87 @@ extension CandidateNode { ] ) } + +// MARK: - Hanin Symbol Support (except Ctrl+3 menu). + +public extension CandidateNode { + static func queryHaninKeyboardSymbols(char key: String) -> CandidateNode? { + guard let rawData = Self.mapHaninKeyboardSymbols[key] else { return nil } + return CandidateNode(name: key, symbols: rawData) + } + + // Ref: https://github.com/vChewing/vChewing-macOS/wiki/HaninFormatSpec + static let mapHaninKeyboardSymbols: [String: [String]] = [ + " ": [" "], + "(": ["(", "﹙", "︵", "○", "●", "9"], + ")": [")", "﹚", "︶", "○", "●", "0"], + "+": ["+", "﹢", "♀", "♂", "⊕", "±", "┼"], + ",": [",", "﹐", "、", "﹑", "ㄝ"], + "-": [ + "-", "ㄦ", "﹍", "‾", " ̄", "÷", "±", "√", "═", + "≡", "⊥", "–", "—", "╴", "▔", "─", "△", "▲", + ], + ".": ["。", ".", "﹒", "‧", "·", "ㄡ", "÷", "≒", "∵", "∴", "☉", "…", "‥"], + "/": ["/", "∕", "ㄥ", "╱", "≠", "¢", "?", "﹖"], + "0": ["0", ")", "ㄢ", "﹚", "︶", "○", "Ⅹ"], + "1": ["1", "!", "ㄅ", "Ⅰ"], + "2": ["2", "@", "ㄉ", "﹫", "Ⅱ"], + "3": ["3", "#", "ˇ", "﹟", "Ⅲ"], + "4": ["4", "$", "ˋ", "﹩", "∫", "∮", "§"], + "5": ["5", "%", "ㄓ", "﹪", "Ⅴ", "Λ"], + "6": ["6", "↑", "ˊ", "︿", "︽", "Ⅵ"], + "7": ["7", "&", "˙", "Ⅶ", "﹠"], + "8": ["8", "*", "ㄚ", "※", "☆", "★", "﹡"], + "9": ["9", "(", "ㄞ", "﹙", "︵", "●", "Ⅸ"], + ":": [":", ";", "ㄤ", "︰", "﹕"], + ";": [";", "ㄤ", "﹔", ":", "︰", "﹕"], + "<": [ + "<", ",", "﹐", "﹑", "ㄝ", "﹤", "〈", "≦", "←", + "∠", "《", "︽", "︿", "↖", "◣", "◤", "Δ", "┌", "╭", + "╔", "╒", "╓", "∟", "↙", "└", "╰", "╚", "╘", "╙", + ], + ">": [ + ">", "。", ".", "‧", "﹒", "ㄡ", "÷", "≒", + "∵", "∴", "☉", "…", "‥", "﹥", "〉", "≧", + "→", "》", "︾", "┘", "╯", "╝", "╛", "╜", + "↘", "↗", "﹀", "⊿", "┤", "╣", "╡", "╢", "◢", "◥", + ], + "=": ["﹦", "=", "═", "≦", "≧", "≠", "≒"], + "?": ["?", "﹖"], + "a": ["A", "a", "ㄇ", "Α", "日", "α"], + "b": ["B", "b", "ㄖ", "Β", "月", "β"], + "c": ["C", "c", "ㄏ", "℃", "Γ", "℅", "金"], + "d": ["D", "d", "ㄎ", "Δ", "δ", "木"], + "e": ["E", "e", "ㄍ", "ε", "Ε", "水"], + "f": ["F", "f", "ㄑ", "火", "℉"], + "g": ["G", "g", "ㄕ", "土"], + "h": ["H", "h", "ㄘ", "Η", "竹"], + "i": ["I", "i", "ㄛ", "Ι", "ι", "戈"], + "j": ["J", "j", "ㄨ", "十"], + "k": ["K", "k", "ㄜ", "Κ", "κ", "大"], + "l": ["L", "l", "ㄠ", "Γ", "㏒", "㏑", "λ", "中"], + "m": ["M", "m", "ㄩ", "Ο", "Μ", "Σ", "一"], + "n": ["N", "n", "ㄙ", "Ν", "弓", "η"], + "o": ["O", "o", "ㄟ", "○", "●", "◎", "㊣", "Θ", "Ο", "Φ", "θ", "ο", "φ", "人"], + "p": ["P", "p", "ㄣ", "π", "Ρ", "心"], + "q": ["Q", "q", "ㄆ", "手"], + "r": ["R", "r", "ㄐ", "γ", "ρ", "口"], + "s": ["S", "s", "ㄋ", "∫", "∮", "σ", "尸"], + "t": ["T", "t", "ㄔ", "Τ", "Υ", "廿"], + "u": ["U", "u", "ㄧ", "∪", "∩", "Π", "Ψ", "μ", "ψ", "山"], + "v": ["V", "v", "ㄒ", "∪", "∩", "↓", "┴", "╩", "╧", "╨", "ν", "υ", "女"], + "w": ["W", "w", "ㄊ", "Ω", "ω", "田"], + "x": ["X", "x", "ㄌ", "×", "╳", "Χ", "χ", "ξ"], + "y": ["Y", "y", "ㄗ", "卜", "¥"], + "z": ["Ζ", "z", "ㄈ", "τ"], + "[": ["【", "﹝", "︻", "『", "﹃", "「", "﹁", "〔", "︹"], + "\"": ["“", "”", "〝", "〞", "〃"], + "\'": ["、", "﹑", "‘", "’"], + "]": ["】", "︼", "』", "﹄", "」", "﹂", "〕", "︺", "﹞", "□", "■"], + "_": ["_", "ˍ"], + "`": ["‵", "′"], + "{": ["{", "︷", "﹛"], + "}": ["}", "︸", "﹜"], + "~": ["~", "︴", "﹋"], + ] +}