changeset 359:b4f66a698f36

Adding preliminary MDErgo keymap - Required updates to CMake in order to handle the multi-layer BaseMaps
author Jacob Alexander <haata@kiibohd.com>
date Thu, 06 Aug 2015 00:36:37 -0700
parents 32dfab699fc0
children dbefb68411e1
files CMakeLists.txt Lib/CMake/kll.cmake Scan/MDErgo1/defaultMap.kll Scan/MDErgo1/leftHand.kll Scan/MDErgo1/rightHand.kll Scan/MDErgo1/scan_loop.c Scan/MDErgo1/slave1.kll
diffstat 7 files changed, 195 insertions(+), 81 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Wed Aug 05 10:18:35 2015 -0700
+++ b/CMakeLists.txt	Thu Aug 06 00:36:37 2015 -0700
@@ -106,7 +106,6 @@
 
 ##| Set the base keyboard .kll map, defaults to "defaultMap" if not found
 ##| Looks in Scan/<Module Name> for the available BaseMaps
-##| TODO Support layering in basemap
 set(     BaseMap "defaultMap"
 	CACHE STRING "KLL BaseMap/Scancode Keymapping" )
 
--- a/Lib/CMake/kll.cmake	Wed Aug 05 10:18:35 2015 -0700
+++ b/Lib/CMake/kll.cmake	Thu Aug 06 00:36:37 2015 -0700
@@ -54,15 +54,21 @@
 
 #| If set BaseMap cannot be found, use default map
 set ( pathname "${PROJECT_SOURCE_DIR}/${ScanModulePath}" )
-if ( NOT EXISTS ${pathname}/${BaseMap}.kll )
-	set ( BaseMap_Args ${BaseMap_Args} ${pathname}/defaultMap.kll )
-	set ( KLL_DEPENDS ${KLL_DEPENDS} ${pathname}/defaultMap.kll )
-elseif ( EXISTS "${pathname}/${BaseMap}.kll" )
-	set ( BaseMap_Args ${BaseMap_Args} ${pathname}/${BaseMap}.kll )
-	set ( KLL_DEPENDS ${KLL_DEPENDS} ${pathname}/${BaseMap}.kll )
-else ()
-	message ( FATAL "Could not find '${BaseMap}.kll'" )
-endif ()
+
+string ( REPLACE " " ";" MAP_LIST ${BaseMap} ) # Change spaces to semicolons
+foreach ( MAP ${MAP_LIST} )
+	# Only check the Scan Module for BaseMap .kll files, default to defaultMap.kll
+	message("THIS -> ${pathname} ${MAP}")
+	if ( NOT EXISTS ${pathname}/${MAP}.kll )
+		set ( BaseMap_Args ${BaseMap_Args} ${pathname}/defaultMap.kll )
+		set ( KLL_DEPENDS ${KLL_DEPENDS} ${pathname}/defaultMap.kll )
+	elseif ( EXISTS "${pathname}/${MAP}.kll" )
+		set ( BaseMap_Args ${BaseMap_Args} ${pathname}/${MAP}.kll )
+		set ( KLL_DEPENDS ${KLL_DEPENDS} ${pathname}/${MAP}.kll )
+	else ()
+		message ( FATAL " Could not find '${MAP}.kll' BaseMap in Scan module directory" )
+	endif ()
+endforeach ()
 
 #| Configure DefaultMap if specified
 if ( NOT "${DefaultMap}" STREQUAL "" )
@@ -78,7 +84,7 @@
 			set ( DefaultMap_Args ${DefaultMap_Args} ${PROJECT_SOURCE_DIR}/kll/layouts/${MAP}.kll )
 			set ( KLL_DEPENDS ${KLL_DEPENDS} ${PROJECT_SOURCE_DIR}/kll/layouts/${MAP}.kll )
 		else ()
-			message ( FATAL "Could not find '${MAP}.kll'" )
+			message ( FATAL " Could not find '${MAP}.kll' DefaultMap" )
 		endif ()
 	endforeach ()
 endif ()
@@ -100,7 +106,7 @@
 				set ( PartialMap_Args ${PartialMap_Args} ${PROJECT_SOURCE_DIR}/kll/layouts/${MAP_PART}.kll )
 				set ( KLL_DEPENDS ${KLL_DEPENDS} ${PROJECT_SOURCE_DIR}/kll/layouts/${MAP_PART}.kll )
 			else ()
-				message ( FATAL "Could not find '${MAP_PART}.kll'" )
+				message ( FATAL " Could not find '${MAP_PART}.kll' PartialMap" )
 			endif ()
 		endforeach ()
 	endforeach ()
