]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Adding test macros and basic "clicker" choose support
authorJacob Alexander <triplehaata@gmail.com>
Wed, 28 Mar 2012 01:56:54 +0000 (21:56 -0400)
committerJacob Alexander <triplehaata@gmail.com>
Wed, 28 Mar 2012 01:56:54 +0000 (21:56 -0400)
- 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...

Keymap/betkb.h
Macro/buffer/macro.c
Scan/BETKB/scan_loop.c
Scan/BETKB/scan_loop.h

index 31fab7ab86d81182c47e4a0bfca5cabecb7ddc22..3d41ade60ba5e12f03a190525779c7a250cbab8d 100644 (file)
@@ -92,7 +92,7 @@ static uint8_t betkb_DefaultMap[] = {
                                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 @@ static uint8_t betkb_DefaultMap[] = {
                                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 @@ static uint8_t betkb_ColemakMap[] = {
                                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 @@ static uint8_t betkb_ColemakMap[] = {
                                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
index fbada9f65316083881794363fd6a481be1868ae6..df89b1a6f6b900a7d9e1bad27cec64c528e80b81 100644 (file)
@@ -251,37 +251,60 @@ uint8_t sendCode = 0;
 // 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;
 }
 
 
index 80eba169bd62a44aa2836bbfaec0e8da74619657..1355f9aa38be197863aaa1f56e42028fc2cdd106 100644 (file)
@@ -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 @@ inline void scan_setup()
        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 @@ inline void scan_setup()
        // 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 @@ inline uint8_t scan_loop()
        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 @@ void processKeyValue( uint8_t keyValue )
                        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 @@ void removeKeyValue( uint8_t keyValue )
 // 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 @@ void scan_unlockKeyboard( void )
 }
 
 // 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
 }
 
index 46f956b092967f25ffbbde2c375a1358c62a6859..58438c64774886a0b61efd7787ba3ced0a3358f5 100644 (file)
@@ -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;