]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Completing the BETKB support
authorJacob Alexander <triplehaata@gmail.com>
Tue, 27 Mar 2012 04:04:43 +0000 (00:04 -0400)
committerJacob Alexander <triplehaata@gmail.com>
Tue, 27 Mar 2012 04:04:43 +0000 (00:04 -0400)
- Keyboard is fully functional
- LED, Beeper, and keyboard input not yet implemented

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

index eb13b11122a33c0fdadd02343553162510e169cb..31fab7ab86d81182c47e4a0bfca5cabecb7ddc22 100644 (file)
 
 
 // ----- Variables -----
-static uint8_t betkb_ModifierMask[] = { 0x48, 0x49, 0x4C, 0x4D, 0x45, 0x14 };
+static uint8_t betkb_ModifierMask[] = { 0x20, 0x2D, 0x2E, 0x30, 0x3E, 0x60 };
 
 static uint8_t betkb_DefaultMap[] = { 
-                               KEY_TILDE, // 0x00
-                               KEY_UP, // 0x01
+                               0, // 0x00
+                               0, // 0x01
                                0, // 0x02
                                0, // 0x03
-                               KEY_PRINTSCREEN, // 0x04
-                               KEY_PAGE_DOWN, // 0x05
-                               KEY_LEFT_BRACE, // 0x06
-                               KEY_F11, // 0x07
-                               KEY_BACKSPACE, // 0x08
-                               KEY_TAB, // 0x09
-                               KEY_ENTER, // 0x0A
-                               KEY_DOWN, // 0x0B
-                               KEY_PAGE_UP, // 0x0C
-                               KEYPAD_ENTER, // 0x0D
-                               KEY_LEFT, // 0x0E
-                               KEY_RIGHT, // 0x0F
+                               0, // 0x04
+                               0, // 0x05
+                               0, // 0x06
+                               0, // 0x07
+                               0, // 0x08
+                               0, // 0x09
+                               0, // 0x0A
+                               0, // 0x0B
+                               0, // 0x0C
+                               0, // 0x0D
+                               0, // 0x0E
+                               0, // 0x0F
                                0, // 0x10
-                               KEY_PAGE_UP, // 0x11
-                               KEY_F12, // 0x12
-                               KEY_PAGE_DOWN, // 0x13
-                               KEY_GUI, // 0x14
-                               KEY_F1, // 0x15
-                               KEY_F2, // 0x16
-                               KEY_F3, // 0x17
-                               KEY_F4, // 0x18
-                               KEY_F5, // 0x19
-                               KEY_F6, // 0x1A
-                               KEY_ESC, // 0x1B
-                               KEY_F7, // 0x1C
-                               KEY_F8, // 0x1D
-                               KEY_F9, // 0x1E
-                               KEY_F10, // 0x1F
-                               KEY_SPACE, // 0x20
-                               KEYPAD_9, // 0x21
-                               0, // 0x22
-                               0, // 0x23
-                               0, // 0x24
-                               0, // 0x25
-                               0, // 0x26
-                               KEY_QUOTE, // 0x27
-                               0, // 0x28
-                               0, // 0x29
-                               0, // 0x2A
-                               KEY_EQUAL, // 0x2B
-                               KEY_COMMA, // 0x2C
-                               KEY_MINUS, // 0x2D
-                               KEY_PERIOD, // 0x2E
-                               KEY_SLASH, // 0x2F
-                               KEY_0, // 0x30
-                               KEY_1, // 0x31
-                               KEY_2, // 0x32
-                               KEY_3, // 0x33
-                               KEY_4, // 0x34
-                               KEY_5, // 0x35
-                               KEY_6, // 0x36
-                               KEY_7, // 0x37
-                               KEY_8, // 0x38
-                               KEY_9, // 0x39
-                               0, // 0x3A
-                               KEY_SEMICOLON, // 0x3B
+                               0, // 0x11
+                               0, // 0x12
+                               0, // 0x13
+                               0, // 0x14
+                               0, // 0x15
+                               0, // 0x16
+                               0, // 0x17
+                               0, // 0x18
+                               0, // 0x19
+                               0, // 0x1A
+                               0, // 0x1B
+                               0, // 0x1C
+                               0, // 0x1D
+                               0, // 0x1E
+                               0, // 0x1F
+                               KEY_LEFT_SHIFT, // 0x20
+                               0, // 0x21
+                               KEY_Z, // 0x22
+                               KEY_X, // 0x23
+                               KEY_C, // 0x24
+                               KEY_V, // 0x25
+                               KEY_B, // 0x26
+                               KEY_N, // 0x27
+                               KEY_M, // 0x28
+                               KEY_COMMA, // 0x29
+                               KEY_PERIOD, // 0x2A
+                               KEY_SLASH, // 0x2B
+                               0, // 0x2C
+                               KEY_RIGHT_SHIFT, // 0x2D
+                               KEY_LEFT_ALT, // 0x2E
+                               KEY_SPACE, // 0x2F
+                               KEY_LEFT_CTRL, // 0x30
+                               KEY_A, // 0x31
+                               KEY_S, // 0x32
+                               KEY_D, // 0x33
+                               KEY_F, // 0x34
+                               KEY_G, // 0x35
+                               KEY_H, // 0x36
+                               KEY_J, // 0x37
+                               KEY_K, // 0x38
+                               KEY_L, // 0x39
+                               KEY_SEMICOLON, // 0x3A
+                               KEY_QUOTE, // 0x3B
                                0, // 0x3C
-                               KEY_EQUAL, // 0x3D
-                               0, // 0x3E
-                               0, // 0x3F
-                               0, // 0x40
-                               KEYPAD_6, // 0x41
-                               KEYPAD_MINUS, // 0x42
-                               KEY_PAUSE, // 0x43
-                               KEY_INSERT, // 0x44
-                               KEY_CTRL, // 0x45
-                               KEYPAD_2, // 0x46
-                               KEYPAD_3, // 0x47
-                               KEY_LEFT_SHIFT, // 0x48
-                               KEY_RIGHT_SHIFT, // 0x49
-                               KEYPAD_0, // 0x4A
-                               KEYPAD_PERIOD, // 0x4B
-                               KEY_LEFT_ALT, // 0x4C
-                               KEY_RIGHT_ALT, // 0x4D
-                               0, // 0x4E
-                               0, // 0x4F
-                               0, // 0x50
-                               0, // 0x51
-                               0, // 0x52
-                               0, // 0x53
-                               0, // 0x54
-                               0, // 0x55
-                               0, // 0x56
-                               0, // 0x57
-                               0, // 0x58
-                               0, // 0x59
-                               0, // 0x5A
-                               KEY_RIGHT_BRACE, // 0x5B
-                               KEYPAD_7, // 0x5C
-                               KEY_BACKSLASH, // 0x5D
-                               KEY_ESC, // 0x5E
-                               0, // 0x5F
-                               KEYPAD_1, // 0x60
-                               KEY_A, // 0x61
-                               KEY_B, // 0x62
-                               KEY_C, // 0x63
-                               KEY_D, // 0x64
-                               KEY_E, // 0x65
-                               KEY_F, // 0x66
-                               KEY_G, // 0x67
-                               KEY_H, // 0x68
-                               KEY_I, // 0x69
-                               KEY_J, // 0x6A
-                               KEY_K, // 0x6B
-                               KEY_L, // 0x6C
-                               KEY_M, // 0x6D
-                               KEY_N, // 0x6E
-                               KEY_O, // 0x6F
-                               KEY_P, // 0x70
-                               KEY_Q, // 0x71
-                               KEY_R, // 0x72
-                               KEY_S, // 0x73
-                               KEY_T, // 0x74
-                               KEY_U, // 0x75
-                               KEY_V, // 0x76
-                               KEY_W, // 0x77
-                               KEY_X, // 0x78
-                               KEY_Y, // 0x79
-                               KEY_Z, // 0x7A
-                               KEYPAD_4, // 0x7B
-                               KEYPAD_8, // 0x7C
-                               KEYPAD_5, // 0x7D
+                               KEY_ENTER, // 0x3D
+                               KEY_RIGHT_GUI, // 0x3E
+                               KEYPAD_1, // 0x3F
+                               KEY_TAB, // 0x40
+                               KEY_Q, // 0x41
+                               KEY_W, // 0x42
+                               KEY_E, // 0x43
+                               KEY_R, // 0x44
+                               KEY_T, // 0x45
+                               KEY_Y, // 0x46
+                               KEY_U, // 0x47
+                               KEY_I, // 0x48
+                               KEY_O, // 0x49
+                               KEY_P, // 0x4A
+                               KEY_LEFT_BRACE, // 0x4B
+                               KEY_RIGHT_BRACE, // 0x4C
+                               KEY_BACKSLASH, // 0x4D
+                               KEY_DELETE, // 0x4E
+                               KEYPAD_4, // 0x4F
+                               KEY_ESC, // 0x50
+                               KEY_1, // 0x51
+                               KEY_2, // 0x52
+                               KEY_3, // 0x53
+                               KEY_4, // 0x54
+                               KEY_5, // 0x55
+                               KEY_6, // 0x56
+                               KEY_7, // 0x57
+                               KEY_8, // 0x58
+                               KEY_9, // 0x59
+                               KEY_0, // 0x5A
+                               KEY_MINUS, // 0x5B
+                               KEY_EQUAL, // 0x5C
+                               KEY_TILDE, // 0x5D
+                               KEY_BACKSPACE, // 0x5E
+                               KEY_NUM_LOCK, // 0x5F
+                               KEY_LEFT_GUI, // 0x60
+                               KEY_HOME, // 0x61
+                               KEY_END, // 0x62
+                               KEY_INSERT, // 0x63
+                               KEY_DELETE, // 0x64
+                               KEY_F1, // 0x65
+                               KEY_F2, // 0x66
+                               KEY_F3, // 0x67
+                               KEY_F4, // 0x68
+                               KEY_F5, // 0x69
+                               KEY_F6, // 0x6A
+                               KEY_F7, // 0x6B
+                               KEY_F8, // 0x6C
+                               KEY_F9, // 0x6D
+                               KEY_F10, // 0x6E
+                               KEY_PRINTSCREEN, // 0x6F
+                               KEY_PAGE_UP, // 0x70
+                               KEY_PAGE_DOWN, // 0x71
+                               KEY_F11, // 0x72
+                               KEYPAD_7, // 0x73
+                               KEYPAD_8, // 0x74
+                               KEYPAD_9, // 0x75
+                               KEYPAD_5, // 0x76
+                               KEYPAD_6, // 0x77
+                               KEYPAD_2, // 0x78
+                               KEYPAD_3, // 0x79
+                               KEYPAD_0, // 0x7A
+                               KEYPAD_00, // 0x7B
+                               KEYPAD_ENTER, // 0x7C
+                               0, // 0x7D
                                0, // 0x7E
-                               KEY_DELETE, // 0x7F
+                               0, // 0x7F
 };
 
 static uint8_t betkb_ColemakMap[] = {
-                               KEY_TILDE, // 0x00
-                               KEY_UP, // 0x01
+                               0, // 0x00
+                               0, // 0x01
                                0, // 0x02
                                0, // 0x03
-                               KEY_PRINTSCREEN, // 0x04
-                               KEY_PAGE_DOWN, // 0x05
-                               KEY_LEFT_BRACE, // 0x06
-                               KEY_F11, // 0x07
-                               KEY_BACKSPACE, // 0x08
-                               KEY_TAB, // 0x09
-                               KEY_ENTER, // 0x0A
-                               KEY_DOWN, // 0x0B
-                               KEY_PAGE_UP, // 0x0C
-                               KEYPAD_ENTER, // 0x0D
-                               KEY_LEFT, // 0x0E
-                               KEY_RIGHT, // 0x0F
+                               0, // 0x04
+                               0, // 0x05
+                               0, // 0x06
+                               0, // 0x07
+                               0, // 0x08
+                               0, // 0x09
+                               0, // 0x0A
+                               0, // 0x0B
+                               0, // 0x0C
+                               0, // 0x0D
+                               0, // 0x0E
+                               0, // 0x0F
                                0, // 0x10
-                               KEY_PAGE_UP, // 0x11
-                               KEY_F12, // 0x12
-                               KEY_PAGE_DOWN, // 0x13
-                               KEY_GUI, // 0x14
-                               KEY_F1, // 0x15
-                               KEY_F2, // 0x16
-                               KEY_F3, // 0x17
-                               KEY_F4, // 0x18
-                               KEY_F5, // 0x19
-                               KEY_F6, // 0x1A
-                               KEY_ESC, // 0x1B
-                               KEY_F7, // 0x1C
-                               KEY_F8, // 0x1D
-                               KEY_F9, // 0x1E
-                               KEY_F10, // 0x1F
-                               KEY_SPACE, // 0x20
-                               KEYPAD_9, // 0x21
-                               0, // 0x22
-                               0, // 0x23
-                               0, // 0x24
-                               0, // 0x25
-                               0, // 0x26
-                               KEY_QUOTE, // 0x27
-                               0, // 0x28
-                               0, // 0x29
-                               0, // 0x2A
-                               KEY_EQUAL, // 0x2B
-                               KEY_COMMA, // 0x2C
-                               KEY_MINUS, // 0x2D
-                               KEY_PERIOD, // 0x2E
-                               KEY_SLASH, // 0x2F
-                               KEY_0, // 0x30
-                               KEY_1, // 0x31
-                               KEY_2, // 0x32
-                               KEY_3, // 0x33
-                               KEY_4, // 0x34
-                               KEY_5, // 0x35
-                               KEY_6, // 0x36
-                               KEY_7, // 0x37
-                               KEY_8, // 0x38
-                               KEY_9, // 0x39
-                               0, // 0x3A
-                               KEY_O, // 0x3B
+                               0, // 0x11
+                               0, // 0x12
+                               0, // 0x13
+                               0, // 0x14
+                               0, // 0x15
+                               0, // 0x16
+                               0, // 0x17
+                               0, // 0x18
+                               0, // 0x19
+                               0, // 0x1A
+                               0, // 0x1B
+                               0, // 0x1C
+                               0, // 0x1D
+                               0, // 0x1E
+                               0, // 0x1F
+                               KEY_LEFT_SHIFT, // 0x20
+                               0, // 0x21
+                               KEY_Z, // 0x22
+                               KEY_X, // 0x23
+                               KEY_C, // 0x24
+                               KEY_V, // 0x25
+                               KEY_B, // 0x26
+                               KEY_K, // 0x27
+                               KEY_M, // 0x28
+                               KEY_COMMA, // 0x29
+                               KEY_PERIOD, // 0x2A
+                               KEY_SLASH, // 0x2B
+                               0, // 0x2C
+                               KEY_RIGHT_SHIFT, // 0x2D
+                               KEY_LEFT_ALT, // 0x2E
+                               KEY_SPACE, // 0x2F
+                               KEY_LEFT_CTRL, // 0x30
+                               KEY_A, // 0x31
+                               KEY_R, // 0x32
+                               KEY_S, // 0x33
+                               KEY_T, // 0x34
+                               KEY_D, // 0x35
+                               KEY_H, // 0x36
+                               KEY_N, // 0x37
+                               KEY_E, // 0x38
+                               KEY_I, // 0x39
+                               KEY_O, // 0x3A
+                               KEY_QUOTE, // 0x3B
                                0, // 0x3C
-                               KEY_EQUAL, // 0x3D
-                               0, // 0x3E
-                               0, // 0x3F
-                               0, // 0x40
-                               KEYPAD_6, // 0x41
-                               KEYPAD_MINUS, // 0x42
-                               KEY_PAUSE, // 0x43
-                               KEY_INSERT, // 0x44
-                               KEY_CTRL, // 0x45
-                               KEYPAD_2, // 0x46
-                               KEYPAD_3, // 0x47
-                               KEY_LEFT_SHIFT, // 0x48
-                               KEY_RIGHT_SHIFT, // 0x49
-                               KEYPAD_0, // 0x4A
-                               KEYPAD_PERIOD, // 0x4B
-                               KEY_LEFT_ALT, // 0x4C
-                               KEY_RIGHT_ALT, // 0x4D
-                               0, // 0x4E
-                               0, // 0x4F
-                               0, // 0x50
-                               0, // 0x51
-                               0, // 0x52
-                               0, // 0x53
-                               0, // 0x54
-                               0, // 0x55
-                               0, // 0x56
-                               0, // 0x57
-                               0, // 0x58
-                               0, // 0x59
-                               0, // 0x5A
-                               KEY_RIGHT_BRACE, // 0x5B
-                               KEYPAD_7, // 0x5C
-                               KEY_BACKSLASH, // 0x5D
-                               KEY_ESC, // 0x5E
-                               0, // 0x5F
-                               KEYPAD_1, // 0x60
-                               KEY_A, // 0x61
-                               KEY_B, // 0x62
-                               KEY_C, // 0x63
-                               KEY_S, // 0x64
-                               KEY_F, // 0x65
-                               KEY_T, // 0x66
-                               KEY_D, // 0x67
-                               KEY_H, // 0x68
-                               KEY_U, // 0x69
-                               KEY_N, // 0x6A
-                               KEY_E, // 0x6B
-                               KEY_I, // 0x6C
-                               KEY_M, // 0x6D
-                               KEY_K, // 0x6E
-                               KEY_Y, // 0x6F
-                               KEY_SEMICOLON, // 0x70
-                               KEY_Q, // 0x71
-                               KEY_P, // 0x72
-                               KEY_R, // 0x73
-                               KEY_G, // 0x74
-                               KEY_L, // 0x75
-                               KEY_V, // 0x76
-                               KEY_W, // 0x77
-                               KEY_X, // 0x78
-                               KEY_J, // 0x79
-                               KEY_Z, // 0x7A
-                               KEYPAD_4, // 0x7B
-                               KEYPAD_8, // 0x7C
-                               KEYPAD_5, // 0x7D
+                               KEY_ENTER, // 0x3D
+                               KEY_RIGHT_GUI, // 0x3E
+                               KEYPAD_1, // 0x3F
+                               KEY_TAB, // 0x40
+                               KEY_Q, // 0x41
+                               KEY_W, // 0x42
+                               KEY_F, // 0x43
+                               KEY_P, // 0x44
+                               KEY_G, // 0x45
+                               KEY_J, // 0x46
+                               KEY_L, // 0x47
+                               KEY_U, // 0x48
+                               KEY_Y, // 0x49
+                               KEY_SEMICOLON, // 0x4A
+                               KEY_LEFT_BRACE, // 0x4B
+                               KEY_RIGHT_BRACE, // 0x4C
+                               KEY_BACKSLASH, // 0x4D
+                               KEY_DELETE, // 0x4E
+                               KEYPAD_4, // 0x4F
+                               KEY_ESC, // 0x50
+                               KEY_1, // 0x51
+                               KEY_2, // 0x52
+                               KEY_3, // 0x53
+                               KEY_4, // 0x54
+                               KEY_5, // 0x55
+                               KEY_6, // 0x56
+                               KEY_7, // 0x57
+                               KEY_8, // 0x58
+                               KEY_9, // 0x59
+                               KEY_0, // 0x5A
+                               KEY_MINUS, // 0x5B
+                               KEY_EQUAL, // 0x5C
+                               KEY_TILDE, // 0x5D
+                               KEY_BACKSPACE, // 0x5E
+                               KEY_NUM_LOCK, // 0x5F
+                               KEY_LEFT_GUI, // 0x60
+                               KEY_HOME, // 0x61
+                               KEY_END, // 0x62
+                               KEY_INSERT, // 0x63
+                               KEY_DELETE, // 0x64
+                               KEY_F1, // 0x65
+                               KEY_F2, // 0x66
+                               KEY_F3, // 0x67
+                               KEY_F4, // 0x68
+                               KEY_F5, // 0x69
+                               KEY_F6, // 0x6A
+                               KEY_F7, // 0x6B
+                               KEY_F8, // 0x6C
+                               KEY_F9, // 0x6D
+                               KEY_F10, // 0x6E
+                               KEY_PRINTSCREEN, // 0x6F
+                               KEY_PAGE_UP, // 0x70
+                               KEY_PAGE_DOWN, // 0x71
+                               KEY_F11, // 0x72
+                               KEYPAD_7, // 0x73
+                               KEYPAD_8, // 0x74
+                               KEYPAD_9, // 0x75
+                               KEYPAD_5, // 0x76
+                               KEYPAD_6, // 0x77
+                               KEYPAD_2, // 0x78
+                               KEYPAD_3, // 0x79
+                               KEYPAD_0, // 0x7A
+                               KEYPAD_00, // 0x7B
+                               KEYPAD_ENTER, // 0x7C
+                               0, // 0x7D
                                0, // 0x7E
-                               KEY_DELETE, // 0x7F
+                               0, // 0x7F
 };
 
 
