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
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
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
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
// 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;
}
// ----- 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 -----
// 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
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
// 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();
}
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++ )
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
+
+ // Only send data if enabled
+ if ( KeyIndex_Add_InputSignal )
+ scan_sendData( KeyIndex_Add_InputSignal );
break;
}
// 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 )
{
}
}
// 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
}