diff --git a/configs/keyboard.nix b/configs/keyboard.nix index d93fc5a..62fadb1 100644 --- a/configs/keyboard.nix +++ b/configs/keyboard.nix @@ -9,10 +9,10 @@ de = "T3"; gr = "polytonic"; ru = "phonetic"; - ara = "buckwalter"; # https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/2505a3ec2605ea7303bc6de68acf96578f0fd424/symbols/ara#L179 - cop = ""; - ave = ""; - got = ""; + arabic = ""; + coptic = ""; + avestan = ""; + gothic = ""; "in" = "san-kagapa"; il = "phonetic"; }; @@ -32,25 +32,20 @@ in { "${pkgs.xkeyboard_config}/etc/X11/xkb" (pkgs.linkFarm "custom-x-keyboards" [ { - name = "symbols/cop"; - path = pkgs.fetchurl { - url = "https://c.krebsco.de/cop"; - sha256 = "1l0h6aq536hyinrh0i0ia355y229bjrlibii0sya5bmqh46vycia"; - }; + name = "symbols/arabic"; + path = ../lib/keyboards/arabic; } { - name = "symbols/got"; - path = pkgs.fetchurl { - url = "https://c.krebsco.de/got"; - sha256 = "1i0jxghxi3rldlijw6gm2xawrv7f0pmm7a5cqbzzgjrg7ldk46gd"; - }; + name = "symbols/coptic"; + path = ../lib/keyboards/coptic; } { - name = "symbols/ave"; - path = pkgs.fetchurl { - url = "https://blog.simos.info/wp-content/uploads/2010/06/avestan.txt"; - sha256 = "192zmmm3gxyhim39dsax7r87gsay2w5v2xkhwmvsfipjb60hwp5g"; - }; + name = "symbols/gothic"; + path = ../lib/keyboards/gothic; + } + { + name = "symbols/avestan"; + path = ../lib/keyboards/avestan; } ]) ]; diff --git a/lib/keyboards/arabic b/lib/keyboards/arabic new file mode 100644 index 0000000..a68e292 --- /dev/null +++ b/lib/keyboards/arabic @@ -0,0 +1,23 @@ +// Arabic keyboard using Buckwalter transliteration +// http://www.qamus.org/transliteration.htm +// Martin Vidner +// stolen from https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/2505a3ec2605ea7303bc6de68acf96578f0fd424/symbols/ara#L179 + +// TODO 06CC ARABIC LETTER FARSI YEH + +default partial alphanumeric_keys +xkb_symbols "buckwalter" { + include "ara(buckwalter)" + name[Group1] = "Arabic (Buckwalter + Persian)"; + + key {[ 0x1000669, parenleft ] }; + key {[ 0x1000660, parenright ] }; + key {[ Arabic_tehmarbuta, 0x100067E ] }; // پ + key {[ 0x100200C, 0x1000671 ] }; // alif wasla, ZWNJ + key {[ 0x10006C0, Arabic_hamzaonyeh ] }; // ۀ + key {[ Arabic_ghain, 0x10006AF ] }; // گ + key {[ Arabic_jeem, 0x1000686 ] }; // چ + key {[ 0x10006A9, 0x1000698 ] }; // ک ژ + key {[ Arabic_theh, 0x10006A4 ] }; // ڤ + key {[ period, Arabic_hamzaonalef ] }; +}; diff --git a/lib/keyboards/avestan b/lib/keyboards/avestan new file mode 100644 index 0000000..c9fa3d3 --- /dev/null +++ b/lib/keyboards/avestan @@ -0,0 +1,60 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Generated keyboard layout file with the Keyboard Layout Editor. +// For more about the software, see http://code.google.com/p/keyboardlayouteditor +// +// Version 0.2, changed AD09. + +partial default alphanumeric_keys +xkb_symbols "avestan" +{ + name[Group1] = "Iran - Avestan"; + + key { [ U10B30, U10B32 ] }; // 𐬰 𐬲 + key { [ U10B11, U10B12 ] }; // 𐬑 𐬒 + key { [ U10B17, UE102 ] }; // 𐬗 î„‚ + key { [ U10B2C, U10B13 ] }; // 𐬬 𐬓 + key { [ U10B20, U10B21 ] }; // 𐬠𐬡 + key { [ U10B25, U10B27 ] }; // 𐬥 𐬧 + key { [ U10B28, U10B29 ] }; // 𐬨 𐬩 + key { [ U10B3C, U10B39 ] }; // 𐬼 𐬹 + key { [ U10B3E, U10B3D ] }; // 𐬾 𐬽 + key { [ U10B3F, periodcentered ] }; // 𐬿 · + + key { [ U10B00, U10B01 ] }; // 𐬀 𐬁 + key { [ U10B2F, U10B31 ] }; // 𐬯 𐬱 + key { [ U10B1B, U10B1C ] }; // 𐬛 𐬜 + key { [ U10B1F, U10B16 ] }; // 𐬟 𐬖 + key { [ U10B14, U10B15 ] }; // 𐬔 𐬕 + key { [ U10B35, UE100 ] }; // 𐬵 î„€ + key { [ U10B18, U10B24 ] }; // 𐬘 𐬤 + key { [ U10B10, UE101 ] }; // 𐬐  + key { [ U10B2E, UE103 ] }; // 𐬮  + key { [ U10B3B, U10B3A ] }; // 𐬻 𐬺 + key { [ U10B1D ] }; // 𐬝 + + key { [ U10B22, U10B23 ] }; // 𐬢 𐬣 + key { [ U10B33, U10B34 ] }; // 𐬳 𐬴 + key { [ U10B08, U10B09 ] }; // 𐬈 𐬉 + key { [ U10B2D, U10B26 ] }; // 𐬭 𐬦 + key { [ U10B19, U10B1A ] }; // 𐬙 𐬚 + key { [ U10B2B, U10B2A ] }; // 𐬫 𐬪 + key { [ U10B0E, U10B0F ] }; // 𐬎 𐬏 + key { [ U10B0C, U10B0D ] }; // 𐬌 𐬍 + key { [ U10B0A, U10B0B ] }; // 𐬊 𐬋 + key { [ U10B1E ] }; // 𐬞 + key { [ U10B06, U10B07 ] }; // 𐬆 𐬇 + key { [ U10B02, U10B03 ] }; // 𐬂 𐬃 + + key { [ U10B78 ] }; // 𐭸 + key { [ U10B79 ] }; // 𐭹 + key { [ U10B7A ] }; // 𐭺 + key { [ U10B7B ] }; // 𐭻 + key { [ U10B7C ] }; // 𐭼 + key { [ U10B7D ] }; // 𐭽 + key { [ U10B7E ] }; // 𐭾 + key { [ U10B7F ] }; // 𐭿 + + key { [ U10B04, U10B05 ] }; // 𐬄 𐬅 + key { [ U10B04, U10B05 ] }; // 𐬄 𐬅 +}; diff --git a/lib/keyboards/coptic b/lib/keyboards/coptic new file mode 100644 index 0000000..0015f50 --- /dev/null +++ b/lib/keyboards/coptic @@ -0,0 +1,79 @@ +// Coptic keyboard symbols for XKB and PC keyboard +// based on the mapping of logos +// (C) 2006 Moheb Mekhaiel +// +// Permission is granted to anyone to use, distribute and modify +// this file in any way, provided that the above copyright notice +// is left intact and the author of the modification summarizes +// the changes in this header. +// +// This file is distributed without any expressed or implied warranty. + + +partial default alphanumeric_keys +xkb_symbols "basic" { + name[Group1]= "Coptic"; + + key { [ U0308, U0311, U0361, U2CE5 ] }; + + key { type[Group1] = "FOUR_LEVEL", + [ 1, U0304, VoidSymbol, U2CE6 ] }; + key { [ 2, U0306, U2CFD, U2CE7 ] }; + key { [ 3, U0374, U2056, U2CE8 ] }; + key { [ 4, U0375, U2058, U2CE9 ] }; + key { [ 5, U0307, U2059, U2CEA ] }; + key { [ 6, U0323, U2C8B, U2C8A ] }; + key { [ 7, U2CE4 ] }; + key { [ 8, U002A, U2026 ] }; + key { [ 9, parenleft, U201C, plusminus ] }; + key { [ 0, parenright, U201D, degree ] }; + key { [ U00B7, underscore, U2013, U2014 ] }; + key { [ U2E17, U0305, U033F ] }; + key { [ U0300, U007C, backslash, U007C ] }; + + key { [ U2C91, U2C90 ] }; + key { [ U2CB1, U2CB0 ] }; + key { [ U2C89, U2C88 ] }; + key { [ U2CA3, U2CA2 ] }; + key { [ U2CA7, U2CA6, U03EF, U03EE ] }; + key { [ U2CAF, U2CAE ] }; + key { [ U2CA9, U2CA8 ] }; + key { [ U2C93, U2C92 ] }; + key { [ U2C9F, U2C9E ] }; + key { [ U2CA1, U2CA0 ] }; + key { [ bracketleft,braceleft, U2018 ] }; + key { [ bracketright,braceright,U2019 ] }; + + key { [ U2C81, U2C80 ] }; + key { [ U2CA5, U2CA4, U03E3, U03E2 ] }; + key { [ U2C87, U2C86, U03EF, U03EE ] }; + key { [ U2CAB, U2CAA, U03E5, U03E4 ] }; + key { [ U2C85, U2C84, U03EB, U03EA ] }; + key { [ U2C8F, U2C8E, U03E9, U03E8 ] }; + key { [ U03EB, U03EA, U03EB, U03EA ] }; + key { [ U2C95, U2C94, U03E7, U03E6 ] }; + key { [ U2C97, U2C96 ] }; + key { [ semicolon, colon, U2053, dead_doubleacute ] }; + key { [ apostrophe, U2CFF, U0022 ] }; + + key { [ U2C8D, U2C8C ] }; + key { [ U2C9D, U2C9C ] }; + key { [ U2CAD, U2CAC, U03ED, U03EC ] }; + key { [ U03E3, U03E2, U03E3, U03E2 ] }; + key { [ U2C83, U2C82 ] }; + key { [ U2C9B, U2C9A ] }; + key { [ U2C99, U2C98 ] }; + key { [ comma, less, U00AB, U2039 ] }; + key { [ period, greater, U00BB, U203A ] }; + key { [ U0301, U2CFE, slash, question ] }; + + key { type[Group1]="TWO_LEVEL", + [ ISO_Level3_Shift, Multi_key ] }; + + modifier_map Mod5 { }; + + //include "level3(ralt_switch_multikey)" + + // End alphanumeric section +}; + diff --git a/lib/keyboards/gothic b/lib/keyboards/gothic new file mode 100644 index 0000000..96eee45 --- /dev/null +++ b/lib/keyboards/gothic @@ -0,0 +1,69 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Generated keyboard layout file with the Keyboard Layout Editor. +// For more about the software, see http://code.google.com/p/keyboardlayouteditor +// +// Version 0.2, changed AD09. + +partial default alphanumeric_keys +xkb_symbols "Gothic" +{ + name[Group1] = "Gothic"; + + key { [ U10336, U10336 ] }; // Z: 𐌶 + key { [ U10347, U10347 ] }; // X: 𐍇 + key { [ U10343, U10343 ] }; // C: 𐍃 + key { [ U10338, U10338 ] }; // V: 𐌸 + key { [ U10331, U10331 ] }; // B: 𐌱 + key { [ U1033D, U10341 ] }; // n: 𐌽 N: 𐍁 + key { [ U1033C, U1033C ] }; // M: 𐌼 + key { [ U10B3C, U10B39 ] }; + key { [ U10349, U10349 ] }; + key { [ U10B3F, periodcentered ] }; + + key { [ U10330, U10330 ] }; // A: 𐌰 + key { [ U10343, U10343 ] }; // S: 𐍃 + key { [ U10333, U10338 ] }; // d: 𐌳 D: 𐌸 + key { [ U10346, U10346 ] }; // F: 𐍆 + key { [ U10332, U10332 ] }; // G: 𐌲 + key { [ U10337, U10337 ] }; // H: 𐌷 + key { [ U1033E, U1033E ] }; // J: 𐌾 + key { [ U1033A, U1033A ] }; // K: 𐌺 + key { [ U1033B, U1033B ] }; // L: 𐌻 + key { [ semicolon, colon ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ U10335, U10335 ] }; // Q: 𐌵 + key { [ U10345, U10345 ] }; // W: 𐍅 + key { [ U10334, U10334 ] }; // E: 𐌴 + key { [ U10342, U10342 ] }; // R: 𐍂 + key { [ U10344, U10338 ] }; // t: 𐍄 T: 𐌸 + key { [ U10348, U1034A ] }; // y: 𐍈 Y: 𐍊 + key { [ U1033F, U1033F ] }; // U: 𐌿 + key { [ U10339, U10339 ] }; // I: 𐌹 + key { [ U10349, U10349 ] }; // O: 𐍉 + key { [ U10340, U10340 ] }; // P: 𐍀 + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ grave, asciitilde ] }; + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, numbersign ] }; + key { [ 4, dollar ] }; + key { [ 5, percent ] }; + key { [ 6, asciicircum ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ minus, underscore ] }; + key { [ equal, plus ] }; + + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ U10B04, U10B05 ] }; + key { [ U10B04, U10B05 ] }; +};