--- a/Scan/MDErgo1/defaultMap.kll	Wed Aug 05 10:18:35 2015 -0700
+++ b/Scan/MDErgo1/defaultMap.kll	Thu Aug 06 00:36:37 2015 -0700
@@ -1,78 +1,30 @@
 Name = MDErgo1;
 Version = 0.2;
-Author = "HaaTa (Jacob Alexander) 2014";
+Author = "HaaTa (Jacob Alexander) 2014-2015";
 KLL = 0.3c;
 
 # Modified Date
-Date = 2015-08-02;
+Date = 2015-08-05;
+
+########
+# NOTE #
+########
+
+# Default ScanCode mappings are in rightHand.kll and leftHand.kll
+# To change which node you are refering to, set the ConnectId variable
+# i.e.
+# ConnectId = 0;
+# S0x02 : U"A"; # Sets scan code 0x02 on keyboard connected to USB
+# ConnectId = 1;
+# S0x02 : U"B"; # Sets scan code 0x02 on the first slave node
+#
+# ConnectId may be set in the previously parsed kll file
+# In general you shouldn't have to worry about setting ConnectId unless you want a single configuration file
 
 
-S0x00 : U"Esc";
-S0x01 : U"1";
-S0x02 : U"2";
-S0x03 : U"3";
-S0x04 : U"4";
-S0x05 : U"5";
-S0x06 : U"6";
-S0x07 : U"7";
-S0x08 : U"8";
-S0x09 : U"9";
-S0x0A : U"0";
-S0x0B : U"Minus";
-S0x0C : U"Equal";
-S0x0D : U"Backslash";
-S0x0E : U"Tab";
-S0x0F : U"Q";
-S0x10 : U"W";
-S0x11 : U"E";
-S0x12 : U"R";
-S0x13 : U"T";
-S0x14 : U"Y";
-S0x15 : U"U";
-S0x16 : U"I";
-S0x17 : U"O";
-S0x18 : U"P";
-S0x19 : U"LBrace";
-S0x1A : U"RBrace";
-S0x1B : U"Backspace";
-S0x1C : U"Ctrl";
-S0x1D : U"A";
-S0x1E : U"S";
-S0x1F : U"D";
-S0x20 : U"F";
-S0x21 : U"G";
-S0x22 : U"H";
-S0x23 : U"J";
-S0x24 : U"K";
-S0x25 : U"L";
-S0x26 : U"Semicolon";
-S0x27 : U"Quote";
-S0x28 : U"Enter";
-S0x29 : U"LShift";
-S0x2A : U"Z";
-S0x2B : U"X";
-S0x2C : U"C";
-S0x2D : U"V";
-S0x2E : U"B";
-S0x2F : U"N";
-S0x30 : U"M";
-S0x31 : U"Comma";
-S0x32 : U"Period";
-S0x33 : U"Slash";
-S0x34 : U"RShift";
-S0x35 : U"F1"; # Fun key
-S0x36 : U"F2"; # Left Blank Key
-S0x37 : U"LAlt";
-S0x38 : U"LGui";
-S0x39 : U"Space";
-S0x3A : U"RGui";
-S0x3B : U"RAlt";
-S0x3C : U"F3"; # Right Blank Key 1
-S0x3D : U"F4"; # Right Blank Key 2
-S0x3E : U"BackTick";
-
-
+#
 # Defines available to the MDErgo1 Scan Module
+#
 
 # LED Default Enable Mask Override
 #
@@ -107,4 +59,27 @@
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* C9-1 -> C9-16 */
 ";
 
+# LCD Backlight Channel Brightness Override
+# There are 3 channels, RGB
+# In order to get other colors you must mix the 3 colors
+# Each channel is a 16-bit register (65536 levels)
+# Technically, this means, the backlight is a 48-bit RGB pixel
+# In practice, it may be difficult to get color consistency at times if too bright or too dim
+#
+# Defaults to 6% brightness, white
+STLcdBacklightRed   = 0x0FFF;
+STLcdBacklightGreen = 0x0FFF;
+STLcdBacklightBlue  = 0x0FFF;
 
