diff --git a/srcs/compose/fn.json b/srcs/compose/fn.json new file mode 100644 index 0000000..5a977ba --- /dev/null +++ b/srcs/compose/fn.json @@ -0,0 +1,182 @@ +{ + "1": "f1", + "2": "f2", + "3": "f3", + "4": "f4", + "5": "f5", + "6": "f6", + "7": "f7", + "8": "f8", + "9": "f9", + "0": "f10", + "<": "«", + ">": "»", + "{": "‹", + "}": "›", + "[": "‘", + "]": "’", + "(": "“", + ")": "”", + "'": "‚", + "\"": "„", + "-": "–", + "_": "—", + "^": "¬", + "%": "‰", + "=": "≈", + "u": "µ", + "a": "æ", + "o": "œ", + "*": "°", + ".": "…", + ",": "·", + "!": "¡", + "?": "¿", + "|": "¦", + "§": "¶", + "†": "‡", + "×": "∙", + " ": "nbsp", + // arrows + "↖": "⇖", + "↑": "⇑", + "↗": "⇗", + "←": "⇐", + "→": "⇒", + "↙": "⇙", + "↓": "⇓", + "↘": "⇘", + "↔": "⇔", + "↕": "⇕", + // Currency symbols + "e": "€", + "l": "£", + "r": "₹", + "y": "¥", + "c": "¢", + "p": "₽", + "b": "₱", + "h": "₴", + "z": "₿", + // avoid showing these twice + "€": "removed", + "£": "removed", + // alternative greek letters + "π": "ϖ", + "θ": "ϑ", + "Θ": "ϴ", + "ε": "ϵ", + "β": "ϐ", + "ρ": "ϱ", + "σ": "ς", + "γ": "ɣ", + "φ": "ϕ", + "υ": "ϒ", + "κ": "ϰ", + // alternative math characters + "∪": "⋃", + "∩": "⋂", + "∃": "∄", + "∈": "∉", + "∫": "∮", + "Π": "∏", + "Σ": "∑", + "∨": "⋁", + "∧": "⋀", + "⊷": "⊶", + "⊂": "⊆", + "⊃": "⊇", + "±": "∓", + // hebrew niqqud + "ק": "qamats", // kamatz + "ר": "hataf_qamats", // reduced kamatz + "ו": "holam", + "ם": "rafe", + "פ": "patah", // patach + "ש": "sheva", + "ד": "dagesh", // or mapiq + "ח": "hiriq", + "ף": "hataf_patah", // reduced patach + "ז": "qubuts", // kubuts + "ס": "segol", + "ב": "hataf_segol", // reduced segol + "צ": "tsere", + // Devanagari symbols + "ए": "ऍ", + "े": "ॅ", + "ऐ": "ऎ", + "ै": "ॆ", + "ऋ": "ॠ", + "ृ": "ॄ", + "ळ": "ऴ", + "र": "ऱ", + "क": "क़", + "ख": "ख़", + "ग": "ग़", + "घ": "ॻ", + "ढ": "ढ़", + "न": "ऩ", + "ड": "ड़", + "ट": "ॸ", + "ण": "ॾ", + "फ": "फ़", + "ऌ": "ॡ", + "ॢ": "ॣ", + "औ": "ॵ", + "ौ": "ॏ", + "ओ": "ऒ", + "ो": "ॊ", + "च": "ॼ", + "ज": "ज़", + "ब": "ॿ", + "व": "ॺ", + "य": "य़", + "अ": "ॲ", + "आ": "ऑ", + "ा": "ॉ", + "झ": "ॹ", + "ई": "ॴ", + "ी": "ऻ", + "इ": "ॳ", + "ि": "ऺ", + "उ": "ॶ", + "ऊ": "ॷ", + "ु": "ऄ", + "ष": "क्ष", + "थ": "त्र", + "द": "द्र", + "प": "प्र", + "श": "श्र", + "छ": "श्च", + "ँ": "ऀ", + "₹": "₨", + "ॖ": "ॗ", + "॓": "॔", + "॰": "ॱ", + "।": "॥", + "ं": "ॕ", + "़": "ॎ", + "ऽ": "ॽ", + // Persian numbers + "۱": "f1", + "۲": "f2", + "۳": "f3", + "۴": "f4", + "۵": "f5", + "۶": "f6", + "۷": "f7", + "۸": "f8", + "۹": "f9", + // Arabic numbers + "۰": "f10", + "١": "f1", + "٢": "f2", + "٣": "f3", + "٤": "f4", + "٥": "f5", + "٦": "f6", + "٧": "f7", + "٨": "f8", + "٩": "f9", + "٠": "f10" +} diff --git a/srcs/juloo.keyboard2/ComposeKeyData.java b/srcs/juloo.keyboard2/ComposeKeyData.java index dd24192..9994e51 100644 Binary files a/srcs/juloo.keyboard2/ComposeKeyData.java and b/srcs/juloo.keyboard2/ComposeKeyData.java differ diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java index 5763e99..d8ea965 100644 --- a/srcs/juloo.keyboard2/KeyModifier.java +++ b/srcs/juloo.keyboard2/KeyModifier.java @@ -204,7 +204,9 @@ public final class KeyModifier String name = null; switch (k.getKind()) { - case Char: name = apply_fn_char(k.getChar()); break; + case Char: + KeyValue r = ComposeKey.apply(ComposeKeyData.fn, k.getChar()); + return (r != null) ? r : k; case Keyevent: name = apply_fn_keyevent(k.getKeyevent()); break; case Event: name = apply_fn_event(k.getEvent()); break; case Placeholder: name = apply_fn_placeholder(k.getPlaceholder()); break; @@ -264,193 +266,6 @@ public final class KeyModifier } } - /** Return the name of modified key, or [null]. */ - private static String apply_fn_char(char c) - { - switch (c) - { - case '1': return "f1"; - case '2': return "f2"; - case '3': return "f3"; - case '4': return "f4"; - case '5': return "f5"; - case '6': return "f6"; - case '7': return "f7"; - case '8': return "f8"; - case '9': return "f9"; - case '0': return "f10"; - case '<': return "«"; - case '>': return "»"; - case '{': return "‹"; - case '}': return "›"; - case '[': return "‘"; - case ']': return "’"; - case '(': return "“"; - case ')': return "”"; - case '\'': return "‚"; - case '"': return "„"; - case '-': return "–"; - case '_': return "—"; - case '^': return "¬"; - case '%': return "‰"; - case '=': return "≈"; - case 'u': return "µ"; - case 'a': return "æ"; - case 'o': return "œ"; - case '*': return "°"; - case '.': return "…"; - case ',': return "·"; - case '!': return "¡"; - case '?': return "¿"; - case '|': return "¦"; - case '§': return "¶"; - case '†': return "‡"; - case '×': return "∙"; - case ' ': return "nbsp"; - // arrows - case '↖': return "⇖"; - case '↑': return "⇑"; - case '↗': return "⇗"; - case '←': return "⇐"; - case '→': return "⇒"; - case '↙': return "⇙"; - case '↓': return "⇓"; - case '↘': return "⇘"; - case '↔': return "⇔"; - case '↕': return "⇕"; - // Currency symbols - case 'e': return "€"; - case 'l': return "£"; - case 'r': return "₹"; - case 'y': return "¥"; - case 'c': return "¢"; - case 'p': return "₽"; - case 'b': return "₱"; - case 'h': return "₴"; - case 'z': return "₿"; - case '€': case '£': return "removed"; // Avoid showing these twice - // alternating greek letters - case 'π': return "ϖ"; - case 'θ': return "ϑ"; - case 'Θ': return "ϴ"; - case 'ε': return "ϵ"; - case 'β': return "ϐ"; - case 'ρ': return "ϱ"; - case 'σ': return "ς"; - case 'γ': return "ɣ"; - case 'φ': return "ϕ"; - case 'υ': return "ϒ"; - case 'κ': return "ϰ"; - // alternating math characters - case '∪': return "⋃"; - case '∩': return "⋂"; - case '∃': return "∄"; - case '∈': return "∉"; - case '∫': return "∮"; - case 'Π': return "∏"; - case 'Σ': return "∑"; - case '∨': return "⋁"; - case '∧': return "⋀"; - case '⊷': return "⊶"; - case '⊂': return "⊆"; - case '⊃': return "⊇"; - case '±': return "∓"; - // hebrew niqqud - case 'ק': return "qamats"; // kamatz - case 'ר': return "hataf_qamats"; // reduced kamatz - case 'ו': return "holam"; - case 'ם': return "rafe"; - case 'פ': return "patah"; // patach - case 'ש': return "sheva"; - case 'ד': return "dagesh"; // or mapiq - case 'ח': return "hiriq"; - case 'ף': return "hataf_patah"; // reduced patach - case 'ז': return "qubuts"; // kubuts - case 'ס': return "segol"; - case 'ב': return "hataf_segol"; // reduced segol - case 'צ': return "tsere"; - // Devanagari symbols - case 'ए': return "ऍ"; - case 'े': return "ॅ"; - case 'ऐ': return "ऎ"; - case 'ै': return "ॆ"; - case 'ऋ': return "ॠ"; - case 'ृ': return "ॄ"; - case 'ळ': return "ऴ"; - case 'र': return "ऱ"; - case 'क': return "क़"; - case 'ख': return "ख़"; - case 'ग': return "ग़"; - case 'घ': return "ॻ"; - case 'ढ': return "ढ़"; - case 'न': return "ऩ"; - case 'ड': return "ड़"; - case 'ट': return "ॸ"; - case 'ण': return "ॾ"; - case 'फ': return "फ़"; - case 'ऌ': return "ॡ"; - case 'ॢ': return "ॣ"; - case 'औ': return "ॵ"; - case 'ौ': return "ॏ"; - case 'ओ': return "ऒ"; - case 'ो': return "ॊ"; - case 'च': return "ॼ"; - case 'ज': return "ज़"; - case 'ब': return "ॿ"; - case 'व': return "ॺ"; - case 'य': return "य़"; - case 'अ': return "ॲ"; - case 'आ': return "ऑ"; - case 'ा': return "ॉ"; - case 'झ': return "ॹ"; - case 'ई': return "ॴ"; - case 'ी': return "ऻ"; - case 'इ': return "ॳ"; - case 'ि': return "ऺ"; - case 'उ': return "ॶ"; - case 'ऊ': return "ॷ"; - case 'ु': return "ऄ"; - case 'ष': return "क्ष"; - case 'थ': return "त्र"; - case 'द': return "द्र"; - case 'प': return "प्र"; - case 'श': return "श्र"; - case 'छ': return "श्च"; - case 'ँ': return "ऀ"; - case '₹': return "₨"; - case 'ॖ': return "ॗ"; - case '॓': return "॔"; - case '॰': return "ॱ"; - case '।': return "॥"; - case 'ं': return "ॕ"; - case '़': return "ॎ"; - case 'ऽ': return "ॽ"; - // Persian numbers - case '۱': return "f1"; - case '۲': return "f2"; - case '۳': return "f3"; - case '۴': return "f4"; - case '۵': return "f5"; - case '۶': return "f6"; - case '۷': return "f7"; - case '۸': return "f8"; - case '۹': return "f9"; - case '۰': return "f10"; - // Arabic numbers - case '١': return "f1"; - case '٢': return "f2"; - case '٣': return "f3"; - case '٤': return "f4"; - case '٥': return "f5"; - case '٦': return "f6"; - case '٧': return "f7"; - case '٨': return "f8"; - case '٩': return "f9"; - case '٠': return "f10"; - default: return null; - } - } - private static KeyValue apply_ctrl(KeyValue k) { if (_modmap != null)