1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00

feat(keyboards): add locally, patch persian/arabic keyboard

Fixes #51
This commit is contained in:
2024-02-13 23:26:32 +01:00
parent bb0dd24abd
commit d1624915c4
5 changed files with 245 additions and 19 deletions

View File

@@ -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;
}
])
];

23
lib/keyboards/arabic Normal file
View File

@@ -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 <AE09> {[ 0x1000669, parenleft ] };
key <AE10> {[ 0x1000660, parenright ] };
key <AD10> {[ Arabic_tehmarbuta, 0x100067E ] }; // پ
key <AD11> {[ 0x100200C, 0x1000671 ] }; // alif wasla, ZWNJ
key <AD12> {[ 0x10006C0, Arabic_hamzaonyeh ] }; // ۀ
key <AC05> {[ Arabic_ghain, 0x10006AF ] }; // گ
key <AC07> {[ Arabic_jeem, 0x1000686 ] }; // چ
key <AB03> {[ 0x10006A9, 0x1000698 ] }; // ک ژ
key <AB04> {[ Arabic_theh, 0x10006A4 ] }; // ڤ
key <AB09> {[ period, Arabic_hamzaonalef ] };
};

60
lib/keyboards/avestan Normal file
View File

@@ -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 <AB01> { [ U10B30, U10B32 ] }; // 𐬰 𐬲
key <AB02> { [ U10B11, U10B12 ] }; // 𐬑 𐬒
key <AB03> { [ U10B17, UE102 ] }; // 𐬗 
key <AB04> { [ U10B2C, U10B13 ] }; // 𐬬 𐬓
key <AB05> { [ U10B20, U10B21 ] }; // 𐬠𐬡
key <AB06> { [ U10B25, U10B27 ] }; // 𐬥 𐬧
key <AB07> { [ U10B28, U10B29 ] }; // 𐬨 𐬩
key <AB08> { [ U10B3C, U10B39 ] }; // 𐬼 𐬹
key <AB09> { [ U10B3E, U10B3D ] }; // 𐬾 𐬽
key <AB10> { [ U10B3F, periodcentered ] }; // 𐬿 ·
key <AC01> { [ U10B00, U10B01 ] }; // 𐬀 𐬁
key <AC02> { [ U10B2F, U10B31 ] }; // 𐬯 𐬱
key <AC03> { [ U10B1B, U10B1C ] }; // 𐬛 𐬜
key <AC04> { [ U10B1F, U10B16 ] }; // 𐬟 𐬖
key <AC05> { [ U10B14, U10B15 ] }; // 𐬔 𐬕
key <AC06> { [ U10B35, UE100 ] }; // 𐬵 
key <AC07> { [ U10B18, U10B24 ] }; // 𐬘 𐬤
key <AC08> { [ U10B10, UE101 ] }; // 𐬐 
key <AC09> { [ U10B2E, UE103 ] }; // 𐬮 
key <AC10> { [ U10B3B, U10B3A ] }; // 𐬻 𐬺
key <AC11> { [ U10B1D ] }; // 𐬝
key <AD01> { [ U10B22, U10B23 ] }; // 𐬢 𐬣
key <AD02> { [ U10B33, U10B34 ] }; // 𐬳 𐬴
key <AD03> { [ U10B08, U10B09 ] }; // 𐬈 𐬉
key <AD04> { [ U10B2D, U10B26 ] }; // 𐬭 𐬦
key <AD05> { [ U10B19, U10B1A ] }; // 𐬙 𐬚
key <AD06> { [ U10B2B, U10B2A ] }; // 𐬫 𐬪
key <AD07> { [ U10B0E, U10B0F ] }; // 𐬎 𐬏
key <AD08> { [ U10B0C, U10B0D ] }; // 𐬌 𐬍
key <AD09> { [ U10B0A, U10B0B ] }; // 𐬊 𐬋
key <AD10> { [ U10B1E ] }; // 𐬞
key <AD11> { [ U10B06, U10B07 ] }; // 𐬆 𐬇
key <AD12> { [ U10B02, U10B03 ] }; // 𐬂 𐬃
key <AE01> { [ U10B78 ] }; // 𐭸
key <AE02> { [ U10B79 ] }; // 𐭹
key <AE03> { [ U10B7A ] }; // 𐭺
key <AE04> { [ U10B7B ] }; // 𐭻
key <AE05> { [ U10B7C ] }; // 𐭼
key <AE06> { [ U10B7D ] }; // 𐭽
key <AE07> { [ U10B7E ] }; // 𐭾
key <AE08> { [ U10B7F ] }; // 𐭿
key <BKSL> { [ U10B04, U10B05 ] }; // 𐬄 𐬅
key <LSGT> { [ U10B04, U10B05 ] }; // 𐬄 𐬅
};

79
lib/keyboards/coptic Normal file
View File

