From d3a8e148d8b224381659c328f1bb0db7889e24eb Mon Sep 17 00:00:00 2001 From: qwertfisch Date: Mon, 8 Jun 2020 02:03:43 +0200 Subject: [PATCH] =?UTF-8?q?Manuelle=20Buildskripte=20f=C3=BCr=20kbdneo=20h?= =?UTF-8?q?inzugef=C3=BCgt:=20erfordert=20kein=20WDK=20mehr=20zum=20Kompil?= =?UTF-8?q?ieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- windows/kbdneo2/README.md | 66 +++++++++++++++++++++ windows/kbdneo2/build/build_variant_x64.cmd | 12 ++++ windows/kbdneo2/build/build_variant_x86.cmd | 12 ++++ windows/kbdneo2/build/build_x64.cmd | 22 +++++++ windows/kbdneo2/build/build_x86.cmd | 22 +++++++ windows/kbdneo2/source/README.md | 22 ------- 6 files changed, 134 insertions(+), 22 deletions(-) create mode 100644 windows/kbdneo2/README.md create mode 100644 windows/kbdneo2/build/build_variant_x64.cmd create mode 100644 windows/kbdneo2/build/build_variant_x86.cmd create mode 100644 windows/kbdneo2/build/build_x64.cmd create mode 100644 windows/kbdneo2/build/build_x86.cmd delete mode 100644 windows/kbdneo2/source/README.md diff --git a/windows/kbdneo2/README.md b/windows/kbdneo2/README.md new file mode 100644 index 00000000..96af18bd --- /dev/null +++ b/windows/kbdneo2/README.md @@ -0,0 +1,66 @@ +# Build-Anleitung für kbdneo / kbdbone / kbdqwertz + +Für die weitergehende Entwicklung und Kompilierung der Treiberlayout-DLLs unter Windows 10 wurde eine Solution in Visual Studio 2019 erstellt, die die verschiedenen Varianten (Neo, Bone, Qwertz) zusammenfasst. Die Treiber-DLLs können somit auf zwei Arten gebaut werden: +1. Über Visual Studio +2. Über ein manuelles Buildskript + +Die erste Variante ist einfacher und dient auch der Entwicklung. Die zweite Variante benötigt kein Visual Studio und kein Windows Driver Kit. + + +## Regulärer Build mit Visual Studio + + +### Voraussetzungen + +Zum Bauen notwendig sind folgende Programme: +* Visual Studio (2017 oder neuer) + * Desktop-Entwicklung mit C++ installiert +* Windows 10 SDK (10.0.18362 oder neuer) +* Windows Driver Kit (Version 2004 oder neuer) + * siehe Anleitung: https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk + +### Build + +1. `kbd.sln` aus `source` in Visual Studio öffnen +1. Release-Build einstellen und Konfiguration x64 auswählen +1. Build solution +1. Konfiguration x86 auswählen +1. Build solution + +Für jedes der enthaltenen Tastaturlayouts sind nun je zwei .dll-Dateien (Name = Projektname) gebaut worden. Diese müssen mit einem 64-Bit-fähigen Dateimanager (z.B. Windows Explorer) in die entsprechenden Verzeichnisse kopiert werden: +* x64\release\kbd*.dll → C:\Windows\System32 +* release\kbd*.dll → C:\Windows\SysWOW64 + + +## Manueller Build + +### 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 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. + +### Build + +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 + +Dies baut die x64-Varianten der DLLs. Für die x86-Varianten (für 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` und x86` der jeweiligen Layoutvarianten zu finden. + + +## kbdqwertz mit „ß“ unten + +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: +``` +// #define LOW_ESZETT +``` +Anschließend kann nach obiger Anleitung weiter verfahren werden. diff --git a/windows/kbdneo2/build/build_variant_x64.cmd b/windows/kbdneo2/build/build_variant_x64.cmd new file mode 100644 index 00000000..fa6218af --- /dev/null +++ b/windows/kbdneo2/build/build_variant_x64.cmd @@ -0,0 +1,12 @@ +@echo off + +if "%1"=="" ( + ECHO Dieses Skript ist nur zur internen Verwendung von build_x64 gedacht. + EXIT /B +) + +CL /c /Ix64\ /I..\..\inc /Zi /nologo /W4 /WX /diagnostics:column /O2 /D _WIN64 /D _AMD64_ /D AMD64 /D WIN32_LEAN_AND_MEAN=1 /D _WIN32_WINNT=0x0A00 /D WINVER=0x0A00 /D WINNT=1 /D NTDDI_VERSION=0x0A000007 /D _WINDLL /Gm- /MD /GS /guard:cf /fp:precise /Zc:wchar_t- /Zc:forScope /Zc:inline /Fo"x64\\" /Fd"x64\vc142.pdb" /Gz /TC /FC /errorReport:prompt kbd%1%.c + +RC /D _WIN64 /D _AMD64_=1 /D AMD64 /D WIN32_LEAN_AND_MEAN=1 /D _WIN32_WINNT=0x0A00 /D WINVER=0x0A00 /D WINNT=1 /D NTDDI_VERSION=0x0A000007 /l"0x0409" /Ix64 /I..\..\inc /nologo /fo"x64\kbd%1.res" kbd%1.rc + +LINK /ERRORREPORT:PROMPT /OUT:"x64\kbd%1.dll" /INCREMENTAL:NO /NOLOGO /WX kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /DEF:"kbd%1.def" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"x64\kbd%1.pdb" /TLBID:1 /NOENTRY /DYNAMICBASE /NXCOMPAT /IMPLIB:"x64\kbd%1.lib" /MACHINE:X64 /guard:cf /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221,4108,4088,4218,4218,4235 -merge:.edata=.data -merge:.rdata=.data -merge:.text=.data -merge:.bss=.data -section:.data,re /ignore:4254 /DLL x64\kbd%1.res x64\kbd%1.obj diff --git a/windows/kbdneo2/build/build_variant_x86.cmd b/windows/kbdneo2/build/build_variant_x86.cmd new file mode 100644 index 00000000..96da0bec --- /dev/null +++ b/windows/kbdneo2/build/build_variant_x86.cmd @@ -0,0 +1,12 @@ +@echo off + +if "%1"=="" ( + ECHO Dieses Skript ist nur zur internen Verwendung von build_x86 gedacht. + EXIT /B +) + +CL /c /IRelease\ /I..\..\inc /Zi /nologo /W4 /WX /diagnostics:column /O2 /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D WIN32_LEAN_AND_MEAN=1 /D _WIN32_WINNT=0x0A00 /D WINVER=0x0A00 /D WINNT=1 /D NTDDI_VERSION=0x0A000007 /D _WINDLL /Gm- /MD /GS /guard:cf /fp:precise /Zc:wchar_t- /Zc:forScope /Zc:inline /Fo"x86\\" /Fd"x86\vc142.pdb" /Gz /TC /analyze- /FC /errorReport:prompt kbd%1.c + +RC /D _X86_=1 /D i386=1 /D STD_CALL /D WIN32_LEAN_AND_MEAN=1 /D _WIN32_WINNT=0x0A00 /D WINVER=0x0A00 /D WINNT=1 /D NTDDI_VERSION=0x0A000007 /l"0x0409" /Ix86\ /I..\..\inc /nologo /fo"x86\kbd%1.res" kbd%1.rc + +LINK /ERRORREPORT:PROMPT /OUT:"x86\kbd%1.dll" /INCREMENTAL:NO /NOLOGO /WX kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /DEF:"kbd%1.def" /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"x86\kbd%1.pdb" /TLBID:1 /NOENTRY /DYNAMICBASE /NXCOMPAT /IMPLIB:"x86\kbd%1.lib" /MACHINE:X86 /SAFESEH /guard:cf /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 -merge:.edata=.data -merge:.rdata=.data -merge:.text=.data -merge:.bss=.data -section:.data,re /ignore:4254 /DLL x86\kbd%1.res x86\kbd%1.obj diff --git a/windows/kbdneo2/build/build_x64.cmd b/windows/kbdneo2/build/build_x64.cmd new file mode 100644 index 00000000..5c9cbf3b --- /dev/null +++ b/windows/kbdneo2/build/build_x64.cmd @@ -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 diff --git a/windows/kbdneo2/build/build_x86.cmd b/windows/kbdneo2/build/build_x86.cmd new file mode 100644 index 00000000..caba0327 --- /dev/null +++ b/windows/kbdneo2/build/build_x86.cmd @@ -0,0 +1,22 @@ +@echo off + +pushd ..\source + +REM Build Bone, Neo, Qwertz + +cd kbdbone +IF NOT EXIST x86 mkdir x86 +call ..\..\build\build_variant_x86.cmd bone +cd .. + +cd kbdneo2 +IF NOT EXIST x86 mkdir x86 +call ..\..\build\build_variant_x86.cmd neo2 +cd .. + +cd kbdgr2 +IF NOT EXIST x86 mkdir x86 +call ..\..\build\build_variant_x86.cmd gr2 +cd .. + +popd diff --git a/windows/kbdneo2/source/README.md b/windows/kbdneo2/source/README.md deleted file mode 100644 index 3f3974a9..00000000 --- a/windows/kbdneo2/source/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Build-Anleitung für kbdneo / kbdbone / kbdqwertz - -## Voraussetzungen - -Aktuell notwendig zum Bauen sind folgende Programme: -* Visual Studio (2017 oder neuer) - * Desktop-Entwicklung mit C++ installiert -* Windows 10 SDK (10.0.19041 oder neuer) -* Windows Driver Kit (Version 2004 oder neuer) - * siehe Anleitung: https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk - -## Build - -* kbd.sln in Visual Studio öffnen -* Release-Build einstellen und Konfiguration x64 auswählen -* Build solution -* Konfiguration x86 auswählen -* Build solution - -Für jedes der enthaltenen Tastaturlayouts sind nun je zwei .dll-Dateien (Name = Projektname) gebaut worden. Diese müssen mit einem 64-Bit-fähigen Dateimanager (z.B. Windows Explorer) in die entsprechenden Verzeichnisse kopiert werden: -* x64\release\kbd*.dll → C:\Windows\System32 -* release\kbd*.dll → C:\Windows\SysWOW64