index 23e5138bb4608bef721e6a16931137607ae43e12..fbada9f65316083881794363fd6a481be1868ae6 100644 (file)
@@ -215,6 +215,7 @@ int scancodeMacro( uint8_t scanCode )
        }
        return 1;
        */
+       /*
        // BudKeypad
        // Is this a bootloader sequence key?
        if ( !Bootloader_KeyDetected
@@ -240,6 +241,7 @@ int scancodeMacro( uint8_t scanCode )
                Bootloader_ConditionState = 0;
                erro_dPrint("Arg");
        }
+       */
 
        return 0;
 }
index 624759238b009a3df67744dec6b975eaa73274d1..80eba169bd62a44aa2836bbfaec0e8da74619657 100644 (file)
@@ -67,6 +67,7 @@ volatile uint8_t BufferReadyToClear;
 // ----- Function Declarations -----
 
 void processKeyValue( uint8_t keyValue );
+void  removeKeyValue( uint8_t keyValue );
 
 
 
@@ -78,36 +79,37 @@ ISR(USART1_RX_vect)
        cli(); // Disable Interrupts
 
        uint8_t keyValue = 0x00;
+       uint8_t keyState = 0x00;
 
-       // The interrupt is always for the first item of the packet set, reset the buffer
-       KeyIndex_BufferUsed = 0;
+       // Read the scancode packet from the USART (1st to 8th bits)
+       keyValue = UDR1;
 
