Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ac9ca883b2 | ||
|
852fa8ceb0 | ||
|
d9667dabbf | ||
|
739e4b3577 | ||
|
2e34f1b6c5 | ||
|
59213e8145 | ||
|
14ac53f4af | ||
|
67c4134c38 | ||
|
22e2749084 |
16
README.md
16
README.md
@ -1,4 +1,16 @@
|
|||||||
# xkb_neo
|
# xkb_neo
|
||||||
My xkb modifications for making neo etc (inclusive vou) work properly with every part of GNU/Linux. YES, even IntelliJ
|
My xkb modifications for making neo etc (inclusive vou) work properly with every part of GNU/Linux.
|
||||||
|
|
||||||
Just execute patch_xkb.py as superuser to patch /usr/share/X11/xkb. Run enable_gnome.sh as normal user to enable alternative keyboard layouts on GNOME
|
For programs running through XWayland manually execute
|
||||||
|
|
||||||
|
~~~bash
|
||||||
|
setxkbmap de vou
|
||||||
|
~~~
|
||||||
|
|
||||||
|
to get proper keybindings working.
|
||||||
|
|
||||||
|
Execute patch.sh to patch your system.
|
||||||
|
|
||||||
|
Or Manually:
|
||||||
|
- execute patch_xkb.py as superuser to patch /usr/share/X11/xkb.
|
||||||
|
- execute enable_gnome.sh as normal user to enable alternative keyboard layouts on GNOME
|
||||||
|
@ -10,15 +10,14 @@ def brackets(text):
|
|||||||
res = 0
|
res = 0
|
||||||
slash = 0
|
slash = 0
|
||||||
for i in text:
|
for i in text:
|
||||||
match i:
|
if i == "/":
|
||||||
case "/":
|
|
||||||
slash += 1
|
slash += 1
|
||||||
if slash == 2:
|
if slash == 2:
|
||||||
break
|
break
|
||||||
continue
|
continue
|
||||||
case "{":
|
elif i == "{":
|
||||||
res += 1
|
res += 1
|
||||||
case "}":
|
elif i == "}":
|
||||||
res -= 1
|
res -= 1
|
||||||
slash = 0
|
slash = 0
|
||||||
return res
|
return res
|
||||||
@ -60,7 +59,7 @@ if "vou" not in "\n".join(de):
|
|||||||
koy = ([i for i in range(len(de)) if "\"koy\"" in de[i]][0], -1)
|
koy = ([i for i in range(len(de)) if "\"koy\"" in de[i]][0], -1)
|
||||||
koy = (koy[0] - 1, bracket_end(de, koy[0]))
|
koy = (koy[0] - 1, bracket_end(de, koy[0]))
|
||||||
de = de[:koy[1]] + de_koy_patch + de[koy[1]:]
|
de = de[:koy[1]] + de_koy_patch + de[koy[1]:]
|
||||||
with open(f"{xkb}/symbols/de_neo_base", "w") as f:
|
with open(f"{xkb}/symbols/de", "w") as f:
|
||||||
f.write("\n".join(de))
|
f.write("\n".join(de))
|
||||||
|
|
||||||
if "quote_switch" not in "\n".join(level3):
|
if "quote_switch" not in "\n".join(level3):
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
partial alphanumeric_keys modifier_keys keypad_keys
|
partial alphanumeric_keys modifier_keys keypad_keys
|
||||||
xkb_symbols "kou" {
|
xkb_symbols "kou" {
|
||||||
|
|
||||||
include "de_neo_base(koy_base)"
|
include "de(koy_base)"
|
||||||
|
|
||||||
key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK";
|
||||||
// level 4: replace numero sign by heavy check mark (key 3)
|
// level 4: replace numero sign by heavy check mark (key 3)
|
||||||
key <AE03> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol, U2714, NoSymbol, NoSymbol, NoSymbol ] };
|
key <AE03> { [ NoSymbol, NoSymbol, NoSymbol, NoSymbol, U2714, NoSymbol, NoSymbol, NoSymbol ] };
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ xkb_symbols "kou" {
|
|||||||
// move comma and endash to QWERTZ-C key
|
// move comma and endash to QWERTZ-C key
|
||||||
key <AB03> { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] };
|
key <AB03> { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] };
|
||||||
|
|
||||||
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK";
|
||||||
// move f and ssharp keys to new positions, replace at by rightarrow; level4: replace period with semicolon
|
// move f and ssharp keys to new positions, replace at by rightarrow; level4: replace period with semicolon
|
||||||
key <AD10> { [ f, F, ampersand, Greek_phi, KP_Add, KP_Add, Greek_PHI, NoSymbol ] };
|
key <AD10> { [ f, F, ampersand, Greek_phi, KP_Add, KP_Add, Greek_PHI, NoSymbol ] };
|
||||||
key <BKSL> { [ ssharp, U1E9E, rightarrow, Greek_finalsmallsigma, semicolon, KP_Decimal, jot, NoSymbol ] };
|
key <BKSL> { [ ssharp, U1E9E, rightarrow, Greek_finalsmallsigma, semicolon, KP_Decimal, jot, NoSymbol ] };
|
||||||
@ -123,7 +123,7 @@ xkb_symbols "kou" {
|
|||||||
|
|
||||||
partial alphanumeric_keys
|
partial alphanumeric_keys
|
||||||
xkb_symbols "vou" {
|
xkb_symbols "vou" {
|
||||||
include "de_neo_base(kou)"
|
include "de(kou)"
|
||||||
|
|
||||||
key <AB10> { [ k, K, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
|
key <AB10> { [ k, K, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
|
||||||
key <AD01> { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
|
key <AD01> { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
|
||||||
|
@ -26,7 +26,7 @@ xkb_symbols "neo_base" {
|
|||||||
|
|
||||||
// Alphanumeric-keys
|
// Alphanumeric-keys
|
||||||
// ===============
|
// ===============
|
||||||
key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK";
|
||||||
|
|
||||||
// Tab as Multi_key (Compose)
|
// Tab as Multi_key (Compose)
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
@ -54,7 +54,7 @@ xkb_symbols "neo_base" {
|
|||||||
|
|
||||||
// Top row
|
// Top row
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK";
|
||||||
key <AD01> { symbols[Group1] = [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ],
|
key <AD01> { symbols[Group1] = [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ],
|
||||||
actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), RedirectKey(key=<PGUP>), RedirectKey(key=<PGUP>), NoAction(), NoAction() ]};
|
actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), RedirectKey(key=<PGUP>), RedirectKey(key=<PGUP>), NoAction(), NoAction() ]};
|
||||||
key <AD02> { symbols[Group1] = [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ],
|
key <AD02> { symbols[Group1] = [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ],
|
||||||
@ -74,12 +74,12 @@ xkb_symbols "neo_base" {
|
|||||||
|
|
||||||
key <AD11> { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] };
|
key <AD11> { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] };
|
||||||
|
|
||||||
key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK";
|
||||||
key <AD12> { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] };
|
key <AD12> { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] };
|
||||||
|
|
||||||
// Middle row
|
// Middle row
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK";
|
||||||
key <AC01> { symbols[Group1] = [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ],
|
key <AC01> { symbols[Group1] = [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ],
|
||||||
actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), RedirectKey(key=<HOME>), RedirectKey(key=<HOME>), NoAction(), NoAction() ]};
|
actions[Group1] = [ NoAction(), NoAction(), NoAction(), NoAction(), RedirectKey(key=<HOME>), RedirectKey(key=<HOME>), NoAction(), NoAction() ]};
|
||||||
key <AC02> { symbols[Group1] = [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ],
|
key <AC02> { symbols[Group1] = [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ],
|
||||||
@ -114,12 +114,12 @@ xkb_symbols "neo_base" {
|
|||||||
|
|
||||||
key <AB06> { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] };
|
key <AB06> { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] };
|
||||||
key <AB07> { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] };
|
key <AB07> { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] };
|
||||||
key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK";
|
||||||
key <AB08> { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] };
|
key <AB08> { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] };
|
||||||
key <AB09> { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] };
|
key <AB09> { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] };
|
||||||
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_WITH_LEVEL5_LOCK";
|
||||||
key <AB10> { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] };
|
key <AB10> { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] };
|
||||||
key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
|
key.type[Group1] = "EIGHT_LEVEL_WITH_LEVEL5_LOCK";
|
||||||
|
|
||||||
// Space key
|
// Space key
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
|
@ -2,8 +2,5 @@
|
|||||||
// The Quote key (while pressed) chooses the third shift level.
|
// The Quote key (while pressed) chooses the third shift level.
|
||||||
partial modifier_keys
|
partial modifier_keys
|
||||||
xkb_symbols "quote_switch" {
|
xkb_symbols "quote_switch" {
|
||||||
key <AC11> {
|
key <AC11> {[ ISO_Level3_Shift ], type[group1]="ONE_LEVEL" };
|
||||||
type[Group1]="ONE_LEVEL",
|
|
||||||
symbols[Group1] = [ ISO_Level3_Shift ]
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user