Compare commits

..

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

  1. 2
      Compose/check-compose.pl
  2. 58
      mac_osx/neo-layouts.bundle/Contents/Resources/Deutsch (NeoQwertz).keylayout
  3. 20
      windows/kbdneo2/README.md
  4. 95
      windows/kbdneo2/build/build_all.cmd
  5. 32
      windows/kbdneo2/build/build_layout.cmd
  6. 2
      windows/kbdneo2/build/build_variant_x64.cmd
  7. 2
      windows/kbdneo2/build/build_variant_x86.cmd
  8. 2
      windows/kbdneo2/build/build_variant_x86_wow64.cmd
  9. 32
      windows/kbdneo2/build/build_x64.cmd
  10. 42
      windows/kbdneo2/build/build_x86.cmd
  11. BIN
      windows/kbdneo2/build/kbdnoted_win10_install.reg
  12. BIN
      windows/kbdneo2/build/kbdnoted_win10_uninstall.reg
  13. 8
      windows/kbdneo2/build/zip_all.cmd
  14. 47
      windows/kbdneo2/build/zip_layout.cmd
  15. 3243
      windows/kbdneo2/source/kbd_base.c
  16. 3244
      windows/kbdneo2/source/kbdbone/kbdbone.c
  17. 19
      windows/kbdneo2/source/kbdbone/kbdbone.h
  18. 3280
      windows/kbdneo2/source/kbdgr2/kbdgr2.c
  19. 19
      windows/kbdneo2/source/kbdgr2/kbdgr2.h
  20. 3245
      windows/kbdneo2/source/kbdkoy/kbdkoy.c
  21. 19
      windows/kbdneo2/source/kbdkoy/kbdkoy.h
  22. 3252
      windows/kbdneo2/source/kbdmine/kbdmine.c
  23. 19
      windows/kbdneo2/source/kbdmine/kbdmine.h
  24. 3244
      windows/kbdneo2/source/kbdneo2/kbdneo2.c
  25. 37
      windows/kbdneo2/source/kbdneo2/kbdneo2.h
  26. 268
      windows/kbdneo2/source/kbdnoted/kbdnoted.c
  27. 4
      windows/kbdneo2/source/kbdnoted/kbdnoted.def
  28. 122
      windows/kbdneo2/source/kbdnoted/kbdnoted.h
  29. 35
      windows/kbdneo2/source/kbdnoted/kbdnoted.rc

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

@ -1148,7 +1148,6 @@
</action>
<action id="-">
<when state="none" output="-"/>
<when state="Bugfixes" output=";"/>
<when state="Ebene 1 T1 Zirkumflex" output="⁻"/>
<when state="compose" next="compose -"/>
<when state="compose +" output="±"/>
@ -1177,7 +1176,7 @@
</action>
<action id="101">
<when state="none" output="d"/>
<when state="Bugfixes" output="{"/>
<when state="Bugfixes" output=":"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ď"/>
<when state="Ebene 2 T2 Cedille" output="ḑ"/>
<when state="Ebene 3 T1 Drehen" output="p"/>
@ -1204,7 +1203,7 @@
</action>
<action id="103">
<when state="none" output="f"/>
<when state="Bugfixes" output="}"/>
<when state="Bugfixes" output="="/>
<when state="Ebene 3 T1 Drehen" output="ɟ"/>
<when state="Ebene 4 T1 Punkt darüber" output="ḟ"/>
<when state="Ebene 5 T1 Haken" output="ƒ"/>
@ -1213,7 +1212,7 @@
</action>
<action id="104">
<when state="none" output="g"/>
<when state="Bugfixes" output="*"/>
<when state="Bugfixes" output="&#x003E;"/>
<when state="Ebene 1 T1 Zirkumflex" output="ĝ"/>
<when state="Ebene 1 T3 Akut" output="ǵ"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ǧ"/>
@ -1229,7 +1228,7 @@
</action>
<action id="105">
<when state="none" output="h"/>
<when state="Bugfixes" output="?"/>
<when state="Bugfixes" output="&#x003C;"/>
<when state="Ebene 1 T1 Zirkumflex" output="ĥ"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ȟ"/>
<when state="Ebene 2 T2 Cedille" output="ḩ"/>
@ -1252,7 +1251,7 @@
</action>
<action id="106">
<when state="none" output="j"/>
<when state="Bugfixes" output="("/>
<when state="Bugfixes" output=";"/>
<when state="Ebene 1 T1 Zirkumflex" output="ĵ"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ǰ"/>
<when state="Ebene 3 T1 Drehen" output="ɾ"/>
@ -1266,7 +1265,7 @@
</action>
<action id="107">
<when state="none" output="k"/>
<when state="Bugfixes" output=")"/>
<when state="Bugfixes" output="!"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ǩ"/>
<when state="Ebene 2 T2 Cedille" output="ķ"/>
<when state="Ebene 3 T1 Drehen" output="ʞ"/>
@ -1286,7 +1285,6 @@
</action>
<action id="109">
<when state="none" output="p"/>
<when state="Bugfixes" output="…"/>
<when state="Ebene 3 T1 Drehen" output="d"/>
<when state="Ebene 4 T1 Punkt darüber" output="ṗ"/>
<when state="Ebene 5 T1 Haken" output="ƥ"/>
@ -1299,12 +1297,12 @@
</action>
<action id="110">
<when state="none" output="q"/>
<when state="Bugfixes" output=""/>
<when state="Bugfixes" output="&#x0026;"/>
<when state="Ebene 3 T1 Drehen" output="b"/>
</action>
<action id="111">
<when state="none" output="r"/>
<when state="Bugfixes" output="]"/>
<when state="Bugfixes" output=")"/>
<when state="Ebene 1 T3 Akut" output="ŕ"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ř"/>
<when state="Ebene 2 T2 Cedille" output="ŗ"/>
@ -1321,7 +1319,7 @@
</action>
<action id="112">
<when state="none" output="s"/>
<when state="Bugfixes" output="/"/>
<when state="Bugfixes" output="?"/>
<when state="Ebene 1 T1 Zirkumflex" output="ŝ"/>
<when state="Ebene 1 T3 Akut" output="ś"/>
<when state="Ebene 2 T1 Caron Hatschek" output="š"/>
@ -1334,7 +1332,7 @@
</action>
<action id="113">
<when state="none" output="t"/>
<when state="Bugfixes" output="^"/>
<when state="Bugfixes" output="-"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ť"/>
<when state="Ebene 2 T2 Cedille" output="ţ"/>
<when state="Ebene 3 T1 Drehen" output="ʇ"/>
@ -1348,7 +1346,7 @@
</action>
<action id="114">
<when state="none" output="v"/>
<when state="Bugfixes" output="~"/>
<when state="Bugfixes" output="_"/>
<when state="Ebene 2 T3 Tilde" output="ṽ"/>
<when state="Ebene 3 T1 Drehen" output="ʌ"/>
<when state="Ebene 5 T1 Haken" output="ⱱ"/>
@ -1356,7 +1354,7 @@
</action>
<action id="115">
<when state="none" output="w"/>
<when state="Bugfixes" output="_"/>
<when state="Bugfixes" output="^"/>
<when state="Ebene 1 T1 Zirkumflex" output="ŵ"/>
<when state="Ebene 1 T2 Gravis" output="ẁ"/>
<when state="Ebene 1 T3 Akut" output="ẃ"/>
@ -1371,7 +1369,7 @@
</action>
<action id="116">
<when state="none" output="x"/>
<when state="Bugfixes" output="$"/>
<when state="Bugfixes" output=""/>
<when state="Ebene 1 T3 Akut" output="ź"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ǯ"/>
<when state="Ebene 4 T1 Punkt darüber" output="ẋ"/>
@ -1393,7 +1391,7 @@
</action>
<action id="12">
<when state="none" output="ä"/>
<when state="Bugfixes" output="@"/>
<when state="Bugfixes" output="|"/>
<when state="Ebene 4 T2 Trema Diaeresis" output="ä"/>
<when state="Ebene 5 Spiritus lenis" output="ἠ"/>
<when state="Ebene 5 T2 Spiritus asper" output="ἡ"/>
@ -1411,12 +1409,12 @@
</action>
<action id="123">
<when state="none" output="ö"/>
<when state="Bugfixes" output=":"/>
<when state="Bugfixes" output="$"/>
<when state="Ebene 4 T2 Trema Diaeresis" output="ö"/>
</action>
<action id="124">
<when state="none" output="ü"/>
<when state="Bugfixes" output="ſ"/>
<when state="Bugfixes" output="#"/>
<when state="Ebene 1 T3 Akut" output="ǘ"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ǚ"/>
<when state="Ebene 4 T2 Trema Diaeresis" output="ü"/>
@ -1464,7 +1462,7 @@
</action>
<action id="135">
<when state="none" output="p"/>
<when state="Bugfixes" output="&#x0026;"/>
<when state="Bugfixes" output="~"/>
<when state="Ebene 3 T1 Drehen" output="d"/>
<when state="Ebene 4 T1 Punkt darüber" output="ṗ"/>
<when state="Ebene 5 T1 Haken" output="ƥ"/>
@ -2549,7 +2547,7 @@
</action>
<action id="62">
<when state="none" output="o"/>
<when state="Bugfixes" output="="/>
<when state="Bugfixes" output="*"/>
<when state="Ebene 1 T1 Zirkumflex" output="ô"/>
<when state="Ebene 1 T2 Gravis" output="ò"/>
<when state="Ebene 1 T3 Akut" output="ó"/>
@ -2637,7 +2635,7 @@
</action>
<action id="67">
<when state="none" output="i"/>
<when state="Bugfixes" output=">"/>
<when state="Bugfixes" output="/"/>
<when state="Ebene 1 T1 Zirkumflex" output="î"/>
<when state="Ebene 1 T2 Gravis" output="ì"/>
<when state="Ebene 1 T3 Akut" output="í"/>
@ -2682,7 +2680,7 @@
</action>
<action id="69">
<when state="none" output="e"/>
<when state="Bugfixes" output="["/>
<when state="Bugfixes" output="}"/>
<when state="Ebene 1 T1 Zirkumflex" output="ê"/>
<when state="Ebene 1 T2 Gravis" output="è"/>
<when state="Ebene 1 T3 Akut" output="é"/>
@ -2776,7 +2774,7 @@
</action>
<action id="75">
<when state="none" output="n"/>
<when state="Bugfixes" output="+"/>
<when state="Bugfixes" output="("/>
<when state="Ebene 1 T1 Zirkumflex" output="ⁿ"/>
<when state="Ebene 1 T2 Gravis" output="ǹ"/>
<when state="Ebene 1 T3 Akut" output="ń"/>
@ -2857,7 +2855,7 @@
</action>
<action id="80">
<when state="none" output="l"/>
<when state="Bugfixes" output=";"/>
<when state="Bugfixes" output="["/>
<when state="Ebene 1 T3 Akut" output="ĺ"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ľ"/>
<when state="Ebene 2 T2 Cedille" output="ļ"/>
@ -2881,7 +2879,7 @@
</action>
<action id="82">
<when state="none" output="z"/>
<when state="Bugfixes" output="!"/>
<when state="Bugfixes" output="`"/>
<when state="Ebene 1 T3 Akut" output="ź"/>
<when state="Ebene 2 T1 Caron Hatschek" output="ž"/>
<when state="Ebene 3 T2 Ring" output="ʑ"/>
@ -2899,7 +2897,7 @@
</action>
<action id="83">
<when state="none" output="u"/>
<when state="Bugfixes" output="&#x003c;"/>
<when state="Bugfixes" output="\"/>
<when state="Ebene 1 T1 Zirkumflex" output="û"/>
<when state="Ebene 1 T2 Gravis" output="ù"/>
<when state="Ebene 1 T3 Akut" output="ú"/>
@ -2932,7 +2930,7 @@
</action>
<action id="85">
<when state="none" output="a"/>
<when state="Bugfixes" output="\"/>
<when state="Bugfixes" output="{"/>
<when state="Ebene 1 T1 Zirkumflex" output="â"/>
<when state="Ebene 1 T2 Gravis" output="à"/>
<when state="Ebene 1 T3 Akut" output="á"/>
@ -3031,7 +3029,7 @@
</action>
<action id="92">
<when state="none" output="y"/>
<when state="Bugfixes" output="#"/>
<when state="Bugfixes" output="@"/>
<when state="Ebene 1 T1 Zirkumflex" output="ŷ"/>
<when state="Ebene 1 T2 Gravis" output="ỳ"/>
<when state="Ebene 1 T3 Akut" output="ý"/>
@ -3085,7 +3083,7 @@
</action>
<action id="98">
<when state="none" output="b"/>
<when state="Bugfixes" output="`"/>
<when state="Bugfixes" output="+"/>
<when state="Ebene 3 T1 Drehen" output="q"/>
<when state="Ebene 3 T3 Schrägstrich" output="ƀ"/>
<when state="Ebene 4 T1 Punkt darüber" output="ḃ"/>
@ -3095,7 +3093,7 @@
</action>
<action id="99">
<when state="none" output="c"/>
<when state="Bugfixes" output="|"/>
<when state="Bugfixes" output="]"/>
<when state="Ebene 1 T1 Zirkumflex" output="ĉ"/>
<when state="Ebene 1 T3 Akut" output="ć"/>
<when state="Ebene 2 T1 Caron Hatschek" output="č"/>

