Skip to content

Instantly share code, notes, and snippets.

@kergalym
Last active September 23, 2025 19:09
Show Gist options
  • Select an option

  • Save kergalym/4dbd1edbadbd809b6be36f16c94b7b98 to your computer and use it in GitHub Desktop.

Select an option

Save kergalym/4dbd1edbadbd809b6be36f16c94b7b98 to your computer and use it in GitHub Desktop.
Kazakh Latin Alphabet 2021 support for Linux (xkeyboard-config)
--- a/symbols/kz 2025-06-08 04:40:22.000000000 +0500
+++ b/symbols/kz 2025-09-23 23:11:38.810405479 +0500
@@ -245,7 +245,7 @@
include "level3(ralt_switch)"
};
-// Kazakh Latin (based on Kazakh alphabet version of 2018)
+// Kazakh Latin (based on Kazakh alphabet version of 2021)
// levels 3 and 4 are non-standard extensions
partial alphanumeric_keys
xkb_symbols "latin" {
@@ -256,26 +256,20 @@
key.type[group1] = "FOUR_LEVEL";
- key <TLDE> { [ parenleft, parenright ] };
- key <AE01> { [ quotedbl, exclam ] };
- key <AE06> { [ comma, semicolon ] };
- key <AE07> { [ period, colon ] };
- key <BKSL> { [ backslash, slash ] };
- key <AB10> { [ numerosign, question ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
+ 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.type[group1] = "ALPHABETIC";
- key <AE02> { [ aacute, Aacute ] };
- key <AE03> { [ iacute, Iacute ] };
- key <AE04> { [ nacute, Nacute ] };
- key <AE05> { [ U01F5, U01F4 ] }; // gG with acute
- key <AE08> { [ uacute, Uacute ] };
- key <AE09> { [ yacute, Yacute ] };
- key <AE10> { [ oacute, Oacute ] };
- key <AE11> { [ sacute, Sacute ] };
- key <AE12> { [ cacute, Cacute ] };
-
+ // Row 1
key <AD01> { [ q, Q ] };
key <AD02> { [ w, W ] };
key <AD03> { [ e, E ] };
@@ -286,6 +280,10 @@
key <AD08> { [ i, I ] };
key <AD09> { [ o, O ] };
key <AD10> { [ p, P ] };
+ key <AD11> { [ U00F6, U00D6 ] }; // ö Ö (Ө)
+ key <AD12> { [ U00F1, U00D1 ] }; // ñ Ñ (Ң)
+
+ // Row 2
key <AC01> { [ a, A ] };
key <AC02> { [ s, S ] };
key <AC03> { [ d, D ] };
@@ -295,6 +293,11 @@
key <AC07> { [ j, J ] };
key <AC08> { [ k, K ] };
key <AC09> { [ l, L ] };
+ key <AC10> { [ U015F, U015E ] }; // ş Ş (Ш)
+ key <AC11> { [ i, I ] }; // i (І)
+ key <AC12> { [ U00FC, U00DC ] }; // ü Ü (Ү)
+
+ // Row 3
key <AB01> { [ z, Z ] };
key <AB02> { [ x, X ] };
key <AB03> { [ c, C ] };
@@ -302,4 +305,7 @@
key <AB05> { [ b, B ] };
key <AB06> { [ n, N ] };
key <AB07> { [ m, M ] };
+ key <AB08> { [ U011F, U011E ] }; // ğ Ğ (Ғ)
+ key <AB09> { [ U016B, U016A ] }; // ū Ū (Ұ)
+ key <AB10> { [ U00E4, U00C4 ] }; // ä Ä (Ә)
};
@kergalym
Copy link
Author

Key layout is made based on:

image

Keyboard design for the Latin-based Kazakh alphabet. Photo credit: primeminister.kz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment