Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

113 changed files with 23990 additions and 19351 deletions

6
.gitignore vendored
View File

@ -1,10 +1,7 @@
.*.swp
.DS_Store
# /
/.project
/.pydevproject
__pycache__
# /linux/osd/
/linux/osd/*.pyc
@ -28,9 +25,6 @@ __pycache__
/windows/kbdneo2/source/.vs
/windows/kbdneo2/source/**/Release
/windows/kbdneo2/source/**/*.vcxproj.user
/windows/kbdneo2/source/**/x64/
/windows/kbdneo2/source/**/x86/
/windows/kbdneo2/source/**/x86-wow64/
# /windows/kbdneo2/AHK-supplement/
/windows/kbdneo2/AHK-supplement/bone/kbdbone.exe

View File

@ -28,7 +28,7 @@ $(if $(findstring _,$(M)), \
# Hilfsprogramme
#
CHECKCOMPOSE = ./check-compose.pl
CONFIGURE = bash ./configure.sh
CONFIGURE = /bin/bash ./configure.sh
# Nutzerkonfiguration für Zusammenstellung der Datei XCompose.
# Datei .config wird von 'make config' interaktiv geschrieben.

View File

@ -1,4 +1,4 @@
#!/usr/bin/env -S perl -w
#!/usr/bin/perl -w
# Dieses Skript prüft übergebene Compose-Dateien auf
# Präfix-Eigenschaft und auf Code-Dopplungen

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
# This file is part of the german Neo keyboard layout
#

View File

@ -22,11 +22,6 @@
<U21BB> <dead_cedilla> <space> : "˛" U02DB # OGONEK
<dead_belowdot> <space> : "." U002E # FULL STOP
# change standard definitions for some dead keys with spaces
<dead_acute> <space> : "´" U00B4 # ACUTE ACCENT
<dead_diaeresis> <space> : "¨" U00A8 # DIAERESIS
<dead_doubleacute> <space> : "\"" quotedbl # QUOTATION MARK
# letters
# latin letters with ogonek (simplifying the keyboard ogonek and cedilla are on the same place)
<dead_cedilla> <A> : "Ą" U0104 # LATIN CAPITAL LETTER A WITH OGONEK
@ -43,8 +38,6 @@
<dead_macron> <dead_cedilla> <o> : "ǭ" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
<U21BB> <dead_cedilla> <E> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA
<U21BB> <dead_cedilla> <e> : "ȩ" U0229 # LATIN SMALL LETTER E WITH CEDILLA
<dead_cedilla> <Adiaeresis> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA
<dead_cedilla> <adiaeresis> : "ȩ" U0229 # LATIN SMALL LETTER E WITH CEDILLA
# latin letters with line below (simplifying the keyboard line below and macron are on the same place)
<dead_macron> <B> : "Ḇ" U1E06 # LATIN CAPITAL LETTER B WITH LINE BELOW

View File

@ -18,9 +18,3 @@
<Multi_key> <bracketleft> <bracketright> : "⌷" U2337 # [ ] APL FUNCTIONAL SYMBOL SQUISH QUAD
# Konflikt bei Sequenz <Multi_key <question> <exclam>. Unsere Sequenz »<Multi_key> <question> <exclam> : "⁈" U2048 # QUESTION EXCLAMATION MARK« überschreibt die folgende Sequenz aus enUS.module
<Multi_key> <question> <exclam> : "⸘" U2E18 # INVERTED INTERROBANG
# Konflikt bei Sequenz <dead_acute> <space>. Unsere Sequenz »<dead_acute> <space> : "´" U00B4 # ACUTE ACCENT« überschreibt die folgende Sequenz aus enUS.module
<dead_acute> <space> : "'" apostrophe # APOSTROPHE
# Konflikt bei Sequenz <dead_diaeresis> <space>. Unsere Sequenz »<dead_diaeresis> <space> : "¨" U00A8 # DIAERESIS« überschreibt die folgende Sequenz aus enUS.module
<dead_diaeresis> <space> : "\"" quotedbl # REVERSE SOLIDUS
# Konflikt bei Sequenz <dead_doubleacute> <space>. Unsere Sequenz »<dead_doubleacute> <space> : "\"" quotedbl # QUOTATION MARK« überschreibt die folgende Sequenz aus enUS.module
<dead_doubleacute> <space> : "˝" U2dd # DOUBLE ACUTE ACCENT

View File

@ -1,4 +1,4 @@
#configinfo Oxia statt Tonos für griechisch
#configinfo Oxia statt oxia für griechisch
<dead_acute> <Multi_key> <g> <A> : "Ά" U1FBB # GREEK CAPITAL LETTER ALPHA WITH OXIA
<dead_acute> <Multi_key> <G> <A> : "Ά" U1FBB # GREEK CAPITAL LETTER ALPHA WITH OXIA

View File

@ -230,7 +230,7 @@
<Multi_key> <apostrophe> <apostrophe> : "ˈ" U02C8 # MODIFIER LETTER VERTICAL LINE
<Multi_key> <underscore> <apostrophe> : "ˌ" U02CC # MODIFIER LETTER LOW VERTICAL LINE
<U21BB> <Multi_key> <apostrophe> <apostrophe> : "ˌ" U02CC # MODIFIER LETTER LOW VERTICAL LINE
<U21BB> <parenright> : "͜" U035C # COMBINING DOUBLE BREVE BELOW
<U21BB> <parenright> : "‿" U203F # UNDERTIE
<U21BB> <parenleft> : "͡" U0361 # COMBINING DOUBLE INVERTED BREVE
# tone letters (t) and Standard Mandarin tones

View File

@ -676,11 +676,12 @@
# physical symbols
# physical constants
<Multi_key> <p> <h> <space> : "" U210E # PLANCK CONSTANT
<Multi_key> <minus> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
<Multi_key> <p> <h> <minus> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
<Multi_key> <KP_Subtract> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
<Multi_key> <p> <h> <KP_Subtract> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
<Multi_key> <slash> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
<Multi_key> <p> <h> <slash> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
<dead_macron> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
<dead_stroke> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI
# physical units
<Multi_key> <m> <i> <c> <r> <o> : "µ" U00B5 # MICRO SIGN

View File

@ -110,3 +110,9 @@
<Multi_key> <asciicircum> <bar> : "↑" U2191 # UPWARDS ARROW
# Konflikt bei Sequenz <Multi_key> <v> <slash>. Unsere Sequenz »<Multi_key> <v> <slash> <asciicircum> : "⤢" U2922 # NORTH EAST AND SOUTH WEST ARROW« überschreibt die folgende Sequenz aus enUS.module
<Multi_key> <v> <slash> : "√" U221a # v / SQUARE ROOT
# Konflikt bei Sequenz <Multi_key> <minus> <p>. Unsere Sequenz »<Multi_key> <minus> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI« überschreibt die folgende Sequenz aus lang.module
<Multi_key> <minus> <p> : "ᵽ" U1D7D # LATIN SMALL LETTER P WITH STROKE
# Konflikt bei Sequenz <dead_stroke> <p>. Unsere Sequenz »<dead_stroke> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI« überschreibt die folgende Sequenz aus enUS.module
<dead_stroke> <p> : "ᵽ" U1D7D # LATIN SMALL LETTER P WITH STROKE
# Konflikt bei Sequenz <dead_stroke> <p>. Unsere Sequenz »<dead_stroke> <p> <h> : "ℏ" U210F # PLANCK CONSTANT OVER TWO PI« überschreibt die folgende Sequenz aus lang.module
<dead_stroke> <p> : "ᵽ" U1D7D # LATIN SMALL LETTER P WITH STROKE

View File

@ -18,10 +18,10 @@ Du möchtest ein Problem melden? Oder hast Vorschläge und neue Ideen? Dann meld
## Technisches
Dies ist das offizielle Code-Repository. Hier können Bugs und Featurewünsche gemeldet werden. Dazu ist entweder eine [kurze Registrierung](https://git.neo-layout.org/user/sign_up) notwendig, oder eine Anmeldung [über GitHub](https://git.neo-layout.org/user/oauth2/github) mit Registrierung im gleichen Schritt. Wenn du bereits registriert bist, kannst du dein Konto beim Login auch nachträglich mit GitHub verknüpfen.
Dies ist das offizielle Code-Repository. Hier können Bugs und Featurewünsche gemeldet werden. Dazu ist entweder eine kurze Registierung notwendig, oder eine Anmeldung direkt [über GitHub](https://git.neo-layout.org/user/oauth2/github) mit Registrierung im gleichen Schritt.
### Benutzername bereits vergeben?
Sollte dein Benutzername bereits vergeben sein, kann dies an der Migration der Accounts aus dem früheren Issuetracker (Trac) liegen. In diesem Fall bitte kurz beim Neo-Team [im Chat](https://neo-layout.org/Beitragen/Community/) melden, um deinen alten Account wiederzuerlangen.
Sollte dein Benutzername bereits vergeben sein, kann dies an der Migration der Accounts aus dem früheren Issuetracker (Trac) liegen. In diesem Fall bitte kurz beim Neo-Team [im Chat](https://neo-layout.org/Kontakt/community/) melden, um deinen alten Account wiederzuerlangen.
Auf [GitHub](https://github.com/neo-layout/neo-layout/) befindet sich ein gespiegeltes Repository.

View File

@ -10,7 +10,7 @@
],
"sym":[
"[SPACE]=÷",
"[SPACE]=÷·",
"[AltGr]↕↑⃗±",
" ←:→ ",
"[Shift]↔↓⇌[Del]",

View File

@ -20,8 +20,10 @@ Um alle Bilder erzeugen können, benötigt man eine Vielzahl an Abhängigkeiten:
- libreoffice
- sed
- ed
- libxkbcommon (xkbcli)
- python mit jinja2, numpy, pandas, matplotlib, seaborn und lxml
- setxkbmap und xkbcomp
- python mit numpy, pandas, matplotlib und seaborn
- perl mit XML::Writer
- php
- Linux Libertine
- Gentium Plus Compact
- DejaVu Sans Mono

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
#
# BENUTZUNG AUF EIGENE GEFAHR!
#

View File

@ -1,7 +1,7 @@
all: default
%-grau-1234.svg: ../../A-REFERENZ-A/%.txt
./alle-grau-1234.py $< > $@
./alle-grau-1234.pl $< > $@
EXTRASVG=\
neo20-grau-1234.svg \

View File

@ -0,0 +1,256 @@
#!/usr/bin/env -S perl -wT
use strict;
use warnings;
use XML::Writer;
use open ':encoding(utf8)';
use utf8;
sub start_svg;
sub end_svg;
sub create_defs;
sub create_key;
sub parse_ref;
sub in2px;
sub create_keys;
sub round;
my $dpi = 90;
# a4 paper
my $height = in2px(8.268);
my $width = in2px(11.69);
my $keywidth = in2px(0.75);
my $keyheight = in2px(0.75);
my $labelwidth = in2px(0.5);
my $labelheight = in2px(0.55);
my $posx = 0;
my $posy = 0;
my $row = 0;
my %kp_mapping = ( # mapping for keypad, level 4
'Hom' => '⇱',
'KP↑' => '⇡',
'PgU' => '⇞',
'KP←' => '⇠',
'Beg' => '•',
'KP→' => '⇢',
'End' => '⇲',
'KP↓' => '⇣',
'PgD' => '⇟',
'Ins' => '⎀',
'Del' => '⌦',
'Ent' => '⏎',
'vec' => ' ⃗'
);
my $writer = new XML::Writer(ENCODING => 'utf-8',
DATA_MODE => 1,
DATA_INDENT => 2);
start_svg;
create_defs;
create_keys(parse_ref);
end_svg;
exit;
# parse reference and return multi-array
sub parse_ref {
my @letters;
open REF, $ARGV[0]
or die 'Error opening reference: '.$!;
while (<REF>) {
my @layer;
last if /^== Zeichenerläuterungen/;
# layout blocks
if(/Miniatur ===$/) {
while(<REF>) {
last if(/^$/); # empty line => end of current block
next if($_ !~ /^│/); # skip horizontal dividers
push @layer, split /│/;
}
push @letters, [ @layer ]; # push ref
}
}
close REF;
return @letters;
}
sub create_keys {
my @letters = @_;
for (0..$#{$letters[0]}) { # letters
create_key
$letters[0][$_],
$letters[0][$_],
$letters[1][$_],
$letters[2][$_],
$letters[3][$_];
}
for (0..$#{$letters[7]}) { # numbers
create_key
$letters[7][$_],
$letters[7][$_],
$letters[8][$_],
$letters[9][$_],
$letters[10][$_];
}
}
sub in2px {
return ($_[0]||0) * $dpi;
}
sub start_svg {
$writer->xmlDecl('UTF-8');
$writer->doctype('svg', '-//W3C//DTD SVG 20001102//EN',
'http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd');
$writer->startTag('svg', height => $height, width => $width,
'xmlns' => 'http://www.w3.org/2000/svg',
'xmlns:xlink' => 'http://www.w3.org/1999/xlink');
}
sub end_svg {
$writer->endTag('svg');
$writer->end();
}
# create the key template
sub create_defs {
$writer->startTag('defs');
# style information
$writer->dataElement('style', '
text.common {
font-family:Linux Biolinum O, Linux Biolinum;
font-style:normal;
font-variant:normal;
font-stretch:normal;
text-align:center;
text-anchor:middle;
stroke:none;
}
text.main {
/*font-weight:bold;*/
font-size:19px;
fill:#eeeeee;
stroke-width:4;
}
text.special {
font-size:16px;
stroke-width:3;
}
text.outline {
stroke:#111111;
stroke-linejoin:round;
}
rect#boundary {
fill:none;
stroke:#eeeeee;
stroke-width:'.in2px(0.005).';
}
rect#border {
fill:#333333;
stroke:#eeeeee;
stroke-width:'.in2px(0.025).';
}
text.level1 {
}
text.level2 {
}
text.level3 {
fill:#99dd66;
}
text.level4 {
fill:#6699dd;
font-size:13px;
}', type => 'text/css');
# boundary of keys
$writer->emptyTag('rect',
id => 'boundary',
width => $keywidth, height => $keyheight,
rx => 5);
# border for keys, actual key stickers
$writer->emptyTag('rect',
id => 'border',
width => $labelwidth, height => $labelheight,
rx => 10);
$writer->endTag('defs');
}
# create a specific key (cloned from template)
# first parameter (0) is first level, and is only used for line breaks in the graphic
# param 1..4 are actual layers
sub create_key {
my @keys = @_;
$keys[0] = '' unless defined($keys[0]);
$keys[1] = '' unless defined($keys[1]);
s/\s//g for @keys; # remove any space
# map words to symbols for numblock
foreach (keys %kp_mapping) {
$keys[3] =~ s/\Q$_/\Q$kp_mapping{$_}/;
$keys[4] =~ s/\Q$_/\Q$kp_mapping{$_}/;
}
return if length($keys[0]) != 1;
$writer->startTag('g',
transform => "translate($posx,$posy)",
id => 'key_'.(join '', @keys));
$writer->emptyTag('use', 'xlink:href' => '#boundary');
$writer->startTag('g',
transform => 'translate('.(($keywidth-$labelwidth)/2.5).', 2)');
$writer->emptyTag('use', 'xlink:href' => '#border');
# add text+outlines to sticker
for(' outline', '') {
$writer->dataElement('text', $keys[1],
transform => 'translate(15,41)',
class => "level1 common main$_")
# do not show e1, if it's the same letter as e2
# only use for latin letters
unless(#$keys[1] =~ /[a-züöäß]/ &&
$keys[1] =~ /\Q$keys[2]/i);
$writer->dataElement('text', $keys[2]||'',
transform => 'translate(15,19)',
class => "level2 common main$_");
$writer->dataElement('text', $keys[3]||'',
transform => 'translate(32,18)',
class => "level3 common special$_");
$writer->dataElement('text', $keys[4]||'',
transform => 'translate(32,42)',
class => "level4 common special$_");
# do not show e4 on keypad
#unless($row > 4 && $keys[0] =~ /\d/i);
}
$writer->endTag('g');
$writer->endTag('g');
$posx += $keywidth;
if($row < 3) {
if($keys[0] =~ /[`´y]/) { # split keyboard rows, dirty way
$posx = ++$row*$keywidth/2; # not really accurate, but works
$posy += $keyheight;
}
} elsif($keys[0] =~ /[-93+j]/) { # keypad
$posx = ++$row*0;
$posy += $keyheight;
}
}
sub round {
return int($_[0]+.5*($_[0]<=>0));
}

View File

@ -1,221 +0,0 @@
#!/usr/bin/env python
import sys
from lxml import etree as ET
def in2px(inch):
return round(inch * DPI, 2)
DPI = 90
# a4 paper
HEIGHT = in2px(8.268)
WIDTH = in2px(11.69)
KEYWIDTH = in2px(0.75)
KEYHEIGHT = in2px(0.75)
LABELWIDTH = in2px(0.5)
LABELHEIGHT = in2px(0.55)
KP_MAPPING = { # mapping for keypad, level 4
'Hom': '',
'KP↑': '',
'PgU': '',
'KP←': '',
'Beg': '',
'KP→': '',
'End': '',
'KP↓': '',
'PgD': '',
'Ins': '',
'Del': '',
'Ent': '',
'vec': ' ⃗'
}
strokewidth = in2px(0.005)
STYLESHEET = '''
text.common {
font-family:Linux Biolinum O, Linux Biolinum;
font-style:normal;
font-variant:normal;
font-stretch:normal;
text-align:center;
text-anchor:middle;
stroke:none;
}
text.main {
/*font-weight:bold;*/
font-size:19px;
fill:#eeeeee;
stroke-width:4;
}
text.special {
font-size:16px;
stroke-width:3;
}
text.outline {
stroke:#111111;
stroke-linejoin:round;
}
rect#boundary {
fill:none;
stroke:#eeeeee;
stroke-width:''' + str(in2px(0.005)) + '''px;
}
rect#border {
fill:#333333;
stroke:#eeeeee;
stroke-width:''' + str(in2px(0.025)) + '''px;
}
text.level1 {
}
text.level2 {
}
text.level3 {
fill:#99dd66;
}
text.level4 {
fill:#6699dd;
font-size:13px;
}'''
NSMAP = {None: 'http://www.w3.org/2000/svg',
'xlink': 'http://www.w3.org/1999/xlink'}
XLINK = '{%s}' % NSMAP['xlink']
DOCTYPE = ('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" '
'"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">')
def parse_ref(filename):
'''parse reference and return multi-array'''
with open(filename) as fh:
lines = fh.read().splitlines()
keymap = []
state = 0
for line in lines:
line = line.strip()
if state == 0:
if line.endswith("Miniatur ==="):
state = 1
layer = []
keymap.append(layer)
continue
elif not line: # empty line: end of current block/layer
state = 0
layer = None
continue
elif not line.startswith(""): # skip horizontal dividers
continue
else:
line = [k.strip() for k in line.split("")]
layer.append(line[1:-1])
return keymap
def create_defs(parent):
'''create the key template'''
node = ET.SubElement(parent, 'defs')
# style sheet
ET.SubElement(node, 'style', type='text/css').text = STYLESHEET
# boundary of keys
ET.SubElement(node, 'rect', id='boundary',
width=str(KEYWIDTH), height=str(KEYHEIGHT), rx="5")
# border for keys, actual key stickers
ET.SubElement(node, 'rect', id='border',
width=str(LABELWIDTH), height=str(LABELHEIGHT), rx="10")
def create_keys(parent, keymap):
posy = 0
# main keyboard
# TODO remove leading blank key
for row in range(len(keymap[0])):
posx = row / 2 * KEYWIDTH # not really accurate, but works
for key in range(len(keymap[0][row])):
key = create_key(parent, posx, posy,
keymap[0][row][key],
keymap[1][row][key],
keymap[2][row][key],
keymap[3][row][key])
if key is not None: # advance only if sticker was output
posx += KEYWIDTH
posy += KEYHEIGHT
# numpad
for row in range(len(keymap[7])):
posx = 0
for key in range(len(keymap[7][row])):
key = create_key(parent, posx, posy,
keymap[7][row][key],
keymap[8][row][key],
keymap[9][row][key],
keymap[10][row][key])
if key is not None: # advance only if sticker was output
posx += KEYWIDTH
posy += KEYHEIGHT
def create_key(parent, posx, posy, *keys):
'''create a specific key (cloned from template)'''
if len(keys[0]) != 1: # skip keys like Tab at the left side
return
def text(level, trans, type):
ET.SubElement(
g1, 'text',
{'transform': f'translate({trans})',
'class': f"level{level} common {type}{outline}"}
).text = keys[level-1]
keys = list(keys)
# map words to symbols for numblock
keys[2] = KP_MAPPING.get(keys[2], keys[2])
keys[3] = KP_MAPPING.get(keys[3], keys[3])
g0 = ET.SubElement(parent, 'g',
transform=f"translate({posx},{posy})",
id='key_' + ''.join(keys))
ET.SubElement(g0, 'use', {XLINK + 'href': '#boundary'})
g1 = ET.SubElement(g0, 'g',
transform=f'translate({(KEYWIDTH-LABELWIDTH)/2.5}, 2)')
ET.SubElement(g1, 'use', {XLINK + 'href': '#border'})
# do not show e1, if it's the same letter as e2
upper_eq_lower = (keys[1].lower() == keys[0])
# add text+outlines to sticker
for outline in (' outline', ''):
if not upper_eq_lower:
text(1, '15,41', 'main')
text(2, '15,19', 'main')
text(3, '32,18', 'special')
text(4, '32,42', 'special')
return g0
def main():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('filename')
args = parser.parse_args()
keymap = parse_ref(args.filename)
root = ET.Element('svg',
height=str(HEIGHT), width=str(WIDTH),
nsmap=NSMAP)
create_defs(root)
create_keys(root, keymap)
doc = ET.tostring(root, encoding="UTF-8", xml_declaration=True,
doctype=DOCTYPE, pretty_print=True)
sys.stdout.buffer.write(doc)
main()

View File

@ -1,45 +1,26 @@
#you can use this line if you have vou and mine installed (not included with xkeyboard-config)
#VARIANTS=neo bone neo_qwertz neo_qwerty koy adnw vou mine
VARIANTS=neo bone neo_qwertz neo_qwerty koy adnw
LAYERS=1 2 3 4 5 6 Pseudoebene
VERSIONS=numpad tkl
SUFFIXES=$(foreach version, ${VERSIONS}, $(foreach layer, ${LAYERS}, -${layer}-${version}.svg))
SVG_TARGETS=$(foreach suffix, ${SUFFIXES}, $(foreach variant, ${VARIANTS}, ${variant}${suffix}))
SVG_PATH_TARGETS=$(addsuffix .path.svg,$(basename ${SVG_TARGETS}))
PDF_TARGETS=$(addsuffix .pdf,$(basename ${SVG_TARGETS}))
PNG_TARGETS=$(addsuffix .png,$(basename ${SVG_TARGETS}))
SOURCES=generate-graphics.py replacements.py base.svg.template
VARIANTS := neo bone neo_qwertz neo_qwerty koy adnw
# You can use this line if you have vou and mine installed (not
# included with xkeyboard-config)
#VARIANTS += vou mine
LAYERS = 1 2 3 4 5 6 Pseudoebene 1caps 2caps
VERSIONS = numpad tkl
BASENAMES ::= $(foreach variant, ${VARIANTS}, \
$(foreach layer, ${LAYERS}, \
$(foreach version, ${VERSIONS}, \
${variant}${suffix}-${layer}-${version})))
BASENAMES += $(foreach variant, ${VARIANTS}, \
$(foreach version, ${VERSIONS}, \
${variant}${suffix}-leer-${version}))
SVG_TARGETS=$(addsuffix .svg, ${BASENAMES})
SVG_PATH_TARGETS=$(addsuffix .path.svg, ${BASENAMES})
PDF_TARGETS=$(addsuffix .pdf, ${BASENAMES})
PNG_TARGETS=$(addsuffix .png, ${BASENAMES})
SOURCES = generate-graphics.py replacements.py base.svg.template
default: all cleanpycache
all: svg-path svg pdf png
default: all cleansvg cleanpycache
svg-path: ${SVG_PATH_TARGETS}
svg: ${SVG_TARGETS}
pdf: ${PDF_TARGETS}
png: ${PNG_TARGETS}
%-tkl.svg: variant=$(shell echo $@ | cut -d - -f 1)
%-tkl.svg: ${SOURCES}
@echo "Erzeuge $(variant) Hauptfeld."
./generate-graphics.py $(variant)
%-numpad.svg: variant=$(shell echo $@ | cut -d - -f 1)
%-numpad.svg: ${SOURCES}
@echo "Erzeuge $(variant) Numpad."
./generate-graphics.py $(variant) numpad
$(foreach suffix, ${SUFFIXES}, %${suffix}) &: ${SOURCES}
@echo "Erzeuge $@."
./generate-graphics.py `echo $@ | cut -d - -f 1` numpad
./generate-graphics.py `echo $@ | cut -d - -f 1`
%.path.svg: %.svg
inkscape --export-filename=$@ -T $<
@ -51,6 +32,8 @@ png: ${PNG_TARGETS}
inkscape --export-filename=$@ --export-height=183 $<
optipng $@
all: svg-path svg pdf png
cleansvgpath:
rm -f ${SVG_PATH_TARGETS}

View File

@ -1,142 +1,64 @@
#!/usr/bin/env python
import sys
import re
import subprocess
import more_itertools as mit
from jinja2 import Template
import os
import sys
import replacements
TEMPLATENAME = "base.svg.template"
if len(sys.argv) == 1:
print('Usage: ./<this script> variantname [numpad]')
exit(1)
layout = sys.argv[1]
templatename = "base.svg.template"
numpad = True if len(sys.argv) == 3 and sys.argv[2] == "numpad" else False
swap_m3r_ä = True if layout == "vou" or layout == "mine" else False
vou = True if layout == "vou" else False
mine = True if layout == "mine" else False
os.system("setxkbmap de " + layout + " -print | xkbcomp -xkb - /tmp/keymaptmp 2>/dev/null")
# TODO: actually write/generate a proper parser for xkbmaps
os.system(r'''sed -n '/xkb_symbols/,/xkb_geometry/p' /tmp/keymaptmp | tail -n +2 | grep -e 'key' -e symbols -e '}' | sed 's/symbols\[Group1]=//' | paste -sd "" - | sed 's/\;/&\n/g' | grep -v 'modifier_map' | sed -r 's/\s//g' | sed -r 's/key<(.*)>\{\[/\1=/g' | sed -r 's/\]?,?\}\;//' | grep -v '^$' > /tmp/keymap''')
# modifiers for layers in order as in keymap
MODIFIERS = [
modifiers=[
[],
["SHIFT"],
["MOD3"],
["MOD3", "SHIFT"],
["MOD3","SHIFT"],
["MOD4"],
["MOD4", "SHIFT"],
["MOD3", "MOD4"],
["MOD4","SHIFT"],
["MOD3","MOD4"],
[]
]
LAYERNAMES = ["1", "2", "3", "5", "4", "Pseudoebene", "6", ""]
layernames = ["1","2","3","5","4","Pseudoebene","6",""]
# 1E9E = Latin Capital Letter Sharp S
upper_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ\u1e9e'
lower_chars = 'abcdefghijklmnopqrstuvwxyzäöüß'
CAPS_MAP = str.maketrans(dict(zip(upper_chars + lower_chars,
lower_chars + upper_chars)))
assert len(lower_chars) == len(upper_chars) == 30
assert len(CAPS_MAP) == len(lower_chars) + len(upper_chars)
with open('/tmp/keymap', 'r') as file:
data = file.readlines()
# read the keymap into a dict
keymap = {x.split('=')[0]: x.split('=')[1].strip('\n').split(',') for x in data}
# some keys arent layered, hence the list is too short. pad them with the first entry.
keymap = {a: list(mit.padded(b, b[0], 9)) for a,b in keymap.items()}
# replace keynames with the symbol they produce
keymap = {a: list(map(replacements.f, b)) for a,b in keymap.items()}
def keymap_to_keys(text):
# simple and dump parser for xkb keymap files
#
# It simply searches all "key { … };" parts and splits them.
# A more advanced version would parts "xkb_symbols { … }" first
# and only search in this part.
assert text.startswith("xkb_keymap")
KEY_PATTERN = r'\s key \s .+? \s { [^}]+? };'
SYMBOLS_PATTERN = r'\[ (.+?) \]'
text = text.split('xkb_symbols', 1)[1]
# FIXME: assumes the next section (if there is one) is
# xkb_geometry
text = text.split('xkb_geometry', 1)[0]
for k in re.findall(KEY_PATTERN, text, re.M+re.X):
_, name, text = k.split(None, 2)
name = name.strip('<').rstrip('>')
text = text.replace('symbols[Group1]', '')
symbols = re.findall(SYMBOLS_PATTERN, text, re.M+re.X)
if not symbols:
raise SystemExit(f"{name} did not match: {text!r}")
if len(symbols) != 1:
print("currious key:", name, symbols)
symbols = [s.strip() for s in symbols[0].split(',')]
# replace keynames with the symbol they produce
symbols = [replacements.f(s) for s in symbols]
# Some keys aren't layered, hence the list is too short.
# pad them with the first entry.
symbols = (symbols + symbols[:1]*9)[:9]
yield name, symbols
# --- argument handling ---
if len(sys.argv) not in (2, 3):
raise SystemExit('Usage: ./<this script> variantname [numpad]')
layout = sys.argv[1]
numpad = (len(sys.argv) == 3 and sys.argv[2] == "numpad")
swap_m3r_ä = (layout == "vou" or layout == "mine")
vou = (layout == "vou")
mine = (layout == "mine")
version = "numpad" if numpad else "tkl"
# - read data and template
keymap = subprocess.check_output(
["xkbcli", "compile-keymap", "--layout", "de", "--variant", layout],
text=True)
keymap = dict(keymap_to_keys(keymap))
with open(TEMPLATENAME) as templatefile:
template = Template(templatefile.read())
# --- generate files ---
def write_image(layername, layerdict):
layerdict["numpad"] = numpad
layerdict["swap_m3r_ä"] = swap_m3r_ä
layerdict["vou"] = vou
layerdict["mine"] = mine
with open(f'{layout}-{layername}-{version}.svg', 'w') as out:
out.write(template.render(layerdict))
def make_caps_lock(text):
if len(text) == 1:
return text.translate(CAPS_MAP)
else:
return text
# - main layers
for layer in range(7): # 7 because the last layer is empty
# create a dict with the replacements from replacements.py
layerdict = {a: b[layer] for a, b in keymap.items()}
# color modifiers accordingly
for x in MODIFIERS[layer]:
layerdict[x] = " pressed"
write_image(LAYERNAMES[layer], layerdict)
filename = f'{layout}-{LAYERNAMES[layer]}-{version}.svg'
with open(filename, 'w') as out:
out.write(template.render(layerdict))
# - caps-lock images
for layer in 0, 1:
# create a dict with the replacements from replacements.py
layerdict = {a: make_caps_lock(b[layer]) for a, b in keymap.items()}
# color modifiers accordingly
for x in MODIFIERS[layer]:
layerdict[x] = " pressed"
write_image(LAYERNAMES[layer] + 'caps', layerdict)
# - "leer" image
write_image('leer', {})
for layer in range(0,7): # 7 because the last layer is empty
# create a dict with the replacements from repalcements.py
layerdict = {a: b[layer] for a,b in keymap.items()}
# color modifiers accordingly
for x in modifiers[layer]:
layerdict[x] = " pressed"
layerdict["numpad"] = numpad
layerdict["swap_m3r_ä"] = swap_m3r_ä
layerdict["vou"] = vou
layerdict["mine"] = mine
versionstring = "-numpad" if numpad else "-tkl"
out = open(layout + "-" + layernames[layer] + versionstring + ".svg", "w")
with open(templatename) as templatefile:
template = Template(templatefile.read())
out.write(template.render(layerdict))
out.close()

View File

@ -1325,7 +1325,7 @@ replacements = {
"dintegral":"U222C",
"tintegral":"U222D",
"because":"U2235",
"approxeq":"U2248",
"approxeq":"U2245",
"notapproxeq":"U2247",
"notidentical":"U2262",
"stricteq":"U2263",

View File

@ -7,13 +7,13 @@ neo-bunt-123456.png: neo-bunt-123456.ods
libreoffice --convert-to png $<
neo20-grau-123456.svg:
./all-grau-123456.py neo20
./all-grau-123456.php neo20
bone-grau-123456.svg:
./all-grau-123456.py bone
./all-grau-123456.php bone
neoqwertz-grau-123456.svg:
./all-grau-123456.py neoqwertz
./all-grau-123456.php neoqwertz
EXTRASVG=\
neo20-grau-123456.svg \

File diff suppressed because it is too large Load Diff

View File

@ -1,255 +0,0 @@
#!/usr/bin/env python
import os
from lxml import etree as ET
REFERENZ_DIR = '../../A-REFERENZ-A/'
KEYWIDTH = KEYHEIGHT = 72
LABELWIDTH = KEYWIDTH
LABELHEIGHT = KEYWIDTH
KP_MAPPING = { # mapping for keypad, level 4
'Hom': '',
'KP↑': '',
'PgU': '',
'KP←': '',
'Beg': '',
'KP→': '',
'End': '',
'KP↓': '',
'PgD': '',
'Ins': '',
'Del': '',
'Ent': '',
'vec': ' ⃗'
}
STYLESHEET = '''
rect.grey { fill:#cccccc !important }
rect.key { fill:white; stroke:black; stroke-width: 1 }
text {
/* font-family:Linux Biolinum O, Linux Biolinum;*/
font-family:normal;
font-style:normal;
font-variant:normal;
font-stretch:normal;
stroke:none;
text-align:center;
text-anchor:middle;
dominant-baseline: middle;
fill: black;
}
text.main { font-weight:bold }
text.special { }
text.level1 { font-size:22px }
text.level2 { font-size:22px }
text.level3 { font-size:14px }
text.level4 { font-size:14px }
text.level5 { font-size:14px }
text.level6 { font-size:14px }
text.deadkey { fill: red }
text.modifier { font-size:20px }
'''
NSMAP = {None: 'http://www.w3.org/2000/svg',
'xlink': 'http://www.w3.org/1999/xlink'}
XLINK = '{%s}' % NSMAP['xlink']
DOCTYPE = ('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" '
'"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">')
LAYOUT = (
[1] * 13 + [2.0],
[1.5] + [1] * 12 + [0],
[1.75] + [1] * 11 + [1.0, 0],
[1.25, 1.0] + [1] * 10 + [2.75, 0],
)
SPECIAL_KEYS = (
(0, 13, 2.0, "Backspace"),
(1, 0, 1.5, "Tab"),
(2, 0, 1.75, "Mod 3"),
(2, 12.75, 1, "Mod 3"),
(3, 0, 1.25, "Umsch"),
(3, 1.25, 1, "Mod 4"),
(3, 12.25, 2.75, "Umschalt"),
(4, 0, 1.5, "Strg"),
(4, 2.5, 1.5, "Alt"),
(4, 9.5, 1.5, "Mod4"),
(4, 13.5, 1.5, "Strg"),
)
def parse_ref(layout):
'''parse reference and return multi-array'''
filename = os.path.join(REFERENZ_DIR, f'{layout}.txt')
with open(filename) as fh:
lines = fh.read().splitlines()
keymap = []
state = 0
for line in lines:
line = line.strip()
if state == 0:
if line.endswith("Miniatur ==="):
state = 1
layer = []
keymap.append(layer)
continue
elif not line: # empty line: end of current block/layer
state = 0
layer = None
continue
elif not line.startswith(""): # skip horizontal dividers
continue
else:
line = [k.strip() for k in line.split("")]
layer.append(line[1:-1])
return keymap
def create_defs(parent):
'''create the key template'''
node = ET.SubElement(parent, 'defs')
# style sheet
ET.SubElement(node, 'style', type='text/css').text = STYLESHEET
# boundary of keys
# ET.SubElement(node, 'rect', id='boundary',
# width=str(KEYWIDTH), height=str(KEYHEIGHT), rx="0")
# # border for keys, actual key stickers
# ET.SubElement(node, 'rect', id='border',
# width=str(LABELWIDTH), height=str(LABELHEIGHT), rx="0")
def draw_keys(parent):
# draw return key first to be overdrawn by others
w = sum(LAYOUT[0]) * KEYWIDTH
posx = sum(LAYOUT[1]) * KEYWIDTH
ET.SubElement(parent, 'rect', {'class': 'key grey'},
x=str(posx), y=str(KEYHEIGHT + 1),
width=str(w - posx), height=str(2 * KEYHEIGHT))
def rect(x, y, kwidth, classes):
kwidth *= KEYWIDTH
ET.SubElement(parent, 'rect', {'class': classes},
x=str(x), y=str(y),
width=str(kwidth), height=str(KEYHEIGHT))
return kwidth
# other keys
posy = 1
for row in LAYOUT:
posx = 0
for key in row:
if not key:
continue
elif isinstance(key, float):
kwidth = key * KEYWIDTH
else:
kwidth = rect(posx, posy, key, 'key')
posx += kwidth
posy += KEYHEIGHT
drawing_width = posx + 1
# special keys
for row, col_offset, kwidth, label in SPECIAL_KEYS:
rect(col_offset * KEYWIDTH, row * KEYHEIGHT + 1, kwidth, 'key grey')
rect(4 * KEYWIDTH, posy, 5.5, 'key') # Leertaste
posy += KEYHEIGHT
return drawing_width, posy
def create_labels(parent, keymap):
posy = 1
# main keyboard
for row in range(len(keymap[0])-1):
posx = 0
for key in range(len(keymap[0][row])):
create_label(parent, posx, posy,
keymap[0][row][key],
keymap[1][row][key],
keymap[2][row][key],
keymap[3][row][key],
keymap[4][row][key],
keymap[5][row][key])
posx += LAYOUT[row][key] * KEYWIDTH
posy += KEYHEIGHT
def text(x, y, kwidth, label):
x = x * KEYWIDTH + kwidth * KEYWIDTH / 2 + 1
y = y * KEYHEIGHT + KEYHEIGHT / 2 + 1
ET.SubElement(
parent, 'text',
{'x': str(x), 'y': str(y),
'class': 'modifier'}
).text = label
# special keys
for row, col_offset, kwidth, label in SPECIAL_KEYS:
text(col_offset, row, kwidth, label)
text(13.5, 1.25, 1.75, "Return")
def create_label(parent, posx, posy, *labels):
'''create a specific key (cloned from template)'''
def text(level, trans, type):
ET.SubElement(
g, 'text',
{'transform': f'translate({trans})',
'class': f"level{level} {type} {deadkey}"}
).text = labels[level-1]
labels = list(labels)
if len(labels[0]) > 1:
# special keys are labels special above
return
# map words to symbols for numblock
labels[2] = KP_MAPPING.get(labels[2], labels[2])
labels[3] = KP_MAPPING.get(labels[3], labels[3])
g = ET.SubElement(parent, 'g',
transform=f"translate({posx},{posy})",
id='key_' + ''.join(labels))
upper_eq_lower = (labels[1].lower() == labels[0])
deadkey = 'deadkey' if labels[0] in "ˆ`´" else 'live'
if upper_eq_lower:
# do not show e1, if it's the same letter as e2
text(2, '15,35', 'main')
else:
text(1, '15,55', 'main')
text(2, '15,20', '')
text(3, '42,50', 'special')
text(4, '42,20', 'special')
text(5, '59,50', 'special')
text(6, '59,20', 'special')
def main():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('layout')
args = parser.parse_args()
keymap = parse_ref(args.layout)
root = ET.Element('svg',
nsmap=NSMAP)
create_defs(root)
width, height = draw_keys(root)
create_labels(root, keymap)
root.set('width', str(width))
root.set('height', str(height))
doc = ET.tostring(root, encoding="utf-8", xml_declaration=True,
doctype=DOCTYPE, pretty_print=True)
with open(f'{args.layout}-grau-123456.svg', 'wb') as fh:
fh.write(doc)
main()

View File

@ -1,21 +0,0 @@
{ pkgs ? import <nixpkgs> { } }:
pkgs.mkShell {
nativeBuildInputs = with pkgs; [
inkscape
optipng
imagemagick
libicns
libreoffice
ed
libxkbcommon
python3
python3Packages.pandas
python3Packages.matplotlib
python3Packages.seaborn
python3Packages.more-itertools
python3Packages.jinja2
python3Packages.lxml
];
# You also need to install the fonts (libertine gentium dejavu ... )
}

View File

@ -1,4 +0,0 @@
# Neo für iOS mit Keybuild
Diese Datei enthält Layouts für die Verwendung mit [Keybuild](https://apps.apple.com/de/app/keybuild/id1547174534).
Mehr Informationen zur Verwendung finden sich auf der Neo-Webseite.

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
# Verzeichnis muss eventuell an den Ort der Compose angepasst werden:
COMPOSE=/usr/share/X11/locale/en_US.UTF-8/Compose

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
# Copyright 2008 Pascal Hauck <pascal.hauck@web.de>
# Neo-Tastaturbelegung

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
# Copyright 2008 Pascal Hauck <pascal.hauck@web.de>
# Neo-Tastaturbelegung

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
#
# Dieses Skript unterstützt die Benutzung der Neo-Tastatur
# Als Argument kann ein einzelnes Zeichen oder eine Beschreibung eines Zeichens übergeben werden

BIN
mac_osx/bone.icns Normal file

Binary file not shown.

View File

@ -1,26 +0,0 @@
# macOS icons
This folder contains vector graphics to create the macOS icons from.
There are two variants for 16x16 sized and 32x32 sized icons.
In both variants, the stroke width of the logo is increased to keep it at least
someone legible on the small icon sizes. The 16x16 stroke width is even heavier
than the 32x32 stroke width.
Use the SVG files to generate the following PNG file in folder ending with
`.iconset` (use grayscale with alpha channel):
* `icon_16x16.png`
* `icon_16x16@2x.png'
* `icon_32x32.png`
* `icon_32x32@2x.png'
Then the folder can be converted to an ICNS file with `iconutil`:
```shell
iconutil -c icns -o output.icns input.iconset
```
The ICNS file can then be assigned to the respective layout in the bundle file
with Ukelele.

View File

@ -1,82 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="134.47168"
height="134.47168"
id="svg44668"
sodipodi:version="0.32"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
version="1.0"
sodipodi:docname="bone-icon-16.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/Users/jgosmann/Documents/projects/neo-layout/mac_osx/test.iconset/icon_16x16.png"
inkscape:export-xdpi="11.42"
inkscape:export-ydpi="11.42">
<defs
id="defs44670">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 615.78477 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 615.78477 : 1"
inkscape:persp3d-origin="372.04724 : 440.39107 : 1"
id="perspective44676" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.2796268"
inkscape:cx="68.608943"
inkscape:cy="137.39433"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1323"
inkscape:window-x="1920"
inkscape:window-y="25"
inkscape:document-rotation="0"
inkscape:snap-page="true"
inkscape:window-maximized="1" />
<metadata
id="metadata44673">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(46.55321,-504.50721)">
<path
id="rect896"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:2.00315, 2.00315"
d="M 19.513672 0 C 8.7026853 0 0 8.7026853 0 19.513672 L 0 114.95703 C 0 125.76802 8.7026853 134.47266 19.513672 134.47266 L 114.95703 134.47266 C 125.76802 134.47266 134.4707 125.76802 134.4707 114.95703 L 134.4707 19.513672 C 134.4707 8.7026853 125.76802 0 114.95703 0 L 19.513672 0 z M 6.9121094 41.662109 C 11.065648 41.677681 15.219505 41.691535 19.373047 41.707031 C 19.385897 44.684868 19.386153 47.662773 19.392578 50.640625 C 18.972314 53.774435 20.736383 49.728251 22.347656 49.789062 C 28.456843 48.598205 35.259894 50.145704 39.767578 54.634766 C 40.840788 55.572039 41.743574 56.624707 42.505859 57.759766 C 45.922319 52.668332 51.522736 49.019644 57.751953 48.675781 C 62.446232 48.340352 67.449851 49.882638 70.986328 53 C 78.025637 47.486238 89.338754 48.366033 95.425781 55.007812 C 98.977055 51.747698 103.25198 49.267249 108.16992 49.095703 C 113.61214 48.605294 119.52969 50.200998 123.22656 54.412109 C 126.09729 57.016075 123.37204 60.680622 123.18359 63.726562 C 120.48518 65.330692 117.43115 64.151699 114.5332 64.339844 C 112.38377 60.61106 106.74109 61.264799 104.56641 64.619141 C 107.43944 64.580098 110.32146 64.697857 113.18945 64.560547 C 117.93299 64.455196 121.13947 68.674293 125.34766 70.222656 C 122.54591 72.490025 119.74087 74.753707 116.93945 77.021484 L 102.65039 77.021484 C 104.83066 80.274656 109.83098 80.86964 113.54297 80.275391 C 118.23241 78.938666 122.00632 82.851852 126.0625 84.462891 C 128.54474 85.36238 128.16957 88.980576 125.58398 89.349609 C 117.48068 93.165968 107.62402 94.295016 99.337891 90.326172 C 92.798956 87.791458 89.490344 80.889423 88.628906 74.310547 C 87.555524 70.480767 88.797878 65.321389 84.791016 62.951172 C 81.452865 60.87075 76.446064 63.169838 76.355469 67.28125 C 76.104168 73.461469 76.710454 80.529571 72.251953 85.496094 C 66.695639 92.421228 56.262223 93.720392 48.642578 89.628906 C 46.191005 88.475492 44.263645 86.731618 42.789062 84.646484 C 40.778306 87.624665 37.886686 89.945224 34.287109 90.892578 C 23.186535 94.905057 9.3949827 87.530862 7.1699219 75.810547 C 6.2920661 65.129417 7.0348029 54.367013 6.8984375 43.654297 L 6.8964844 43.654297 L 6.9121094 41.662109 z M 19.460938 59.541016 C 19.531085 63.762434 19.149908 68.035365 19.554688 72.259766 C 19.215996 77.345437 25.118222 80.141349 29.494141 78.984375 C 33.824875 78.172778 33.995416 72.893378 33.601562 69.416016 C 33.934996 65.620848 30.774496 62.462124 27.101562 62.138672 C 24.312558 62.395442 21.331191 61.834558 19.460938 59.541016 z M 58.849609 61.095703 C 56.546732 61.201307 54.222999 62.221207 52.878906 64.128906 C 51.067054 67.936191 50.285707 72.745514 51.935547 76.767578 C 54.156749 80.051436 59.960039 79.832586 62.460938 76.900391 C 64.617508 72.893184 63.356924 67.996922 64.507812 63.669922 C 64.068179 61.947149 61.513051 61.293122 59.833984 61.105469 C 59.508828 61.083163 59.178592 61.080617 58.849609 61.095703 z M 99.878906 63.255859 C 99.986816 63.710585 100.08689 64.168363 100.17383 64.630859 C 100.98979 64.673603 101.79324 64.705661 102.4707 64.619141 C 101.60673 64.164644 100.74282 63.710473 99.878906 63.255859 z "
transform="translate(-46.55321,504.50721)" />
<g
id="g1971"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7795276,0,0,3.7795276,-91.424824,415.23666)">
<g
id="g948"
style="fill:#ff0000" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="134.47168"
height="134.47168"
id="svg44668"
sodipodi:version="0.32"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
version="1.0"
sodipodi:docname="bone-icon-32.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/Users/jgosmann/Documents/projects/neo-layout/mac_osx/test.iconset/icon_16x16.png"
inkscape:export-xdpi="11.42"
inkscape:export-ydpi="11.42">
<defs
id="defs44670">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 615.78477 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 615.78477 : 1"
inkscape:persp3d-origin="372.04724 : 440.39107 : 1"
id="perspective44676" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.2796268"
inkscape:cx="68.608943"
inkscape:cy="137.39433"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1323"
inkscape:window-x="1920"
inkscape:window-y="25"
inkscape:document-rotation="0"
inkscape:snap-page="true"
inkscape:window-maximized="1" />
<metadata
id="metadata44673">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(46.55321,-504.50721)">
<path
id="rect896"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:2.00315, 2.00315"
d="M 19.513672 0 C 8.7026853 0 0 8.7026853 0 19.513672 L 0 114.95703 C 0 125.76802 8.7026853 134.47266 19.513672 134.47266 L 114.95703 134.47266 C 125.76802 134.47266 134.4707 125.76802 134.4707 114.95703 L 134.4707 19.513672 C 134.4707 8.7026853 125.76802 0 114.95703 0 L 19.513672 0 z M 8.8671875 43.658203 C 11.694448 43.669164 14.522349 43.676539 17.349609 43.6875 C 17.366239 48.395162 17.36637 53.102866 17.376953 57.810547 C 17.664844 63.692663 16.791067 69.705077 17.962891 75.5 C 20.139385 80.654017 26.883407 82.501683 31.802734 80.285156 C 36.07896 78.031114 35.974021 72.251154 35.441406 68.070312 C 35.384041 63.034273 30.209048 59.872211 25.59375 60.054688 C 23.502651 60.467683 22.000898 59.326637 20.626953 57.916016 C 17.658735 56.539047 19.20966 54.915043 21.083984 53.277344 C 22.090869 51.453869 23.820028 51.300648 25.712891 51.527344 C 32.836242 50.750724 39.635346 55.448856 42.472656 61.828125 C 45.07938 55.732601 51.070203 51.084291 57.800781 50.664062 C 61.283548 50.38747 64.798883 51.258511 67.751953 53.123047 C 69.150681 53.607687 70.591751 55.582149 70.740234 55.964844 C 77.288602 48.973435 89.935214 50.112458 95.242188 58.025391 C 98.593959 54.258313 103.06638 51.31429 108.23438 51.085938 C 113.2546 50.600215 118.63379 52.046993 121.96484 56.023438 C 123.52832 57.636763 121.42122 60.21866 121.33398 62.271484 C 119.92329 63.055241 117.29554 62.186177 115.41016 62.320312 C 112.49147 58.443318 106.22085 59.258128 103.41406 62.859375 C 100.89864 61.540775 98.38527 60.217263 95.873047 58.892578 C 97.488873 61.211239 98.089847 63.869595 98.455078 66.609375 L 112.71484 66.609375 C 116.23563 66.043376 118.72015 69.21027 121.70703 70.558594 C 119.87032 72.041008 118.03319 73.52395 116.19922 75.009766 L 100.36719 75.009766 C 99.995497 74.757138 99.705453 74.416511 99.457031 74.037109 C 99.706821 75.213683 100.04124 76.363316 100.53516 77.460938 C 103.16118 82.334264 109.29655 82.878264 114.19727 82.207031 C 117.17082 81.269682 119.48703 83.456657 122.01562 84.642578 C 123.37571 85.658235 128.13784 86.854445 124.26172 87.591797 C 116.02666 91.751704 105.58566 92.171083 97.626953 87.146484 C 91.274898 82.972669 90.573828 74.724084 89.714844 67.863281 C 89.672808 62.928106 84.553427 58.848921 79.761719 60.541016 C 75.877215 61.195138 74.159848 65.196833 74.197266 68.763672 C 74.272951 74.495609 74.367621 81.16967 69.621094 85.269531 C 64.134792 91.105035 54.718724 91.206896 48.212891 87.085938 C 45.606939 85.516667 43.846402 83.187624 42.708984 80.523438 C 41.052122 84.746593 37.520593 88.200544 32.957031 89.144531 C 22.697575 92.521959 10.286941 85.239484 8.9335938 74.371094 C 8.4806172 64.818187 8.904816 55.221707 8.8515625 45.652344 L 8.8671875 43.658203 z M 58.806641 59.074219 C 55.287647 59.207327 51.807589 61.083536 50.367188 64.431641 C 48.964491 69.000523 47.998002 74.616078 50.78125 78.855469 C 54.949479 82.666162 63.722061 81.718228 65.234375 75.628906 C 66.290447 70.237614 65.177139 64.327437 68.158203 59.382812 C 68.625372 58.597231 66.492098 61.63499 66.150391 62.054688 C 64.304291 59.921636 61.543635 58.97069 58.806641 59.074219 z "
transform="translate(-46.55321,504.50721)" />
<g
id="g1971"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7795276,0,0,3.7795276,95.85931,564.76642)">
<g
id="g948"
style="fill:#ff0000"
transform="translate(-49.560509,-39.566021)" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="134.47168"
height="134.47168"
id="svg44668"
sodipodi:version="0.32"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
version="1.0"
sodipodi:docname="base.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/Users/jgosmann/Documents/projects/neo-layout/mac_osx/test.iconset/icon_512x512.png"
inkscape:export-xdpi="365.51935"
inkscape:export-ydpi="365.51935">
<defs
id="defs44670">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 615.78477 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 615.78477 : 1"
inkscape:persp3d-origin="372.04724 : 440.39107 : 1"
id="perspective44676" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.2796268"
inkscape:cx="68.608943"
inkscape:cy="137.39433"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1323"
inkscape:window-x="1920"
inkscape:window-y="25"
inkscape:document-rotation="0"
inkscape:snap-page="true"
inkscape:window-maximized="1" />
<metadata
id="metadata44673">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(46.55321,-504.50721)">
<path
id="rect896"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:2.00315, 2.00315"
d="M 19.513672,0 C 8.7026856,0 0,8.7026856 0,19.513672 v 95.443358 c 0,10.81099 8.7026856,19.51563 19.513672,19.51563 h 95.443358 c 10.81099,0 19.51367,-8.70464 19.51367,-19.51563 V 19.513672 C 134.4707,8.7026856 125.76802,0 114.95703,0 Z"
transform="translate(-46.55321,504.50721)"
sodipodi:nodetypes="sssssssss" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="134.47168"
height="134.47168"
id="svg44668"
sodipodi:version="0.32"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
version="1.0"
sodipodi:docname="neo-icon-template.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/Users/jgosmann/Documents/projects/neo-layout/mac_osx/test.iconset/icon_512x512.png"
inkscape:export-xdpi="365.51935"
inkscape:export-ydpi="365.51935">
<defs
id="defs44670">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 615.78477 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 615.78477 : 1"
inkscape:persp3d-origin="372.04724 : 440.39107 : 1"
id="perspective44676" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective44676-2" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.2796268"
inkscape:cx="68.608943"
inkscape:cy="137.39433"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1323"
inkscape:window-x="1920"
inkscape:window-y="25"
inkscape:document-rotation="0"
inkscape:snap-page="true"
inkscape:window-maximized="1" />
<metadata
id="metadata44673">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(46.55321,-504.50721)">
<path
id="rect896"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:2.00315, 2.00315"
d="M 19.513672 0 C 8.7026855 0 0 8.7026855 0 19.513672 L 0 114.95703 C 0 125.76802 8.7026855 134.47266 19.513672 134.47266 L 114.95703 134.47266 C 125.76802 134.47266 134.4707 125.76802 134.4707 114.95703 L 134.4707 19.513672 C 134.4707 8.7026855 125.76802 0 114.95703 0 L 19.513672 0 z M 101.29492 42.806641 C 102.57473 42.807172 103.85429 42.881301 105.12305 43.048828 C 109.35189 43.553388 113.43058 45.459448 116.35352 48.585938 C 120.65914 52.982297 122.69862 59.155791 122.9707 65.212891 C 123.13983 70.101441 122.87914 75.12746 121.14648 79.75 C 120.05268 82.7884 117.99726 85.36364 115.61523 87.5 C 113.15368 89.84795 109.85592 91.193442 106.48047 91.451172 C 103.99808 91.596772 101.48763 91.857691 99.015625 91.431641 C 95.552485 91.121191 92.259136 89.639122 89.628906 87.382812 C 87.704406 85.684133 85.705604 83.985208 84.308594 81.804688 C 81.658194 77.570798 80.241844 72.729642 78.527344 68.076172 C 76.959514 69.348152 75.391619 70.620068 73.824219 71.892578 L 54.076172 71.892578 C 53.744092 71.294238 53.373802 70.716409 53.076172 70.099609 C 51.959572 67.691079 52.234509 64.963558 51.917969 62.392578 L 72.5625 62.392578 C 74.22349 63.395718 75.886868 64.394924 77.548828 65.396484 C 76.767498 63.313864 75.941263 61.244566 74.945312 59.253906 C 73.910993 57.378496 72.973618 55.253105 71.085938 54.078125 C 68.677818 52.656455 65.666746 52.595256 63.009766 53.253906 C 60.983916 53.753446 59.394802 55.166613 57.982422 56.626953 C 54.755112 54.924733 51.526588 53.224798 48.298828 51.523438 C 49.708058 50.098367 51.014943 48.558966 52.601562 47.322266 C 57.257173 43.611026 63.48962 42.409626 69.3125 43.066406 C 73.76627 43.532286 78.045427 45.665871 80.935547 49.113281 C 84.334927 53.495111 85.970754 58.889299 87.802734 64.042969 C 88.142744 65.005049 88.542079 66.125242 88.849609 66.982422 C 89.908639 69.844622 91.069673 72.696341 92.720703 75.275391 C 94.578693 78.260391 97.494207 80.746663 101.0293 81.376953 C 104.25983 82.107373 108.04384 81.049251 109.93945 78.207031 C 111.75156 75.442701 111.90226 72.004381 112.02734 68.800781 C 112.20705 64.305291 111.56414 59.497353 108.78125 55.814453 C 106.64487 53.143693 102.90019 52.406927 99.65625 52.841797 C 97.04032 53.174477 95.037421 55.022616 93.144531 56.691406 C 89.950401 54.995806 86.847708 53.136747 83.673828 51.404297 C 84.782188 50.250667 85.821863 49.027523 87.001953 47.945312 C 90.502973 44.671692 95.264395 42.984598 100.01562 42.830078 C 100.44175 42.814743 100.86832 42.806464 101.29492 42.806641 z M 30.931641 43.261719 C 34.290681 43.254889 37.658187 44.016512 40.654297 45.544922 C 44.615647 47.503642 47.612594 51.018369 49.521484 54.949219 C 51.294994 58.581319 51.416593 62.695182 51.908203 66.632812 C 52.259843 69.430753 52.415636 72.340486 53.597656 74.941406 C 55.178486 78.479856 58.6408 80.898789 62.375 81.693359 C 66.52031 82.626009 70.756237 81.817513 74.935547 81.626953 C 78.360237 83.442393 81.784021 85.259525 85.207031 87.078125 C 82.850011 88.030645 80.517061 89.042258 78.144531 89.955078 C 73.083011 91.598078 67.623955 92.095742 62.359375 91.263672 C 57.385905 90.451232 52.352761 88.691233 48.619141 85.189453 C 44.881511 81.417313 43.254499 76.130699 42.443359 71.005859 C 41.774739 67.330039 41.700533 63.5412 40.664062 59.9375 C 39.274452 55.9468 35.108094 53.006981 30.839844 53.394531 C 28.299534 53.407701 26.024444 54.797753 24.271484 56.539062 C 22.044394 58.887702 21.639867 62.295219 21.466797 65.386719 C 21.346157 73.820799 21.576378 82.256486 21.517578 90.691406 L 11.509766 90.691406 C 11.516866 83.332946 11.564609 75.973654 11.537109 68.615234 C 11.385659 64.863234 11.348734 61.037474 12.402344 57.396484 C 13.346354 53.843084 15.454031 50.668969 18.244141 48.292969 C 21.679791 45.148429 26.258251 43.262679 30.931641 43.261719 z "
transform="translate(-46.55321,504.50721)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -1,85 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="134.47168"
height="134.47168"
id="svg44668"
sodipodi:version="0.32"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
version="1.0"
sodipodi:docname="neo-icon-template-32.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/Users/jgosmann/Documents/projects/neo-layout/mac_osx/test.iconset/icon_16x162x.png"
inkscape:export-xdpi="22.844793"
inkscape:export-ydpi="22.844793">
<defs
id="defs44670">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 615.78477 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 615.78477 : 1"
inkscape:persp3d-origin="372.04724 : 440.39107 : 1"
id="perspective44676" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective44676-2" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.2796268"
inkscape:cx="68.608943"
inkscape:cy="137.39433"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1323"
inkscape:window-x="1920"
inkscape:window-y="25"
inkscape:document-rotation="0"
inkscape:snap-page="true"
inkscape:window-maximized="1"
showguides="false" />
<metadata
id="metadata44673">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(46.55321,-504.50721)">
<path
id="rect896"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:2.00315, 2.00315"
d="M 19.513672 0 C 8.7026855 0 0 8.7026855 0 19.513672 L 0 114.95703 C 0 125.76802 8.7026855 134.47266 19.513672 134.47266 L 114.95703 134.47266 C 125.76802 134.47266 134.4707 125.76802 134.4707 114.95703 L 134.4707 19.513672 C 134.4707 8.7026855 125.76802 0 114.95703 0 L 19.513672 0 z M 101.29492 42.806641 C 102.57473 42.807172 103.85429 42.881301 105.12305 43.048828 C 109.35189 43.553388 113.43058 45.459448 116.35352 48.585938 C 120.65914 52.982297 122.69862 59.155791 122.9707 65.212891 C 123.13983 70.101441 122.87914 75.12746 121.14648 79.75 C 120.05268 82.7884 117.99726 85.36364 115.61523 87.5 C 113.15368 89.84795 109.85592 91.193442 106.48047 91.451172 C 103.99808 91.596772 101.48763 91.857691 99.015625 91.431641 C 95.552485 91.121191 92.259136 89.639122 89.628906 87.382812 C 87.704406 85.684133 85.705604 83.985208 84.308594 81.804688 C 81.658194 77.570798 80.241844 72.729642 78.527344 68.076172 C 76.959514 69.348152 75.391619 70.620068 73.824219 71.892578 L 54.076172 71.892578 C 53.744092 71.294238 53.373802 70.716409 53.076172 70.099609 C 51.959572 67.691079 52.234509 64.963558 51.917969 62.392578 L 72.5625 62.392578 C 74.22349 63.395718 75.886868 64.394924 77.548828 65.396484 C 76.767498 63.313864 75.941263 61.244566 74.945312 59.253906 C 73.910993 57.378496 72.973618 55.253105 71.085938 54.078125 C 68.677818 52.656455 65.666746 52.595256 63.009766 53.253906 C 60.983916 53.753446 59.394802 55.166613 57.982422 56.626953 C 54.755112 54.924733 51.526588 53.224798 48.298828 51.523438 C 49.708058 50.098367 51.014943 48.558966 52.601562 47.322266 C 57.257173 43.611026 63.48962 42.409626 69.3125 43.066406 C 73.76627 43.532286 78.045427 45.665871 80.935547 49.113281 C 84.334927 53.495111 85.970754 58.889299 87.802734 64.042969 C 88.142744 65.005049 88.542079 66.125242 88.849609 66.982422 C 89.908639 69.844622 91.069673 72.696341 92.720703 75.275391 C 94.578693 78.260391 97.494207 80.746663 101.0293 81.376953 C 104.25983 82.107373 108.04384 81.049251 109.93945 78.207031 C 111.75156 75.442701 111.90226 72.004381 112.02734 68.800781 C 112.20705 64.305291 111.56414 59.497353 108.78125 55.814453 C 106.64487 53.143693 102.90019 52.406927 99.65625 52.841797 C 97.04032 53.174477 95.037421 55.022616 93.144531 56.691406 C 89.950401 54.995806 86.847708 53.136747 83.673828 51.404297 C 84.782188 50.250667 85.821863 49.027523 87.001953 47.945312 C 90.502973 44.671692 95.264395 42.984598 100.01562 42.830078 C 100.44175 42.814743 100.86832 42.806464 101.29492 42.806641 z M 30.931641 43.261719 C 34.290681 43.254889 37.658187 44.016512 40.654297 45.544922 C 44.615647 47.503642 47.612594 51.018369 49.521484 54.949219 C 51.294994 58.581319 51.416593 62.695182 51.908203 66.632812 C 52.259843 69.430753 52.415636 72.340486 53.597656 74.941406 C 55.178486 78.479856 58.6408 80.898789 62.375 81.693359 C 66.52031 82.626009 70.756237 81.817513 74.935547 81.626953 C 78.360237 83.442393 81.784021 85.259525 85.207031 87.078125 C 82.850011 88.030645 80.517061 89.042258 78.144531 89.955078 C 73.083011 91.598078 67.623955 92.095742 62.359375 91.263672 C 57.385905 90.451232 52.352761 88.691233 48.619141 85.189453 C 44.881511 81.417313 43.254499 76.130699 42.443359 71.005859 C 41.774739 67.330039 41.700533 63.5412 40.664062 59.9375 C 39.274452 55.9468 35.108094 53.006981 30.839844 53.394531 C 28.299534 53.407701 26.024444 54.797753 24.271484 56.539062 C 22.044394 58.887702 21.639867 62.295219 21.466797 65.386719 C 21.346157 73.820799 21.576378 82.256486 21.517578 90.691406 L 11.509766 90.691406 C 11.516866 83.332946 11.564609 75.973654 11.537109 68.615234 C 11.385659 64.863234 11.348734 61.037474 12.402344 57.396484 C 13.346354 53.843084 15.454031 50.668969 18.244141 48.292969 C 21.679791 45.148429 26.258251 43.262679 30.931641 43.261719 z "
transform="translate(-46.55321,504.50721)"
inkscape:export-filename="/Users/jgosmann/Documents/projects/neo-layout/mac_osx/test.iconset/icon_32x322x.png"
inkscape:export-xdpi="45.689999"
inkscape:export-ydpi="45.689999" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>org.sil.ukelele.keyboardlayout.neo</string>
<key>CFBundleName</key>
<string>neo-layouts</string>
<key>CFBundleVersion</key>
<string>2.0</string>
<key>KLInfo_Deutsch (Bone)</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>
<string>org.sil.ukelele.keyboardlayout.neo.deutsch(bone)</string>
<key>TISIntendedLanguage</key>
<string>de</string>
</dict>
<key>KLInfo_Deutsch (Neo 2)</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>
<string>org.sil.ukelele.keyboardlayout.neo.deutsch(neo2)</string>
<key>TISIntendedLanguage</key>
<string>de</string>
</dict>
<key>KLInfo_Deutsch (NeoQwertz)</key>
<dict>
<key>TICapsLockLanguageSwitchCapable</key>
<false/>
<key>TISIconIsTemplate</key>
<true/>
<key>TISInputSourceID</key>
<string>org.sil.ukelele.keyboardlayout.neo.deutsch(neoqwertz)</string>
<key>TISIntendedLanguage</key>
<string>de</string>
</dict>
</dict>
</plist>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildVersion</key>
<string>0</string>
<key>ProjectName</key>
<string>neo-layouts</string>
<key>SourceVersion</key>
<string></string>
</dict>
</plist>

BIN
mac_osx/neo.icns Normal file

Binary file not shown.

View File

@ -1,7 +1,7 @@
<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--Last edited by Ukelele version 346 on 2022-06-19 at 16:37 (CEST)-->
<keyboard group="126" id="-15581" name="Deutsch (Neo 2)" maxout="3">
<!--Last edited by Ukelele version 3.3.0.249 on 2019-08-16 at 17:12 (CEST)-->
<keyboard group="126" id="-7884" name="Deutsch (Neo 2)" maxout="3">
<layouts>
<layout first="0" last="0" mapSet="138" modifiers="30"/>
</layouts>
@ -101,13 +101,12 @@
<key code="67" output="*"/>
<key code="69" output="+"/>
<key code="70" output="&#x001C;"/>
<key code="71" output="&#x0009;"/>
<key code="71" output="&#x001B;"/>
<key code="72" output="&#x001F;"/>
<key code="75" output="/"/>
<key code="76" output="&#x000D;"/>
<key code="77" output="&#x001E;"/>
<key code="78" output="-"/>
<key code="79" output=""/>
<key code="80" output="&#x0010;"/>
<key code="81" output="="/>
<key code="82" output="0"/>
@ -208,30 +207,14 @@
<key code="52" output="&#x0003;"/>
<key code="53" output="&#x001B;"/>
<key code="64" output="&#x0010;"/>
<key code="65" output="."/>
<key code="66" output="*"/>
<key code="67" action="*"/>
<key code="69" action="+ 1"/>
<key code="70" output="+"/>
<key code="71" action="&#x0009;"/>
<key code="71" output="&#x001B;"/>
<key code="72" output="="/>
<key code="75" action="/ 1"/>
<key code="76" output="&#x0003;"/>
<key code="77" output="/"/>
<key code="78" action="- 1"/>
<key code="79" output="&#x0010;"/>
<key code="80" output="&#x0010;"/>
<key code="81" output=""/>
<key code="82" output="␣"/>
<key code="83" output="♦"/>
<key code="84" output="♥"/>
<key code="85" output="♠"/>
<key code="86" output="♣"/>
<key code="87" action="€"/>
<key code="88" output="‣"/>
<key code="89" output="✔"/>
<key code="91" output="✘"/>
<key code="92" output="†"/>
<key code="96" output="&#x0010;"/>
<key code="97" output="&#x0010;"/>
<key code="98" output="&#x0010;"/>
@ -527,30 +510,30 @@
<key code="52" output="&#x0003;"/>
<key code="53" output="&#x001B;"/>
<key code="64" output="&#x0010;"/>
<key code="65" output=","/>
<key code="65" output=""/>
<key code="66" output="&#x001D;"/>
<key code="67" output=""/>
<key code="69" output="±"/>
<key code="67" output=""/>
<key code="69" output=""/>
<key code="70" output="&#x001C;"/>
<key code="71" output="="/>
<key code="71" output="&#x001B;"/>
<key code="72" output="&#x001F;"/>
<key code="75" output="÷"/>
<key code="75" output=""/>
<key code="76" output="&#x0003;"/>
<key code="77" output="&#x001E;"/>
<key code="78" output=""/>
<key code="78" output=""/>
<key code="79" output="&#x0010;"/>
<key code="80" output="&#x0010;"/>
<key code="81" output=""/>
<key code="82" output="%"/>
<key code="83" output=""/>
<key code="84" output=""/>
<key code="85" output=""/>
<key code="86" output=""/>
<key code="87" output=":"/>
<key code="88" output=""/>
<key code="89" output=""/>
<key code="91" output=""/>
<key code="92" output=""/>
<key code="82" output=""/>
<key code="83" output=""/>
<key code="84" output=""/>
<key code="85" output=""/>
<key code="86" output=""/>
<key code="87" output=""/>
<key code="88" output=""/>
<key code="89" output=""/>
<key code="91" output=""/>
<key code="92" output=""/>
<key code="96" output="&#x0010;"/>
<key code="97" output="&#x0010;"/>
<key code="98" output="&#x0010;"/>
@ -641,30 +624,14 @@
<key code="55" output=""/>
<key code="58" output=""/>
<key code="64" output="&#x0010;"/>
<key code="65" action=""/>
<key code="66" output="*"/>
<key code="67" action="⊙"/>
<key code="69" action="⊕"/>
<key code="70" output="+"/>
<key code="71" action="≈"/>
<key code="71" output="&#x001B;"/>
<key code="72" output="="/>
<key code="75" action="⌀"/>
<key code="76" output="&#x0003;"/>
<key code="77" output="/"/>
<key code="78" action="⊖"/>
<key code="79" output="&#x0010;"/>
<key code="80" output="&#x0010;"/>
<key code="81" output=""/>
<key code="82" action="‰"/>
<key code="83" action="Ebene 4 und 6"/>
<key code="84" action=""/>
<key code="85" action="≥"/>
<key code="86" action="⊂"/>
<key code="87" action="⊶"/>
<key code="88" action="⊃"/>
<key code="89" action="≪"/>
<key code="91" action="∩"/>
<key code="92" action="≫"/>
<key code="96" output="&#x0010;"/>
<key code="97" output="&#x0010;"/>
<key code="98" output="&#x0010;"/>
@ -685,12 +652,12 @@
<key code="113" output="&#x0010;"/>
<key code="114" output="&#x0005;"/>
<key code="115" output="&#x0001;"/>
<key code="116" action="&#x000B;"/>
<key code="116" output="&#x000B;"/>
<key code="117" output="&#x007F;"/>
<key code="118" output="&#x0010;"/>
<key code="119" output="&#x0004;"/>
<key code="120" output="&#x0010;"/>
<key code="121" action="&#x000C;"/>
<key code="121" output="&#x000C;"/>
<key code="122" output="&#x0010;"/>
<key code="123" output="&#x001C;"/>
<key code="124" output="&#x001D;"/>
@ -955,7 +922,7 @@
<key code="46" output="&#x000D;"/>
<key code="47" output="."/>
<key code="48" output="&#x0009;"/>
<key code="49" output=" "/>
<key code="49" action="5"/>
<key code="50" output="&#x003C;"/>
<key code="51" output="&#x0008;"/>
<key code="52" output="&#x0003;"/>
@ -1131,33 +1098,15 @@
</keyMap>
</keyMapSet>
<actions>
<action id="&#x0009;">
<when state="none" output="&#x0009;"/>
<when state="Ebene 4 und 6" output="≠"/>
</action>
<action id="&#x000B;">
<when state="none" next="Bugfixes"/>
</action>
<action id="&#x000C;">
<when state="none" next="Ebene 4 und 6"/>
</action>
<action id="&#x0027;">
<when state="none" output="&#x0027;"/>
</action>
<action id="*">
<when state="none" output="*"/>
<when state="Ebene 4 und 6" output="×"/>
</action>
<action id="+">
<when state="none" output="+"/>
<when state="Ebene 1 T1 Zirkumflex" output="⁺"/>
<when state="compose" next="compose +"/>
<when state="compose -" output="∓"/>
</action>
<action id="+ 1">
<when state="none" output="+"/>
<when state="Ebene 4 und 6" output="∓"/>
</action>
<action id="-">
<when state="none" output="-"/>
<when state="Ebene 1 T1 Zirkumflex" output="⁻"/>
@ -1165,20 +1114,12 @@
<when state="compose +" output="±"/>
<when state="compose h" output="ℏ"/>
</action>
<action id="- 1">
<when state="none" output="-"/>
<when state="Ebene 4 und 6" output=""/>
</action>
<action id="/">
<when state="none" output="/"/>
<when state="compose" next="Ebene 3 T3 Schrägstrich"/>
<when state="compose less" next="compose less /"/>
<when state="compso greater" next="compose greater /"/>
</action>
<action id="/ 1">
<when state="none" output="/"/>
<when state="Ebene 4 und 6" output=""/>
</action>
<action id="0">
<when state="none" next="Ebene 1 T2 Gravis"/>
</action>
@ -2508,7 +2449,7 @@
<when state="Ebene 5 T1 Haken" output="Ɣ"/>
</action>
<action id="5">
<when state="none" next="Ebene 1 T1 Zirkumflex"/>
<when state="none" output="&#x003C;"/>
</action>
<action id="50">
<when state="none" output="X"/>
@ -3151,12 +3092,9 @@
<when state="compose ~" output="≳"/>
<when state="compso greater" output="≫"/>
</action>
<action id="Bugfixes">
<when state="none" next="Bugfixes"/>
</action>
<action id="Ebene 4 und 6">
<when state="none" output="≤"/>
<when state="Ebene 4 und 6" output=""/>
<when state="none" next="Ebene 4 und 6"/>
<when state="Ebene 4 und 6" output=""/>
</action>
<action id="`">
<when state="none" next="Ebene 1 T2 Gravis"/>
@ -3331,14 +3269,6 @@
<when state="none" next="Ebene 5 Spiritus lenis"/>
<when state="Ebene 4 und 6" next="Ebene 6 T3 Breve"/>
</action>
<action id="‰">
<when state="none" output="‰"/>
<when state="Ebene 4 und 6" output="□"/>
</action>
<action id="">
<when state="none" output=""/>
<when state="Ebene 4 und 6" output="″"/>
</action>
<action id="₀">
<when state="none" output="₀"/>
<when state="Ebene 4 und 6" output="∅"/>
@ -3355,61 +3285,6 @@
<when state="none" output="₃"/>
<when state="Ebene 4 und 6" output="∧"/>
</action>
<action id="€">
<when state="none" output="€"/>
</action>
<action id="∩">
<when state="none" output="∩"/>
<when state="Ebene 4 und 6" output="⋂"/>
</action>
<action id="">
<when state="none" output=""/>
<when state="Ebene 4 und 6" output=""/>
</action>
<action id="≈">
<when state="none" output="≈"/>
<when state="Ebene 4 und 6" output="≡"/>
</action>
<action id="≥">
<when state="none" output="≥"/>
<when state="Ebene 4 und 6" output="⌋"/>
</action>
<action id="≪">
<when state="none" output="≪"/>
<when state="Ebene 4 und 6" output="⌈"/>
</action>
<action id="≫">
<when state="none" output="≫"/>
<when state="Ebene 4 und 6" output="⌉"/>
</action>
<action id="⊂">
<when state="none" output="⊂"/>
<when state="Ebene 4 und 6" output="⊆"/>
</action>
<action id="⊃">
<when state="none" output="⊃"/>
<when state="Ebene 4 und 6" output="⊇"/>
</action>
<action id="⊕">
<when state="none" output="⊕"/>
<when state="Ebene 4 und 6" output="∔"/>
</action>
<action id="⊖">
<when state="none" output="⊖"/>
<when state="Ebene 4 und 6" output="∸"/>
</action>
<action id="⊙">
<when state="none" output="⊙"/>
<when state="Ebene 4 und 6" output="⊗"/>
</action>
<action id="⊶">
<when state="none" output="⊶"/>
<when state="Ebene 4 und 6" output="⊷"/>
</action>
<action id="⌀">
<when state="none" output="⌀"/>
<when state="Ebene 4 und 6" output=""/>
</action>
<action id="♀">
<when state="none" output="♀"/>
<when state="Ebene 4 und 6" output="⊥"/>

File diff suppressed because it is too large Load Diff

BIN
mac_osx/neoqwertz.icns Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,333 +1,446 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboardLayout>
<id>{e8666767-5d2a-4525-8ef8-c6648d7ad372}</id>
<title>Deutsch (Neo2)</title>
<name>de</name>
<width>1500</width>
<height>480</height>
<keys>
<key left="180" top="200" width="80" height="80" fingerIndex="0">
<char position="topLeft" modifier="right_shift">U</char>
<char position="hidden">u</char>
<char position="topRight"></char>
<char position="bottomLeft">u</char>
<char position="bottomRight" modifier="altgr">\</char>
</key>
<key left="280" top="200" width="80" height="80" fingerIndex="1">
<char position="topLeft" modifier="right_shift">I</char>
<char position="hidden">i</char>
<char position="topRight"></char>
<char position="bottomLeft">i</char>
<char position="bottomRight" modifier="altgr">/</char>
</key>
<key left="380" top="200" width="80" height="80" fingerIndex="2">
<char position="topLeft" modifier="right_shift">A</char>
<char position="hidden">a</char>
<char position="topRight"></char>
<char position="bottomLeft">a</char>
<char position="bottomRight" modifier="altgr">{</char>
</key>
<key left="480" top="200" width="80" height="80" fingerIndex="3" hasHapticMarker="true">
<char position="topLeft" modifier="right_shift">E</char>
<char position="hidden">e</char>
<char position="topRight"></char>
<char position="bottomLeft">e</char>
<char position="bottomRight" modifier="altgr">}</char>
</key>
<key left="780" top="200" width="80" height="80" fingerIndex="4" hasHapticMarker="true">
<char position="topLeft" modifier="right_shift">N</char>
<char position="hidden">n</char>
<char position="topRight">4</char>
<char position="bottomLeft">n</char>
<char position="bottomRight" modifier="altgr">(</char>
</key>
<key left="880" top="200" width="80" height="80" fingerIndex="5">
<char position="topLeft" modifier="left_shift">R</char>
<char position="hidden">r</char>
<char position="topRight">5</char>
<char position="bottomLeft">r</char>
<char position="bottomRight" modifier="altgr">)</char>
</key>
<key left="980" top="200" width="80" height="80" fingerIndex="6">
<char position="topLeft" modifier="left_shift">T</char>
<char position="hidden">t</char>
<char position="topRight">6</char>
<char position="bottomLeft">t</char>
<char position="bottomRight" modifier="altgr">-</char>
</key>
<key left="1080" top="200" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift">D</char>
<char position="hidden">d</char>
<char position="topRight">,</char>
<char position="bottomLeft">d</char>
<char position="bottomRight" modifier="altgr">:</char>
</key>
<key left="0" top="100" width="130" height="80" fingerIndex="0">
<char position="topLeft" modifier="right_shift"></char>
<char position="bottomLeft"></char>
<char position="bottomRight" modifier="altgr"></char>
</key>
<key left="0" top="0" width="80" height="80" fingerIndex="0">
<char position="topLeft" modifier="right_shift">˜</char>
<char position="topRight">ˇ</char>
<char position="bottomLeft">ˆ</char>
<char position="bottomRight" modifier="altgr">˚</char>
</key>
<key left="100" top="0" width="80" height="80" fingerIndex="0">
<char position="topLeft" modifier="right_shift">°</char>
<char position="topRight">ª</char>
<char position="bottomLeft">1</char>
<char position="bottomRight" modifier="altgr">¹</char>
</key>
<key left="200" top="0" width="80" height="80" fingerIndex="0">
<char position="topLeft" modifier="right_shift">§</char>
<char position="topRight">º</char>
<char position="bottomLeft">2</char>
<char position="bottomRight" modifier="altgr">²</char>
</key>
<key left="300" top="0" width="80" height="80" fingerIndex="1">
<char position="topLeft" modifier="right_shift"></char>
<char position="topRight"></char>
<char position="bottomLeft">3</char>
<char position="bottomRight" modifier="altgr">³</char>
</key>
<key left="400" top="0" width="80" height="80" fingerIndex="2">
<char position="topLeft" modifier="right_shift">»</char>
<char position="topRight"></char>
<char position="bottomLeft">4</char>
<char position="bottomRight" modifier="altgr"></char>
</key>
<key left="500" top="0" width="80" height="80" fingerIndex="3">
<char position="topLeft" modifier="right_shift">«</char>
<char position="topRight">·</char>
<char position="bottomLeft">5</char>
<char position="bottomRight" modifier="altgr"></char>
</key>
<key left="600" top="0" width="80" height="80" fingerIndex="3">
<char position="topLeft" modifier="right_shift">$</char>
<char position="topRight">£</char>
<char position="bottomLeft">6</char>
<char position="bottomRight" modifier="altgr">¢</char>
</key>
<key left="700" top="0" width="80" height="80" fingerIndex="4">
<char position="topLeft" modifier="right_shift"></char>
<char position="topRight">¤</char>
<char position="bottomLeft">7</char>
<char position="bottomRight" modifier="altgr">¥</char>
</key>
<key left="800" top="0" width="80" height="80" fingerIndex="4">
<char position="topLeft" modifier="right_shift"></char>
<char position="topRight"></char>
<char position="bottomLeft">8</char>
<char position="bottomRight" modifier="altgr"></char>
</key>
<key left="900" top="0" width="80" height="80" fingerIndex="5">
<char position="topLeft" modifier="left_shift"></char>
<char position="topRight">/</char>
<char position="bottomLeft">9</char>
<char position="bottomRight" modifier="altgr"></char>
</key>
<key left="1000" top="0" width="80" height="80" fingerIndex="6">
<char position="topLeft" modifier="left_shift"></char>
<char position="topRight">*</char>
<char position="bottomLeft">0</char>
<char position="bottomRight" modifier="altgr"></char>
</key>
<key left="1100" top="0" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift"></char>
<char position="topRight">-</char>
<char position="bottomLeft">-</char>
</key>
<key left="1200" top="0" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift"></char>
<char position="topRight">̏</char>
<char position="bottomLeft">`</char>
<char position="bottomRight" modifier="altgr">¨</char>
</key>
<key left="150" top="100" width="80" height="80" fingerIndex="0">
<char position="topLeft" modifier="right_shift">X</char>
<char position="hidden">x</char>
<char position="topRight"></char>
<char position="bottomLeft">x</char>
<char position="bottomRight" modifier="altgr"></char>
</key>
<key left="250" top="100" width="80" height="80" fingerIndex="1">
<char position="topLeft" modifier="right_shift">V</char>
<char position="hidden">v</char>
<char position="topRight"></char>
<char position="bottomLeft">v</char>
<char position="bottomRight" modifier="altgr">_</char>
</key>
<key left="350" top="100" width="80" height="80" fingerIndex="2">
<char position="topLeft" modifier="right_shift">L</char>
<char position="hidden">l</char>
<char position="topRight"></char>
<char position="bottomLeft">l</char>
<char position="bottomRight" modifier="altgr">[</char>
</key>
<key left="450" top="100" width="80" height="80" fingerIndex="3">
<char position="topLeft" modifier="right_shift">C</char>
<char position="hidden">c</char>
<char position="topRight"></char>
<char position="bottomLeft">c</char>
<char position="bottomRight" modifier="altgr">]</char>
</key>
<key left="550" top="100" width="80" height="80" fingerIndex="3">
<char position="topLeft" modifier="right_shift">W</char>
<char position="hidden">w</char>
<char position="topRight"></char>
<char position="bottomLeft">w</char>
<char position="bottomRight" modifier="altgr">^</char>
</key>
<key left="230" top="300" width="80" height="80" fingerIndex="0">
<char position="topLeft" modifier="right_shift">Ü</char>
<char position="hidden">ü</char>
<char position="topRight"></char>
<char position="bottomLeft">ü</char>
<char position="bottomRight" modifier="altgr">#</char>
</key>
<key left="750" top="100" width="80" height="80" fingerIndex="4">
<char position="topLeft" modifier="right_shift">H</char>
<char position="hidden">h</char>
<char position="topRight">7</char>
<char position="bottomLeft">h</char>
<char position="bottomRight" modifier="altgr">&lt;</char>
</key>
<key left="850" top="100" width="80" height="80" fingerIndex="5">
<char position="topLeft" modifier="left_shift">G</char>
<char position="hidden">g</char>
<char position="topRight">8</char>
<char position="bottomLeft">g</char>
<char position="bottomRight" modifier="altgr">&gt;</char>
</key>
<key left="950" top="100" width="80" height="80" fingerIndex="6">
<char position="topLeft" modifier="left_shift">F</char>
<char position="hidden">f</char>
<char position="topRight">9</char>
<char position="bottomLeft">f</char>
<char position="bottomRight" modifier="altgr">=</char>
</key>
<key left="1050" top="100" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift">Q</char>
<char position="hidden">q</char>
<char position="topRight">+</char>
<char position="bottomLeft">q</char>
<char position="bottomRight" modifier="altgr">&amp;</char>
</key>
<key left="1150" top="100" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift"></char>
<char position="hidden">ß</char>
<char position="topRight"></char>
<char position="bottomLeft">ß</char>
<char position="bottomRight" modifier="altgr">ſ</char>
</key>
<key left="1250" top="100" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift">¸</char>
<char position="topRight">˝</char>
<char position="bottomLeft">´</char>
<char position="bottomRight" modifier="altgr">/</char>
</key>
<key left="580" top="200" width="80" height="80" fingerIndex="3">
<char position="topLeft" modifier="right_shift">O</char>
<char position="hidden">o</char>
<char position="topRight"></char>
<char position="bottomLeft">o</char>
<char position="bottomRight" modifier="altgr">*</char>
</key>
<key left="680" top="200" width="80" height="80" fingerIndex="4">
<char position="topLeft" modifier="right_shift">S</char>
<char position="hidden">s</char>
<char position="topRight">¿</char>
<char position="bottomLeft">s</char>
<char position="bottomRight" modifier="altgr">?</char>
</key>
<key left="1180" top="200" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift">Y</char>
<char position="hidden">y</char>
<char position="topRight">.</char>
<char position="bottomLeft">y</char>
<char position="bottomRight" modifier="altgr">@</char>
</key>
<key left="650" top="100" width="80" height="80" fingerIndex="4">
<char position="topLeft" modifier="right_shift">K</char>
<char position="hidden">k</char>
<char position="topRight">¡</char>
<char position="bottomLeft">k</char>
<char position="bottomRight" modifier="altgr">!</char>
</key>
<key left="330" top="300" width="80" height="80" fingerIndex="1">
<char position="topLeft" modifier="right_shift">Ö</char>
<char position="hidden">ö</char>
<char position="topRight"></char>
<char position="bottomLeft">ö</char>
<char position="bottomRight" modifier="altgr">$</char>
</key>
<key left="430" top="300" width="80" height="80" fingerIndex="2">
<char position="topLeft" modifier="right_shift">Ä</char>
<char position="hidden">ä</char>
<char position="topRight"></char>
<char position="bottomLeft">ä</char>
<char position="bottomRight" modifier="altgr">|</char>
</key>
<key left="530" top="300" width="80" height="80" fingerIndex="3">
<char position="topLeft" modifier="right_shift">P</char>
<char position="hidden">p</char>
<char position="topRight"></char>
<char position="bottomLeft">p</char>
<char position="bottomRight" modifier="altgr">~</char>
</key>
<key left="630" top="300" width="80" height="80" fingerIndex="3">
<char position="topLeft" modifier="right_shift">Z</char>
<char position="hidden">z</char>
<char position="topRight"></char>
<char position="bottomLeft">z</char>
<char position="bottomRight" modifier="altgr">`</char>
</key>
<key left="730" top="300" width="80" height="80" fingerIndex="4">
<char position="topLeft" modifier="right_shift">B</char>
<char position="hidden">b</char>
<char position="topRight">:</char>
<char position="bottomLeft">b</char>
<char position="bottomRight" modifier="altgr">+</char>
</key>
<key left="830" top="300" width="80" height="80" fingerIndex="4">
<char position="topLeft" modifier="right_shift">M</char>
<char position="hidden">m</char>
<char position="topRight">1</char>
<char position="bottomLeft">m</char>
<char position="bottomRight" modifier="altgr">%</char>
</key>
<key left="930" top="300" width="80" height="80" fingerIndex="5">
<char position="topLeft" modifier="left_shift"></char>
<char position="topRight">2</char>
<char position="bottomLeft">,</char>
<char position="bottomRight" modifier="altgr">"</char>
</key>
<key left="1030" top="300" width="80" height="80" fingerIndex="6">
<char position="topLeft" modifier="left_shift"></char>
<char position="topRight">3</char>
<char position="bottomLeft">.</char>
<char position="bottomRight" modifier="altgr">'</char>
</key>
<key left="1130" top="300" width="80" height="80" fingerIndex="7">
<char position="topLeft" modifier="left_shift">J</char>
<char position="hidden">j</char>
<char position="topRight">;</char>
<char position="bottomLeft">j</char>
<char position="bottomRight" modifier="altgr">;</char>
</key>
<specialKey left="1380" top="100" width="120" height="180" type="return"/>
<specialKey left="1230" top="300" width="270" height="80" type="shift" modifierId="left_shift"/>
<specialKey left="990" top="400" width="110" height="80" type="other" label="M4"/>
<specialKey left="1380" top="400" width="120" height="80" type="other" label="Strg"/>
<specialKey left="290" top="400" width="100" height="80" type="other" label="Alt"/>
<specialKey left="0" top="400" width="150" height="80" type="other" label="Strg"/>
<specialKey left="410" top="400" width="560" height="80" type="space"/>
<specialKey left="0" top="300" width="110" height="80" type="shift" modifierId="left_shift"/>
<specialKey left="0" top="200" width="160" height="80" type="other" label="M3"/>
<specialKey left="1300" top="0" width="200" height="80" type="backspace"/>
<specialKey left="130" top="300" width="80" height="80" type="other" label="M4"/>
<specialKey left="1280" top="200" width="80" height="80" type="other" label="M3"/>
<specialKey left="1250" top="400" width="110" height="80" type="other" label="Menu"/>
</keys>
</keyboardLayout>
<KTouchKeyboard>
<Title>Deutsch (Neo2)</Title>
<Comment>Neo 2, Ebenen 14
26.07.2009</Comment>
<FontSuggestions>Sans Serif,9,-1,5,50,0,0,0,0,0</FontSuggestions>
<Language>de</Language>
<Keys>
<Key Width="80" X="-920" Y="200" Height="80" Type="FINGER" >
<Char Unicode="85" Position="TopLeft" >U</Char>
<Char Unicode="8689" Position="TopRight" ></Char>
<Char Unicode="117" Position="BottomLeft" >u</Char>
<Char Unicode="92" Position="BottomRight" >\</Char>
</Key>
<Key Width="80" X="-820" Y="200" Height="80" Type="FINGER" >
<Char Unicode="73" Position="TopLeft" >I</Char>
<Char Unicode="8672" Position="TopRight" ></Char>
<Char Unicode="105" Position="BottomLeft" >i</Char>
<Char Unicode="47" Position="BottomRight" >/</Char>
</Key>
<Key Width="80" X="-720" Y="200" Height="80" Type="FINGER" >
<Char Unicode="65" Position="TopLeft" >A</Char>
<Char Unicode="8675" Position="TopRight" ></Char>
<Char Unicode="97" Position="BottomLeft" >a</Char>
<Char Unicode="123" Position="BottomRight" >{</Char>
</Key>
<Key Width="80" X="-620" Y="200" Height="80" Type="FINGER" >
<Char Unicode="69" Position="TopLeft" >E</Char>
<Char Unicode="8674" Position="TopRight" ></Char>
<Char Unicode="101" Position="BottomLeft" >e</Char>
<Char Unicode="125" Position="BottomRight" >}</Char>
</Key>
<Key Width="80" X="-320" Y="200" Height="80" Type="FINGER" >
<Char Unicode="78" Position="TopLeft" >N</Char>
<Char Unicode="52" Position="TopRight" >4</Char>
<Char Unicode="110" Position="BottomLeft" >n</Char>
<Char Unicode="40" Position="BottomRight" >(</Char>
</Key>
<Key Width="80" X="-220" Y="200" Height="80" Type="FINGER" >
<Char Unicode="82" Position="TopLeft" >R</Char>
<Char Unicode="53" Position="TopRight" >5</Char>
<Char Unicode="114" Position="BottomLeft" >r</Char>
<Char Unicode="41" Position="BottomRight" >)</Char>
</Key>
<Key Width="80" X="-120" Y="200" Height="80" Type="FINGER" >
<Char Unicode="84" Position="TopLeft" >T</Char>
<Char Unicode="54" Position="TopRight" >6</Char>
<Char Unicode="116" Position="BottomLeft" >t</Char>
<Char Unicode="45" Position="BottomRight" >-</Char>
</Key>
<Key Width="80" X="-20" Y="200" Height="80" Type="FINGER" >
<Char Unicode="68" Position="TopLeft" >D</Char>
<Char Unicode="44" Position="TopRight" >,</Char>
<Char Unicode="100" Position="BottomLeft" >d</Char>
<Char Unicode="58" Position="BottomRight" >:</Char>
</Key>
<Key Width="130" X="-1100" Y="100" Height="80" Type="NORMAL" >
<Char Unicode="8676" Position="TopLeft" ></Char>
<Char Unicode="8677" Position="BottomLeft" ></Char>
<Char Unicode="9835" Position="BottomRight" ></Char>
</Key>
<Key Width="120" X="280" Y="100" Height="180" Type="ENTER" />
<Key Width="270" X="130" Y="300" Height="80" Type="SHIFT" />
<Key Width="110" X="-110" KeyText="M4" Y="400" Height="80" Type="OTHER" />
<Key Width="120" X="280" KeyText="Strg" Y="400" Height="80" Type="OTHER" />
<Key Width="100" X="-810" KeyText="Alt" Y="400" Height="80" Type="OTHER" />
<Key Width="150" X="-1100" KeyText="Strg" Y="400" Height="80" Type="OTHER" />
<Key Width="560" X="-690" Y="400" Height="80" Type="SPACE" >
<Char Unicode="32" Position="TopLeft" > </Char>
<Char Unicode="48" Position="TopRight" >0</Char>
<Char Unicode="32" Position="BottomLeft" > </Char>
<Char Unicode="32" Position="BottomRight" > </Char>
</Key>
<Key Width="110" X="-1100" Y="300" Height="80" Type="SHIFT" />
<Key Width="160" X="-1100" KeyText="M3" Y="200" Height="80" Type="OTHER" />
<Key Width="200" X="200" Y="0" Height="80" Type="BACKSPACE" />
<Key Width="80" X="-1100" Y="0" Height="80" FingerKeyIndex="0" Type="NORMAL" >
<Char Unicode="732" Position="TopLeft" >˜</Char>
<Char Unicode="711" Position="TopRight" >ˇ</Char>
<Char Unicode="710" Position="BottomLeft" >ˆ</Char>
<Char Unicode="730" Position="BottomRight" >˚</Char>
</Key>
<Key Width="80" X="-1000" Y="0" Height="80" FingerKeyIndex="0" Type="NORMAL" >
<Char Unicode="176" Position="TopLeft" >°</Char>
<Char Unicode="170" Position="TopRight" >ª</Char>
<Char Unicode="49" Position="BottomLeft" >1</Char>
<Char Unicode="185" Position="BottomRight" >¹</Char>
</Key>
<Key Width="80" X="-900" Y="0" Height="80" FingerKeyIndex="0" Type="NORMAL" >
<Char Unicode="167" Position="TopLeft" >§</Char>
<Char Unicode="186" Position="TopRight" >º</Char>
<Char Unicode="50" Position="BottomLeft" >2</Char>
<Char Unicode="178" Position="BottomRight" >²</Char>
</Key>
<Key Width="80" X="-800" Y="0" Height="80" FingerKeyIndex="1" Type="NORMAL" >
<Char Unicode="8467" Position="TopLeft" ></Char>
<Char Unicode="8470" Position="TopRight" ></Char>
<Char Unicode="51" Position="BottomLeft" >3</Char>
<Char Unicode="179" Position="BottomRight" >³</Char>
</Key>
<Key Width="80" X="-700" Y="0" Height="80" FingerKeyIndex="2" Type="NORMAL" >
<Char Unicode="187" Position="TopLeft" >»</Char>
<Char Unicode="8670" Position="TopRight" ></Char>
<Char Unicode="52" Position="BottomLeft" >4</Char>
<Char Unicode="8250" Position="BottomRight" ></Char>
</Key>
<Key Width="80" X="-600" Y="0" Height="80" FingerKeyIndex="3" Type="NORMAL" >
<Char Unicode="171" Position="TopLeft" >«</Char>
<Char Unicode="183" Position="TopRight" >·</Char>
<Char Unicode="53" Position="BottomLeft" >5</Char>
<Char Unicode="8249" Position="BottomRight" ></Char>
</Key>
<Key Width="80" X="-500" Y="0" Height="80" FingerKeyIndex="3" Type="NORMAL" >
<Char Unicode="36" Position="TopLeft" >$</Char>
<Char Unicode="163" Position="TopRight" >£</Char>
<Char Unicode="54" Position="BottomLeft" >6</Char>
<Char Unicode="162" Position="BottomRight" >¢</Char>
</Key>
<Key Width="80" X="-400" Y="0" Height="80" FingerKeyIndex="4" Type="NORMAL" >
<Char Unicode="8364" Position="TopLeft" ></Char>
<Char Unicode="164" Position="TopRight" >¤</Char>
<Char Unicode="55" Position="BottomLeft" >7</Char>
<Char Unicode="165" Position="BottomRight" >¥</Char>
</Key>
<Key Width="80" X="-300" Y="0" Height="80" FingerKeyIndex="4" Type="NORMAL" >
<Char Unicode="8222" Position="TopLeft" ></Char>
<Char Unicode="8677" Position="TopRight" ></Char>
<Char Unicode="56" Position="BottomLeft" >8</Char>
<Char Unicode="8218" Position="BottomRight" ></Char>
</Key>
<Key Width="80" X="-200" Y="0" Height="80" FingerKeyIndex="5" Type="NORMAL" >
<Char Unicode="8220" Position="TopLeft" ></Char>
<Char Unicode="47" Position="TopRight" >/</Char>
<Char Unicode="57" Position="BottomLeft" >9</Char>
<Char Unicode="8216" Position="BottomRight" ></Char>
</Key>
<Key Width="80" X="-100" Y="0" Height="80" FingerKeyIndex="6" Type="NORMAL" >
<Char Unicode="8221" Position="TopLeft" ></Char>
<Char Unicode="42" Position="TopRight" >*</Char>
<Char Unicode="48" Position="BottomLeft" >0</Char>
<Char Unicode="8217" Position="BottomRight" ></Char>
</Key>
<Key Width="80" X="0" Y="0" Height="80" FingerKeyIndex="7" Type="NORMAL" >
<Char Unicode="8212" Position="TopLeft" ></Char>
<Char Unicode="45" Position="TopRight" >-</Char>
<Char Unicode="45" Position="BottomLeft" >-</Char>
</Key>
<Key Width="80" X="100" Y="0" Height="80" FingerKeyIndex="7" Type="NORMAL" >
<Char Unicode="8635" Position="TopLeft" ></Char>
<Char Unicode="783" Position="TopRight" >̏</Char>
<Char Unicode="96" Position="BottomLeft" >`</Char>
<Char Unicode="168" Position="BottomRight" >¨</Char>
</Key>
<Key Width="80" X="-950" Y="100" Height="80" FingerKeyIndex="0" Type="NORMAL" >
<Char Unicode="88" Position="TopLeft" >X</Char>
<Char Unicode="8942" Position="TopRight" ></Char>
<Char Unicode="120" Position="BottomLeft" >x</Char>
<Char Unicode="8230" Position="BottomRight" ></Char>
</Key>
<Key Width="80" X="-850" Y="100" Height="80" FingerKeyIndex="1" Type="NORMAL" >
<Char Unicode="86" Position="TopLeft" >V</Char>
<Char Unicode="9003" Position="TopRight" ></Char>
<Char Unicode="118" Position="BottomLeft" >v</Char>
<Char Unicode="95" Position="BottomRight" >_</Char>
</Key>
<Key Width="80" X="-750" Y="100" Height="80" FingerKeyIndex="2" Type="NORMAL" >
<Char Unicode="76" Position="TopLeft" >L</Char>
<Char Unicode="8673" Position="TopRight" ></Char>
<Char Unicode="108" Position="BottomLeft" >l</Char>
<Char Unicode="91" Position="BottomRight" >[</Char>
</Key>
<Key Width="80" X="-650" Y="100" Height="80" FingerKeyIndex="3" Type="NORMAL" >
<Char Unicode="67" Position="TopLeft" >C</Char>
<Char Unicode="8998" Position="TopRight" ></Char>
<Char Unicode="99" Position="BottomLeft" >c</Char>
<Char Unicode="93" Position="BottomRight" >]</Char>
</Key>
<Key Width="80" X="-550" Y="100" Height="80" FingerKeyIndex="3" Type="NORMAL" >
<Char Unicode="87" Position="TopLeft" >W</Char>
<Char Unicode="9088" Position="TopRight" ></Char>
<Char Unicode="119" Position="BottomLeft" >w</Char>
<Char Unicode="94" Position="BottomRight" >^</Char>
</Key>
<Key Width="80" X="-870" Y="300" Height="80" FingerKeyIndex="0" Type="NORMAL" >
<Char Unicode="220" Position="TopLeft" >Ü</Char>
<Char Unicode="8999" Position="TopRight" ></Char>
<Char Unicode="252" Position="BottomLeft" >ü</Char>
<Char Unicode="35" Position="BottomRight" >#</Char>
</Key>
<Key Width="80" X="-350" Y="100" Height="80" FingerKeyIndex="4" Type="NORMAL" >
<Char Unicode="72" Position="TopLeft" >H</Char>
<Char Unicode="55" Position="TopRight" >7</Char>
<Char Unicode="104" Position="BottomLeft" >h</Char>
<Char Unicode="60" Position="BottomRight" >&lt;</Char>
</Key>
<Key Width="80" X="-250" Y="100" Height="80" FingerKeyIndex="5" Type="NORMAL" >
<Char Unicode="71" Position="TopLeft" >G</Char>
<Char Unicode="56" Position="TopRight" >8</Char>
<Char Unicode="103" Position="BottomLeft" >g</Char>
<Char Unicode="62" Position="BottomRight" >></Char>
</Key>
<Key Width="80" X="-150" Y="100" Height="80" FingerKeyIndex="6" Type="NORMAL" >
<Char Unicode="70" Position="TopLeft" >F</Char>
<Char Unicode="57" Position="TopRight" >9</Char>
<Char Unicode="102" Position="BottomLeft" >f</Char>
<Char Unicode="61" Position="BottomRight" >=</Char>
</Key>
<Key Width="80" X="-50" Y="100" Height="80" FingerKeyIndex="7" Type="NORMAL" >
<Char Unicode="81" Position="TopLeft" >Q</Char>
<Char Unicode="43" Position="TopRight" >+</Char>
<Char Unicode="113" Position="BottomLeft" >q</Char>
<Char Unicode="38" Position="BottomRight" >&amp;</Char>
</Key>
<Key Width="80" X="50" Y="100" Height="80" FingerKeyIndex="7" Type="NORMAL" >
<Char Unicode="7838" Position="TopLeft" ></Char>
<Char Unicode="8722" Position="TopRight" ></Char>
<Char Unicode="223" Position="BottomLeft" >ß</Char>
<Char Unicode="383" Position="BottomRight" >ſ</Char>
</Key>
<Key Width="80" X="150" Y="100" Height="80" FingerKeyIndex="7" Type="NORMAL" >
<Char Unicode="184" Position="TopLeft" >¸</Char>
<Char Unicode="733" Position="TopRight" >˝</Char>
<Char Unicode="180" Position="BottomLeft" >´</Char>
<Char Unicode="47" Position="BottomRight" >/</Char>
</Key>
<Key Width="80" X="-520" Y="200" Height="80" FingerKeyIndex="3" Type="NORMAL" >
<Char Unicode="79" Position="TopLeft" >O</Char>
<Char Unicode="8690" Position="TopRight" ></Char>
<Char Unicode="111" Position="BottomLeft" >o</Char>
<Char Unicode="42" Position="BottomRight" >*</Char>
</Key>
<Key Width="80" X="-420" Y="200" Height="80" FingerKeyIndex="4" Type="NORMAL" >
<Char Unicode="83" Position="TopLeft" >S</Char>
<Char Unicode="191" Position="TopRight" >¿</Char>
<Char Unicode="115" Position="BottomLeft" >s</Char>
<Char Unicode="63" Position="BottomRight" >?</Char>
</Key>
<Key Width="80" X="80" Y="200" Height="80" FingerKeyIndex="7" Type="NORMAL" >
<Char Unicode="89" Position="TopLeft" >Y</Char>
<Char Unicode="46" Position="TopRight" >.</Char>
<Char Unicode="121" Position="BottomLeft" >y</Char>
<Char Unicode="64" Position="BottomRight" >@</Char>
</Key>
<Key Width="80" X="-970" KeyText="M4" Y="300" Height="80" FingerKeyIndex="7" Type="OTHER" />
<Key Width="80" X="-450" Y="100" Height="80" FingerKeyIndex="4" Type="NORMAL" >
<Char Unicode="75" Position="TopLeft" >K</Char>
<Char Unicode="161" Position="TopRight" >¡</Char>
<Char Unicode="107" Position="BottomLeft" >k</Char>
<Char Unicode="33" Position="BottomRight" >!</Char>
</Key>
<Key Width="80" X="-770" Y="300" Height="80" FingerKeyIndex="1" Type="NORMAL" >
<Char Unicode="214" Position="TopLeft" >Ö</Char>
<Char Unicode="8677" Position="TopRight" ></Char>
<Char Unicode="246" Position="BottomLeft" >ö</Char>
<Char Unicode="36" Position="BottomRight" >$</Char>
</Key>
<Key Width="80" X="-670" Y="300" Height="80" FingerKeyIndex="2" Type="NORMAL" >
<Char Unicode="196" Position="TopLeft" >Ä</Char>
<Char Unicode="8671" Position="TopRight" ></Char>
<Char Unicode="228" Position="BottomLeft" >ä</Char>
<Char Unicode="124" Position="BottomRight" >|</Char>
</Key>
<Key Width="80" X="-570" Y="300" Height="80" FingerKeyIndex="3" Type="NORMAL" >
<Char Unicode="80" Position="TopLeft" >P</Char>
<Char Unicode="8626" Position="TopRight" ></Char>
<Char Unicode="112" Position="BottomLeft" >p</Char>
<Char Unicode="126" Position="BottomRight" >~</Char>
</Key>
<Key Width="80" X="-470" Y="300" Height="80" FingerKeyIndex="3" Type="NORMAL" >
<Char Unicode="90" Position="TopLeft" >Z</Char>
<Char Unicode="8630" Position="TopRight" ></Char>
<Char Unicode="122" Position="BottomLeft" >z</Char>
<Char Unicode="96" Position="BottomRight" >`</Char>
</Key>
<Key Width="80" X="-370" Y="300" Height="80" FingerKeyIndex="4" Type="NORMAL" >
<Char Unicode="66" Position="TopLeft" >B</Char>
<Char Unicode="58" Position="TopRight" >:</Char>
<Char Unicode="98" Position="BottomLeft" >b</Char>
<Char Unicode="43" Position="BottomRight" >+</Char>
</Key>
<Key Width="80" X="-270" Y="300" Height="80" FingerKeyIndex="4" Type="NORMAL" >
<Char Unicode="77" Position="TopLeft" >M</Char>
<Char Unicode="49" Position="TopRight" >1</Char>
<Char Unicode="109" Position="BottomLeft" >m</Char>
<Char Unicode="37" Position="BottomRight" >%</Char>
</Key>
<Key Width="80" X="-170" Y="300" Height="80" FingerKeyIndex="5" Type="NORMAL" >
<Char Unicode="8211" Position="TopLeft" ></Char>
<Char Unicode="50" Position="TopRight" >2</Char>
<Char Unicode="44" Position="BottomLeft" >,</Char>
<Char Unicode="34" Position="BottomRight" >"</Char>
</Key>
<Key Width="80" X="-70" Y="300" Height="80" FingerKeyIndex="6" Type="NORMAL" >
<Char Unicode="8226" Position="TopLeft" ></Char>
<Char Unicode="51" Position="TopRight" >3</Char>
<Char Unicode="46" Position="BottomLeft" >.</Char>
<Char Unicode="39" Position="BottomRight" >'</Char>
</Key>
<Key Width="80" X="30" Y="300" Height="80" FingerKeyIndex="7" Type="NORMAL" >
<Char Unicode="74" Position="TopLeft" >J</Char>
<Char Unicode="59" Position="TopRight" >;</Char>
<Char Unicode="106" Position="BottomLeft" >j</Char>
<Char Unicode="59" Position="BottomRight" >;</Char>
</Key>
<Key Width="80" X="180" KeyText="M3" Y="200" Height="80" Type="OTHER" />
<Key Width="110" X="150" KeyText="Menu" Y="400" Height="80" Type="OTHER" />
</Keys>
<Connections>
<KeyConnector KeyUnicode="8" TargetKeyIndex="33" ModifierIndex="11" />
<KeyConnector KeyUnicode="13" TargetKeyIndex="9" />
<KeyConnector KeyUnicode="32" TargetKeyIndex="15" />
<KeyConnector KeyUnicode="33" TargetKeyIndex="48" ModifierIndex="17" />
<KeyConnector KeyUnicode="34" TargetKeyIndex="55" ModifierIndex="17" />
<KeyConnector KeyUnicode="35" TargetKeyIndex="37" ModifierIndex="17" />
<KeyConnector KeyUnicode="36" TargetKeyIndex="25" ModifierIndex="16" />
<KeyConnector KeyUnicode="38" TargetKeyIndex="41" ModifierIndex="17" />
<KeyConnector KeyUnicode="39" TargetKeyIndex="56" ModifierIndex="17" />
<KeyConnector KeyUnicode="40" TargetKeyIndex="4" ModifierIndex="17" />
<KeyConnector KeyUnicode="41" TargetKeyIndex="5" ModifierIndex="17" />
<KeyConnector KeyUnicode="42" TargetKeyIndex="44" ModifierIndex="17" />
<KeyConnector KeyUnicode="44" TargetKeyIndex="55" />
<KeyConnector KeyUnicode="45" TargetKeyIndex="30" />
<KeyConnector KeyUnicode="46" TargetKeyIndex="56" />
<KeyConnector KeyUnicode="47" TargetKeyIndex="1" ModifierIndex="17" />
<KeyConnector KeyUnicode="48" TargetKeyIndex="29" />
<KeyConnector KeyUnicode="49" TargetKeyIndex="20" />
<KeyConnector KeyUnicode="50" TargetKeyIndex="21" />
<KeyConnector KeyUnicode="51" TargetKeyIndex="22" />
<KeyConnector KeyUnicode="52" TargetKeyIndex="23" />
<KeyConnector KeyUnicode="53" TargetKeyIndex="24" />
<KeyConnector KeyUnicode="54" TargetKeyIndex="25" />
<KeyConnector KeyUnicode="55" TargetKeyIndex="26" />
<KeyConnector KeyUnicode="56" TargetKeyIndex="27" />
<KeyConnector KeyUnicode="57" TargetKeyIndex="28" />
<KeyConnector KeyUnicode="58" TargetKeyIndex="7" ModifierIndex="17" />
<KeyConnector KeyUnicode="59" TargetKeyIndex="57" ModifierIndex="17" />
<KeyConnector KeyUnicode="60" TargetKeyIndex="38" ModifierIndex="17" />
<KeyConnector KeyUnicode="61" TargetKeyIndex="40" ModifierIndex="17" />
<KeyConnector KeyUnicode="62" TargetKeyIndex="39" ModifierIndex="17" />
<KeyConnector KeyUnicode="63" TargetKeyIndex="45" ModifierIndex="17" />
<KeyConnector KeyUnicode="64" TargetKeyIndex="46" ModifierIndex="17" />
<KeyConnector KeyUnicode="65" TargetKeyIndex="2" ModifierIndex="16" />
<KeyConnector KeyUnicode="66" TargetKeyIndex="53" ModifierIndex="16" />
<KeyConnector KeyUnicode="67" TargetKeyIndex="35" ModifierIndex="16" />
<KeyConnector KeyUnicode="68" TargetKeyIndex="7" ModifierIndex="16" />
<KeyConnector KeyUnicode="69" TargetKeyIndex="3" ModifierIndex="16" />
<KeyConnector KeyUnicode="70" TargetKeyIndex="40" ModifierIndex="16" />
<KeyConnector KeyUnicode="71" TargetKeyIndex="39" ModifierIndex="16" />
<KeyConnector KeyUnicode="72" TargetKeyIndex="38" ModifierIndex="16" />
<KeyConnector KeyUnicode="73" TargetKeyIndex="1" ModifierIndex="16" />
<KeyConnector KeyUnicode="74" TargetKeyIndex="57" ModifierIndex="16" />
<KeyConnector KeyUnicode="75" TargetKeyIndex="48" ModifierIndex="16" />
<KeyConnector KeyUnicode="76" TargetKeyIndex="34" ModifierIndex="16" />
<KeyConnector KeyUnicode="77" TargetKeyIndex="54" ModifierIndex="16" />
<KeyConnector KeyUnicode="78" TargetKeyIndex="4" ModifierIndex="16" />
<KeyConnector KeyUnicode="79" TargetKeyIndex="44" ModifierIndex="16" />
<KeyConnector KeyUnicode="80" TargetKeyIndex="51" ModifierIndex="16" />
<KeyConnector KeyUnicode="81" TargetKeyIndex="41" ModifierIndex="16" />
<KeyConnector KeyUnicode="82" TargetKeyIndex="5" ModifierIndex="16" />
<KeyConnector KeyUnicode="83" TargetKeyIndex="45" ModifierIndex="16" />
<KeyConnector KeyUnicode="84" TargetKeyIndex="6" ModifierIndex="16" />
<KeyConnector KeyUnicode="85" TargetKeyIndex="0" ModifierIndex="16" />
<KeyConnector KeyUnicode="86" TargetKeyIndex="33" ModifierIndex="16" />
<KeyConnector KeyUnicode="87" TargetKeyIndex="36" ModifierIndex="16" />
<KeyConnector KeyUnicode="88" TargetKeyIndex="32" ModifierIndex="16" />
<KeyConnector KeyUnicode="89" TargetKeyIndex="46" ModifierIndex="16" />
<KeyConnector KeyUnicode="90" TargetKeyIndex="52" ModifierIndex="16" />
<KeyConnector KeyUnicode="91" TargetKeyIndex="34" ModifierIndex="17" />
<KeyConnector KeyUnicode="92" TargetKeyIndex="0" ModifierIndex="17" />
<KeyConnector KeyUnicode="93" TargetKeyIndex="35" ModifierIndex="17" />
<KeyConnector KeyUnicode="94" TargetKeyIndex="36" ModifierIndex="17" />
<KeyConnector KeyUnicode="95" TargetKeyIndex="33" ModifierIndex="17" />
<KeyConnector KeyUnicode="96" TargetKeyIndex="52" ModifierIndex="17" />
<KeyConnector KeyUnicode="97" TargetKeyIndex="2" />
<KeyConnector KeyUnicode="98" TargetKeyIndex="53" />
<KeyConnector KeyUnicode="99" TargetKeyIndex="35" />
<KeyConnector KeyUnicode="100" TargetKeyIndex="7" />
<KeyConnector KeyUnicode="101" TargetKeyIndex="3" />
<KeyConnector KeyUnicode="102" TargetKeyIndex="40" />
<KeyConnector KeyUnicode="103" TargetKeyIndex="39" />
<KeyConnector KeyUnicode="104" TargetKeyIndex="38" />
<KeyConnector KeyUnicode="105" TargetKeyIndex="1" />
<KeyConnector KeyUnicode="106" TargetKeyIndex="57" />
<KeyConnector KeyUnicode="107" TargetKeyIndex="48" />
<KeyConnector KeyUnicode="108" TargetKeyIndex="34" />
<KeyConnector KeyUnicode="109" TargetKeyIndex="54" />
<KeyConnector KeyUnicode="110" TargetKeyIndex="4" />
<KeyConnector KeyUnicode="111" TargetKeyIndex="44" />
<KeyConnector KeyUnicode="112" TargetKeyIndex="51" />
<KeyConnector KeyUnicode="113" TargetKeyIndex="41" />
<KeyConnector KeyUnicode="114" TargetKeyIndex="5" />
<KeyConnector KeyUnicode="115" TargetKeyIndex="45" />
<KeyConnector KeyUnicode="116" TargetKeyIndex="6" />
<KeyConnector KeyUnicode="117" TargetKeyIndex="0" />
<KeyConnector KeyUnicode="118" TargetKeyIndex="33" />
<KeyConnector KeyUnicode="119" TargetKeyIndex="36" />
<KeyConnector KeyUnicode="120" TargetKeyIndex="32" />
<KeyConnector KeyUnicode="121" TargetKeyIndex="46" />
<KeyConnector KeyUnicode="122" TargetKeyIndex="52" />
<KeyConnector KeyUnicode="123" TargetKeyIndex="2" ModifierIndex="17" />
<KeyConnector KeyUnicode="125" TargetKeyIndex="3" ModifierIndex="17" />
<KeyConnector KeyUnicode="126" TargetKeyIndex="51" ModifierIndex="17" />
<KeyConnector KeyUnicode="161" TargetKeyIndex="48" ModifierIndex="47" />
<KeyConnector KeyUnicode="162" TargetKeyIndex="25" ModifierIndex="17" />
<KeyConnector KeyUnicode="163" TargetKeyIndex="25" ModifierIndex="47" />
<KeyConnector KeyUnicode="164" TargetKeyIndex="26" ModifierIndex="47" />
<KeyConnector KeyUnicode="165" TargetKeyIndex="26" ModifierIndex="17" />
<KeyConnector KeyUnicode="167" TargetKeyIndex="21" ModifierIndex="16" />
<KeyConnector KeyUnicode="170" TargetKeyIndex="20" ModifierIndex="47" />
<KeyConnector KeyUnicode="171" TargetKeyIndex="24" ModifierIndex="16" />
<KeyConnector KeyUnicode="176" TargetKeyIndex="20" ModifierIndex="16" />
<KeyConnector KeyUnicode="178" TargetKeyIndex="21" ModifierIndex="17" />
<KeyConnector KeyUnicode="179" TargetKeyIndex="22" ModifierIndex="17" />
<KeyConnector KeyUnicode="183" TargetKeyIndex="24" ModifierIndex="47" />
<KeyConnector KeyUnicode="185" TargetKeyIndex="20" ModifierIndex="17" />
<KeyConnector KeyUnicode="186" TargetKeyIndex="21" ModifierIndex="47" />
<KeyConnector KeyUnicode="187" TargetKeyIndex="23" ModifierIndex="16" />
<KeyConnector KeyUnicode="191" TargetKeyIndex="45" ModifierIndex="47" />
<KeyConnector KeyUnicode="196" TargetKeyIndex="50" ModifierIndex="16" />
<KeyConnector KeyUnicode="214" TargetKeyIndex="49" ModifierIndex="16" />
<KeyConnector KeyUnicode="220" TargetKeyIndex="37" ModifierIndex="16" />
<KeyConnector KeyUnicode="223" TargetKeyIndex="42" />
<KeyConnector KeyUnicode="228" TargetKeyIndex="50" />
<KeyConnector KeyUnicode="246" TargetKeyIndex="49" />
<KeyConnector KeyUnicode="252" TargetKeyIndex="37" />
<KeyConnector KeyUnicode="383" TargetKeyIndex="42" ModifierIndex="17" />
<KeyConnector KeyUnicode="7838" TargetKeyIndex="42" ModifierIndex="16" />
<KeyConnector KeyUnicode="8211" TargetKeyIndex="55" ModifierIndex="16" />
<KeyConnector KeyUnicode="8212" TargetKeyIndex="30" ModifierIndex="16" />
<KeyConnector KeyUnicode="8216" TargetKeyIndex="28" ModifierIndex="17" />
<KeyConnector KeyUnicode="8217" TargetKeyIndex="29" ModifierIndex="17" />
<KeyConnector KeyUnicode="8218" TargetKeyIndex="27" ModifierIndex="17" />
<KeyConnector KeyUnicode="8220" TargetKeyIndex="28" ModifierIndex="16" />
<KeyConnector KeyUnicode="8221" TargetKeyIndex="29" ModifierIndex="16" />
<KeyConnector KeyUnicode="8222" TargetKeyIndex="27" ModifierIndex="16" />
<KeyConnector KeyUnicode="8226" TargetKeyIndex="56" ModifierIndex="16" />
<KeyConnector KeyUnicode="8230" TargetKeyIndex="32" ModifierIndex="17" />
<KeyConnector KeyUnicode="8249" TargetKeyIndex="24" ModifierIndex="17" />
<KeyConnector KeyUnicode="8250" TargetKeyIndex="23" ModifierIndex="17" />
<KeyConnector KeyUnicode="8364" TargetKeyIndex="26" ModifierIndex="16" />
<KeyConnector KeyUnicode="8467" TargetKeyIndex="22" ModifierIndex="16" />
<KeyConnector KeyUnicode="8470" TargetKeyIndex="22" ModifierIndex="47" />
<KeyConnector KeyUnicode="8722" TargetKeyIndex="42" ModifierIndex="47" />
<KeyConnector KeyUnicode="8942" TargetKeyIndex="32" ModifierIndex="47" />
<KeyConnector KeyUnicode="9088" TargetKeyIndex="36" ModifierIndex="47" />
</Connections>
</KTouchKeyboard>

View File

@ -1,2 +1,2 @@
Siehe Webseite:
https://neo-layout.org/Lernen/SortWords/
Siehe Wiki:
http://wiki.neo-layout.org/wiki/SortWords

File diff suppressed because it is too large Load Diff

View File

@ -836,85 +836,85 @@ wirbt wobei wohnungsbau wunderbar zagreb zb zentralbank zugegeben
===b===
zusammenarbeit zusammenarbeiten zusammenbruch zweieinhalb
===ä===
abhängig abhängigkeit ähnlich ähnliche ähnlichen ähnlicher ähnliches
aktionäre aktionären allmählich älter ältere älteren älterer älteste
ältesten ämter ändern ändert änderte änderung änderungen ängste
anhänger anhängern annähernd annäherung ansätze anschläge anschlägen
abhängig abhängigkeit aktionäre aktionären allmählich anhänger anhängern
annähernd annäherung anschläge anschlägen ansätze anträge anwälte
arbeitsplätze arbeitsplätzen atmosphäre ausgewählt ausgewählte
ausgewählten ausländer ausländern ausländische ausländischen
===ä===
anträge anwälte ära arbeitsplätze arbeitsplätzen ärger ärgert ärzte
ärzten ästhetik atmosphäre ausgewählt ausgewählte ausgewählten ausländer
ausländern ausländische ausländischen ausländischer auswählen autorität
bände bäume bäumen beeinträchtigt behält beiträge beiträgen berät
ausländischer auswählen autorität beeinträchtigt behält beiträge
beiträgen berät beschränken beschränkt beschränkung beschädigt bestände
bestätigen bestätigt bestätigte bestätigten bestätigung beträchtlich
beträge beträgt bewährt bewährung bewältigen blätter blättern
===ä===
beschädigt beschränken beschränkt beschränkung bestände bestätigen
bestätigt bestätigte bestätigten bestätigung beträchtlich beträge
beträgt bewährt bewährung bewältigen blätter blättern buchstäblich
bundesländer bundesländern bundespräsident bundespräsidenten dänemark
buchstäblich bundesländer bundesländern bundespräsident bundespräsidenten
bände bäume bäumen darmstädter demnächst drängen drängt dänemark
dänische dänischen eigenständige eingeräumt eingeschränkt einschränkung
einschränkungen einschätzung einsätze einträge einwände engländer
===ä===
dänische dänischen darmstädter demnächst drängen drängt eigenständige
eingeräumt eingeschränkt einsätze einschätzung einschränkung
einschränkungen einträge einwände engländer enthält entschädigung
enttäuscht enttäuschung entwicklungsländer entwicklungsländern ergänzen
enthält entschädigung enttäuscht enttäuschung entwicklungsländer
entwicklungsländern ergänzen ergänzt ergänzte ergänzung erhält
erhältlich erklären erklärt erklärte erklärten erklärung erklärungen
erläutert erläuterte ernährung erträge erwähnt erzählen erzähler
===ä===
ergänzt ergänzte ergänzung erhält erhältlich erklären erklärt erklärte
erklärten erklärung erklärungen erläutert erläuterte ernährung erträge
erwähnt erzählen erzähler erzählt erzählte erzählung erzählungen
europäer europäische europäischen europäischer gäbe gängigen gänzlich
erzählt erzählte erzählung erzählungen europäer europäische europäischen
europäischer gaststätte gebäude gebäuden gebäudes gedrängt gedächtnis
gegenstände gegenwärtig gegenwärtige gegenwärtigen gehälter geklärt
gelände gemälde generalsekretär geprägt geprägten gepäck gerät geräte
===ä===
gärten gäste gästen gaststätte geändert gebäude gebäuden gebäudes
gedächtnis gedrängt gegenstände gegenwärtig gegenwärtige gegenwärtigen
gehälter geklärt gelände gemälde generalsekretär gepäck geprägt
geprägten gerät geräte geräten geräumt geschätzt geschätzten gespräch
geräten geräumt geschätzt geschätzten gespräch gespräche gesprächen
gesprächspartner geständnis gestärkt getränke gewählt gewählte gewählten
gewähren gewährleisten gewährleistet gewährt gezählt geändert gläubiger
grundsätze grundsätzlich grundsätzliche gäbe gängigen gänzlich gärten
===ä===
gespräche gesprächen gesprächspartner geständnis gestärkt getränke
gewählt gewählte gewählten gewähren gewährleisten gewährleistet gewährt
gezählt gläubiger grundsätze grundsätzlich grundsätzliche hält hände
händen händler händlern hängen hängt härte härter hätte hätten
===ä===
hauptsächlich häuser häusern holländer humanitäre identität intensität
kälte käme kämen kanäle kapazität kapazitäten kapitän käse
gäste gästen hauptsächlich holländer humanitäre hält hände händen
händler händlern hängen hängt härte härter hätte hätten häuser
häusern identität intensität kanäle kapazität kapazitäten kapitän
kindergärten kläger klären klärung kontinuität krankenhäuser
krankenhäusern kriminalität lächeln lächelt lächerlich läden lädt lägen
===ä===
länder ländern ländlichen länge länger längere längerem längeren
längerer längst lärm lässt legendären mächtig mächtige mächtigen
mädchen mailänder mängel männer männern männliche männlichen märchen
märkte märkten märz matthäus militär militärisch militärische
krankenhäusern kriminalität kälte käme kämen käse legendären lächeln
lächelt lächerlich läden lädt lägen länder ländern ländlichen länge
länger längere längerem längeren längerer längst lärm lässt mailänder
matthäus militär militärisch militärische militärischen militärs
===ä===
militärischen militärs ministerpräsident ministerpräsidenten
mittelständische mittelständischen mobilität nächste nächsten nächster
nächstes nächte nächtlichen nachträglich nähe näher nähere nähert
nämlich niederländer niederländische niederländischen niedersächsische
ministerpräsident ministerpräsidenten mittelständische mittelständischen
mobilität mächtig mächtige mächtigen mädchen mängel männer männern
männliche männlichen märchen märkte märkten märz nachträglich
niederländer niederländische niederländischen niedersächsische
===ä===
niedersächsischen normalität osteuropäischen pädagogen palästinenser
palästinensern palästinensische palästinensischen parkplätze phänomen
plädiert plädierte pläne plänen plätze plätzen populär popularität
porträt präsent präsentation präsentieren präsentiert präsentierte
niedersächsischen normalität nächste nächsten nächster nächstes nächte
nächtlichen nähe näher nähere nähert nämlich osteuropäischen
palästinenser palästinensern palästinensische palästinensischen parkplätze
phänomen plädiert plädierte pläne plänen plätze plätzen popularität
===ä===
präsentierten präsenz präsident präsidenten präsidentin präsidium
präzise priorität räder rät rätsel räuber räume räumen räumt räumte
realität regierungspräsidium regulären repräsentanten repräsentiert
rumänien sächsischen sämtliche sänger sängerin sätze sätzen schäden
populär porträt priorität präsent präsentation präsentieren präsentiert
präsentierte präsentierten präsenz präsident präsidenten präsidentin
präsidium präzise pädagogen realität regierungspräsidium regulären
repräsentanten repräsentiert rumänien räder rät rätsel räuber räume
===ä===
schätzen schätzt schätzung schätzungen schätzungsweise schäuble schläge
schlägt schwäche schwächen schwächer schwärmt selbständig
selbständigkeit solidarität spät späten später spätere späteren
spätestens spektakuläre spektakulären staatsanwälte staatspräsident
räumen räumt räumte schläge schlägt schwäche schwächen schwächer
schwärmt schäden schätzen schätzt schätzung schätzungen schätzungsweise
schäuble selbständig selbständigkeit solidarität spektakuläre
spektakulären spät späten später spätere späteren spätestens
===ä===
staatspräsidenten staatssekretär stabilität städte städten städtische
städtischen stämme ständig ständige ständigen stärke stärken stärker
stärkere stärkeren stärkste stärksten stärkung täglich tägliche
täglichen tänzer täter tätern tätig tätigen tätigkeit tätigkeiten
staatsanwälte staatspräsident staatspräsidenten staatssekretär stabilität
städte städten städtische städtischen stämme ständig ständige ständigen
stärke stärken stärker stärkere stärkeren stärkste stärksten stärkung
sächsischen sämtliche sänger sängerin sätze sätzen tatsächlich
===ä===
tatsächlich tatsächliche tatsächlichen träger trägt tränen träume
träumen träumt umsätze umstände umständen unabhängig unabhängige
tatsächliche tatsächlichen träger trägt tränen träume träumen träumt
täglich tägliche täglichen tänzer täter tätern tätig tätigen tätigkeit
tätigkeiten umstände umständen umsätze unabhängig unabhängige
unabhängigen unabhängigkeit ungeklärt unlängst unterhält uspräsident
wächst wählen wähler wählern wählt wählte während währung währungen
===ä===
währungsunion wälder wände wänden wäre wären wärme werkstätten zählen
zähler zählern zählt zählte zählten zähne zugänglich zulässig zunächst
zusammenhänge zusätze zusätzlich zusätzliche zusätzlichen zusätzlicher
zustände zuständig zuständige zuständigen zuständigkeit
werkstätten wächst wählen wähler wählern wählt wählte während währung
währungen währungsunion wälder wände wänden wäre wären wärme
zugänglich zulässig zunächst zusammenhänge zustände zuständig zuständige
zuständigen zuständigkeit zusätze zusätzlich zusätzliche zusätzlichen
===ä===
zusätzlicher zählen zähler zählern zählt zählte zählten zähne ähnlich
ähnliche ähnlichen ähnlicher ähnliches älter ältere älteren älterer
älteste ältesten ämter ändern ändert änderte änderung änderungen
ängste ära ärger ärgert ärzte ärzten ästhetik
===,===
===v===
@ -945,68 +945,68 @@ services serviert sinnvoll sinnvolle souverän souveränität soviel
===v===
sozialversicherung stadtverordnetenversammlung stadtverwaltung stellvertretende
stellvertretenden stellvertretender stellvertreter subventionen sv
titelverteidiger tv universität universitäten unverändert unverständlich
vage van variante varianten vater väter vaters vatikan vchr veba vehement
titelverteidiger tv universität universitäten unverständlich unverändert
vage van variante varianten vater vaters vatikan vchr veba vehement venedig
===v===
venedig verabschieden verabschiedet verabschiedete verabschiedung verändern
verändert veränderte veränderten veränderung veränderungen verankert
verabschieden verabschiedet verabschiedete verabschiedung verankert
veranschlagt veranstalten veranstalter veranstaltet veranstaltung
veranstaltungen verantworten verantwortlich verantwortlichen verantwortung
verarbeiten verarbeitet verarbeitung verband verbandes verbergen verbessern
===v===
verarbeiten verarbeitet verarbeitung verärgert verband verbände verbänden
verbandes verbergen verbessern verbessert verbesserte verbesserten verbesserung
verbesserungen verbieten verbietet verbinden verbindet verbindung verbindungen
verbirgt verbliebenen verborgen verbot verboten verbotenen verbracht verbrachte
verbessert verbesserte verbesserten verbesserung verbesserungen verbieten
verbietet verbinden verbindet verbindung verbindungen verbirgt verbliebenen
verborgen verbot verboten verbotenen verbracht verbrachte verbrannt verbrauch
verbraucher verbraucht verbrechen verbreiten verbreitet verbreitete
===v===
verbrannt verbrauch verbraucher verbraucht verbrechen verbreiten verbreitet
verbreitete verbreiteten verbreitung verbringen verbuchen verbucht verbund
verbunden verbundene verbundenen verdacht verdachts verdammt verdanken verdankt
verdienen verdienst verdienste verdient verdiente verdoppeln verdoppelt
verbreiteten verbreitung verbringen verbuchen verbucht verbund verbunden
verbundene verbundenen verbände verbänden verdacht verdachts verdammt
verdanken verdankt verdienen verdienst verdienste verdient verdiente verdoppeln
verdoppelt verdrängt verein vereinbaren vereinbart vereinbarte vereinbarten
===v===
verdrängt verein vereinbaren vereinbart vereinbarte vereinbarten vereinbarung
vereinbarungen vereine vereinen vereinigten vereinigung vereins vereint
vereinten vergabe vergangen vergangene vergangenen vergangener vergangenheit
vergeben vergebens vergeblich vergessen vergewaltigung vergleich vergleichbar
vereinbarung vereinbarungen vereine vereinen vereinigten vereinigung vereins
vereint vereinten vergabe vergangen vergangene vergangenen vergangener
vergangenheit vergeben vergebens vergeblich vergessen vergewaltigung vergleich
vergleichbar vergleichbaren vergleichen vergleichsweise verglichen verhalten
===v===
vergleichbaren vergleichen vergleichsweise verglichen verhält verhalten
verhältnis verhältnisse verhältnissen verhandeln verhandelt verhandlung
verhandlungen verhängt verheiratet verhindern verhindert verkehr
verkehrsminister verlag verlage verlagert verlagerung verlangen verlängern
===v===
verlängert verlängerung verlangt verlangte verlangten verlassen verlautete
verlegen verleger verlegt verlegung verleihen verleiht verletzt verletzte
verletzten verletzung verletzungen verliebt verliehen verlieren verlierer
verliert verlor verloren verlorenen verlust verluste verlusten vermag
verhandeln verhandelt verhandlung verhandlungen verheiratet verhindern
verhindert verhält verhältnis verhältnisse verhältnissen verhängt verkehr
verkehrsminister verlag verlage verlagert verlagerung verlangen verlangt
verlangte verlangten verlassen verlautete verlegen verleger verlegt verlegung
===v===
verleihen verleiht verletzt verletzte verletzten verletzung verletzungen
verliebt verliehen verlieren verlierer verliert verlor verloren verlorenen
verlust verluste verlusten verlängern verlängert verlängerung vermag
vermarktung vermehrt vermeiden vermeintlich vermeintlichen vermieden vermieter
===v===
vermitteln vermittelt vermittler vermittlung vermuten vermutet vermutlich
vermutung vernachlässigt vernehmen vernehmung vernichtet vernichtung
verordnung verrat verrät verraten verringern verringert verringerung versagen
verordnung verrat verraten verringern verringert verringerung verrät versagen
versagt versammelt versammelten versammlung verschickt verschieben verschiebung
===v===
versagt versammelt versammelten versammlung versäumt verschickt verschieben
verschiebung verschiedene verschiedenen verschiedener verschiedensten
verschlechtert verschoben verschont verschwand verschwinden verschwindet
verschwunden versehen versetzen versetzt versicherer versichern versichert
verschiedene verschiedenen verschiedener verschiedensten verschlechtert
verschoben verschont verschwand verschwinden verschwindet verschwunden versehen
versetzen versetzt versicherer versichern versichert versicherte versicherten
versicherung versicherungen version versionen versorgen versorgt versorgung
===v===
versicherte versicherten versicherung versicherungen version versionen
versorgen versorgt versorgung verspätung versprach versprechen verspricht
versprochen verstand verstanden verständigen verständigt verständigung
verständlich verständnis verstärken verstärkt verstärkte verstärkten
versprach versprechen verspricht versprochen verspätung verstand verstanden
verstecken versteckt verstehe verstehen versteht verstorbenen verständigen
verständigt verständigung verständlich verständnis verstärken verstärkt
verstärkte verstärkten verstärkung versuch versuche versuchen versucht
===v===
verstärkung verstecken versteckt verstehe verstehen versteht verstorbenen
versuch versuche versuchen versucht versuchte versuchten vertagt verteidigen
verteidiger verteidigt verteidigte verteidigung verteidigungsminister
verteidigungsministerium verteilen verteilt verteilung vertrag verträge
versuchte versuchten versäumt vertagt verteidigen verteidiger verteidigt
verteidigte verteidigung verteidigungsminister verteidigungsministerium
verteilen verteilt verteilung vertrag vertrages vertrat vertrauen vertraut
vertreiben vertreibung vertreten vertreter vertretern vertretung vertrieb
===v===
vertrages vertrat vertrauen vertraut vertreiben vertreibung vertreten vertreter
vertretern vertretung vertrieb vertrieben vertritt verunsichert verursachen
verursacht verurteilt verurteilte verurteilung verwalten verwaltet verwaltung
verwaltungsgericht verwandeln verwandelt verwandt verwandten verwehrt
vertrieben vertritt verträge verunsichert verursachen verursacht verurteilt
verurteilte verurteilung verwalten verwaltet verwaltung verwaltungsgericht
verwandeln verwandelt verwandt verwandten verwehrt verweigern verweigert
verweisen verweist verwenden verwendet verwendeten verwendung verwertung
===v===
verweigern verweigert verweisen verweist verwenden verwendet verwendeten
verwendung verwertung verwickelt verwies verwiesen verwirklichen verwirklicht
verwirklichung verwirrung verwundert verzeichnen verzeichnet verzeichnete
verzicht verzichten verzichtet verzichtete veto vgl via viag video videos viel
verwickelt verwies verwiesen verwirklichen verwirklicht verwirklichung
verwirrung verwundert verzeichnen verzeichnet verzeichnete verzicht verzichten
verzichtet verzichtete verändern verändert veränderte veränderten
veränderung veränderungen verärgert veto vgl via viag video videos viel
===v===
viele vielen vieler vieles vielleicht vielmehr vielzahl vier viermal vierte
viertel vierten vierzehn vierzig vietnam viktor vilbel villa viren virtuelle
@ -1018,22 +1018,22 @@ volumen vom von voneinander vor vorab vorabend voran vorangegangenen voraus
vorausgesetzt voraussetzung voraussetzungen voraussichtlich vorbehalte
vorbehalten vorbei vorbereiten vorbereitet vorbereitung vorbereitungen vorbild
===v===
vorbilder vordergrund vorerst vorgaben vorgang vorgänge vorgängen vorgänger
vorgehen vorgehensweise vorgelegt vorgelegten vorgenommen vorgeschlagen
vorgeschrieben vorgesehen vorgesehene vorgesehenen vorgestellt vorgetragen
vorhaben vorhanden vorhandene vorhandenen vorhang vorher vorigen vorkommen
vorbilder vordergrund vorerst vorgaben vorgang vorgehen vorgehensweise
vorgelegt vorgelegten vorgenommen vorgeschlagen vorgeschrieben vorgesehen
vorgesehene vorgesehenen vorgestellt vorgetragen vorgänge vorgängen
vorgänger vorhaben vorhanden vorhandene vorhandenen vorhang vorher vorigen
===v===
vorlage vorlegen vorliebe vorliegen vorliegenden vorliegt vormittag vorn vorne
vornehmen vornehmlich vornherein vorrang vorrangig vorschlag vorschläge
vorschlägen vorsicht vorsichtig vorsieht vorsitz vorsitzende vorsitzenden
vorsitzender vorsorglich vorsprung vorstand vorstandsmitglied vorstandssprecher
vorkommen vorlage vorlegen vorliebe vorliegen vorliegenden vorliegt vormittag
vorn vorne vornehmen vornehmlich vornherein vorrang vorrangig vorschlag
vorschläge vorschlägen vorsicht vorsichtig vorsieht vorsitz vorsitzende
vorsitzenden vorsitzender vorsorglich vorsprung vorstand vorstandsmitglied
===v===
vorstandsvorsitzende vorstandsvorsitzender vorstellbar vorstellen vorstellung
vorstellungen vortag vorteil vorteile vortrag vorträge vorurteile vorweisen
vorwiegend vorzeitig vorzubereiten vorzunehmen votum vulkan vw vwd wertvolle
wiedervereinigung wieviel wovon zivile zivilen zivilisation zivilisten
vorstandssprecher vorstandsvorsitzende vorstandsvorsitzender vorstellbar
vorstellen vorstellung vorstellungen vortag vorteil vorteile vortrag vorträge
vorurteile vorweisen vorwiegend vorzeitig vorzubereiten vorzunehmen votum
vulkan vw vwd väter wertvolle wiedervereinigung wieviel wovon zivile zivilen
===v===
zuversicht zuversichtlich zuviel zuvor
zivilisation zivilisten zuversicht zuversichtlich zuviel zuvor
===f===
abfahrt abfall abfälle abgelaufenen abgeschafft ablauf abschaffung adolf
affäre afghanistan afp afrika afrikanischen afrikas aktiengesellschaft alfred
@ -1051,8 +1051,8 @@ auflage auflagen aufmerksam aufmerksamkeit aufnahme aufnahmen aufnehmen
aufrechterhalten aufregung aufruf aufrufen aufs aufschrift aufschwung aufsehen
===f===
aufsicht aufsichtsrat aufstand aufsteiger aufstellen aufstellung aufstieg
auftakt auftauchen aufteilung auftrag aufträge aufträgen auftraggeber
auftragseingang auftreten auftritt auftritte aufwand aufweisen aufwendungen
auftakt auftauchen aufteilung auftrag auftraggeber auftragseingang auftreten
auftritt auftritte aufträge aufträgen aufwand aufweisen aufwendungen
aufzeichnungen aufzubauen aufzugeben aufzunehmen ausfall ausfallen ausflug
===f===
ausgefallen ausgeliefert auskunft auslieferung ausverkauft autofahrer bahnhof
@ -1060,8 +1060,8 @@ basf bauwirtschaft beauftragt bedarf beeinflussen befand befanden befassen
befehl befinden befindet befindlichen befragt befragten befragung befreien
befreit befreiung befunden begreifen begriff begriffe begriffen beifall
===f===
beihilfe bekämpfen bekämpft bekämpfung bekräftigt bekräftigte belaufen
beläuft belegschaft bereitschaft beruf berufe berufen berufliche beruflichen
beihilfe bekräftigt bekräftigte bekämpfen bekämpft bekämpfung belaufen
belegschaft beläuft bereitschaft beruf berufe berufen berufliche beruflichen
beruft berufung beschäftigen beschäftigt beschäftigte beschäftigten
beschäftigung bestenfalls bestraft betreffen betreffenden betrifft betroffen
===f===
@ -1070,154 +1070,154 @@ bischof botschaft botschaften botschafter brief briefe briefen
bundesanwaltschaft bundesfinanzminister bundesgerichtshof
bundesverfassungsgericht bundesverfassungsgerichts bundeswirtschaftsminister
===f===
cdufraktion chef chefredakteur chefs darauf daraufhin darf dauerhaft definieren
definiert definierten definition defizit defizite detlef dfb dialogfenster
differenz differenzen dorf drauf durfte durften ebenfalls effekt effekte
effektiv effizienz ehefrau eigenschaft eigenschaften einfach einfache einfachen
cafà cdufraktion chef chefredakteur chefs darauf daraufhin darf dauerhaft
definieren definiert definierten definition defizit defizite detlef dfb
dialogfenster differenz differenzen dorf drauf durfte durften ebenfalls effekt
effekte effektiv effizienz ehefrau eigenschaft eigenschaften einfach einfache
===f===
einfacher einfallen einfluss eingestuft eingetroffen eingreifen eingriff
eingriffe einkauf einzelfall elf elfriede empfahl empfang empfangen empfänger
einfachen einfacher einfallen einfluss eingestuft eingetroffen eingreifen
eingriff eingriffe einkauf einzelfall elf elfriede empfahl empfang empfangen
empfehlen empfehlung empfehlungen empfiehlt empfinden empfindet empfohlen
empfunden entfallen entfällt entfalten entfernen entfernt entfernten
empfunden empfänger entfallen entfalten entfernen entfernt entfernten
===f===
entfernung entfielen entwicklungshilfe entworfen entwurf erfahren erfährt
entfernung entfielen entfällt entwicklungshilfe entworfen entwurf erfahren
erfahrung erfahrungen erfassen erfassung erfinder erfindung erfolg erfolge
erfolgen erfolglos erfolgreich erfolgreiche erfolgreichen erfolgreicher
erfolgreichsten erfolgt erfolgte erforderlich erforderliche erforderlichen
===f===
erfordert erforschung erfreulich erfreut erfuhr erfunden erfurt ergreifen
ergriffen erhoffen erhofft ermittlungsverfahren ernsthaft ernsthafte
erfordert erforschung erfreulich erfreut erfuhr erfunden erfurt erfährt
ergreifen ergriffen erhoffen erhofft ermittlungsverfahren ernsthaft ernsthafte
erwirtschaftet erzbischof europameisterschaft fabrik fabriken fach
fachhochschule fachleute fachleuten fähig fähigkeit fähigkeiten fahne fahnen
===f===
fahrbahn fahren fahrer fahrgäste fahrrad fahrt fährt fahrten fahrzeug
fahrzeuge fahrzeugen fakten faktor faktoren fall falle fälle fallen fällen
fällig falls fällt falsch falsche falschen familie familien fand fanden
fangen fängt fans farbe farben faschismus fassade fassen fassung fast
fachhochschule fachleute fachleuten fahne fahnen fahrbahn fahren fahrer
===f===
fahrgäste fahrrad fahrt fahrten fahrzeug fahrzeuge fahrzeugen fakten faktor
faktoren fall falle fallen falls falsch falsche falschen familie familien fand
fanden fangen fans farbe farben faschismus fassade fassen fassung fast
faszination fasziniert faust favorit favoriten fazit fc fdp februar fehle
===f===
fehlen fehlende fehlenden fehler fehlern fehlt fehlte fehlten feier feiern
feiert feierte feierten fein feind feinde feine feinen feld felder feldern
fenster fenstern ferien fern ferne fernen ferner fernsehen fernsehens fernseher
===f===
fernsehsender ferrari fertig fertiggestellt fertigstellung fertigung fest feste
===f===
festen fester festgehalten festgelegt festgelegten festgenommen festgeschrieben
festgestellt festhalten festival festivals festlegen festlegung festnahme
feststellen feststellung festzulegen festzustellen feuer feuerwehr fiel fielen
===f===
figur figuren filiale filialen film filme filmemacher filmen films finale
===f===
finanzamt finanzen finanziell finanzielle finanziellen finanzieller finanzieren
finanziert finanzierung finanzminister finanzministerium finanzpolitik finde
finden findet fing finger finnland firma firmen fisch fische fischer fiskus fit
flagge flammen flasche flaschen flecken fleisch fliegen fliegt fliehen flog
===f===
fläche flächen flagge flammen flasche flaschen flecken fleisch fliegen fliegt
fliehen flog florenz florida flucht flug fluggesellschaft fluggesellschaften
flughafen flughäfen flughafens flugzeug flugzeuge flut focus folge folgen
folgende folgenden folglich folgt folgte folgten folter fonds for ford fordern
florenz florida flucht flug fluggesellschaft fluggesellschaften flughafen
flughafens flughäfen flugzeug flugzeuge flut fläche flächen focus folge
folgen folgende folgenden folglich folgt folgte folgten folter fonds for ford
fordern fordert forderte forderten forderung forderungen form formal format
===f===
fordert forderte forderten forderung forderungen form formal format formel
formen formular formulieren formuliert formulierte formulierung forscher
formel formen formular formulieren formuliert formulierte formulierung forscher
forschung fort fortan fortgeschrieben fortgesetzt fortschritt fortschritte
fortsetzen fortsetzung forum foto fotografen fotos fr frage fragen fraglich
===f===
fragt fragte fraktion fraktionen fraktionschef fraktionsvorsitzende franc
===f===
francisco frank franken frankfurt frankfurter frankfurtmain frankreich
frankreichs franz franzose franzosen frau frauen frei freiburg freiburger freie
freien freier freigabe freigegeben freigelassen freiheit freiheitsstrafe
===f===
freilassung freilich freispruch freistaat freitag freitags freiwillig
===f===
freiwillige freiwilligen freizeit fremd fremde fremden freude freuen freund
freunde freunden freundin freundlich freundliche freundlichen freundschaft
freut freute friedberg frieden friedens friedhof friedlich friedliche
===f===
friedlichen friedrich frisch frische frischen frist fritz froh front fronten
===f===
frust fuchs fuhr fuhren fulda fund fundament fundamentalisten funk funktion
funktionäre funktionen funktionieren funktioniert funktionsbaustein furcht
fusion gefahr gefährden gefährdet gefährdung gefahren gefährlich
funktionen funktionieren funktioniert funktionsbaustein funktionäre furcht
fusion fähig fähigkeit fähigkeiten fährt fälle fällen fällig fällt
fängt gefahr gefahren gefallen gefangen gefangene gefangenen gefeiert
===f===
gefährliche gefährlichen gefährlicher gefallen gefällt gefangen gefangene
gefangenen gefängnis gefeiert gefertigt geflogen geflohen gefolgt gefordert
geforderte geforderten gefragt gefunden gegebenenfalls gegriffen geholfen
gekämpft gekauft gelaufen geldstrafe geliefert gemeinschaft genf genfer
gefertigt geflogen geflohen gefolgt gefordert geforderte geforderten gefragt
gefunden gefährden gefährdet gefährdung gefährlich gefährliche
gefährlichen gefährlicher gefällt gefängnis gegebenenfalls gegriffen
geholfen gekauft gekämpft gelaufen geldstrafe geliefert gemeinschaft genf
===f===
gepflegt gerechtfertigt gerichtshof gerufen geschaffen geschafft geschäft
geschäfte geschäften geschäftsbereich geschäftsleute geschäftsmann
geschäftstätigkeit geschrumpft gesellschaft gesellschaften gesellschafter
genfer gepflegt gerechtfertigt gerichtshof gerufen geschaffen geschafft
geschrumpft geschäft geschäfte geschäften geschäftsbereich geschäftsleute
geschäftsmann geschäftstätigkeit gesellschaft gesellschaften gesellschafter
gesellschaftliche gesellschaftlichen gesetzentwurf gesundheitsreform getroffen
===f===
gewerkschaft gewerkschaften gewerkschafter geworfen ggf gift gipfel gleichfalls
golf graf grafik greifen greift griff griffen hafen hafenstadt haft haftbefehl
häftlinge haftstrafe halbfinale half hälfte haufen häufig häufiger
häufigsten hauptbahnhof heft heftig heftige heftigen heftiger helfen helfer
haftstrafe halbfinale half haufen hauptbahnhof heft heftig heftige heftigen
heftiger helfen helfer herausforderung herausforderungen herausgefunden
===f===
herausforderung herausforderungen herausgefunden herkunft herrschaft hilfe
hilfen hilflos hilfreich hilft hinauf hof hoffe hoffen hoffentlich hoffmann
hoffnung hoffnungen hofft identifizieren identifiziert inflation inflationsrate
infolge information informationen informieren informiert infos infrastruktur
herkunft herrschaft hilfe hilfen hilflos hilfreich hilft hinauf hof hoffe
hoffen hoffentlich hoffmann hoffnung hoffnungen hofft häftlinge hälfte
häufig häufiger häufigsten identifizieren identifiziert inflation
inflationsrate infolge information informationen informieren informiert infos
===f===
insofern iwf kaffee kalifornien kampf kämpfe kämpfen kämpfer kämpft
kämpfte kartoffeln kauf kaufen käufer kaufhaus kaufmann kaufpreis kauft
kaufte keinesfalls koffer konferenz konflikt konflikte konflikts konfrontation
konfrontiert kopf kraft kräfte kräften kräftig kräftige kräftigen
infrastruktur insofern iwf kaffee kalifornien kampf kartoffeln kauf kaufen
kaufhaus kaufmann kaufpreis kauft kaufte keinesfalls koffer konferenz konflikt
konflikte konflikts konfrontation konfrontiert kopf kraft kräfte kräften
kräftig kräftige kräftigen kundschaft kunststoff kurzfristig kämpfe
===f===
kundschaft kunststoff kurzfristig lafontaine landschaft landschaften
kämpfen kämpfer kämpft kämpfte käufer lafontaine landschaft landschaften
landwirtschaft landwirtschaftlichen langfristig langfristige langfristigen lauf
laufbahn laufe laufen laufende laufenden läuft laufzeit leidenschaft
laufbahn laufe laufen laufende laufenden laufzeit leidenschaft
leistungsfähigkeit lief liefen lieferanten liefern liefert lieferte lieferten
===f===
lieferung lieferungen lohnfortzahlung luft lufthansa luftwaffe mafia manfred
mannschaft mannschaften marktwirtschaft mehrfach meisterschaft meisterschaften
microsoft mitgliedschaft mittelfeld mittelfeldspieler mittelfristig mustafa
nachbarschaft nachfolge nachfolgenden nachfolger nachfrage nationalmannschaft
lieferung lieferungen lohnfortzahlung luft lufthansa luftwaffe läuft mafia
manfred mannschaft mannschaften marktwirtschaft mehrfach meisterschaft
meisterschaften microsoft mitgliedschaft mittelfeld mittelfeldspieler
mittelfristig mustafa nachbarschaft nachfolge nachfolgenden nachfolger
===f===
nordrheinwestfalen notfalls oberfläche of offen offenbach offenbacher offenbar
offenbart offene offenen offener offenheit offenkundig offensichtlich offensive
offiziell offizielle offiziellen offizier offiziere oft oftmals opfer opfern
parteichef partnerschaft perfekt performance pfarrer pfennig pferd pferde
nachfrage nationalmannschaft nordrheinwestfalen notfalls oberfläche of offen
offenbach offenbacher offenbar offenbart offene offenen offener offenheit
offenkundig offensichtlich offensive offiziell offizielle offiziellen offizier
offiziere oft oftmals opfer opfern parteichef partnerschaft perfekt performance
===f===
pflanze pflanzen pflege pflegen pflegeversicherung pflegt pflicht pflichten
pfund plattform pressekonferenz prof professionelle professionellen professor
professoren profi profil profis profit profitieren profitiert profitierten
radfahrer ralf raumfahrt rechtfertigen referendum referent reform reformen
pfarrer pfennig pferd pferde pflanze pflanzen pflege pflegen pflegeversicherung
pflegt pflicht pflichten pfund plattform pressekonferenz prof professionelle
professionellen professor professoren profi profil profis profit profitieren
profitiert profitierten radfahrer ralf raumfahrt rechtfertigen referendum
===f===
regierungschef regierungschefs reifen reihenfolge rheinlandpfalz rief riefen
rindfleisch rolf rudolf ruf rufen rufnummer ruft rundfunk sanft sauerstoff
schafe schäfer schaffen schafft schaffte schaffung scharf scharfe scharfen
schiff schiffe schimpft schlaf schlafen schrift schriften schriftlich
referent reform reformen regierungschef regierungschefs reifen reihenfolge
rheinlandpfalz rief riefen rindfleisch rolf rudolf ruf rufen rufnummer ruft
rundfunk sanft sauerstoff schafe schaffen schafft schaffte schaffung scharf
scharfe scharfen schiff schiffe schimpft schlaf schlafen schrift schriften
===f===
schriftsteller schuf schwangerschaft seehofer sicherheitskräfte siegfried
sindelfingen sofern sofort sofortige software sorgfältig sozialhilfe spdchef
spdfraktion spdfraktionschef sprengstoff staatsanwaltschaft staatschef
stattfinden stattfindet stattgefunden stefan steffi steuerreform stiftung stoff
schriftlich schriftsteller schuf schwangerschaft schäfer seehofer
sicherheitskräfte siegfried sindelfingen sofern sofort sofortige software
sorgfältig sozialhilfe spdchef spdfraktion spdfraktionschef sprengstoff
staatsanwaltschaft staatschef stattfinden stattfindet stattgefunden stefan
===f===
stoffe strafe strafen strafkammer straftaten streifen streitkräfte stufe
stufen tarife tarifverhandlungen tarifvertrag telefon telefonisch telefonnummer
teufel tief tiefe tiefen tiefer tochtergesellschaft todesstrafe traf trafen
treff treffen treffer treffpunkt trifft ufer umfang umfangreiche umfangreichen
steffi steuerreform stiftung stoff stoffe strafe strafen strafkammer straftaten
streifen streitkräfte stufe stufen tarife tarifverhandlungen tarifvertrag
telefon telefonisch telefonnummer teufel tief tiefe tiefen tiefer
tochtergesellschaft todesstrafe traf trafen treff treffen treffer treffpunkt
===f===
umfassen umfassende umfassenden umfasst umfeld umfrage umfragen umlaufrendite
unfall unfälle ungefähr uniform unterkunft unterschrift unterschriften
untersuchungshaft unzufrieden verfahren verfahrens verfall verfallen verfasser
verfassung verfassungsgericht verfassungsschutz verfehlt verfolgen verfolgt
trifft ufer umfang umfangreiche umfangreichen umfassen umfassende umfassenden
umfasst umfeld umfrage umfragen umlaufrendite unfall unfälle ungefähr uniform
unterkunft unterschrift unterschriften untersuchungshaft unzufrieden verfahren
verfahrens verfall verfallen verfasser verfassung verfassungsgericht
===f===
verfolgte verfolgung verhaftet verhaftung verhelfen verkauf verkaufen
verkäufer verkauft verkaufte verkauften verkraften verlauf verlaufen verläuft
verlief vernunft verpflichten verpflichtet verpflichtung verpflichtungen
verschaffen verschafft verschärft verschärfung verzweifelt verzweiflung vfb
verfassungsschutz verfehlt verfolgen verfolgt verfolgte verfolgung verhaftet
verhaftung verhelfen verkauf verkaufen verkauft verkaufte verkauften verkraften
verkäufer verlauf verlaufen verlief verläuft vernunft verpflichten
verpflichtet verpflichtung verpflichtungen verschaffen verschafft verschärft
===f===
vielfach vielfalt vielfältigen viertelfinale volkswirtschaft vorfahren vorfall
vorfeld vorgeworfen vorläufig vorläufige vorläufigen vorschrift vorschriften
vorstandschef vorwurf waffe waffen waffenstillstand wahlkampf warf warfen
wegfall weltmeisterschaft werfen wettbewerbsfähigkeit wettkampf wiederaufbau
verschärfung verzweifelt verzweiflung vfb vielfach vielfalt vielfältigen
viertelfinale volkswirtschaft vorfahren vorfall vorfeld vorgeworfen vorläufig
vorläufige vorläufigen vorschrift vorschriften vorstandschef vorwurf waffe
waffen waffenstillstand wahlkampf warf warfen wegfall weltmeisterschaft werfen
===f===
wiederaufnahme wilfried wirft wirtschaft wirtschaftlich wirtschaftliche
wirtschaftlichen wirtschaftlicher wirtschaftsminister wirtschaftsministerium
wirtschaftspolitik wirtschaftswachstum wissenschaft wissenschaftler
wissenschaftlern wissenschaftlich wissenschaftliche wissenschaftlichen
wettbewerbsfähigkeit wettkampf wiederaufbau wiederaufnahme wilfried wirft
wirtschaft wirtschaftlich wirtschaftliche wirtschaftlichen wirtschaftlicher
wirtschaftsminister wirtschaftsministerium wirtschaftspolitik
wirtschaftswachstum wissenschaft wissenschaftler wissenschaftlern
===f===
wissenschaftlicher wolf wolfgang wolfsburg worauf zdf zeitschrift zeitschriften
zufall zufällig zufolge zufrieden zugriff zukunft zutiefst zwangsläufig
zweifel zweifellos
wissenschaftlich wissenschaftliche wissenschaftlichen wissenschaftlicher wolf
wolfgang wolfsburg worauf zdf zeitschrift zeitschriften zufall zufolge
zufrieden zufällig zugriff zukunft zutiefst zwangsläufig zweifel zweifellos
===ö===
abgelöst ablösung angehören angehörige angehörigen angehört anhörung
aufgelöst aufhören auflösung ausgelöst auslösen auslöser befördert
@ -1225,42 +1225,43 @@ behörde behörden benötigen benötigt benötigte benötigten bevölkerung
bewölkt bischöfe böblingen böden börse börsen börsengang börsianer
===ö===
böse bösen dörfer dörfern empört empörung erhöhen erhöht erhöhte
erhöhten erhöhung erlös erlöse ermöglichen ermöglicht eröffnen eröffnet
eröffnete eröffnung erörtert erschöpft föderation fördern fördert
förderung französische französischen französischer fröhlich gefördert
erhöhten erhöhung erlös erlöse ermöglichen ermöglicht erschöpft
eröffnen eröffnet eröffnete eröffnung erörtert französische
französischen französischer fröhlich föderation fördern fördert
===ö===
gehör gehöre gehören gehörende gehörenden gehört gehörte gehörten
gelöscht gelöst geöffnet gestört getötet gewöhnlich gewöhnlichen
gewöhnt göppingen götter göttingen herkömmlichen höchst höchste
höchsten höchstens höchster höhe höhen höhepunkt höher höhere höheren
förderung gefördert gehör gehöre gehören gehörende gehörenden gehört
gehörte gehörten gelöscht gelöst gestört getötet gewöhnlich
gewöhnlichen gewöhnt geöffnet göppingen götter göttingen herkömmlichen
höchst höchste höchsten höchstens höchster höhe höhen höhepunkt höher
===ö===
höherer hölle hören hörer hört hörte kapitalerhöhung köln kölner
komödie könig königin königreich königs könne können könnte könnten
köpfe köpfen körper körperlich körperliche körperlichen körpers
körperverletzung löcher löhne löschen lösen löst löste lösung lösungen
höhere höheren höherer hölle hören hörer hört hörte kapitalerhöhung
komödie köln kölner könig königin königreich königs könne können
könnte könnten köpfe köpfen körper körperlich körperliche körperlichen
körpers körperverletzung löcher löhne löschen lösen löst löste lösung
===ö===
löwen millionenhöhe möbel möchte möchten möge mögen möglich mögliche
möglichen möglicher möglicherweise möglichkeit möglichkeiten möglichst
möller mönchengladbach mörder nervös nördlich nördlichen nötig nötige
nötigen öffentlich öffentliche öffentlichen öffentlicher öffentlichkeit
lösungen löwen millionenhöhe möbel möchte möchten möge mögen möglich
mögliche möglichen möglicher möglicherweise möglichkeit möglichkeiten
möglichst möller mönchengladbach mörder nervös nördlich nördlichen
nötig nötige nötigen persönlich persönliche persönlichen persönlicher
===ö===
persönlichkeit persönlichkeiten plötzlich religiöse religiösen römer
römische römischen schröder schröders schön schöne schönen schöner
schönes schönheit schönste schönsten stören stört störung störungen
söhne tragödie töchter tödlich tödlichen töne töpfer töten tötung
===ö===
ungewöhnlich ungewöhnliche ungewöhnlichen unmöglich unnötig verkörpert
vermögen versöhnung verzögert verzögerung veröffentlichen veröffentlicht
veröffentlichte veröffentlichten veröffentlichung vögel völker völlig
womöglich wöchentlich wörter wörtlich zeitgenössischen zerstören
===ö===
zerstört zerstörte zerstörten zerstörung zugehörigen zuhörer zwölf
öffentlich öffentliche öffentlichen öffentlicher öffentlichkeit
öffentlichkeitsarbeit öffentlichrechtlichen öffnen öffnet öffnete öffnung
öffnungszeiten öfter ökologie ökologisch ökologische ökologischen
===ö===
ökonomie ökonomische ökonomischen öl örtliche örtlichen österreich
österreicher österreichische österreichischen österreichs östlich
===ö===
östlichen ötv persönlich persönliche persönlichen persönlicher
persönlichkeit persönlichkeiten plötzlich religiöse religiösen römer
römische römischen schön schöne schönen schöner schönes schönheit
schönste schönsten schröder schröders söhne stören stört störung
===ö===
störungen töchter tödlich tödlichen töne töpfer töten tötung tragödie
ungewöhnlich ungewöhnliche ungewöhnlichen unmöglich unnötig verkörpert
vermögen veröffentlichen veröffentlicht veröffentlichte veröffentlichten
veröffentlichung versöhnung verzögert verzögerung vögel völker völlig
===ö===
wöchentlich womöglich wörter wörtlich zeitgenössischen zerstören
zerstört zerstörte zerstörten zerstörung zugehörigen zuhörer zwölf
östlichen ötv
===.===
===x===
@ -1287,33 +1288,33 @@ begründet begründete begründeten begründung bemühen bemüht bemühte
bemühungen berücksichtigen berücksichtigt berücksichtigung berühmt
===ü===
berühmte berühmten berührt beschlüsse bezüge bezüglich blüm blüten
broschüre brücke brücken brüder brüssel brüsseler bücher büchern bühne
bühnen bundesbürger bündnis bündnisgrünen bürger bürgerhaus
broschüre brücke brücken brüder brüssel brüsseler bundesbürger bücher
büchern bühne bühnen bündnis bündnisgrünen bürger bürgerhaus
bürgerinitiative bürgerkrieg bürgerliche bürgerlichen bürgermeister
===ü===
bürgermeisterin bürgermeisters bürgern bürgerschaft büro bürokratie
büros dafür darüber drüben drücken drückt drückte dünn durchführen
durchführung durchgeführt durchzuführen dürfe dürfen dürfte dürften
düsseldorf düsseldorfer eigentümer einflüsse einführen einführung
büros dafür darüber drüben drücken drückt drückte durchführen
durchführung durchgeführt durchzuführen dünn dürfe dürfen dürfte
dürften düsseldorf düsseldorfer eigentümer einflüsse einführen
===ü===
einführungsleitfaden eingeführt einzuführen endgültig endgültige
endgültigen entführt entführung entwürfe erfüllen erfüllt erfüllung
erschüttert flüchtete flüchtlinge flüchtlingen flüge flügel flüsse
früchte früh frühe frühen früher frühere früheren früherer frühestens
einführung einführungsleitfaden eingeführt einzuführen endgültig
endgültige endgültigen entführt entführung entwürfe erfüllen erfüllt
erfüllung erschüttert flüchtete flüchtlinge flüchtlingen flüge flügel
flüsse früchte früh frühe frühen früher frühere früheren früherer
===ü===
frühling frühstück frühzeitig fügt fügte fühle fühlen fühlt fühlte
fühlten führe führen führende führenden führender führer führerschein
führt führte führten führung führungskräfte fülle füllen füllt fünf
fünfte fünftel fünften fünfzehn fünfzig fünfziger für fürchten
frühestens frühling frühstück frühzeitig fügt fügte fühle fühlen
fühlt fühlte fühlten führe führen führende führenden führender führer
führerschein führt führte führten führung führungskräfte fülle füllen
füllt fünf fünfte fünftel fünften fünfzehn fünfzig fünfziger für
===ü===
fürchtet fürs gebühr gebühren gebürtige gedrückt gefühl gefühle
gefühlen geführt geführte geführten gefüllt gegenüber gegründet
fürchten fürchtet fürs gebühr gebühren gebürtige gedrückt gefühl
gefühle gefühlen geführt geführte geführten gefüllt gegenüber gegründet
gegründete gegründeten gekündigt gekürzt gemüse genügen genügend genügt
geprüft geringfügig gerüchte gerückt geschäftsführer geschäftsführung
===ü===
geschützt gestürzt gestützt geübt gewünscht gewünschte gewünschten
gewürdigt glaubwürdigkeit glück glücklich grün gründe gründen gründer
gründete gründlich grundstück grundstücke gründung grüne grünen grünes
geschützt gestürzt gestützt gewünscht gewünschte gewünschten gewürdigt
geübt glaubwürdigkeit glück glücklich grundstück grundstücke grün
gründe gründen gründer gründete gründlich gründung grüne grünen grünes
gültig gültige gültigen gültigkeit günstig günstige günstigen günstiger
===ü===
günter günther güter haustür hierfür hintergründe hügel hürde hürden
@ -1338,108 +1339,108 @@ stürmer stürzen stürzt stürzte stützen stützt süd südafrika südafrikas
===ü===
südamerika süddeutschen süden südkorea südlich südlichen südostasien
südosten südwesten tagsüber thüringen thüringer torhüter tribüne
tübingen tübinger tür türen türkei türken türkische türkischen üben
über überall überaus überblick überdies überdurchschnittlich überein
tübingen tübinger tür türen türkei türken türkische türkischen
umweltschützer unglück unterdrückung unterstützen unterstützt
===ü===
übereinstimmung überfall überfallen überflüssig überfordert übergabe
übergang übergeben überhaupt überholt überlassen überleben überlebenden
überlebt überlegen überlegt überlegungen übermittelt übernahm übernahme
übernehmen übernimmt übernommen überprüfen überprüft überprüfung
unterstützte unterstützung unverzüglich uraufführung ursprünglich
ursprüngliche ursprünglichen verbündeten verfügbar verfügbaren verfügen
verfügt verfügte verfügung vergnügen verknüpft verknüpfung verkünden
verkündet verkündete verkürzt vernünftig vernünftige verrückt verübt
===ü===
überraschend überraschende überraschenden überrascht überraschung
überraschungen übers überschreiten überschrift überschritten übersehen
übersetzt übersetzung übersicht überstanden überstunden übertragen
übertragung übertrieben übertroffen überwachen überwacht überwachung
===ü===
überwiegend überwiesen überwinden überwindung überwunden überzeugen
überzeugend überzeugt überzeugung überzogen üblich übliche üblichen
übrig übrigen übrigens übt übte übung umweltschützer unglück
unterdrückung unterstützen unterstützt unterstützte unterstützung
===ü===
unverzüglich uraufführung ursprünglich ursprüngliche ursprünglichen
verbündeten verfügbar verfügbaren verfügen verfügt verfügte verfügung
vergnügen verknüpft verknüpfung verkünden verkündet verkündete verkürzt
vernünftig vernünftige verrückt verübt vorgeführt vorübergehend vorwürfe
===ü===
vorwürfen vorzüge widersprüche wofür wünsche wünschen wünscht würde
würden würzburg wüste züge zügen zügig zukünftig zukünftige
zukünftigen zürich zurück zurückgegangen zurückgehen zurückgekehrt
vorgeführt vorwürfe vorwürfen vorzüge vorübergehend widersprüche wofür
wünsche wünschen wünscht würde würden würzburg wüste zukünftig
zukünftige zukünftigen zurück zurückgegangen zurückgehen zurückgekehrt
zurückgenommen zurückgetreten zurückgewiesen zurückgezogen zurückgreifen
===ü===
zurückhaltend zurückhaltung zurückkehren zurückliegenden zurückziehen
zurückzuführen zurückzukehren zuschüsse
zurückzuführen zurückzukehren zuschüsse züge zügen zügig zürich üben
über überall überaus überblick überdies überdurchschnittlich überein
übereinstimmung überfall überfallen überflüssig überfordert übergabe
===ü===
übergang übergeben überhaupt überholt überlassen überleben überlebenden
überlebt überlegen überlegt überlegungen übermittelt übernahm übernahme
übernehmen übernimmt übernommen überprüfen überprüft überprüfung
überraschend überraschende überraschenden überrascht überraschung
===ü===
überraschungen übers überschreiten überschrift überschritten übersehen
übersetzt übersetzung übersicht überstanden überstunden übertragen
übertragung übertrieben übertroffen überwachen überwacht überwachung
überwiegend überwiesen überwinden überwindung überwunden überzeugen
===ü===
überzeugend überzeugt überzeugung überzogen üblich übliche üblichen
übrig übrigen übrigens übt übte übung
===j===
anja derjenigen diejenigen diesjährigen frühjahr gesamtjahr geschäftsjahr
geschäftsjahres halbjahr ja jacques jagd jäger jahr jahre jahrelang jahren
jahres jahresbeginn jahresende jahrestag jahresumsatz jahreswechsel jahreszeit
geschäftsjahres halbjahr ja jacques jagd jahr jahre jahrelang jahren jahres
jahresbeginn jahresende jahrestag jahresumsatz jahreswechsel jahreszeit
jahrgang jahrhundert jahrhunderte jahrhunderten jahrhunderts jahrhundertwende
===j===
jährige jährlich jährliche jährlichen jahrtausend jahrtausendwende
jahrzehnt jahrzehnte jahrzehntelang jahrzehnten jakob james jan januar japan
japaner japanische japanischen japans jazz je jean jeans jede jedem jeden
jedenfalls jeder jedermann jederzeit jedes jedesmal jedoch jegliche jeglicher
jahrtausend jahrtausendwende jahrzehnt jahrzehnte jahrzehntelang jahrzehnten
jakob james jan januar japan japaner japanische japanischen japans jazz je jean
jeans jede jedem jeden jedenfalls jeder jedermann jederzeit jedes jedesmal
jedoch jegliche jeglicher jeher jelzin jelzins jemals jemand jemanden jena jene
===j===
jeher jelzin jelzins jemals jemand jemanden jena jene jenem jenen jener jenes
jens jenseits jerusalem jesus jetzige jetzigen jetzt jeweilige jeweiligen
jeweils joachim job jobs jochen johann johanna johannes john johnson jordan
jordanien jörg joschka josef joseph journalist journalisten jubel jubiläum
jenem jenen jener jenes jens jenseits jerusalem jesus jetzige jetzigen jetzt
jeweilige jeweiligen jeweils joachim job jobs jochen johann johanna johannes
john johnson jordan jordanien joschka josef joseph journalist journalisten
jubel jubiläum jude juden jugend jugendarbeit jugendliche jugendlichen
===j===
jude juden jüdische jüdischen jüdischer jugend jugendarbeit jugendliche
jugendlichen jugendlicher jugoslawien jugoslawischen juli julia jung junge
jungen junger jünger jüngere jüngeren jungs jüngst jüngste jüngsten
jüngster juni jürgen jurist juristen juristisch juristische juristischen just
jugendlicher jugoslawien jugoslawischen juli julia jung junge jungen junger
jungs juni jurist juristen juristisch juristische juristischen just justiz
justizminister jutta jäger jährige jährlich jährliche jährlichen jörg
jüdische jüdischen jüdischer jünger jüngere jüngeren jüngst jüngste
===j===
justiz justizminister jutta konjunktur langjährige langjährigen lebensjahr
jüngsten jüngster jürgen konjunktur langjährige langjährigen lebensjahr
major netanjahu objekt objekte objekten projekt projekte projekten projekts
sarajevo sarajewo sowjetische sowjetischen sowjetunion vorjahr vorjahres
vorjahreszeitraum westjordanland
===ß===
abriß abschließen abschluß angepaßt anlaß anläßlich anschließen
anschließend anschließenden anschluß anstoß ausmaß ausschließen
ausschließlich ausschluß ausschuß außen außenminister außenministerium
außenpolitik außenseiter außer außerdem äußere äußeren außerhalb
ausschließlich ausschluß ausschuß auszuschließen außen außenminister
außenministerium außenpolitik außenseiter außer außerdem außerhalb
===ß===
äußern außerordentlich außerordentlichen äußerst äußert äußerte
äußerten äußerung äußerungen auszuschließen beeinflußt befaßt
begrüßen begrüßt begrüßte besaß beschließen beschließt beschloß
beschluß bewußt bewußtsein bezirksausschuß bißchen bloß bloße bloßen
außerordentlich außerordentlichen beeinflußt befaßt begrüßen begrüßt
begrüßte besaß beschließen beschließt beschloß beschluß bewußt
bewußtsein bezirksausschuß bißchen bloß bloße bloßen bundesaußenminister
bundesstraße daß draußen dreißig einbußen einfluß einigermaßen
===ß===
bundesaußenminister bundesstraße daß draußen dreißig einbußen einfluß
einigermaßen einschließlich entschluß erdgeschoß erfaßt erschließen
erschließung faßt fließen fließt fluß friedensprozeß friedrichstraße
fuß fußball fußballer füße füßen fußgänger geäußert gefaßt gemäß
einschließlich entschluß erdgeschoß erfaßt erschließen erschließung faßt
fließen fließt fluß friedensprozeß friedrichstraße fuß fußball
fußballer fußgänger füße füßen gefaßt gemäß genießen genießt genuß
gestoßen gewissermaßen gewiß gewißheit gewußt geäußert gießen
===ß===
genießen genießt genuß gestoßen gewiß gewissermaßen gewißheit gewußt
gießen gleichermaßen groß großbritannien große größe großem großen
größen größenordnung großer größer größere größeren größerer
größeres großes großhandel großmutter großstadt großstädten größte
gleichermaßen groß großbritannien große großem großen großer großes
großhandel großmutter großstadt großstädten großteil großvater
großzügig größe größen größenordnung größer größere größeren
größerer größeres größte größten größtenteils größter hauptstraße
===ß===
großteil größten größtenteils größter großvater großzügig haß
hauptstraße heiß heiße heißen heißt hieß jahresüberschuß kompromiß
kongreß landstraße läßt ließ ließe ließen maß maße maßgeblich
maßnahme maßnahmen maßstab maßstäbe mißbrauch mißbraucht mißtrauen muß
haß heiß heiße heißen heißt hieß jahresüberschuß kompromiß kongreß
landstraße ließ ließe ließen läßt maß maße maßgeblich maßnahme
maßnahmen maßstab maßstäbe mißbrauch mißbraucht mißtrauen mutmaßliche
mutmaßlichen muß mußte mußten müßte müßten paß paßt preußen prozeß
===ß===
mußte müßte mußten müßten mutmaßliche mutmaßlichen paß paßt preußen
prozeß regelmäßig regelmäßige regelmäßigen reißen reißt riß rußland
regelmäßig regelmäßige regelmäßigen reißen reißt riß rußland
rußlands saß saßen schießen schießt schließen schließlich schließt
schließung schloß schluß schoß schuß selbstbewußt selbstbewußtsein
sparmaßnahmen spaß stieß stießen stoßen strauß straßburg straße
===ß===
sparmaßnahmen spaß stieß stießen stoßen stößt straßburg straße
straßen straßenbahn straßenverkehr strauß streß überschuß umfaßt
ungewiß untersuchungsausschuß veranlaßt verfaßt vergrößert verläßt
verließ verließen vermißt verpaßt verstoß verstöße verstoßen vorstoß
straßen straßenbahn straßenverkehr streß stößt umfaßt ungewiß
untersuchungsausschuß veranlaßt verfaßt vergrößert verließ verließen
verläßt vermißt verpaßt verstoß verstoßen verstöße vorstoß weiß
weiße weißen weißer weißrußland wußte wußten zusammengefaßt
===ß===
weiß weiße weißen weißer weißrußland wußte wußten zusammengefaßt
zusammenschluß zuschuß zweitgrößte
zusammenschluß zuschuß zweitgrößte äußere äußeren äußern äußerst
äußert äußerte äußerten äußerung äußerungen überschuß
===y===
ägypten ägyptischen analyse analysen analysieren analysiert analyst analysten
asyl asylbewerber baby bayer bayerische bayerischen bayern bayerns bayreuth
boykott city company dayton dynamik foyer grosny gymnasium handy harry henry
hollywood infotyp jury libyen lyrik malaysia meyer mythen mythos oberbayern
analyse analysen analysieren analysiert analyst analysten asyl asylbewerber
baby bayer bayerische bayerischen bayern bayerns bayreuth boykott city company
dayton dynamik foyer grosny gymnasium handy harry henry hollywood infotyp jury
libyen lyrik malaysia meyer mythen mythos oberbayern olympia olympiasieger
===y===
olympia olympiasieger olympiastadion olympischen party physik physiker
plädoyer psychisch psychologen psychologie psychologische rhythmus sapsystem
sony story sydney symbol symbole sympathie symptome syrien system systematisch
systematische systeme systemen systems thyssen tony tschernobyl typ typen
olympiastadion olympischen party physik physiker plädoyer psychisch
psychologen psychologie psychologische rhythmus sapsystem sony story sydney
symbol symbole sympathie symptome syrien system systematisch systematische
systeme systemen systems thyssen tony tschernobyl typ typen typisch typische
===y===
typisch typische typischen typs university yen york yorker zyklus
typischen typs university yen york yorker zyklus ägypten ägyptischen

45
tipptrainer/ktouch/sortWords/sortWords.sh Executable file → Normal file
View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
# Autor: Adam Taras <www.adam-taras.de/opensource>
# Datum: 20.06.2009
@ -211,37 +211,24 @@ fi
#=== Erstelle KTouch-Lektion ===
courseid=$(uuidgen)
echo -n "Erstelle KTouch-Lektion \"$fileKTouch\"..."
echo -e "<?xml version=\"1.0\"?>\n<course>\n"\
"<id>{$courseid}</id>\n"\
"<title>Deutsch (Neo2 Sortierte Wörter)</title>\n"\
"<description>`date -I` - Neo2 - Mit \"$0\" automatisch generierte Datei</description>\n"\
"<keyboardLayout>de(neo)</keyboardLayout>\n"\
"<lessons>" > $fileKTouch
while read -r line
do
case "$line" in
===*===)
keys=${line%===}
keys=${keys#===}
printf '</text>\n </lesson>\n' >> "$fileKTouch"
printf ' <lesson>\n <id>{%s}</id>\n <title>Keys: %s</title>\n <newCharacters>%s</newCharacters>\n <text>' "$(uuidgen)" "$keys" "$keys" >> "$fileKTouch"
read -r line
printf '%s' "$line" >> "$fileKTouch"
;;
*)
printf '\n%s' "$line" >> "$fileKTouch"
;;
esac
done < "$fileOut"
printf '</text>\n </lesson>\n </lessons>\n</course>\n' >> "$fileKTouch"
printf "8d\n8d\nwq\n" |ed "$fileKTouch"
echo -e "<KTouchLecture>\n"\
"<Title>Deutsch (Neo2 Sortierte Wörter)</Title>\n"\
"<Comment>`date -I` - Neo2 - Mit \"$0\" automatisch generierte Datei</Comment>\n"\
"<FontSuggestions>Monospace</FontSuggestions>\n"\
"<Levels>" > $fileKTouch
sed -e 's/^===/ <Level>\n <NewCharacters>/' \
-e 's/===$/<\/NewCharacters>/' \
-e '/^ /! s/$/<\/Line>/' -e '/^ /! s/^/ <Line>/' \
-e '/^ <Level>/ i\ <\/Level>' \
$fileOut >> $fileKTouch
sed -e '6d' $fileKTouch > $fileKTouch.tmp #Entferne die erste zu viel eingefügte " </Level>" Zeile
rm $fileKTouch
mv $fileKTouch.tmp $fileKTouch
echo -e " </Level>\n </Levels>\n</KTouchLecture>" >> $fileKTouch
echo "OK"
#=== Clean & Exit ===
rm $fileTmpFormatted
exit 0
exit 0

View File

@ -1,3 +0,0 @@
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf
*.{reg,[rR][eE][gG]} text eol=crlf

View File

@ -4,7 +4,7 @@ Für die weitergehende Entwicklung und Kompilierung der Treiberlayout-DLLs unter
1. Über Visual Studio
2. Über ein manuelles Buildskript
Die erste Variante ist der kanonische Weg. Die zweite Variante benötigt kein Visual Studio und insbesondere kein umfangreiches Windows Driver Kit. Sie kann für eigene Anpassungen an den Layoutdateien verwendet werden.
Die erste Variante ist einfacher und dient auch der Entwicklung. Die zweite Variante benötigt kein Visual Studio und insbesondere kein Windows Driver Kit.
## Regulärer Build mit Visual Studio
@ -36,24 +36,28 @@ Für jedes der enthaltenen Tastaturlayouts sind nun je zwei .dll-Dateien (Name =
### Voraussetzungen
* Visual Studio Build Tools: Auf https://visualstudio.microsoft.com/de/downloads/ nach unten scrollen, unter „Alle Downloads“ den Reiter „Tools für Visual Studio“ aufklappen und „Buildtools für Visual Studio 2022“ auswählen.
* Visual Studio Build Tools: Auf https://visualstudio.microsoft.com/de/downloads/ nach unten scrollen, unter „Alle Downloads“ den Reiter „Tools für Visual Studio 2019“ aufklappen und „Buildtools für Visual Studio 2019“ auswählen.
* Im Installer unter „Workloads“ die C++-Buildtools auswählen oder alternativ unter „Einzelne Komponenten“ die aktuellen x64/x86-Buildtools sowie das aktuelle Windows 10 SDK auswählen.
Ältere, bereits installierte Buildtools funktionieren gleichermaßen. Dazu muss man vor dem Build einmalig die Variable `buildtools` in den Skripten umstellen auf die entsprechende Version (Jahreszahl).
### Build
Nach der Installation können einzelne oder alle Layouts über die im `build`-Verzeichnis verfügbaren Skripte gebaut werden.
Nach der Installation stehen im Startmenü im Ordner Visual Studio 2019 verschiedene Command Prompts zur Verfügung. Das Vorgehen ist wie folgt:
* ins `build`-Verzeichnis unterhalb von `windows\kbdneo2` wechseln
* `build_all` ausführen, oder alternativ `build_layout [Layoutname]`, wobei hier der Layoutname ohne "kbd" angegeben wird (z.B. neo2 oder bone), wie er im `source`-Verzeichnis verwendet wird.
* x86_x64 Cross Tools Command Prompt for VS 2019 starten
* ins `build`-Verzeichnis unterhalb von kbdneo wechseln
* `build_x64` ausführen
Dies baut die x64-Varianten der DLLs. Für die x86-Varianten (für 32 Bit bzw. SysWOW64) lautet es:
* x86 Native Tools Command Prompt for VS 2019 starten
* ins `build`-Verzeichnis unterhalb von kbdneo wechseln
* `build_x86` ausführen
Die erzeugten DLLs sind anschließend in den Unterverzeichnissen `x64`, `x86` und `x86-wow64` der jeweiligen Layoutvarianten zu finden.
## kbdqwertz mit „ß“ unten
Von kbdqwertz (aus historischen Gründen im Verzeichnis `kbdgr2` platziert) gibt es zwei Varianten, einmal mit dem regulären QWERTZ-Layout mit ß oben und dem Bindestrich unten. Die zweite Variante tauscht beides, sodass der Bindestrich gemeinsam mit anderen Strichen auf weiteren Ebenen auf der Strichtaste landet. Das „ß“ verschiebt sich dafür ins Hauptfeld.
Von kbdqwertz (aus historischen Gründen in kbdgr2 platziert) gibt es zwei Varianten, einmal mit dem regulären QWERTZ-Layout mit ß oben und dem Bindestrich unten. Die zweite Variante tauscht beides, sodass der Bindestrich gemeinsam mit anderen Strichen auf weiteren Ebenen auf der Strichtaste landet. Das „ß“ verschiebt sich dafür ins Hauptfeld.
Um kbdqwertz mit „ß“ unten zu kompilieren, muss in `kbdgr2.h` folgende Zeile einkommentiert werden:
```

View File

@ -1,95 +0,0 @@
@echo off
set buildtools=2022
echo Baue alle Layouts (Neo, NeoQwertz, Bone, Mine, Koy, Noted) ...
echo.
pushd ..\source
REM Zuerst die x64-Varianten bauen
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
popd
cd kbdbone
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd gr2
cd ..
cd kbdmine
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd mine
cd ..
cd kbdkoy
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd koy
cd ..
cd kbdnoted
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd noted
cd ..
REM x86 und x86_wow64 bauen
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvars32.bat"
popd
cd kbdbone
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd bone
call ..\..\build\build_variant_x86_wow64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd neo2
call ..\..\build\build_variant_x86_wow64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd gr2
call ..\..\build\build_variant_x86_wow64.cmd gr2
cd ..
cd kbdmine
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd mine
call ..\..\build\build_variant_x86_wow64.cmd mine
cd ..
cd kbdkoy
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd koy
call ..\..\build\build_variant_x86_wow64.cmd koy
cd ..
cd kbdnoted
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd noted
call ..\..\build\build_variant_x86_wow64.cmd noted
cd ..
popd

View File

@ -1,32 +0,0 @@
@echo off
if "%1"=="" (
echo Bitte das entsprechende Layout angeben, so benannt wie das Quellverzeichnis ^(ohne "kbd"^).
exit /b
)
IF NOT EXIST ..\source\kbd%1 (
echo Das Layoutverzeichnis kbd%1 existiert nicht.
exit /b
)
set buildtools=2022
pushd ..\source\kbd%1
IF NOT EXIST x64 mkdir x64
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
popd
call ..\..\build\build_variant_x64.cmd %1
pushd "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\"
call "C:\Program Files (x86)\Microsoft Visual Studio\%buildtools%\BuildTools\VC\Auxiliary\Build\vcvars32.bat"
popd
call ..\..\build\build_variant_x86.cmd %1
call ..\..\build\build_variant_x86_wow64.cmd %1
popd

View File

@ -1,7 +1,7 @@
@echo off
if "%1"=="" (
ECHO Dieses Skript ist nur zur internen Verwendung von build_layout gedacht.
ECHO Dieses Skript ist nur zur internen Verwendung von build_x64 gedacht.
EXIT /B
)

View File

@ -1,7 +1,7 @@
@echo off
if "%1"=="" (
ECHO Dieses Skript ist nur zur internen Verwendung von build_layout gedacht.
ECHO Dieses Skript ist nur zur internen Verwendung von build_x86 gedacht.
EXIT /B
)

View File

@ -1,7 +1,7 @@
@echo off
if "%1"=="" (
ECHO Dieses Skript ist nur zur internen Verwendung von build_layout gedacht.
ECHO Dieses Skript ist nur zur internen Verwendung von build_x86 gedacht.
EXIT /B
)

View File

@ -0,0 +1,22 @@
@echo off
pushd ..\source
REM Build Bone, Neo, Qwertz
cd kbdbone
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x64 mkdir x64
call ..\..\build\build_variant_x64.cmd gr2
cd ..
popd

View File

@ -0,0 +1,28 @@
@echo off
pushd ..\source
REM Build Bone, Neo, Qwertz
cd kbdbone
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd bone
call ..\..\build\build_variant_x86_wow64.cmd bone
cd ..
cd kbdneo2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd neo2
call ..\..\build\build_variant_x86_wow64.cmd neo2
cd ..
cd kbdgr2
IF NOT EXIST x86 mkdir x86
IF NOT EXIST x86-wow64 mkdir x86-wow64
call ..\..\build\build_variant_x86.cmd gr2
call ..\..\build\build_variant_x86_wow64.cmd gr2
cd ..
popd

View File

@ -1,8 +0,0 @@
@echo off
call zip_layout neo2 neo
call zip_layout gr2 qwertz
call zip_layout bone
call zip_layout mine
call zip_layout koy
call zip_layout noted

View File

@ -1,47 +0,0 @@
@echo off
IF [%~1]==[] (
echo Bitte das entsprechende Layout angeben, so benannt wie das Quellverzeichnis ^(ohne "kbd"^).
exit /b
)
IF NOT EXIST ..\source\kbd%1 (
echo Das Layoutverzeichnis kbd%1 existiert nicht.
exit /b
)
REM Falls notwendig, vollständigen Pfad zur (7z) Executable angeben
SET zipcmd=7z
REM Switches: Ziparchiv, normale Kompression, rekursiv
SET zipswitches=a -tzip -mx5 -r
SET layout=kbd%1
IF NOT [%~2]==[] SET layout=kbd%2
pushd ..\source\kbd%1
IF EXIST %layout%64 rmdir /S /Q %layout%64
IF EXIST %layout%32 rmdir /S /Q %layout%32
echo Kopiere Dateien ...
mkdir %layout%64\System32
mkdir %layout%64\SysWOW64
copy x64\kbd%1.dll %layout%64\System32\ >NUL
copy x86-wow64\kbd%1.dll %layout%64\SysWOW64\ >NUL
copy ..\..\build\%layout%_win10_install.reg %layout%64\ >NUL
copy ..\..\build\%layout%_win10_uninstall.reg %layout%64\ >NUL
mkdir %layout%32\System32
copy x86\kbd%1.dll %layout%32\System32\ >NUL
copy ..\..\build\%layout%_win10_install.reg %layout%32\ >NUL
copy ..\..\build\%layout%_win10_uninstall.reg %layout%32\ >NUL
echo Erstelle Zip-Archive ...
%zipcmd% %zipswitches% %layout%64.zip %layout%64\ >NUL
IF %errorlevel% EQU 0 rmdir /S /Q %layout%64
%zipcmd% %zipswitches% %layout%32.zip %layout%32\ >NUL
IF %errorlevel% EQU 0 rmdir /S /Q %layout%32
popd

View File

@ -1,6 +0,0 @@
{
"files.associations": {
"kbd_mod.h": "c",
"kbd.h": "c"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/****************************************************************************\
* Module Name: KBD_MOD.H
* Änderungen an der KBD.H für Neo 2.0 oder darauf basierende Layouts
\****************************************************************************/
#undef DEADTRANS
/****************************************************************************\
* Module Name: KBD_MOD.H
* Änderungen an der KBD.H für Neo 2.0 oder darauf basierende Layouts
\****************************************************************************/
#undef DEADTRANS
#define DEADTRANS(accent, ch, comp, flags) { MAKELONG(ch, accent), comp, flags}

File diff suppressed because it is too large Load Diff

View File

@ -26,26 +26,9 @@
* |---------------------------------------------------------| +----+----+----+ +-------+---¦ ¦
* | Str ¦ Fe ¦ Al ¦ Leerzeichen ¦X38 ¦ Fe ¦ Me ¦ Str | |Left¦Down¦ Re.¦ ¦ 0 ¦ , ¦Ent¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
*
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* |Esc| |F1 ¦F2 ¦F3 ¦F4 | |F5 ¦F6 ¦F7 ¦F8 | |F9 ¦F10¦F11¦F12| |Druk¦Roll¦Paus|
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* +---------------------------------------------------------+ +--------------+ +---------------+
* |T1 ¦1 ¦2 ¦3 ¦4 ¦5 ¦6 ¦7 ¦8 ¦9 ¦0 ¦- ¦T2 ¦Back | |Einf¦Pos1¦PgUp| ¦Num¦ / ¦ * ¦ - ¦
* |---------------------------------------------------------| |--------------| +---+---+---+---¦
* |Tab¦j ¦d ¦u ¦a ¦x ¦p ¦h ¦l ¦m ¦w ¦ß ¦T3 ¦ Ret | |Entf¦Ende¦PgDn| ¦ 7 ¦ 8 ¦ 9 ¦ ¦
* |-----------------------------------------------------+ | +--------------+ +---+---+---¦ ¦
* | M3 ¦c ¦t ¦i ¦e ¦o ¦b ¦n ¦r ¦s ¦g ¦q ¦M3 ¦ | ¦ 4 ¦ 5 ¦ 6 ¦ + ¦
* |---------------------------------------------------------| +----+ +---+---+---+---¦
* |Ums ¦M4 ¦f ¦v ¦ü ¦ä ¦ö ¦y ¦z ¦, ¦. ¦k ¦ Umsch | | Up | ¦ 1 ¦ 2 ¦ 3 ¦ ¦
* |---------------------------------------------------------| +----+----+----+ +-------+---¦ ¦
* | Str ¦ Fe ¦ Al ¦ Leerzeichen ¦ M4 ¦ Fe ¦ Me ¦ Str | |Left¦Down¦ Re.¦ ¦ 0 ¦ , ¦Ent¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
\************************************************************************************************************** */
*/
// Tastenumbelegung für Bone ; sonstige Tastenzuordnung siehe kbd.h
// Tastenumbelegung für Neo 2.0 ; sonstige Tastenzuordnung siehe kbd.h
#undef T0D
#define T0D _EQ( OEM_2 ) // T2
#undef T10

View File

@ -16,8 +16,8 @@
#undef VER_COMPANYNAME_STR
#define VER_COMPANYNAME_STR "neo-layout.org"
#undef VER_PRODUCTNAME_STR
#define VER_PRODUCTNAME_STR "Bone Tastaturtreiber"
#define VER_LEGALCOPYRIGHT_STR "https://neo-layout.org/Beitragen/Lizenzfragen/"
#define VER_PRODUCTNAME_STR "Deutsch 2 Tastaturtreiber"
#define VER_LEGALCOPYRIGHT_STR "wiki.neo-layout.org/wiki/Lizenzfragen"
#undef VER_LEGALTRADEMARKS_STR
#define VER_LEGALTRADEMARKS_STR \
"wiki.neo-layout.org/wiki/Lizenzfragen"
@ -25,7 +25,7 @@
#define VER_FILETYPE VFT_DLL
#define VER_FILESUBTYPE VFT2_DRV_KEYBOARD
#define VER_FILEDESCRIPTION_STR "Deutsch (Bone) Tastaturlayout"
#define VER_FILEDESCRIPTION_STR "Deutsch 2.0 (Bone)"
#define VER_INTERNALNAME_STR "kbdbone"
#define VER_ORIGINALFILENAME_STR "kbdbone.dll"

View File

@ -0,0 +1,7 @@
/****************************************************************************\
* Module Name: KBD_MOD.H
* Änderungen an der KBD.H für Neo 2.0 oder darauf basierende Layouts
\****************************************************************************/
#undef DEADTRANS
#define DEADTRANS(accent, ch, comp, flags) { MAKELONG(ch, accent), comp, flags}

File diff suppressed because it is too large Load Diff

View File

@ -29,24 +29,7 @@
* |---------------------------------------------------------| +----+----+----+ +-------+---¦ ¦
* | Str ¦ Fe ¦ Al ¦ Leerzeichen ¦X38 ¦ Fe ¦ Me ¦ Str | |Left¦Down¦ Re.¦ ¦ 0 ¦ , ¦Ent¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
*
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* |Esc| |F1 ¦F2 ¦F3 ¦F4 | |F5 ¦F6 ¦F7 ¦F8 | |F9 ¦F10¦F11¦F12| |Druk¦Roll¦Paus|
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* +---------------------------------------------------------+ +--------------+ +---------------+
* |T1 ¦1 ¦2 ¦3 ¦4 ¦5 ¦6 ¦7 ¦8 ¦9 ¦0 ¦- ¦T2 ¦Back | |Einf¦Pos1¦PgUp| ¦Num¦ / ¦ * ¦ - ¦
* |---------------------------------------------------------| |--------------| +---+---+---+---¦
* |Tab¦x ¦v ¦l ¦c ¦w ¦k ¦h ¦g ¦f ¦q ¦ß ¦T3 ¦ Ret | |Entf¦Ende¦PgDn| ¦ 7 ¦ 8 ¦ 9 ¦ ¦
* |-----------------------------------------------------+ | +--------------+ +---+---+---¦ ¦
* | M3 ¦u ¦i ¦a ¦e ¦o ¦s ¦n ¦r ¦t ¦d ¦y ¦M3 ¦ | ¦ 4 ¦ 5 ¦ 6 ¦ + ¦
* |---------------------------------------------------------| +----+ +---+---+---+---¦
* |Ums ¦M4 ¦ü ¦ö ¦ä ¦p ¦z ¦b ¦m ¦, ¦. ¦j ¦ Umsch | | Up | ¦ 1 ¦ 2 ¦ 3 ¦ ¦
* |---------------------------------------------------------| +----+----+----+ +-------+---¦ ¦
* | Str ¦ Fe ¦ Al ¦ Leerzeichen ¦ M4 ¦ Fe ¦ Me ¦ Str | |Left¦Down¦ Re.¦ ¦ 0 ¦ , ¦Ent¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
\************************************************************************************************************** */
*/
//qwertz
#undef T15

View File

@ -17,7 +17,7 @@
#define VER_COMPANYNAME_STR "neo-layout.org"
#undef VER_PRODUCTNAME_STR
#define VER_PRODUCTNAME_STR "Deutsch 2 Tastaturtreiber"
#define VER_LEGALCOPYRIGHT_STR "https://neo-layout.org/Beitragen/Lizenzfragen/"
#define VER_LEGALCOPYRIGHT_STR "wiki.neo-layout.org/wiki/Lizenzfragen"
#undef VER_LEGALTRADEMARKS_STR
#define VER_LEGALTRADEMARKS_STR \
"wiki.neo-layout.org/wiki/Lizenzfragen"
@ -25,7 +25,7 @@
#define VER_FILETYPE VFT_DLL
#define VER_FILESUBTYPE VFT2_DRV_KEYBOARD
#define VER_FILEDESCRIPTION_STR "Deutsch (unergonomisch) Tastaturlayout"
#define VER_FILEDESCRIPTION_STR "Deutsch 2.0 (unergonomisch)"
#define VER_INTERNALNAME_STR "kbdgr2"
#define VER_ORIGINALFILENAME_STR "kbdgr2.dll"

File diff suppressed because it is too large Load Diff

View File

@ -1,267 +0,0 @@
/****************************************************************************\
* Module Name: KBDKOY.C
* KOY-Layout, basierend auf AdNW auf Neo2
\****************************************************************************/
#include <windows.h>
#include "kbd.h"
#include "../kbd_mod.h"
#include "../keysym4utf16.h"
#include "kbdkoy.h"
#include "../kbd_base.c"
/* **************************************************************************\
* Spezielle Werte für den VK (Spalte 1)
* 0xff - Tote Zeichen für obige Zeile
* 0 - Beendet die gesamte Liste
*
* Spezielle Werte für Attributes (Spalte 2)
* CAPLOK - CAPS-LOCK wirkt auf diese Taste wie SHIFT
* KANALOK - Mod4-LOCK wirkt auf diese Taste wie Mod4
*
* Spezielle Werte für wch[*]
* WCH_NONE - Keine Belegung
* WCH_DEAD - Totes Zeichen
* WCH_LGTR - Ligatur
\************************************************************************** */
static ALLOC_SECTION_LDATA VK_TO_WCHARS6 aVkToWch6[] = {
// Reihenfolge der Ebene wie oben ( ALLOC_SECTION_LDATA MODIFIERS CharModifiers = { &aVkToBits[0],)… festgelegt
// | CapsLock | | SHIFT | NEU | KANA | NEU+Shift | KANA+NEU |
// |===================|===========|=======================|=======================|===============|===================|===================|
// Zeile 1
{'1' ,KANALOK ,'1' ,degree ,onesuperior ,ordfeminine ,onesubscript ,notsign },
{'3' ,KANALOK ,'3' ,litersign ,threesuperior ,numerosign ,threesubscript ,logicaland },
{'4' ,KANALOK ,'4' ,guillemotright ,guillemotright2 ,WCH_NONE ,femalesymbol ,uptack },
{'5' ,KANALOK ,'5' ,guillemotleft ,guillemotleft2 ,periodcentered ,malesymbol ,measuredangle },
{'7' ,KANALOK ,'7' ,EuroSign ,yen ,currency ,scriptkappa ,rightarrow },
{'8' ,KANALOK ,'8' ,doublelowquotemark ,singlelowquotemark ,WCH_NONE ,leftanglebracket ,infinity },
{'9' ,KANALOK ,'9' ,leftdoublequotemark ,leftsinglequotemark ,'/' ,rightanglebracket ,variation },
{'0' ,KANALOK ,'0' ,rightdoublequotemark ,rightsinglequotemark ,'*' ,zerosubscript ,emptyset },
{VK_OEM_MINUS ,KANALOK ,'-' ,emdash ,WCH_NONE ,'-' ,nobreakhyphen ,hyphen },
{VK_OEM_2 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD }, //Tote Taste 2
{0xff ,0 ,grave ,cedilla ,ringabove ,diaeresis ,greek_dasia ,macron },
{VK_TAB ,0 ,'\t' ,'\t' ,WCH_DEAD ,'\t' ,'\t' ,'\t' },
{0xff ,0 ,WCH_NONE ,WCH_NONE ,Multi_key ,WCH_NONE ,WCH_NONE ,WCH_NONE },
{'K' ,CAPLOK | KANALOK ,'k' ,'K' ,ellipsis ,WCH_NONE ,Greek_kappa ,multiply },
{VK_OEM_PERIOD ,KANALOK ,'.' ,enfilledcircbullet ,'_' ,WCH_NONE ,scripttheta ,arrowfrombarright },
{'O' ,CAPLOK | KANALOK ,'o' ,'O' ,'[' ,WCH_NONE ,Greek_omicron ,elementof },
{VK_OEM_COMMA ,KANALOK ,',' ,endash ,']' ,WCH_NONE ,scriptrho ,implies },
{'V' ,CAPLOK | KANALOK ,'v' ,'V' ,'!' ,exclamdown ,WCH_NONE ,radical },
{'G' ,CAPLOK | KANALOK ,'g' ,'G' ,'<' ,'7' ,Greek_gamma ,Greek_GAMMA },
{'C' ,CAPLOK | KANALOK ,'c' ,'C' ,'>' ,'8' ,Greek_chi ,doublestruck_c },
{'L' ,CAPLOK | KANALOK ,'l' ,'L' ,'=' ,'9' ,Greek_lamda ,Greek_LAMDA },
{'Z' ,CAPLOK | KANALOK ,'z' ,'Z' ,slong ,minussign ,Greek_zeta ,doublestruck_z },
{'H' ,CAPLOK | KANALOK ,'h' ,'H' ,backslash ,WCH_NONE ,Greek_psi ,Greek_PSI },
{'A' ,CAPLOK | KANALOK ,'a' ,'A' ,'/' ,WCH_NONE ,Greek_alpha ,forall },
{'E' ,CAPLOK | KANALOK ,'e' ,'E' ,'{' ,WCH_NONE ,Greek_epsilon ,thereexists },
{'I' ,CAPLOK | KANALOK ,'i' ,'I' ,'}' ,WCH_NONE ,Greek_iota ,integral },
{'U' ,CAPLOK | KANALOK ,'u' ,'U' ,'*' ,WCH_NONE ,WCH_NONE ,includedin },
{'D' ,CAPLOK | KANALOK ,'d' ,'D' ,'?' ,questiondown ,Greek_delta ,Greek_DELTA },
{'T' ,CAPLOK | KANALOK ,'t' ,'T' ,'(' ,'4' ,Greek_tau ,partialderivative },
{'R' ,CAPLOK | KANALOK ,'r' ,'R' ,')' ,'5' ,Greek_rho ,doublestruck_r },
{'N' ,CAPLOK | KANALOK ,'n' ,'N' ,'-' ,'6' ,Greek_nu ,doublestruck_n },
{'S' ,CAPLOK | KANALOK ,'s' ,'S' ,':' ,',' ,Greek_sigma ,Greek_SIGMA },
{'F' ,CAPLOK | KANALOK ,'f' ,'F' ,'@' ,'.' ,Greek_phi ,Greek_PHI },
{'X' ,CAPLOK | KANALOK ,'x' ,'X' ,'#' ,WCH_NONE ,Greek_xi ,Greek_XI },
{'Q' ,CAPLOK | KANALOK ,'q' ,'Q' ,'$' ,WCH_NONE ,scriptphi ,doublestruck_q },
{VK_OEM_7 /*ä*/ ,CAPLOK | KANALOK ,adiaeresis ,Adiaeresis ,'|' ,WCH_NONE ,Greek_eta ,alefsymbol },
{VK_OEM_5 /*ü*/ ,CAPLOK | KANALOK ,udiaeresis ,Udiaeresis ,'~' ,WCH_NONE ,WCH_NONE ,union },
{VK_OEM_6 /*ö*/ ,CAPLOK | KANALOK ,odiaeresis ,Odiaeresis ,'`' ,WCH_NONE ,straightepsilon ,intersection },
{'B' ,CAPLOK | KANALOK ,'b' ,'B' ,'+' ,':' ,Greek_beta ,doublearrowleft },
{'P' ,CAPLOK | KANALOK ,'p' ,'P' ,'%' ,'1' ,Greek_pi ,Greek_PI },
{'W' ,CAPLOK | KANALOK ,'w' ,'W' ,quotedbl ,'2' ,Greek_omega ,Greek_OMEGA },
{'M' ,CAPLOK | KANALOK ,'m' ,'M' ,apostrophe ,'3' ,Greek_mu ,ifonlyif },
{VK_OEM_1 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD }, //Tote Taste 1
{0xff ,0 ,'^' ,caron ,totdreh ,abovedot ,rhotichook ,'.' },
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
};
static ALLOC_SECTION_LDATA VK_TO_WCHARS7 aVkToWch7[] = {
// | CapsLock | | SHIFT | NEU | KANA | NEU+Shift | KANA+NEU | Control |
// |===================|===========|===========|===========|===========|=======================|===============|===============|
{VK_OEM_3 /*ß*/ ,CAPLOK | KANALOK ,ssharp ,Ssharp ,'&' ,'+' ,Greek_finalsmallsigma ,jot ,escape },
{VK_OEM_4 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,infoseparator3 }, //Tote Taste 3
{0xff ,0 ,acute ,'~' ,'-' ,doubleacute,greek_psili ,breve ,WCH_NONE },
{'Y' ,CAPLOK | KANALOK ,'y' ,'Y' ,asciicircum,WCH_NONE ,Greek_upsilon ,nabla ,infoseparator4 },
{VK_SPACE ,KANALOK ,space ,space ,space ,'0' ,nobreakspace ,nnobreakspace ,space },
{VK_BACK ,0 ,'\b' ,'\b' ,'\b' ,'\b' ,'\b' ,'\b' ,delete },
{VK_ESCAPE ,0 ,escape ,escape ,escape ,escape ,escape ,escape ,escape },
{VK_RETURN ,0 ,'\r' ,'\r' ,'\r' ,'\r' ,'\r' ,'\r' ,'\n' },
{VK_CANCEL ,0 ,endoftext ,endoftext ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE ,endoftext },
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
};
static ALLOC_SECTION_LDATA VK_TO_WCHARS8 aVkToWch8[] = {
// | CapsLock | | SHIFT | NEU | KANA | NEU+Shift | KANA+NEU | Control | Control+Shift |
// |===================|===========|===========|===========|===========|===================|===========|===========|===============|
{'2' ,KANALOK ,'2' ,section ,twosuperior,masculine ,twosubscript ,logicalor ,WCH_NONE ,0x0000 },
{'6' ,KANALOK ,'6' ,dollar ,cent ,sterling ,maleandfemalesign ,parallelto ,WCH_NONE ,infoseparator2 },
{'J' ,CAPLOK | KANALOK ,'j' ,'J' ,';' ,';' ,Greek_theta ,Greek_THETA,WCH_NONE ,infoseparator1 },
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0}
};
// Hier müssen die verwendeten WChar_Tables vorkommen; Numpad MUSS letzte Zeile sein.
// Die Funktion VkKeyScan() versucht, zu einem Zeichen den zugehörigen Virtual Key
// und Modifier zu finden. Die Numpad-Definition muss zum Schluss kommen, damit Zeichen
// wie '0' als vom Hauptfeld kommend interpretiert werden, falls dort vorhanden.
static ALLOC_SECTION_LDATA VK_TO_WCHAR_TABLE aVkToWcharTable[] = {
{ (PVK_TO_WCHARS1)aVkToWch8, 8, sizeof(aVkToWch8[0]) },
{ (PVK_TO_WCHARS1)aVkToWch6, 6, sizeof(aVkToWch6[0]) },
{ (PVK_TO_WCHARS1)aVkToWch7, 7, sizeof(aVkToWch7[0]) },
{ (PVK_TO_WCHARS1)aVkToWch4, 4, sizeof(aVkToWch4[0]) },
{ NULL, 0, 0 },
};
/* **************************************************************************\
* aKeyNames[], aKeyNamesExt[] - Virtual Scancode to Key Name tables
*
* Table attributes: Ordered Scan (by scancode), null-terminated
*
* Nur für Tasten, die keine Zeichen erzeugen, Tasten die Zeichen erzeugen
* werden danach benannt
\************************************************************************** */
static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNames[] = {
0x01, L"ESC",
0x0e, L"R\x00DC" L"CKTASTE",
0x0f, L"TABULATOR",
0x1c, L"EINGABE",
0x1d, L"STRG",
0x2a, L"UMSCHALT",
0x2b, L"MOD 3 RECHTS",
0x36, L"UMSCHALT RECHTS",
0x37, L"* (ZEHNERTASTATUR)",
0x38, L"ALT",
0x39, L"LEER",
0x3a, L"MOD 3 LINKS",
0x3b, L"F1",
0x3c, L"F2",
0x3d, L"F3",
0x3e, L"F4",
0x3f, L"F5",
0x40, L"F6",
0x41, L"F7",
0x42, L"F8",
0x43, L"F9",
0x44, L"F10",
0x45, L"PAUSE",
0x46, L"ROLLEN-FESTSTELL",
0x47, L"7 (ZEHNERTASTATUR)",
0x48, L"8 (ZEHNERTASTATUR)",
0x49, L"9 (ZEHNERTASTATUR)",
0x4a, L"- (ZEHNERTASTATUR)",
0x4b, L"4 (ZEHNERTASTATUR)",
0x4c, L"5 (ZEHNERTASTATUR)",
0x4d, L"6 (ZEHNERTASTATUR)",
0x4e, L"+ (ZEHNERTASTATUR)",
0x4f, L"1 (ZEHNERTASTATUR)",
0x50, L"2 (ZEHNERTASTATUR)",
0x51, L"3 (ZEHNERTASTATUR)",
0x52, L"0 (ZEHNERTASTATUR)",
0x53, L"KOMMA (ZEHNERTASTATUR)",
0x56, L"MOD 4 LINKS",
0x57, L"F11",
0x58, L"F12",
0 , NULL
};
static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNamesExt[] = {
0x1c, L"EINGABE (ZEHNERTASTATUR)",
0x1d, L"STRG-RECHTS",
0x35, L"/ (ZEHNERTASTATUR)",
0x37, L"DRUCK",
0x38, L"MOD 4 RECHTS",
0x45, L"NUM-FESTSTELL",
0x46, L"UNTBR",
0x47, L"POS1",
0x48, L"NACH-OBEN",
0x49, L"BILD-NACH-OBEN",
0x4b, L"NACH-LINKS",
0x4d, L"NACH-RECHTS",
0x4f, L"ENDE",
0x50, L"NACH-UNTEN",
0x51, L"BILD-NACH-UNTEN",
0x52, L"EINFG",
0x53, L"ENTF",
0x54, L"<00>",
0x56, L"HILFE",
0x5b, L"LINKE WINDOWS",
0x5c, L"RECHTE WINDOWS",
0x5d, L"ANWENDUNG",
0 , NULL
};
static ALLOC_SECTION_LDATA DEADKEY_LPWSTR aKeyNamesDead[] = {
//Tottaste 1 (links neben 1)
L"^" L"ZIRKUMFLEX",
L"\x02C7" L"HATSCHEK",
L"\x21bb" L"DREHEN",
L"\x02d9" L"PUNKT_DARUEBER",
L"\x02de" L"RHOTIC_HOOK",
L"\x002E" L"PUNKT_DARUNTER",
//Tottaste 2 (links neben Rücktaste)
L"\x0060" L"GRAVIS",
L"\x00B8" L"CEDILLE",
L"\x02DA" L"RING",
L"\x00A8" L"TREMA",
L"\x1ffe" L"SPIRITUS_ASPER",
L"\x00AF" L"MAKRON",
//Tottaste 3 (rechts neben „ß“)
L"\x00B4" L"AKUT",
L"\x007E" L"TILDE",
L"\x002D" L"QUERSTRICH",
L"\x02DD" L"DOPPEL_AKUT",
L"\x1fbf" L"SPIRITUS_LENIS",
L"\x02D8" L"BREVE",
NULL
};
static ALLOC_SECTION_LDATA KBDTABLES KbdTables = {
// Modifier keys
&CharModifiers,
// Characters tables
aVkToWcharTable,
// Diakritika vorhanden
aDeadKey,
// Namen der Keys
aKeyNames,
aKeyNamesExt,
aKeyNamesDead,
// Scancodes zu Virtual Keys
ausVK,
sizeof(ausVK) / sizeof(ausVK[0]),
aE0VscToVk,
aE1VscToVk,
// Kein Rechtes Alt daher AltGr auskommentiert
// MAKELONG(KLLF_ALTGR, KBD_VERSION),
0,
// keine Ligaturen
0,
0,
NULL
};
PKBDTABLES KbdLayerDescriptor(VOID)
{
return &KbdTables;
}

View File

@ -1,4 +0,0 @@
LIBRARY KBDKOY
EXPORTS
KbdLayerDescriptor @1

View File

@ -1,126 +0,0 @@
/****************************** Module Header ******************************\
* Module Name: KBDKOY.H
* KOY-Layout, basierend auf AdNW auf Neo2
\***************************************************************************/
// basiert auf den in der kbd.h definierten KBD-Type 4
#define KBD_TYPE 4
// kbd.h einschließen
#include "kbd.h"
#include <dontuse.h>
/* **************************************************************************************************************\
*
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* |T01| |F1 ¦F2 ¦F3 ¦F4 | |F5 ¦F6 ¦F7 ¦F8 | |F9 ¦F10¦F11¦F12| |Druk¦Roll¦Paus|
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* +---------------------------------------------------------+ +--------------+ +---------------+
* |T29¦T02¦T03¦T04¦T05¦T06¦T07¦T08¦T09¦T0A¦T0B¦T0C¦T0D¦ T0E | |Einf¦Pos1¦PgUp| ¦Num¦ / ¦ * ¦ - ¦
* |---------------------------------------------------------| |--------------| +---+---+---+---¦
* |T0F¦T10¦T11¦T12¦T13¦T14¦T15¦T16¦T17¦T18¦T19¦T1A¦T1B¦ Ret | |Entf¦Ende¦PgDn| ¦ 7 ¦ 8 ¦ 9 ¦ ¦
* |-----------------------------------------------------+ | +--------------+ +---+---+---¦ ¦
* | T3A ¦T1E¦T1F¦T20¦T21¦T22¦T23¦T24¦T25¦T26¦T27¦T28¦T2B¦ | ¦ 4 ¦ 5 ¦ 6 ¦ + ¦
* |---------------------------------------------------------| +----+ +---+---+---+---¦
* |T2A ¦T56¦T2C¦T2D¦T2E¦T2F¦T30¦T31¦T32¦T33¦T34¦T35¦ T36 | | Up | ¦ 1 ¦ 2 ¦ 3 ¦ ¦
* |---------------------------------------------------------| +----+----+----+ +-------+---¦ ¦
* | Str ¦ Fe ¦ Al ¦ Leerzeichen ¦X38 ¦ Fe ¦ Me ¦ Str | |Left¦Down¦ Re.¦ ¦ 0 ¦ , ¦Ent¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
*
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* |Esc| |F1 ¦F2 ¦F3 ¦F4 | |F5 ¦F6 ¦F7 ¦F8 | |F9 ¦F10¦F11¦F12| |Druk¦Roll¦Paus|
* +---+ +---------------+ +---------------+ +---------------+ +--------------+
* +---------------------------------------------------------+ +--------------+ +---------------+
* |T1 ¦1 ¦2 ¦3 ¦4 ¦5 ¦6 ¦7 ¦8 ¦9 ¦0 ¦- ¦T2 ¦Back | |Einf¦Pos1¦PgUp| ¦Num¦ / ¦ * ¦ - ¦
* |---------------------------------------------------------| |--------------| +---+---+---+---¦
* |Tab¦k ¦. ¦o ¦, ¦y ¦v ¦g ¦c ¦l ¦ß ¦z ¦T3 ¦ Ret | |Entf¦Ende¦PgDn| ¦ 7 ¦ 8 ¦ 9 ¦ ¦
* |-----------------------------------------------------+ | +--------------+ +---+---+---¦ ¦
* | M3 ¦h ¦a ¦e ¦i ¦u ¦d ¦t ¦r ¦n ¦s ¦f ¦M3 ¦ | ¦ 4 ¦ 5 ¦ 6 ¦ + ¦
* |---------------------------------------------------------| +----+ +---+---+---+---¦
* |Ums ¦M4 ¦x ¦q ¦ä ¦ü ¦ö ¦b ¦p ¦w ¦m ¦j ¦ Umsch | | Up | ¦ 1 ¦ 2 ¦ 3 ¦ ¦
* |---------------------------------------------------------| +----+----+----+ +-------+---¦ ¦
* | Str ¦ Fe ¦ Al ¦ Leerzeichen ¦ M4 ¦ Fe ¦ Me ¦ Str | |Left¦Down¦ Re.¦ ¦ 0 ¦ , ¦Ent¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
\************************************************************************************************************** */
// Tastenumbelegung für KOY ; sonstige Tastenzuordnung siehe kbd.h
#undef T0D
#define T0D _EQ( OEM_2 ) // T2
#undef T10
#define T10 _EQ( 'K' )
#undef T11
#define T11 _EQ( OEM_PERIOD )
#undef T12
#define T12 _EQ( 'O' )
#undef T13
#define T13 _EQ( OEM_COMMA )
#undef T14
#define T14 _EQ( 'Y' )
#undef T15
#define T15 _EQ( 'V' )
#undef T16
#define T16 _EQ( 'G' )
#undef T17
#define T17 _EQ( 'C' )
#undef T18
#define T18 _EQ( 'L' )
#undef T19
#define T19 _EQ( OEM_3 ) // qwertz-ß
#undef T1A
#define T1A _EQ( 'Z' )
#undef T1B
#define T1B _EQ( OEM_4 ) // T3
#undef T1E
#define T1E _EQ( 'H' )
#undef T1F
#define T1F _EQ( 'A' )
#undef T20
#define T20 _EQ( 'E' )
#undef T21
#define T21 _EQ( 'I' )
#undef T22
#define T22 _EQ( 'U' )
#undef T23
#define T23 _EQ( 'D' )
#undef T24
#define T24 _EQ( 'T' )
#undef T25
#define T25 _EQ( 'R' )
#undef T26
#define T26 _EQ( 'N' )
#undef T27
#define T27 _EQ( 'S' )
#undef T28
#define T28 _EQ( 'F' )
#undef T29
#define T29 _EQ( OEM_1 ) // T1
#undef T2B
#define T2B _EQ( OEM_102 ) // Mod 3
#undef T2C
#define T2C _EQ( 'X' )
#undef T2D
#define T2D _EQ( 'Q' )
#undef T2E
#define T2E _EQ( OEM_7 ) // ä
#undef T2F
#define T2F _EQ( OEM_5 ) // ü
#undef T30
#define T30 _EQ( OEM_6 ) // ö
#undef T31
#define T31 _EQ( 'B' )
#undef T32
#define T32 _EQ( 'P' )
#undef T33
#define T33 _EQ( 'W' )
#undef T34
#define T34 _EQ( 'M' )
#undef T35
#define T35 _EQ( 'J' )
#undef T3A
#define T3A _EQ( OEM_102 ) // Mod 3
#undef X38
#define X38 _EQ( OEM_8 ) // Mod 4
#undef T56
#define T56 _EQ( OEM_8 ) // Mod 4

View File

@ -1,35 +0,0 @@
#include <windows.h>
#define VER_USE_OTHER_MAJOR_MINOR_VER
#define VER_PRODUCTMAJORVERSION 2
#define VER_PRODUCTMINORVERSION 0
#define BETA 1
#include <ntverp.h>
#undef VER_PRODUCTBUILD
#define VER_PRODUCTBUILD 1234
#undef VER_PRODUCTBUILD_QFE
#define VER_PRODUCTBUILD_QFE 0
#undef VER_COMPANYNAME_STR
#define VER_COMPANYNAME_STR "neo-layout.org"
#undef VER_PRODUCTNAME_STR
#define VER_PRODUCTNAME_STR "KOY Tastaturtreiber"
#define VER_LEGALCOPYRIGHT_STR "https://neo-layout.org/Beitragen/Lizenzfragen/"
#undef VER_LEGALTRADEMARKS_STR
#define VER_LEGALTRADEMARKS_STR \
"wiki.neo-layout.org/wiki/Lizenzfragen"
#define VER_FILETYPE VFT_DLL
#define VER_FILESUBTYPE VFT2_DRV_KEYBOARD
#define VER_FILEDESCRIPTION_STR "Deutsch (KOY) Tastaturlayout"
#define VER_INTERNALNAME_STR "kbdkoy"
#define VER_ORIGINALFILENAME_STR "kbdkoy.dll"
#define VER_LANGNEUTRAL
#include "common.ver"

View File

@ -1,268 +0,0 @@
/****************************************************************************\
* Module Name: KBDMINE.C
* Mine-Layout, basierend auf Neo2
\****************************************************************************/
#include <windows.h>
#include "kbd.h"
#include "../kbd_mod.h"
#include "../keysym4utf16.h"
#include "kbdmine.h"
#include "../kbd_base.c"
/* **************************************************************************\
* Spezielle Werte für den VK (Spalte 1)
* 0xff - Tote Zeichen für obige Zeile
* 0 - Beendet die gesamte Liste
*
* Spezielle Werte für Attributes (Spalte 2)
* CAPLOK - CAPS-LOCK wirkt auf diese Taste wie SHIFT
* KANALOK - Mod4-LOCK wirkt auf diese Taste wie Mod4
*
* Spezielle Werte für wch[*]
* WCH_NONE - Keine Belegung
* WCH_DEAD - Totes Zeichen
* WCH_LGTR - Ligatur
\************************************************************************** */
static ALLOC_SECTION_LDATA VK_TO_WCHARS6 aVkToWch6[] = {
// Reihenfolge der Ebene wie oben ( ALLOC_SECTION_LDATA MODIFIERS CharModifiers = { &aVkToBits[0],)… festgelegt
// | CapsLock | | SHIFT | NEU | KANA | NEU+Shift | KANA+NEU |
// |===================|===========|=======================|=======================|===============|===================|===================|
// Zeile 1
{VK_OEM_1 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD }, //Tote Taste 1
{0xff ,0 ,'^' ,caron ,totdreh ,abovedot ,rhotichook ,'.' },
{'1' ,KANALOK ,'1' ,degree ,onesuperior ,ordfeminine ,onesubscript ,notsign },
{'3' ,KANALOK ,'3' ,litersign ,threesuperior ,numerosign ,threesubscript ,logicaland },
{'4' ,KANALOK ,'4' ,guillemotright ,guillemotright2 ,WCH_NONE ,femalesymbol ,uptack },
{'5' ,KANALOK ,'5' ,guillemotleft ,guillemotleft2 ,periodcentered ,malesymbol ,measuredangle },
{'7' ,KANALOK ,'7' ,EuroSign ,yen ,currency ,scriptkappa ,rightarrow },
{'8' ,KANALOK ,'8' ,doublelowquotemark ,singlelowquotemark ,WCH_NONE ,leftanglebracket ,infinity },
{'9' ,KANALOK ,'9' ,leftdoublequotemark ,leftsinglequotemark ,'/' ,rightanglebracket ,variation },
{'0' ,KANALOK ,'0' ,rightdoublequotemark ,rightsinglequotemark ,'*' ,zerosubscript ,emptyset },
{VK_OEM_MINUS ,KANALOK ,'-' ,emdash ,WCH_NONE ,'-' ,nobreakhyphen ,hyphen },
{VK_OEM_2 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD }, //Tote Taste 2
{0xff ,0 ,grave ,cedilla ,ringabove ,diaeresis ,greek_dasia ,macron },
{VK_TAB ,0 ,'\t' ,'\t' ,WCH_DEAD ,'\t' ,'\t' ,'\t' },
{0xff ,0 ,WCH_NONE ,WCH_NONE ,Multi_key ,WCH_NONE ,WCH_NONE ,WCH_NONE },
{'L' ,CAPLOK | KANALOK ,'l' ,'L' ,'_' ,WCH_NONE ,Greek_lamda ,Greek_LAMDA },
{'U' ,CAPLOK | KANALOK ,'u' ,'U' ,'[' ,WCH_NONE ,WCH_NONE ,includedin },
{'A' ,CAPLOK | KANALOK ,'a' ,'A' ,']' ,WCH_NONE ,Greek_alpha ,forall },
{'Q' ,CAPLOK | KANALOK ,'q' ,'Q' ,asciicircum ,WCH_NONE ,scriptphi ,doublestruck_q },
{'W' ,CAPLOK | KANALOK ,'w' ,'W' ,'!' ,exclamdown ,Greek_omega ,Greek_OMEGA },
{'B' ,CAPLOK | KANALOK ,'b' ,'B' ,'<' ,'7' ,Greek_beta ,doublearrowleft },
{'D' ,CAPLOK | KANALOK ,'d' ,'D' ,'>' ,'8' ,Greek_delta ,Greek_DELTA },
{'G' ,CAPLOK | KANALOK ,'g' ,'G' ,'=' ,'9' ,Greek_gamma ,Greek_GAMMA },
{'Z' ,CAPLOK | KANALOK ,'z' ,'Z' ,'@' ,minussign ,Greek_zeta ,doublestruck_z },
{'C' ,CAPLOK | KANALOK ,'c' ,'C' ,backslash ,WCH_NONE ,Greek_chi ,doublestruck_c },
{'R' ,CAPLOK | KANALOK ,'r' ,'R' ,'/' ,WCH_NONE ,Greek_rho ,doublestruck_r },
{'I' ,CAPLOK | KANALOK ,'i' ,'I' ,'{' ,WCH_NONE ,Greek_iota ,integral },
{'E' ,CAPLOK | KANALOK ,'e' ,'E' ,'}' ,WCH_NONE ,Greek_epsilon ,thereexists },
{'O' ,CAPLOK | KANALOK ,'o' ,'O' ,'*' ,WCH_NONE ,Greek_omicron ,elementof },
{'M' ,CAPLOK | KANALOK ,'m' ,'M' ,'?' ,questiondown ,Greek_mu ,ifonlyif },
{'N' ,CAPLOK | KANALOK ,'n' ,'N' ,'(' ,'4' ,Greek_nu ,doublestruck_n },
{'T' ,CAPLOK | KANALOK ,'t' ,'T' ,')' ,'5' ,Greek_tau ,partialderivative },
{'S' ,CAPLOK | KANALOK ,'s' ,'S' ,'-' ,'6' ,Greek_sigma ,Greek_SIGMA },
{'H' ,CAPLOK | KANALOK ,'h' ,'H' ,':' ,',' ,Greek_psi ,Greek_PSI },
{'V' ,CAPLOK | KANALOK ,'v' ,'V' ,'#' ,WCH_NONE ,WCH_NONE ,radical },
{'X' ,CAPLOK | KANALOK ,'x' ,'X' ,'$' ,WCH_NONE ,Greek_xi ,Greek_XI },
{VK_OEM_5 /*ü*/ ,CAPLOK | KANALOK ,udiaeresis ,Udiaeresis ,'|' ,WCH_NONE ,WCH_NONE ,union },
{VK_OEM_7 /*ä*/ ,CAPLOK | KANALOK ,adiaeresis ,Adiaeresis ,'~' ,WCH_NONE ,Greek_eta ,alefsymbol },
{VK_OEM_6 /*ö*/ ,CAPLOK | KANALOK ,odiaeresis ,Odiaeresis ,'`' ,WCH_NONE ,straightepsilon ,intersection },
{'P' ,CAPLOK | KANALOK ,'p' ,'P' ,'+' ,':' ,Greek_pi ,Greek_PI },
{'F' ,CAPLOK | KANALOK ,'f' ,'F' ,'%' ,'1' ,Greek_phi ,Greek_PHI },
{VK_OEM_COMMA ,KANALOK ,',' ,endash ,quotedbl ,'2' ,scriptrho ,implies },
{VK_OEM_PERIOD ,KANALOK ,'.' ,enfilledcircbullet ,apostrophe ,'3' ,scripttheta ,arrowfrombarright },
{'K' ,CAPLOK | KANALOK ,'k' ,'K' ,';' ,'.' ,Greek_kappa ,multiply },
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
};
static ALLOC_SECTION_LDATA VK_TO_WCHARS7 aVkToWch7[] = {
// | CapsLock | | SHIFT | NEU | KANA | NEU+Shift | KANA+NEU | Control |
// |===================|===========|===========|===========|===========|=======================|===============|===============|
{VK_OEM_3 /*ß*/ ,CAPLOK | KANALOK ,ssharp ,Ssharp ,slong ,';' ,Greek_finalsmallsigma ,jot ,escape },
{VK_OEM_4 ,0 ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,WCH_DEAD ,infoseparator3 }, //Tote Taste 3
{0xff ,0 ,acute ,'~' ,'-' ,doubleacute,greek_psili ,breve ,WCH_NONE },
{'Y' ,CAPLOK | KANALOK ,'y' ,'Y' ,'&' ,'+' ,Greek_upsilon ,nabla ,infoseparator4 },
{VK_SPACE ,KANALOK ,space ,space ,space ,'0' ,nobreakspace ,nnobreakspace ,space },
{VK_BACK ,0 ,'\b' ,'\b' ,'\b' ,'\b' ,'\b' ,'\b' ,delete },
{VK_ESCAPE ,0 ,escape ,escape ,escape ,escape ,escape ,escape ,escape },
{VK_RETURN ,0 ,'\r' ,'\r' ,'\r' ,'\r' ,'\r' ,'\r' ,'\n' },
{VK_CANCEL ,0 ,endoftext ,endoftext ,WCH_NONE ,WCH_NONE ,WCH_NONE ,WCH_NONE ,endoftext },
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }
};
static ALLOC_SECTION_LDATA VK_TO_WCHARS8 aVkToWch8[] = {
// | CapsLock | | SHIFT | NEU | KANA | NEU+Shift | KANA+NEU | Control | Control+Shift |
// |===================|===========|===========|===========|===========|===================|===============|===========|===============|
{'2' ,KANALOK ,'2' ,section ,twosuperior,masculine ,twosubscript ,logicalor ,WCH_NONE ,0x0000 },
{'6' ,KANALOK ,'6' ,dollar ,cent ,sterling ,maleandfemalesign ,parallelto ,WCH_NONE ,infoseparator2 },
{'J' ,CAPLOK | KANALOK ,'j' ,'J' ,ellipsis ,WCH_NONE ,Greek_theta ,Greek_THETA,WCH_NONE ,infoseparator1 },
{0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0}
};
// Hier müssen die verwendeten WChar_Tables vorkommen; Numpad MUSS letzte Zeile sein.
// Die Funktion VkKeyScan() versucht, zu einem Zeichen den zugehörigen Virtual Key
// und Modifier zu finden. Die Numpad-Definition muss zum Schluss kommen, damit Zeichen
// wie '0' als vom Hauptfeld kommend interpretiert werden, falls dort vorhanden.
static ALLOC_SECTION_LDATA VK_TO_WCHAR_TABLE aVkToWcharTable[] = {
{ (PVK_TO_WCHARS1)aVkToWch6, 6, sizeof(aVkToWch6[0]) },
{ (PVK_TO_WCHARS1)aVkToWch7, 7, sizeof(aVkToWch7[0]) },
{ (PVK_TO_WCHARS1)aVkToWch8, 8, sizeof(aVkToWch8[0]) },
{ (PVK_TO_WCHARS1)aVkToWch4, 4, sizeof(aVkToWch4[0]) },
{ NULL, 0, 0 },
};
/* **************************************************************************\
* aKeyNames[], aKeyNamesExt[] - Virtual Scancode to Key Name tables
*
* Table attributes: Ordered Scan (by scancode), null-terminated
*
* Nur für Tasten, die keine Zeichen erzeugen, Tasten die Zeichen erzeugen
* werden danach benannt
\************************************************************************** */
static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNames[] = {
0x01, L"ESC",
0x0e, L"R\x00DC" L"CKTASTE",
0x0f, L"TABULATOR",
0x1c, L"EINGABE",
0x1d, L"STRG",
0x28, L"MOD 3 RECHTS",
0x2a, L"UMSCHALT",
0x36, L"UMSCHALT RECHTS",
0x37, L"* (ZEHNERTASTATUR)",
0x38, L"ALT",
0x39, L"LEER",
0x3a, L"MOD 3 LINKS",
0x3b, L"F1",
0x3c, L"F2",
0x3d, L"F3",
0x3e, L"F4",
0x3f, L"F5",
0x40, L"F6",
0x41, L"F7",
0x42, L"F8",
0x43, L"F9",
0x44, L"F10",
0x45, L"PAUSE",
0x46, L"ROLLEN-FESTSTELL",
0x47, L"7 (ZEHNERTASTATUR)",
0x48, L"8 (ZEHNERTASTATUR)",
0x49, L"9 (ZEHNERTASTATUR)",
0x4a, L"- (ZEHNERTASTATUR)",
0x4b, L"4 (ZEHNERTASTATUR)",
0x4c, L"5 (ZEHNERTASTATUR)",
0x4d, L"6 (ZEHNERTASTATUR)",
0x4e, L"+ (ZEHNERTASTATUR)",
0x4f, L"1 (ZEHNERTASTATUR)",
0x50, L"2 (ZEHNERTASTATUR)",
0x51, L"3 (ZEHNERTASTATUR)",
0x52, L"0 (ZEHNERTASTATUR)",
0x53, L"KOMMA (ZEHNERTASTATUR)",
0x56, L"MOD 4 LINKS",
0x57, L"F11",
0x58, L"F12",
0 , NULL
};
static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNamesExt[] = {
0x1c, L"EINGABE (ZEHNERTASTATUR)",
0x1d, L"STRG-RECHTS",
0x35, L"/ (ZEHNERTASTATUR)",
0x37, L"DRUCK",
0x38, L"MOD 4 RECHTS",
0x45, L"NUM-FESTSTELL",
0x46, L"UNTBR",
0x47, L"POS1",
0x48, L"NACH-OBEN",
0x49, L"BILD-NACH-OBEN",
0x4b, L"NACH-LINKS",
0x4d, L"NACH-RECHTS",
0x4f, L"ENDE",
0x50, L"NACH-UNTEN",
0x51, L"BILD-NACH-UNTEN",
0x52, L"EINFG",
0x53, L"ENTF",
0x54, L"<00>",
0x56, L"HILFE",
0x5b, L"LINKE WINDOWS",
0x5c, L"RECHTE WINDOWS",
0x5d, L"ANWENDUNG",
0 , NULL
};
static ALLOC_SECTION_LDATA DEADKEY_LPWSTR aKeyNamesDead[] = {
//Tottaste 1 (links neben 1)
L"^" L"ZIRKUMFLEX",
L"\x02C7" L"HATSCHEK",
L"\x21bb" L"DREHEN",
L"\x02d9" L"PUNKT_DARUEBER",
L"\x02de" L"RHOTIC_HOOK",
L"\x002E" L"PUNKT_DARUNTER",
//Tottaste 2 (links neben Rücktaste)
L"\x0060" L"GRAVIS",
L"\x00B8" L"CEDILLE",
L"\x02DA" L"RING",
L"\x00A8" L"TREMA",
L"\x1ffe" L"SPIRITUS_ASPER",
L"\x00AF" L"MAKRON",
//Tottaste 3 (rechts neben „ß“)
L"\x00B4" L"AKUT",
L"\x007E" L"TILDE",
L"\x002D" L"QUERSTRICH",
L"\x02DD" L"DOPPEL_AKUT",
L"\x1fbf" L"SPIRITUS_LENIS",
L"\x02D8" L"BREVE",
NULL
};
static ALLOC_SECTION_LDATA KBDTABLES KbdTables = {
// Modifier keys
&CharModifiers,
// Characters tables
aVkToWcharTable,
// Diakritika vorhanden
aDeadKey,
// Namen der Keys
aKeyNames,
aKeyNamesExt,
aKeyNamesDead,
// Scancodes zu Virtual Keys
ausVK,
sizeof(ausVK) / sizeof(ausVK[0]),
aE0VscToVk,
aE1VscToVk,
// Kein Rechtes Alt daher AltGr auskommentiert
// MAKELONG(KLLF_ALTGR, KBD_VERSION),
0,
// keine Ligaturen
0,
0,
NULL
};
PKBDTABLES KbdLayerDescriptor(VOID)
{
return &KbdTables;
}

View File

@ -1,4 +0,0 @@
LIBRARY KBDMINE
EXPORTS
KbdLayerDescriptor @1

Some files were not shown because too many files have changed in this diff Show More