Skript und Dokumentation neu
This commit is contained in:
parent
623d6d83e3
commit
0d75220574
185
yaml/neo20.parse.py
Normal file
185
yaml/neo20.parse.py
Normal file
@ -0,0 +1,185 @@
|
||||
#YAML Parser for the Neo reference
|
||||
#Copyright 2009 Martin Roppelt (m.p.roppelt ἢτ web in Germany)
|
||||
#
|
||||
#This file is part of German NEO-Layout Version 2.
|
||||
#German Neo Layout Version 2 is free software: you can redistribute it and/or
|
||||
#modify it under the terms of the GNU General Public License as published by the
|
||||
#Free Software Foundation, either version 3 of the License, or (at your option)
|
||||
#any later version. You should have received a copy of the GNU General Public
|
||||
#License along with German NEO-Layout Version 2. If not, see
|
||||
#<http://www.gnu.org/licenses/>.
|
||||
'''
|
||||
Converts the reference into both human and machine readable and editable files
|
||||
for automated creating of keyboard drivers, pictures and references.
|
||||
'''
|
||||
#Needs at least Phyton 3.0 and PyYAML 3.08 (pyyaml.org) to run.
|
||||
#
|
||||
#Call with -h|--help to print command line options.
|
||||
#
|
||||
#Variables:
|
||||
#b: box drawing characters as tuple,
|
||||
#index bits: (0) left (1) down (2) right (3) up
|
||||
##c: control file #for reference
|
||||
#f: file iterator
|
||||
#i: index-sorted file
|
||||
#m: model file
|
||||
#min: miniatures
|
||||
#n: name/number iterator
|
||||
#o: command line options:
|
||||
#o.a: auto-completion of file names as boolean
|
||||
#o.d: destination file name
|
||||
#o.i: index-sorted file name
|
||||
#o.m: model file name
|
||||
#o.r: paths relative to ./ otherwise to ../A-REFERENZ-A/ as boolean
|
||||
#o.s: source file name
|
||||
#o.t: destination file types (i/m/p/v)
|
||||
#o.v: view file name
|
||||
#p: pattern file
|
||||
#pm: pre-model
|
||||
#r: compiled regular expression
|
||||
#s: source file as string
|
||||
#v: view file, contains:
|
||||
#pv: pre-view
|
||||
# string literals
|
||||
# replacement commands
|
||||
# patterns
|
||||
|
||||
from neo20_global import b
|
||||
from optparse import OptionParser, make_option
|
||||
from sys import stdout
|
||||
from unicodedata import category
|
||||
import os
|
||||
import re
|
||||
import yaml
|
||||
|
||||
def parse(s, w = 5):
|
||||
'''
|
||||
Returns a representation of a key field s with the standard with w.
|
||||
'''
|
||||
#Variables:
|
||||
#i: line iterator
|
||||
#j: level iterator
|
||||
#l: key line iterator
|
||||
#y: key level list
|
||||
#m: model
|
||||
#k: key iterator
|
||||
#s: key field as string
|
||||
#w: standard key with
|
||||
#v: view
|
||||
#q: key iterator
|
||||
m = []; v = []; y = []; i = 0
|
||||
for l in [l[:s.index(b[3])] for l in s.splitlines()[1:]]:
|
||||
if l[0] in (b[12], b[14]):
|
||||
m.append([]); v.append([])
|
||||
for j, l in enumerate(y[::-1]):
|
||||
q = 0
|
||||
for k in l[1:].split(b[10]):
|
||||
if j == 0:
|
||||
m[i].append([]); v[i].append([])
|
||||
if len(k) == w:
|
||||
if w == 7:
|
||||
m[i][q].extend([k[0], k[2:5], k[6:7]])
|
||||
elif w == 5:
|
||||
m[i][q].extend(list(k[0:5:2]))
|
||||
elif w == 1:
|
||||
m[i][q] = k
|
||||
else:
|
||||
v[i][q] = k
|
||||
q += 1
|
||||
i += 1; y = []
|
||||
else:
|
||||
y.append(l)
|
||||
return m, v
|
||||
|
||||
def compare(m, min):
|
||||
'''
|
||||
Compares the overall and miniature key field and returns their completed
|
||||
views.
|
||||
'''
|
||||
v = [m[1] for m in m]
|
||||
return v
|
||||
|
||||
#command line options:
|
||||
o = OptionParser(usage = 'example: %prog -ti -astest',
|
||||
description = 'YAML Parser for the Neo reference',
|
||||
option_list = [
|
||||
make_option('-a', action = 'store_true', default = False, help = 'source file \
|
||||
name is inserted into ‘neo20-’ and ‘.txt’'),
|
||||
make_option('-r', action = 'store_false', default = True, help = 'source and \
|
||||
destination files are not relative to ../A-REFERENZ-A/'),
|
||||
make_option('-t', metavar = 'mxiv', default = 'm', help = 'destination file \
|
||||
types (default = %default)'),
|
||||
make_option('-s', metavar = 'source file', default = 'neo20.txt',
|
||||
help = 'default = %default'),
|
||||
make_option('-d', metavar = 'destination file name', help = 'default = *.*'),
|
||||
make_option('-m', metavar = 'model file', help = 'default = *.model'),
|
||||
make_option('-x', metavar = 'hex model file', help = 'default = *.x'),
|
||||
make_option('-i', metavar = 'index-sorted file', help = 'default = *.index'),
|
||||
make_option('-v', metavar = 'view file', help = 'default = *.view')]
|
||||
).parse_args()[0]
|
||||
|
||||
#evaluate options:
|
||||
o.t = o.t.lower()
|
||||
if o.d == None:
|
||||
o.d = o.s.rsplit('.txt')[0]
|
||||
if o.a:
|
||||
o.s, o.d = 'neo20-' + o.s + '.txt', 'neo20-' + o.d
|
||||
if o.r:
|
||||
o.s, o.d = '../A-REFERENZ-A/' + o.s, '../A-REFERENZ-A/' + o.d
|
||||
for f in '.model', '.x', '.index', '.view':
|
||||
if f[1] in o.t.lower() and eval('o.' + f[1]) == None:
|
||||
exec('o.' + f[1] + ' = o.d + f')
|
||||
|
||||
#input:
|
||||
s = open(o.s, encoding = 'utf8').read()
|
||||
|
||||
#processing:
|
||||
r = re.compile(b[6] + '.*?' + b[9] + '.*?\n(?=\n)', re.DOTALL | re.MULTILINE)
|
||||
p, pm = r.split(s), r.findall(s) #Split into key fields and the rest
|
||||
for n in (0, 16):
|
||||
p.insert(n, p.pop(n) + pm.pop(n) + p.pop(n)) #Put the legends back into the
|
||||
#pattern list
|
||||
|
||||
#parse key fields
|
||||
m = [parse(pm[9]), parse(pm[20], 7)]
|
||||
min = []
|
||||
for n in range(6):
|
||||
min.append([parse(pm[10 + n], 1), parse(pm[21+ n], 7)])
|
||||
v = compare(m, min); m = [m[0] for m in m]
|
||||
|
||||
#complete view ##
|
||||
v = [[v], []]
|
||||
|
||||
v.append(p)
|
||||
|
||||
#create hex model
|
||||
if 'x' in o.t.lower():
|
||||
x = []
|
||||
for f, n in enumerate(m):
|
||||
x.append(); ##
|
||||
|
||||
#create index
|
||||
if 'i' in o.t.lower():
|
||||
i = []
|
||||
for n in m:
|
||||
for n in n:
|
||||
i.extend(n)
|
||||
#output:
|
||||
for f in 'mxiv':
|
||||
if not stdout.isatty():
|
||||
file = stdout
|
||||
else:
|
||||
file = open(eval('o.' + f), 'w', encoding = 'utf8')
|
||||
if f in o.t:
|
||||
if f == 'v':
|
||||
yaml.dump_all(v[0:-1], file, allow_unicode = True,
|
||||
explicit_start = True,
|
||||
explicit_end = True)
|
||||
yaml.dump(v.pop(), file, allow_unicode = True,
|
||||
explicit_start = True,
|
||||
explicit_end = True,
|
||||
default_style = '|')
|
||||
else:
|
||||
yaml.dump(eval(f), file, allow_unicode = True,
|
||||
explicit_start = True,
|
||||
explicit_end = True)
|
3
yaml/neo20_global.py
Normal file
3
yaml/neo20_global.py
Normal file
@ -0,0 +1,3 @@
|
||||
#define box drawing
|
||||
b = None, None, None, '\u2510', None, '\u2500', '\u250C', '\u252C', None, \
|
||||
'\u2518', '\u2502', '\u2524', '\u2514', '\u2534', '\u251C', '\u253C'
|
@ -1,12 +1,39 @@
|
||||
Aus der neo20.yaml sollen einmal automatisch erstellt werden:
|
||||
|
||||
- XkbMap
|
||||
- XModMap -> Konsolen-Map, Tastenaufkleber
|
||||
- KbdNeo
|
||||
- AHK, Bildschirmtastatur
|
||||
- Mac-Treiber, hier brauche ich die Unterstützung von Mac-Entwicklern
|
||||
- Referenz
|
||||
- gerne auch Aufsteller, Tabellen, Druckvorlagen, …
|
||||
- KTouch-Lektionen?
|
||||
|
||||
Für die Yaml/Python-Verarbeitung nutze ich PyYAML (pyyaml.org).
|
||||
Neo-Projekt: Maschinenlesbare Referenz
|
||||
|
||||
Martin Roppelt (m.p.roppelt ät web in Deutschland)
|
||||
|
||||
Ressourcen:
|
||||
- https://svn.neo-layout.org/grafik/xml-vorschlag/, Revision 200
|
||||
- http://www.eigenheimstrasse.de/~ben/layoutgen/layoutgen/
|
||||
- svn://svn.tuxfamily.org/svnroot/dvorak/svn/pilotes/trunk/configGenerator/
|
||||
- http://pyyaml.org/
|
||||
|
||||
E-Mails:
|
||||
07/07 [neo_layout] Autohotkey und ein paar Ideen
|
||||
07/07 [neo_layout] neo.xml
|
||||
11-12/08 [neo] Referenz als XML für automatische Layout-Generierung
|
||||
01/09 Maschinenlesbare Referenz
|
||||
|
||||
Funktionsweise:
|
||||
Menschenlesbare Referenz, Unicode-Hex-Ansicht
|
||||
<=> Maschinenlesbare Referenz
|
||||
<=> Treiber, Grafiken:
|
||||
|
||||
- XkbMap
|
||||
- XModMap -> Konsolen-Map, Tastenaufkleber
|
||||
- KbdNeo
|
||||
- AHK, Bildschirmtastatur/SVGs
|
||||
- Mac-Treiber
|
||||
- Aufsteller, Tabellen
|
||||
- KTouch-Lektion
|
||||
|
||||
Um einen Treiber usw. zu erzeugen, wird ein View benötigt, der die zur
|
||||
Darstellung zusätzlich benötigten Daten enthält. Dieser kann auch aus den
|
||||
bereits bestehenden Treibern erstellt werden. Wenn man also an der Neo-Belegung
|
||||
etwas ändert, kann man so alle Treiber synchronisieren. So lassen sich auch
|
||||
rasch aus Belegungen Neo-3-Treiber und Forks erstellen.
|
||||
|
||||
Projektstatus:
|
||||
Zur Zeit entwickele ich einen Parser für die Referenz. Danach möchte ich ein
|
||||
Skript für die Erstellung der neo20.txt aus der maschinenlesbaren Referenz
|
||||
schreiben.
|
||||
|
@ -1,80 +0,0 @@
|
||||
# Parser für die NEO-Referenz, erzeugt eine YAML-Datei.
|
||||
# Copyright 2008 Martin Roppelt
|
||||
# E-Mail: m.p.roppelt@web.de
|
||||
|
||||
# This file is part of the German NEO-Layout Version 2.
|
||||
# German NEO-Layout Version 2 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
# You should have received a copy of the GNU General Public License along with German NEO-Layout Version 2. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import io, yaml
|
||||
|
||||
a = [[0, 2, 6], [1, 5, 7]]
|
||||
|
||||
try:
|
||||
# s: Quelldatei (source) öffnen:
|
||||
s = io.open('../A-REFERENZ-A/neo20.txt', 'r', 2, 'utf8').readlines()
|
||||
# g: Wörterbuch-Datei (Gerüst) öffnen:
|
||||
g = yaml.load(open('ref.skel'))
|
||||
|
||||
# Tastaturfelder parsen:
|
||||
# Erzeuge Liste für die Tastaturfelder:
|
||||
# d: Liste der kombinierten Tastaturfelder („Alle Ebenen“)
|
||||
# m: Liste der Mini-Tastaturfelder
|
||||
d = m = [[], []]
|
||||
# Durchlaufe Tastaturfelder („Alle Ebenen“):
|
||||
# f: Iterator Tastaturfeld (field)
|
||||
# q: Feld der Such-Schlüssel (query)
|
||||
q = ['Ha', 'Za']
|
||||
for f in range(2):
|
||||
# Bestimme Zeile l (line): Position des Schlüssels q[f] in der Quelldatei (Beginn des Tastaturfeldes)
|
||||
l = s.index(g[q[f]])
|
||||
# Durchlaufe die Tastaturreihen:
|
||||
# r: Iterator Tastaturreihe (row)
|
||||
for r in range(6):
|
||||
# Erzeuge Liste für Tastaturreihe:
|
||||
d[f].append([])
|
||||
# Erzeuge Liste für die zeilenweise Beschriftung der Tasten der Tastaturreihe:
|
||||
z = [[], []]
|
||||
# i: Iterator Tastenzeile (iterator)
|
||||
for i in range(2):
|
||||
z[i] = s[l + (r + 1) * 3 - 1 -i].split(u'│')[1:-1]
|
||||
# Wenn die Zeilen einer Tastenreihe nicht gleich viele Tasten enthalten, gebe eine Fehlermeldung aus und beende das Skript:
|
||||
if len(z[0]) != len(z[1]):
|
||||
print u'Die Zeilen der %s. Reihe im Feld »%s« enthalten unterschiedlich viele Tasten!' % (1 + r, f)
|
||||
quit()
|
||||
# Durchlaufe die Zeilen der Tastaturreihe:
|
||||
# k: Iterator Tasten (key)
|
||||
for k in range(len(z[0])):
|
||||
# Erzeuge Wörterbuch für Taste:
|
||||
d[f][r].append({})
|
||||
# Schreibe Vollbreite der Taste:
|
||||
d[f][r][k]['v'] = len(z[0][k])
|
||||
# Wenn die Breite der Taste 5 bzw 7 ist (Normale Taste),
|
||||
# schreibe die Zeichen der Ebenen der Taste:
|
||||
# schreibe die Beschriftung der Taste:
|
||||
if len(z[0][k]) == 5 + 2 * f:
|
||||
# i: Iterator Tastenzeile
|
||||
for i in range(2):
|
||||
# j: Iterator Ebene
|
||||
for j in range(3):
|
||||
# Erzeuge Wörterbuch für Ebene der Taste:
|
||||
d[f][r][k][1 + i * 3 + j] = {}
|
||||
if f:
|
||||
if z[i][k][0] == ' ' and z[i][k][-1] == ' ':
|
||||
d[f][r][k][1 + i * 3 + j]['i'] = z[i][k][j * 2 + 1]
|
||||
else:
|
||||
d[f][r][k][1 + i * 3 + j]['i'] = z[i][k][a[0][j]: a[1][j]]
|
||||
else:
|
||||
d[f][r][k][1 + i * 3 + j]['i'] = z[i][k][j * 2]
|
||||
# Kopiere das Zeichen der 1. Ebene in die Beschriftung der Taste:
|
||||
# d[f][r][k]['i'] = d[f][r][k][1]['i']
|
||||
else:
|
||||
d[f][r][k]['i'] = z[1][k] + z[0][k]
|
||||
|
||||
yaml.dump(d, open('ref.parse', 'w'))
|
||||
except IOError:
|
||||
print "I/O-Fehler"
|
||||
except yaml.YAMLError, exc:
|
||||
if hasattr(exc, 'problem_mark'):
|
||||
mark = exc.problem_mark
|
||||
print "YAML-Parserfehler: (%s:%s)" % (mark.line+1, mark.column+1)
|
267
yaml/ref.skel
267
yaml/ref.skel
@ -1,267 +0,0 @@
|
||||
Ia: |
|
||||
-------------------------------------------------------------------------------
|
||||
ACHTUNG:
|
||||
Damit alles ordentlich dargestellt wird, muss man für die Darstellung z. B. im
|
||||
Texteditor eine dicktengleiche Schrift einstellen!
|
||||
|
||||
Im Browser (Firefox) muss man unter Ansicht, Zeichenkodierung auf Unicode
|
||||
(UTF-8) stellen.
|
||||
|
||||
Unter Windows ist in der Grundinstallation leider keine dicktengleiche Schrift
|
||||
installiert, die befriedigend viele Unicodezeichen beinhaltet.
|
||||
Abhilfe schafft z. B. DejaVu Sans Mono (ist z. B. bei OpenOffice dabei):
|
||||
http://dejavu.sourceforge.net/
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
== Haupttastatur ==
|
||||
=== Legende – Haupttastatur ===
|
||||
┌─────┐ 1 … 1. Ebene (kein Mod) │ 4 … 4. Ebene (Mod4)
|
||||
│2 4 6│ 2 … 2. Ebene (Umschalt) │ 5 … 5. Ebene (Mod3+Umschalt)
|
||||
│1 3 5│ 3 … 3. Ebene (Mod3) │ 6 … 6. Ebene (Mod3+Mod4)
|
||||
└─────┘
|
||||
• Ebene 1: Kleinbuchstaben (kein Mod)
|
||||
• Ebene 2: Großbuchstaben (Umschalt)
|
||||
• Ebene 3: Sonderzeichen (Mod3)
|
||||
• Ebene 4: Navigation und Ziffernblock (Mod4)
|
||||
• Ebene 5: Griechische Kleinbuchstaben (Mod3+Umschalt)
|
||||
• Ebene 6: Griechische Großbuchstaben (Mod3+Mod4)
|
||||
|
||||
• Kombo/Compose: Zusammensetzen von Zeichen (Mod3+Tab)
|
||||
Beispiel:
|
||||
»Compose« »Compose loslassen« »o« »c« = ©
|
||||
• Feststellen/Capslock: Dauergroßschreiben (Umschalt+Umschalt)
|
||||
Zum Lösen der Feststellung nochmals gleiche Kombination
|
||||
• Feststellen der Ebene 4: (Mod4+Mod4) oder (Umschalt+Mod3+Tab)
|
||||
Zum Lösen der Feststellung nochmals gleiche Kombination
|
||||
|
||||
HINWEIS: Unter Linux ist es momentan noch nicht möglich die Feststellung
|
||||
zu lösen, indem man beide Mods drückt. Man muss dort nur einen drücken!
|
||||
|
||||
=== Maustastatursteuerung ===
|
||||
Die Maustastatursteuerung schaltet man über Shift+Mod4+T1 ein und ebenso wieder aus.
|
||||
Mit dieser kann man den Mauszeiger über die Tastatur steuern. Dies kann sinnvoll sein, falls
|
||||
die Maus oder das Touchpad streikt oder keine solches Medium vorhanden ist.
|
||||
Am besten geeignet ist dazu die Ebene 4 des Keypads (z.B. mit Mod4_Lock). Verzichtet man auf
|
||||
Markierungen ist auch Ebene 1 des Keypads geeignet.
|
||||
Des Weiteren kann man die Zahlen auf Ebene 4 des Haupttastaturfelds benutzen, jedoch ist die
|
||||
Bedienung dort weniger komfortabel.
|
||||
|
||||
=== Symbole ===
|
||||
⇞⇟ … Bild auf/Bild ab
|
||||
⇱⇲ … Pos1/Ende
|
||||
⌫ ⌦ … Backspace/Entf
|
||||
⌧ … Esc
|
||||
⎀ … Einf
|
||||
⇠⇡⇢⇣ … Links/Hoch/Rechts/Runter
|
||||
♫ … Steht als Symbol für die Kombotaste (Compose)
|
||||
╌ … Weicher Trennstrich (U+00AD SOFT HYPHEN)
|
||||
␣ … Leerzeichen (SPACE)
|
||||
⍽ … Geschütztes Leerzeichen (U+00A0 NO-BREAK SPACE)
|
||||
¦ … Schmales, geschütztes Leerzeichen (U+202F NARROW NO-BREAK SPACE)
|
||||
↶ … undo-Funktion
|
||||
Beg … Klick mit der Tastaturmaus
|
||||
|
||||
=== Akzenttasten ===
|
||||
Zu den Akzenten siehe auch
|
||||
• http://unicode.e-workers.de/
|
||||
• http://de.wikipedia.org/wiki/Diakritisches_Zeichen
|
||||
• http://de.wikipedia.org/wiki/Liste_lateinisch-basierter_Alphabete
|
||||
|
||||
Ta: |
|
||||
T1 („Tote Taste 1“: Taste links neben der 1)
|
||||
Tb: |
|
||||
T2 („Tote Taste 2“: zwei Tasten rechts neben der 0)
|
||||
Tc: |
|
||||
T3 („Tote Taste 3“: Taste rechts neben dem scharfen S (ß))
|
||||
Ib: |
|
||||
|
||||
ACHTUNG: „Tote Tasten“ (Tasten zum Erzeugen toter Zeichen – also Zeichen die nicht
|
||||
gleich erscheinen, sondern nur in Kombination mit einem weiteren Buchstaben) werden
|
||||
folgendermaßen bedient (Beispiel):
|
||||
1. Tote Tilde »~« eingeben.
|
||||
2. Danach »n«.
|
||||
3. Es erscheint das »ñ«.
|
||||
|
||||
TIPP: Mit den toten Tasten Zirkumflex und Querstrich kann man hoch(ˆ)- und tiefgestellte(/) Ziffern erzeugen.
|
||||
|
||||
=== Taste mit Bindestrichen, Gedankenstrich usw. ===
|
||||
Zu den Gedankenstrichen usw. siehe:
|
||||
• http://www.matthias-kammerer.de/SonsTypo3.htm
|
||||
• http://de.wikipedia.org/wiki/Weicher_Trennstrich
|
||||
S: |
|
||||
Taste rechts neben der 0
|
||||
Ic: |
|
||||
Außerdem gibt es noch
|
||||
• den (echten) Hyphen (U+2010 HYPHEN), der über <dead_stroke> + <space> erzugt wird
|
||||
• das (echte) Minuszeichen (U+2212 MINUS SIGN) auf dem Keypad
|
||||
• den (deutschen) Gedankenstrich (U+2013 EN DASH)
|
||||
• den Bindestrich/Minusersatz (U+002D HYPHEN-MINUS)
|
||||
|
||||
A: |
|
||||
=== Anführungszeichen ===
|
||||
Id: |
|
||||
Siehe auch http://de.wikipedia.org/wiki/Anf%C3%BChrungszeichen
|
||||
Ie: |
|
||||
=== Dezimaltrennzeichen ===
|
||||
Das Dezimaltrennzeichen ist auf englischen und südamerikanischen Systemen ein Punkt ».«.
|
||||
Auf deutschen, französischen, spanischen, schweizerischen und anderen ein Komma »,«.
|
||||
Siehe auch http://de.wikipedia.org/wiki/Dezimaltrennzeichen
|
||||
|
||||
=== Ziffern ===
|
||||
Die Ziffern auf der Ersten Ebene sind die »normalen« Zahlen (also nicht die KP_-Variante),
|
||||
wogegen für den Ziffernblock auf der vierten Ebene stets die KP_‐Varianten verwendet werden
|
||||
sollten, um die Vielseitigkeit und Funktionsfähigkeit der NEO‐Tastatur zu gewährleisten.
|
||||
|
||||
=== Alle Ebenen – Haupttastatur ===
|
||||
Ha: |
|
||||
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┐
|
||||
Hb: |
|
||||
├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──────┤
|
||||
Hc: |
|
||||
├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ │
|
||||
Hd: |
|
||||
├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┴─────┤
|
||||
He: |
|
||||
├──────┼─────┴┬────┴─┬───┴─────┴─────┴─────┴─────┴─────┴────┬┴─────┼─────┴┬──────┬──────┤
|
||||
Hf: |
|
||||
└──────┴──────┴──────┴──────────────────────────────────────┴──────┴──────┴──────┴──────┘
|
||||
M1: |
|
||||
=== Erste Ebene – Miniatur ===
|
||||
Ma: |
|
||||
┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
|
||||
Mb: |
|
||||
├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
|
||||
Mc: |
|
||||
├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
|
||||
Md: |
|
||||
├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
|
||||
Me: |
|
||||
├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
|
||||
Mf: |
|
||||
└───┴──┴──┴───────────┴──┴──┴──┴───┘
|
||||
M2: |
|
||||
=== Zweite Ebene – Miniatur ===
|
||||
M3: |
|
||||
=== Dritte Ebene – Miniatur ===
|
||||
M4: |
|
||||
=== Vierte Ebene – Miniatur ===
|
||||
M5: |
|
||||
=== Fünfte Ebene – Miniatur ===
|
||||
M6: |
|
||||
=== Sechste Ebene – Miniatur ===
|
||||
|
||||
If: |
|
||||
== Ziffernblock ==
|
||||
Um die Vielseitigkeit und Funktionsfähigkeit der NEO‐Tastatur zu gewährleisten,
|
||||
sollten für alle Elemente auf dem Keypad wenn möglich die KP_‐Variante verwendet werden!
|
||||
|
||||
=== Legende – Ziffernblock ===
|
||||
┌───────┐ 1 … 1. Ebene (kein Mod) 4 … 4. Ebene (Mod4)
|
||||
│ 2 4 6 │ 2 … 2. Ebene (Umschalt) 5 … 5. Ebene (Mod3+Umschalt)
|
||||
│ 1 3 5 │ 3 … 3. Ebene (Mod3) 6 … 6. Ebene (Mod3+Mod4)
|
||||
└───────┘
|
||||
=== Rechenzeichen ===
|
||||
Z: |
|
||||
=== Alle Ebenen – Ziffernblock ===
|
||||
Za: |
|
||||
┌───────┬───────┬───────┬───────┐
|
||||
Zb: |
|
||||
├───────┼───────┼───────┼───────┤
|
||||
Zc: |
|
||||
├───────┼───────┼───────┤ │
|
||||
Zd: |
|
||||
├───────┴───────┼───────┤ │
|
||||
Ze: |
|
||||
└───────────────┴───────┴───────┘
|
||||
N1: |
|
||||
=== Erste Ebene – Miniatur ===
|
||||
Na: |
|
||||
┌───┬───┬───┬───┐
|
||||
Nb: |
|
||||
├───┼───┼───┼───┤
|
||||
Nc: |
|
||||
├───┼───┼───┤ │
|
||||
Nd: |
|
||||
├───┴───┼───┤ │
|
||||
Ne: |
|
||||
└───────┴───┴───┘
|
||||
N2: |
|
||||
=== Zweite Ebene – Miniatur ===
|
||||
N3: |
|
||||
=== Dritte Ebene – Miniatur ===
|
||||
25: |
|
||||
=== Vierte Ebene – Miniatur ===
|
||||
26: |
|
||||
=== Fünfte Ebene – Miniatur ===
|
||||
27: |
|
||||
=== Sechste Ebene – Miniatur ===
|
||||
Ig: |
|
||||
== Tipp ==
|
||||
Trägt man unter Linux/Mac/BSD folgende Zeilen in die ~/.bashrc, ~/.zshrc oder
|
||||
vergleichbares ein, bekommt man anschließend mittels Eingabe von »neo« oder
|
||||
»num« die aktuelle Belegung in der Konsole angezeigt:
|
||||
alias num='grep -m 1 -B 15 "┴───────┘" PFAD_ZUR_DATEI/neo20.txt'
|
||||
alias neo='grep -m 1 -B 15 "┴──────┘" PFAD_ZUR_DATEI/neo20.txt'
|
||||
|
||||
Dazu muss »PFAD_ZUR_DATEI« durch den Pfad zu dieser Datei ersetzt werden.
|
||||
|
||||
Im Verzeichnis linux/bin sind umfangreichere Skripte mit größerer Funktionalität.
|
||||
|
||||
== Zeichenerläuterungen ==
|
||||
Ξ … Xi, griechischer Majuskel (U039E)
|
||||
≙ … entspricht (U2259)
|
||||
Λ … Lambda, griechischer Majuskel (U039B)
|
||||
ℂ … Menge der komplexen Zahlen (U2102)
|
||||
Ω … Omega, griechischer Majuskel (U03A9)
|
||||
√ … Wurzel aus (U221A)
|
||||
Ψ … Psi, griechischer Majuskel (U03A8)
|
||||
Γ … Gamma, griechischer Majuskel (U0393)
|
||||
Φ … Phi, griechischer Majuskel (U03A6)
|
||||
ℚ … Menge der rationalen Zahlen (U211A)
|
||||
∘ … Verknüpfungsoperator (U2218)
|
||||
∮ … Integral über eine geschlossene Kurve (U222E)
|
||||
∫ … Integral (U222B)
|
||||
∀ … Allquantor ; für alle (U2200)
|
||||
∃ … Existenzquantor ; es gibt (U2203)
|
||||
∈ … Element von (U2208)
|
||||
Σ … Sigma, griechischer Majuskel (U03A3)
|
||||
ℕ … Menge der natürlichen Zahlen (U2115)
|
||||
ℝ … Menge der reellen Zahlen (U211D)
|
||||
∂ … partielle Ableitung (U2202)
|
||||
Δ … Delta, griechischer Majuskel (U0394)
|
||||
∇ … Nablaoperator (Gradient, Divergenz, Rotation) (U2207)
|
||||
∝ … proportional zu (U221D)
|
||||
ℑ … Imaginärteil einer komplexen Zahl (U2111)
|
||||
ℜ … Realteil einer komplexen Zahl (U211C)
|
||||
ℵ … Kardinalzahlen, Aleph-Symbol (U2135)
|
||||
Π … Pi, griechischer Majuskel (U03A0)
|
||||
ℤ … Menge der ganzen Zahlen (U2124)
|
||||
⇒ … Implikation ; daraus folgt ; hinreichend für (U21D2)
|
||||
⇔ … Äquivalenzzeichen (U21D4)
|
||||
⇐ … notwendig für ; nur dann, wenn (U21D0)
|
||||
Θ … Theta, griechischer Majuskel (U0398)
|
||||
≡ … identisch (U2261)
|
||||
□ … Beweisende (qed) (U25A1)
|
||||
⊙ … direkte Summe ; Vektor aus der Ebene zeigend (U2299)
|
||||
⊗ … Tensorprodukt ; Vektor in die Ebene zeigend (U2297)
|
||||
∞ … unendlich (U221E)
|
||||
∋ … enthält das Element (U220B)
|
||||
ª … weiblicher Ordinalindikator (2ª) (U00AA)
|
||||
º … männlicher Ordinalindikator (1º) (U00BA)
|
||||
|
||||
== Hinweise zu Doppelbelegungen in Unicode ==
|
||||
Griechische Minuskel und Majuskel besitzten in der Regel eine weitere Bedeutung, z.B.
|
||||
• Δ für Differenz oder Fehler
|
||||
• Θ für homöopathische Urtinktur
|
||||
• Γ für Gammafunktion
|
||||
|
||||
Einige finden sich darum an mehreren Stellen im Unicode, um (eventuelle) Unterschiede
|
||||
deutliche machen zu können. Zur Platzersparnis haben wir stets eines (das einfachste
|
||||
und allgemeinste) Zeichen aufgenommen:
|
||||
• Ω (U03A9) ; Einheit des Widerstandes Ohm (U2126)
|
||||
• Σ (U03A3) ; Summenzeichen (U2211)
|
||||
• Δ (U0394) ; Laplaceoperator (U2206) ; Dreieck, symmetrische Differenz (U25B3)
|
||||
• ∇ (U2207) ; Dreieck (U25BD)
|
||||
• Π (U03A0) ; Produktzeichen ∏ (U220F)
|
||||
• µ (U03BC) ; SI-Vorsilbe micro (U00B5)
|
||||
|
Loading…
Reference in New Issue
Block a user