From fa68d61792cd3b29ce34c0c734b3ff178be2ea53 Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Mon, 7 May 2012 13:00:29 -0400 Subject: [PATCH] Completing Sony OA-S3400 adapter. - Fixed final bug regarding key release - Added LED support calls - Fixed minor keymapping bug for TAB - Changed default keymap to Colemak --- Keymap/sonyoas3400.h | 8 ++++---- Scan/SonyOA-S3400/scan_loop.c | 27 +++++++++++++++++++++++++++ Scan/SonyOA-S3400/setup.cmake | 4 ++-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/Keymap/sonyoas3400.h b/Keymap/sonyoas3400.h index aebf482..0ed7917 100644 --- a/Keymap/sonyoas3400.h +++ b/Keymap/sonyoas3400.h @@ -38,7 +38,7 @@ static uint8_t sonyoas3400_DefaultMap[] = { 0, // 0x06 0, // 0x07 KEY_BACKSPACE, // 0x08 - 0, // 0x09 + KEY_TAB, // 0x09 0, // 0x0A 0, // 0x0B 0, // 0x0C @@ -190,7 +190,7 @@ static uint8_t sonyoas3400_DefaultMap[] = { 0, // 0x9E 0, // 0x9F 0, // 0xA0 - KEY_TAB, // 0xA1 + 0, // 0xA1 0, // 0xA2 0, // 0xA3 0, // 0xA4 @@ -297,7 +297,7 @@ static uint8_t sonyoas3400_ColemakMap[] = { 0, // 0x06 0, // 0x07 KEY_BACKSPACE, // 0x08 - 0, // 0x09 + KEY_TAB, // 0x09 0, // 0x0A 0, // 0x0B 0, // 0x0C @@ -449,7 +449,7 @@ static uint8_t sonyoas3400_ColemakMap[] = { 0, // 0x9E 0, // 0x9F 0, // 0xA0 - KEY_TAB, // 0xA1 + 0, // 0xA1 0, // 0xA2 0, // 0xA3 0, // 0xA4 diff --git a/Scan/SonyOA-S3400/scan_loop.c b/Scan/SonyOA-S3400/scan_loop.c index a694fa4..dda9b28 100644 --- a/Scan/SonyOA-S3400/scan_loop.c +++ b/Scan/SonyOA-S3400/scan_loop.c @@ -342,6 +342,17 @@ void processKeyValue( uint8_t keyValue ) } } + // TODO Move to Macro Section + switch ( keyValue ) + { + case 0xD3: // F11 + scan_sendData( 0x01 ); + break; + case 0xD4: // F12 + scan_sendData( 0x02 ); + break; + } + // Scan code is now finalized, and ready to add to buffer // Note: Scan codes come from 3 different interrupts and a manual key scan into this function @@ -390,6 +401,9 @@ void processKeyValue( uint8_t keyValue ) // Decrement Buffer KeyIndex_BufferUsed--; + // Start at this position again for the next loop + c--; + break; } } @@ -485,8 +499,21 @@ ISR(INT7_vect) // Send data to keyboard // Sony OA-S3400 has no serial/parallel dataport to send data too... +// Using this function for LED enable/disable uint8_t scan_sendData( uint8_t dataPayload ) { + switch ( dataPayload ) + { + case 0x01: + LED1_PORT ^= (1 << LED1_POS); + break; + case 0x02: + LED2_PORT ^= (1 << LED2_POS); + break; + default: + erro_print("Invalid data send attempt"); + break; + } return 0; } diff --git a/Scan/SonyOA-S3400/setup.cmake b/Scan/SonyOA-S3400/setup.cmake index 286771e..ac61c7d 100644 --- a/Scan/SonyOA-S3400/setup.cmake +++ b/Scan/SonyOA-S3400/setup.cmake @@ -41,7 +41,7 @@ add_definitions( -I${HEAD_DIR}/Keymap ) #| Keymap Settings add_definitions( -DMODIFIER_MASK=sonyoas3400_ModifierMask - #-DKEYINDEX_MASK=sonyoas3400_ColemakMap - -DKEYINDEX_MASK=sonyoas3400_DefaultMap + -DKEYINDEX_MASK=sonyoas3400_ColemakMap + #-DKEYINDEX_MASK=sonyoas3400_DefaultMap ) -- 2.39.2