Ich nochmal. Ich wusste gar nicht mehr, dass ich doch damals schon ein paar erwähnenswerte Abweichungen vom "Standard" habe einfließen lassen bzgl. Modifier Tasten und Ebene 4. Ich wollte eigentlich irgendwann später darüber schreiben, aber was soll's. Grundsätzlich kann man die teilweise abweichende Beschriftung natürlich gerne einfach ignorieren.

Mit den Bezeichnungen Mod2/3/4 war ich nie wirklich glücklich. Ich erkläre immer mal wieder "Mod3 ist sowas wie eine weitere Umschalt-Taste". Aber warum ist es dann Mod3 und nicht Mod2? Und wenn man mit Tastatur Firmware zu tun hat, fängt die Nummerierung der Ebenen mit 0 an, und es passt wieder nicht. Vor allem aber sind drei Modifier Tasten nicht so viele, dass man anfangen muss sie durchzunummerieren. Richtige Namen sind möglich und viel ansprechender. Man würde seine Kinder auch nicht (ernsthaft) Kind1, Kind2, Kind3 nennen. Bei mir heißen die Tasten daher Interpunktionstaste und Navigation-Nummern-Taste. Über die Label "umsh", "ipun", "nanu" auf den Tastenkappen kann man sich sicher streiten.

Mir war aufgefallen, dass hoch und runter Navigieren den Mittelfinger sehr strapaziert (auf den Hardware-Tasten aber insbesondere auch auf Ebene 4, die wir beeinflussen können). Also habe ich die Pfeiltasten in eine Reihe gelegt, sodass man navigieren kann ohne die Finger von der Grundreihe zu nehmen. Das hat passende Änderungen für Bild hoch/runter, Pos1/Ende und die Lösch-Tasten nach sich gezogen.

Auf der andere Seite (wörtlich) hatte ich Neo mal "gepatcht" damit im Nummernblock 123 oben ist und nicht 789. Dass das besser ist, würde ich immer noch verteidigen, aber auch hier wollte ich dann "Ergonomie" über intuitives/gewohntes Layout stellen und habe vier statt nur drei Ziffern in die Grundreihe gelegt. Also 1234\5678\9,.0 und drum herum entsprechend angepasst.

Falls jemand das Thema vertiefen möchte, neuer Thread?

Schöne Grüße,
Chris

P.S.: Ich hänge das Python Script an, das ich (glaube ich) verwendet hatte um Neo unter Linux entsprechend zu patchen. Vielleicht besser nicht blind ausführen.


Am 14.02.26 um 18:20 schrieb Chris K via Diskussion:
Hallo zusammen,

ich habe Neo Tastenkappen zu verschenken (kostenlos bis auf etwaige Versandgebühren). Für Cherry MX kompatible Switches.

Sind in gutem Zustand, habe sie nur übrig weil ich ja letzten Sommer zu Noted gewechselt bin.

Für eine ortholineare 15x5 Tastatur, aber selbst für jemanden, der nicht genau all diese Tasten gebrauchen kann, ist es vielleicht interessant. Sind von FKCustom.

SLK Profil, Ebenen 2-6: https://e.pcloud.link/publink/show?code=XZnTR3Z7oegpFpCzdzW5uN0NKrjLjQCaKLy

LPF Profil, Ebenen 2-4 plus Qwertz (durchscheinend für RGB Beleuchtung): https://e.pcloud.link/publink/show?code=XZEMR3ZAqo9G2RkFzfpoOkBE9sWFkMHRC1k

Bei Interesse, gerne bei mir melden: chris-k [at] mailbox.org

Viele Grüße,

Chris
_______________________________________________
Diskussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
'''Patch the navigation-numbers layer of the neo layout such that 
the four arrow keys are directly under the left hand, and the home, pgup, pgdn, end keys are directly above them. 
The delete-left and delete-right keys are moved to the remaining free positions. 
The same is done for the right hand for the digits 5, 6, 7, 8 and 1, 2, 3, 4. 
Comma and dot are moved to where they are in layer 1; digits 9 and 0 next to them. 
Like in layer 3, the semicolon is moved below the colon, to the space key.
Run like this:
sudo python3 chrisk_nanu.py
! If you use Wayland instead of X11, you may have to copy the new file to ~/.config/xkb/symbols !
'''

import shutil

filepath = '/usr/share/X11/xkb/symbols/de'

# backup in the present working directory
shutil.copy2(filepath, './' + filepath[1:].replace('/', '-') + '_pre_chrisk_nanu')

# dictionary of translations (includes the pseudo layer)
dic = {
	# top row left
	'Prior,                   Prior,                   ': 'Home,                    Home,                    ', 
	'BackSpace,               BackSpace,               ': 'Prior,                   Prior,                   ', 
	'Up,                      Up,                      ': 'Next,                    Next,                    ', 
	'Delete,                  Delete,                  ': 'End,                     End,                     ', 
	'Next,                    Next,                    ': 'BackSpace,               BackSpace,               ', 
	# middle row left (Down and Right stay)
	'Home,                    Home,                    ': 'Left,                    Left,                    ', 
	'Left,                    Left,                    ': 'Up,                      Up,                      ', 
	'End,                     End,                     ': 'Delete,                  Delete,                  ', 
	# top row right
	'KP_7,                    KP_7,                    ': 'KP_1,                    KP_1,                    ', 
	'KP_8,                    KP_8,                    ': 'KP_2,                    KP_2,                    ', 
	'KP_9,                    KP_9,                    ': 'KP_3,                    KP_3,                    ', 
	'KP_Add,                  KP_Add,                  ': 'KP_4,                    KP_4,                    ', 
	# middle row right
	'KP_4,                    KP_4,                    ': 'KP_5,                    KP_5,                    ', 
	'KP_5,                    KP_5,                    ': 'KP_6,                    KP_6,                    ', 
	'KP_6,                    KP_6,                    ': 'KP_7,                    KP_7,                    ', 
	'KP_Separator,            comma,                   ': 'KP_8,                    KP_8,                    ', 
	'period,                  KP_Decimal,              ': 'KP_Add,                  KP_Add,                  ', 
	# bottom row right
	'KP_1,                    KP_1,                    ': 'KP_9,                    KP_9,                    ', 
	'KP_2,                    KP_2,                    ': 'KP_Separator,            comma,                   ', 
	'KP_3,                    KP_3,                    ': 'period,                  KP_Decimal,              ', 
	'semicolon,               NoSymbol,                ': 'KP_0,                    KP_0,                    ', 
	'KP_0,                    KP_0,                    ': 'semicolon,               NoSymbol,                ', 
}

# load the config file as one string
config = None
with open(filepath) as file:
	config = file.read()
assert config is not None

# get the relevant section (roughly) to avoid global substitution (messing with the other de layouts)
beg = config.find('xkb_symbols "neo_base" {'); assert beg != -1
end = config.find('xkb_symbols "neo" {', beg); assert end != -1
sub = config[beg:end]

# two-pass with temporaries to avoid overriding own changes
for k, v in dic.items():
	sub = sub.replace(' ' + k, 'TMP_' + v, 1) # last arg is max num replacements
for k, v in dic.items():
	sub = sub.replace('TMP_' + v, ' ' + v, 1)

# overwrite the old file
with open(filepath, 'w') as file:
	file.write(config[:beg])
	file.write(sub)
	file.write(config[end:])
_______________________________________________
Diskussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Antwort per Email an