Archived
1
0

Updating MBC-55X scan module

This commit is contained in:
Jacob Alexander 2016-06-12 15:53:25 -07:00
parent 358d480ea9
commit ed19e92ead
5 changed files with 156 additions and 333 deletions

View File

@ -1,288 +0,0 @@
/* Copyright (C) 2013-2015 by Jacob Alexander
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#pragma once
// This file contains various key layouts for the Sanyo MBC-55X Computer Keyboard
// ----- Variables -----
// Default 1-indexed key mappings
static uint8_t DefaultMap_Lookup[] = {
0, // 0x00
0, // 0x01
0, // 0x02
0, // 0x03
0, // 0x04
0, // 0x05
0, // 0x06
0, // 0x07
KEY_BACKSPACE, // 0x08
KEY_TAB, // 0x09
0, // 0x0A
0, // 0x0B
0, // 0x0C
KEY_ENTER, // 0x0D
0, // 0x0E
0, // 0x0F
0, // 0x10
0, // 0x11
0, // 0x12
0, // 0x13
0, // 0x14
0, // 0x15
0, // 0x16
0, // 0x17
0, // 0x18
0, // 0x19
0, // 0x1A
KEY_ESC, // 0x1B
0, // 0x1C
0, // 0x1D
0, // 0x1E
0, // 0x1F
KEY_SPACE, // 0x20
0, // 0x21
0, // 0x22
0, // 0x23
0, // 0x24
0, // 0x25
0, // 0x26
KEY_QUOTE, // 0x27
0, // 0x28
0, // 0x29
0, // 0x2A
0, // 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, // 0x3C
KEY_EQUAL, // 0x3D
0, // 0x3E
0, // 0x3F
0, // 0x40
0, // 0x41
0, // 0x42
0, // 0x43
0, // 0x44
0, // 0x45
0, // 0x46
0, // 0x47
0, // 0x48
0, // 0x49
0, // 0x4A
0, // 0x4B
0, // 0x4C
0, // 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_LEFT_BRACE, // 0x5B
KEY_BACKSLASH, // 0x5C
KEY_RIGHT_BRACE, // 0x5D
0, // 0x5E
0, // 0x5F
KEY_TILDE, // 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
0, // 0x7B
0, // 0x7C
0, // 0x7D
0, // 0x7E
KEY_DELETE, // 0x7F
0, // 0x80
0, // 0x81
0, // 0x82
0, // 0x83
0, // 0x84
0, // 0x85
0, // 0x86
0, // 0x87
0, // 0x88
0, // 0x89
0, // 0x8A
0, // 0x8B
0, // 0x8C
0, // 0x8D
0, // 0x8E
0, // 0x8F
0, // 0x90
0, // 0x91
0, // 0x92
0, // 0x93
0, // 0x94
0, // 0x95
0, // 0x96
0, // 0x97
0, // 0x98
0, // 0x99
0, // 0x9A
0, // 0x9B
0, // 0x9C
0, // 0x9D
0, // 0x9E
0, // 0x9F
0, // 0xA0
0, // 0xA1
0, // 0xA2
0, // 0xA3
0, // 0xA4
0, // 0xA5
0, // 0xA6
0, // 0xA7
0, // 0xA8
0, // 0xA9
0, // 0xAA
0, // 0xAB
0, // 0xAC
0, // 0xAD
0, // 0xAE
0, // 0xAF
0, // 0xB0
KEYPAD_0, // 0xB1
KEYPAD_PERIOD, // 0xB2
0, // 0xB3
0, // 0xB4
0, // 0xB5
0, // 0xB6
0, // 0xB7
0, // 0xB8
0, // 0xB9
0, // 0xBA
0, // 0xBB
0, // 0xBC
0, // 0xBD
0, // 0xBE
0, // 0xBF
KEYPAD_1, // 0xC0
KEYPAD_2, // 0xC1
KEYPAD_3, // 0xC2
KEYPAD_ENTER, // 0xC3
0, // 0xC4
0, // 0xC5
0, // 0xC6
0, // 0xC7
0, // 0xC8
0, // 0xC9
0, // 0xCA
0, // 0xCB
0, // 0xCC
0, // 0xCD
0, // 0xCE
0, // 0xCF
KEYPAD_4, // 0xD0
KEYPAD_5, // 0xD1
KEYPAD_6, // 0xD2
KEYPAD_COMMA, // 0xD3
0, // 0xD4
0, // 0xD5
0, // 0xD6
0, // 0xD7
0, // 0xD8
0, // 0xD9
0, // 0xDA
0, // 0xDB
0, // 0xDC
0, // 0xDD
0, // 0xDE
0, // 0xDF
0, // 0xE0
KEYPAD_7, // 0xE1
KEYPAD_8, // 0xE2
KEYPAD_9, // 0xE3
KEYPAD_MINUS, // 0xE4
0, // 0xE5
0, // 0xE6
0, // 0xE7
0, // 0xE8
0, // 0xE9
0, // 0xEA
0, // 0xEB
0, // 0xEC
0, // 0xED
0, // 0xEE
0, // 0xEF
0, // 0xF0
KEY_UP, // 0xF1
KEY_DOWN, // 0xF2
KEY_LEFT, // 0xF3
KEY_RIGHT, // 0xF4
KEY_LSHIFT, // 0xF5
KEY_CTRL, // 0xF6
0, // 0xF7
0, // 0xF8
0, // 0xF9
0, // 0xFA
0, // 0xFB
0, // 0xFC
0, // 0xFD
0, // 0xFE
0, // 0xFF
};

View File

@ -0,0 +1,92 @@
Name = MD1;
Version = 0.1;
Author = "HaaTa (Jacob Alexander) 2016";
KLL = 0.3d;
# Modified Date
Date = 2016-06-12;
S0x08 : U"Backspace";
S0x09 : U"Tab";
S0x1B : U"Esc";
S0x20 : U"Space";
S0x27 : U"Quote";
S0x2C : U"Comma";
S0x2D : U"Minus";
S0x2E : U"Period";
S0x2F : U"Slash";
S0x30 : U"0";
S0x31 : U"1";
S0x32 : U"2";
S0x33 : U"3";
S0x34 : U"4";
S0x35 : U"5";
S0x36 : U"6";
S0x37 : U"7";
S0x38 : U"8";
S0x39 : U"9";
S0x3B : U"Semicolon";
S0x3D : U"Equal";
S0x5B : U"LBracket";
S0x5C : U"Backslash";
S0x5D : U"RBracket";
S0x60 : U"Backtick";
S0x61 : U"A";
S0x62 : U"B";
S0x63 : U"C";
S0x64 : U"D";
S0x65 : U"E";
S0x66 : U"F";
S0x67 : U"G";
S0x68 : U"H";
S0x69 : U"I";
S0x6A : U"J";
S0x6B : U"K";
S0x6C : U"L";
S0x6D : U"M";
S0x6E : U"N";
S0x6F : U"O";
S0x70 : U"P";
S0x71 : U"Q";
S0x72 : U"R";
S0x73 : U"S";
S0x74 : U"T";
S0x75 : U"U";
S0x76 : U"V";
S0x77 : U"W";
S0x78 : U"X";
S0x79 : U"Y";
S0x7A : U"Z";
S0x7F : U"Delete";
S0xB1 : U"P0";
S0xB2 : U"P.";
S0xC0 : U"P1";
S0xC1 : U"P2";
S0xC2 : U"P3";
S0xC3 : U"PEnter";
S0xD0 : U"P4";
S0xD1 : U"P5";
S0xD2 : U"P6";
S0xD3 : U"P,";
S0xE1 : U"P7";
S0xE2 : U"P8";
S0xE3 : U"P9";
S0xE4 : U"P-";
S0xF1 : U"Up";
S0xF2 : U"Down";
S0xF3 : U"Left";
S0xF4 : U"Right";
S0xF5 : U"LShift";
S0xF6 : U"Ctrl";

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2013,2014 by Jacob Alexander /* Copyright (C) 2013,2014,2016 by Jacob Alexander
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal * of this software and associated documentation files (the "Software"), to deal
@ -25,6 +25,7 @@
#include <Lib/ScanLib.h> #include <Lib/ScanLib.h>
// Project Includes // Project Includes
#include <kll_defs.h>
#include <led.h> #include <led.h>
#include <macro.h> #include <macro.h>
#include <print.h> #include <print.h>
@ -40,6 +41,18 @@
// ----- Macros ----- // ----- Macros -----
// ----- Enums -----
// Keypress States
typedef enum KeyPosition {
KeyState_Off = 0,
KeyState_Press = 1,
KeyState_Hold = 2,
KeyState_Release = 3,
KeyState_Invalid,
} KeyPosition;
// ----- Variables ----- // ----- Variables -----
@ -212,7 +225,7 @@ void processKeyValue( uint8_t keyValue )
case 0x09: // ^I case 0x09: // ^I
case 0x0D: // ^M case 0x0D: // ^M
case 0x1B: // ^[ case 0x1B: // ^[
Macro_bufferAdd( keyValue ); Macro_keyState( keyValue, KeyState_Press );
break; break;
// 0x40 Offset Keys // 0x40 Offset Keys
// Add Ctrl key and offset to the lower alphabet // Add Ctrl key and offset to the lower alphabet
@ -221,8 +234,8 @@ void processKeyValue( uint8_t keyValue )
case 0x1D: // ^] case 0x1D: // ^]
case 0x1E: // ^^ case 0x1E: // ^^
case 0x1F: // ^_ case 0x1F: // ^_
Macro_bufferAdd( 0xF6 ); Macro_keyState( 0xF6, KeyState_Press );
Macro_bufferAdd( keyValue + 0x40 ); Macro_keyState( keyValue + 0x40, KeyState_Press );
break; break;
// - Add Shift key and offset to non-shifted key - // - Add Shift key and offset to non-shifted key -
@ -231,73 +244,73 @@ void processKeyValue( uint8_t keyValue )
case 0x23: // # case 0x23: // #
case 0x24: // $ case 0x24: // $
case 0x25: // % case 0x25: // %
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x10 ); Macro_keyState( keyValue + 0x10, KeyState_Press );
break; break;
// 0x11 Offset Keys // 0x11 Offset Keys
case 0x26: // & case 0x26: // &
case 0x28: // ( case 0x28: // (
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x11 ); Macro_keyState( keyValue + 0x11, KeyState_Press );
break; break;
// 0x07 Offset Keys // 0x07 Offset Keys
case 0x29: // ) case 0x29: // )
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x07 ); Macro_keyState( keyValue + 0x07, KeyState_Press );
break; break;
// -0x0E Offset Keys // -0x0E Offset Keys
case 0x40: // @ case 0x40: // @
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue - 0x0E ); Macro_keyState( keyValue - 0x0E, KeyState_Press );
break; break;
// 0x0E Offset Keys // 0x0E Offset Keys
case 0x2A: // * case 0x2A: // *
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x0E ); Macro_keyState( keyValue + 0x0E, KeyState_Press );
break; break;
// 0x12 Offset Keys // 0x12 Offset Keys
case 0x2B: // + case 0x2B: // +
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x12 ); Macro_keyState( keyValue + 0x12, KeyState_Press );
break; break;
// 0x05 Offset Keys // 0x05 Offset Keys
case 0x22: // " case 0x22: // "
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x05 ); Macro_keyState( keyValue + 0x05, KeyState_Press );
break; break;
// 0x01 Offset Keys // 0x01 Offset Keys
case 0x3A: // : case 0x3A: // :
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x01 ); Macro_keyState( keyValue + 0x01, KeyState_Press );
break; break;
// -0x10 Offset Keys // -0x10 Offset Keys
case 0x3C: // < case 0x3C: // <
case 0x3E: // > case 0x3E: // >
case 0x3F: // ? case 0x3F: // ?
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue - 0x10 ); Macro_keyState( keyValue - 0x10, KeyState_Press );
break; break;
// -0x28 Offset Keys // -0x28 Offset Keys
case 0x5E: // ^ case 0x5E: // ^
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue - 0x28 ); Macro_keyState( keyValue - 0x28, KeyState_Press );
break; break;
// -0x32 Offset Keys // -0x32 Offset Keys
case 0x5F: // _ case 0x5F: // _
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue - 0x32 ); Macro_keyState( keyValue - 0x32, KeyState_Press );
break; break;
// -0x20 Offset Keys // -0x20 Offset Keys
case 0x7B: // { case 0x7B: // {
case 0x7C: // | case 0x7C: // |
case 0x7D: // } case 0x7D: // }
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue - 0x20 ); Macro_keyState( keyValue - 0x20, KeyState_Press );
break; break;
// -0x1E Offset Keys // -0x1E Offset Keys
case 0x7E: // ~ case 0x7E: // ~
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue - 0x1E ); Macro_keyState( keyValue - 0x1E, KeyState_Press );
break; break;
// All other keys // All other keys
default: default:
@ -312,8 +325,8 @@ void processKeyValue( uint8_t keyValue )
// Add Ctrl key and offset to the lower alphabet // Add Ctrl key and offset to the lower alphabet
if ( keyValue >= 0x00 && keyValue <= 0x1F ) if ( keyValue >= 0x00 && keyValue <= 0x1F )
{ {
Macro_bufferAdd( 0xF6 ); Macro_keyState( 0xF6, KeyState_Press );
Macro_bufferAdd( keyValue + 0x60 ); Macro_keyState( keyValue + 0x60, KeyState_Press );
} }
// Shift Characters are from 0x41 to 0x59 // Shift Characters are from 0x41 to 0x59
@ -321,14 +334,14 @@ void processKeyValue( uint8_t keyValue )
// Add Shift key and offset to the lower alphabet // Add Shift key and offset to the lower alphabet
else if ( keyValue >= 0x41 && keyValue <= 0x5A ) else if ( keyValue >= 0x41 && keyValue <= 0x5A )
{ {
Macro_bufferAdd( 0xF5 ); Macro_keyState( 0xF5, KeyState_Press );
Macro_bufferAdd( keyValue + 0x20 ); Macro_keyState( keyValue + 0x20, KeyState_Press );
} }
// Everything else // Everything else
else else
{ {
Macro_bufferAdd( keyValue ); Macro_keyState( keyValue, KeyState_Press );
} }
break; break;
} }
@ -353,12 +366,12 @@ uint8_t Scan_sendData( uint8_t dataPayload )
} }
// Signal KeyIndex_Buffer that it has been properly read // Signal KeyIndex_Buffer that it has been properly read
void Scan_finishedWithBuffer( uint8_t sentKeys ) void Scan_finishedWithMacro( uint8_t sentKeys )
{ {
} }
// Signal that the keys have been properly sent over USB // Signal that the keys have been properly sent over USB
void Scan_finishedWithUSBBuffer( uint8_t sentKeys ) void Scan_finishedWithOutput( uint8_t sentKeys )
{ {
cli(); // Disable Interrupts cli(); // Disable Interrupts
@ -379,3 +392,8 @@ void Scan_unlockKeyboard( void )
{ {
} }
// NOTE: Does nothing with the MBC-55x
void Scan_currentChange( unsigned int current )
{
}

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2013-2015 by Jacob Alexander /* Copyright (C) 2013-2016 by Jacob Alexander
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal * of this software and associated documentation files (the "Software"), to deal
@ -48,16 +48,17 @@ extern volatile uint8_t KeyIndex_Add_InputSignal;
// ----- Functions ----- // ----- Functions -----
// Functions used by main.c // Functions used by main.c
void Scan_setup( void ); void Scan_setup();
uint8_t Scan_loop( void ); uint8_t Scan_loop();
// Functions available to macro.c // Functions available to macro.c
uint8_t Scan_sendData( uint8_t dataPayload ); uint8_t Scan_sendData( uint8_t dataPayload );
void Scan_finishedWithBuffer( uint8_t sentKeys ); void Scan_finishedWithMacro( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys ); void Scan_finishedWithOutput( uint8_t sentKeys );
void Scan_lockKeyboard( void ); void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void ); void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void ); void Scan_resetKeyboard( void );
void Scan_currentChange( unsigned int current );

View File

@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |### ###| CMake Kiibohd Controller Scan Module |###
# #
# Written by Jacob Alexander in 2013,2014 for the Kiibohd Controller # Written by Jacob Alexander in 2013,2014,2016 for the Kiibohd Controller
# #
# Released into the Public Domain # Released into the Public Domain
# #
@ -13,7 +13,7 @@
# Module C files # Module C files
# #
set( SCAN_SRCS set( Module_SRCS
scan_loop.c scan_loop.c
) )
@ -26,7 +26,7 @@ set( SCAN_SRCS
### ###
# Compiler Family Compatibility # Compiler Family Compatibility
# #
set( ScanModuleCompatibility set( ModuleCompatibility
arm arm
avr avr
) )