summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Xconfig/parse.pm6
-rw-r--r--lib/Xconfig/various.pm1
-rw-r--r--lib/Xconfig/xfree.pm2
-rw-r--r--lib/keyboard.pm281
4 files changed, 147 insertions, 143 deletions
diff --git a/lib/Xconfig/parse.pm b/lib/Xconfig/parse.pm
index ae1f87a..338a3c7 100644
--- a/lib/Xconfig/parse.pm
+++ b/lib/Xconfig/parse.pm
@@ -141,19 +141,19 @@ sub _raw_to_string {
my %kind_names = (
Pointer => [ qw(Protocol Device Emulate3Buttons Emulate3Timeout EmulateWheel EmulateWheelButton) ],
Mouse => [ qw(DeviceName Protocol Device AlwaysCore Emulate3Buttons Emulate3Timeout EmulateWheel EmulateWheelButton) ], # Subsection in XInput
- Keyboard => [ qw(Protocol Driver XkbModel XkbLayout XkbDisable) ],
+ Keyboard => [ qw(Protocol Driver XkbModel XkbLayout XkbVariant XkbDisable) ],
Monitor => [ qw(Identifier VendorName ModelName HorizSync VertRefresh PreferredMode) ],
Device => [ qw(Identifier VendorName BoardName Chipset Driver VideoRam Screen BusID DPMS power_saver AccelMethod MonitorLayout TwinViewOrientation BIOSHotkeys RenderAccel SWCursor XaaNoOffscreenPixmaps) ],
Display => [ qw(Depth Modes Virtual) ], # Subsection in Device
Screen => [ qw(Identifier Driver Device Monitor DefaultDepth DefaultColorDepth) ],
Extensions => [ qw(Composite) ],
- InputDevice => [ qw(Identifier Driver Protocol Device Type Mode XkbModel XkbLayout XkbDisable Emulate3Buttons Emulate3Timeout EmulateWheel EmulateWheelButton) ],
+ InputDevice => [ qw(Identifier Driver Protocol Device Type Mode XkbModel XkbLayout XkbVariant XkbDisable Emulate3Buttons Emulate3Timeout EmulateWheel EmulateWheelButton) ],
WacomCursor => [ qw(Port) ], #-\
WacomStylus => [ qw(Port) ], #--> Port must be first
WacomEraser => [ qw(Port) ], #-/
ServerLayout => [ qw(Identifier) ],
);
-my @want_string = qw(Identifier DeviceName VendorName ModelName BoardName Driver Device Chipset Monitor Protocol XkbModel XkbLayout XkbOptions XkbCompat Load Disable ModulePath BusID PreferredMode);
+my @want_string = qw(Identifier DeviceName VendorName ModelName BoardName Driver Device Chipset Monitor Protocol XkbModel XkbLayout XkbVariant XkbOptions XkbCompat Load Disable ModulePath BusID PreferredMode);
%kind_names = map_each { lc $::a => [ map { lc } @$::b ] } %kind_names;
@want_string = map { lc } @want_string;
diff --git a/lib/Xconfig/various.pm b/lib/Xconfig/various.pm
index 6777cf2..c86439f 100644
--- a/lib/Xconfig/various.pm
+++ b/lib/Xconfig/various.pm
@@ -26,6 +26,7 @@ sub info {
$info .= N("Disable Ctrl-Alt-Backspace: %s\n", configure_ServerFlag($raw_X, 'DontZap') eq 'False' ? N("no") : N("yes"));
$info .= N("3D hardware acceleration: %s\n", translate(bool2yesno($card->{use_DRI_GLX} || $card->{DRI_GLX_SPECIAL})));
$info .= N("Keyboard layout: %s\n", $keyboard->{XkbLayout});
+ $info .= N("Keyboard variant: %s\n", $keyboard->{XkbVariant}) if $keyboard->{XkbVariant};
$info .= N("Mouse type: %s\n", $mouse->{Protocol});
foreach my $monitor (@monitors) {
$info .= N("Monitor: %s\n", $monitor->{ModelName});
diff --git a/lib/Xconfig/xfree.pm b/lib/Xconfig/xfree.pm
index 6b284aa..b3c4c2b 100644
--- a/lib/Xconfig/xfree.pm
+++ b/lib/Xconfig/xfree.pm
@@ -92,7 +92,7 @@ sub set_Revision {
################################################################################
# keyboard #####################################################################
################################################################################
-my @keyboard_fields = qw(XkbLayout XkbModel XkbDisable XkbOptions XkbCompat);
+my @keyboard_fields = qw(XkbLayout XkbVariant XkbModel XkbDisable XkbOptions XkbCompat);
sub get_keyboard {
my ($raw_X) = @_;
my $raw_kbd = _raw_get_keyboard($raw_X) or die "no keyboard section";
diff --git a/lib/keyboard.pm b/lib/keyboard.pm
index ed1e33b..aaaa76f 100644
--- a/lib/keyboard.pm
+++ b/lib/keyboard.pm
@@ -176,162 +176,162 @@ my @usb2keyboard =
);
#- key = extension for Xmodmap file, [0] = description of the keyboard,
-#- [1] = name for loadkeys, [2] = name for XKB, [3] = "1" if it is
-#- a multigroup layout (eg: one with latin/non-latin letters)
+#- [1] = name for loadkeys, [2] = layout for XKB, [3] = variant for XKB,
+#- [4] = "1" if it is a multigroup layout (eg: one with latin/non-latin letters)
#-
#- note: there seems to be a limit of 4 stackable xkb layouts
my %keyboards = (
arch() =~ /^sparc/ ? (
#- do we still support those? all but "se" and "us" have dissapeared from
#- symbols/sun/ directory in Xorg package.
- "cz" => [ N_("_: keyboard\nCzech (QWERTZ)"), "sunt5-cz-us", "cz", 0 ],
- "de" => [ N_("_: keyboard\nGerman"), "sunt5-de-latin1", "de", 0 ],
- "dvorak" => [ N_("_: keyboard\nDvorak"), "sundvorak", "dvorak",0 ],
- "es" => [ N_("_: keyboard\nSpanish"), "sunt5-es", "es", 0 ],
- "fi" => [ N_("_: keyboard\nFinnish"), "sunt5-fi-latin1", "fi", 0 ],
- "fr" => [ N_("_: keyboard\nFrench"), "sunt5-fr-latin1", "fr", 0 ],
- "gb" => [ N_("UK keyboard"), "sunt5-uk", "gb", 0 ],
- "no" => [ N_("_: keyboard\nNorwegian"), "sunt4-no-latin1", "no", 0 ],
- "pl" => [ N_("_: keyboard\nPolish"), "sun-pl-altgraph", "pl", 0 ],
- "ru" => [ N_("_: keyboard\nRussian"), "sunt5-ru", "ru", 1 ],
- "se" => [ N_("_: keyboard\nSwedish"), "sunt5-fi-latin1", "se", 0 ],
- "us" => [ N_("US keyboard"), "sunkeymap", "us", 0 ],
+ "cz" => [ N_("_: keyboard\nCzech (QWERTZ)"), "sunt5-cz-us", "cz", "", 0 ],
+ "de" => [ N_("_: keyboard\nGerman"), "sunt5-de-latin1", "de", "", 0 ],
+ "dvorak" => [ N_("_: keyboard\nDvorak"), "sundvorak", "dvorak", "", 0 ],
+ "es" => [ N_("_: keyboard\nSpanish"), "sunt5-es", "es", "", 0 ],
+ "fi" => [ N_("_: keyboard\nFinnish"), "sunt5-fi-latin1", "fi", "", 0 ],
+ "fr" => [ N_("_: keyboard\nFrench"), "sunt5-fr-latin1", "fr", "", 0 ],
+ "gb" => [ N_("UK keyboard"), "sunt5-uk", "gb", "", 0 ],
+ "no" => [ N_("_: keyboard\nNorwegian"), "sunt4-no-latin1", "no", "", 0 ],
+ "pl" => [ N_("_: keyboard\nPolish"), "sun-pl-altgraph", "pl", "", 0 ],
+ "ru" => [ N_("_: keyboard\nRussian"), "sunt5-ru", "ru", "", 1 ],
+ "se" => [ N_("_: keyboard\nSwedish"), "sunt5-fi-latin1", "se", "", 0 ],
+ "us" => [ N_("US keyboard"), "sunkeymap", "us", "", 0 ],
) : (
- "al" => [ N_("_: keyboard\nAlbanian"), "al", "al", 0 ],
- "am_old" => [ N_("_: keyboard\nArmenian (old)"), "am_old", "am(old)", 1 ],
- "am" => [ N_("_: keyboard\nArmenian (typewriter)"), "am-armscii8", "am", 1 ],
- "am_phonetic" => [ N_("_: keyboard\nArmenian (phonetic)"), "am_phonetic", "am(phonetic)",1 ],
- "ara" => [ N_("_: keyboard\nArabic"), "us", "ara(digits)", 1 ],
- "ast" => [ N_("_: keyboard\nAsturian"), "es-latin1", "es(ast)", 0 ],
- "az" => [ N_("_: keyboard\nAzerbaidjani (latin)"), "az", "az", 0 ],
- "be" => [ N_("_: keyboard\nBelgian"), "be2-latin1", "be", 0 ],
- "ben" => [ N_("_: keyboard\nBengali (Inscript-layout)"), "us", "in(ben)", 1 ],
- "ben2" => [ N_("_: keyboard\nBengali (Probhat)"), "us", "in(ben_probhat)", 1 ],
-"bg_phonetic" => [ N_("_: keyboard\nBulgarian (phonetic)"), "bg", "bg(phonetic)", 1 ],
- "bg" => [ N_("_: keyboard\nBulgarian (BDS)"), "bg_bds", "bg", 1 ],
- "br" => [ N_("_: keyboard\nBrazilian (ABNT-2)"), "br-abnt2", "br", 0 ],
- "bs" => [ N_("_: keyboard\nBosnian"), "croat", "ba", 0 ],
- "bt" => [ N_("_: keyboard\nDzongkha/Tibetan"), "us", "bt", 1 ],
- "by" => [ N_("_: keyboard\nBelarusian"), "by-cp1251", "by", 1 ],
- "ch_de" => [ N_("_: keyboard\nSwiss (German layout)"), "sg-latin1", "ch(de)", 0 ],
- "ch_fr" => [ N_("_: keyboard\nSwiss (French layout)"), "fr_CH-latin1", "ch(fr)", 0 ],
+ "al" => [ N_("_: keyboard\nAlbanian"), "al", "al", "", 0 ],
+ "am_old" => [ N_("_: keyboard\nArmenian (old)"), "am_old", "am", "old", 1 ],
+ "am" => [ N_("_: keyboard\nArmenian (typewriter)"), "am-armscii8", "am", "", 1 ],
+ "am_phonetic" => [ N_("_: keyboard\nArmenian (phonetic)"), "am_phonetic", "am", "phonetic", 1 ],
+ "ara" => [ N_("_: keyboard\nArabic"), "us", "ara", "digits", 1 ],
+ "ast" => [ N_("_: keyboard\nAsturian"), "es-latin1", "es", "ast", 0 ],
+ "az" => [ N_("_: keyboard\nAzerbaidjani (latin)"), "az", "az", "", 0 ],
+ "be" => [ N_("_: keyboard\nBelgian"), "be2-latin1", "be", "", 0 ],
+ "ben" => [ N_("_: keyboard\nBengali (Inscript-layout)"), "us", "in", "ben", 1 ],
+ "ben2" => [ N_("_: keyboard\nBengali (Probhat)"), "us", "in", "ben_probhat", 1 ],
+ "bg_phonetic" => [ N_("_: keyboard\nBulgarian (phonetic)"), "bg", "bg", "phonetic", 1 ],
+ "bg" => [ N_("_: keyboard\nBulgarian (BDS)"), "bg_bds", "bg", "", 1 ],
+ "br" => [ N_("_: keyboard\nBrazilian (ABNT-2)"), "br-abnt2", "br", "", 0 ],
+ "bs" => [ N_("_: keyboard\nBosnian"), "croat", "ba", "", 0 ],
+ "bt" => [ N_("_: keyboard\nDzongkha/Tibetan"), "us", "bt", "", 1 ],
+ "by" => [ N_("_: keyboard\nBelarusian"), "by-cp1251", "by", "", 1 ],
+ "ch_de" => [ N_("_: keyboard\nSwiss (German layout)"), "sg-latin1", "ch", "de", 0 ],
+ "ch_fr" => [ N_("_: keyboard\nSwiss (French layout)"), "fr_CH-latin1", "ch", "fr", 0 ],
# TODO: console map
- "chr" => [ N_("_: keyboard\nCherokee syllabics"), "us", "chr", 1 ],
- "cz" => [ N_("_: keyboard\nCzech (QWERTZ)"), "cz", "cz", 0 ],
- "cz_qwerty" => [ N_("_: keyboard\nCzech (QWERTY)"), "cz-lat2", "cz(qwerty)", 0 ],
- "de" => [ N_("_: keyboard\nGerman"), "de-latin1", "de", 0 ],
- "de_nodeadkeys" => [ N_("_: keyboard\nGerman (no dead keys)"), "de-latin1-nodeadkeys", "de(nodeadkeys)", 0 ],
- "dev" => [ N_("_: keyboard\nDevanagari"), "us", "in(deva)", 1 ],
- "dk" => [ N_("_: keyboard\nDanish"), "dk-latin1", "dk", 0 ],
- "dvorak" => [ N_("_: keyboard\nDvorak (US)"), "pc-dvorak-latin1", "us(dvorak)", 0 ],
- "dvorak_eo" => [ N_("_: keyboard\nDvorak (Esperanto)"), "eo-dvorak", "dvorak(eo)", 0 ],
- "dvorak_fr" => [ N_("_: keyboard\nDvorak (French)"), "fr-dvorak", "fr(dvorak)", 0 ],
- "dvorak_gb" => [ N_("_: keyboard\nDvorak (UK)"), "pc-dvorak-latin1", "gb(dvorak)", 0 ],
- "dvorak_no" => [ N_("_: keyboard\nDvorak (Norwegian)"), "no-dvorak", "no(dvorak)", 0 ],
- "dvorak_pl" => [ N_("_: keyboard\nDvorak (Polish)"), "pl-dvorak", "pl(dvorak)", 0 ],
- "dvorak_se" => [ N_("_: keyboard\nDvorak (Swedish)"), "se-dvorak", "se(dvorak)", 0 ],
- "ee" => [ N_("_: keyboard\nEstonian"), "ee-latin9", "ee", 0 ],
- "es" => [ N_("_: keyboard\nSpanish"), "es-latin1", "es", 0 ],
- "fi" => [ N_("_: keyboard\nFinnish"), "fi-latin1", "fi", 0 ],
- "fo" => [ N_("_: keyboard\nFaroese"), "is-latin1", "fo", 0 ],
- "fr" => [ N_("_: keyboard\nFrench"), "fr-latin1", "fr", 0 ],
- "fr_bepo" => [ N_("_: keyboard\nFrench (Bepo)"), "fr-bepo", "fr(bepo)", 0],
- "fr_bepo_latin9" => [ N_("_: keyboard\nFrench (Bepo, only latin-9)"), "fr-bepo-latin9", "fr(bepo_latin9)", 0],
- "gb" => [ N_("UK keyboard"), "uk-latin1", "gb", 0 ],
- "ge_ru" => [N_("_: keyboard\nGeorgian (\"Russian\" layout)"), "ge_ru-georgian_academy", "ge(ru)",1],
- "ge_la" => [N_("_: keyboard\nGeorgian (\"Latin\" layout)"), "ge_la-georgian_academy", "ge(la)",1],
- "gr" => [ N_("_: keyboard\nGreek"), "gr-8859_7", "gr(extended)", 1 ],
- "gr_pl" => [ N_("_: keyboard\nGreek (polytonic)"), "gr-8859_7", "gr(polytonic)", 1 ],
- "guj" => [ N_("_: keyboard\nGujarati"), "us", "in(guj)", 1 ],
- "gur" => [ N_("_: keyboard\nGurmukhi"), "us", "in(guru)", 1 ],
- "hr" => [ N_("_: keyboard\nCroatian"), "croat", "hr", 0 ],
- "hu" => [ N_("_: keyboard\nHungarian"), "hu-latin2", "hu", 0 ],
- "ie" => [ N_("_: keyboard\nIrish"), "uk-latin1", "ie", 0 ],
- "iku" => [ N_("_: keyboard\nInuktitut"), "us", "ca(ike)", 1 ],
- "il" => [ N_("_: keyboard\nIsraeli"), "il-8859_8", "il", 1 ],
- "il_phonetic" => [ N_("_: keyboard\nIsraeli (phonetic)"), "hebrew", "il(phonetic)", 1 ],
- "ir" => [ N_("_: keyboard\nIranian"), "ir-isiri_3342", "ir", 1 ],
- "is" => [ N_("_: keyboard\nIcelandic"), "is-latin1", "is", 0 ],
- "it" => [ N_("_: keyboard\nItalian"), "it-latin1", "it", 0 ],
+ "chr" => [ N_("_: keyboard\nCherokee syllabics"), "us", "chr", "", 1 ],
+ "cz" => [ N_("_: keyboard\nCzech (QWERTZ)"), "cz", "cz", "", 0 ],
+ "cz_qwerty" => [ N_("_: keyboard\nCzech (QWERTY)"), "cz-lat2", "cz", "qwerty", 0 ],
+ "de" => [ N_("_: keyboard\nGerman"), "de-latin1", "de", "", 0 ],
+ "de_nodeadkeys"=> [ N_("_: keyboard\nGerman (no dead keys)"), "de-latin1-nodeadkeys", "de", "nodeadkeys", 0 ],
+ "dev" => [ N_("_: keyboard\nDevanagari"), "us", "in", "deva", 1 ],
+ "dk" => [ N_("_: keyboard\nDanish"), "dk-latin1", "dk", "", 0 ],
+ "dvorak" => [ N_("_: keyboard\nDvorak (US)"), "pc-dvorak-latin1", "us", "dvorak", 0 ],
+ "dvorak_eo" => [ N_("_: keyboard\nDvorak (Esperanto)"), "eo-dvorak", "dvorak", "eo", 0 ],
+ "dvorak_fr" => [ N_("_: keyboard\nDvorak (French)"), "fr-dvorak", "fr", "dvorak", 0 ],
+ "dvorak_gb" => [ N_("_: keyboard\nDvorak (UK)"), "pc-dvorak-latin1", "gb", "dvorak", 0 ],
+ "dvorak_no" => [ N_("_: keyboard\nDvorak (Norwegian)"), "no-dvorak", "no", "dvorak", 0 ],
+ "dvorak_pl" => [ N_("_: keyboard\nDvorak (Polish)"), "pl-dvorak", "pl", "dvorak", 0 ],
+ "dvorak_se" => [ N_("_: keyboard\nDvorak (Swedish)"), "se-dvorak", "se", "dvorak", 0 ],
+ "ee" => [ N_("_: keyboard\nEstonian"), "ee-latin9", "ee", "", 0 ],
+ "es" => [ N_("_: keyboard\nSpanish"), "es-latin1", "es", "", 0 ],
+ "fi" => [ N_("_: keyboard\nFinnish"), "fi-latin1", "fi", "", 0 ],
+ "fo" => [ N_("_: keyboard\nFaroese"), "is-latin1", "fo", "", 0 ],
+ "fr" => [ N_("_: keyboard\nFrench"), "fr-latin1", "fr", "", 0 ],
+ "fr_bepo" => [ N_("_: keyboard\nFrench (Bepo)"), "fr-bepo", "fr", "bepo", 0 ],
+ "fr_bepo_latin9" => [ N_("_: keyboard\nFrench (Bepo, only latin-9)"), "fr-bepo-latin9", "fr", "bepo_latin9", 0 ],
+ "gb" => [ N_("UK keyboard"), "uk-latin1", "gb", "", 0 ],
+ "ge_ru" => [ N_("_: keyboard\nGeorgian (\"Russian\" layout)"), "ge_ru-georgian_academy", "ge", "ru", 1 ],
+ "ge_la" => [ N_("_: keyboard\nGeorgian (\"Latin\" layout)"), "ge_la-georgian_academy", "ge", "la", 1 ],
+ "gr" => [ N_("_: keyboard\nGreek"), "gr-8859_7", "gr", "extended", 1 ],
+ "gr_pl" => [ N_("_: keyboard\nGreek (polytonic)"), "gr-8859_7", "gr", "polytonic", 1 ],
+ "guj" => [ N_("_: keyboard\nGujarati"), "us", "in", "guj", 1 ],
+ "gur" => [ N_("_: keyboard\nGurmukhi"), "us", "in", "guru", 1 ],
+ "hr" => [ N_("_: keyboard\nCroatian"), "croat", "hr", "", 0 ],
+ "hu" => [ N_("_: keyboard\nHungarian"), "hu-latin2", "hu", "", 0 ],
+ "ie" => [ N_("_: keyboard\nIrish"), "uk-latin1", "ie", "", 0 ],
+ "iku" => [ N_("_: keyboard\nInuktitut"), "us", "ca", "ike", 1 ],
+ "il" => [ N_("_: keyboard\nIsraeli"), "il-8859_8", "il", "", 1 ],
+ "il_phonetic" => [ N_("_: keyboard\nIsraeli (phonetic)"), "hebrew", "il", "phonetic", 1 ],
+ "ir" => [ N_("_: keyboard\nIranian"), "ir-isiri_3342", "ir", "", 1 ],
+ "is" => [ N_("_: keyboard\nIcelandic"), "is-latin1", "is", "", 0 ],
+ "it" => [ N_("_: keyboard\nItalian"), "it-latin1", "it", "", 0 ],
# Japanese keyboard is dual latin/kana; but telling it here shows a
# message to choose the switching key that is misleading, as input methods
# are not automatically enabled when typing in kana
- "jp" => [ N_("_: keyboard\nJapanese 106 keys"), "jp106", "jp", 0 ],
- "kan" => [ N_("_: keyboard\nKannada"), "us", "in(kan)", 1 ],
- "kg" => [ N_("_: keyboard\nKyrgyz"), "ky", "kg(direct)", 1 ],
- "kr" => [ N_("_: keyboard\nKorean"), "us", "kr(kr104)", 0 ],
+ "jp" => [ N_("_: keyboard\nJapanese 106 keys"), "jp106", "jp", "", 0 ],
+ "kan" => [ N_("_: keyboard\nKannada"), "us", "in", "kan", 1 ],
+ "kg" => [ N_("_: keyboard\nKyrgyz"), "ky", "kg", "direct", 1 ],
+ "kr" => [ N_("_: keyboard\nKorean"), "us", "kr", "kr104", 0 ],
# TODO: console map
- "kur" => [ N_("_: keyboard\nKurdish (arabic script)"), "us", "kur", 1 ],
- "lat" => [ N_("_: keyboard\nLatin American"), "la-latin1", "latam", 0 ],
+ "kur" => [ N_("_: keyboard\nKurdish (arabic script)"), "us", "kur", "", 1 ],
+ "lat" => [ N_("_: keyboard\nLatin American"), "la-latin1", "latam", "", 0 ],
# TODO: console map
- "lao" => [ N_("_: keyboard\nLaotian"), "us", "la", 1 ],
- "lt" => [ N_("_: keyboard\nLithuanian"), "lt-latin7", "lt,us", 1 ],
- "lv" => [ N_("_: keyboard\nLatvian"), "lv-latin7", "lv", 0 ],
- "mal" => [ N_("_: keyboard\nMalayalam"), "us", "in(mal)", 1 ],
- "mao" => [ N_("_: keyboard\nMaori"), "us", "mao", 0 ],
- "mk" => [ N_("_: keyboard\nMacedonian"), "mk", "mkd", 1 ],
- "mm" => [ N_("_: keyboard\nMyanmar (Burmese)"), "us", "mm", 1 ],
- "mn" => [ N_("_: keyboard\nMongolian (cyrillic)"), "us", "mn", 1 ],
- "mt" => [ N_("_: keyboard\nMaltese (UK)"), "mt", "mt", 0 ],
- "mt_us" => [ N_("_: keyboard\nMaltese (US)"), "mt_us", "mt(us)", 0 ],
- "ng" => [ N_("_: keyboard\nNigerian"), "us", "ng", 0 ],
- "nl" => [ N_("_: keyboard\nDutch"), "nl-latin1", "nl", 0 ],
- "no" => [ N_("_: keyboard\nNorwegian"), "no-latin1", "no", 0 ],
- "ori" => [ N_("_: keyboard\nOriya"), "us", "in(ori)", 1 ],
- "pl" => [ N_("_: keyboard\nPolish (qwerty layout)"), "pl", "pl", 0 ],
- "pl2" => [ N_("_: keyboard\nPolish (qwertz layout)"), "pl-latin2", "pl(qwertz)", 0 ],
+ "lao" => [ N_("_: keyboard\nLaotian"), "us", "la", "", 1 ],
+ "lt" => [ N_("_: keyboard\nLithuanian"), "lt-latin7", "lt,us", "", 1 ],
+ "lv" => [ N_("_: keyboard\nLatvian"), "lv-latin7", "lv", "", 0 ],
+ "mal" => [ N_("_: keyboard\nMalayalam"), "us", "in", "mal", 1 ],
+ "mao" => [ N_("_: keyboard\nMaori"), "us", "mao", "", 0 ],
+ "mk" => [ N_("_: keyboard\nMacedonian"), "mk", "mkd", "", 1 ],
+ "mm" => [ N_("_: keyboard\nMyanmar (Burmese)"), "us", "mm", "", 1 ],
+ "mn" => [ N_("_: keyboard\nMongolian (cyrillic)"), "us", "mn", "", 1 ],
+ "mt" => [ N_("_: keyboard\nMaltese (UK)"), "mt", "mt", "", 0 ],
+ "mt_us" => [ N_("_: keyboard\nMaltese (US)"), "mt_us", "mt", "us", 0 ],
+ "ng" => [ N_("_: keyboard\nNigerian"), "us", "ng", "", 0 ],
+ "nl" => [ N_("_: keyboard\nDutch"), "nl-latin1", "nl", "", 0 ],
+ "no" => [ N_("_: keyboard\nNorwegian"), "no-latin1", "no", "", 0 ],
+ "ori" => [ N_("_: keyboard\nOriya"), "us", "in", "ori", 1 ],
+ "pl" => [ N_("_: keyboard\nPolish (qwerty layout)"), "pl", "pl", "", 0 ],
+ "pl2" => [ N_("_: keyboard\nPolish (qwertz layout)"), "pl-latin2", "pl", "qwertz", 0 ],
# TODO: console map
- "pus" => [ N_("_: keyboard\nPashto"), "us", "pus", 1 ],
- "pt" => [ N_("_: keyboard\nPortuguese"), "pt-latin1", "pt", 0 ],
- "qc" => [ N_("_: keyboard\nCanadian (Quebec)"), "qc-latin1", "ca", 0 ],
- "ro_qwertz" => [ N_("_: keyboard\nRomanian (qwertz)"), "ro2", "ro(winkeys)", 0 ],
- "ro" => [ N_("_: keyboard\nRomanian (qwerty)"), "ro", "ro(std_cedilla)", 0 ],
- "ro_basic" => [ N_("_: keyboard\nRomanian (basic)"), "ro", "ro(basic)", 0 ],
- "ru" => [ N_("_: keyboard\nRussian"), "ru4", "ru", 1 ],
- "ru_yawerty" => [ N_("_: keyboard\nRussian (phonetic)"), "ru-yawerty", "ru(phonetic)", 1 ],
- "se" => [ N_("_: keyboard\nSwedish"), "se-latin1", "se", 0 ],
- "si" => [ N_("_: keyboard\nSlovenian"), "slovene", "si", 0 ],
+ "pus" => [ N_("_: keyboard\nPashto"), "us", "pus", "", 1 ],
+ "pt" => [ N_("_: keyboard\nPortuguese"), "pt-latin1", "pt", "", 0 ],
+ "qc" => [ N_("_: keyboard\nCanadian (Quebec)"), "qc-latin1", "ca", "", 0 ],
+ "ro_qwertz" => [ N_("_: keyboard\nRomanian (qwertz)"), "ro2", "ro", "winkeys", 0 ],
+ "ro" => [ N_("_: keyboard\nRomanian (qwerty)"), "ro", "ro", "std_cedilla", 0 ],
+ "ro_basic" => [ N_("_: keyboard\nRomanian (basic)"), "ro", "ro", "basic", 0 ],
+ "ru" => [ N_("_: keyboard\nRussian"), "ru4", "ru", "", 1 ],
+ "ru_yawerty" => [ N_("_: keyboard\nRussian (phonetic)"), "ru-yawerty", "ru", "phonetic", 1 ],
+ "se" => [ N_("_: keyboard\nSwedish"), "se-latin1", "se", "", 0 ],
+ "si" => [ N_("_: keyboard\nSlovenian"), "slovene", "si", "", 0 ],
# TODO: console map
- "sin" => [ N_("_: keyboard\nSinhala"), "us", "lk", 1 ],
- "sk" => [ N_("_: keyboard\nSlovakian (QWERTZ)"), "sk-qwertz", "sk", 0 ],
- "sk_qwerty" => [ N_("_: keyboard\nSlovakian (QWERTY)"), "sk-qwerty", "sk(qwerty)", 0 ],
- "smi" => [ N_("_: keyboard\nSaami (norwegian)"), "no-latin1", "no(smi)", 0 ],
- "smi_sefi" => [ N_("_: keyboard\nSaami (swedish/finnish)"), "se-latin1", "se(smi)", 0 ],
+ "sin" => [ N_("_: keyboard\nSinhala"), "us", "lk", "", 1 ],
+ "sk" => [ N_("_: keyboard\nSlovakian (QWERTZ)"), "sk-qwertz", "sk", "", 0 ],
+ "sk_qwerty" => [ N_("_: keyboard\nSlovakian (QWERTY)"), "sk-qwerty", "sk", "qwerty", 0 ],
+ "smi" => [ N_("_: keyboard\nSaami (norwegian)"), "no-latin1", "no", "smi", 0 ],
+ "smi_sefi" => [ N_("_: keyboard\nSaami (swedish/finnish)"), "se-latin1", "se", "smi", 0 ],
# TODO: console map
- "snd" => [ N_("_: keyboard\nSindhi"), "us", "snd(digits)", 1 ],
+ "snd" => [ N_("_: keyboard\nSindhi"), "us", "snd", "digits", 1 ],
# TODO: console map
- "srp" => [ N_("_: keyboard\nSerbian (cyrillic)"), "sr", "srp(basic),srp(latin)", 1 ],
- "syr" => [ N_("_: keyboard\nSyriac"), "us", "sy(syc)", 1 ],
- "syr_p" => [ N_("_: keyboard\nSyriac (phonetic)"), "us", "sy(syc_phonetic)", 1 ],
- "tel" => [ N_("_: keyboard\nTelugu"), "us", "in(tel)", 1 ],
+ "srp" => [ N_("_: keyboard\nSerbian (cyrillic)"), "sr", "srp,srp", "basic,latin", 1 ],
+ "syr" => [ N_("_: keyboard\nSyriac"), "us", "sy", "syc", 1 ],
+ "syr_p" => [ N_("_: keyboard\nSyriac (phonetic)"), "us", "sy", "syc_phonetic", 1 ],
+ "tel" => [ N_("_: keyboard\nTelugu"), "us", "in", "tel", 1 ],
# no console kbd that I'm aware of
- "tml" => [ N_("_: keyboard\nTamil (ISCII-layout)"), "us", "in(tam)", 1 ],
- "tscii" => [ N_("_: keyboard\nTamil (Typewriter-layout)"), "us", "in(tam_unicode)", 1 ],
- "th" => [ N_("_: keyboard\nThai (Kedmanee)"), "th", "th", 1 ],
- "th_tis" => [ N_("_: keyboard\nThai (TIS-820)"), "th", "th(tis)", 1 ],
+ "tml" => [ N_("_: keyboard\nTamil (ISCII-layout)"), "us", "in", "tam", 1 ],
+ "tscii" => [ N_("_: keyboard\nTamil (Typewriter-layout)"), "us", "in", "tam_unicode", 1 ],
+ "th" => [ N_("_: keyboard\nThai (Kedmanee)"), "th", "th", "", 1 ],
+ "th_tis" => [ N_("_: keyboard\nThai (TIS-820)"), "th", "th", "tis", 1 ],
# TODO: console map
- "th_pat" => [ N_("_: keyboard\nThai (Pattachote)"), "us", "th(pat)", 1 ],
+ "th_pat" => [ N_("_: keyboard\nThai (Pattachote)"), "us", "th", "pat", 1 ],
# NOTE: we define a triple layout here
- "tifinagh" => [ N_("_: keyboard\nTifinagh (moroccan layout) (+latin/arabic)"), "fr-tifinagh", "fr,tifinagh(basic),ara(azerty)", 1 ],
- "tifinagh_p" => [ N_("_: keyboard\nTifinagh (phonetic) (+latin/arabic)"), "fr-tifinaghp", "fr,tifinagh(phonetic),ara(azerty)", 1 ],
+ "tifinagh" => [ N_("_: keyboard\nTifinagh (moroccan layout) (+latin/arabic)"), "fr-tifinagh", "fr,tifinagh,ara", ",basic,azerty", 1 ],
+ "tifinagh_p" => [ N_("_: keyboard\nTifinagh (phonetic) (+latin/arabic)"), "fr-tifinaghp", "fr,tifinagh,ara", ",phonetic,azerty", 1 ],
# TODO: console map
- "tj" => [ N_("_: keyboard\nTajik"), "ru4", "tj", 1 ],
+ "tj" => [ N_("_: keyboard\nTajik"), "ru4", "tj", "", 1 ],
# TODO: console map
- "tm" => [ N_("_: keyboard\nTurkmen"), "us", "tm", 0 ],
- "tr_f" => [ N_("_: keyboard\nTurkish (\"F\" model)"), "trf", "tr(f)", 0 ],
- "tr_q" => [ N_("_: keyboard\nTurkish (\"Q\" model)"), "tr_q-latin5", "tr", 0 ],
-#-"tw => [ N_("_: keyboard\nChineses bopomofo"), "tw", "tw", 1 ],
- "ua" => [ N_("_: keyboard\nUkrainian"), "ua", "ua", 1 ],
+ "tm" => [ N_("_: keyboard\nTurkmen"), "us", "tm", "", 0 ],
+ "tr_f" => [ N_("_: keyboard\nTurkish (\"F\" model)"), "trf", "tr", "f", 0 ],
+ "tr_q" => [ N_("_: keyboard\nTurkish (\"Q\" model)"), "tr_q-latin5", "tr", "", 0 ],
+#-"tw => [ N_("_: keyboard\nChineses bopomofo"), "tw", "tw", "", 1 ],
+ "ua" => [ N_("_: keyboard\nUkrainian"), "ua", "ua", "", 1 ],
# TODO: console map
- "urd" => [ N_("_: keyboard\nUrdu keyboard"), "us", "urd", 1 ],
- "us" => [ N_("US keyboard"), "us", "us", 0 ],
- "us_intl" => [ N_("US keyboard (international)"), "us-intl", "us(alt-intl)", 0 ],
- "us_mac" => [ N_("US keyboard (Macintosh)"), "mac-us", "us(mac)", 0 ],
- "us3" => [ N_("ISO9995-3 (US keyboard with 3 levels per key)"), "us", "latin+level3(ralt_switch)", 0 ],
- "uz" => [ N_("_: keyboard\nUzbek (cyrillic)"), "uz", "uz", 1 ],
+ "urd" => [ N_("_: keyboard\nUrdu keyboard"), "us", "urd", "", 1 ],
+ "us" => [ N_("US keyboard"), "us", "us", "", 0 ],
+ "us_intl" => [ N_("US keyboard (international)"), "us-intl", "us", "alt-intl", 0 ],
+ "us_mac" => [ N_("US keyboard (Macintosh)"), "mac-us", "us", "mac", 0 ],
+ "us3" => [ N_("ISO9995-3 (US keyboard with 3 levels per key)"), "us", "latin+level3", "ralt_switch", 0 ],
+ "uz" => [ N_("_: keyboard\nUzbek (cyrillic)"), "uz", "uz", "", 1 ],
# old XKB layout
- "vn" => [ N_("_: keyboard\nVietnamese \"numeric row\" QWERTY"), "vn-tcvn", "vn", 0 ],
- "yu" => [ N_("_: keyboard\nYugoslavian (latin)"), "sr", "srp(latin)", 0 ],
+ "vn" => [ N_("_: keyboard\nVietnamese \"numeric row\" QWERTY"), "vn-tcvn", "vn", "", 0 ],
+ "yu" => [ N_("_: keyboard\nYugoslavian (latin)"), "sr", "srp", "latin", 0 ],
),
);
@@ -372,7 +372,8 @@ sub _keyboard2one {
}
sub keyboard2text { _keyboard2one($_[0], 0) }
sub keyboard2kmap { _keyboard2one($_[0], 1) }
-sub _keyboard2xkb { _keyboard2one($_[0], 2) }
+sub _keyboard2xkbl { _keyboard2one($_[0], 2) }
+sub _keyboard2xkbv { _keyboard2one($_[0], 3) }
sub xkb_models() {
my $models = _parse_xkb_rules()->{model};
@@ -381,7 +382,7 @@ sub xkb_models() {
sub _grp_toggles {
my ($keyboard) = @_;
- _keyboard2one($keyboard, 3) or return;
+ _keyboard2one($keyboard, 4) or return;
\%grp_toggles;
}
@@ -533,7 +534,7 @@ sub _parse_xkb_rules() {
sub default_XkbModel {
my ($keyboard) = @_;
- my $Layout = _keyboard2xkb($keyboard);
+ my $Layout = _keyboard2xkbl($keyboard);
(arch() =~ /sparc/ ? 'sun' :
$Layout eq 'jp' ? 'jp106' :
@@ -543,11 +544,13 @@ sub default_XkbModel {
sub keyboard2full_xkb {
my ($keyboard) = @_;
- my $Layout = _keyboard2xkb($keyboard) or return { XkbDisable => '' };
+ my $Layout = _keyboard2xkbl($keyboard) or return { XkbDisable => '' };
if ($keyboard->{GRP_TOGGLE} && $Layout !~ /,/) {
$Layout = join(',', 'us', $Layout);
}
+ my $Variant = _keyboard2xkbv($keyboard);
+
my $Model = $keyboard->{XkbModel} || default_XkbModel($keyboard);
my $Options = join(',',
@@ -555,7 +558,7 @@ sub keyboard2full_xkb {
if_($keyboard->{GRP_TOGGLE} ne 'rwin_toggle', 'compose:rwin'),
);
- { XkbModel => $Model, XkbLayout => $Layout, XkbOptions => $Options };
+ { XkbModel => $Model, XkbLayout => $Layout, XkbVariant => $Variant, XkbOptions => $Options };
}
sub _xmodmap_file {
@@ -568,7 +571,7 @@ sub _setxkbmap {
my ($keyboard) = @_;
my $xkb = keyboard2full_xkb($keyboard) or return;
run_program::run('setxkbmap', '-option', '') if $xkb->{XkbOptions}; #- need re-initialised other toggles are cumulated
- run_program::run('setxkbmap', $xkb->{XkbLayout}, '-model' => $xkb->{XkbModel}, '-option' => $xkb->{XkbOptions} || '', '-compat' => $xkb->{XkbCompat} || '');
+ run_program::run('setxkbmap', $xkb->{XkbLayout}, '-variant' => $xkb->{XkbVariant}, '-model' => $xkb->{XkbModel}, '-option' => $xkb->{XkbOptions} || '', '-compat' => $xkb->{XkbCompat} || '');
}
sub setup_install {
@@ -709,7 +712,7 @@ sub check() {
my @xkb_layouts = (#- (map { (split)[0] } grep { /^! layout/ .. /^\s*$/ } cat_('/usr/lib/X11/xkb/rules/xfree86.lst')),
all('/usr/lib/X11/xkb/symbols'),
(map { (split)[2] } cat_('/usr/lib/X11/xkb/symbols.dir')));
- $err->("invalid xkb layout $_") foreach difference2([ map { _keyboard2xkb($_) } _keyboards() ], \@xkb_layouts);
+ $err->("invalid xkb layout $_") foreach difference2([ map { _keyboard2xkbl($_) } _keyboards() ], \@xkb_layouts);
my @kmaps_available = map { if_(m|.*/(.*)\.bkmap|, $1) } `tar tfj share/keymaps.tar.bz2`;
my @kmaps_wanted = map { keyboard2kmap($_) } _keyboards();