+# LCD Image Override
+#
+# The easiest way to generate this data is using the bitmap2Struct.py script in the STLcd folder
+# It will output the necessary uint8_t array to set here
+#
+STLcdDefaultImage = "
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+";
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Scan/MDErgo1/leftHand.kll	Thu Aug 06 00:36:37 2015 -0700
@@ -0,0 +1,61 @@
+Name = MDErgo1 Right Hand;
+Version = 0.1;
+Author = "HaaTa (Jacob Alexander) 2015";
+KLL = 0.3c;
+
+# Modified Date
+Date = 2015-08-06;
+
+
+# Top Row
+S0x02 : U"6";
+S0x03 : U"5";
+S0x04 : U"4";
+S0x05 : U"3";
+S0x06 : U"2";
+S0x07 : U"1";
+S0x08 : U"Esc";
+
+# Top-Middle Row
+S0x0B : U"F4";
+S0x0C : U"T";
+S0x0D : U"R";
+S0x0E : U"E";
+S0x0F : U"W";
+S0x10 : U"Q";
+S0x11 : U"Tab";
+
+# Middle Row
+S0x15 : U"G";
+S0x16 : U"F";
+S0x17 : U"D";
+S0x18 : U"S";
+S0x19 : U"A";
+S0x1A : U"Function1";
+
+# Top Thumb Cluster
+S0x1B : U"Home";
+S0x1C : U"End";
+
+# Bottom-Middle Row
+S0x1D : U"F5";
+S0x1E : U"B";
+S0x1F : U"V";
+S0x20 : U"C";
+S0x21 : U"X";
+S0x22 : U"Z";
+S0x23 : U"Left Shift";
+
+# Bottom Thumb Cluster
+S0x24 : U"Left Alt";
+S0x25 : U"Left Ctrl";
+S0x26 : U"Delete";
+S0x27 : U"Space";
+
+# Bottom Row
+S0x28 : U"Function5";
+S0x29 : U"Backtick";
+S0x2A : U"Right Brace";
+S0x2B : U"Left Brace";
+S0x2C : U"Function3";
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Scan/MDErgo1/rightHand.kll	Thu Aug 06 00:36:37 2015 -0700
@@ -0,0 +1,62 @@
+Name = MDErgo1 Right Hand;
+Version = 0.1;
+Author = "HaaTa (Jacob Alexander) 2015";
+KLL = 0.3c;
+
+# Modified Date
+Date = 2015-08-06;
+
+
+# Top Row
+S0x02 : U"7";
+S0x03 : U"8";
+S0x04 : U"9";
+S0x05 : U"0";
+S0x06 : U"Minus";
+S0x07 : U"Equal";
+S0x08 : U"Backspace";
+
+# Top-Middle Row
+S0x0B : U"PageUp";
+S0x0C : U"Y";
+S0x0D : U"U";
+S0x0E : U"I";
+S0x0F : U"O";
+S0x10 : U"P";
+S0x11 : U"BackSlash";
+
+# Middle Row
+S0x15 : U"H";
+S0x16 : U"J";
+S0x17 : U"K";
+S0x18 : U"L";
+S0x19 : U"Semicolon";
+S0x1A : U"Quote";
+
+# Top Thumb Cluster
+S0x1B : U"PrintScreen";
+S0x1C : U"Insert";
+
+# Bottom-Middle Row
+S0x1D : U"PageDown";
+S0x1E : U"N";
+S0x1F : U"M";
+S0x20 : U"Comma";
+S0x21 : U"Period";
+S0x22 : U"Slash";
+S0x23 : U"Right Shift";
+
+# Bottom Thumb Cluster
+S0x24 : U"Right Alt";
+S0x25 : U"Right Ctrl";
+S0x26 : U"Enter";
+S0x27 : U"Function2";
+
+# Bottom Row
+S0x28 : U"Left";
+S0x29 : U"Down";
+S0x2A : U"Up";
+S0x2B : U"Right";
+S0x2C : U"Function4";
+
+
--- a/Scan/MDErgo1/scan_loop.c	Wed Aug 05 10:18:35 2015 -0700
+++ b/Scan/MDErgo1/scan_loop.c	Thu Aug 06 00:36:37 2015 -0700
@@ -56,7 +56,7 @@
 	Connect_setup( Output_Available );
 
 	// Setup GPIO pins for matrix scanning
-	//Matrix_setup();
+	Matrix_setup();
 
 	// Setup ISSI chip to control the leds
 	LED_setup();
@@ -73,7 +73,7 @@
 inline uint8_t Scan_loop()
 {
 	// Scan Matrix
-	//Matrix_scan( Scan_scanCount++ );
+	Matrix_scan( Scan_scanCount++ );
 
 	// Process any interconnect commands
 	Connect_scan();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Scan/MDErgo1/slave1.kll	Thu Aug 06 00:36:37 2015 -0700
@@ -0,0 +1,11 @@
+Name = MDErgo1 Slave1;
+Version = 0.1;
+Author = "HaaTa (Jacob Alexander) 2015";
+KLL = 0.3c;
+
+# Modified Date
+Date = 2015-08-06;
+
+# Sets all future Scan Code definitions to be applied to the first slave node
+ConnectId = 1;
+