mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-06-20 17:57:52 +02:00
Define the Shift modifier using the compose mechanism
This commit is contained in:
parent
b600332595
commit
a8e331c322
52
srcs/compose/shift.json
Normal file
52
srcs/compose/shift.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"↙": "⇙",
|
||||||
|
"↓": "⇓",
|
||||||
|
"↘": "⇘",
|
||||||
|
"←": "⇐",
|
||||||
|
"→": "⇒",
|
||||||
|
"↖": "⇖",
|
||||||
|
"↑": "⇑",
|
||||||
|
"↗": "⇗",
|
||||||
|
"└": "╚",
|
||||||
|
"┴": "╩",
|
||||||
|
"┘": "╝",
|
||||||
|
"├": "╠",
|
||||||
|
"┼": "╬",
|
||||||
|
"┤": "╣",
|
||||||
|
"┌": "╔",
|
||||||
|
"┬": "╦",
|
||||||
|
"┐": "╗",
|
||||||
|
"─": "═",
|
||||||
|
"│": "║",
|
||||||
|
"ß": "ẞ",
|
||||||
|
// In Turkish, upper case of 'iı' is 'İI' but Java's toUpperCase will
|
||||||
|
// return 'II'. To make 'İ' accessible, make it the shift of 'ı'. This
|
||||||
|
// has the inconvenient of swapping i and ı on the keyboard.
|
||||||
|
"ı": "İ",
|
||||||
|
"₹": "₨",
|
||||||
|
// Gujarati alternate characters
|
||||||
|
"અ": "આ",
|
||||||
|
"ઇ": "ઈ",
|
||||||
|
"િ": "ી",
|
||||||
|
"ઉ": "ઊ",
|
||||||
|
"ુ": "ૂ",
|
||||||
|
"એ": "ઐ",
|
||||||
|
"ે": "ૈ",
|
||||||
|
"ઓ": "ઔ",
|
||||||
|
"ો": "ૌ",
|
||||||
|
"ક": "ખ",
|
||||||
|
"ગ": "ઘ",
|
||||||
|
"ચ": "છ",
|
||||||
|
"જ": "ઝ",
|
||||||
|
"ટ": "ઠ",
|
||||||
|
"ડ": "ઢ",
|
||||||
|
"ન": "ણ",
|
||||||
|
"ત": "થ",
|
||||||
|
"દ": "ધ",
|
||||||
|
"પ": "ફ",
|
||||||
|
"બ": "ભ",
|
||||||
|
"મ": "ં",
|
||||||
|
"લ": "ળ",
|
||||||
|
"સ": "શ",
|
||||||
|
"હ": "ઃ"
|
||||||
|
}
|
@ -115,7 +115,8 @@ public final class ComposeKeyData
|
|||||||
"\u0062\u0075\u0074\u0073\uFFFF\u0068\u0069\u0072\u0069\u0071\uFFFF\u0072\u0061\u0066\u0065\uFFFF\u0073\u0065\u0067\u006f\u006c\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0070\u0061\u0074\u0061\u0068\uFFFF\u0070\u0061\u0074\u0061\u0068\uFFFF\u0074\u0073\u0065\u0072\u0065\uFFFF\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0073\u0068\u0065\u0076\u0061\uFFFF" +
|
"\u0062\u0075\u0074\u0073\uFFFF\u0068\u0069\u0072\u0069\u0071\uFFFF\u0072\u0061\u0066\u0065\uFFFF\u0073\u0065\u0067\u006f\u006c\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0070\u0061\u0074\u0061\u0068\uFFFF\u0070\u0061\u0074\u0061\u0068\uFFFF\u0074\u0073\u0065\u0072\u0065\uFFFF\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0073\u0068\u0065\u0076\u0061\uFFFF" +
|
||||||
"\u0066\u0031\u0030\uFFFF\u0066\u0031\uFFFF\u0066\u0032\uFFFF\u0066\u0033\uFFFF\u0066\u0034\uFFFF\u0066\u0035\uFFFF\u0066\u0036\uFFFF\u0066\u0037\uFFFF\u0066\u0038\uFFFF\u0066\u0039\uFFFF\u0066\u0031\u0030\uFFFF\u0066\u0031\uFFFF\u0066\u0032\uFFFF\u0066\u0033\uFFFF\u0066\u0034\uFFFF\u0066\u0035\uFFFF\u0066\u0036\uFFFF\u0066\u0037\uFFFF\u0066\u0038\uFFFF\u0066\u0039\u0900\u0955\u0972\u0911\u0973\u0974\u0976\u0977\u0960\u0961\u090d" +
|
"\u0066\u0031\u0030\uFFFF\u0066\u0031\uFFFF\u0066\u0032\uFFFF\u0066\u0033\uFFFF\u0066\u0034\uFFFF\u0066\u0035\uFFFF\u0066\u0036\uFFFF\u0066\u0037\uFFFF\u0066\u0038\uFFFF\u0066\u0039\uFFFF\u0066\u0031\u0030\uFFFF\u0066\u0031\uFFFF\u0066\u0032\uFFFF\u0066\u0033\uFFFF\u0066\u0034\uFFFF\u0066\u0035\uFFFF\u0066\u0036\uFFFF\u0066\u0037\uFFFF\u0066\u0038\uFFFF\u0066\u0039\u0900\u0955\u0972\u0911\u0973\u0974\u0976\u0977\u0960\u0961\u090d" +
|
||||||
"\u090e\u0912\u0975\u0958\u0959\u095a\u097b\u097c\uFFFF\u0936\u094d\u091a\u095b\u0979\u0978\u095c\u095d\u097e\uFFFF\u0924\u094d\u0930\uFFFF\u0926\u094d\u0930\u0929\uFFFF\u092a\u094d\u0930\u095e\u097f\u095f\u0931\u0934\u097a\uFFFF\u0936\u094d\u0930\uFFFF\u0915\u094d\u0937\u094e\u097d\u0949\u093a\u093b\u0904\u0944\u0945\u0946\u094a\u094f\u0954\u0957\u0963\u0965\u0971\u2021\uFFFF\u0072\u0065\u006d\u006f\u0076\u0065\u0064\u20a8\u21d0" +
|
"\u090e\u0912\u0975\u0958\u0959\u095a\u097b\u097c\uFFFF\u0936\u094d\u091a\u095b\u0979\u0978\u095c\u095d\u097e\uFFFF\u0924\u094d\u0930\uFFFF\u0926\u094d\u0930\u0929\uFFFF\u092a\u094d\u0930\u095e\u097f\u095f\u0931\u0934\u097a\uFFFF\u0936\u094d\u0930\uFFFF\u0915\u094d\u0937\u094e\u097d\u0949\u093a\u093b\u0904\u0944\u0945\u0946\u094a\u094f\u0954\u0957\u0963\u0965\u0971\u2021\uFFFF\u0072\u0065\u006d\u006f\u0076\u0065\u0064\u20a8\u21d0" +
|
||||||
"\u21d1\u21d2\u21d3\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u2204\u2209\u22c0\u22c1\u22c2\u22c3\u222e\u2286\u2287\u22b6").toCharArray();
|
"\u21d1\u21d2\u21d3\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u2204\u2209\u22c0\u22c1\u22c2\u22c3\u222e\u2286\u2287\u22b6\u0000\u00df\u0131\u0a85\u0a87\u0a89\u0a8f\u0a93\u0a95\u0a97\u0a9a\u0a9c\u0a9f\u0aa1\u0aa4\u0aa6\u0aa8\u0aaa\u0aac\u0aae\u0ab2\u0ab8\u0ab9\u0abf\u0ac1\u0ac7\u0acb\u20b9\u2190\u2191\u2192\u2193\u2196\u2197\u2198\u2199\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c\u2534\u253c\u1e9e\u0130\u0a86\u0a88\u0a8a\u0a90" +
|
||||||
|
"\u0a94\u0a96\u0a98\u0a9b\u0a9d\u0aa0\u0aa2\u0aa5\u0aa7\u0aa3\u0aab\u0aad\u0a82\u0ab3\u0ab6\u0a83\u0ac0\u0ac2\u0ac8\u0acc\u20a8\u21d0\u21d1\u21d2\u21d3\u21d6\u21d7\u21d8\u21d9\u2550\u2551\u2554\u2557\u255a\u255d\u2560\u2563\u2566\u2569\u256c").toCharArray();
|
||||||
|
|
||||||
public static final char[] edges =
|
public static final char[] edges =
|
||||||
("\u0001\u0018\u0019\u001a\u001b\u001c\u001d\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002c\u002f\u0032\u0035\u0038\u003b\u003e\u0041\u0001\u0001\u0001\u0001\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u000c\u0050\u0051\u0052" +
|
("\u0001\u0018\u0019\u001a\u001b\u001c\u001d\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002c\u002f\u0032\u0035\u0038\u003b\u003e\u0041\u0001\u0001\u0001\u0001\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u000c\u0050\u0051\u0052" +
|
||||||
@ -228,7 +229,8 @@ public final class ComposeKeyData
|
|||||||
"\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0005\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000\u0000\u0000\u0000\r\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0004" +
|
"\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0005\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000\u0000\u0000\u0000\r\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0004" +
|
||||||
"\u0000\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0004\u0000\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" +
|
"\u0000\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0004\u0000\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" +
|
||||||
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0001" +
|
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0001" +
|
||||||
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001").toCharArray();
|
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u002f\u1f32\u1f33\u1f34\u1f35\u1f36\u1f37\u1f38\u1f39\u1f3a\u1f3b\u1f3c\u1f3d\u1f3e\u1f3f\u1f40\u1f41\u1f42\u1f43\u1f44\u1f45\u1f46\u1f47\u1f48\u1f49\u1f4a\u1f4b\u1f4c\u1f4d\u1f4e\u1f4f\u1f50\u1f51\u1f52\u1f53\u1f54\u1f55\u1f56\u1f57\u1f58\u1f59\u1f5a\u1f5b\u1f5c\u1f5d\u1f5e\u1f5f\u0001\u0001\u0001\u0001\u0001\u0001" +
|
||||||
|
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001").toCharArray();
|
||||||
|
|
||||||
public static final int accent_aigu = 1;
|
public static final int accent_aigu = 1;
|
||||||
public static final int accent_arrows = 68;
|
public static final int accent_arrows = 68;
|
||||||
@ -254,4 +256,5 @@ public final class ComposeKeyData
|
|||||||
public static final int accent_trema = 658;
|
public static final int accent_trema = 658;
|
||||||
public static final int compose = 671;
|
public static final int compose = 671;
|
||||||
public static final int fn = 7411;
|
public static final int fn = 7411;
|
||||||
|
public static final int shift = 7939;
|
||||||
}
|
}
|
||||||
|
@ -182,9 +182,10 @@ public final class KeyModifier
|
|||||||
{
|
{
|
||||||
case Char:
|
case Char:
|
||||||
char kc = k.getChar();
|
char kc = k.getChar();
|
||||||
char c = map_char_shift(kc);
|
KeyValue r = ComposeKey.apply(ComposeKeyData.shift, kc);
|
||||||
if (kc == c)
|
if (r != null)
|
||||||
c = Character.toUpperCase(kc);
|
return r;
|
||||||
|
char c = Character.toUpperCase(kc);
|
||||||
return (kc == c) ? k : k.withChar(c);
|
return (kc == c) ? k : k.withChar(c);
|
||||||
case String:
|
case String:
|
||||||
String s = Utils.capitalize_string(k.getString());
|
String s = Utils.capitalize_string(k.getString());
|
||||||
@ -366,64 +367,6 @@ public final class KeyModifier
|
|||||||
public String apply(char _c) { return null; }
|
public String apply(char _c) { return null; }
|
||||||
};
|
};
|
||||||
|
|
||||||
private static char map_char_shift(char c)
|
|
||||||
{
|
|
||||||
switch (c)
|
|
||||||
{
|
|
||||||
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 'ẞ';
|
|
||||||
/* In Turkish, upper case of 'iı' is 'İI' but Java's toUpperCase will
|
|
||||||
return 'II'. To make 'İ' accessible, make it the shift of 'ı'. This
|
|
||||||
has the inconvenient of swapping i and ı on the keyboard. */
|
|
||||||
case 'ı': return 'İ';
|
|
||||||
case '₹': return '₨';
|
|
||||||
// Gujarati alternate 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 'ઝ';
|
|
||||||
case 'ટ': return 'ઠ';
|
|
||||||
case 'ડ': return 'ઢ';
|
|
||||||
case 'ન': return 'ણ';
|
|
||||||
case 'ત': return 'થ';
|
|
||||||
case 'દ': return 'ધ';
|
|
||||||
case 'પ': return 'ફ';
|
|
||||||
case 'બ': return 'ભ';
|
|
||||||
case 'મ': return 'ં';
|
|
||||||
case 'લ': return 'ળ';
|
|
||||||
case 'સ': return 'શ';
|
|
||||||
case 'હ': return 'ઃ';
|
|
||||||
default: return c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final Map_char map_char_arrow_right =
|
private static final Map_char map_char_arrow_right =
|
||||||
new Map_char() {
|
new Map_char() {
|
||||||
public String apply(char c)
|
public String apply(char c)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user