changeset 49:37f0411655cd

Adding test macros and basic "clicker" choose support - Better macros are still needed for the clicker - Current macros should be separated as a sub-module - No LEDs implement yet - Caps Lock LED seems to be burnt out...
author Jacob Alexander <triplehaata@gmail.com>
date Tue, 27 Mar 2012 21:56:54 -0400
parents 8eee22f99cae
children ff4ae9501930
files Keymap/betkb.h Macro/buffer/macro.c Scan/BETKB/scan_loop.c Scan/BETKB/scan_loop.h
diffstat 4 files changed, 73 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/Keymap/betkb.h	Tue Mar 27 00:04:43 2012 -0400
+++ b/Keymap/betkb.h	Tue Mar 27 21:56:54 2012 -0400
@@ -92,7 +92,7 @@
 				0, // 0x3C
 				KEY_ENTER, // 0x3D
 				KEY_RIGHT_GUI, // 0x3E
-				KEYPAD_1, // 0x3F
+				KEY_LEFT, // 0x3F (KEYPAD_1)
 				KEY_TAB, // 0x40
 				KEY_Q, // 0x41
 				KEY_W, // 0x42
@@ -147,10 +147,10 @@
 				KEYPAD_7, // 0x73
 				KEYPAD_8, // 0x74
 				KEYPAD_9, // 0x75
-				KEYPAD_5, // 0x76
+				KEY_UP, // 0x76 (KEYPAD_5)
 				KEYPAD_6, // 0x77
-				KEYPAD_2, // 0x78
-				KEYPAD_3, // 0x79
+				KEY_DOWN, // 0x78 (KEYPAD_2)
+				KEY_RIGHT, // 0x79 (KEYPAD_3)
 				KEYPAD_0, // 0x7A
 				KEYPAD_00, // 0x7B
 				KEYPAD_ENTER, // 0x7C
@@ -223,7 +223,7 @@
 				0, // 0x3C
 				KEY_ENTER, // 0x3D
 				KEY_RIGHT_GUI, // 0x3E
-				KEYPAD_1, // 0x3F
+				KEY_LEFT, // 0x3F (KEYPAD_1)
 				KEY_TAB, // 0x40
 				KEY_Q, // 0x41
 				KEY_W, // 0x42
@@ -278,10 +278,10 @@
 				KEYPAD_7, // 0x73
 				KEYPAD_8, // 0x74
 				KEYPAD_9, // 0x75
-				KEYPAD_5, // 0x76
+				KEY_UP, // 0x76 (KEYPAD_5)
 				KEYPAD_6, // 0x77
-				KEYPAD_2, // 0x78
-				KEYPAD_3, // 0x79
+				KEY_DOWN, // 0x78 (KEYPAD_2)
+				KEY_RIGHT, // 0x79 (KEYPAD_3)
 				KEYPAD_0, // 0x7A
 				KEYPAD_00, // 0x7B
 				KEYPAD_ENTER, // 0x7C
--- a/Macro/buffer/macro.c	Tue Mar 27 00:04:43 2012 -0400
+++ b/Macro/buffer/macro.c	Tue Mar 27 21:56:54 2012 -0400
@@ -251,37 +251,60 @@
 // USBCode Macro Detection
 int usbcodeMacro( uint8_t usbCode )
 {
-	/*
 	// Keyboard Input Test Macro
 	switch ( usbCode )
 	{
 	case KEY_F1:
 		sendCode--;
-		scan_sendData( 0x90 );
+		//scan_sendData( 0x90 );
 		scan_sendData( sendCode );
 		_delay_ms( 200 );
 		break;
 
 	case KEY_F2:
-		scan_sendData( 0x90 );
+		//scan_sendData( 0x90 );
 		scan_sendData( sendCode );
 		_delay_ms( 200 );
 		break;
 
 	case KEY_F3:
 		sendCode++;
-		scan_sendData( 0x90 );
+		//scan_sendData( 0x90 );
+		scan_sendData( sendCode );
+		_delay_ms( 200 );
+		break;
+
+	case KEY_F4:
+		sendCode += 0x10;
+		//scan_sendData( 0x90 );
 		scan_sendData( sendCode );
 		_delay_ms( 200 );
 		break;
 
+	case KEY_F5:
+		// Set 9th bit to 0
+		UCSR1B &= ~(1 << 0);
+		_delay_ms( 200 );
+		break;
+
+	case KEY_F6:
+		// Set 9th bit to 1
+		UCSR1B |=  (1 << 0);
+		_delay_ms( 200 );
+		break;
+
+	case KEY_F11:
+		// Set click code
+		KeyIndex_Add_InputSignal = sendCode;
+		_delay_ms( 200 );
+		break;
+
 	default:
 		return 0;
 	}
 	
 	return 1;
-	*/
-	return 0;
+	//return 0;
 }
 
 
