Weitere Modifier ausgelagert um Kompatibilität zu anderen Layouts zu verbessern.

Dateien wurden gruppiert, aber die alten sicherheitshalber beibehalten.
Für die neuen Dateien muss noch die Makefile editiert werden.
This commit is contained in:
stephan 2009-05-20 12:13:22 +00:00
parent afc636b06b
commit 74d4b420be
6 changed files with 2078 additions and 0 deletions

1004
linux/X/rules/base Normal file

File diff suppressed because it is too large Load Diff

503
linux/X/symbols/de Normal file
View File

@ -0,0 +1,503 @@
// based on a keyboard map from an 'xkb/symbols/de' file
//
// $XKeyboardConfig$
// $XFree86: xc/programs/xkbcomp/symbols/de,v 1.6 2003/09/08 13:12:51 pascal Exp $
default
xkb_symbols "basic" {
include "latin(type4)"
name[Group1]="Germany";
key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
key <AE03> { [ 3, section, threesuperior, sterling ] };
key <AE04> { [ 4, dollar, onequarter, currency ] };
key <AE11> {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 <U1E9C> 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 <AE12> { [dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
key <AD03> { [ e, E, EuroSign, EuroSign ] };
key <AD06> { [ z, Z, leftarrow, yen ] };
key <AD11> { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
key <AD12> { [ plus, asterisk, dead_tilde, dead_macron ] };
key <AC02> { [ s, S, U017F, U1E9E ] };
key <AC07> { [ j, J, dead_belowdot, dead_abovedot ] };
key <AC10> { [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] };
key <AC11> { [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] };
key <TLDE> { [dead_circumflex, degree, U2032, U2033 ] };
key <BKSL> { [numbersign, apostrophe, dead_grave, dead_breve ] };
key <AB01> { [ y, Y, guillemotright, U203A ] };
key <AB02> { [ x, X, guillemotleft, U2039 ] };
key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] };
key <AB05> { [ b, B, leftdoublequotemark, leftsinglequotemark ] };
key <AB06> { [ n, N, rightdoublequotemark, rightsinglequotemark ] };
key <AB08> { [ comma, semicolon, periodcentered, multiply ] };
key <AB09> { [ period, colon, U2026, division ] };
key <AB10> { [ minus, underscore, endash, emdash ] };
include "kpdl(comma)"
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "nodeadkeys" {
// modify the basic German layout to not have any dead keys
include "de(basic)"
name[Group1]="Germany - Eliminate dead keys";
key <TLDE> { [asciicircum, degree, notsign, notsign ] };
key <AE12> { [apostrophe, grave, cedilla, cedilla ] };
key <AD11> { [udiaeresis, Udiaeresis, diaeresis, diaeresis ] };
key <AD12> { [ plus, asterisk, asciitilde, macron ] };
key <AC10> { [odiaeresis, Odiaeresis, doubleacute, doubleacute ] };
key <AC11> { [adiaeresis, Adiaeresis, asciicircum, asciicircum ] };
key <BKSL> { [numbersign, apostrophe, grave, grave ] };
key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
};
partial alphanumeric_keys
xkb_symbols "deadgraveacute" {
// modify the basic German layout to have only acute and grave
// as dead keys (tilde and circumflex are needed as spacing characters
// in many programming languages)
include "de(basic)"
name[Group1]="Germany - Dead grave acute";
key <TLDE> { [asciicircum, degree, notsign, notsign ] };
key <AD12> { [ plus, asterisk, asciitilde, dead_macron ] };
key <BKSL> { [numbersign, apostrophe, grave, grave ] };
};
partial alphanumeric_keys
xkb_symbols "deadacute" {
// modify the basic German layout to have only acute as
// dead keys (ASCII grave, tilde and circumflex are needed as
// spacing characters in many programming languages and text formatters)
include "de(deadgraveacute)"
name[Group1]="Germany - Dead acute";
key <AE12> { [dead_acute, grave, dead_cedilla, dead_ogonek ] };
key <BKSL> { [numbersign, apostrophe, dead_grave, dead_grave ] };
};
partial alphanumeric_keys
xkb_symbols "ro" {
// add romanian-specific letters to the basic German layout.
// Romanian symbols are accessible with combination of <AltGr> and
// 'a', 's', 't', 'i', 'ä (&auml)' (+<Shift> for capital letters).
// To view romanian-specific symbols, add "export LC_CTYPE=ro_RO"
// or "export LC_CTYPE=de_DE.utf8" to your .profile.
include "de(basic)"
name[Group1]="Germany - Romanian keyboard with German letters";
key <AD05> { [ t, T, tcedilla, Tcedilla ] };
key <AD08> { [ i, I, icircumflex, Icircumflex ] };
key <AC01> { [ a, A, acircumflex, Acircumflex ] };
key <AC02> { [ s, S, scedilla, Scedilla ] };
key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
};
partial alphanumeric_keys
xkb_symbols "ro_nodeadkeys" {
// add romanian-specific letters to the German nodeadkeys layout.
// Read the comment for de_ro !
include "de(nodeadkeys)"
name[Group1]="Germany - Romanian keyboard with German letters, eliminate dead keys";
key <AD05> { [ t, T, tcedilla, Tcedilla ] };
key <AD08> { [ i, I, icircumflex, Icircumflex ] };
key <AC01> { [ a, A, acircumflex, Acircumflex ] };
key <AC02> { [ s, S, scedilla, Scedilla ] };
key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
};
// German Dvorak keymap by Thorsten Staerk (www.staerk.de/thorsten)
// Have acute and grave as dead keys, tilde and circumflex alive as they are needed
// in many programming languages.
// to use this keymap, use a 105-key-keyboard and the command setxkbmap -model pc105 -layout dvorak -variant de
// source: http://www-lehre.informatik.uni-osnabrueck.de/~rfreund/dvorak.php
partial alphanumeric_keys
xkb_symbols "dvorak" {
include "us(dvorak)"
name[Group1]="Germany - Dvorak";
key <TLDE> { [ asciicircum, degree ] };
key <AE01> { [ 1, exclam, onesuperior ] };
key <AE02> { [ 2, quotedbl, twosuperior ] };
key <AE03> { [ 3, section, threesuperior ] };
key <AE04> { [ 4, dollar, bar ] };
key <AE05> { [ 5, percent, bar ] };
key <AE06> { [ 6, ampersand, brokenbar ] };
key <AE07> { [ 7, slash, braceleft ] };
key <AE08> { [ 8, parenleft, bracketleft ] };
key <AE09> { [ 9, parenright, bracketright ] };
key <AE10> { [ 0, equal, braceright ] };
key <AE11> { [ plus, asterisk, asciitilde ] };
key <AE12> { [ less, greater, dead_grave ] };
key <AD01> { [ udiaeresis, Udiaeresis, at ] };
key <AD02> { [ comma, semicolon, dead_diaeresis ] };
key <AD03> { [ period, colon ] };
key <AD08> { [ c, C, copyright, Cacute ] };
key <AD09> { [ t, T, trademark ] };
key <AD10> { [ z, Z, zabovedot, Zabovedot ] };
key <AD11> { [ question, ssharp ] };
key <AD12> { [ slash, backslash, dead_acute ] };
key <AC01> { [ a, A, at, aogonek ] };
key <AC02> { [ o, O, oacute, Oacute ] };
key <AC03> { [ e, E, EuroSign, eogonek ] };
key <AC04> { [ i, I ] };
key <AC05> { [ u, U ] };
key <AC06> { [ h, H ] };
key <AC07> { [ d, D ] };
key <AC08> { [ r, R, registered ] };
key <AC09> { [ n, N, nacute, Nacute ] };
key <AC10> { [ s, S, sacute, Sacute] };
key <AC11> { [ l, L, lstroke, Lstroke ] };
key <AB01> { [ odiaeresis, Odiaeresis ] };
key <AB02> { [ q, Q, at ] };
key <AB07> { [ m, M, mu ] };
key <AB10> { [ numbersign, apostrophe ] };
key <BKSL> { [ minus, underscore, hyphen, diaeresis] };
key <LSGT> { [ adiaeresis, Adiaeresis, bar ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "Sundeadkeys" {
// For naming consistency
include "de(basic)"
};
partial alphanumeric_keys
xkb_symbols "sundeadkeys" {
// For naming consistency
include "de(Sundeadkeys)"
name[Group1]="Germany - Sun dead keys";
};
// German NEO-Layout Version 2
// adopted 2004 by Hanno Behrens <Hanno.Behrens@gmx.de>
// inspired by Dvorak/de-ergo http://www.goebel-consult.de/de-ergo/
//
// Authors:
// Stephan Hilb <stephan at ehilb dot de>
// <lucky at zankt dot net>
// Benjamin Kellermann <Benjamin dot Kellermann at gmx dot Germany>
// Erik Streb <mail at erikstreb dot de>
// and many other contributors
//
// http://www.neo-layout.org
//
// $Revision$, $Date$
partial alphanumeric_keys modifier_keys keypad_keys
xkb_symbols "neo_base" {
name[Group1]= "Germany - Neo 2";
// Levels in Neo jargon
// --------------------------------------------------------------
// Ebene 1: normal
// Ebene 2: Shift
// Ebene 3: Mod3
// Ebene 4: Mod4 (for marking something use Shift + Mod4)
// Ebene 5: Shift + Mod3
// Ebene 6: Mod3 + Mod4
// Compose (not a level): Mod3 + Tab
// Feststelltaste (Capslock): Shift + Shift
// Mod4-Lock: Mod4 + Mod4
//
// Legend
// ===============
// Levels in Xkbmap jargon to be found here in the definitions.
// These are the levels used, and Xorg's translations:
// --------------------------------------------------------------
// Xorg: Level1 Level2 Level3 Level4 Level5 Level6 Level7 Level8
// Neo: Ebene1 Ebene2 Ebene3 Ebene5 Ebene4 ??? Ebene6 ???
// Keys (Neo): None Shift Mod3 Mod3 + Shift Mod4 Mod4 + Shift Mod3 + Mod4 Mod3 + Mod4 + Shift
key <LVL3> {
type[Group1] = "ONE_LEVEL",
vmods[Group1] = LevelFive,
symbols[Group1] = [ NoSymbol ],
actions[Group1] = [ SetMods(modifiers=LevelFive) ]
};
modifier_map Mod3 { <LVL3> };
// Alphanumeric-keys
// ===============
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS";
// Tab as Multi_key (Compose)
// --------------------------------------------------------------
key <TAB> {
symbols[Group1]= [ Tab, ISO_Left_Tab, Multi_key, Num_Lock, NoSymbol, NoSymbol, NoSymbol, Num_Lock ],
actions[Group1]= [ NoActions(), NoActions(), NoActions(), LockMods(modifiers=NumLock), NoActions(), NoActions(), NoActions(), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <TAB> };
// Number row
// --------------------------------------------------------------
key <TLDE> { [ dead_circumflex, dead_tilde, dead_abovering, dead_breve, dead_caron, Pointer_EnableKeys, dead_macron, NoSymbol ] };
key <AE01> { [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ] };
key <AE02> { [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ] };
key <AE03> { [ 3, U2113, threesuperior, threesubscript, numerosign, NoSymbol, logicaland, NoSymbol ] };
key <AE04> { [ 4, guillemotright, U203A, femalesymbol, Prior, Prior, U22A5, NoSymbol ] };
key <AE05> { [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ] };
key <AE06> { [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ] };
key <AE07> { [ 7, EuroSign, yen, Greek_kappa, currency, NoSymbol, rightarrow, NoSymbol ] };
key <AE08> { [ 8, doublelowquotemark, singlelowquotemark, U27E8, NoSymbol, NoSymbol, U221E, NoSymbol ] };
key <AE09> { [ 9, leftdoublequotemark, leftsinglequotemark, U27E9, KP_Divide, NoSymbol, variation, NoSymbol ] };
key <AE10> { [ 0, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, NoSymbol, emptyset, NoSymbol ] };
key <AE11> { [ minus, emdash, NoSymbol, U2011, KP_Subtract, NoSymbol, hyphen, NoSymbol ] };
key <AE12> { [ dead_grave, NoSymbol, dead_diaeresis, dead_dasia, dead_doublegrave, NoSymbol, NoSymbol, NoSymbol ] };
// Top row
// --------------------------------------------------------------
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS_QUARTERALPHABETIC";
key <AD01> { [ x, X, ellipsis, Greek_xi, U22EE, NoSymbol, Greek_XI, NoSymbol ] };
key <AD02> { [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] };
key <AD03> { [ l, L, bracketleft, Greek_lambda, Up, Up, Greek_LAMBDA, NoSymbol ] };
key <AD04> { [ c, C, bracketright, Greek_chi, Delete, Delete, U2102, NoSymbol ] };
key <AD05> { [ w, W, asciicircum, Greek_omega, Insert, Insert, Greek_OMEGA, NoSymbol ] };
key <AD06> { [ k, K, exclam, U03F0, exclamdown, NoSymbol, multiply, NoSymbol ] };
key <AD07> { [ h, H, less, Greek_psi, KP_7, NoSymbol, Greek_PSI, NoSymbol ] };
key <AD08> { [ g, G, greater, Greek_gamma, KP_8, NoSymbol, Greek_GAMMA, NoSymbol ] };
key <AD09> { [ f, F, equal, Greek_phi, KP_9, NoSymbol, Greek_PHI, NoSymbol ] };
key <AD10> { [ q, Q, ampersand, U03D5, KP_Add, NoSymbol, U211A, NoSymbol ] };
key <AD11> { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] };
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS";
key <AD12> { [ dead_acute, dead_cedilla, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_abovedot, NoSymbol ] };
// Middle row
// --------------------------------------------------------------
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS_QUARTERALPHABETIC";
key <AC01> { [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] };
key <AC02> { [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] };
key <AC03> { [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] };
key <AC04> { [ e, E, braceright, Greek_epsilon, Right, Right, U2203, NoSymbol ] };
key <AC05> { [ o, O, asterisk, Greek_omicron, End, End, elementof, NoSymbol ] };
key <AC06> { [ s, S, question, Greek_sigma, questiondown, NoSymbol, Greek_SIGMA, NoSymbol ] };
key <AC07> { [ n, N, parenleft, Greek_nu, KP_4, NoSymbol, U2115, NoSymbol ] };
key <AC08> { [ r, R, parenright, U03F1, KP_5, NoSymbol, U211D, NoSymbol ] };
key <AC09> { [ t, T, minus, Greek_tau, KP_6, NoSymbol, partialderivative, NoSymbol ] };
key <AC10> { [ d, D, colon, Greek_delta, KP_Separator, NoSymbol, Greek_DELTA, NoSymbol ] };
key <AC11> { [ y, Y, at, Greek_upsilon, KP_Decimal, NoSymbol, nabla, NoSymbol ] };
// Bottom row
// --------------------------------------------------------------
key <AB01> { [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ] };
key <AB02> { [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ] };
key <AB03> { [ adiaeresis, Adiaeresis, bar, Greek_eta, Next, Next, U2135, NoSymbol ] };
key <AB04> { [ p, P, asciitilde, Greek_pi, Return, Return, Greek_PI, NoSymbol ] };
key <AB05> { [ z, Z, grave, Greek_zeta, Undo, Undo, U2124, NoSymbol ] };
key <AB06> { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] };
key <AB07> { [ m, M, percent, Greek_mu, KP_1, NoSymbol, ifonlyif, NoSymbol ] };
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS";
key <AB08> { [ comma, endash, quotedbl, Greek_rho, KP_2, NoSymbol, U21D2, NoSymbol ] };
key <AB09> { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, NoSymbol, Greek_THETA, NoSymbol ] };
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS_QUARTERALPHABETIC";
key <AB10> { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, U21A6, NoSymbol ] };
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS";
// Space key
// --------------------------------------------------------------
key <SPCE> { [ space, space, space, nobreakspace, KP_0, NoSymbol, U202F, NoSymbol ] };
// Keypad-keys
// ===============
// The former Numlock key:
key <NMLK> { [ Tab, ISO_Left_Tab, equal, approxeq, notequal, NoSymbol, identical, NoSymbol ] };
// Topmost row
// --------------------------------------------------------------
key <KPDV> { [ KP_Divide, KP_Divide, division, U2300, U2215, NoSymbol, U2223, NoSymbol ] };
key <KPMU> { [ KP_Multiply, KP_Multiply, U2219, U2299, multiply, NoSymbol, U2297, NoSymbol ] };
key <KPSU> { [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ] };
// Top row
// --------------------------------------------------------------
key <KP7> { [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ] };
key <KP8> { [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ] };
key <KP9> { [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ] };
key <KPAD> { [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ] };
// Middle row
// --------------------------------------------------------------
key <KP4> { [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ] };
key <KP5> { [ KP_5, EuroSign, brokenbar, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ] };
key <KP6> { [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ] };
// Bottom row
// --------------------------------------------------------------
key <KP1> { [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ] };
key <KP2> { [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ] };
key <KP3> { [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ] };
key <KPEN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ] };
key <KPEQ> { [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
// Bottommost row
// --------------------------------------------------------------
key <KP0> { [ KP_0, U2423, percent, U2030, KP_Insert, KP_Insert, U25A1, NoSymbol ] };
key <KPDL> { [ KP_Separator, KP_Decimal, period, apostrophe, KP_Delete, KP_Delete, quotedbl, NoSymbol ] };
};
// Copied from macintosh_vndr/de
// olh@suse.de very close to MacOS map
partial alphanumeric_keys
xkb_symbols "mac" {
include "de"
name[Group1]= "Germany - Macintosh";
// Alphanumeric section
key <AE01> { [ 1, exclam, exclamdown, at ] };
key <AE05> { [ 5, percent, bracketleft ] };
key <AE06> { [ 6, ampersand, bracketright ] };
key <AE07> { [ 7, slash, bar, backslash ] };
key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
key <AE09> { [ 9, parenright, braceright ] };
key <AD01> { [ q, Q, guillemotleft, guillemotright ] };
key <AD04> { [ r, R, registered ] };
key <AD07> { [ u, U, diaeresis, Aacute ] };
key <AD08> { [ i, I, slash, Ucircumflex ] };
key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
key <AD12> { [ plus, asterisk, asciitilde ] };
key <AC01> { [ a, A, aring, Aring ] };
key <AC05> { [ g, G, copyright ] };
key <AC06> { [ h, H, ordfeminine ] };
key <AC09> { [ l, L, at ] };
key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
key <AB06> { [ n, N, asciitilde ] };
};
partial alphanumeric_keys
xkb_symbols "mac_nodeadkeys" {
// modify the standard German mac layout to not have any dead keys
include "de(mac)"
name[Group1]= "Germany - Macintosh, eliminate dead keys";
key <AE04> { [ 4, dollar, onequarter, currency ] };
key <TLDE> { [ asciicircum, degree, notsign ] };
key <AE12> { [ acute, grave, cedilla ] };
key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
key <AD12> { [ plus, asterisk, asciitilde, macron ] };
key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
key <BKSL> { [ numbersign, apostrophe, grave ] };
};
partial alphanumeric_keys
xkb_symbols "dsb"
{
name[Group1] = "Germany - Lower Sorbian";
include "latin(basic)"
include "level3(ralt_switch)"
include "kpdl(comma)"
key <AB01> { [ z, Z, zcaron, Zcaron ] };
key <AB02> { [ x, X, zacute, Zacute ] };
key <AB03> { [ c, C, cacute, Cacute ] };
key <AB04> { [ v, V, ccaron, Ccaron ] };
key <AB06> { [ n, N, nacute, Nacute ] };
key <AC02> { [ s, S, sacute, Sacute ] };
key <AC03> { [ d, D, scaron, Scaron ] };
key <AC04> { [ f, F ] };
key <AD01> { [ q, Q ] };
key <AD02> { [ w, W ] };
key <AD03> { [ e, E, ecaron, Ecaron ] };
key <AD04> { [ r, R, racute, Racute ] };
key <AD05> { [ t, T, U20B5, EuroSign ] };
key <AD09> { [ o, O, oacute, Oacute ] };
};
partial alphanumeric_keys
xkb_symbols "dsb_qwertz"
{
name[Group1] = "Germany - Lower Sorbian (qwertz)";
include "latin(basic)"
include "level3(ralt_switch)"
include "kpdl(comma)"
key <AB01> { [ y, Y ] };
key <AB02> { [ x, X ] };
key <AB03> { [ c, C, cacute, Cacute ] };
key <AB04> { [ v, V, ccaron, Ccaron ] };
key <AB06> { [ n, N, nacute, Nacute ] };
key <AC02> { [ s, S, sacute, Sacute ] };
key <AC03> { [ d, D, scaron, Scaron ] };
key <AC04> { [ f, F ] };
key <AD01> { [ q, Q ] };
key <AD02> { [ w, W ] };
key <AD03> { [ e, E, ecaron, Ecaron ] };
key <AD04> { [ r, R, racute, Racute ] };
key <AD05> { [ t, T, U20B5, EuroSign ] };
key <AD06> { [ z, Z, zcaron, Zcaron ] };
key <AD07> { [ u, U, zacute, Zacute ] };
key <AD09> { [ o, O, oacute, Oacute ] };
};
partial alphanumeric_keys
xkb_symbols "qwerty" {
// This layout should work exactly as a de with the exception
// of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
// 2008 by Matej Košík <kosik@fiit.stuba.sk>
include "de(basic)"
name[Group1] = "Germany - qwerty";
key <AB01> { [ z, Z, leftarrow, yen ] };
key <AD06> { [ y, Y, guillemotleft, less ] };
};

151
linux/X/symbols/level3 Normal file
View File

@ -0,0 +1,151 @@
// $XdotOrg
// $XKeyboardConfig: xkbdesc/symbols/level3,v 1.6 2004/10/09 17:40:26 svu Exp $
// these variants assign various XKB keycodes to ISO_Level3_Shift so that
// the third shift level can be reached
//
// $XFree86: xc/programs/xkbcomp/symbols/level3,v 1.7 2003/09/08 14:25:32 eich Exp $
//
// the default behavior is for the right Alt key (AltGr) to generate the
// third engraved symbol
default partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
// using the level(alt_switch) map, either Alt key temporarily chooses
// the third shift level. (Mostly be used to imitate Mac OS functionality.)
partial modifier_keys
xkb_symbols "alt_switch" {
include "level3(lalt_switch)"
include "level3(ralt_switch)"
};
partial modifier_keys
xkb_symbols "lalt_switch" {
key <LALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
// using the level(switch) map, the right Control key temporarily
// chooses the third shift level (until it is released).
partial modifier_keys
xkb_symbols "switch" {
key <RCTL> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
// using the level(menu_switch) map, the Menu key temporarily
// chooses the third shift level (until it is released).
partial modifier_keys
xkb_symbols "menu_switch" {
key <MENU> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
// using the level(win_switch) map, the either Windows' logo key
// temporarily chooses the third shift level. If you use this map,
// you should define your keyboard as pc101 or pc102 instead of pc104
// or pc105.
partial modifier_keys
xkb_symbols "win_switch" {
include "level3(lwin_switch)"
include "level3(rwin_switch)"
};
// using the level(lwin_switch) map, the left Windows' logo key
// temporarily chooses the third shift level. If you use this map,
// you should define your keyboard as pc101 or pc102 instead of pc104
// or pc105.
partial modifier_keys
xkb_symbols "lwin_switch" {
key <LWIN> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
// using the level(rwin_switch) map, the right Windows' logo key
// temporarily chooses the third shift level. If you use this map,
// you should define your keyboard as pc101 or pc102 instead of pc104
// or pc105.
partial modifier_keys
xkb_symbols "rwin_switch" {
key <RWIN> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
partial modifier_keys
xkb_symbols "caps_switch" {
key <CAPS> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
partial modifier_keys
xkb_symbols "bksl_switch" {
key <BKSL> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
partial modifier_keys
xkb_symbols "lsgt_switch" {
key <LSGT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
partial modifier_keys
xkb_symbols "caps_switch_latch" {
key <CAPS> {
type[Group1]="THREE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
partial modifier_keys
xkb_symbols "bksl_switch_latch" {
key <BKSL> {
type[Group1]="THREE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};
partial modifier_keys
xkb_symbols "lsgt_switch_latch" {
key <LSGT> {
type[Group1]="THREE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
};
modifier_map Mod5 { ISO_Level3_Shift };
};

115
linux/X/symbols/level5 Normal file
View File

@ -0,0 +1,115 @@
// $XKeyboardConfig$
// these variants assign various XKB keycodes to ISO_Level5_Shift so that
// the third shift level can be reached
//
// $XFree86: xc/programs/xkbcomp/symbols/level3,v 1.7 2003/09/08 14:25:32 eich Exp $
//
// using the level(switch) map, the right Control key temporarily
// chooses the fifth shift level (until it is released).
partial modifier_keys
xkb_symbols "rctrl_switch" {
key <RCTL> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
modifier_map Mod3 { ISO_Level5_Shift };
};
// The following modifier keys are used to switch to the third shift and to set a
// corresponding lock, implemented as NumLock. They do not use *Level5* keysyms,
// as some applications get confused by it. The modifiers are to be used in
// pairs of a 'left' and a 'right' one.
// Left modifier
partial modifier_keys
xkb_symbols "lsgt_switch_numlock" {
key <LSGT> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <LSGT> };
};
// Left modifier
partial modifier_keys
xkb_symbols "lwin_switch_numlock" {
key <LWIN> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <LWIN> };
};
// Right modifier
partial modifier_keys
xkb_symbols "ralt_switch_numlock" {
key <RALT> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <RALT> };
};
// Right modifier
partial modifier_keys
xkb_symbols "rwin_switch_numlock" {
key <RWIN> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <RWIN> };
};
// Left modifier
partial modifier_keys
xkb_symbols "lsgt_switch_numlock_cancel" {
key <LSGT> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <LSGT> };
};
// Left modifier
partial modifier_keys
xkb_symbols "lwin_switch_numlock_cancel" {
key <LWIN> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <LWIN> };
};
// Right modifier
partial modifier_keys
xkb_symbols "ralt_switch_numlock_cancel" {
key <RALT> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <RALT> };
};
// Right modifier
partial modifier_keys
xkb_symbols "rwin_switch_numlock_cancel" {
key <RWIN> {
vmods= NumLock,
key.type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
symbols[Group1] = [ Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock, Num_Lock ],
actions[Group1] = [ SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), SetMods(modifiers=LevelFive), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock), LockMods(modifiers=NumLock) ]
};
modifier_map Mod2 { <RWIN> };
};

92
linux/X/symbols/shift Normal file
View File

@ -0,0 +1,92 @@
// $XKeyboardConfig$
partial modifier_keys
xkb_symbols "breaks_caps" {
key <LFSH> {
type = "ALPHABETIC",
actions [Group1] = [
SetMods(modifiers=Shift),
SetMods(modifiers=Shift+Lock,clearLocks)
]
};
key <RTSH> {
type = "ALPHABETIC",
actions [Group1] = [
SetMods(modifiers=Shift),
SetMods(modifiers=Shift+Lock,clearLocks)
]
};
};
// When pressed together with another Shift key, set/release Lock.
partial modifier_keys
xkb_symbols "lshift_both_capslock" {
key <LFSH> {
type[Group1]="TWO_LEVEL",
symbols[Group1] = [ Shift_L, Caps_Lock ],
actions[Group1] = [ SetMods(modifiers=Shift), LockMods(modifiers=Lock) ]
};
};
// When pressed together with another Shift key, set or unset Lock.
partial modifier_keys
xkb_symbols "rshift_both_capslock" {
key <RTSH> {
type[Group1]="TWO_LEVEL",
symbols[Group1] = [ Shift_R, Caps_Lock ],
actions[Group1] = [ SetMods(modifiers=Shift), LockMods(modifiers=Lock) ]
};
};
partial modifier_keys
xkb_symbols "both_capslock" {
include "shift(lshift_both_capslock)"
include "shift(rshift_both_capslock)"
};
// When pressed alone, release Lock, whan pressed with another Shift key, set Lock.
partial modifier_keys
xkb_symbols "lshift_both_capslock_cancel" {
key <LFSH> {
type[Group1]="ALPHABETIC",
symbols[Group1] = [ Shift_L, Caps_Lock ],
actions[Group1] = [ SetMods(modifiers=Shift), LockMods(modifiers=Lock) ]
};
};
// When pressed alone, release Lock, whan pressed with another Shift key, set Lock.
partial modifier_keys
xkb_symbols "rshift_both_capslock_cancel" {
key <RTSH> {
type[Group1]="ALPHABETIC",
symbols[Group1] = [ Shift_R, Caps_Lock ],
actions[Group1] = [ SetMods(modifiers=Shift), LockMods(modifiers=Lock) ]
};
};
partial modifier_keys
xkb_symbols "both_capslock_cancel" {
include "shift(lshift_both_capslock_cancel)"
include "shift(rshift_both_capslock_cancel)"
};
// When pressed together with another Shift key, lock/unlock Shift.
partial modifier_keys
xkb_symbols "lshift_both_shiftlock" {
key <LFSH> {
type[Group1]="TWO_LEVEL",
symbols[Group1] = [ Shift_L, Shift_Lock ],
actions[Group1] = [ SetMods(modifiers=Shift), LockMods(modifiers=Shift) ]
};
};
// When pressed together with another Shift key, lock/unlock Shift.
partial modifier_keys
xkb_symbols "rshift_both_shiftlock" {
key <RTSH> {
type[Group1]="TWO_LEVEL",
symbols[Group1] = [ Shift_R, Shift_Lock ],
actions[Group1] = [ SetMods(modifiers=Shift), LockMods(modifiers=Shift) ]
};
};
partial modifier_keys
xkb_symbols "both_shiftlock" {
include "shift(lshift_both_shiftlock)"
include "shift(rshift_both_shiftlock)"
};

213
linux/X/types/level5 Normal file
View File

@ -0,0 +1,213 @@
// $XKeyboardConfig$
// $XFree86: xc/programs/xkbcomp/types/extra,v 1.3 2002/11/26 02:14:02 dawes Exp $
partial default xkb_types "default" {
// Definition for a key type used for the czech keymap, for instance.
// Defines style a with four level shift. It is similar to three_level
// type used for iso9995 but it lets the shift key behave "normally".
virtual_modifiers LevelThree,ScrollLock,LevelFive;
type "EIGHT_LEVEL" {
modifiers = Shift+LevelThree+LevelFive;
map[None] = Level1;
map[Shift] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[LevelFive] = Level5;
map[Shift+LevelFive] = Level6;
map[LevelThree+LevelFive] = Level7;
map[Shift+LevelThree+LevelFive] = Level8;
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" {
modifiers = Shift+Lock+LevelThree+LevelFive;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[Lock+LevelThree] = Level4;
map[Lock+Shift+LevelThree] = Level3;
map[LevelFive] = Level5;
map[Shift+LevelFive] = Level6;
map[Lock+LevelFive] = Level6;
map[LevelThree+LevelFive] = Level7;
map[Shift+LevelThree+LevelFive] = Level8;
map[Lock+LevelThree+LevelFive] = Level8;
map[Lock+Shift+LevelThree+LevelFive] = Level7;
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_NEO_LOCKS" {
// 'NumLock' is used for the (Neo-)Mod4-Lock.
modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
preserve[LevelFive+Shift] = Shift;
preserve[NumLock+Shift] = Shift;
preserve[Lock+LevelFive+Shift] = Shift;
preserve[Lock+NumLock+Shift] = Shift;
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;
level_name[Level1] = "Neo Level1";
level_name[Level2] = "Neo Level2";
level_name[Level3] = "Neo Level3";
level_name[Level4] = "Neo Level5";
level_name[Level5] = "Neo Level4";
level_name[Level6] = "Neo Level4 Shift";
level_name[Level7] = "Neo Level6";
level_name[Level8] = "Neo Level6 Shift";
};
type "EIGHT_LEVEL_NEO_LOCKS_QUARTERALPHABETIC" {
// 'NumLock' is used for the (Neo-)Mod4-Lock.
modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
preserve[LevelFive+Shift] = Shift;
preserve[NumLock+Shift] = Shift;
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] = Level3;
map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4;
level_name[Level1] = "Neo Level1";
level_name[Level2] = "Neo Level2";
level_name[Level3] = "Neo Level3";
level_name[Level4] = "Neo Level5";
level_name[Level5] = "Neo Level4";
level_name[Level6] = "Neo Level4 Shift";
level_name[Level7] = "Neo Level6";
level_name[Level8] = "Neo Level6 Shift";
};
type "EIGHT_LEVEL_SEMIALPHABETIC" {
modifiers = Shift+Lock+LevelThree+LevelFive;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[Lock+LevelThree] = Level3;
map[Lock+Shift+LevelThree] = Level4;
map[LevelFive] = Level5;
map[Shift+LevelFive] = Level6;
map[Lock+LevelFive] = Level6;
map[LevelThree+LevelFive] = Level7;
map[Shift+LevelThree+LevelFive] = Level8;
map[Lock+LevelThree+LevelFive] = Level7;
map[Lock+Shift+LevelThree+LevelFive] = Level8;
preserve[Lock+LevelThree] = Lock;
preserve[Lock+Shift+LevelThree] = Lock;
preserve[Lock+LevelFive] = Lock;
preserve[Lock+Shift+LevelFive] = Lock;
preserve[Lock+LevelThree+LevelFive] = Lock;
preserve[Lock+Shift+LevelThree+LevelFive] = Lock;
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";
};
};