@@ -0,0 +1,79 @@
// Coptic keyboard symbols for XKB and PC keyboard
// based on the mapping of logos
// (C) 2006 Moheb Mekhaiel <mohebm@gmx.de>
//
// 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 <TLDE> { [ U0308, U0311, U0361, U2CE5 ] };
key <AE01> { type[Group1] = "FOUR_LEVEL",
[ 1, U0304, VoidSymbol, U2CE6 ] };
key <AE02> { [ 2, U0306, U2CFD, U2CE7 ] };
key <AE03> { [ 3, U0374, U2056, U2CE8 ] };
key <AE04> { [ 4, U0375, U2058, U2CE9 ] };
key <AE05> { [ 5, U0307, U2059, U2CEA ] };
key <AE06> { [ 6, U0323, U2C8B, U2C8A ] };
key <AE07> { [ 7, U2CE4 ] };
key <AE08> { [ 8, U002A, U2026 ] };
key <AE09> { [ 9, parenleft, U201C, plusminus ] };
key <AE10> { [ 0, parenright, U201D, degree ] };
key <AE11> { [ U00B7, underscore, U2013, U2014 ] };
key <AE12> { [ U2E17, U0305, U033F ] };
key <BKSL> { [ U0300, U007C, backslash, U007C ] };
key <AD01> { [ U2C91, U2C90 ] };
key <AD02> { [ U2CB1, U2CB0 ] };
key <AD03> { [ U2C89, U2C88 ] };
key <AD04> { [ U2CA3, U2CA2 ] };
key <AD05> { [ U2CA7, U2CA6, U03EF, U03EE ] };
key <AD06> { [ U2CAF, U2CAE ] };
key <AD07> { [ U2CA9, U2CA8 ] };
key <AD08> { [ U2C93, U2C92 ] };
key <AD09> { [ U2C9F, U2C9E ] };
key <AD10> { [ U2CA1, U2CA0 ] };
key <AD11> { [ bracketleft,braceleft, U2018 ] };
key <AD12> { [ bracketright,braceright,U2019 ] };
key <AC01> { [ U2C81, U2C80 ] };
key <AC02> { [ U2CA5, U2CA4, U03E3, U03E2 ] };
key <AC03> { [ U2C87, U2C86, U03EF, U03EE ] };
key <AC04> { [ U2CAB, U2CAA, U03E5, U03E4 ] };
key <AC05> { [ U2C85, U2C84, U03EB, U03EA ] };
key <AC06> { [ U2C8F, U2C8E, U03E9, U03E8 ] };
key <AC07> { [ U03EB, U03EA, U03EB, U03EA ] };
key <AC08> { [ U2C95, U2C94, U03E7, U03E6 ] };
key <AC09> { [ U2C97, U2C96 ] };
key <AC10> { [ semicolon, colon, U2053, dead_doubleacute ] };
key <AC11> { [ apostrophe, U2CFF, U0022 ] };
key <AB01> { [ U2C8D, U2C8C ] };
key <AB02> { [ U2C9D, U2C9C ] };
key <AB03> { [ U2CAD, U2CAC, U03ED, U03EC ] };
key <AB04> { [ U03E3, U03E2, U03E3, U03E2 ] };
key <AB05> { [ U2C83, U2C82 ] };
key <AB06> { [ U2C9B, U2C9A ] };
key <AB07> { [ U2C99, U2C98 ] };
key <AB08> { [ comma, less, U00AB, U2039 ] };
key <AB09> { [ period, greater, U00BB, U203A ] };
key <AB10> { [ U0301, U2CFE, slash, question ] };
key <RALT> { type[Group1]="TWO_LEVEL",
[ ISO_Level3_Shift, Multi_key ] };
modifier_map Mod5 { <RALT> };
//include "level3(ralt_switch_multikey)"
// End alphanumeric section
};

69
lib/keyboards/gothic Normal file
View File

@@ -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 <AB01> { [ U10336, U10336 ] }; // Z: 𐌶
key <AB02> { [ U10347, U10347 ] }; // X: 𐍇
key <AB03> { [ U10343, U10343 ] }; // C: 𐍃
key <AB04> { [ U10338, U10338 ] }; // V: 𐌸
key <AB05> { [ U10331, U10331 ] }; // B: 𐌱
key <AB06> { [ U1033D, U10341 ] }; // n: 𐌽 N: 𐍁
key <AB07> { [ U1033C, U1033C ] }; // M: 𐌼
key <AB08> { [ U10B3C, U10B39 ] };
key <AB09> { [ U10349, U10349 ] };
key <AB10> { [ U10B3F, periodcentered ] };
key <AC01> { [ U10330, U10330 ] }; // A: 𐌰
key <AC02> { [ U10343, U10343 ] }; // S: 𐍃
key <AC03> { [ U10333, U10338 ] }; // d: 𐌳 D: 𐌸
key <AC04> { [ U10346, U10346 ] }; // F: 𐍆
key <AC05> { [ U10332, U10332 ] }; // G: 𐌲
key <AC06> { [ U10337, U10337 ] }; // H: 𐌷
key <AC07> { [ U1033E, U1033E ] }; // J: 𐌾
key <AC08> { [ U1033A, U1033A ] }; // K: 𐌺
key <AC09> { [ U1033B, U1033B ] }; // L: 𐌻
key <AC10> { [ semicolon, colon ] };
key <AC11> { [ apostrophe, quotedbl ] };
key <AD01> { [ U10335, U10335 ] }; // Q: 𐌵
key <AD02> { [ U10345, U10345 ] }; // W: 𐍅
key <AD03> { [ U10334, U10334 ] }; // E: 𐌴
key <AD04> { [ U10342, U10342 ] }; // R: 𐍂
key <AD05> { [ U10344, U10338 ] }; // t: 𐍄 T: 𐌸
key <AD06> { [ U10348, U1034A ] }; // y: 𐍈 Y: 𐍊
key <AD07> { [ U1033F, U1033F ] }; // U: 𐌿
key <AD08> { [ U10339, U10339 ] }; // I: 𐌹
key <AD09> { [ U10349, U10349 ] }; // O: 𐍉
key <AD10> { [ U10340, U10340 ] }; // P: 𐍀
key <AD11> { [ bracketleft, braceleft ] };
key <AD12> { [ bracketright, braceright ] };
key <TLDE> { [ grave, asciitilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ minus, underscore ] };
key <AE12> { [ equal, plus ] };
key <AB08> { [ comma, less ] };
key <AB09> { [ period, greater ] };
key <AB10> { [ slash, question ] };
key <BKSL> { [ U10B04, U10B05 ] };
key <LSGT> { [ U10B04, U10B05 ] };
};