From 6456835f1c547e4f9da3dc8728d1fe09eeca8593 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Sun, 3 Dec 2017 13:04:35 +0200 Subject: [PATCH] test/data: sync with xkeyboard-config 2.22 Some tweaks to the de(neo) keyseq tests were required. It seems to have improved. Signed-off-by: Ran Benita --- test/data/rules/base | 50 +++- test/data/rules/evdev | 47 +++- test/data/symbols/altwin | 27 +- test/data/symbols/awesome | 26 ++ test/data/symbols/ca | 6 +- test/data/symbols/capslock | 21 +- test/data/symbols/ch | 9 +- test/data/symbols/ctrl | 19 +- test/data/symbols/cz | 78 +++++- test/data/symbols/de | 467 ++++++++++++++++++++++++++++----- test/data/symbols/group | 31 ++- test/data/symbols/il | 2 +- test/data/symbols/in | 153 ++++++++++- test/data/symbols/inet | 126 +++++---- test/data/symbols/keypad | 53 ++-- test/data/symbols/latin | 2 +- test/data/symbols/level5 | 10 + test/data/symbols/macintosh_vndr/apple | 2 +- test/data/symbols/macintosh_vndr/us | 4 +- test/data/symbols/ru | 326 ++++++++++++++++++++++- test/data/symbols/us | 260 ++++++++++++++++-- test/data/types/level5 | 242 ++++++++--------- test/keyseq.c | 15 +- 23 files changed, 1640 insertions(+), 336 deletions(-) create mode 100644 test/data/symbols/awesome diff --git a/test/data/rules/base b/test/data/rules/base index 5f02efa..11e1b56 100644 --- a/test/data/rules/base +++ b/test/data/rules/base @@ -9,12 +9,15 @@ // If you want non-latin layouts implicitly include the en_US layout // uncomment lines below //! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \ -// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \ -// ru scc sy syr tel th tj tam ua uz +// in ir iku jp kan kh kr la lao lk mk mm mn mv mal olck \ +// ori pk ru scc sy syr tel th tj tam ua uz // PC models ! $pcmodels = pc101 pc102 pc104 pc105 +// Jolla devices and keyboards +! $jollamodels = jollasbj + // Microsoft models (using MS geometry) ! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose @@ -122,7 +125,9 @@ sk1300 sk2500 sk6200 sk7100 \ sven sven303 symplon \ toshiba_s3000 trust trustda \ - unitekkb1925 yahoo + unitekkb1925 yahoo \ + teck227 teck229 \ + apex300 ! $inetmediakbds = acer_ferrari4k acer_laptop btc5090 btc9019u cherryblueb \ cherrybluea herrycyboard chicony042 compaqik13 compaqik18 \ @@ -188,6 +193,7 @@ thinkpad = thinkpad(intl) thinkpad60 = thinkpad(60) thinkpadz60 = thinkpad(60) + apex300 = steelseries(apex300) $tmgeometries = typematrix(%m) winbook = winbook(XP5) pc98 = nec(pc98) @@ -347,6 +353,8 @@ classmate us = pc+%l(classmate) empty * = empty(basic) * empty = empty(basic) + jollasbj $nonlatin = jolla_vndr/sbj(common)+us+%l%(v):2 + jollasbj * = jolla_vndr/sbj(common)+%l%(v) $sun $sun_custom = pc+sun_vndr/%l%(v) pc98 nec_vndr/jp = nec_vndr/jp(pc98) macintosh_old us = macintosh_vndr/us(oldmac) @@ -456,6 +464,7 @@ * yu(unicodeyz) = pc+srp(latinunicodeyz) ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) + jollasbj * = jolla_vndr/sbj(common)+%l[1]%(v[1]) $sun $sun_custom = pc+sun_vndr/%l[1]%(v[1]) macintosh_old us = macintosh_vndr/us(oldmac) macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1]) @@ -927,6 +936,7 @@ btc5126t = +inet(nav_acpi_common) btc9116u = +inet(btc9019u) btc6301urf = +inet(media_nav_acpi_common) + chromebook = +inet(chromebook) dellsk8125 = +inet(dell) dellsk8135 = +inet(dell) cherrybunlim = +inet(nav_common) @@ -977,26 +987,51 @@ ! layout variant = compat de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) jp $sun_compat = complete+japan(kana_lock) ! layout[1] variant[1] = compat de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) jp $sun_compat = complete+japan(kana_lock) ! layout[2] variant[2] = compat de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 de adnw = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de koy = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone_eszett_home = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwertz = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwerty = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 jp $sun_compat = +complete+japan(kana_lock):2 ! layout[3] variant[3] = compat de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 de adnw = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de koy = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone_eszett_home = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwertz = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwerty = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 jp $sun_compat = +complete+japan(kana_lock):3 ! layout[4] variant[4] = compat de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 de adnw = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de koy = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone_eszett_home = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwertz = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwerty = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 jp $sun_compat = +complete+japan(kana_lock):4 ! model layout = compat @@ -1046,13 +1081,16 @@ altwin:left_meta_win = +altwin(left_meta_win) altwin:hyper_win = +altwin(hyper_win) altwin:alt_super_win = +altwin(alt_super_win) + altwin:swap_lalt_lwin = +altwin(swap_lalt_lwin) altwin:swap_alt_win = +altwin(swap_alt_win) + altwin:prtsc_rwin = +altwin(prtsc_rwin) grab:debug = +srvr_ctrl(grab_debug) grp:switch = +group(switch) grp:lswitch = +group(lswitch) grp:win_switch = +group(win_switch) grp:lwin_switch = +group(lwin_switch) grp:rwin_switch = +group(rwin_switch) + grp:menu_switch = +group(menu_switch) grp:toggle = +group(toggle) grp:shifts_toggle = +group(shifts_toggle) grp:ctrls_toggle = +group(ctrls_toggle) @@ -1089,6 +1127,7 @@ grp:ralt_rshift_toggle = +group(ralt_rshift_toggle) grp:alt_shift_toggle = +group(alt_shift_toggle) grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir) + grp:lctrl_lwin_toggle = +group(lctrl_lwin_toggle) lv3:switch = +level3(switch) lv3:ralt_switch = +level3(ralt_switch) lv3:ralt_switch_multikey = +level3(ralt_switch_multikey) @@ -1108,6 +1147,7 @@ caps:backspace = +capslock(backspace) caps:super = +capslock(super) caps:hyper = +capslock(hyper) + caps:menu = +capslock(menu) caps:none = +capslock(none) caps:ctrl_modifier = +capslock(ctrl_modifier) ctrl:nocaps = +ctrl(nocaps) @@ -1164,6 +1204,8 @@ nbsp:level4nl = +nbsp(level4nl) japan:nicola_f_bs = +jp(nicola_f_bs) japan:hztg_escape = +jp(hztg_escape) + korean:ralt_rctrl = +kr(ralt_hangul)+kr(rctrl_hanja) + korean:rctrl_ralt = +kr(rctrl_hangul)+kr(ralt_hanja) kpdl:dot = +kpdl(dot) kpdl:comma = +kpdl(comma) kpdl:dotoss = +kpdl(dotoss) @@ -1203,7 +1245,7 @@ lv5:ralt_switch_lock_cancel = +level5(ralt_switch_lock_cancel) lv5:lwin_switch_lock_cancel = +level5(lwin_switch_lock_cancel) lv5:rwin_switch_lock_cancel = +level5(rwin_switch_lock_cancel) - + parens:swap_brackets = +parens(swap_brackets) ! option = compat diff --git a/test/data/rules/evdev b/test/data/rules/evdev index f58e5b2..872e1de 100644 --- a/test/data/rules/evdev +++ b/test/data/rules/evdev @@ -9,12 +9,15 @@ // If you want non-latin layouts implicitly include the en_US layout // uncomment lines below //! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \ -// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \ -// ru scc sy syr tel th tj tam ua uz +// in ir iku jp kan kh kr la lao lk mk mm mn mv mal olck \ +// ori pk ru scc sy syr tel th tj tam ua uz // PC models ! $pcmodels = pc101 pc102 pc104 pc105 +// Jolla devices and keyboards +! $jollamodels = jollasbj + // Microsoft models (using MS geometry) ! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose @@ -91,6 +94,7 @@ ! model = keycodes pc98 = evdev(pc98) applealu_jis = evdev+macintosh(jisevdev) + $jollamodels = evdev+jolla(jolla) olpc = evdev+olpc(olpc) olpcm = evdev+olpc(olpcm) * = evdev @@ -128,6 +132,7 @@ thinkpad = thinkpad(intl) thinkpad60 = thinkpad(60) thinkpadz60 = thinkpad(60) + apex300 = steelseries(apex300) $tmgeometries = typematrix(%m) winbook = winbook(XP5) pc98 = nec(pc98) @@ -287,6 +292,8 @@ classmate us = pc+%l(classmate) empty * = empty(basic) * empty = empty(basic) + jollasbj $nonlatin = jolla_vndr/sbj(common)+us+%l%(v):2 + jollasbj * = jolla_vndr/sbj(common)+%l%(v) $sun $sun_custom = pc+sun_vndr/%l%(v) pc98 nec_vndr/jp = nec_vndr/jp(pc98) macintosh_old us = macintosh_vndr/us(oldmac) @@ -396,6 +403,7 @@ * yu(unicodeyz) = pc+srp(latinunicodeyz) ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1]) amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1]) + jollasbj * = jolla_vndr/sbj(common)+%l[1]%(v[1]) $sun $sun_custom = pc+sun_vndr/%l[1]%(v[1]) macintosh_old us = macintosh_vndr/us(oldmac) macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1]) @@ -858,6 +866,7 @@ ! model = symbols $evdevkbds = +inet(evdev)+inet(%m) + chromebook = +inet(evdev)+inet(chromebook) applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys) * = +inet(evdev) @@ -866,26 +875,51 @@ ! layout variant = compat de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) jp $sun_compat = complete+japan(kana_lock) ! layout[1] variant[1] = compat de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de koy = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de bone_eszett_home = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwertz = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) + de neo_qwerty = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock) jp $sun_compat = complete+japan(kana_lock) ! layout[2] variant[2] = compat de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 de adnw = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de koy = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de bone_eszett_home = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwertz = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 + de neo_qwerty = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2 jp $sun_compat = +complete+japan(kana_lock):2 ! layout[3] variant[3] = compat de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 de adnw = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de koy = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de bone_eszett_home = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwertz = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 + de neo_qwerty = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3 jp $sun_compat = +complete+japan(kana_lock):3 ! layout[4] variant[4] = compat de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 de adnw = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de koy = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de bone_eszett_home = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwertz = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 + de neo_qwerty = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4 jp $sun_compat = +complete+japan(kana_lock):4 ! model layout = compat @@ -935,13 +969,16 @@ altwin:left_meta_win = +altwin(left_meta_win) altwin:hyper_win = +altwin(hyper_win) altwin:alt_super_win = +altwin(alt_super_win) + altwin:swap_lalt_lwin = +altwin(swap_lalt_lwin) altwin:swap_alt_win = +altwin(swap_alt_win) + altwin:prtsc_rwin = +altwin(prtsc_rwin) grab:debug = +srvr_ctrl(grab_debug) grp:switch = +group(switch) grp:lswitch = +group(lswitch) grp:win_switch = +group(win_switch) grp:lwin_switch = +group(lwin_switch) grp:rwin_switch = +group(rwin_switch) + grp:menu_switch = +group(menu_switch) grp:toggle = +group(toggle) grp:shifts_toggle = +group(shifts_toggle) grp:ctrls_toggle = +group(ctrls_toggle) @@ -978,6 +1015,7 @@ grp:ralt_rshift_toggle = +group(ralt_rshift_toggle) grp:alt_shift_toggle = +group(alt_shift_toggle) grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir) + grp:lctrl_lwin_toggle = +group(lctrl_lwin_toggle) lv3:switch = +level3(switch) lv3:ralt_switch = +level3(ralt_switch) lv3:ralt_switch_multikey = +level3(ralt_switch_multikey) @@ -997,6 +1035,7 @@ caps:backspace = +capslock(backspace) caps:super = +capslock(super) caps:hyper = +capslock(hyper) + caps:menu = +capslock(menu) caps:none = +capslock(none) caps:ctrl_modifier = +capslock(ctrl_modifier) ctrl:nocaps = +ctrl(nocaps) @@ -1053,6 +1092,8 @@ nbsp:level4nl = +nbsp(level4nl) japan:nicola_f_bs = +jp(nicola_f_bs) japan:hztg_escape = +jp(hztg_escape) + korean:ralt_rctrl = +kr(ralt_hangul)+kr(rctrl_hanja) + korean:rctrl_ralt = +kr(rctrl_hangul)+kr(ralt_hanja) kpdl:dot = +kpdl(dot) kpdl:comma = +kpdl(comma) kpdl:dotoss = +kpdl(dotoss) @@ -1092,7 +1133,7 @@ lv5:ralt_switch_lock_cancel = +level5(ralt_switch_lock_cancel) lv5:lwin_switch_lock_cancel = +level5(lwin_switch_lock_cancel) lv5:rwin_switch_lock_cancel = +level5(rwin_switch_lock_cancel) - + parens:swap_brackets = +parens(swap_brackets) ! option = compat diff --git a/test/data/symbols/altwin b/test/data/symbols/altwin index 76a289a..7240ab8 100644 --- a/test/data/symbols/altwin +++ b/test/data/symbols/altwin @@ -1,4 +1,4 @@ -// Meta is mapped to second level of Alt keys. +// Meta is mapped to second level of Alt. partial modifier_keys xkb_symbols "meta_alt" { key { [ Alt_L, Meta_L ] }; @@ -8,7 +8,7 @@ xkb_symbols "meta_alt" { // modifier_map Mod4 {}; }; -// Alt is mapped to the Win keys (and the usual Alt keys). +// Alt is mapped to the Super and the usual Alt. partial modifier_keys xkb_symbols "alt_win" { key { [ Alt_L ] }; @@ -16,7 +16,7 @@ xkb_symbols "alt_win" { modifier_map Mod1 { , }; }; -// Ctrl is mapped to the Win keys (and the usual Ctrl keys). +// Ctrl is mapped to the Super and the usual Ctrl keys. partial modifier_keys xkb_symbols "ctrl_win" { key { [ Control_L ] }; @@ -24,7 +24,7 @@ xkb_symbols "ctrl_win" { modifier_map Control { , }; }; -// Ctrl is mapped to the Alt keys, Alt to the Win keys, and Win to the Ctrl keys. +// Ctrl is mapped to the Alt, Alt to the Super, and Win to the Ctrl keys. partial modifier_keys xkb_symbols "ctrl_alt_win" { key { [ Control_L, Control_L ] }; @@ -39,7 +39,7 @@ xkb_symbols "ctrl_alt_win" { modifier_map Mod4 { , }; }; -// Meta is mapped to the Win keys. +// Meta is mapped to the Super. partial modifier_keys xkb_symbols "meta_win" { key { [ Alt_L, Alt_L ] }; @@ -60,7 +60,7 @@ xkb_symbols "left_meta_win" { modifier_map Mod4 { , Meta_L }; }; -// Hyper is mapped to the Win keys. +// Hyper is mapped to the Super. partial modifier_keys xkb_symbols "hyper_win" { key { [ Hyper_L ] }; @@ -85,25 +85,32 @@ xkb_symbols "alt_super_win" { modifier_map Mod4 { Super_L, Super_R }; }; -// Swap the Alt and Win keys. +// Swap the Alt and Super. partial modifier_keys xkb_symbols "swap_alt_win" { include "altwin(swap_lalt_lwin)" include "altwin(swap_ralt_rwin)" }; -// Swap the left Alt and Win keys. -hidden partial modifier_keys +// Swap the left Alt and Super. +partial modifier_keys xkb_symbols "swap_lalt_lwin" { key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Super_L ] }; key { [ Alt_L, Meta_L ] }; }; -// Swap the right Alt and Win keys. +// Swap the right Alt and Super. hidden partial modifier_keys xkb_symbols "swap_ralt_rwin" { key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Super_R ] }; key { [ Alt_R, Meta_R ] }; }; + +// Win is mapped to the PrtSc key (and the usual Win key). +partial modifier_keys +xkb_symbols "prtsc_rwin" { + replace key { [ Super_R, Super_R ] }; + modifier_map Mod4 { , }; +}; diff --git a/test/data/symbols/awesome b/test/data/symbols/awesome new file mode 100644 index 0000000..a8d38c4 --- /dev/null +++ b/test/data/symbols/awesome @@ -0,0 +1,26 @@ +default alphanumeric_keys modifier_keys function_keys alternate_group +xkb_symbols "awesome" { + include "us" + + name[Group1]= "My Awesome Layout"; + + key { [ 2, at, Page_Up, Page_Up ] }; + key { [ 3, numbersign, Page_Down, Page_Down ] }; + + key { [ q, Q, Escape, Escape ] }; + key { [ w, W, Home, Home ] }; + key { + type="THREE_LEVEL", + symbols=[ e, E, Up] + }; + key { [ r, R, End, End ] }; + key { [ t, T, Tab, Tab ] }; + + key { [ a, A, Return, Return ] }; + key { [ s, S, Left] }; + key { [ d, D, Down] }; + key { [ f, F, Righ] }; + key { [ g, G, BackSpace, BackSpace ] }; + + key { [ b, B, Delete, Delete ] }; +}; diff --git a/test/data/symbols/ca b/test/data/symbols/ca index 2ba48b4..84f153c 100644 --- a/test/data/symbols/ca +++ b/test/data/symbols/ca @@ -170,7 +170,7 @@ xkb_symbols "multi" { include "ca(fr)" - name[Group1] = "Canadian Multilingual (first part)"; + name[Group1] = "Canadian Multilingual (1st part)"; key { [ slash, backslash, bar ] }; key { [ 1, exclam ] }; @@ -206,7 +206,7 @@ xkb_symbols "multi" { partial xkb_symbols "multi-2gr" { - name[Group1] = "Canadian Multilingual (second part)"; + name[Group1] = "Canadian Multilingual (2nd part)"; key { [ NoSymbol, hyphen ] }; key { [ onesuperior, exclamdown ] }; @@ -467,6 +467,8 @@ partial alphanumeric_keys xkb_symbols "eng" { include "us(basic)" name[Group1] = "English (Canada)"; + + key { [ backslash, bar, VoidSymbol, VoidSymbol ] }; }; // EXTRAS: diff --git a/test/data/symbols/capslock b/test/data/symbols/capslock index 3f4a0cd..6b85c3d 100644 --- a/test/data/symbols/capslock +++ b/test/data/symbols/capslock @@ -16,12 +16,6 @@ xkb_symbols "grouplock" { }; hidden partial modifier_keys -xkb_symbols "swapescape" { - key { [ Escape ] }; - key { [ Caps_Lock ] }; -}; - -hidden partial modifier_keys xkb_symbols "groupshift" { key { type[Group1] = "PC_ALT_LEVEL2", @@ -30,6 +24,12 @@ xkb_symbols "groupshift" { }; hidden partial modifier_keys +xkb_symbols "swapescape" { + key { [ Escape ] }; + key { [ Caps_Lock ] }; +}; + +hidden partial modifier_keys xkb_symbols "escape" { key { [ Escape ] }; }; @@ -52,8 +52,8 @@ xkb_symbols "hyper" { }; hidden partial modifier_keys -xkb_symbols "none" { - key { [ VoidSymbol ] }; +xkb_symbols "menu" { + key { [ Menu ] }; }; hidden partial modifier_keys @@ -72,3 +72,8 @@ xkb_symbols "ctrl_modifier" { }; modifier_map Control { }; }; + +hidden partial modifier_keys +xkb_symbols "none" { + key { [ VoidSymbol ] }; +}; diff --git a/test/data/symbols/ch b/test/data/symbols/ch index 62c69f9..a87f93a 100644 --- a/test/data/symbols/ch +++ b/test/data/symbols/ch @@ -20,6 +20,7 @@ xkb_symbols "basic" { key { [ e, E, EuroSign ] }; key { [ z, Z ] }; + key { [ o, O, oe, OE ] }; key { [ udiaeresis, egrave, bracketleft ] }; key { [ dead_diaeresis, exclam, bracketright ] }; @@ -61,14 +62,14 @@ xkb_symbols "de_Sundeadkeys" { partial alphanumeric_keys xkb_symbols "de_sundeadkeys" { include "ch(de_Sundeadkeys)" - name[Group1]= "German (Switzerland, Sun dead keys)"; + name[Group1]= "German (Switzerland, with Sun dead keys)"; }; partial alphanumeric_keys xkb_symbols "de_nodeadkeys" { // modify the basic Swiss German layout not to have any dead keys include "ch(basic)" - name[Group1]= "German (Switzerland, eliminate dead keys)"; + name[Group1]= "German (Switzerland, no dead keys)"; key { [ apostrophe, question, acute ] }; key { [ asciicircum, grave, asciitilde ] }; key { [ diaeresis, exclam, bracketright ] }; @@ -103,14 +104,14 @@ xkb_symbols "fr_Sundeadkeys" { partial alphanumeric_keys xkb_symbols "fr_sundeadkeys" { include "ch(fr_Sundeadkeys)" - name[Group1]= "French (Switzerland, Sun dead keys)"; + name[Group1]= "French (Switzerland, with Sun dead keys)"; }; partial alphanumeric_keys xkb_symbols "fr_nodeadkeys" { // modify the basic Swiss French layout not to have any dead keys include "ch(fr)" - name[Group1]= "French (Switzerland, eliminate dead keys)"; + name[Group1]= "French (Switzerland, no dead keys)"; key { [ apostrophe, question, acute ] }; key { [ asciicircum, grave, asciitilde ] }; key { [ diaeresis, exclam, bracketright ] }; diff --git a/test/data/symbols/ctrl b/test/data/symbols/ctrl index dd68add..8791b49 100644 --- a/test/data/symbols/ctrl +++ b/test/data/symbols/ctrl @@ -8,6 +8,7 @@ xkb_symbols "nocaps" { // Make the left Ctrl key a left Meta. xkb_symbols "lctrl_meta" { replace key { [ Meta_L ] }; + modifier_map Mod4 { }; }; // Swap the functions of the CapsLock key and the left Ctrl key. @@ -15,6 +16,8 @@ partial modifier_keys xkb_symbols "swapcaps" { replace key { [ Control_L ] }; replace key { [ Caps_Lock ] }; + modifier_map Control { }; + modifier_map Lock { }; }; // Move Ctrl to the leftmost key on the middle row and CapsLock to the @@ -24,6 +27,8 @@ partial modifier_keys xkb_symbols "ac_ctrl" { replace key { [ Control_L ] }; replace key { [ Caps_Lock ] }; + modifier_map Control { }; + modifier_map Lock { }; }; // Move Ctrl to the leftmost key on the bottom row and CapsLock to the @@ -33,12 +38,15 @@ partial modifier_keys xkb_symbols "aa_ctrl" { replace key { [ Control_L ] }; replace key { [ Caps_Lock ] }; + modifier_map Control { }; + modifier_map Lock { }; }; -// Right Ctrl key functions as another right Alt. +// Right Ctrl functions as another right Alt. partial modifier_keys xkb_symbols "rctrl_ralt" { key { symbols[Group1]= [ Alt_R ] }; + modifier_map Mod1{ }; }; // Menu key functions as another right Ctrl. @@ -61,6 +69,8 @@ partial modifier_keys xkb_symbols "swap_lalt_lctl" { replace key { [ Control_L, Control_L ] }; replace key { [ Alt_L, Meta_L ] }; + modifier_map Mod1 { }; + modifier_map Control { }; }; // Swap the functions of the left Win key and the left Ctrl key. @@ -68,6 +78,8 @@ partial modifier_keys xkb_symbols "swap_lwin_lctl" { replace key { [ Control_L ] }; replace key { [ Super_L ] }; + modifier_map Mod4 { }; + modifier_map Control { }; }; // Swap the functions of the right Win key and the right Ctrl key. @@ -75,6 +87,8 @@ partial modifier_keys xkb_symbols "swap_rwin_rctl" { replace key { [ Control_R ] }; replace key { [ Super_R ] }; + modifier_map Mod4 { }; + modifier_map Control { }; }; // Map Ctrl to the left Alt key, Alt to the left Win key, @@ -84,4 +98,7 @@ xkb_symbols "swap_lalt_lctl_lwin" { replace key { [ Control_L, Control_L ] }; replace key { [ Alt_L, Meta_L ] }; replace key { [ Super_L ] }; + modifier_map Mod1 { }; + modifier_map Mod4 { }; + modifier_map Control { }; }; diff --git a/test/data/symbols/cz b/test/data/symbols/cz index 97ab3cf..3407e92 100644 --- a/test/data/symbols/cz +++ b/test/data/symbols/cz @@ -86,7 +86,7 @@ xkb_symbols "qwerty" { // 2011 by Lukáš Mojžíš include "cz(basic)" - name[Group1]= "Czech (qwerty)"; + name[Group1]= "Czech (QWERTY)"; key { [ z, Z, degree, NoSymbol ] }; key { [ uring, quotedbl, semicolon, colon ] }; @@ -103,7 +103,7 @@ xkb_symbols "qwerty_bksl" { // Use instead of (useful for keyboards without key). include "cz(qwerty)" - name[Group1]= "Czech (qwerty, extended Backslash)"; + name[Group1]= "Czech (QWERTY, extended backslash)"; key { [ backslash, bar, slash, NoSymbol ] }; }; @@ -115,7 +115,7 @@ xkb_symbols "ucw" { // it contains accented characters only, no 'latin' set. // 2008 by Milan Vancura - name[Group1]= "Czech (UCW layout, accented letters only)"; + name[Group1]= "Czech (UCW, only accented letters)"; key { [zcaron, Zcaron ] }; key { [ssharp ] }; @@ -154,7 +154,7 @@ xkb_symbols "dvorak-ucw" { // AltGr produces accented characters. include "us(dvorak)" - name[Group1]= "Czech (US Dvorak with CZ UCW support)"; + name[Group1]= "Czech (US, Dvorak, UCW support)"; key { [ j, J, eacute, Eacute ] }; key { [ k, K, uacute, Uacute ] }; @@ -177,6 +177,76 @@ xkb_symbols "dvorak-ucw" { include "level3(ralt_switch)" }; +// phonetic layout for Russian letters on an CZ (QWERTY) keyboard +// originaly created by Pavel Sorejs + +partial alphanumeric_keys +xkb_symbols "rus" { + + include "cz(qwerty)" + name[Group1]= "Russian (Czech, phonetic)"; + + key { [ plus, ampersand, 1 , 1 ] }; + key { [ Cyrillic_hardsign, 2, 2 , 2 ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, 3 , 3 ] }; + key { [ Cyrillic_che, Cyrillic_CHE, 4 , 4 ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, 5 , 5 ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, 6 , 6 ] }; + key { [ quotedbl, 4, 7 , 7 ] }; + key { [ section, 5, 8 , 8 ] }; + key { [ dollar, 6, 9 , 9 ] }; + key { [ equal, 7, 0 , 0 ] }; + key { [ percent, 8 ] }; + key { [ apostrophe, 9 ] }; + + key { [ comma, question ] }; + key { [ period, exclam ] }; + key { [ minus, slash ] }; + + key { [ semicolon, colon ] }; + + key { [ bar, brokenbar ] }; + + key { [ Cyrillic_io, Cyrillic_IO ] }; + + + key { [ numerosign, 1, q, Q ] }; + key { [ Cyrillic_yu, Cyrillic_YU, w, W ] }; + key { [ Cyrillic_ie, Cyrillic_IE, e, E ] }; + key { [ Cyrillic_er, Cyrillic_ER, r, R ] }; + key { [ Cyrillic_te, Cyrillic_TE, t, T ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, y, Y ] }; + key { [ Cyrillic_u, Cyrillic_U, u, U ] }; + key { [ Cyrillic_i, Cyrillic_I, i, I ] }; + key { [ Cyrillic_o, Cyrillic_O, o, O ] }; + key { [ Cyrillic_pe, Cyrillic_PE, p, P ] }; + key { [ Cyrillic_e, Cyrillic_E, bracketleft, division ] }; + key { [ parenright, parenleft, bracketright, multiply ] }; + + key { [ Cyrillic_a, Cyrillic_A, a, A ] }; + key { [ Cyrillic_es, Cyrillic_ES, s, S ] }; + key { [ Cyrillic_de, Cyrillic_DE, d, D ] }; + key { [ Cyrillic_ef, Cyrillic_EF, f, F ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, g, G ] }; + key { [ Cyrillic_ha, Cyrillic_HA, h, H ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, j, J ] }; + key { [ Cyrillic_ka, Cyrillic_KA, k, K ] }; + key { [ Cyrillic_el, Cyrillic_EL, l, L ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, less, greater ] }; + + key { [ Cyrillic_ze, Cyrillic_ZE, z, Z ] }; + key { [ Cyrillic_ya, Cyrillic_YA, x, X ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, c, C ] }; + key { [ Cyrillic_ve, Cyrillic_VE, v, V ] }; + key { [ Cyrillic_be, Cyrillic_BE, b, B ] }; + key { [ Cyrillic_en, Cyrillic_EN, n, N ] }; + key { [ Cyrillic_em, Cyrillic_EM, m, M ] }; + + key { [ backslash, brokenbar ] }; + + include "level3(ralt_switch)" +}; + // EXTRAS: partial alphanumeric_keys diff --git a/test/data/symbols/de b/test/data/symbols/de index 944732e..c025a1c 100644 --- a/test/data/symbols/de +++ b/test/data/symbols/de @@ -13,14 +13,6 @@ xkb_symbols "basic" { key {type[Group1]="FOUR_LEVEL_PLUS_LOCK", symbols[Group1]= [ssharp, question, backslash, questiondown, 0x1001E9E ]}; -// The unicode capital letter sharp s U+1E9E is transformed to "SS" -// to match the rules for capitalizing sharp s in german. -// If the capital sharp s is needed, delete the line -// starting with from /usr/share/X11/locale/iso8859-15/Compose. -// If both doubled S and capital sharp s are needed, use 0x1001E9E -// for capital sharp s and some free unicode codepoint like 0x1001E9C -// for doubled S. Don`t forget to change this in the Compose file, too. - key { [dead_acute, dead_grave, dead_cedilla, dead_ogonek ] }; key { [ e, E, EuroSign, EuroSign ] }; @@ -43,6 +35,7 @@ xkb_symbols "basic" { key { [ comma, semicolon, periodcentered, multiply ] }; key { [ period, colon, U2026, division ] }; key { [ minus, underscore, endash, emdash ] }; + key { [ less, greater, bar, dead_belowmacron ] }; include "kpdl(comma)" @@ -50,11 +43,11 @@ xkb_symbols "basic" { }; partial alphanumeric_keys -xkb_symbols "legacy" { +xkb_symbols "deadtilde" { // previous standard German layout with tilde as dead key include "de(basic)" - name[Group1]="German (legacy)"; + name[Group1]="German (dead tilde)"; key { [ plus, asterisk, dead_tilde, dead_macron ] }; }; @@ -65,15 +58,15 @@ xkb_symbols "nodeadkeys" { // modify the basic German layout to not have any dead keys include "de(basic)" - name[Group1]="German (eliminate dead keys)"; - - key { [asciicircum, degree, notsign, notsign ] }; - key { [ acute, grave, cedilla, cedilla ] }; - key { [udiaeresis, Udiaeresis, diaeresis, diaeresis ] }; - key { [ plus, asterisk, asciitilde, macron ] }; - key { [odiaeresis, Odiaeresis, doubleacute, doubleacute ] }; - key { [adiaeresis, Adiaeresis, asciicircum, asciicircum ] }; - key { [numbersign, apostrophe, grave, grave ] }; + name[Group1]="German (no dead keys)"; + + key { [asciicircum, degree, notsign, notsign ] }; + key { [ acute, grave, cedilla, cedilla ] }; + key { [ udiaeresis, Udiaeresis, diaeresis, diaeresis ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ odiaeresis, Odiaeresis, doubleacute, doubleacute ] }; + key { [ adiaeresis, Adiaeresis, asciicircum, asciicircum ] }; + key { [ numbersign, apostrophe, rightsinglequotemark, grave ] }; }; partial alphanumeric_keys @@ -85,9 +78,9 @@ xkb_symbols "deadgraveacute" { include "de(basic)" name[Group1]="German (dead grave acute)"; - key { [asciicircum, degree, notsign, notsign ] }; - key { [ plus, asterisk, asciitilde, dead_macron ] }; - key { [numbersign, apostrophe, grave, grave ] }; + key { [asciicircum, degree, notsign, notsign ] }; + key { [ plus, asterisk, asciitilde, dead_macron ] }; + key { [ numbersign, apostrophe, rightsinglequotemark, grave ] }; }; partial alphanumeric_keys @@ -100,8 +93,8 @@ xkb_symbols "deadacute" { name[Group1]="German (dead acute)"; - key { [dead_acute, grave, dead_cedilla, dead_ogonek ] }; - key { [numbersign, apostrophe, dead_grave, dead_grave ] }; + key { [dead_acute, grave, dead_cedilla, dead_ogonek ] }; + key { [numbersign, apostrophe, rightsinglequotemark, dead_grave ] }; }; @@ -179,7 +172,7 @@ xkb_symbols "T3" { key.type[Group1] = "THREE_LEVEL"; key { [ Shift_L, Shift_L, ISO_Level5_Latch ] }; key { [ Shift_R, Shift_R, ISO_Level5_Latch ] }; - key { [ ISO_Level3_Latch, ISO_Level5_Latch, ISO_Level5_Latch ] }; + key { [ ISO_Level3_Shift, ISO_Level5_Latch, ISO_Level5_Latch ] }; }; partial alphanumeric_keys @@ -207,7 +200,7 @@ xkb_symbols "ro_nodeadkeys" { // Read the comment for de_ro ! include "de(nodeadkeys)" - name[Group1]="Romanian (Germany, eliminate dead keys)"; + name[Group1]="Romanian (Germany, no dead keys)"; key { [ t, T, tcedilla, Tcedilla ] }; key { [ i, I, icircumflex, Icircumflex ] }; @@ -291,7 +284,7 @@ xkb_symbols "sundeadkeys" { include "de(Sundeadkeys)" - name[Group1]="German (Sun dead keys)"; + name[Group1]="German (with Sun dead keys)"; }; @@ -338,7 +331,7 @@ xkb_symbols "neo_base" { // Alphanumeric-keys // =============== - key.type[Group1] = "EIGHT_LEVEL"; + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; // Tab as Multi_key (Compose) // -------------------------------------------------------------- @@ -366,7 +359,7 @@ xkb_symbols "neo_base" { // Top row // -------------------------------------------------------------- - key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; key { [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ] }; key { [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] }; key { [ l, L, bracketleft, Greek_lambda, Up, Up, Greek_LAMBDA, NoSymbol ] }; @@ -381,12 +374,12 @@ xkb_symbols "neo_base" { key { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] }; - key.type[Group1] = "EIGHT_LEVEL"; + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; key { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] }; // Middle row // -------------------------------------------------------------- - key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; key { [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] }; key { [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] }; key { [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] }; @@ -411,12 +404,12 @@ xkb_symbols "neo_base" { key { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] }; key { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] }; - key.type[Group1] = "EIGHT_LEVEL"; + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; key { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] }; key { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] }; - key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; key { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] }; - key.type[Group1] = "EIGHT_LEVEL"; + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; // Space key // -------------------------------------------------------------- @@ -472,8 +465,8 @@ xkb_symbols "neo" { include "shift(both_capslock)" include "level3(caps_switch)" include "level3(bksl_switch)" - include "level5(lsgt_switch)" - include "level5(ralt_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" }; // Copied from macintosh_vndr/de @@ -510,7 +503,7 @@ partial alphanumeric_keys xkb_symbols "mac_nodeadkeys" { // modify the standard German mac layout to not have any dead keys include "de(mac)" - name[Group1]= "German (Macintosh, eliminate dead keys)"; + name[Group1]= "German (Macintosh, no dead keys)"; key { [ asciicircum, degree, notsign ] }; key { [ 4, dollar, onequarter, currency ] }; @@ -520,7 +513,7 @@ xkb_symbols "mac_nodeadkeys" { key { [ odiaeresis, Odiaeresis, acute ] }; key { [ adiaeresis, Adiaeresis, asciicircum ] }; - key { [ numbersign, apostrophe, grave ] }; + key { [ numbersign, apostrophe, rightsinglequotemark ] }; }; partial alphanumeric_keys @@ -550,7 +543,7 @@ partial alphanumeric_keys xkb_symbols "dsb_qwertz" { include "latin(basic)" - name[Group1] = "Lower Sorbian (qwertz)"; + name[Group1] = "Lower Sorbian (QWERTZ)"; key { [ y, Y ] }; key { [ x, X ] }; key { [ c, C, cacute, Cacute ] }; @@ -580,7 +573,7 @@ xkb_symbols "qwerty" { include "de(basic)" - name[Group1] = "German (qwerty)"; + name[Group1] = "German (QWERTY)"; key { [ z, Z, leftarrow, yen ] }; key { [ y, Y, guillemotleft, less ] }; @@ -597,8 +590,6 @@ xkb_symbols "ru" { name[Group1]= "Russian (Germany, phonetic)"; - key.type[group1]="FOUR_LEVEL_ALPHABETIC"; - key { [ Cyrillic_a, Cyrillic_A ] }; key { [ Cyrillic_be, Cyrillic_BE ] }; key { [ Cyrillic_ve, Cyrillic_VE ] }; @@ -636,6 +627,142 @@ xkb_symbols "ru" { include "level3(ralt_switch)" }; +// layout for Russian (recommended) letters on a german keyboard +// based on "Russisch für Deutsche, empfohlen" by B. Bendixen und H. Rothe http://russisch.urz.uni-leipzig.de/key2000.htm 2016-02-01 +// adapted for Linux by Niko Krause 2016-06-09 + +partial alphanumeric_keys +xkb_symbols "ru-recom" { + + include "de(basic)" + + name[Group1]= "Russian (Germany, recommended)"; + + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_ya, Cyrillic_YA, asciicircum, degree ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_yi, Ukrainian_YI ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_es, Cyrillic_ES, Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_yu, Cyrillic_YU ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, plus, asterisk ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, numbersign, apostrophe ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + + key { [ asciitilde, question, backslash, questiondown ] }; + key { [ U0301, U0300, U0323, U0307 ] }; + + include "level3(ralt_switch)" +}; + +// layout for Russian (transliteration) letters on a german keyboard +// based on "Russisch für Deutsche, Transliteration" by B. Bendixen und H. Rothe http://russisch.urz.uni-leipzig.de/key2000.htm 2016-02-01 +// adapted for Linux by Niko Krause 2016-06-09 + +partial alphanumeric_keys +xkb_symbols "ru-translit" { + + include "de(basic)" + + name[Group1]= "Russian (Germany, transliteration)"; + + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_ya, Cyrillic_YA, asciicircum, degree ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; + key { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Ukrainian_yi, Ukrainian_YI ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_es, Cyrillic_ES, Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_io, Cyrillic_IO ] }; + key { [ Cyrillic_yu, Cyrillic_YU ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, plus, asterisk ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, numbersign, apostrophe ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + + key { [ asciitilde, question, backslash, questiondown ] }; + key { [ U0301, U0300, U0323, U0307 ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "pl" { + + // Combined layout for entering both German and Polish symbols on a German physical + // keyboard. Based on German (no dead keys) and Polish (basic). Polish diacritics + // on AltGr+"acelnosxz". EuroSign moved to AE04 (AltGr+dollar key) to avoid conflict + // with Polish eogonek. + // + // https://github.com/kontextify/xkeyboard-config + + include "latin(type4)" + + name[Group1]= "Polish (Germany, no dead keys)"; + + include "de(nodeadkeys)" + key { [ 4, dollar, EuroSign, currency ] }; + + key { [ q, Q ] }; + key { [ w, W ] }; + key { [ e, E, eogonek, Eogonek ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ a, A, aogonek, Aogonek ] }; + key { [ s, S, sacute, Sacute ] }; + key { [ f, F ] }; + key { [ z, Z, zabovedot, Zabovedot ] }; + key { [ x, X, zacute, Zacute ] }; + key { [ c, C, cacute, Cacute ] }; + key { [ n, N, nacute, Nacute ] }; + + include "kpdl(comma)" + + include "level3(ralt_switch)" +}; + partial alphanumeric_keys xkb_symbols "htcdream" { include "inet(htcdream)" @@ -705,7 +832,7 @@ partial alphanumeric_keys xkb_symbols "us" { include "us" - name[Group1]="German (US keyboard with German letters)"; + name[Group1]="German (US, with German letters)"; key { [ a, A, adiaeresis, Adiaeresis ] }; key { [ s, S, ssharp, ssharp ] }; @@ -729,19 +856,19 @@ xkb_symbols "hu" { include "de(basic)" name[Group1]="German (with Hungarian letters and no dead keys)"; - key { [ y, Y, guillemotleft, less ] }; - key { [odiaeresis, Odiaeresis, eacute, Eacute ] }; - key { [adiaeresis, Adiaeresis, aacute, Aacute] }; - key { [ e, E, EuroSign, EuroSign ] }; - key { [ z, Z, leftarrow, yen ] }; - key { [ u, U, uacute, Uacute ] }; - key { [ i, I, iacute, Iacute ] }; - key { [ o, O, odoubleacute,Odoubleacute ] }; - key { [udiaeresis, Udiaeresis, udoubleacute,Udoubleacute ] }; - key { [ plus, asterisk, asciitilde, macron ] }; - key { [ acute, grave, oacute, Oacute ] }; - key { [numbersign, apostrophe, grave, grave ] }; - key { [asciicircum, degree, notsign, notsign ] }; + key { [ y, Y, guillemotleft, less ] }; + key { [odiaeresis, Odiaeresis, eacute, Eacute ] }; + key { [adiaeresis, Adiaeresis, aacute, Aacute] }; + key { [ e, E, EuroSign, EuroSign ] }; + key { [ z, Z, leftarrow, yen ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, odoubleacute, Odoubleacute ] }; + key { [udiaeresis, Udiaeresis, udoubleacute, Udoubleacute ] }; + key { [ plus, asterisk, asciitilde, macron ] }; + key { [ acute, grave, oacute, Oacute ] }; + key { [numbersign, apostrophe, rightsinglequotemark, grave ] }; + key { [asciicircum, degree, notsign, notsign ] }; }; partial alphanumeric_keys @@ -753,11 +880,11 @@ partial alphanumeric_keys xkb_symbols "adnw_base" { include "de(neo_base)" - key.type[Group1] = "EIGHT_LEVEL"; + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; - key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; @@ -800,7 +927,227 @@ xkb_symbols "adnw" { include "shift(both_capslock)" include "level3(caps_switch)" include "level3(bksl_switch)" - include "level5(lsgt_switch)" - include "level5(ralt_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "koy_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "koy" { + + include "de(koy_base)" + + name[Group1]= "German (KOY)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" }; +partial alphanumeric_keys +xkb_symbols "bone_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "bone" { + + include "de(bone_base)" + + name[Group1]= "German (Bone)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "bone_eszett_home_base" { + include "de(bone_base)" + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "bone_eszett_home" { + + include "de(bone_eszett_home_base)" + + name[Group1]= "German (Bone, eszett home row)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "neo_qwertz_base" { + include "de(neo_base)" + + key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK"; + key { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] }; + key { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] }; + key { [ minus, emdash, NoSymbol, U2011, NoSymbol, NoSymbol, hyphen, NoSymbol ] }; + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; + key { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] }; + key { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] }; + key { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] }; + key { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] }; + key { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] }; + key { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; + key { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] }; + key { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] }; + key { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] }; + key { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] }; + key { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] }; + key { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] }; + key { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] }; + key { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] }; + key { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] }; + key { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] }; + key { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] }; + key { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] }; + key { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] }; + key { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] }; + key { [ odiaeresis, Odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] }; + key { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] }; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] }; + key { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] }; + key { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] }; + key { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] }; + key { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] }; + key { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo_qwertz" { + + include "de(neo_qwertz_base)" + + name[Group1]= "German (Neo qwertz)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys +xkb_symbols "neo_qwerty_base" { + include "de(neo_qwertz_base)" + + key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK"; + key { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] }; + key { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] }; +}; + +partial alphanumeric_keys modifier_keys keypad_keys +xkb_symbols "neo_qwerty" { + + include "de(neo_qwerty_base)" + + name[Group1]= "German (Neo qwerty)"; + + include "shift(both_capslock)" + include "level3(caps_switch)" + include "level3(bksl_switch)" + include "level5(lsgt_switch_lock)" + include "level5(ralt_switch_lock)" +}; + +partial alphanumeric_keys + xkb_symbols "lld" { + include "de(basic)" + name[Group1] = "German Ladin"; + + key { [ p, P, ediaeresis, Ediaeresis ] }; + +}; diff --git a/test/data/symbols/group b/test/data/symbols/group index 8b00dff..12f35a4 100644 --- a/test/data/symbols/group +++ b/test/data/symbols/group @@ -45,6 +45,16 @@ xkb_symbols "rwin_switch" { }; }; +// The right Menu key (while pressed) chooses the second keyboard group. +// while Shift+Menu acts as Menu. +partial modifier_keys +xkb_symbols "menu_switch" { + key { + symbols[Group1] = [ Mode_switch, Menu ], + virtualMods= AltGr + }; +}; + // The right Ctrl key (while pressed) chooses the second keyboard group. // (Needed mainly for the Canadian keyboard.) partial modifier_keys @@ -89,8 +99,9 @@ xkb_symbols "shift_caps_switch" { partial modifier_keys xkb_symbols "win_space_toggle" { key { - type[Group1]="PC_SUPER_LEVEL2", - symbols[Group1]= [ space, ISO_Next_Group ] + type="PC_SUPER_LEVEL2", + symbols[Group1]= [ space, ISO_Next_Group ], + symbols[Group2]= [ space, ISO_Next_Group ] }; }; @@ -322,18 +333,18 @@ partial modifier_keys xkb_symbols "ctrls_toggle" { virtual_modifiers LControl, RControl; key { - type[Group1]="PC_RCONTROL_LEVEL2", + type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], virtualMods= LControl }; key { - type[Group1]="PC_LCONTROL_LEVEL2", + type[Group1]="PC_CONTROL_LEVEL2", symbols[Group1] = [ NoSymbol, ISO_Next_Group ], virtualMods= RControl }; }; -// Pressing both Alt keys switches to the next or previous group +// Pressing both Alt switches to the next or previous group // (depending on which Alt is pressed first). partial modifier_keys xkb_symbols "alts_toggle" { @@ -446,3 +457,13 @@ xkb_symbols "lctrl_lwin_rctrl_menu" { symbols[Group1] = [ Menu, ISO_Last_Group ] }; }; + +// Control_L+Win_L toggles groups. +partial modifier_keys +xkb_symbols "lctrl_lwin_toggle" { + key { + type[ Group1 ] = "PC_CONTROL_LEVEL2", + symbols[ Group1 ] = [ Super_L, ISO_Next_Group ] + }; +}; + diff --git a/test/data/symbols/il b/test/data/symbols/il index 48452d6..67487c1 100644 --- a/test/data/symbols/il +++ b/test/data/symbols/il @@ -205,7 +205,7 @@ xkb_symbols "biblical" { key { [ 2, U0599, VoidSymbol, at ] }; key { [ 3, U0592, VoidSymbol, numbersign ] }; key { [ 4, U05AF, NewSheqelSign, dollar ] }; - key { [ 5, VoidSymbol, U200D, percent ] }; + key { [ 5, U05BA, U200D, percent ] }; key { [ 6, U05B9, U200C, asciicircum ] }; key { [ 7, U05BF, U034F, ampersand ] }; key { [ 8, U05C2, U200E, asterisk ] }; diff --git a/test/data/symbols/in b/test/data/symbols/in index 04c35a2..79d5099 100644 --- a/test/data/symbols/in +++ b/test/data/symbols/in @@ -4,6 +4,7 @@ // - Gujarati // - Kannada // - Malayalam +// - Ol Chiki // - Oriya // - Tamil // - Telugu @@ -21,6 +22,8 @@ // http://ekushey.org/projects/shadhinota/index.html // - Microsoft Windows XP SP2: Indic Language Standards - an Introduction: // http://www.bhashaindia.com/MSProducts/XpSp2/Articles/IndicLanguageStandards.aspx +// - Ol Chiki: +// http://www.unicode.org/L2/L2005/05243r-n2984-ol-chiki.pdf (fig. 9) // based on a keyboard map from an 'xkb/symbols/dev' file @@ -914,6 +917,75 @@ xkb_symbols "mal_lalitha" { partial alphanumeric_keys +xkb_symbols "olck" { + + // Layout for the Ol Chiki script. + // http://www.unicode.org/L2/L2005/05243r-n2984-ol-chiki.pdf (figure 9) + + name[Group1]= "Ol Chiki"; + + key { [ grave, U1C7B ] }; + + key { [ U1C51, exclam ] }; + key { [ U1C52, at ] }; + key { [ U1C53, numbersign ] }; + key { [ U1C54, dollar, U20B9 ] }; + key { [ U1C55, percent ] }; + key { [ U1C56, asciicircum ] }; + key { [ U1C57, ampersand ] }; + key { [ U1C58, asterisk ] }; + key { [ U1C59, parenleft ] }; + key { [ U1C50, parenright ] }; + key { [ minus, U1C7C ] }; + key { [ equal, plus ] }; + + key { [ U1C67 ] }; + key { [ U1C63 ] }; + key { [ U1C6E ] }; + key { [ U1C68 ] }; + key { [ U1C74, U1C5B ] }; + key { [ U1C6D ] }; + key { [ U1C69 ] }; + key { [ U1C64 ] }; + key { [ U1C5A, U1C73 ] }; + key { [ U1C6F ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + key { [ U1C7F, U1C7E ] }; + + key { [ U1C5F ] }; + key { [ U1C65 ] }; + key { [ U1C70, U1C6B ] }; + key { [ U1C5D ] }; + key { [ U1C5C ] }; + key { [ U1C66, U1C77 ] }; + key { [ U1C61 ] }; + key { [ U1C60 ] }; + key { [ U1C5E ] }; + key { [ semicolon, U1C7A ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ U1C72 ] }; + key { [ U1C7D ] }; + key { [ U1C6A ] }; + key { [ U1C76 ] }; + key { [ U1C75 ] }; + key { [ U1C71, U1C78 ] }; + key { [ U1C62, U1C6C ] }; + key { [ comma, less ] }; + key { [ U1C79, greater ] }; + key { [ slash, question ] }; + + key { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods = AltGr + }; + + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys xkb_symbols "ori" { // Inscript layout for Oriya // Author: G Karunakar @@ -1357,7 +1429,80 @@ xkb_symbols "tel" { include "level3(ralt_switch)" }; +//Name : Sarala +//Description : This is an adaptation of the Sarala keyboard (http://www.medhajananam.org/sarala/) developed +// by Krishna Dhullipalla. Because of the way keyboard shortcuts are laid out in KDE, the keyboard +// modifiers had to be changed. The layout does not take any part of the original Sarala keyboard +// code however. It has been developed from scratch, so the experience may differ. +// +// There is a ibus-m17n version of Sarala layout developed by Satya Pothamsetti on +// http://www.medhajananam.org/. +//Standard : Supports Unicode 9.0. +//Help : This layout differs slightly from the layout on Medhajenanam. The layout has been depicted in the +// pdf file attached to this post on Sarala google group. +// (https://groups.google.com/forum/#!topic/sarala-keyboard/-gsa90dUFcs). +// +//Layout Developed by : Krishna Dhullipalla (http://www.medhajananam.org/) +//Author : Venkat R Akkineni +//Date : Apr 28 2017 partial alphanumeric_keys +xkb_symbols "tel-sarala" +{ + name[Group1] = "Telugu (Sarala)"; + key.type="FOUR_LEVEL"; + // sequence base, shift, alt, alt + shift + key { [ U0C4A, U0C12 ] }; // ొ ఒ + key { [ U0C42, U0C0A ] }; // ూ ఊ + key { [ U0C21, U0C22 ] }; // డ ఢ + key { [ U0C35, U0C39 ] }; // వ హ + key { [ U0C2C, U0C2D ] }; // బ భ + key { [ U0C28, U0C23 ] }; // న ణ + key { [ U0C2E, U0C01 ] }; // మ ఁ + key { [ U002C, U0C1E, leftcaret ] }; // , ఞ < + key { [ U002E, U0C19, rightcaret ] }; // . ఙ > + key { [ U0C36, question, KP_Divide ] }; // శ ? / + key { [ U0C2F, U0C3D ] }; // య ఽ + key { [ U0C02, U0C03 ] }; // ం ః + key { [ U0C26, U0C27 ] }; // ద ధ + key { [ U0C4D, U0C05 ] }; // ్ అ + key { [ U0C17, U0C18 ] }; // గ ఘ + key { [ U0C1A, U0C1B, U0C58, U0C59 ] }; // చ ఛ ౘ ౙ + key { [ U0C3E, U0C06 ] }; // ా ఆ + key { [ U0C15, U0C16, U0C62, U0C63 ] }; // క ఖ ౢ ౣ + key { [ U0C32, U0C33, U0C0C, U0C61 ] }; // ల ళ ఌ ౡ + key { [ U0C1F, U0C20, semicolon, colon ] }; // ట ఠ ; : + key { [ quoteright, quotedbl ] }; // ' " + key { [ U0C46, U0C0E, U0C44, U0C34 ] }; // ె ఎ ౄ ఴ + key { [ U0C38, U0C37, U0C44 ] }; // స ష ౄ + key { [ U0C47, U0C0F, U0C44 ] }; // ే ఏ ౄ + key { [ U0C30, U0C31, U0C44, U0C60 ] }; // ర ఱ ౄ ౠ + key { [ U0C24, U0C25 ] }; // త థ + key { [ U0C40, U0C08 ] }; // ీ ఈ + key { [ U0C41, U0C09 ] }; // ు ఉ + key { [ U0C3F, U0C07 ] }; // ి ఇ + key { [ U0C4B, U0C13 ] }; // ో ఓ + key { [ U0C2A, U0C2B ] }; // ప ఫ + key { [ U0C1C, U0C1D, bracketleft, braceleft ] }; // జ ఝ [ { + key { [ U0C48, U0C10, bracketright, braceright ] }; // ై ఐ ] } + key { [ KP_1, exclam, U0C67, U0C78 ] }; // 1 ! ౦ ౸ + key { [ KP_2, at, U0C68, U0C79 ] }; // 2 @ ౨ ౹ + key { [ KP_3, numbersign, U0C69, U0C7A ] }; // 3 # ౩ ౺ + key { [ KP_4, dollar, U0C6A, U0C7B ] }; // 4 $ ౪ ౻ + key { [ KP_5, percent, U0C6B, U0C7C ] }; // 5 % ౫ ౼ + key { [ KP_6, asciicircum, U0C6C, U0C7D ] }; // 6 ^ ౬ ౽ + key { [ KP_7, ampersand, U0C6D, U0C7E ] }; // 7 & ౭ ౾ + key { [ KP_8, KP_Multiply, U0C6E, U0C7F ] }; // 8 * ౮ ౿ + key { [ KP_9, U0028, U0C6F, U20B9 ] }; // 9 ( ౯ ₹ + key { [ KP_0, U0029, U0C66, U0C55 ] }; // 0 ) ౦ ౕ + key { [ KP_Subtract, underbar, NoSymbol, U0C56 ] }; // - _ ౖ + key { [ KP_Equal, KP_Add ] }; // = + + key { [ U0C4C, U0C14, U0964, U0965 ] }; // ౌ ఔ । ॥ + key { [ U0C43, U0C0B, quoteleft, asciitilde ] }; // ృ ఋ ` ~ + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys xkb_symbols "urd-phonetic" { include "pk(urd-phonetic)" name[Group1]= "Urdu (phonetic)"; @@ -1366,13 +1511,13 @@ xkb_symbols "urd-phonetic" { partial alphanumeric_keys xkb_symbols "urd-phonetic3" { include "pk(urd-crulp)" - name[Group1]= "Urdu (alternative phonetic)"; + name[Group1]= "Urdu (alt. phonetic)"; }; partial alphanumeric_keys xkb_symbols "urd-winkeys" { include "pk(urd-nla)" - name[Group1]= "Urdu (WinKeys)"; + name[Group1]= "Urdu (Win keys)"; }; // based on a keyboard map from an 'xkb/symbols/gur' file @@ -1654,7 +1799,7 @@ partial alphanumeric_keys xkb_symbols "eng" { include "us(basic)" - name[Group1]= "English (India, with rupee sign)"; + name[Group1]= "English (India, with rupee)"; include "rupeesign(4)" include "level3(ralt_switch)" @@ -1672,7 +1817,7 @@ xkb_symbols "eng" { partial alphanumeric_keys xkb_symbols "mal_enhanced" { - name[Group1] = "Malayalam (enhanced Inscript, with rupee sign)"; + name[Group1] = "Malayalam (enhanced Inscript, with rupee)"; //From grave to backslash (\) diff --git a/test/data/symbols/inet b/test/data/symbols/inet index 33b0583..5403e77 100644 --- a/test/data/symbols/inet +++ b/test/data/symbols/inet @@ -2,7 +2,7 @@ // Copyright (C) 2002 Stanislav Brabec // // Based on the LinEAK project. -// LinEAK - Linux support for Easy Access and Internet Keyboards +// LinEAK - Linux support for Easy Access and Internets // Copyright (C) 2001, 2002 Mark Smulders // Usage in XF86Config: @@ -245,7 +245,7 @@ xkb_symbols "airkey" { key { [ XF86AudioStop, XF86Eject ] }; }; -// Acer C300 Laptop +// Acer C300 laptop partial alphanumeric_keys xkb_symbols "acer_c300" { include "inet(nav_common)" @@ -275,7 +275,7 @@ xkb_symbols "acer_ferrari4k" { key { [ XF86Launch4 ] }; }; -// Acer Laptop (Generic layout for Acer laptops from 2004 onwards) +// Acer laptop (Generic layout for Acer laptops from 2004 onwards) // From Carlos Corbacho // Keys marked (HAL) require HAL 0.5.10 (or newer) to be set up correctly // (Your laptop must also be added to hal-info) @@ -310,7 +310,7 @@ xkb_symbols "acer_laptop" { // Azona -// Azona RF2300 wireless Internet Keyboard +// Azona RF2300 wireless Internet partial alphanumeric_keys xkb_symbols "azonaRF2300" { // From Radics Laszlo @@ -331,7 +331,7 @@ xkb_symbols "azonaRF2300" { // Brother -// Brother Internet Keyboard +// Brother Internet partial alphanumeric_keys xkb_symbols "brother" { include "inet(acpi_common)" @@ -491,7 +491,7 @@ xkb_symbols "cherryblueb" { key { [ XF86Go ] }; }; -// Cherry Blue Line CyBo@rd (alternate option) +// Cherry Blue Line CyBo@rd (alt.) partial alphanumeric_keys xkb_symbols "cherrybluea" { include "inet(media_nav_acpi_common)" @@ -519,7 +519,7 @@ xkb_symbols "cherrycmexpert" { // Chicony -// Chicony Internet Keyboard +// Chicony Internet partial alphanumeric_keys xkb_symbols "chicony" { include "inet(acpi_common)" @@ -578,7 +578,7 @@ xkb_symbols "chicony9885" { // Compaq -// Compaq Easy Access Keyboard +// Compaq Easy Access partial alphanumeric_keys xkb_symbols "compaqeak8" { key { [ XF86Community ] }; @@ -591,7 +591,7 @@ xkb_symbols "compaqeak8" { key { [ XF86WWW ] }; }; -// Compaq Internet Keyboard (7 keys) +// Compaq Internet (7 keys) partial alphanumeric_keys xkb_symbols "compaqik7" { key { [ XF86LightBulb ] }; @@ -603,7 +603,7 @@ xkb_symbols "compaqik7" { key { [ XF86Shop ] }; }; -// Compaq Internet Keyboard (13 keys) +// Compaq Internet (13 keys) partial alphanumeric_keys xkb_symbols "compaqik13" { include "inet(media_acpi_common)" @@ -614,7 +614,7 @@ xkb_symbols "compaqik13" { key { [ XF86Shop ] }; }; -// Compaq Internet Keyboard (18 keys) +// Compaq Internet (18 keys) partial alphanumeric_keys xkb_symbols "compaqik18" { include "inet(media_acpi_common)" @@ -630,7 +630,7 @@ xkb_symbols "compaqik18" { key { [ Print ] }; }; -// Laptop/notebook Compaq (eg. Armada, Evo) Laptop Keyboard +// laptop/notebook Compaq (eg. Armada, Evo) laptop Keyboard partial alphanumeric_keys xkb_symbols "armada" { include "inet(media_acpi_common)" @@ -643,7 +643,7 @@ xkb_symbols "armada" { key { [ XF86Launch0 ] }; // Info Center }; -// Laptop/notebook Compaq (eg. Presario) Internet Keyboard +// Compaq Presario laptop partial alphanumeric_keys xkb_symbols "presario" { include "inet(media_acpi_common)" @@ -656,7 +656,7 @@ xkb_symbols "presario" { key { [ XF86AudioMedia ] }; }; -// Compaq iPaq Keyboard +// Compaq iPaq partial alphanumeric_keys xkb_symbols "ipaq" { key { [ XF86Shop ] }; @@ -679,7 +679,7 @@ xkb_symbols "dell" { key { [ XF86HomePage ] }; }; -// Dell Precision M65 +// Dell Precision M65 laptop partial alphanumeric_keys xkb_symbols "dellm65" { include "inet(media_common)" @@ -687,7 +687,7 @@ xkb_symbols "dellm65" { key { [ Super_L ] }; }; -// Laptop/notebook Dell Inspiron 8xxx +// laptop/notebook Dell Inspiron 8xxx partial alphanumeric_keys xkb_symbols "inspiron" { include "inet(media_common)" @@ -699,7 +699,7 @@ xkb_symbols "inspiron" { key { [ XF86AudioPlay, XF86AudioPause ] }; }; -// DELL USB Multimedia Keyboard (former 8135, generalized, superset of 8125) +// DELL USB Multimedia (former 8135, generalized, superset of 8125) partial alphanumeric_keys xkb_symbols "dellusbmm" { // Describes the extra keys on a SK-8135 Multimedia keyboard @@ -713,7 +713,7 @@ xkb_symbols "dellusbmm" { // Diamond -// Diamond 9801 / 9802 series +// Diamond 9801/9802 partial alphanumeric_keys xkb_symbols "diamond" { include "inet(media_nav_acpi_common)" @@ -733,7 +733,7 @@ xkb_symbols "ennyah_dkb1008" { // Genius -// Genius Comfy KB-16M / Genius MM Keyboard KWD-910 +// Genius Comfy KB-16M/Multimedia KWD-910 partial alphanumeric_keys xkb_symbols "genius" { include "inet(media_acpi_common)" @@ -779,7 +779,7 @@ xkb_symbols "gyration" { // Hewlett-Packard -// Hewlett-Packard Internet Keyboard +// Hewlett-Packard Internet partial alphanumeric_keys xkb_symbols "hpi6" { include "inet(media_nav_acpi_common)" @@ -797,7 +797,7 @@ xkb_symbols "hpi6" { key { [ Help ] }; }; -// Hewlett-Packard SK-2501, SK-2505 Multimedia Keyboard +// Hewlett-Packard SK-2501, SK-2505 Multimedia partial alphanumeric_keys xkb_symbols "hp250x" { key { [ XF86Tools ] }; @@ -854,7 +854,7 @@ xkb_symbols "hpxt1000" { key { [ XF86Launch1 ] }; }; -// Hewlett-Packard Pavilion ZT11xx +// Hewlett-Packard Pavilion ZT1100 partial alphanumeric_keys xkb_symbols "hpzt11xx" { // Describes the OneTouch buttons on HP Pavilion ZT11xx models. @@ -903,7 +903,7 @@ xkb_symbols "hp500fa" { key { [ XF86Launch1 ] }; }; -// Hewlett-Packard Omnibook 5xx +// Hewlett-Packard Omnibook 500 partial alphanumeric_keys xkb_symbols "hp5xx" { // Describes the OneTouch buttons on HP Omnibook 5xx models. @@ -1036,7 +1036,7 @@ xkb_symbols "logitech_set3" { key { [ XF86AudioMedia ] }; }; -// Logitech Access Keyboard +// Logitech Access partial alphanumeric_keys xkb_symbols "logiaccess" { include "inet(logitech_base)" @@ -1046,14 +1046,14 @@ xkb_symbols "logiaccess" { key { [ XF86WebCam ] }; }; -// Logitech Cordless Desktop (alternate option) +// Logitech Cordless Desktop (alt.) partial alphanumeric_keys xkb_symbols "logicda" { include "inet(logitech_base)" include "inet(logitech_set3)" }; -// Logitech Internet Navigator Keyboard +// Logitech Internet Navigator partial alphanumeric_keys xkb_symbols "logicink" { include "inet(logitech_base)" @@ -1087,7 +1087,7 @@ xkb_symbols "logiex110" { key { [ XF86Launch4 ] }; // F12 }; -// Logitech iTouch Internet Navigator Keyboard SE +// Logitech iTouch Internet Navigator SE partial alphanumeric_keys xkb_symbols "logiinkse" { include "inet(logitech_base)" @@ -1103,14 +1103,14 @@ xkb_symbols "logiinkse" { key { [ XF86Save ] }; // F8 }; -// Logitech iTouch Internet Navigator Keyboard SE (USB) +// Logitech iTouch Internet Navigator SE USB partial alphanumeric_keys xkb_symbols "logiinkseusb" { include "inet(logitech_base)" include "inet(logitech_set3)" }; -// Logitech iTouch Cordless Keyboard (model Y-RB6) +// Logitech iTouch Cordless Y-RB6 partial alphanumeric_keys xkb_symbols "logiitc" { include "inet(logitech_base)" @@ -1122,7 +1122,7 @@ xkb_symbols "logiitc" { key { [ XF86Launch1 ] }; }; -// Logitech Internet Keyboard +// Logitech Internet partial alphanumeric_keys xkb_symbols "logiik" { include "inet(logitech_base)" @@ -1245,7 +1245,7 @@ xkb_symbols "mx1998" { key { [ XF86ScrollUp ] }; }; -// Memorex MX2500 EZ-Access Keyboard +// Memorex MX2500 EZ-Access partial alphanumeric_keys xkb_symbols "mx2500" { include "inet(media_nav_acpi_common)" @@ -1271,7 +1271,7 @@ xkb_symbols "mx2750" { // Microsoft -// Microsoft Natural Ergonomic Keyboard 4000 +// Microsoft Natural Ergonomic 4000 partial alphanumeric_keys xkb_symbols "microsoft4000" { include "inet(media_nav_common)" @@ -1284,7 +1284,7 @@ xkb_symbols "microsoft4000" { // slider. }; -// Microsoft Natural Wireless Ergonomic Keyboard 7000 +// Microsoft Natural Wireless Ergonomic 7000 partial alphanumeric_keys xkb_symbols "microsoft7000" { include "inet(media_nav_common)" @@ -1306,14 +1306,14 @@ xkb_symbols "microsoft7000" { // and Zoom in and out buttons. }; -// Microsoft Internet Keyboard +// Microsoft Internet partial alphanumeric_keys xkb_symbols "microsoftinet" { include "inet(nav_acpi_common)" key { [ XF86AudioStop ] }; }; -// Microsoft Natural Keyboard Pro USB +// Microsoft Natural Pro USB partial alphanumeric_keys xkb_symbols "microsoftprousb" { include "inet(nav_common)" @@ -1335,7 +1335,7 @@ xkb_symbols "microsoftprousb" { // key { [ XF86MyComputer ] }; }; -// Microsoft Natural Keyboard Pro OEM +// Microsoft Natural Pro OEM partial alphanumeric_keys xkb_symbols "microsoftprooem" { include "inet(media_nav_common)" @@ -1348,7 +1348,7 @@ xkb_symbols "microsoftprooem" { // My Computer Section -- Far Right }; -// Microsoft Internet Keyboard Pro, Swedish +// Microsoft Internet Pro (Swedish) partial alphanumeric_keys xkb_symbols "microsoftprose" { include "inet(nav_common)" @@ -1399,7 +1399,7 @@ xkb_symbols "microsoftoffice" { key { [ XF86Paste ] }; }; -// Microsoft Wireless Multimedia Keyboard 1.0A +// Microsoft Wireless Multimedia 1.0A partial alphanumeric_keys xkb_symbols "microsoftmult" { include "inet(media_nav_acpi_common)" @@ -1450,7 +1450,7 @@ xkb_symbols "oretec" { // Propeller -// Propeller Voyager (KTEZ-1000) +// Propeller Voyager KTEZ-1000 partial alphanumeric_keys xkb_symbols "propeller" { include "inet(media_common)" @@ -1527,7 +1527,7 @@ xkb_symbols "samsung4510" { // SK -// SK-1300 +// NEC SK-1300 partial alphanumeric_keys xkb_symbols "sk1300" { include "inet(media_common)" @@ -1539,7 +1539,7 @@ xkb_symbols "sk1300" { key { [ XF86Stop ] }; }; -// SK-2500 +// NEC SK-2500 partial alphanumeric_keys xkb_symbols "sk2500" { include "inet(media_nav_common)" @@ -1555,7 +1555,7 @@ xkb_symbols "sk2500" { key { [ XF86ScreenSaver ] }; }; -// SK-6200 +// NEC SK-6200 partial alphanumeric_keys xkb_symbols "sk6200" { include "inet(acpi_common)" @@ -1573,7 +1573,7 @@ xkb_symbols "sk6200" { key { [ XF86Mail ] }; }; -// SK-7100 +// NEC SK-7100 partial alphanumeric_keys xkb_symbols "sk7100" { include "inet(media_common)" @@ -1628,7 +1628,7 @@ xkb_symbols "sven303" { // Symplon -// Symplon PaceBook (tablet PC) +// Symplon PaceBook tablet partial alphanumeric_keys xkb_symbols "symplon" { include "inet(nav_acpi_common)" @@ -1665,7 +1665,7 @@ xkb_symbols "toshiba_s3000" { // Trust -// Trust Wireless Keyboard Classic +// Trust Wireless Classic partial alphanumeric_keys xkb_symbols "trust" { include "inet(media_nav_acpi_common)" @@ -1673,7 +1673,7 @@ xkb_symbols "trust" { key { [ XF86Eject ] }; }; -// Trust Direct Access Keyboard +// Trust Direct Access partial alphanumeric_keys xkb_symbols "trustda" { include "inet(media_common)" @@ -1691,7 +1691,7 @@ xkb_symbols "trustda" { // YaHoo! -// Yahoo! Internet Keyboard +// Yahoo! Internet partial alphanumeric_keys xkb_symbols "yahoo" { include "inet(acpi_common)" @@ -1875,3 +1875,35 @@ xkb_symbols "htcdream" { modifier_map Shift { , }; }; + +partial alphanumeric_keys +xkb_symbols "chromebook" { + include "level3(ralt_switch)" + key { [ XF86Back ] }; + key { [ XF86Forward ] }; + key { [ XF86Reload ] }; + key { [ F11 ] }; +// key { [ F5, F5, F5, F5 ] }; // Overview key + key { [ XF86MonBrightnessDown ] }; + key { [ XF86MonBrightnessUp ] }; + key { [ XF86AudioMute ] }; + key { [ XF86AudioLowerVolume ] }; + key { [ XF86AudioRaiseVolume ] }; + key { [ BackSpace, BackSpace, Delete ] }; + key { [ Up, Up, Prior, Up ] }; + key { [ Down, Down, Next, Down ] }; + key { [ Left, Left, Home, Left ] }; + key { [ Right, Right, End, Right ] }; + key { [ Super_L, Super_L, Caps_Lock, Super_L ] }; +}; + +partial alphanumeric_keys +xkb_symbols "teck227" { + include "inet(media_nav_common)" + key { [ Hiragana ] }; +}; + +partial alphanumeric_keys +xkb_symbols "teck229" { + include "inet(teck227)" +}; diff --git a/test/data/symbols/keypad b/test/data/symbols/keypad index 1efc02b..8b0e098 100644 --- a/test/data/symbols/keypad +++ b/test/data/symbols/keypad @@ -1,3 +1,27 @@ +default hidden partial keypad_keys +xkb_symbols "x11" { + + include "keypad(operators)" + + key { [ KP_Home, KP_7 ] }; + key { [ KP_Up, KP_8 ] }; + key { [ KP_Prior, KP_9 ] }; + + key { [ KP_Left, KP_4 ] }; + key { [ KP_Begin, KP_5 ] }; + key { [ KP_Right, KP_6 ] }; + + key { [ KP_End, KP_1 ] }; + key { [ KP_Down, KP_2 ] }; + key { [ KP_Next, KP_3 ] }; + key { [ KP_Enter ] }; + key { [ KP_Equal ] }; + + key { [ KP_Insert, KP_0 ] }; + key { [ KP_Delete, KP_Decimal ] }; + key { [ KP_Decimal, KP_Decimal ] }; +}; + hidden partial keypad_keys xkb_symbols "overlay" { include "keypad(overlay1)" @@ -93,31 +117,6 @@ xkb_symbols "operators" { }; }; -default hidden partial keypad_keys -xkb_symbols "x11" { - - include "keypad(operators)" - - key { [ KP_Home, KP_7 ] }; - key { [ KP_Up, KP_8 ] }; - key { [ KP_Prior, KP_9 ] }; - - key { [ KP_Left, KP_4 ] }; - key { [ KP_Begin, KP_5 ] }; - key { [ KP_Right, KP_6 ] }; - - key { [ KP_End, KP_1 ] }; - key { [ KP_Down, KP_2 ] }; - key { [ KP_Next, KP_3 ] }; - key { [ KP_Enter ] }; - key { [ KP_Equal ] }; - - key { [ KP_Insert, KP_0 ] }; - key { [ KP_Delete, KP_Decimal ] }; - key { [ KP_Decimal, KP_Decimal ] }; -}; - - // Legacy PC keypad definition // Copyright © 2006-2007 Nicolas Mailhot keypad_keys @@ -488,13 +487,13 @@ xkb_symbols "ossnumber_wang" { // the numpad you can inherit the cursors, but you'll have to define // the digits yourself. This module can be included in the rules to // define math operators; these are the variants used in computer -// languages that are based on ASCII. NoSymbol doesn't mean that +// languages that are based on ASCII. NoSymbol does not mean that // nothing is bound to the key but that no assignment is done here. // srvr_ctrl(stdkeypad) and keypad(x11) declare the operator keys to // be of type CTRL+ALT in order to assign server control events to // them, but it uses the second level which is overwritten if we have // more than one definition (shift state) for the key. Instead, here -// the commands are put at the fourth level. +// the commands are put at the 4th lever. partial keypad_keys xkb_symbols "ops" { key { [ NoSymbol, slash, NoSymbol, XF86_Ungrab ] }; diff --git a/test/data/symbols/latin b/test/data/symbols/latin index 25a7d73..d88e3c4 100644 --- a/test/data/symbols/latin +++ b/test/data/symbols/latin @@ -205,7 +205,7 @@ xkb_symbols "intl" { key { [ grave, asciitilde, dead_grave, dead_tilde ] }; key { [ 1, exclam, exclamdown, dead_acute ] }; key { [ 2, at, copyright, dead_diaeresis ] }; - key { [ 3, numbersign, U2022, dead_doubleacute ] }; // U+2022 is bullet (the name bullet doesn't work) + key { [ 3, numbersign, U2022, dead_doubleacute ] }; // U+2022 is bullet (the name bullet does not work) key { [ 4, dollar, section, dead_cedilla ] }; key { [ 5, percent, EuroSign, dead_caron ] }; key { [ 6, asciicircum, cent, dead_circumflex ] }; diff --git a/test/data/symbols/level5 b/test/data/symbols/level5 index 1ae2e6d..ec8c9a9 100644 --- a/test/data/symbols/level5 +++ b/test/data/symbols/level5 @@ -31,6 +31,16 @@ xkb_symbols "ralt_switch" { include "level5(modifier_mapping)" }; +// The CapsLock key (while pressed) chooses the fifth shift level. +partial modifier_keys +xkb_symbols "caps_switch" { + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift ] + }; + include "level5(modifier_mapping)" +}; + // Ensure a mapping to a real modifier for LevelFive. partial modifier_keys xkb_symbols "modifier_mapping" { diff --git a/test/data/symbols/macintosh_vndr/apple b/test/data/symbols/macintosh_vndr/apple index 551eabc..53d260c 100644 --- a/test/data/symbols/macintosh_vndr/apple +++ b/test/data/symbols/macintosh_vndr/apple @@ -42,7 +42,7 @@ xkb_symbols "laptop" { // and use fn+Enter (Apple's code for Menu) for KP_Enter. replace key { [ ISO_Level3_Shift ] }; modifier_map Mod5 { ISO_Level3_Shift }; - // Linux kernel bug with Menu on macs means this doesn't work yet + // Linux kernel bug with Menu on macs means this does not work yet // replace key { [ KP_Enter ] }; // should be keycode 117 }; diff --git a/test/data/symbols/macintosh_vndr/us b/test/data/symbols/macintosh_vndr/us index 81e4b77..58bfee5 100644 --- a/test/data/symbols/macintosh_vndr/us +++ b/test/data/symbols/macintosh_vndr/us @@ -1,6 +1,6 @@ // symbols definition for a Macintosh "Extended" keyboard -xkb_symbols "extended" { +default xkb_symbols "extended" { name[Group1]= "USA"; key { [ Escape ] }; @@ -59,7 +59,7 @@ xkb_symbols "extended" { key { [ space ] }; include "eurosign(e)" - include "keypad" + include "keypad(overlay)" key { [ equal ] }; }; diff --git a/test/data/symbols/ru b/test/data/symbols/ru index c4f4818..964705c 100644 --- a/test/data/symbols/ru +++ b/test/data/symbols/ru @@ -15,7 +15,7 @@ xkb_symbols "winkeys" { key { [ 5, percent ] }; key { [ 6, colon ] }; key { [ 7, question ] }; - key { [ 8, asterisk ] }; + key { [ 8, asterisk, U20BD ] }; key { [ period, comma ] }; key { [ backslash, slash ] }; @@ -215,7 +215,7 @@ partial alphanumeric_keys xkb_symbols "phonetic_winkeys" { include "ru(phonetic)" - name[Group1]= "Russian (phonetic WinKeys)"; + name[Group1]= "Russian (phonetic, with Win keys)"; key { [ Cyrillic_ha, Cyrillic_HA ] }; key { [ Cyrillic_che, Cyrillic_CHE ] }; @@ -255,7 +255,7 @@ partial alphanumeric_keys xkb_symbols "os_winkeys" { include "ru(winkeys)" - name[Group1]= "Ossetian (WinKeys)"; + name[Group1]= "Ossetian (Win keys)"; key { [ Cyrillic_e, Cyrillic_E ] }; key { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; @@ -478,11 +478,12 @@ xkb_symbols "srp" { }; // Mari language layout -// http://www.marlamuter.ru/ +// http://www.marlamuter.com/ +// Last edit by Viatcheslav Kileev (slavakileev@yandex.ru) partial alphanumeric_keys xkb_symbols "chm" { - include "ru(common)" + include "ru(winkeys)" name[Group1]= "Mari"; key.type[group1]="FOUR_LEVEL_ALPHABETIC"; @@ -491,9 +492,208 @@ xkb_symbols "chm" { key { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] }; key { [ Cyrillic_yeru, Cyrillic_YERU, U04F9, U04F8 ] }; key { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] }; - key { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] }; - key { [ Cyrillic_zhe, Cyrillic_ZHE, U04EB, U04EA ] }; - key { [ Cyrillic_ef, Cyrillic_EF, UF537, UF536 ] }; + key { [ Cyrillic_o, Cyrillic_O, U04E7, U04E6 ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_azerty" { + + include "level3(ralt_switch)" + + name[Group1]= "Russian (phonetic, AZERTY)"; + + key { [ ampersand, 1, onesuperior, exclamdown ] }; + key { [ eacute, 2, asciitilde, oneeighth ] }; + key { [ quotedbl, 3, numbersign, sterling ] }; + key { [apostrophe, 4, braceleft, dollar ] }; + key { [ parenleft, 5, bracketleft, threeeighths ] }; + key { [ minus, 6, bar, fiveeighths ] }; + key { [ egrave, 7, grave, seveneighths ] }; + key { [underscore, 8, backslash, trademark ] }; + key { [ ccedilla, 9, asciicircum, plusminus ] }; + key { [ agrave, 0, at, degree ] }; + key { [parenright, degree, bracketright, questiondown ] }; + key { [ equal, plus, braceright, dead_ogonek ] }; + + key { [ comma, question, acute, doubleacute ] }; + key { [ semicolon, period, horizconnector, multiply ] }; + key { [ colon, slash, periodcentered, division ] }; + key { [ exclam, section, dead_belowdot, dead_abovedot ] }; + + key { [ ugrave, percent, asciicircum, caron ] }; + key { [ bar, brokenbar ] }; + + key { [ Cyrillic_yu, Cyrillic_YU ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; // Q + key { [ Cyrillic_ze, Cyrillic_ZE ] }; // Z + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; // W + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; // M + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; +}; + +// Russian dvorak phonetic layout +// Oleg Zalizniak +partial alphanumeric_keys +xkb_symbols "phonetic_dvorak" { + include "level3(ralt_switch)" + + name[Group1]= "Russian (phonetic, Dvorak)"; + + key { [ Cyrillic_yu, Cyrillic_YU ] }; + + key { [ 1, exclam ] }; + key { [ 2, at ] }; + key { [ 3, Cyrillic_io ] }; + key { [ 4, Cyrillic_IO ] }; + key { [ 5, Cyrillic_hardsign ] }; + key { [ 6, Cyrillic_HARDSIGN ] }; + key { [ 7, ampersand ] }; + key { [ 8, asterisk ] }; + key { [ 9, parenleft ] }; + key { [ 0, parenright ] }; + key { [ Cyrillic_sha, Cyrillic_SHA ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key { [ Cyrillic_e, Cyrillic_E ] }; + + key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_abovedot, periodcentered ] }; + key { [ Cyrillic_pe, Cyrillic_PE ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key { [ Cyrillic_ef, Cyrillic_EF ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key { [ Cyrillic_tse, Cyrillic_TSE ] }; + key { [ Cyrillic_er, Cyrillic_ER ] }; + key { [ Cyrillic_el, Cyrillic_EL ] }; + key { [ slash, question ] }; + key { [ Cyrillic_che, Cyrillic_CHE ] }; + + key { [ Cyrillic_a, Cyrillic_A ] }; + key { [ Cyrillic_o, Cyrillic_O ] }; + key { [ Cyrillic_ie, Cyrillic_IE ] }; + key { [ Cyrillic_u, Cyrillic_U ] }; + key { [ Cyrillic_i, Cyrillic_I ] }; + key { [ Cyrillic_de, Cyrillic_DE ] }; + key { [ Cyrillic_ha, Cyrillic_HA ] }; + key { [ Cyrillic_te, Cyrillic_TE ] }; + key { [ Cyrillic_en, Cyrillic_EN ] }; + key { [ Cyrillic_es, Cyrillic_ES ] }; + key { [ minus, underscore ] }; + + key { [ semicolon, colon, dead_ogonek, dead_doubleacute ] }; + key { [ Cyrillic_ya, Cyrillic_YA ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key { [ Cyrillic_ka, Cyrillic_KA ] }; + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key { [ Cyrillic_be, Cyrillic_BE ] }; + key { [ Cyrillic_em, Cyrillic_EM ] }; + key { [ Cyrillic_ve, Cyrillic_VE ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key { [ Cyrillic_ze, Cyrillic_ZE ] }; +}; + +partial alphanumeric_keys +xkb_symbols "phonetic_fr" { + + include "fr" + include "ru(phonetic_azerty)" + + name[Group1]= "Russian (phonetic, French)"; +}; + +// Rulemak, Colemak based Russian phonetic layout +// contact: Geert Hendrickx +// http://forum.colemak.com/viewtopic.php?id=519 + +partial alphanumeric_keys +xkb_symbols "rulemak" { + include "us(basic)" + + name[Group1]= "Russian (Rulemak, phonetic Colemak)"; + + key { [ Cyrillic_io, Cyrillic_IO, U0300, asciitilde ] }; + key { [ 1, exclam, U0301 ] }; + key { [ 2, at, U030B ] }; + key { [ 3, numerosign, numbersign ] }; + key { [ 4, dollar, cent ] }; + key { [ 5, percent, EuroSign ] }; + key { [ 6, asciicircum, U0306 ] }; + key { [ 7, ampersand, U0307 ] }; + key { [ 8, asterisk, U20BD ] }; + key { [ 9, parenleft, bracketleft ] }; + key { [ 0, parenright, bracketright ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] }; + + key { [ Cyrillic_ya, Cyrillic_YA, q, Q ] }; + key { [ Cyrillic_zhe, Cyrillic_ZHE, w, W ] }; + key { [ Cyrillic_ef, Cyrillic_EF, f, F ] }; + key { [ Cyrillic_pe, Cyrillic_PE, p, P ] }; + key { [ Cyrillic_ghe, Cyrillic_GHE, g, G ] }; + key { [ Cyrillic_shorti, Cyrillic_SHORTI, j, J ] }; + key { [ Cyrillic_el, Cyrillic_EL, l, L ] }; + key { [ Cyrillic_u, Cyrillic_U, u, U ] }; + key { [ Cyrillic_yeru, Cyrillic_YERU, y, Y ] }; + key { [ Cyrillic_yu, Cyrillic_YU, semicolon, colon ] }; + key { [ Cyrillic_sha, Cyrillic_SHA, guillemotleft, braceleft ] }; + key { [ Cyrillic_shcha, Cyrillic_SHCHA, guillemotright, braceright ] }; + key { [ Cyrillic_e, Cyrillic_E, backslash, bar ] }; + + key { [ Cyrillic_a, Cyrillic_A, a, A ] }; + key { [ Cyrillic_er, Cyrillic_ER, r, R ] }; + key { [ Cyrillic_es, Cyrillic_ES, s, S ] }; + key { [ Cyrillic_te, Cyrillic_TE, t, T ] }; + key { [ Cyrillic_de, Cyrillic_DE, d, D ] }; + key { [ Cyrillic_che, Cyrillic_CHE, h, H ] }; + key { [ Cyrillic_en, Cyrillic_EN, n, N ] }; + key { [ Cyrillic_ie, Cyrillic_IE, e, E ] }; + key { [ Cyrillic_i, Cyrillic_I, i, I ] }; + key { [ Cyrillic_o, Cyrillic_O, o, O ] }; + key { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, quotedbl ] }; + + key { [ Cyrillic_ze, Cyrillic_ZE, z, Z ] }; + key { [ Cyrillic_ha, Cyrillic_HA, x, X ] }; + key { [ Cyrillic_tse, Cyrillic_TSE, c, C ] }; + key { [ Cyrillic_ve, Cyrillic_VE, v, V ] }; + key { [ Cyrillic_be, Cyrillic_BE, b, B ] }; + key { [ Cyrillic_ka, Cyrillic_KA, k, K ] }; + key { [ Cyrillic_em, Cyrillic_EM, m, M ] }; + key { [ comma, semicolon, less ] }; + key { [ period, colon, greater ] }; + key { [ slash, question ] }; + + key { [ BackSpace, BackSpace, BackSpace, BackSpace ] }; + key { [ U0301, asciitilde, grave ] }; + key { [ space, space, space, nobreakspace ] }; + key { [ Mode_switch, Multi_key ] }; include "level3(ralt_switch)" }; @@ -648,4 +848,114 @@ xkb_symbols "mac" { key { [ 8, semicolon ] }; key { [ bracketright, bracketleft ] }; key { [ Cyrillic_io, Cyrillic_IO ] }; + + key { [ Cyrillic_er, Cyrillic_ER, U20BD ] }; + + include "level3(ralt_switch)" +}; + +// eng: Russian-based polyglot and reactionary keyboard layout +// This keyboard layout covers Russian in Petrine 1708 and Bolshevik 1918 variant spelling, Ukrainian, Belorussian, Serbian in its modern and Slavenoserbian variants, and Bulgarian and Slavomacedonian in pre-1945 and post-1945 spelling, +// in short all in any dominion prevailing Cyrillic orthographies of modern secular Slavic literary languages, even with dictionary accentuation marks, +// but also the most-widespread Church Slavonic spellings, that is all Church-Slavonic in so far as variants can be replaced without loss of meaning – not to speak of Interslavic. +// Furthermore, it suffices Romanian Cyrillic, Moldovan Cyrillic, Abkhazian excluding the more clumsy obsoleted forms unlikely to find devotees, Tajik, all Turkic and Mongolic Cyrillic alphabets +// and virtually all overlooked languages in Cyrillic reigns at least by combining characters, taking advantage of eight key levels. +// This is withal a pan-Cyrillic keyboard layout, or a comprehensive Cyrillic keyboard layout, an universal Cyrillic keyboard layout, a generic Cyrillic keyboard layout. +// +// rus: Многоязыковая и реакціонная клавіатурная разкладка основана на русскихъ +// Сія разкладка покрываетъ русскій въ петровскомъ правописаніи 1708-го года и большевицкомъ 1918-го, украинскій, бѣлорусскій въ современномъ и славяносербскомъ видѣ, и булгарскій и славомацедонскій въ писаніи до и послѣ 1945-го года, +// короче всѣ въ какомъ-либо державствѣ преобладающія правописанія, то есть весь церкославянскій, поскольку какъ разные виды буквъ можно возмѣщать безъ потери значенія — не говоря о междуславянскомъ. +// Свѣрхъ этого, она подходитъ къ румынской кириллицѣ, къ молдавской кириллицѣ, къ абхазскому за изключеніемъ неуклюжихъ устарѣлыхъ образовъ, у которыхъ невѣроятно что они вообще найдутъ поклонниковъ, къ таджикскому, къ всѣмъ тюрксимъ и монголскимъ кириллицамъ, +// и по сути дѣла всѣмъ упущеннымъ языкамъ въ кириллическихъ правленіяхъ хотя бы соединящими сѵмволами, извлѣкая выгоду изъ восьми уровней клавишъ. +// Тѣмъ всѣмъ сё всекириллическая клавіатурная разкладка, или всеобъемлющая кириллическая разкладка, или универсальная кириллическая разкладка клавіатуры. +// +// srp: Многојезиков и реакционаран распоред тастера основан на рускима +// Овај распоред покрива руски у петровском правопису 1708-е године и бољшевичком 1918-е године, украјински, белоруски, српски у сувременом и славеносрпском виду, те бугарски и славомакедонски у писању до и после 1945-е године, +// укратко све у некој држави преовлађујуће правописе, то је читав црквенословенски, пошто је могуће разне видове слова замењивати без губитка значења — не говорећи о меџусловенском. +// Поврх овог, он одговара к румунској ћирилици, к молдавској ћирилици, к абхаскоме с изузетком гломазних застарелих ликова, уз које није вероватно да они најђу поклонике, к таџичкоме, к свим туркијским и монголским ћирилицима, +// те у спровођењу свим испуштеним језицима у ћириличким господарствима бар са спајајућим симболима, искориштавајући осам ступњева тастера. +// Тиме свим ово је свећирилички тастатуран распоред, или свеобухватан ћирилички распоред тастера, или свеопшти ћирилички тастатуран распоред. +partial alphanumeric_keys +xkb_symbols "prxn" { + + name[Group1]= "Russian (Polyglot and Reactionary)"; + + key.type[Group1]="EIGHT_LEVEL"; + key { [ U2019, apostrophe, U0301, U0300, U2053, U2015, U02BC, asciitilde ] }; // Typographic Apostrophe, Apostrophe, Combining Acute, Combining Grave, Swung Dash, Quotation Dash, Modifier Letter Apostrophe, Tilde + key { [ 1, exclam, U0304, U0306, U0308, U0311, U0307, U0313 ] }; // 1, !, Combining Macron, Combining Breve, Combining Diaresis, Combining Inverted Breve, Combining Dot Above, Combining Comma Above + key { [ 2,quotedbl,numerosign, U20BF, U20B8, U20AE, U00A3, U20B9 ] }; // 2 " № ₿ ₸ ₮ £ ₹ + key { [ 3, U00A7, U20B4, currency, U20BD, U20AA, U20BC, U20BE ] }; // 3 § ₴ ¤ ₽ ₪ ₼ ₾ + key { [ 4, semicolon, dollar, EuroSign, U0482, U20DD, U0488, U0489 ] }; // 4 ; $ € Thousands Sign, Combining Enclosing Circle, Combining Hundred Thousands, Combining Millions + key { [ 5, percent, degree, U2030, UA670, UA671, UA672, UA66F ] }; // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet + key { [ 6, colon, U0335, U0336, U0483, U0487, UFE2E, UFE2F ] }; // 6, :, Combining Short Stroke Overlay, Combining Long Stroke Overlay, Combining Titlo, Combining Pokrytie, Combining Titlo Left Half, Combining Titlo Right Half + key { [ 7, question, U030B, U030F, U030C, U0303, U032C, U0360 ] }; // 7, ?, Combining Double Acute, Combining Double Grave, Combining Caron/Háček, Combining Tilde, Combining Caron/Háček Below, Combining Double Tilde + key { [ 8, asterisk, U0331, U0332, U0333, U032F, U032D, U032E ] }; // 8, *, Combining Macron Below, Combining Low Line, Combining Double Low Line, Combining Inverted Breve Below, Combining Circumflex Accent, Combining Breve Below + key { [ 9,parenleft, bracketleft, braceleft, U035F, U035D, U035E, U035C ] }; // 9 ( [ { Combining Double Macron Below, Combining Double Breve, Combining Double Macron, Combining Double Breve Below + key { [ 0,parenright,bracketright, braceright, U27E8, U27E9, U04A7, U04A6 ] }; // 0 ) ] } ⟨⟩ ҧ Ҧ + key { [ minus, underscore, emdash, endash, U2011, U00AD, U2010, U2212 ] }; // Hyphen-Minus, Underscore, Em Dash, En Dash, Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign + key { [ equal, plus,notequal, U2248, U04FF, U04FE, U050D, U050C ] }; // = + ≠ ≈ ӿ Ӿ ԍ Ԍ + + key { [ Cyrillic_shorti, Cyrillic_SHORTI, Cyrillic_je, Cyrillic_JE, U04CF, U04C0, U030A, U0325 ] }; // й Й ј Ј ӏ Ӏ, Combining Ring Above and Below + key { [ Cyrillic_tse, Cyrillic_TSE, U04B5, U04B4, Cyrillic_u_straight, Cyrillic_U_straight, U051B, U051A ] }; // ц Ц ҵ Ҵ ү Ү ԛ Ԛ + key { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU, Cyrillic_u_straight_bar,Cyrillic_U_straight_bar, Byelorussian_shortu, Byelorussian_SHORTU ] }; // у У ў Ў ұ Ұ ў Ў + key { [ Cyrillic_ka, Cyrillic_KA, Cyrillic_ka_descender,Cyrillic_KA_descender, U049F, U049E, U046F, U046E ] }; // к К Қ қ ҟ Ҟ ѯ Ѯ + key { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO, U0463, U0462, UA653, UA652 ] }; // е Е ё Ё ѣ Ѣ ꙓ Ꙓ + key { [ Cyrillic_en, Cyrillic_EN, Cyrillic_nje, Cyrillic_NJE, Cyrillic_en_descender, Cyrillic_EN_descender, U04C8, U04C7 ] }; // н Н њ Њ ң Ң ӈ Ӈ + key { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn,Ukrainian_GHE_WITH_UPTURN, Cyrillic_ghe_bar, Cyrillic_GHE_bar, U04F7, U04F6 ] }; // г Г Ґ ґ ғ Ғ ӷ Ӷ + key { [ Cyrillic_sha, Cyrillic_SHA, U04A1, U04A0, U04AB, U04AA, UA67D, UA67F ] }; // ш Ш ҡ Ҡ ҫ Ҫ Combining Payerok Payerok + key { [ Cyrillic_shcha, Cyrillic_SHCHA, U0505, U0504, UA68D, UA68C, U050F, U050E ] }; // щ Щ ԅ Ԅ ꚍ Ꚍ ԏ Ԏ + key { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0, U0499, U0498, U0507, U0506 ] }; // з З ӡ Ӡ ҙ Ҙ ԇ Ԇ + key { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA, Cyrillic_ha_descender, Cyrillic_HA_descender, U04FD, U04FC ] }; // х Х һ Һ ҳ Ҳ ӽ Ӽ + key { [Cyrillic_hardsign,Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI, Macedonia_dse, Macedonia_DSE, U033E, U2E2F ] }; // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok + + key { [ Cyrillic_ef, Cyrillic_EF, U0473, U0472, U04C4, U04C3, U04FB, U04FA ] }; // ф Ф ѳ Ѳ ӄ Ӄ ӻ Ӻ + key { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I, U04D5, U04D4, U04A9, U04A8 ] }; // ы Ы і І ӕ Ӕ ҩ Ҩ + key { [ Cyrillic_ve, Cyrillic_VE, U051D, U051C, U0529, U0528, U0527, U0526 ] }; // в В ԝ Ԝ ԩ Ԩ ԧ Ԧ + key { [ Cyrillic_a, Cyrillic_A, U04D9, U04D8, UA657, UA656, UA655, UA654 ] }; // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ + key { [ Cyrillic_pe, Cyrillic_PE, U0525, U0524, U0471, U0470, UA65F, UA65E ] }; // п П ԥ Ԥ ѱ Ѱ ꙟ Ꙟ + key { [ Cyrillic_er, Cyrillic_ER, U0481, U0480, U048F, U048E, U0521, U0520 ] }; // р Р ҁ Ҁ ҏ Ҏ ԡ Ԡ + key { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar, U047B, U047A, U0461, U0460 ] }; // о О ө Ө ѻ Ѻ ѡ Ѡ + key { [ Cyrillic_el, Cyrillic_EL, Cyrillic_lje, Cyrillic_LJE, U04C6, U04C5, U052F, U052E ] }; // л Л љ Љ ӆ Ӆ ԯ Ԯ + key { [ Cyrillic_de, Cyrillic_DE, Cyrillic_dzhe, Cyrillic_DZHE, U04BD, U04BC, U04BF, U04BE ] }; // д Д џ Џ ҽ Ҽ ҿ Ҿ + key { [ Cyrillic_zhe, Cyrillic_ZHE, Serbian_dje, Serbian_DJE, Cyrillic_zhe_descender, Cyrillic_ZHE_descender, U04C2, U04C1 ] }; // ж Ж ђ Ђ Җ җ ӂ Ӂ + key { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE, U0465, U0464, U04CA, U04C9 ] }; // э Э є Є ѥ Ѥ ӊ Ӊ + key { [ slash, bar, backslash, U260E, UA65B, UA65A, U0513, U0512 ] }; // / | \ ☎ ꙛ Ꙛ ԓ Ԓ + + key { [ U0495, U0494, U0501, U0500, U0503, U0502, U0509, U0508 ] }; // ҕ Ҕ ԁ Ԁ ԃ Ԃ ԉ Ԉ + key { [ Cyrillic_ya, Cyrillic_YA, U0469, U0468, U0467, U0466, UA657, UA656 ] }; // я Я ѩ Ѩ ѧ Ѧ ꙗ Ꙗ + key { [ Cyrillic_che, Cyrillic_CHE, Serbian_tshe, Serbian_TSHE, U04B7, U04B6, U2016, U00A6 ] }; // ч Ч ћ Ћ ҷ Ҷ ‖ ¦ + key { [ Cyrillic_es, Cyrillic_ES, U046D, U046C, U046B, U046A, U04F7, U04F6 ] }; // с С ѭ Ѭ ѫ Ѫ ӷ Ӷ + key { [ Cyrillic_em, Cyrillic_EM, multiply, U00F7, U22C5, U2219, U04CE, U04CD ] }; // м М × ÷ ⋅ ∙ ӎ Ӎ + key { [ Cyrillic_i, Cyrillic_I, U0475, U0474, U048B, U048A, periodcentered, U261B ] }; // и И ѵ Ѵ ҋ Ҋ · ☛ + key { [ Cyrillic_te, Cyrillic_TE, U04AD, U04AC, U051F, U051E, Cyrillic_che_vertstroke,Cyrillic_CHE_vertstroke]}; // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ + key { [Cyrillic_softsign,Cyrillic_SOFTSIGN, U04A5, U04A4, UA64F, UA64E, U048D, U048C ] }; // ь Ь ҥ Ҥ ꙏ Ꙏ ҍ Ҍ + key { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark, singlelowquotemark, U2039, U0523, U0522 ] }; // б Б « „ ‚ ‹ ԣ Ԣ + key { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark, leftsinglequotemark, U203A, rightdoublequotemark, rightsinglequotemark]}; // ю Ю » “ ‘ › ” ’ + key { [ period, comma, ellipsis, enfilledcircbullet, U04CC, U04CB, UA649, UA648 ] }; // . , … • ӌ Ӌ ꙉ Ꙉ + +// eng: Maps Right Alt for reaching the third level +// rus: Составляетъ правую Alt для достиженія третьяго уровня +// srp: Саставља десни Alt за достизање трећег ступња + include "level3(ralt_switch)" + +// eng: Maps for reaching the fifth level +// rus: Составляетъ для достиженія пятаго уровня +// srp: Саставља за достизање петег ступња + + include "level5(caps_switch)" + +// eng: Offers pressing both shift keys for capslock +// rus: Предоставляетъ нажатие обѣихъ клавишъ Shift для защелкиванія прописности буквъ +// srp: Ставља на располагање притискивање обију тастера Shift за учвршћивање верзала + include "shift(both_shiftlock)" + +// eng: Makes return comma instead of dot, as the comma is decimal separator in Cyrillic written languages +// rus: Дѣлаетъ что отдаетъ запятую вмѣсто точки, такъ какъ запятая десятичный раздѣлитель въ языкахъ пишемыхъ кириллицей +// srp: Ради да враћа зарез уместо точке, будући да зарез је десетни разделитељ у језицима који се пишу ћирилицом + include "kpdl(comma)" + +// eng: Bug notice: One has to set lv5:rwin_switch_lock or one of the other level 5 locks for the caps switch to work! +// rus: Приходится ставить lv5:rwin_switch_lock либо одинъ изъ другихъ затворовъ пятаго уровня, чтобы работалъ переключатель Caps! +// srp: Потребно да се ставља lv5:rwin_switch_lock или једна из других брава петег ступња, да би шљакао пребацивач Caps! +// https://bugs.freedesktop.org/show_bug.cgi?id=102189 }; diff --git a/test/data/symbols/us b/test/data/symbols/us index 35eb166..9cc056d 100644 --- a/test/data/symbols/us +++ b/test/data/symbols/us @@ -60,7 +60,7 @@ partial alphanumeric_keys xkb_symbols "euro" { include "us(basic)" - name[Group1]= "English (US, with euro on 5)"; + name[Group1]= "English (US, euro on 5)"; include "eurosign(5)" @@ -69,10 +69,23 @@ xkb_symbols "euro" { partial alphanumeric_keys +xkb_symbols "ibm238l" { + + include "us(basic)" + name[Group1]= "English (US, IBM Arabic 238_L)"; + + key { [ comma, comma ] }; + key { [ period, period ] }; + key { [ quoteleft, asciitilde ] }; + key { [ backslash, bar ] }; + key { [ leftcaret, rightcaret ] }; +}; + +partial alphanumeric_keys xkb_symbols "intl" { include "us(basic)" - name[Group1]= "English (US, international with dead keys)"; + name[Group1]= "English (US, intl., with dead keys)"; key { [dead_grave, dead_tilde, grave, asciitilde ] }; key { [ 1, exclam, exclamdown, onesuperior ] }; @@ -162,7 +175,7 @@ partial alphanumeric_keys xkb_symbols "alt-intl" { include "us" - name[Group1]= "English (US, alternative international)"; + name[Group1]= "English (US, alt. intl.)"; key { [ dead_grave, dead_tilde, grave, asciitilde ] }; key { [ 5, percent, EuroSign ] }; @@ -247,7 +260,7 @@ xkb_symbols "dvorak" { key { [ backslash, bar ] }; }; -// Dvorak international with dead keys +// Dvorak intl., with dead keys // Olivier Mehani (shtrom-xorg@ssji.net) // Reproduce the per-key mapping of us(intl) for the dvorak layout // aka "I just swapped my keys over" @@ -255,7 +268,7 @@ partial alphanumeric_keys xkb_symbols "dvorak-intl" { include "us(dvorak)" - name[Group1]= "English (Dvorak, international with dead keys)"; + name[Group1]= "English (Dvorak, intl., with dead keys)"; key { [dead_grave, dead_tilde, grave, asciitilde ] }; @@ -333,7 +346,7 @@ partial alphanumeric_keys xkb_symbols "dvorak-alt-intl" { include "us(dvorak)" - name[Group1]= "English (Dvorak alternative international no dead keys)"; + name[Group1]= "English (Dvorak, alt. intl.)"; key { [ 4, dollar, EuroSign ] }; @@ -366,7 +379,7 @@ partial alphanumeric_keys xkb_symbols "dvorak-l" { include "us(dvorak)" - name[Group1]= "English (left handed Dvorak)"; + name[Group1]= "English (Dvorak, left-handed)"; key { [ bracketleft, braceleft ] }; key { [ bracketright, braceright ] }; @@ -422,7 +435,7 @@ partial alphanumeric_keys xkb_symbols "dvorak-r" { include "us(dvorak)" - name[Group1]= "English (right handed Dvorak)"; + name[Group1]= "English (Dvorak, right-handed)"; key { [ 1, exclam ] }; key { [ 2, at ] }; @@ -536,11 +549,12 @@ xkb_symbols "dvorak-classic" { key { [ backslash, bar ] }; }; -// Programmer Dvorak, by Roland Kaufmann +// programmer Dvorak, by Roland Kaufmann // License: BSD, available at // Main features: Numbers are in shift position (like French), symbols have been // placed in locations that give good hand-alternation and finger rolling with // symbols that usually follows, accented characters are possible for I18N. +// Patch suggestions should be sent upstream. partial alphanumeric_keys xkb_symbols "dvp" { @@ -568,8 +582,8 @@ xkb_symbols "dvp" { // upper row, left side key { [ semicolon, colon, dead_diaeresis ] }; - key { [ comma, less, guillemotleft, ellipsis ] }; - key { [ period, greater, guillemotright ] }; + key { [ comma, less, guillemotleft, U201C ] }; + key { [ period, greater, guillemotright, U201D ] }; key { [ p, P, paragraph, section ] }; key { [ y, Y, udiaeresis, Udiaeresis ] }; @@ -596,9 +610,9 @@ xkb_symbols "dvp" { // lower row, left side key { [ apostrophe, quotedbl, dead_acute ] }; - key { [ m, M, mu ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" }; - include "level3(ralt_switch)" + // do NOT hardcode this switch; use lv3:ralt_switch option instead! + //include "level3(ralt_switch)" }; // phonetic layout for Russian letters on an US keyboard @@ -789,7 +803,7 @@ xkb_symbols "colemak" { }; // I do NOT like dead-keys - the International keyboard as defined by Microsoft -// doesn't fit my needs. Why use two keystrokes for all simple characters (eg ' +// does not fit my needs. Why use two keystrokes for all simple characters (eg ' // and generates a single ') just to have an é (eacute) in two strokes // as well? I type ' more often than é (eacute). // @@ -808,7 +822,7 @@ partial alphanumeric_keys xkb_symbols "altgr-intl" { include "us(intl)" - name[Group1]= "English (international AltGr dead keys)"; + name[Group1]= "English (intl., with AltGr dead keys)"; // five dead keys moved into level3: @@ -837,7 +851,7 @@ xkb_symbols "altgr-intl" { // // The keyboard layouts below maps the us(basic), us(intl) and us(alt-intl) // to ClassmatePC keyboard. All layouts uses RCTL as level3(switch) since -// the keyboard doesn't have AltGr key. The EuroSign is engraved at 5 key. +// the keyboard does not have AltGr key. The EuroSign is engraved at 5 key. // classmate - us(basic) partial alphanumeric_keys @@ -1282,7 +1296,7 @@ partial alphanumeric_keys xkb_symbols "workman-intl" { include "us(intl)" - name[Group1]= "English (Workman, international with dead keys)"; + name[Group1]= "English (Workman, intl., with dead keys)"; key { [ q, Q, adiaeresis, Adiaeresis ] }; key { [ d, D, eth, ETH ] }; @@ -1366,6 +1380,218 @@ xkb_symbols "norman" { include "level3(ralt_switch)" }; +// Carpalx layout created by Martin Krzywinski +// http://mkweb.bcgsc.ca/carpalx/ + +partial alphanumeric_keys +xkb_symbols "carpalx" { + + name[Group1]= "English (Carpalx)"; + + 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 { [ q, Q ] }; + key { [ g, G ] }; + key { [ m, M ] }; + key { [ l, L ] }; + key { [ w, W ] }; + key { [ y, Y ] }; + key { [ f, F ] }; + key { [ u, U ] }; + key { [ b, B ] }; + key { [ semicolon, colon ] }; + key { [ bracketleft, braceleft ] }; + key { [ bracketright, braceright ] }; + + key { [ d, D ] }; + key { [ s, S ] }; + key { [ t, T ] }; + key { [ n, N ] }; + key { [ r, R ] }; + key { [ i, I ] }; + key { [ a, A ] }; + key { [ e, E ] }; + key { [ o, O ] }; + key { [ h, H ] }; + key { [ apostrophe, quotedbl ] }; + + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C ] }; + key { [ v, V ] }; + key { [ j, J ] }; + key { [ k, K ] }; + key { [ p, P ] }; + key { [ comma, less ] }; + key { [ period, greater ] }; + key { [ slash, question ] }; + + key { [ backslash, bar ] }; +}; + +// Carpalx layout created by Martin Krzywinski +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-intl" { + + include "us(carpalx)" + name[Group1]= "English (Carpalx, intl., with dead keys)"; + + key { [dead_grave, dead_tilde, grave, asciitilde ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, twosuperior, dead_doubleacute ] }; + key { [ 3, numbersign, threesuperior, dead_macron ] }; + key { [ 4, dollar, currency, sterling ] }; + key { [ 5, percent, EuroSign, dead_cedilla ] }; + key { [ 6, dead_circumflex, onequarter, asciicircum ] }; + key { [ 7, ampersand, onehalf, dead_horn ] }; + key { [ 8, asterisk, threequarters, dead_ogonek ] }; + key { [ 9, parenleft, leftsinglequotemark, dead_breve ] }; + key { [ 0, parenright, rightsinglequotemark, dead_abovering ] }; + key { [ minus, underscore, yen, dead_belowdot ] }; + key { [ equal, plus, multiply, division ] }; + + key { [ q, Q, degree, paragraph ] }; + key { [ g, G, U011F, U011E ] }; + key { [ m, M, mu, mu ] }; + key { [ l, L, copyright, cent ] }; + key { [ w, W, w, W ] }; + key { [ y, Y, idiaeresis, Idiaeresis ] }; + key { [ f, F, adiaeresis, Adiaeresis ] }; + key { [ u, U, udiaeresis, Udiaeresis ] }; + key { [ b, B, odiaeresis, Odiaeresis ] }; + key { [ semicolon, colon, oslash, Ooblique ] }; + key { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] }; + key { [bracketright, braceright, guillemotright, rightdoublequotemark ] }; + + key { [ d, D, eth, ETH ] }; + key { [ s, S, ssharp, section ] }; + key { [ t, T, thorn, THORN ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ r, R, registered, registered ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ a, A, aacute, Aacute ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ h, H, uacute, Uacute ] }; + key { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] }; + + key { [ z, Z, z, Z ] }; + key { [ x, X, U015F, U015E ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ v, V, ae, AE ] }; + key { [ j, J, oe, OE ] }; + key { [ k, K, U0131, U0130 ] }; + key { [ p, P, aring, Aring ] }; + key { [ comma, less, ediaeresis, Ediaeresis ] }; + key { [ period, greater, dead_abovedot, dead_caron ] }; + key { [ slash, question, questiondown, dead_hook ] }; + key { [ backslash, bar, notsign, brokenbar ] }; + + key { [ backslash, bar, backslash, bar ] }; + + include "level3(ralt_switch)" +}; + +// Carpalx layout created by Martin Krzywinski +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and us(altgr-intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-altgr-intl" { + + include "us(carpalx-intl)" + name[Group1]= "English (Carpalx, intl., with AltGr dead keys)"; + +// five dead keys moved into level3: + + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [apostrophe,quotedbl, dead_acute, dead_diaeresis ] }; + +// diversions from the MS Intl keyboard: + + key { [ 1, exclam, onesuperior, exclamdown ] }; + +// onequarter etc (not in iso8859-15) moved to get three unshifted deadkeys: + + key { [ 6, asciicircum, dead_circumflex, onequarter ] }; + key { [ 7, ampersand, dead_horn, onehalf ] }; + key { [ 8, asterisk, dead_ogonek, threequarters ] }; + + include "level3(ralt_switch)" +}; + +// Carpalx layout created by Martin Krzywinski +// Full optimization variant without fixed QWERTY-like ZXCV keys +// http://mkweb.bcgsc.ca/carpalx/ + +partial alphanumeric_keys +xkb_symbols "carpalx-full" { + + include "us(carpalx)" + name[Group1]= "English (Carpalx, full optimization)"; + + key { [ b, B ] }; + key { [ y, Y ] }; + key { [ v, V ] }; + + key { [ f, F ] }; +}; + +// Carpalx layout created by Martin Krzywinski +// Full optimization variant without fixed QWERTY-like ZXCV keys +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-full-intl" { + + include "us(carpalx-intl)" + name[Group1]= "English (Carpalx, full optimization, intl., with dead keys)"; + + key { [ b, B, idiaeresis, Idiaeresis ] }; + key { [ y, Y, adiaeresis, Adiaeresis ] }; + key { [ v, V, odiaeresis, Odiaeresis ] }; + + key { [ f, F, ae, AE ] }; +}; + +// Carpalx layout created by Martin Krzywinski +// Full optimization variant without fixed QWERTY-like ZXCV keys +// http://mkweb.bcgsc.ca/carpalx/ +// Merged with us(intl) and us(altgr-intl) and modified to move +// accented vowels closer to the plain vowels + +partial alphanumeric_keys +xkb_symbols "carpalx-full-altgr-intl" { + + include "us(carpalx-altgr-intl)" + name[Group1]= "English (Carpalx, full optimization, intl., with AltGr dead keys)"; + + key { [ b, B, idiaeresis, Idiaeresis ] }; + key { [ y, Y, adiaeresis, Adiaeresis ] }; + key { [ v, V, odiaeresis, Odiaeresis ] }; + + key { [ f, F, ae, AE ] }; +}; + // EXTRAS: // Czech, Slovak and German charecters added as third level symbols to US keyboard layout. diff --git a/test/data/types/level5 b/test/data/types/level5 index 1796f50..0570725 100644 --- a/test/data/types/level5 +++ b/test/data/types/level5 @@ -53,127 +53,127 @@ partial default xkb_types "default" { level_name[Level8] = "X Shift Alt"; }; -// type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" { -// // Level5-Lock is implemented by using NumLock, because a real modifier -// // is required. -// -// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; -// -// map[None] = Level1; -// map[Shift] = Level2; -// map[LevelThree] = Level3; -// map[LevelThree+Shift] = Level4; -// -// map[LevelFive] = Level5; -// map[LevelFive+Shift] = Level6; -// map[LevelFive+LevelThree] = Level7; -// map[LevelFive+LevelThree+Shift] = Level8; -// -// map[NumLock] = Level5; -// map[NumLock+Shift] = Level6; -// map[NumLock+LevelThree] = Level7; -// map[NumLock+LevelThree+Shift] = Level8; -// -// map[NumLock+LevelFive] = Level1; -// map[NumLock+LevelFive+Shift] = Level2; -// map[NumLock+LevelFive+LevelThree] = Level3; -// map[NumLock+LevelFive+LevelThree+Shift] = Level4; -// -// // Lock has no effect -// map[Lock] = Level1; -// map[Lock+Shift] = Level2; -// map[Lock+LevelThree] = Level3; -// map[Lock+LevelThree+Shift] = Level4; -// -// map[Lock+LevelFive] = Level5; -// map[Lock+LevelFive+Shift] = Level6; -// map[Lock+LevelFive+LevelThree] = Level7; -// map[Lock+LevelFive+LevelThree+Shift] = Level8; -// -// map[Lock+NumLock] = Level5; -// map[Lock+NumLock+Shift] = Level6; -// map[Lock+NumLock+LevelThree] = Level7; -// map[Lock+NumLock+LevelThree+Shift] = Level8; -// -// map[Lock+NumLock+LevelFive] = Level1; -// map[Lock+NumLock+LevelFive+Shift] = Level2; -// map[Lock+NumLock+LevelFive+LevelThree] = Level3; -// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4; -// -// preserve[LevelFive+Shift] = Shift; -// preserve[NumLock+Shift] = Shift; -// preserve[Lock+LevelFive+Shift] = Shift; -// preserve[Lock+NumLock+Shift] = Shift; -// -// level_name[Level1] = "Base"; -// level_name[Level2] = "Shift"; -// level_name[Level3] = "Alt Base"; -// level_name[Level4] = "Shift Alt"; -// level_name[Level5] = "X"; -// level_name[Level6] = "X Shift"; -// level_name[Level7] = "X Alt Base"; -// level_name[Level8] = "X Shift Alt"; -// }; -// -// type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" { -// // Level5-Lock is implemented by using NumLock, because a real modifier -// // is required. -// -// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; -// -// map[None] = Level1; -// map[Shift] = Level2; -// map[LevelThree] = Level3; -// map[LevelThree+Shift] = Level4; -// -// map[LevelFive] = Level5; -// map[LevelFive+Shift] = Level6; -// map[LevelFive+LevelThree] = Level7; -// map[LevelFive+LevelThree+Shift] = Level8; -// -// map[NumLock] = Level5; -// map[NumLock+Shift] = Level6; -// map[NumLock+LevelThree] = Level7; -// map[NumLock+LevelThree+Shift] = Level8; -// -// map[NumLock+LevelFive] = Level1; -// map[NumLock+LevelFive+Shift] = Level2; -// map[NumLock+LevelFive+LevelThree] = Level3; -// map[NumLock+LevelFive+LevelThree+Shift] = Level4; -// -// // Lock interchanges Level1 and Level2 -// map[Lock] = Level2; -// map[Lock+Shift] = Level1; -// map[Lock+LevelThree] = Level3; -// map[Lock+LevelThree+Shift] = Level4; -// -// map[Lock+LevelFive] = Level5; -// map[Lock+LevelFive+Shift] = Level6; -// map[Lock+LevelFive+LevelThree] = Level7; -// map[Lock+LevelFive+LevelThree+Shift] = Level8; -// -// map[Lock+NumLock] = Level5; -// map[Lock+NumLock+Shift] = Level6; -// map[Lock+NumLock+LevelThree] = Level7; -// map[Lock+NumLock+LevelThree+Shift] = Level8; -// -// map[Lock+NumLock+LevelFive] = Level2; -// map[Lock+NumLock+LevelFive+Shift] = Level1; -// map[Lock+NumLock+LevelFive+LevelThree] = Level4; -// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3; -// -// preserve[LevelFive+Shift] = Shift; -// preserve[NumLock+Shift] = Shift; -// -// level_name[Level1] = "Base"; -// level_name[Level2] = "Shift"; -// level_name[Level3] = "Alt Base"; -// level_name[Level4] = "Shift Alt"; -// level_name[Level5] = "X"; -// level_name[Level6] = "X Shift"; -// level_name[Level7] = "X Alt Base"; -// level_name[Level8] = "X Shift Alt"; -// }; + type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" { + // Level5-Lock is implemented by using NumLock, because a real modifier + // is required. + + modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; + + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[LevelThree+Shift] = Level4; + + map[LevelFive] = Level5; + map[LevelFive+Shift] = Level6; + map[LevelFive+LevelThree] = Level7; + map[LevelFive+LevelThree+Shift] = Level8; + + map[NumLock] = Level5; + map[NumLock+Shift] = Level6; + map[NumLock+LevelThree] = Level7; + map[NumLock+LevelThree+Shift] = Level8; + + map[NumLock+LevelFive] = Level1; + map[NumLock+LevelFive+Shift] = Level2; + map[NumLock+LevelFive+LevelThree] = Level3; + map[NumLock+LevelFive+LevelThree+Shift] = Level4; + + // Lock has no effect + map[Lock] = Level1; + map[Lock+Shift] = Level2; + map[Lock+LevelThree] = Level3; + map[Lock+LevelThree+Shift] = Level4; + + map[Lock+LevelFive] = Level5; + map[Lock+LevelFive+Shift] = Level6; + map[Lock+LevelFive+LevelThree] = Level7; + map[Lock+LevelFive+LevelThree+Shift] = Level8; + + map[Lock+NumLock] = Level5; + map[Lock+NumLock+Shift] = Level6; + map[Lock+NumLock+LevelThree] = Level7; + map[Lock+NumLock+LevelThree+Shift] = Level8; + + map[Lock+NumLock+LevelFive] = Level1; + map[Lock+NumLock+LevelFive+Shift] = Level2; + map[Lock+NumLock+LevelFive+LevelThree] = Level3; + map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4; + + preserve[LevelFive+Shift] = Shift; + preserve[NumLock+Shift] = Shift; + preserve[Lock+LevelFive+Shift] = Shift; + preserve[Lock+NumLock+Shift] = Shift; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X Alt Base"; + level_name[Level8] = "X Shift Alt"; + }; + + type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" { + // Level5-Lock is implemented by using NumLock, because a real modifier + // is required. + + modifiers = Shift + Lock + LevelThree + NumLock + LevelFive; + + map[None] = Level1; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[LevelThree+Shift] = Level4; + + map[LevelFive] = Level5; + map[LevelFive+Shift] = Level6; + map[LevelFive+LevelThree] = Level7; + map[LevelFive+LevelThree+Shift] = Level8; + + map[NumLock] = Level5; + map[NumLock+Shift] = Level6; + map[NumLock+LevelThree] = Level7; + map[NumLock+LevelThree+Shift] = Level8; + + map[NumLock+LevelFive] = Level1; + map[NumLock+LevelFive+Shift] = Level2; + map[NumLock+LevelFive+LevelThree] = Level3; + map[NumLock+LevelFive+LevelThree+Shift] = Level4; + + // Lock interchanges Level1 and Level2 + map[Lock] = Level2; + map[Lock+Shift] = Level1; + map[Lock+LevelThree] = Level3; + map[Lock+LevelThree+Shift] = Level4; + + map[Lock+LevelFive] = Level5; + map[Lock+LevelFive+Shift] = Level6; + map[Lock+LevelFive+LevelThree] = Level7; + map[Lock+LevelFive+LevelThree+Shift] = Level8; + + map[Lock+NumLock] = Level5; + map[Lock+NumLock+Shift] = Level6; + map[Lock+NumLock+LevelThree] = Level7; + map[Lock+NumLock+LevelThree+Shift] = Level8; + + map[Lock+NumLock+LevelFive] = Level2; + map[Lock+NumLock+LevelFive+Shift] = Level1; + map[Lock+NumLock+LevelFive+LevelThree] = Level4; + map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3; + + preserve[LevelFive+Shift] = Shift; + preserve[NumLock+Shift] = Shift; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + level_name[Level5] = "X"; + level_name[Level6] = "X Shift"; + level_name[Level7] = "X Alt Base"; + level_name[Level8] = "X Shift Alt"; + }; type "EIGHT_LEVEL_SEMIALPHABETIC" { modifiers = Shift+Lock+LevelThree+LevelFive; diff --git a/test/keyseq.c b/test/keyseq.c index 05c7957..7be8598 100644 --- a/test/keyseq.c +++ b/test/keyseq.c @@ -318,7 +318,7 @@ main(void) KEY_SPACE, BOTH, XKB_KEY_KP_0, NEXT, KEY_KP8, BOTH, XKB_KEY_KP_Up, NEXT, KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, - KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Lock, NEXT, /* Level 6. */ KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, @@ -330,7 +330,7 @@ main(void) KEY_KP8, BOTH, XKB_KEY_KP_Up, NEXT, KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, KEY_RIGHTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, - KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Lock, NEXT, /* Level 7. */ KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, @@ -341,19 +341,22 @@ main(void) KEY_KP8, BOTH, KS("U22C2"), NEXT, KEY_ESC, BOTH, XKB_KEY_Escape, NEXT, KEY_CAPSLOCK, UP, XKB_KEY_ISO_Level3_Shift, NEXT, - KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Lock, NEXT, /* Level 8. */ KEY_RIGHTALT, DOWN, XKB_KEY_ISO_Level5_Shift, NEXT, KEY_CAPSLOCK, DOWN, XKB_KEY_ISO_Level3_Shift, NEXT, KEY_RIGHTSHIFT, DOWN, XKB_KEY_Shift_R, NEXT, - /* This doesn't actually lock Level5. Not our fault. */ KEY_TAB, BOTH, XKB_KEY_ISO_Level5_Lock, NEXT, + KEY_V, BOTH, XKB_KEY_Greek_pi, NEXT, KEY_RIGHTSHIFT, UP, XKB_KEY_Caps_Lock, NEXT, + KEY_V, BOTH, XKB_KEY_asciitilde, NEXT, KEY_CAPSLOCK, UP, XKB_KEY_ISO_Level3_Shift, NEXT, - KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Shift, NEXT, + KEY_V, BOTH, XKB_KEY_p, NEXT, + KEY_RIGHTALT, UP, XKB_KEY_ISO_Level5_Lock, NEXT, + /* Locks Level 5. */ - KEY_V, BOTH, XKB_KEY_p, FINISH)); + KEY_V, BOTH, XKB_KEY_Return, FINISH)); xkb_keymap_unref(keymap); -- 2.7.4