Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
586 lines (489 sloc) 34.4 KB
// $XKeyboardConfig: xkeyboard-config/symbols/progsyms 2008-10-15 svu Exp $
// Difficulty to reach (under index finger: 1 - 8)
// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
// ┃ ` ┊ 1 ┊ 2 ┊ 3 ┊ 4 ┊ 5 ┊ 6 ┊ 7 ┊ 8 ┊ 9 ┊ 0 ┊ - ┊ = ┊ BckSp ┃
// ┃ Tab ┊ 3 ┊ 2 ┊ 2 ┊ 3 ┊ 6 ┊ 8 ┊ 4 ┊ 2 ┊ 2 ┊ 3 ┊ 3 ┊ 5 ┊ 6 ┃
// ┃ BkSp ┊ 2 ┊ 1 ┊ 1 ┊ 1 ┊ 3 ┊ 3 ┊ 1 ┊ 1 ┊ 1 ┊ 2 ┊ 4 ┊ Enter ┃
// ┃ Shift ┊ 3 ┊ 3 ┊ 3 ┊ 3 ┊ 7 ┊ 4 ┊ 4 ┊ 4 ┊ 4 ┊ 3 ┊ Shift ┃
// ┃Fn ┊Ctrl┊Wn┊Alt┊ Space ┊Alt┊Mnu┊Ctl┊ Arrows ┃
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
// Base keyboard layout can be qwerty, colemak or whatever. Mostly this is
// unimportant, though the fourth-layer greek letters are layed out to match
// colemak_ds.
// For the third level, the "prog*" layouts add a lot of operators, brackets,
// etc.
// For the fourth level, lower-case Greek letters can be added.
// This is roughly colemak_ch on a ThinkPad keyboard (e.g. T410):
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
// │ ~ ⊦ │ ! ↓ │ @ ↑ │ # ↦ │ $ ¢ │ % │ ^ │ & │ * · │ ( ∉ │ ) ∌ │ _ — │ + ± ┃ ⌫ Back- ┃
// │ ` ¬ │ 1 ← │ 2 → │ 3 £ │ 4 € │ 5 ¤ │ 6 ^û│ 7 ÷ │ 8 × │ 9 ∈ │ 0 ∋ │ - − │ = ≡ ┃ space ┃
// ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
// ┃ ┃ Q ≤ │ W ß │ F φ │ P π │ G γ │ J ξ │ L λ │ U θ │ Y υ │ Ä ≥ │ Ö É │ Ü È ┃ | ┃
// ┃ Tab ↹ ┃ q < │ w { │ f / │ p | │ g % │ j ^ │ l & │ u * │ y } │ ä > │ ö é │ ü è ┃ \ # ┃
// ┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┻━━━━━━━┫
// ┃ Back- ⌫ ┃ A α │ R ρ │ S σ │ T τ │ D δ │ H η │ N ν │ E ε │ I ι │ O ο │ _ À ┃ ┃
// ┃ space ┃ a [ │ r ( │ s - │ t ! │ d \ │ h ≠ │ n = │ e + │ i ) │ o ] │ ' à ┃ ⏎ Enter ┃
// ┣━━━━━━━━━━┻━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┻━━━━━━━━━━━┫
// ┃ ┃ Z ζ │ X χ │ C ψ │ V ω │ B β │ K κ │ M μ │ − « │ — » │ ? ¿ ┃ ┃
// ┃Shift ⇧ ┃ z ` │ x " │ c ç │ v $ │ b 0 │ k 1 │ m 2 │ , ; │ . : │ / # ┃ ⇧ Shift ┃
// ┣━━━━━┳━━━━━━━╋━━━━┳┷━━━━┱┴─────┴─────┴─────┴─────┴─────╆━━━━━╈━━━━━╈━━━━━╋━━━━┯━━━━┯━━━━┩
// ┃ ┃ ┃ ┃ ┃ ␣ Unbreakable space ⍽ ┃ ⇮┃ ┃ ┃PgBk│↑ │PgFd│
// ┃Fn ┃Ctrl ┃Meta┃Alt ┃ ␣ Space ␣ ┃AltGr┃Menu ┃Ctrl ┠────┼────┼────┤
// ┗━━━━━┻━━━━━━━┻━━━━┻━━━━━┹──────────────────────────────┺━━━━━┻━━━━━┻━━━━━┩← │↓ │→ │
// └────┴────┴────┘
// Alternative, designed for the ErgoDox (which as no separate F-keys, hence
// putting numbers on the third layer). Note that this is achieved via two
// layouts: the ErgoDox config which sets the position of the F-keys, bracket
// keys (here ö, ü), ` key, arrow keys, etc., and the second which sets the
// third layer stuff (plus a few others). The ErgoDox layout is designed also
// work with standard software mappings ("num mod" gives access to 1-9, 0 which
// are the only important missing keys) and the software mapping is designed to
// work on standard keyboards (though a few keys will be in different places).
// ┏━━━━━━━━┱─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━┓
// ┃ ┃ ↓ │ ↑ │ ¤ │ ¢ │ ∉ │ ∌ │ │ │ │ ~│ ~│ ~│ ·┃ ⌦ ┃
// ┃ Esc ┃ F1← │ F2→ │ F3£ │ F4€ │ F5∈ │F6 ∋ │ │ F7 │ F8 │F9 7 │F10 8│F11 9│F12 ×┃ Delete ┃
// ┣━━━━━━━━╉─────┼─────┼─────┼─────┼─────╆━━━━━┪ ┢━━━━━╅─────┼─────┼─────┼─────┼─────╊━━━━━━━━┫
// ┃ ↹ ┃ ≤ │ ≥ │ φ │ π │ γ ┃ Ö É ┃ ┃ Ä ┃ ξ │ λ │ θ │ υ │ — − ┃ ⌫ ┃
// ┃ Tab ┃ q < │ w { │ f } │ p > │ g ^ ┃ ┃ ┃ ┃ j & │ l 4 │ u 5 │ y 6 │ - + ┃Backspce┃
// ┣━━━━━━━━╉─────┼─────┼─────┼─────┼─────┨ ö é ┃ ┃ ä @ ┠─────┼─────┼─────┼─────┼─────╄━━━━━━━━┩
// ┃⌫ Back- ┃ α │ ρ │ σ │ τ │ δ ┣━━━━━┫ ┣━━━━━┫ η │ ν │ ε │ ι │ ο │ _ À │
// ┃ space ┃ a [ │ r ( │ s ) │ t ] │ d | ┃ ┃ ┃ ┃ h = │ n 1 │ e 2 │ i 3 │ o % │ ' à │
// ┣━━━━━━━━╉─────┼─────┼─────┼─────┼─────┨ Ü È ┃ ┃ | ß ┠─────┼─────┼─────┼─────┼─────╆━━━━━━━━┪
// ┃ ⇧ ┃ ζ │ χ │ ψ │ ω │ β ┃ ┃ ┃ ┃ κ │ μ │ ; │ : · │ ? ÷ ┃ ⇧ ┃
// ┃ Shift ┃ z ` │ x " │ c ç │ v $ │ b ! ┃ ü è ┃ ┃ \ # ┃ k * │ m 0 │ , , │ . . │ / / ┃ Shift ┃
// ┗━━┳━━━━━╋━━━━━╈━━━━━╈━━━━━╈━━━━━╅─────┺━━━━━┛ ┗━━━━━┹─────╆━━━━━╈━━━━━╈━━━━━╈━━━━━╋━━━━━┳━━┛
// ┃ ┃ ┃ ⇤ ┃ ⇥ ┃ ┃ ┏━━━━━┳━━━━━┓ ┏━━━━━┳━━━━━┓ ┃ ⇮ ┃ ← ┃ → ┃ ┃ ┃
// ┃Ctrl ┃Meta ┃Home ┃ End ┃ Alt ┃ ┃ ┃ Num ┃ ┃ _ — ┃ + ± ┃ ┃AltGr┃Left ┃Right┃Menu ┃Ctrl ┃
// ┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛ ┃ Ins ┃ mod ┃ ┃ - − ┃ = ≠ ┃ ┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛
// ┏━━━━━╋━━━━━╋━━━━━┫ ┣━━━━━╋━━━━━╋━━━━━┓
// ┃ ␣ ⍽ ┃ ┃ ↑ ┃ ┃Page ┃ ┃ ␣ ⍽ ┃
// ┃ ␣ ␣ ┃ ⏎ ┃ Up ┃ ┃ Up ┃ ⏎ ┃ ␣ ␣ ┃
// ┃ ┃ ┣━━━━━┫ ┣━━━━━┫ ┃ ┃
// ┃Space┃Enter┃ ↓ ┃ ┃Page ┃Enter┃Space┃
// ┃ ┃ ┃Down ┃ ┃Down ┃ ┃ ┃
// ┗━━━━━┻━━━━━┻━━━━━┛ ┗━━━━━┻━━━━━┻━━━━━┛
// Media bindings (with AltGr):
// Ins: play/pause
// Back/forward: prev/next
// Page up/down: volume up/down
// F8: lock (XF86ScreenSaver)
// F7: standby (XF86Sleep)
// ————————————————————————————————————————————————————————————————————————————
// FINAL VARIANTS — (layout variants you can pick)
// ————————————————————————————————————————————————————————————————————————————
partial default alphanumeric_keys
xkb_symbols "basic" {
include "latin"
include "cyborg16(progsyms3)"
include "cyborg16(l4_greek)"
name[Group1]="US keyboard, qwerty, progsyms and greek";
include "level3(ralt_switch_multikey)"
};
partial alphanumeric_keys
xkb_symbols "basic_uk" {
include "latin"
include "cyborg16(progsyms3)"
include "cyborg16(l4_greek)"
name[Group1]="UK keyboard, qwerty, progsyms and greek";
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, sterling ] };
key <AE04> { [ 4, dollar, EuroSign ] };
key <AC11> { [ apostrophe, quotedbl ] };
key <TLDE> { [ grave, notsign ] };
key <BKSL> { [ numbersign, asciitilde ] };
key <LSGT> { [ backslash, bar, bar, brokenbar ] };
include "level3(ralt_switch_multikey)"
};
partial alphanumeric_keys
xkb_symbols "colemak" {
include "us(colemak)"
include "cyborg16(progsyms3)"
include "cyborg16(l4_greek)"
name[Group1]="US keyboard, colemak, progsyms and greek";
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
include "level3(ralt_switch_multikey)"
};
partial alphanumeric_keys
xkb_symbols "colemak4" {
include "us(colemak)"
include "cyborg16(progsyms4)"
include "cyborg16(l4_greek)"
name[Group1]="US keyboard, colemak, progsyms and greek";
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
include "level3(ralt_switch_multikey)"
};
partial alphanumeric_keys
xkb_symbols "colemak_ds" {
include "cyborg16(colemak_ch)"
name[Group1]="US colemak with ä, ö, ü, å, progsyms and greek";
key <AE11> { [ NoSymbol, NoSymbol, aring, Aring ] };
};
partial alphanumeric_keys
xkb_symbols "ch_keys" {
key <BKSL> { [ NoSymbol, NoSymbol, NoSymbol, ssharp ] }; // ß
key <TLDE> { [ adiaeresis, Adiaeresis, NoSymbol, NoSymbol] }; // ä Ä
key <AD11> { [ odiaeresis, Odiaeresis, eacute, Eacute ] }; // ö Ö é É
key <AD12> { [ udiaeresis, Udiaeresis, egrave, Egrave ] }; // ü Ü è È
key <AC11> { [ NoSymbol, NoSymbol, agrave, Agrave ] }; // à À
key <AB03> { [ NoSymbol, NoSymbol, ccedilla, NoSymbol] }; // Ccedilla overrides psi
};
partial alphanumeric_keys
xkb_symbols "colemak_ch" {
include "cyborg16(colemak)"
include "cyborg16(ch_keys)"
name[Group1]="US colemak with ä, ö, ü, progsyms and greek";
};
partial alphanumeric_keys
xkb_symbols "colemak4_ch" {
include "cyborg16(colemak4)"
include "cyborg16(ch_keys)"
name[Group1]="US colemak with ä, ö, ü, progsyms and greek";
};
partial alphanumeric_keys
xkb_symbols "workman4_ch" {
include "us(workman)"
include "cyborg16(progsyms4)"
include "cyborg16(l4_greek)"
include "cyborg16(ch_keys)"
name[Group1]="US workman with ä, ö, ü, progsyms and greek";
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
include "level3(ralt_switch_multikey)"
};
partial alphanumeric_keys
xkb_symbols "colemak_ukch" {
include "cyborg16(colemak_ch)"
name[Group1]="UK keyboard, colemak, near-Swiss accented keys, and progsyms";
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, sterling] };
key <AE04> { [ 4, dollar, EuroSign] };
//key <AC11> { [ apostrophe, quotedbl] };
key <TLDE> { [ grave, notsign ] };
key <BKSL> { [ numbersign, asciitilde ] };
key <LSGT> { [ backslash, bar, bar, brokenbar] };
include "level3(ralt_switch_multikey)"
};
partial alphanumeric_keys
xkb_symbols "dvorak_uk" {
include "us(dvorak)"
include "cyborg16(progsyms3)"
include "cyborg16(l4_greek)"
name[Group1]="UK keyboard, Dvorak, progsyms and greek";
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, sterling] };
key <AE04> { [ 4, dollar, EuroSign] };
key <AD01> { [ apostrophe, quotedbl] };
key <TLDE> { [ grave, notsign ] };
key <BKSL> { [ numbersign, asciitilde ] };
key <LSGT> { [ backslash, bar, bar, brokenbar ] };
include "level3(ralt_switch_multikey)"
};
// ————————————————————————————————————————————————————————————————————————————
// LEVEL 3 — PROGRAMMING SYMBOLS
// ————————————————————————————————————————————————————————————————————————————
// Lots of useful operators and other non-letter glyphs
// Layout is as in the third layer of the graphic above, except for a few
// symbols in the fourth layer (overriden above).
partial hidden alphanumeric_keys
xkb_symbols "progsyms3" {
name[Group1]="3rd-level symbols for programmers v3";
key <TLDE> { [ NoSymbol, NoSymbol, notsign, 0x10022A6 ] }; // ¬ ⊦
key <AE01> { [ NoSymbol, NoSymbol, leftarrow, downarrow ] }; // ← ↓
key <AE02> { [ NoSymbol, NoSymbol, rightarrow, uparrow ] }; // → ↑
key <AE03> { [ NoSymbol, NoSymbol, sterling, 0x10021A6 ] }; // £ ↦
key <AE04> { [ NoSymbol, NoSymbol, EuroSign, cent ] }; // € ¢
key <AE05> { [ NoSymbol, NoSymbol, currency, 0x1002264 ] }; // ¤ ≤
key <AE06> { [ NoSymbol, NoSymbol, dead_circumflex,0x1002265 ] }; // û ≥
key <AE07> { [ NoSymbol, NoSymbol, division, NoSymbol ] }; // ÷
key <AE08> { [ NoSymbol, NoSymbol, multiply, periodcentered ] }; // × ·
key <AE09> { [ NoSymbol, NoSymbol, 0x1002208, 0x1002209 ] }; // ∈ ∉
key <AE10> { [ NoSymbol, NoSymbol, 0x100220B, 0x100220C ] }; // ∋ ∌
key <AE11> { [ NoSymbol, NoSymbol, 0x1002212, 0x1002014 ] }; // − — (minus, m-dash)
key <AE12> { [ NoSymbol, NoSymbol, 0x1002261, plusminus ] }; // ≡ ±
key <AD01> { [ NoSymbol, NoSymbol, less, 0x1002264 ] }; // < ≤
key <AD02> { [ NoSymbol, NoSymbol, braceleft, NoSymbol ] }; // {
key <AD03> { [ NoSymbol, NoSymbol, slash, division ] }; // / ÷
key <AD04> { [ NoSymbol, NoSymbol, bar, NoSymbol ] }; // |
key <AD05> { [ NoSymbol, NoSymbol, percent, NoSymbol ] }; // %
key <AD06> { [ NoSymbol, NoSymbol, asciicircum, dead_circumflex ] }; // ^ û
key <AD07> { [ NoSymbol, NoSymbol, ampersand, NoSymbol ] }; // &
key <AD08> { [ NoSymbol, NoSymbol, asterisk, NoSymbol ] }; // *
key <AD09> { [ NoSymbol, NoSymbol, braceright, NoSymbol ] }; // }
key <AD10> { [ NoSymbol, NoSymbol, greater, 0x1002265 ] }; // > ≥
key <AD11> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AD12> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <BKSL> { [ backslash, bar, numbersign, brokenbar ] };
key <AC01> { [ NoSymbol, NoSymbol, bracketleft, NoSymbol ] }; // [
key <AC02> { [ NoSymbol, NoSymbol, parenleft, NoSymbol ] }; // (
key <AC03> { [ NoSymbol, NoSymbol, minus, 0x1002212 ] }; // - −
key <AC04> { [ NoSymbol, NoSymbol, exclam, NoSymbol ] }; // !
key <AC05> { [ NoSymbol, NoSymbol, backslash, NoSymbol ] }; // \
key <AC06> { [ NoSymbol, NoSymbol, 0x1002260, NoSymbol ] }; // ≠
key <AC07> { [ NoSymbol, NoSymbol, equal, NoSymbol ] }; // = ≠
key <AC08> { [ NoSymbol, NoSymbol, plus, NoSymbol ] }; // +
key <AC09> { [ NoSymbol, NoSymbol, parenright, NoSymbol ] }; // )
key <AC10> { [ NoSymbol, NoSymbol, bracketright, NoSymbol ] }; // ]
key <AC11> { [apostrophe, underscore, NoSymbol, NoSymbol ] }; // ' _
key <AB01> { [ NoSymbol, NoSymbol, grave, NoSymbol ] }; // `
key <AB02> { [ NoSymbol, NoSymbol, quotedbl, NoSymbol ] }; // "
key <AB03> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; //
key <AB04> { [ NoSymbol, NoSymbol, dollar, NoSymbol ] }; // $
key <AB05> { [ NoSymbol, NoSymbol, 0, NoSymbol ] }; // 0
key <AB06> { [ NoSymbol, NoSymbol, 1, NoSymbol ] }; // 1
key <AB07> { [ NoSymbol, NoSymbol, 2, NoSymbol ] }; // 2
key <AB08> { [ NoSymbol, 0x1002212, semicolon, guillemotleft ] }; // − ; «
key <AB09> { [ NoSymbol, 0x1002014, colon, guillemotright ] }; // — : »
key <AB10> { [ NoSymbol, NoSymbol, numbersign, questiondown ] }; // # ¿
};
// Lots of useful operators and other non-letter glyphs as well as numbers
// Layout mostly as shown in "ErgoDox" diagram; number keys are bound to the
// same as the F-key: 1-5 to F1-F5, 6-0 to F8-F12
partial hidden alphanumeric_keys
xkb_symbols "progsyms4" {
name[Group1]="3rd-level symbols for programmers v4";
key <FK01> { [ NoSymbol, NoSymbol, leftarrow, downarrow ] }; // ← ↓
key <FK02> { [ NoSymbol, NoSymbol, rightarrow, uparrow ] }; // → ↑
key <FK03> { [ NoSymbol, NoSymbol, sterling, currency ] }; // £ ¤
key <FK04> { [ NoSymbol, NoSymbol, EuroSign, cent ] }; // € ¢
key <FK05> { [ NoSymbol, NoSymbol, 0x1002208, 0x1002209 ] }; // ∈ ∉
key <FK06> { [ NoSymbol, NoSymbol, 0x100220B, 0x100220C ] }; // ∋ ∌
key <FK07> { [ NoSymbol, NoSymbol, XF86Sleep, NoSymbol ] }; // standby
key <FK08> { [ NoSymbol, NoSymbol, XF86ScreenSaver,NoSymbol ] }; // lock screen
key <FK09> { [ NoSymbol, NoSymbol, 7, asciitilde ] }; // 7 ~
key <FK10> { [ NoSymbol, NoSymbol, 8, asciitilde ] }; // 8 ~
key <FK11> { [ NoSymbol, NoSymbol, 9, asciitilde ] }; // 9 ~
key <FK12> { [ NoSymbol, NoSymbol, multiply, periodcentered ] }; // × ·
key <AE01> { [ NoSymbol, NoSymbol, leftarrow, downarrow ] }; // ← ↓
key <AE02> { [ NoSymbol, NoSymbol, rightarrow, uparrow ] }; // → ↑
key <AE03> { [ NoSymbol, NoSymbol, sterling, currency ] }; // £ ¤
key <AE04> { [ NoSymbol, NoSymbol, EuroSign, cent ] }; // € ¢
key <AE05> { [ NoSymbol, NoSymbol, 0x1002208, 0x1002209 ] }; // ∈ ∉
key <AE06> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AE07> { [ NoSymbol, NoSymbol, 7, NoSymbol ] }; // &
key <AE08> { [ NoSymbol, NoSymbol, 8, NoSymbol ] }; // 7
key <AE09> { [ NoSymbol, NoSymbol, 9, NoSymbol ] }; // 8
key <AE10> { [ NoSymbol, NoSymbol, multiply, NoSymbol ] }; // 9
key <TLDE> { [ NoSymbol, NoSymbol, at, NoSymbol ] }; // @
key <AE11> { [ NoSymbol, NoSymbol, 0x1002212, 0x1002014 ] }; // − — (minus, m-dash)
key <AE12> { [ NoSymbol, NoSymbol, 0x1002260, plusminus ] }; // ≠ ±
key <BKSL> { [ backslash, bar, numbersign, brokenbar ] }; // \ | # ¦
key <AD01> { [ NoSymbol, NoSymbol, less, 0x1002264 ] }; // < ≤
key <AD02> { [ NoSymbol, NoSymbol, braceleft, 0x1002265 ] }; // { ≥
key <AD03> { [ NoSymbol, NoSymbol, braceright, NoSymbol ] }; // }
key <AD04> { [ NoSymbol, NoSymbol, greater, NoSymbol ] }; // >
key <AD05> { [ NoSymbol, NoSymbol, asciicircum, dead_circumflex ] }; // ^ û
key <AD06> { [ NoSymbol, NoSymbol, ampersand, NoSymbol ] }; // &
key <AD07> { [ NoSymbol, NoSymbol, 4, NoSymbol ] }; // 4
key <AD08> { [ NoSymbol, NoSymbol, 5, NoSymbol ] }; // 5
key <AD09> { [ NoSymbol, NoSymbol, 6, NoSymbol ] }; // 6
key <AD10> { [ minus, 0x1002014, plus, 0x1002212 ] }; // - — + − (dash, m-dash, plus, minus)
key <AD11> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AD12> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AC01> { [ NoSymbol, NoSymbol, bracketleft, NoSymbol ] }; // [
key <AC02> { [ NoSymbol, NoSymbol, parenleft, NoSymbol ] }; // (
key <AC03> { [ NoSymbol, NoSymbol, parenright, NoSymbol ] }; // )
key <AC04> { [ NoSymbol, NoSymbol, bracketright, NoSymbol ] }; // ]
key <AC05> { [ NoSymbol, NoSymbol, bar, NoSymbol ] }; // |
key <AC06> { [ NoSymbol, NoSymbol, equal, NoSymbol ] }; // -
key <AC07> { [ NoSymbol, NoSymbol, 1, NoSymbol ] }; // +
key <AC08> { [ NoSymbol, NoSymbol, 2, NoSymbol ] }; // 1
key <AC09> { [ NoSymbol, NoSymbol, 3, NoSymbol ] }; // 2
key <AC10> { [ NoSymbol, NoSymbol, percent, NoSymbol ] }; // 3
key <AC11> { [apostrophe, underscore, NoSymbol, NoSymbol ] }; // ' _
key <AB01> { [ NoSymbol, NoSymbol, grave, NoSymbol ] }; // `
key <AB02> { [ NoSymbol, NoSymbol, quotedbl, NoSymbol ] }; // "
key <AB03> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] }; //
key <AB04> { [ NoSymbol, NoSymbol, dollar, NoSymbol ] }; // $
key <AB05> { [ NoSymbol, NoSymbol, exclam, NoSymbol ] }; // !
key <AB06> { [ NoSymbol, NoSymbol, asterisk, NoSymbol ] }; // *
key <AB07> { [ NoSymbol, NoSymbol, 0, NoSymbol ] }; // 0
key <AB08> { [ NoSymbol, semicolon, comma, NoSymbol ] }; // ,
key <AB09> { [ NoSymbol, colon, period, periodcentered ] }; // . ·
key <AB10> { [ NoSymbol, NoSymbol, slash, division ] }; // / ÷
key <LSGT> { [numbersign, 0x1002014, NoSymbol, NoSymbol ] }; // # — (m-dash)
};
// above with proper operators (division, multiplication and subtraction) for middle fingers, third level
partial hidden alphanumeric_keys
xkb_symbols "prog_ops" {
name[Group1]="3rd-level symbols for programmers (real operators)";
include "cyborg16(prog_intl)"
key <AD03> { [ NoSymbol, NoSymbol, division, slash ] };
key <AD08> { [ NoSymbol, NoSymbol, multiply, asterisk ] };
key <AC03> { [ NoSymbol, NoSymbol, 0x1002212, minus ] };
};
// Greek for fourth level
// Layout is based on Colemak letter positions
// . ß φ π γ ξ λ θ υ . . .
// α ρ σ τ δ η ν ε ι ο .
// ζ χ ψ ω β κ μ . . .
partial hidden alphanumeric_keys
xkb_symbols "l4_greek" {
name[Group1]="4th-level Greek";
key <AD03> { [ NoSymbol, NoSymbol, NoSymbol, Greek_phi ] }; // φ
key <AD04> { [ NoSymbol, NoSymbol, NoSymbol, Greek_pi ] }; // π
key <AD05> { [ NoSymbol, NoSymbol, NoSymbol, Greek_gamma ] }; // γ
key <AD06> { [ NoSymbol, NoSymbol, NoSymbol, Greek_xi ] }; // ξ
key <AD07> { [ NoSymbol, NoSymbol, NoSymbol, Greek_lambda ] }; // λ
key <AD08> { [ NoSymbol, NoSymbol, NoSymbol, Greek_theta ] }; // θ
key <AD09> { [ NoSymbol, NoSymbol, NoSymbol, Greek_upsilon ] }; // υ
key <AC01> { [ NoSymbol, NoSymbol, NoSymbol, Greek_alpha ] }; // α
key <AC02> { [ NoSymbol, NoSymbol, NoSymbol, Greek_rho ] }; // ρ
key <AC03> { [ NoSymbol, NoSymbol, NoSymbol, Greek_sigma ] }; // σ
key <AC04> { [ NoSymbol, NoSymbol, NoSymbol, Greek_tau ] }; // τ
key <AC05> { [ NoSymbol, NoSymbol, NoSymbol, Greek_delta ] }; // δ
key <AC06> { [ NoSymbol, NoSymbol, NoSymbol, Greek_eta ] }; // η
key <AC07> { [ NoSymbol, NoSymbol, NoSymbol, Greek_nu ] }; // ν
key <AC08> { [ NoSymbol, NoSymbol, NoSymbol, Greek_epsilon ] }; // ε
key <AC09> { [ NoSymbol, NoSymbol, NoSymbol, Greek_iota ] }; // ι
key <AC10> { [ NoSymbol, NoSymbol, NoSymbol, Greek_omicron ] }; // ο
key <AB01> { [ NoSymbol, NoSymbol, NoSymbol, Greek_zeta ] }; // ζ
key <AB02> { [ NoSymbol, NoSymbol, NoSymbol, Greek_chi ] }; // χ
key <AB03> { [ NoSymbol, NoSymbol, NoSymbol, Greek_psi ] }; // ψ
key <AB04> { [ NoSymbol, NoSymbol, NoSymbol, Greek_omega ] }; // ω
key <AB05> { [ NoSymbol, NoSymbol, NoSymbol, Greek_beta ] }; // β
key <AB06> { [ NoSymbol, NoSymbol, NoSymbol, Greek_kappa ] }; // κ
key <AB07> { [ NoSymbol, NoSymbol, NoSymbol, Greek_mu ] }; // μ
};
// ————————————————————————————————————————————————————————————————————————————
// OLD STUFF
// ————————————————————————————————————————————————————————————————————————————
// Older version of above (not quite the same; no international keys).
// Adds third-level symbols: // Alternative (not implemented):
// < { / | \ & * } > // < { ( [ ] ) } >
// [ ( - = _ : ~ + ) ] // & + * = _ ~ / - |
// ` ' ! $ # ? " // ` ! $ # ? \
partial hidden alphanumeric_keys
xkb_symbols "progsyms" {
name[Group1]="3rd-level symbols for programmers";
key <AD01> { [ NoSymbol, NoSymbol, less, NoSymbol ] };
key <AD02> { [ NoSymbol, NoSymbol, braceleft, NoSymbol ] };
key <AD03> { [ NoSymbol, NoSymbol, slash, NoSymbol ] };
key <AD04> { [ NoSymbol, NoSymbol, bar, NoSymbol ] };
key <AD05> { [ NoSymbol, NoSymbol, backslash, NoSymbol ] };
key <AD06> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AD07> { [ NoSymbol, NoSymbol, ampersand, NoSymbol ] };
key <AD08> { [ NoSymbol, NoSymbol, asterisk, NoSymbol ] };
key <AD09> { [ NoSymbol, NoSymbol, braceright, NoSymbol ] };
key <AD10> { [ NoSymbol, NoSymbol, greater, NoSymbol ] };
key <AC01> { [ NoSymbol, NoSymbol, bracketleft, NoSymbol ] };
key <AC02> { [ NoSymbol, NoSymbol, parenleft, NoSymbol ] };
key <AC03> { [ NoSymbol, NoSymbol, minus, NoSymbol ] };
key <AC04> { [ NoSymbol, NoSymbol, equal, NoSymbol ] };
key <AC05> { [ NoSymbol, NoSymbol, underscore, NoSymbol ] };
key <AC06> { [ NoSymbol, NoSymbol, colon, NoSymbol ] };
key <AC07> { [ NoSymbol, NoSymbol, asciitilde, NoSymbol ] };
key <AC08> { [ NoSymbol, NoSymbol, plus, NoSymbol ] };
key <AC09> { [ NoSymbol, NoSymbol, parenright, NoSymbol ] };
key <AC10> { [ NoSymbol, NoSymbol, bracketright, NoSymbol ] };
key <AB01> { [ NoSymbol, NoSymbol, grave, NoSymbol ] };
key <AB02> { [ NoSymbol, NoSymbol, apostrophe, NoSymbol ] };
key <AB03> { [ NoSymbol, NoSymbol, exclam, NoSymbol ] };
key <AB04> { [ NoSymbol, NoSymbol, dollar, NoSymbol ] };
key <AB07> { [ NoSymbol, NoSymbol, numbersign, NoSymbol ] };
key <AB08> { [ NoSymbol, NoSymbol, question, NoSymbol ] };
key <AB09> { [ NoSymbol, NoSymbol, quotedbl, NoSymbol ] };
};
// These have the right hand shifted one key right, in an attempt to make the
// thumb alt key easier to press. It turned out not to be a good idea.
partial alphanumeric_keys
xkb_symbols "colemak_shift" {
include "cyborg16(gbcolemak_shift)"
include "cyborg16(progsyms_shift)"
name[Group1]="United Kingdom - Colemak and progsyms shifted";
key <BKSL> { [ apostrophe, quotedbl, dead_circumflex, dead_caron ] };
include "level3(ralt_switch_multikey)"
};
partial hidden alphanumeric_keys
xkb_symbols "progsyms_shift" {
name[Group1]="3rd-level symbols for programmers shifted";
key <AD01> { [ NoSymbol, NoSymbol, less, NoSymbol ] };
key <AD02> { [ NoSymbol, NoSymbol, braceleft, NoSymbol ] };
key <AD03> { [ NoSymbol, NoSymbol, slash, NoSymbol ] };
key <AD04> { [ NoSymbol, NoSymbol, bar, NoSymbol ] };
key <AD05> { [ NoSymbol, NoSymbol, backslash, NoSymbol ] };
key <AD06> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AD07> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AD08> { [ NoSymbol, NoSymbol, ampersand, NoSymbol ] };
key <AD09> { [ NoSymbol, NoSymbol, asterisk, NoSymbol ] };
key <AD10> { [ NoSymbol, NoSymbol, braceright, NoSymbol ] };
key <AD11> { [ NoSymbol, NoSymbol, greater, NoSymbol ] };
key <AC01> { [ NoSymbol, NoSymbol, bracketleft, NoSymbol ] };
key <AC02> { [ NoSymbol, NoSymbol, parenleft, NoSymbol ] };
key <AC03> { [ NoSymbol, NoSymbol, minus, NoSymbol ] };
key <AC04> { [ NoSymbol, NoSymbol, equal, NoSymbol ] };
key <AC05> { [ NoSymbol, NoSymbol, underscore, NoSymbol ] };
key <AC06> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AC07> { [ NoSymbol, NoSymbol, colon, NoSymbol ] };
key <AC08> { [ NoSymbol, NoSymbol, asciitilde, NoSymbol ] };
key <AC09> { [ NoSymbol, NoSymbol, plus, NoSymbol ] };
key <AC10> { [ NoSymbol, NoSymbol, parenright, NoSymbol ] };
key <AC11> { [ NoSymbol, NoSymbol, bracketright, NoSymbol ] };
key <AB01> { [ NoSymbol, NoSymbol, grave, NoSymbol ] };
key <AB02> { [ NoSymbol, NoSymbol, apostrophe, NoSymbol ] };
key <AB03> { [ NoSymbol, NoSymbol, exclam, NoSymbol ] };
key <AB04> { [ NoSymbol, NoSymbol, dollar, NoSymbol ] };
key <AB05> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AB06> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AB07> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
key <AB08> { [ NoSymbol, NoSymbol, numbersign, NoSymbol ] };
key <AB09> { [ NoSymbol, NoSymbol, question, NoSymbol ] };
key <AB10> { [ NoSymbol, NoSymbol, quotedbl, NoSymbol ] };
};
// All the following were stolen from gb, with at and quotedbl swapped.
partial hidden alphanumeric_keys
xkb_symbols "gbcolemak_shift" {
include "us"
include "cyborg16(progsyms_shift)"
name[Group1]="United Kingdom - Colemak shifted";
// Alphanumeric section
key <TLDE> { [ grave, notsign, bar, bar ] };
key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
key <AE02> { [ 2, at, twosuperior, oneeighth ] };
key <AE03> { [ 3, sterling, threesuperior, sterling ] };
key <AE04> { [ 4, dollar, EuroSign, onequarter ] };
key <AE05> { [ 5, percent, EuroSign, yen ] };
key <AE06> { [ 6, asciicircum, hstroke, Hstroke ] };
key <AE07> { [ 7, ampersand, eth, ETH ] };
key <AE08> { [ 8, asterisk, thorn, THORN ] };
key <AE09> { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] };
key <AE10> { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] };
key <AE11> { [ minus, underscore, endash, emdash ] };
key <AE12> { [ equal, plus, multiply, division ] };
key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
key <AD02> { [ w, W, aring, Aring ] };
key <AD03> { [ f, F, atilde, Atilde ] };
key <AD04> { [ p, P, oslash, Ooblique ] };
key <AD05> { [ g, G, dead_ogonek, asciitilde ] };
key <AD06> { [ numbersign, asciitilde, dead_grave, dead_breve ] };
key <AD07> { [ j, J, dstroke, Dstroke ] };
key <AD08> { [ l, L, lstroke, Lstroke ] };
key <AD09> { [ u, U, uacute, Uacute ] };
key <AD10> { [ y, Y, udiaeresis, Udiaeresis ] };
key <AD11> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
key <AD12> { [ slash, question, questiondown, asciitilde ] };
key <AC01> { [ a, A, aacute, Aacute ] };
key <AC02> { [ r, R, dead_grave, asciitilde ] };
key <AC03> { [ s, S, ssharp, asciitilde ] };
key <AC04> { [ t, T, dead_acute, dead_doubleacute ] };
key <AC05> { [ d, D, dead_diaeresis, asciitilde ] };
key <AC06> { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] };
key <AC07> { [ h, H, dead_caron, asciitilde ] };
key <AC08> { [ n, N, ntilde, Ntilde ] };
key <AC09> { [ e, E, eacute, Eacute ] };
key <AC10> { [ i, I, iacute, Iacute ] };
key <AC11> { [ o, O, oacute, Oacute ] };
key <BKSL> { [ apostrophe, quotedbl, dead_circumflex,dead_caron ] };
key <LSGT> { [ backslash, bar, bar, brokenbar ] };
key <AB01> { [ z, Z, ae, AE ] };
key <AB02> { [ x, X, dead_circumflex,asciitilde ] };
key <AB03> { [ c, C, ccedilla, Ccedilla ] };
key <AB04> { [ v, V, oe, OE ] };
key <AB05> { [ b, B, dead_breve, asciitilde ] };
key <AB06> { [ bracketright,braceright, guillemotright, 0x100203a ] };
key <AB07> { [ k, K, dead_abovering, asciitilde ] };
key <AB08> { [ m, M, dead_macron, asciitilde ] };
key <AB09> { [ comma, less, dead_cedilla, asciitilde ] };
key <AB10> { [ period, greater, dead_abovedot, asciitilde ] };
key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
key <SPCE> { [ space, space, space, nobreakspace ] };
include "level3(ralt_switch)"
};