How to add a new keyboard layout (Custom keyboard layout definition)
Solution 1
Creating custom keyboard layout
For example, I'm looking to add a new modified English (international AltGr dead keys) US layout with swapped r
,R
& t
,T
. I will name it XY swapped:RT English (international AltGr dead keys).
-
Create new symbols file:
sudo nano /usr/share/X11/xkb/symbols/xy
default partial alphanumeric_keys xkb_symbols "basic" { name[Group1]= "XY swapped:RT English (international AltGr dead keys)"; include "us(altgr-intl)" // my custom changes: key <AD04> { [ t, T, ediaeresis, Ediaeresis ] }; key <AD05> { [ r, R, thorn, THORN ] }; include "level3(ralt_switch)" };
include "us(altgr-intl)"
means it inherits all key from that layout only key overridden here.You may use Keyboard Layout Editor which is a GUI program that helps create or edit XKB keyboard layouts. Thanks to @Glutanimate
-
Add the new layout declaration to
/usr/share/X11/xkb/rules/evdev.xml
(copy & modifyus
layout section)Reference: Make new variant keyboard layout available in Settings?
sudo gedit /usr/share/X11/xkb/rules/evdev.xml
... <layout> <configItem> <name>xy</name> <shortDescription>en</shortDescription> <description>XY swapped:RT English (international AltGr dead keys)</description> <languageList> <iso639Id>eng</iso639Id> <iso639Id>fra</iso639Id> <iso639Id>ger</iso639Id> </languageList> </configItem> <variantList> </variantList> </layout> ...
-
Delete xkb cache.
sudo rm /var/lib/xkb/*.xkm
Notes:
To load changes to the layouts menu simply restart gnome-keyboard-preferences; relaunching the window manager should not be necessary.
There is a change in Ubuntu version 13.10 which causes the keyboard settings cache to not refresh after files in "/usr/share/X11/xkb/symbols" are modified. It looks like changes just don't get applied. To force the cache refreshing a one should delete *.xkm files from "/var/lib/xkb".
Reference: Howto: Custom keyboard layout definitions
or
sudo dpkg-reconfigure xkb-data
Reply to fix OP modifications
-
(Update #1 wrong parent layout) You have modified
xkb_symbols "pes_part_basic"
which is inirwinxp
file: that's ok.but
xkb_symbols "pes"
inirwinxp
file still:include "ir(pes_part_basic)"
which should be:
include "irwinxp(pes_part_basic)"
-
(Update #2 custom icon) If
<shortDescription>en</shortDescription>
changed to<shortDescription>xy</shortDescription>
. So the new layout will distinct fromEn
and it will appear asXy
.Most probably there will be no icon for it in
ubuntu-mono
. Then the indicator will dynamically generate new one which may not follow current theme.-
Copy any layout icons for dark/light mono themes:
sudo cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-En.svg /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-Xy.svg sudo cp /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-En.svg /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-Xy.svg
-
SVG files are just XML. Open then for editing and change text value from
En
toXy
:sudo nano /usr/share/icons/ubuntu-mono-dark/status/22/indicator-keyboard-Xy.svg sudo nano /usr/share/icons/ubuntu-mono-light/status/22/indicator-keyboard-Xy.svg
Example:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="22" xmlns="http://www.w3.org/2000/svg" version="1.1" height="22"> <defs> <mask id="m"> <rect y="0" x="0" style="fill:#fff" height="22" width="22"/> <text y="15.5" x="5" style="font-size:12;font-family:Ubuntu;font-weight:500;fill:black">Xy</text> </mask> </defs> <rect style="fill:#dfdbd2" mask="url(#m)" rx="2" height="20" width="20" y="1" x="1"/> </svg>
-
Update theme cache:
sudo update-icon-caches /usr/share/icons/ubuntu-mono-*/
-
Logout/login
-
Other Helpful References
- How to modify a keyboard layout in Linux (thanks to @Rmano)
- Building an XKB Keyboard (thanks to @Glutanimate)
Solution 2
I've been using variations of the above answer for a number of years but things started to break with newer versions of Ubuntu and possibly due to the switchover to Wayland so I looked for another way.
It appears a more convenient and cleaner (since it's all in userspace) way of specifying keyboard layout customisations has been introduced. This has been tested on 22.04 LTS and 21.10 under GNOME/Wayland.
Here's an example that remaps the PrtSc ("print screen") key as the "menu" key. I find this useful on my ThinkPad keyboard, as it has this less useful (IMHO) former key in lieu of the latter.
mkdir -p ~/.config/xkb/{symbols,rules}
cd ~/.config/xkb
cat > rules/evdev << EOF
! option = symbols
custom:prtscmenu = +custom(prtscmenu)
! include %S/evdev
EOF
cat > symbols/custom << EOF
partial modifier_keys
xkb_symbols "prtscmenu" {
key <PRSC> { [ Menu ] };
};
EOF
In the above, we've created a couple of files called rules/evdev
and symbols/custom
in the .config/xkb
directory of our home directory. Note: no need for sudo
or modifying any system file.
In those files, we've defined a custom option, which we've called prtscmenu
(you can use what you like, just replace all occurrences of the string), and finally we've used the "familiar" XKB syntax to override the <PRSC>
("print screen") key as desired. The syntax is the same as the one used in the accepted answer.
Finally, in order to apply this option (or disable it), on top of whichever keyboard happens to be loaded, one just needs to run:
# apply custom layout:
gsettings set org.gnome.desktop.input-sources xkb-options "['custom:prtscmenu']"
# disable custom layout:
gsettings set org.gnome.desktop.input-sources xkb-options "[]"
These can easily be set as aliases to make things even easier.
A couple more points:
- You can have multiple such customizations defined and apply them separately (the
xkb-option
GSettings above accepts an array) - Unlike the accepted answer, this won't generate a wholly separate layout. So let's say you switch between different layouts in your workflow - say US and your own locale - you could apply the same
prtscmenu
customization atop each layout.
Source & credit: https://who-t.blogspot.com/2020/02/user-specific-xkb-configuration-part-1.html
Related videos on Youtube
user69453
Updated on September 18, 2022Comments
-
user69453 over 1 year
I want to copy a keyboard layout in
/usr/share/X11/xkb/symbols/
and change it and then produce a new layout from it.How can I add a new keyboard layout (named e.g. "mylayout")?
Update #1:
Files I changed to add a new layout:
/usr/share/X11/xkb/symbols/irwinxp
(originally the same asir
):// Iranian keyboard layout //////////////////////////////////////// // Persian layout, // based on // Information Technology – Layout of Persian Letters and Symbols on Computer Keyboards // ISIRI 9147 – 1st Edition // Institute of Standards and Industrial Research of Iran // http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147 // http://behnam.esfahbod.info/standards/isiri-keyboard-9147.pdf // // Author: Behnam Esfahbod <[email protected]> // default partial alphanumeric_keys xkb_symbols "pes" { name[Group1]= "Persian"; include "ir(pes_part_basic)" include "ir(pes_part_ext)" include "nbsp(zwnj2nb3nnb4)" include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "pes_keypad" { name[Group1]= "Persian (with Persian Keypad)"; include "ir(pes_part_basic)" include "ir(pes_part_keypad)" include "nbsp(zwnj2nb3nnb4)" include "level3(ralt_switch)" }; partial hidden alphanumeric_keys xkb_symbols "pes_part_basic" { // Persian digits key <AE01> { [ Farsi_1, exclam, grave ] }; key <AE02> { [ Farsi_2, 0x100066c, at ] }; key <AE03> { [ Farsi_3, 0x100066b, numbersign ] }; key <AE04> { [ Farsi_4, 0x100fdfc, dollar ] }; key <AE05> { [ Farsi_5, 0x100066a, percent ] }; key <AE06> { [ Farsi_6, multiply, asciicircum ] }; key <AE07> { [ Farsi_7, Arabic_comma, ampersand ] }; key <AE08> { [ Farsi_8, asterisk, enfilledcircbullet ] }; key <AE09> { [ Farsi_9, parenright, 0x100200e ] }; key <AE10> { [ Farsi_0, parenleft, 0x100200f ] }; // Persian letters and symbols key <AD01> { [ Arabic_dad, Arabic_fathatan, degree ] }; // 2: Arabic_sukun key <AD02> { [ Arabic_sad, Arabic_dammatan, VoidSymbol ] }; // 2: Arabic_dammatan key <AD03> { [ Arabic_theh, Arabic_kasratan, 0x13a4 ] }; // 2: Arabic_kasratan key <AD04> { [ Arabic_qaf, Arabic_fathatan, VoidSymbol ] }; key <AD05> { [ Arabic_feh, Arabic_comma, VoidSymbol ] }; // 2: Arabic_damma key <AD06> { [ Arabic_ghain, Arabic_semicolon, VoidSymbol ] }; // 2: Arabic_kasra key <AD07> { [ Arabic_ain, Arabic_fatha, VoidSymbol ] }; key <AD08> { [ Arabic_heh, Arabic_hamza_above, 0x100202d ] }; // 2: Arabic_shadda key <AD09> { [ Arabic_khah, bracketright, 0x100202e ] }; key <AD10> { [ Arabic_hah, bracketleft, 0x100202c ] }; key <AD11> { [ Arabic_jeem, braceright, 0x100202a ] }; key <AD12> { [ Arabic_tcheh, braceleft, 0x100202b ] }; key <AC01> { [ Arabic_sheen, Arabic_fatha, VoidSymbol ] }; // 2: Arabic_hamzaonwaw key <AC02> { [ Arabic_seen, Arabic_damma, VoidSymbol ] }; // 2: Arabic_hamzaonyeh key <AC03> { [ Farsi_yeh, Arabic_kasra, Arabic_alefmaksura ] }; // 2: Arabic_yeh key <AC04> { [ Arabic_beh, Arabic_shadda, VoidSymbol ] }; // 1: Arabic_hamzaunderalef key <AC05> { [ Arabic_lam, 0x10006c0, VoidSymbol ] };// 2: Arabic_hamzaonalef key <AC06> { [ Arabic_alef, Arabic_maddaonalef, 0x1000671 ] }; key <AC07> { [ Arabic_teh, Arabic_tehmarbuta, VoidSymbol ] }; key <AC08> { [ Arabic_noon, guillemotright, 0x100fd3e ] }; key <AC09> { [ Arabic_meem, guillemotleft, 0x100fd3f ] }; key <AC10> { [ Arabic_keheh, colon, semicolon ] }; key <AC11> { [ Arabic_gaf, quotedbl, quotedbl ] }; // 2: Arabic_semicolon key <AB01> { [ Arabic_zah, Arabic_kaf, VoidSymbol ] }; key <AB02> { [ Arabic_tah, 0x1000653, VoidSymbol ] }; key <AB03> { [ Arabic_zain, Arabic_jeh, VoidSymbol ] }; key <AB04> { [ Arabic_ra, Arabic_hamzaonwaw ,0x1000656 ] }; // 2: Arabic_superscript_alef ٰ key <AB05> { [ Arabic_thal, 0x100200c, 0x100200d ] }; key <AB06> { [ Arabic_dal, Arabic_hamza_above, Arabic_hamza_below ] }; key <AB07> { [ Arabic_hamzaonyeh, Arabic_hamza, ellipsis ] }; // 1: Arabic_peh key <AB08> { [ Arabic_waw, greater, comma ] }; key <AB09> { [ period, less, apostrophe ] }; key <AB10> { [ slash, Arabic_question_mark, question ] }; key <TLDE> { [ 0x100200d, division, asciitilde ] }; key <AE11> { [ minus, Arabic_tatweel, underscore ] }; key <AE12> { [ equal, plus, 0x1002212 ] }; key <BKSL> { [ Arabic_peh, bar, 0x1002010 ] }; // 1: backslash }; partial hidden alphanumeric_keys xkb_symbols "pes_part_ext" { // Persian and ASCII digits key <AE01> { [ 0x10006f1, exclam, grave, 1 ] }; key <AE02> { [ 0x10006f2, 0x100066c, at, 2 ] }; key <AE03> { [ 0x10006f3, 0x100066b, numbersign, 3 ] }; key <AE04> { [ 0x10006f4, 0x100fdfc, dollar, 4 ] }; key <AE05> { [ 0x10006f5, 0x100066a, percent, 5 ] }; key <AE06> { [ 0x10006f6, multiply, asciicircum, 6 ] }; key <AE07> { [ 0x10006f7, Arabic_comma, ampersand, 7 ] }; key <AE08> { [ 0x10006f8, asterisk, enfilledcircbullet, 8 ] }; key <AE09> { [ 0x10006f9, parenright, 0x100200e, 9 ] }; key <AE10> { [ 0x10006f0, parenleft, 0x100200f, 0 ] }; }; partial hidden alphanumeric_keys xkb_symbols "pes_part_keypad" { // Persian digits and Mathematical operators key <KPDV> { [ division, XF86_Ungrab ] }; key <KPMU> { [ multiply, XF86_ClearGrab ] }; key <KPSU> { [ 0x1002212, XF86_Prev_VMode ] }; key <KPAD> { [ plus, XF86_Next_VMode ] }; key <KPEN> { [ KP_Enter ] }; key <KPEQ> { [ equal ] }; key <KP7> { [ KP_Home, 0x10006f7 ] }; key <KP8> { [ KP_Up, 0x10006f8 ] }; key <KP9> { [ KP_Prior, 0x10006f9 ] }; key <KP4> { [ KP_Left, 0x10006f4 ] }; key <KP5> { [ KP_Begin, 0x10006f5 ] }; key <KP6> { [ KP_Right, 0x10006f6 ] }; key <KP1> { [ KP_End, 0x10006f1 ] }; key <KP2> { [ KP_Down, 0x10006f2 ] }; key <KP3> { [ KP_Next, 0x10006f3 ] }; key <KP0> { [ KP_Insert, 0x10006f0 ] }; key <KPDL> { [ KP_Delete, 0x100066b ] }; }; //////////////////////////////////////// // Kurdish Layout partial alphanumeric_keys xkb_symbols "ku" { include "tr(ku)" name[Group1]= "Kurdish (Iran, Latin Q)"; }; partial alphanumeric_keys xkb_symbols "ku_f" { include "tr(ku_f)" name[Group1]= "Kurdish (Iran, F)"; }; partial alphanumeric_keys xkb_symbols "ku_alt" { include "tr(ku_alt)" name[Group1]= "Kurdish (Iran, Latin Alt-Q)"; }; //////////////////////////////////////// // Kurdish Soranî Bahdînî (Arabic) keyboard layout, // based on the Kurdî Soranî Bahdînî keyboard from KurdITGroup // which is based on National Iranian Keyboard Standard (ISIRI 2901:1994), // with additions. // // Copyright (C) 2006 Erdal Ronahî, published under the GPL v2 // // Special copyright note: author explicitly permitted to license this // layout under MIT/X11 license, for details see // https://bugs.freedesktop.org/show_bug.cgi?id=9541 // // Author: Erdal Ronahî <[email protected]> // // Kurdish Arabic-Latin Layout for Soranî partial alphanumeric_keys xkb_symbols "ku_ara" { name[Group1]= "Kurdish (Iran, Arabic-Latin)"; // Other 3-Level symbols key <TLDE> { [ 0x100200d, division, asciitilde ] }; key <BKSL> { [ backslash, bar, ccedilla, Ccedilla ] }; // Digits key <AE01> { [ 1, exclam, 0x10006f1, grave ] }; key <AE02> { [ 2, at, 0x10006f2, at ] }; key <AE03> { [ 3, numbersign, 0x10006f3, 0x100066b ] }; key <AE04> { [ 4, dollar, 0x10006f4, 0x100fdfc ] }; key <AE05> { [ 5, percent, 0x10006f5, 0x100066a ] }; key <AE06> { [ 6, asciicircum, 0x10006f6, multiply ] }; key <AE07> { [ 7, ampersand, 0x10006f7, Arabic_comma ] }; key <AE08> { [ 8, asterisk, 0x10006f8, enfilledcircbullet ] }; key <AE09> { [ 9, parenright, 0x10006f9, 0x100200e ] }; key <AE10> { [ 0, parenleft, 0x10006f0, 0x100200f ] }; key <AE11> { [ minus, Arabic_tatweel, underscore ] }; key <AE12> { [ equal, plus, 0x1002212 ] }; key <AD01> { [ Arabic_qaf, X, q, Q ] }; key <AD02> { [ Arabic_waw, X, w, W ] }; key <AD03> { [ 0x10006d5, Arabic_heh, e, E ] }; key <AD04> { [ Arabic_ra , 0x1000695, r, R ] }; key <AD05> { [ Arabic_teh, Arabic_tah, t, T ] }; key <AD06> { [ 0x10006cc, 0x10006ce, y, Y ] }; key <AD07> { [ Arabic_hamzaonyeh, Arabic_hamza, u, U ] }; key <AD08> { [ Arabic_hah, Arabic_ain, i, I ] }; key <AD09> { [ 0x10006c6, Arabic_hamzaonwaw, o, O ] }; key <AD10> { [ 0x100067e, Arabic_theh, p, P ] }; key <AD11> { [ bracketright, braceright, ucircumflex, Ucircumflex ] }; key <AD12> { [ bracketleft, braceleft, scedilla, Scedilla ] }; key <AC01> { [ Arabic_alef, Arabic_maddaonalef, a, A ] }; key <AC02> { [ Arabic_seen, Arabic_sheen, s, S ] }; key <AC03> { [ Arabic_dal, Arabic_thal, d, D ] }; key <AC04> { [ Arabic_feh, Arabic_hamzaunderalef, f, F ] }; key <AC05> { [ 0x10006af, Arabic_ghain, g, G ] }; key <AC06> { [ Arabic_heh, 0x100200c, h, H ] }; key <AC07> { [ 0x1000698, Arabic_hamzaonalef, j, J ] }; key <AC08> { [ 0x10006a9, Arabic_kaf, k, K ] }; key <AC09> { [ Arabic_lam, 0x10006b5, l, L ] }; key <AC10> { [ Arabic_semicolon, colon, ecircumflex, Ecircumflex ] }; key <AC11> { [ apostrophe, quotedbl, icircumflex, Icircumflex ] }; key <AB01> { [ Arabic_zain, Arabic_dad, z, Z ] }; key <AB02> { [ Arabic_khah, Arabic_sad, x, X ] }; key <AB03> { [ Arabic_jeem, 0x1000686, c, C ] }; key <AB04> { [ 0x10006a4, Arabic_zah, v, V ] }; key <AB05> { [ Arabic_beh, 0x1000649, b, B ] }; key <AB06> { [ Arabic_noon, Arabic_tehmarbuta, n, N ] }; key <AB07> { [ Arabic_meem, Arabic_tatweel, m, M ] }; key <AB08> { [ Arabic_comma, greater, comma ] }; key <AB09> { [ period, less, apostrophe ] }; key <AB10> { [ slash, Arabic_question_mark, question ] }; include "nbsp(zwnj2nb3)" include "level3(ralt_switch)" }; // EXTRAS: ///////////////////////////////////////////////////////////////////////////////// // // Generated keyboard layout file with the Keyboard Layout Editor. // For more about the software, see http://code.google.com/p/keyboardlayouteditor // // Version 0.2, fixed AD09. // // Layout by Ernst Tremel, http://ubuntuforums.org/showpost.php?p=9365469&postcount=32 // Creation of this file by Simos Xenitellis. partial alphanumeric_keys xkb_symbols "ave" { name[Group1] = "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 ] }; // 𐬄 𐬅 };
Part of
/usr/share/X11/xkb/rules/evdev.xml
containing all modifications:... <layout> <configItem> <name>ir</name> <shortDescription>fa</shortDescription> <description>Persian</description> <languageList> <iso639Id>per</iso639Id> </languageList> </configItem> <variantList> <variant> <configItem> <name>pes_keypad</name> <description>Persian (with Persian Keypad)</description> </configItem> </variant> <variant> <configItem> <name>ku</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, Latin Q)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> <variant> <configItem> <name>ku_f</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, F)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> <variant> <configItem> <name>ku_alt</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, Latin Alt-Q)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> <variant> <configItem> <name>ku_ara</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, Arabic-Latin)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> </variantList> </layout> <layout> <configItem> <name>irwinxp</name> <shortDescription>fa</shortDescription> <description>Persian-WinXP</description> <languageList> <iso639Id>per</iso639Id> </languageList> </configItem> <variantList> <variant> <configItem> <name>pes_keypad</name> <description>Persian (with Persian Keypad)</description> </configItem> </variant> <variant> <configItem> <name>ku</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, Latin Q)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> <variant> <configItem> <name>ku_f</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, F)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> <variant> <configItem> <name>ku_alt</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, Latin Alt-Q)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> <variant> <configItem> <name>ku_ara</name> <shortDescription>ku</shortDescription> <description>Kurdish (Iran, Arabic-Latin)</description> <languageList> <iso639Id>kur</iso639Id> </languageList> </configItem> </variant> </variantList> </layout> <layout> <configItem> <name>iq</name> ...
But now, with these changes the new
Persian-WinXP
layout does not obeyirwinxp
andirwinxp
is igored. Insteadir
controlsPersian-WinXP
.Update #2:
Unity has a problem with my new layout. The new layout icon is dark. But it works well.
Note: I use Ubuntu 14.04.
-
user69453 almost 10 yearsNow it is a more complete guide than help.ubuntu.com/community/…. Thanks. btw, I wonder if I need to add the new layout name to other files in
/usr/share/X11/xkb/rules/
. -
user.dz almost 10 yearsyep @user69453 , :). As it works no need. They seem having same information in different formats, most probably a migration process from one format to other, we may expect disappearance of some of them next releases. Not sure, if I get any reference for that I will add it.
-
Glutanimate almost 10 yearsGreat answer! Just a quick tip: You can use KeyboardLayoutEditor to quickly generate custom symbols files.
-
user69453 almost 10 yearsAdding a flag picture is also necessary for KDE. An option in KDE can show country flag instead of layout label. For my artificial layout label is shown instead of a flag.
-
Glutanimate over 9 yearsJust for completeness sake: Here's another very helpful resource about XKB configuration on Linux
-
Qi Yu almost 9 yearsHow would one go about changing <Super_R> to behave as <Menu>? My own solution was to create a new alias in
/usr/share/X11/xkb/keycodes/evdev
:alias <MENU> = <RWIN>;
But that means I do not have the option to switch it using layout as in your solution...(which I think is much better :) -
user.dz almost 9 years@eugenevd, it seems to me you are looking for to map just few keys. It is easier using
xmodmap
(see askubuntu.com/a/257497/44179 ) then creating new layout. -
Admin about 2 yearsusing the synthetic "MENU" key that you define above works great for picking AUTOCORRECT entries in Google Docs; however, it stopped working in GMAIL... do you know why? Also was wondering what the
alias <MENU> = COMP ;
line means in thexkb
file -
Admin about 2 yearsif we use your method of putting the xkb modifiers in
$HOME/.config
does that make the keyboard layout change if wesudo -s
to root in a shell? -
Admin about 2 years@Jonathan: configuration in
$HOME/.config
affects the user running the Desktop Environment (GNOME), which is typically the user you log in as. If you runsudo -s
in a terminal window, you'll be escalating your privileges asroot
in that window but the GNOME DE will still be running as your user account so the modification will continue to apply to the complete environment, regardless of your terminal window running aroot
session. It's probably not advisable to run the DE (ie: login) asroot
.