diff --git a/left/README.md b/left/README.md
new file mode 100644
index 0000000..5871143
--- /dev/null
+++ b/left/README.md
@@ -0,0 +1,3 @@
+# Left keyboard half firmware
+
+This directory contains the firmware of the left keyboard half.
diff --git a/left/build/README.md b/left/build/README.md
new file mode 100644
index 0000000..c2bd979
--- /dev/null
+++ b/left/build/README.md
@@ -0,0 +1,3 @@
+# Build environments
+
+This directory contains the environments that are supported to easily build the firmware.
diff --git a/left/build/armgcc/CMakeLists.txt b/left/build/armgcc/CMakeLists.txt
new file mode 100644
index 0000000..848cad1
--- /dev/null
+++ b/left/build/armgcc/CMakeLists.txt
@@ -0,0 +1,136 @@
+INCLUDE(CMakeForceCompiler)
+
+# CROSS COMPILER SETTING
+SET(CMAKE_SYSTEM_NAME Generic)
+CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
+
+# THE VERSION NUMBER
+SET (Tutorial_VERSION_MAJOR 1)
+SET (Tutorial_VERSION_MINOR 0)
+
+# ENABLE ASM
+ENABLE_LANGUAGE(ASM)
+
+SET(CMAKE_STATIC_LIBRARY_PREFIX)
+SET(CMAKE_STATIC_LIBRARY_SUFFIX)
+
+SET(CMAKE_EXECUTABLE_LIBRARY_PREFIX)
+SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX)
+
+# CURRENT DIRECTORY
+SET(SrcDir "${CMAKE_CURRENT_SOURCE_DIR}/../..")
+SET(KsdkDir "${SrcDir}/../lib/KSDK_1.3_FRDM-KL03Z/")
+
+# DEBUG LINK FILE
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${KsdkDir}/platform/devices/MKL03Z4/linker/gcc/MKL03Z32xxx4_flash.ld -static")
+
+# RELEASE LINK FILE
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${KsdkDir}/platform/devices/MKL03Z4/linker/gcc/MKL03Z32xxx4_flash.ld -static")
+
+# DEBUG ASM FLAGS
+SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g -mcpu=cortex-m0plus -mthumb -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99")
+
+# DEBUG C FLAGS
+SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0 -mcpu=cortex-m0plus -mthumb -MMD -MP -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99")
+
+# DEBUG LD FLAGS
+SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -g --specs=nano.specs -lm -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mthumb -mapcs -Xlinker --gc-sections -Xlinker -static -Xlinker -z -Xlinker muldefs -Xlinker --defsym=__stack_size__=0x300 -Xlinker --defsym=__heap_size__=0x200")
+
+# RELEASE ASM FLAGS
+SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mcpu=cortex-m0plus -mthumb -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99")
+
+# RELEASE C FLAGS
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os -mcpu=cortex-m0plus -mthumb -MMD -MP -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99")
+
+# RELEASE LD FLAGS
+SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} --specs=nano.specs -lm -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mthumb -mapcs -Xlinker --gc-sections -Xlinker -static -Xlinker -z -Xlinker muldefs -Xlinker --defsym=__stack_size__=0x300 -Xlinker --defsym=__heap_size__=0x200")
+
+# ASM MACRO
+SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -DDEBUG")
+
+# C MACRO
+SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
+SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DCPU_MKL03Z32VFK4")
+SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DFRDM_KL03Z")
+SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DFREEDOM")
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DCPU_MKL03Z32VFK4")
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DFRDM_KL03Z")
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DFREEDOM")
+
+# CXX MACRO
+
+# INCLUDE_DIRECTORIES
+IF(CMAKE_BUILD_TYPE MATCHES Debug)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/osa/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/utilities/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/CMSIS/Include)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/devices)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/devices/MKL03Z4/include)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/devices/MKL03Z4/startup)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/hal/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/drivers/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/system/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/drivers/src/gpio)
+ INCLUDE_DIRECTORIES(${KsdkDir}/examples)
+ INCLUDE_DIRECTORIES(${KsdkDir}/examples/frdmkl03z)
+ INCLUDE_DIRECTORIES(${KsdkDir})
+ELSEIF(CMAKE_BUILD_TYPE MATCHES Release)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/osa/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/utilities/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/CMSIS/Include)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/devices)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/devices/MKL03Z4/include)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/devices/MKL03Z4/startup)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/hal/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/drivers/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/system/inc)
+ INCLUDE_DIRECTORIES(${KsdkDir}/platform/drivers/src/gpio)
+ INCLUDE_DIRECTORIES(${KsdkDir}/examples)
+ INCLUDE_DIRECTORIES(${KsdkDir}/examples/frdmkl03z)
+ INCLUDE_DIRECTORIES(${KsdkDir})
+ENDIF()
+
+# ADD_EXECUTABLE
+ADD_EXECUTABLE(uhk-left
+ "${KsdkDir}/platform/utilities/src/fsl_misc_utilities.c"
+ "${KsdkDir}/platform/devices/MKL03Z4/startup/gcc/startup_MKL03Z4.S"
+ "${SrcDir}/main.c"
+ "${KsdkDir}/examples/frdmkl03z/gpio_pins.c"
+ "${KsdkDir}/examples/frdmkl03z/gpio_pins.h"
+ "${KsdkDir}/examples/frdmkl03z/pin_mux.c"
+ "${KsdkDir}/examples/frdmkl03z/pin_mux.h"
+ "${KsdkDir}/examples/frdmkl03z/board.c"
+ "${KsdkDir}/examples/frdmkl03z/board.h"
+ "${KsdkDir}/platform/utilities/src/fsl_debug_console.c"
+ "${KsdkDir}/platform/utilities/inc/fsl_debug_console.h"
+ "${KsdkDir}/platform/utilities/src/print_scan.c"
+ "${KsdkDir}/platform/utilities/src/print_scan.h"
+ "${KsdkDir}/platform/devices/MKL03Z4/startup/system_MKL03Z4.c"
+ "${KsdkDir}/platform/devices/startup.c"
+ "${KsdkDir}/platform/devices/startup.h"
+)
+SET_TARGET_PROPERTIES(uhk-left PROPERTIES OUTPUT_NAME "uhk-left.elf")
+
+TARGET_LINK_LIBRARIES(uhk-left -Wl,--start-group)
+# LIBRARIES
+IF(CMAKE_BUILD_TYPE MATCHES Debug)
+ TARGET_LINK_LIBRARIES(uhk-left ${KsdkDir}/lib/ksdk_platform_lib/armgcc/KL03Z4/debug/libksdk_platform.a)
+ELSEIF(CMAKE_BUILD_TYPE MATCHES Release)
+ TARGET_LINK_LIBRARIES(uhk-left ${KsdkDir}/lib/ksdk_platform_lib/armgcc/KL03Z4/release/libksdk_platform.a)
+ENDIF()
+
+# SYSTEM LIBRARIES
+TARGET_LINK_LIBRARIES(uhk-left m)
+TARGET_LINK_LIBRARIES(uhk-left c)
+TARGET_LINK_LIBRARIES(uhk-left gcc)
+TARGET_LINK_LIBRARIES(uhk-left nosys)
+TARGET_LINK_LIBRARIES(uhk-left -Wl,--end-group)
+
+# MAP FILE
+SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker -Map=debug/uhk-left.map")
+SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker -Map=release/uhk-left.map")
+
+# BIN AND HEX
+ADD_CUSTOM_COMMAND(TARGET uhk-left POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Oihex ${EXECUTABLE_OUTPUT_PATH}/uhk-left.elf ${EXECUTABLE_OUTPUT_PATH}/uhk-left.hex)
+ADD_CUSTOM_COMMAND(TARGET uhk-left POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Obinary ${EXECUTABLE_OUTPUT_PATH}/uhk-left.elf ${EXECUTABLE_OUTPUT_PATH}/uhk-left.bin)
diff --git a/left/build/armgcc/README.md b/left/build/armgcc/README.md
new file mode 100644
index 0000000..6b95809
--- /dev/null
+++ b/left/build/armgcc/README.md
@@ -0,0 +1,4 @@
+# ARM GCC build environment
+
+This build environment is set up for command line use. Given that the development dependencies are
+installed on your system you can use the available scripts to build the firmware with ARM GCC.
diff --git a/left/build/armgcc/build_all.bat b/left/build/armgcc/build_all.bat
new file mode 100644
index 0000000..ba7d092
--- /dev/null
+++ b/left/build/armgcc/build_all.bat
@@ -0,0 +1,6 @@
+echo "This script is not supposed to work. Please port the BASH version to Windows!"
+cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .
+mingw32-make -j4
+cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .
+mingw32-make -j4
+pause
diff --git a/left/build/armgcc/build_all.sh b/left/build/armgcc/build_all.sh
new file mode 100755
index 0000000..77e3b11
--- /dev/null
+++ b/left/build/armgcc/build_all.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+./build_debug.sh
+./build_release.sh
diff --git a/left/build/armgcc/build_debug.bat b/left/build/armgcc/build_debug.bat
new file mode 100644
index 0000000..ba95ea1
--- /dev/null
+++ b/left/build/armgcc/build_debug.bat
@@ -0,0 +1,4 @@
+echo "This script is not supposed to work. Please port the BASH version to Windows!"
+cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .
+mingw32-make -j4
+pause
diff --git a/left/build/armgcc/build_debug.sh b/left/build/armgcc/build_debug.sh
new file mode 100755
index 0000000..21a96de
--- /dev/null
+++ b/left/build/armgcc/build_debug.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+. ./ksdk_dir.sh
+cmake -DCMAKE_TOOLCHAIN_FILE="$KSDK_DIR/tools/cmake_toolchain_files/armgcc.cmake" -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug .
+make -j4
diff --git a/left/build/armgcc/build_release.bat b/left/build/armgcc/build_release.bat
new file mode 100644
index 0000000..7441943
--- /dev/null
+++ b/left/build/armgcc/build_release.bat
@@ -0,0 +1,4 @@
+echo "This script is not supposed to work. Please port the BASH version to Windows!"
+cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .
+mingw32-make -j4
+pause
diff --git a/left/build/armgcc/build_release.sh b/left/build/armgcc/build_release.sh
new file mode 100755
index 0000000..ad48a20
--- /dev/null
+++ b/left/build/armgcc/build_release.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+. ./ksdk_dir.sh
+cmake -DCMAKE_TOOLCHAIN_FILE="$KSDK_DIR/tools/cmake_toolchain_files/armgcc.cmake" -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .
+make -j4
diff --git a/left/build/armgcc/clean.bat b/left/build/armgcc/clean.bat
new file mode 100644
index 0000000..ffea088
--- /dev/null
+++ b/left/build/armgcc/clean.bat
@@ -0,0 +1,3 @@
+RD /s /Q Debug Release CMakeFiles
+DEL /s /Q /F Makefile cmake_install.cmake CMakeCache.txt
+pause
diff --git a/left/build/armgcc/clean.sh b/left/build/armgcc/clean.sh
new file mode 100755
index 0000000..795ad87
--- /dev/null
+++ b/left/build/armgcc/clean.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+rm -rf debug release CMakeFiles
+rm -rf Makefile cmake_install.cmake CMakeCache.txt
diff --git a/left/build/armgcc/ksdk_dir.sh b/left/build/armgcc/ksdk_dir.sh
new file mode 100644
index 0000000..f0b437f
--- /dev/null
+++ b/left/build/armgcc/ksdk_dir.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+export KSDK_DIR=/../../../lib/KSDK_1.3_FRDM-KL03Z/
diff --git a/left/build/kds/.cproject b/left/build/kds/.cproject
new file mode 100644
index 0000000..433198f
--- /dev/null
+++ b/left/build/kds/.cproject
@@ -0,0 +1,317 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/left/build/kds/.gitignore b/left/build/kds/.gitignore
new file mode 100644
index 0000000..70a618f
--- /dev/null
+++ b/left/build/kds/.gitignore
@@ -0,0 +1,2 @@
+/debug
+/release
diff --git a/left/build/kds/.project b/left/build/kds/.project
new file mode 100644
index 0000000..3ac88a5
--- /dev/null
+++ b/left/build/kds/.project
@@ -0,0 +1,134 @@
+
+
+ uhk-left
+
+
+
+
+
+ com.freescale.processorexpert.core.expertprojectbuilder
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ com.freescale.processorexpert.core.expertprojectnature
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
+
+ board
+ 2
+ virtual:/virtual
+
+
+ source
+ 2
+ virtual:/virtual
+
+
+ startup
+ 2
+ virtual:/virtual
+
+
+ utilities
+ 2
+ virtual:/virtual
+
+
+ board/board.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/examples/frdmkl03z/board.c
+
+
+ board/board.h
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/examples/frdmkl03z/board.h
+
+
+ board/gpio_pins.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/examples/frdmkl03z/gpio_pins.c
+
+
+ board/gpio_pins.h
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/examples/frdmkl03z/gpio_pins.h
+
+
+ board/pin_mux.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/examples/frdmkl03z/pin_mux.c
+
+
+ board/pin_mux.h
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/examples/frdmkl03z/pin_mux.h
+
+
+ source/main.c
+ 1
+ PARENT-2-PROJECT_LOC/main.c
+
+
+ startup/startup.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/devices/startup.c
+
+
+ startup/startup.h
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/devices/startup.h
+
+
+ startup/startup_MKL03Z4.S
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/devices/MKL03Z4/startup/gcc/startup_MKL03Z4.S
+
+
+ startup/system_MKL03Z4.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/devices/MKL03Z4/startup/system_MKL03Z4.c
+
+
+ utilities/fsl_debug_console.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/utilities/src/fsl_debug_console.c
+
+
+ utilities/fsl_debug_console.h
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/utilities/inc/fsl_debug_console.h
+
+
+ utilities/fsl_misc_utilities.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/utilities/src/fsl_misc_utilities.c
+
+
+ utilities/print_scan.c
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/utilities/src/print_scan.c
+
+
+ utilities/print_scan.h
+ 1
+ PARENT-3-PROJECT_LOC/lib/KSDK_1.3_FRDM-KL03Z/platform/utilities/src/print_scan.h
+
+
+
diff --git a/left/build/kds/.settings/com.processorexpert.core.ide.newprojectwizard.prefs b/left/build/kds/.settings/com.processorexpert.core.ide.newprojectwizard.prefs
new file mode 100644
index 0000000..d6c0e7e
--- /dev/null
+++ b/left/build/kds/.settings/com.processorexpert.core.ide.newprojectwizard.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+versionGenerated/versionGenerated=1.8.4.RT7_b1550-0615
diff --git a/left/build/kds/.settings/language.settings.xml b/left/build/kds/.settings/language.settings.xml
new file mode 100644
index 0000000..2bf9d2d
--- /dev/null
+++ b/left/build/kds/.settings/language.settings.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/left/build/kds/README.md b/left/build/kds/README.md
new file mode 100644
index 0000000..3cd5e6d
--- /dev/null
+++ b/left/build/kds/README.md
@@ -0,0 +1,7 @@
+# KDS build environment
+
+This build environment is set up to be used with
+[Kinetis Design Studio](http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/kinetis-design-studio-integrated-development-environment-ide:KDS_IDE).
+You can simply import the project into KDS by choosing
+*File* -> *Import...* -> *General* -> *Existing Projects into Workspace*,
+then select this directory, and click the *Finish* button.
diff --git a/left/build/kds/uhk-left debug jlink.launch b/left/build/kds/uhk-left debug jlink.launch
new file mode 100644
index 0000000..d1d251f
--- /dev/null
+++ b/left/build/kds/uhk-left debug jlink.launch
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/left/build/kds/uhk-left debug pne.launch b/left/build/kds/uhk-left debug pne.launch
new file mode 100644
index 0000000..af20e61
--- /dev/null
+++ b/left/build/kds/uhk-left debug pne.launch
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/left/build/kds/uhk-left release jlink.launch b/left/build/kds/uhk-left release jlink.launch
new file mode 100644
index 0000000..3839142
--- /dev/null
+++ b/left/build/kds/uhk-left release jlink.launch
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/left/build/kds/uhk-left release pne.launch b/left/build/kds/uhk-left release pne.launch
new file mode 100644
index 0000000..c2d25d0
--- /dev/null
+++ b/left/build/kds/uhk-left release pne.launch
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/left/main.c b/left/main.c
new file mode 100644
index 0000000..c01e66e
--- /dev/null
+++ b/left/main.c
@@ -0,0 +1,44 @@
+#include "board.h"
+#include "fsl_clock_manager.h"
+
+int main(void)
+{
+ gpio_input_pin_user_config_t inputPin[] =
+ {
+ {
+ .pinName = BOARD_SW_GPIO,
+ .config.isPullEnable = true,
+ .config.pullSelect = kPortPullUp,
+ .config.isPassiveFilterEnabled = false,
+ .config.interrupt = kPortIntDisabled,
+ },
+ {
+ .pinName = GPIO_PINS_OUT_OF_RANGE,
+ }
+ };
+
+ gpio_output_pin_user_config_t outputPin[] =
+ {
+ {
+ .pinName = kGpioLED1,
+ .config.outputLogic = 0,
+ .config.slewRate = kPortFastSlewRate,
+ .config.driveStrength = kPortHighDriveStrength,
+ },
+ {
+ .pinName = GPIO_PINS_OUT_OF_RANGE,
+ }
+ };
+
+ CLOCK_SYS_EnablePortClock(PORTA_IDX);
+ CLOCK_SYS_EnablePortClock(PORTB_IDX);
+
+ BOARD_ClockInit();
+
+ GPIO_DRV_Init(inputPin, outputPin);
+
+ while (1) {
+ uint8_t isSwitchPressed = GPIO_DRV_ReadPinInput(BOARD_SW_GPIO);
+ GPIO_DRV_WritePinOutput(kGpioLED1, isSwitchPressed);
+ }
+}