--- a/Scan/BETKB/scan_loop.c	Tue Mar 27 00:04:43 2012 -0400
+++ b/Scan/BETKB/scan_loop.c	Tue Mar 27 21:56:54 2012 -0400
@@ -38,9 +38,9 @@
 // ----- Defines -----
 
 // Pinout Defines
-#define RESET_PORT PORTB
-#define RESET_DDR   DDRD
-#define RESET_PIN      0
+#define HOLD_PORT PORTD
+#define HOLD_DDR   DDRD
+#define HOLD_PIN      3
 
 
 // ----- Macros -----
@@ -57,6 +57,7 @@
 // Buffer used to inform the macro processing module which keys have been detected as pressed
 volatile uint8_t KeyIndex_Buffer[KEYBOARD_BUFFER];
 volatile uint8_t KeyIndex_BufferUsed;
+volatile uint8_t KeyIndex_Add_InputSignal; // Used to pass the (click/input value) to the keyboard for the clicker
 
 
 // Buffer Signals
@@ -133,8 +134,13 @@
 	UBRR1H = (uint8_t)(baud >> 8);
 	UBRR1L = (uint8_t)baud;
 
-	// Enable the receiver, transitter, and RX Complete Interrupt as well as 9 bit data
-	UCSR1B = 0x9C;
+	// Enable the receiver, and RX Complete Interrupt as well as 9 bit data
+	UCSR1B = 0x94;
+
+	// The transmitter is only to be enabled when needed
+	// Set the pin to be pull-up otherwise (use the lowered voltage inverter in order to sink)
+	HOLD_DDR  &= ~(1 << HOLD_PIN);
+	HOLD_PORT |=  (1 << HOLD_PIN);
 
 	// Set frame format: 9 data, 1 stop bit, no parity
 	// Asynchrounous USART mode
@@ -143,6 +149,9 @@
 	// Initially buffer doesn't need to be cleared (it's empty...)
 	BufferReadyToClear = 0;
 
+	// InputSignal is off by default
+	KeyIndex_Add_InputSignal = 0x00;
+
 	// Reset the keyboard before scanning, we might be in a wierd state
 	scan_resetKeyboard();
 }
@@ -155,12 +164,13 @@
 	return 0;
 }
 
-// TODO
 void processKeyValue( uint8_t keyValue )
 {
 	// Interpret scan code
 	switch ( keyValue )
 	{
+	case 0x00: // Break code from input?
+		break;
 	default:
 		// Make sure the key isn't already in the buffer
 		for ( uint8_t c = 0; c < KeyIndex_BufferUsed + 1; c++ )
@@ -169,6 +179,10 @@
 			if ( c == KeyIndex_BufferUsed )
 			{
 				bufferAdd( keyValue );
+
+				// Only send data if enabled
+				if ( KeyIndex_Add_InputSignal )
+					scan_sendData( KeyIndex_Add_InputSignal );
 				break;
 			}
 
@@ -213,19 +227,31 @@
 // Send data 
 uint8_t scan_sendData( uint8_t dataPayload )
 {
+	// Enable the USART Transmitter
+	UCSR1B |=  (1 << 3);
+
+	// Debug
+	char tmpStr[6];
+	hexToStr( dataPayload, tmpStr );
+	info_dPrint( "Sending - ", tmpStr );
+
 	UDR1 = dataPayload;
+
+	// Wait for the payload
+	_delay_us( 800 );
+
+	// Disable the USART Transmitter
+	UCSR1B &= ~(1 << 3);
+
 	return 0;
 }
 
 // Signal KeyIndex_Buffer that it has been properly read
-// TODO
 void scan_finishedWithBuffer( void )
 {
-	return;
 }
 
 // Signal that the keys have been properly sent over USB
-// TODO
 void scan_finishedWithUSBBuffer( void )
 {
 }
@@ -242,19 +268,9 @@
 }
 
 // Reset Keyboard
-// TODO?
-// - Holds the input read line high to flush the buffer
-// - This does not actually reset the keyboard, but always seems brings it to a sane state
-// - Won't work fully if keys are being pressed done at the same time
 void scan_resetKeyboard( void )
 {
-	// Initiate data request line, but don't read the incoming data
-	//REQUEST_DATA(); TODO
-
 	// Not a calculated valued...
 	_delay_ms( 50 );
-
-	// Stop request line
-	//STOP_DATA(); TODO
 }
 
--- a/Scan/BETKB/scan_loop.h	Tue Mar 27 00:04:43 2012 -0400
+++ b/Scan/BETKB/scan_loop.h	Tue Mar 27 21:56:54 2012 -0400
@@ -42,6 +42,7 @@
 
 extern volatile     uint8_t KeyIndex_Buffer[KEYBOARD_BUFFER];
 extern volatile     uint8_t KeyIndex_BufferUsed;
+extern volatile     uint8_t KeyIndex_Add_InputSignal;