-       // Only the first 7 bits have scancode data
-       // The last packet of the packet set has the 8th bit high, all the others are low
-       //
-       // Interrupts are too slow for the rest of the packet set, poll for the rest
-       while ( 1 )
-       {
-               // Read the raw packet from the USART
-               keyValue = UDR1;
+       // Read the release/press bit (9th bit) XXX Unnecessary, and wrong it seems, parity bit? or something else?
+       keyState = UCSR1B & 0x02;
 
-               // Debug
-               char tmpStr[6];
-               hexToStr( keyValue, tmpStr );
-               dPrintStrs( tmpStr, " " );
+       // High bit of keyValue, also represents press/release
+       keyState = keyValue & 0x80 ? 0x00 : 0x02;
 
-               // Process the scancode
-               processKeyValue( keyValue );
+       // Debug
+       char tmpStr[6];
+       hexToStr( keyValue & 0x7F, tmpStr );
 
-               // Last packet of the set
-               if ( keyValue & 0x80 )
-               {
-                       dPrintStrs( "**" );
-                       break;
-               }
+       // Process the scancode
+       switch ( keyState )
+       {
+       case 0x00: // Released
+               dPrintStrs( tmpStr, "R  " ); // Debug
+
+               // Remove key from press buffer
+               removeKeyValue( keyValue & 0x7F );
+               break;
 
-               // Delay enough so we don't run into the same packet (or the previous buffered packet)
-               _delay_us(10000);
+       case 0x02: // Pressed
+               dPrintStrs( tmpStr, "P " ); // Debug
+
+               // New key to process
+               processKeyValue( keyValue & 0x7F );
+               break;
        }
 
        sei(); // Re-enable Interrupts
@@ -156,23 +158,9 @@ inline uint8_t scan_loop()
 // TODO
 void processKeyValue( uint8_t keyValue )
 {
-       // Finalize output buffer
-       // Mask 8th bit
-       keyValue &= 0x7F;
-
        // Interpret scan code
        switch ( keyValue )
        {
-       case 0x40: // Clear buffer command
-               info_print("CLEAR!");
-
-               BufferReadyToClear = 1;
-               break;
-       case 0x7F:
-               scan_lockKeyboard();
-               _delay_ms(3000);
-               scan_unlockKeyboard();
-
        default:
                // Make sure the key isn't already in the buffer
                for ( uint8_t c = 0; c < KeyIndex_BufferUsed + 1; c++ )
@@ -192,6 +180,36 @@ void processKeyValue( uint8_t keyValue )
        }
 }
 
+void removeKeyValue( uint8_t keyValue )
+{
+       // Check for the released key, and shift the other keys lower on the buffer
+       uint8_t c;
+       for ( c = 0; c < KeyIndex_BufferUsed; c++ )
+       {
+               // Key to release found
+               if ( KeyIndex_Buffer[c] == keyValue )
+               {
+                       // Shift keys from c position
+                       for ( uint8_t k = c; k < KeyIndex_BufferUsed - 1; k++ )
+                               KeyIndex_Buffer[k] = KeyIndex_Buffer[k + 1];
+
+                       // Decrement Buffer
+                       KeyIndex_BufferUsed--;
+
+                       break;
+               }
+       }
+
+       // Error case (no key to release)
+       if ( c == KeyIndex_BufferUsed + 1 )
+       {
+               errorLED( 1 );
+               char tmpStr[6];
+               hexToStr( keyValue, tmpStr );
+               erro_dPrint( "Could not find key to release: ", tmpStr );
+       }
+}
+
 // Send data 
 uint8_t scan_sendData( uint8_t dataPayload )
 {
@@ -210,24 +228,6 @@ void scan_finishedWithBuffer( void )
 // TODO
 void scan_finishedWithUSBBuffer( void )
 {
-       /*
-       uint8_t foundModifiers = 0;
-
-       // Look for all of the modifiers present, there is a max of 8 (but only keys for 5 on the HASCI version)
-       for ( uint8_t c = 0; c < KeyIndex_BufferUsed; c++ )
-       {
-               // The modifier range is from 0x80 to 0x8F (well, the last bit is the ON/OFF signal, but whatever...)
-               if ( KeyIndex_Buffer[c] <= 0x8F && KeyIndex_Buffer[c] >= 0x80 )
-               {
-                       // Add the modifier back into the the Key Buffer
-                       KeyIndex_Buffer[foundModifiers] = KeyIndex_Buffer[c];
-                       foundModifiers++;
-               }
-       }
-
-       // Adjust the size of the new Key Buffer
-       KeyIndex_BufferUsed = foundModifiers;
-       */
 }
 
 // Reset/Hold keyboard
index 65522a25e291c035bdd153b464a4fe63977877f5..46f956b092967f25ffbbde2c375a1358c62a6859 100644 (file)
@@ -33,7 +33,7 @@
 
 // ----- Defines -----
 
-#define KEYBOARD_SIZE 0x100 // 255 - Size of the array space for the keyboard(max index)
+#define KEYBOARD_SIZE 0x7F // 127 - Size of the array space for the keyboard(max index)
 #define KEYBOARD_BUFFER 24 // Max number of key signals to buffer