@ -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:
* x86_x64 Cross Tools Command Prompt for VS 2019 starten
* ins `build`-Verzeichnis unterhalb von kbdneo wechseln
* `build_x64` ausführen
* 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.
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:
```

@ -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

@ -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

@ -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
)

@ -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
)

@ -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
)

@ -0,0 +1,32 @@
@echo off
pushd ..\source
REM Build Bone, Neo, Qwertz, Mine
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 ..
popd

@ -0,0 +1,42 @@
@echo off
pushd ..\source
REM Build Bone, Neo, Qwertz, Mine
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 ..
popd

@ -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

@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -26,24 +26,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¦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
#undef T0D

File diff suppressed because it is too large Load Diff

@ -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

File diff suppressed because it is too large Load Diff

@ -26,24 +26,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¦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

File diff suppressed because it is too large Load Diff

@ -26,24 +26,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¦j ¦l ¦u ¦a ¦q ¦w ¦b ¦d ¦g ¦y ¦z ¦ß ¦ Ret | |Entf¦Ende¦PgDn| ¦ 7 ¦ 8 ¦ 9 ¦ ¦
* |-----------------------------------------------------+ | +--------------+ +---+---+---¦ ¦
* | M3 ¦c ¦r ¦i ¦e ¦o ¦m ¦n ¦t ¦s ¦h ¦M3 ¦T3 ¦ | ¦ 4 ¦ 5 ¦ 6 ¦ + ¦
* |---------------------------------------------------------| +----+ +---+---+---+---¦
* |Ums ¦M4 ¦v ¦x ¦ü ¦ä ¦ö ¦p ¦f ¦, ¦. ¦k ¦ Umsch | | Up | ¦ 1 ¦ 2 ¦ 3 ¦ ¦
* |---------------------------------------------------------| +----+----+----+ +-------+---¦ ¦
* | Str ¦ Fe ¦ Al ¦ Leerzeichen ¦ M4 ¦ Fe ¦ Me ¦ Str | |Left¦Down¦ Re.¦ ¦ 0 ¦ , ¦Ent¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
\************************************************************************************************************** */
*/
// Tastenumbelegung für Mine ; sonstige Tastenzuordnung siehe kbd.h
#undef T0D

File diff suppressed because it is too large Load Diff

@ -10,41 +10,6 @@
#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¦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¦
* +---------------------------------------------------------+ +--------------+ +---------------+
*
\************************************************************************************************************** */
// Tastenumbelegung für Neo 2.0 ; sonstige Tastenzuordnung siehe kbd.h
#undef T0D
#define T0D _EQ( OEM_2 )
@ -117,4 +82,4 @@
#undef X38
#define X38 _EQ( OEM_8 ) // Mod 4
#undef T56
#define T56 _EQ( OEM_8 ) // Mod 4
#define T56 _EQ( OEM_8 ) // Mod 4

@ -1,268 +0,0 @@
/****************************************************************************\
* Module Name: KBDNOTED.C
* Noted-Layout, basierend auf Neo2
\****************************************************************************/
#include <windows.h>
#include "kbd.h"
#include "../kbd_mod.h"
#include "../keysym4utf16.h"
#include "kbdnoted.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 },
{'Z' ,CAPLOK | KANALOK ,'z' ,'Z' ,ellipsis ,WCH_NONE ,Greek_zeta ,doublestruck_z },
{'U' ,CAPLOK | KANALOK ,'u' ,'U' ,'[' ,WCH_NONE ,WCH_NONE ,multiply },
{'A' ,CAPLOK | KANALOK ,'a' ,'A' ,']' ,WCH_NONE ,Greek_alpha ,forall },
{'Q' ,CAPLOK | KANALOK ,'q' ,'Q' ,asciicircum ,WCH_NONE ,scriptphi ,doublestruck_q },
{'P' ,CAPLOK | KANALOK ,'p' ,'P' ,'!' ,exclamdown ,Greek_pi ,Greek_PI },
{'B' ,CAPLOK | KANALOK ,'b' ,'B' ,'<' ,'7' ,Greek_beta ,partialderivative },
{'M' ,CAPLOK | KANALOK ,'m' ,'M' ,'>' ,'8' ,Greek_mu ,arrowfrombarright },
{'L' ,CAPLOK | KANALOK ,'l' ,'L' ,'=' ,'9' ,Greek_lamda ,Greek_LAMDA },
{'F' ,CAPLOK | KANALOK ,'f' ,'F' ,'&' ,'+' ,Greek_phi ,Greek_PHI },
{'C' ,CAPLOK | KANALOK ,'c' ,'C' ,backslash ,WCH_NONE ,Greek_chi ,doublestruck_c },
{'S' ,CAPLOK | KANALOK ,'s' ,'S' ,'/' ,WCH_NONE ,Greek_sigma ,Greek_SIGMA },
{'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 },
{'D' ,CAPLOK | KANALOK ,'d' ,'D' ,'?' ,questiondown ,Greek_delta ,Greek_DELTA },
{'T' ,CAPLOK | KANALOK ,'t' ,'T' ,'(' ,'4' ,Greek_tau ,nabla },
{'N' ,CAPLOK | KANALOK ,'n' ,'N' ,')' ,'5' ,Greek_nu ,doublestruck_n },
{'R' ,CAPLOK | KANALOK ,'r' ,'R' ,'-' ,'6' ,Greek_rho ,doublestruck_r },
{'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 ,intersection },
{VK_OEM_6 /*ö*/ ,CAPLOK | KANALOK ,odiaeresis ,Odiaeresis ,'`' ,WCH_NONE ,straightepsilon ,includedin },
{'W' ,CAPLOK | KANALOK ,'w' ,'W' ,'+' ,':' ,Greek_omega ,Greek_OMEGA },
{'G' ,CAPLOK | KANALOK ,'g' ,'G' ,'%' ,'1' ,Greek_gamma ,Greek_GAMMA },
{VK_OEM_COMMA ,KANALOK ,',' ,endash ,quotedbl ,'2' ,scriptrho ,doublearrowleft },
{VK_OEM_PERIOD ,KANALOK ,'.' ,enfilledcircbullet ,apostrophe ,'3' ,scripttheta ,ifonlyif },
{'K' ,CAPLOK | KANALOK ,'k' ,'K' ,';' ,',' ,Greek_kappa ,implies },
{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' ,'_' ,WCH_NONE ,Greek_upsilon ,alefsymbol ,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' ,'@' ,minussign ,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",
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;
}