@@ -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 | |||
}; | |||
@@ -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"; | |||
@@ -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 | |||
* of this software and associated documentation files (the "Software"), to deal | |||
@@ -25,6 +25,7 @@ | |||
#include <Lib/ScanLib.h> | |||
// Project Includes | |||
#include <kll_defs.h> | |||
#include <led.h> | |||
#include <macro.h> | |||
#include <print.h> | |||
@@ -40,6 +41,18 @@ | |||
// ----- Macros ----- | |||
// ----- Enums ----- | |||
// Keypress States | |||
typedef enum KeyPosition { | |||
KeyState_Off = 0, | |||
KeyState_Press = 1, | |||
KeyState_Hold = 2, | |||
KeyState_Release = 3, | |||
KeyState_Invalid, | |||
} KeyPosition; | |||
// ----- Variables ----- | |||
@@ -212,7 +225,7 @@ void processKeyValue( uint8_t keyValue ) | |||
case 0x09: // ^I | |||
case 0x0D: // ^M | |||
case 0x1B: // ^[ | |||
Macro_bufferAdd( keyValue ); | |||
Macro_keyState( keyValue, KeyState_Press ); | |||
break; | |||
// 0x40 Offset Keys | |||
// Add Ctrl key and offset to the lower alphabet | |||
@@ -221,8 +234,8 @@ void processKeyValue( uint8_t keyValue ) | |||
case 0x1D: // ^] | |||
case 0x1E: // ^^ | |||
case 0x1F: // ^_ | |||
Macro_bufferAdd( 0xF6 ); | |||
Macro_bufferAdd( keyValue + 0x40 ); | |||
Macro_keyState( 0xF6, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x40, KeyState_Press ); | |||
break; | |||
// - Add Shift key and offset to non-shifted key - | |||
@@ -231,73 +244,73 @@ void processKeyValue( uint8_t keyValue ) | |||
case 0x23: // # | |||
case 0x24: // $ | |||
case 0x25: // % | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x10 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x10, KeyState_Press ); | |||
break; | |||
// 0x11 Offset Keys | |||
case 0x26: // & | |||
case 0x28: // ( | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x11 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x11, KeyState_Press ); | |||
break; | |||
// 0x07 Offset Keys | |||
case 0x29: // ) | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x07 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x07, KeyState_Press ); | |||
break; | |||
// -0x0E Offset Keys | |||
case 0x40: // @ | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue - 0x0E ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue - 0x0E, KeyState_Press ); | |||
break; | |||
// 0x0E Offset Keys | |||
case 0x2A: // * | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x0E ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x0E, KeyState_Press ); | |||
break; | |||
// 0x12 Offset Keys | |||
case 0x2B: // + | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x12 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x12, KeyState_Press ); | |||
break; | |||
// 0x05 Offset Keys | |||
case 0x22: // " | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x05 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x05, KeyState_Press ); | |||
break; | |||
// 0x01 Offset Keys | |||
case 0x3A: // : | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x01 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x01, KeyState_Press ); | |||
break; | |||
// -0x10 Offset Keys | |||
case 0x3C: // < | |||
case 0x3E: // > | |||
case 0x3F: // ? | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue - 0x10 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue - 0x10, KeyState_Press ); | |||
break; | |||
// -0x28 Offset Keys | |||
case 0x5E: // ^ | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue - 0x28 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue - 0x28, KeyState_Press ); | |||
break; | |||
// -0x32 Offset Keys | |||
case 0x5F: // _ | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue - 0x32 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue - 0x32, KeyState_Press ); | |||
break; | |||
// -0x20 Offset Keys | |||
case 0x7B: // { | |||
case 0x7C: // | | |||
case 0x7D: // } | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue - 0x20 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue - 0x20, KeyState_Press ); | |||
break; | |||
// -0x1E Offset Keys | |||
case 0x7E: // ~ | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue - 0x1E ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue - 0x1E, KeyState_Press ); | |||
break; | |||
// All other keys | |||
default: | |||
@@ -312,8 +325,8 @@ void processKeyValue( uint8_t keyValue ) | |||
// Add Ctrl key and offset to the lower alphabet | |||
if ( keyValue >= 0x00 && keyValue <= 0x1F ) | |||
{ | |||
Macro_bufferAdd( 0xF6 ); | |||
Macro_bufferAdd( keyValue + 0x60 ); | |||
Macro_keyState( 0xF6, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x60, KeyState_Press ); | |||
} | |||
// 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 | |||
else if ( keyValue >= 0x41 && keyValue <= 0x5A ) | |||
{ | |||
Macro_bufferAdd( 0xF5 ); | |||
Macro_bufferAdd( keyValue + 0x20 ); | |||
Macro_keyState( 0xF5, KeyState_Press ); | |||
Macro_keyState( keyValue + 0x20, KeyState_Press ); | |||
} | |||
// Everything else | |||
else | |||
{ | |||
Macro_bufferAdd( keyValue ); | |||
Macro_keyState( keyValue, KeyState_Press ); | |||
} | |||
break; | |||
} | |||
@@ -353,12 +366,12 @@ uint8_t Scan_sendData( uint8_t dataPayload ) | |||
} | |||
// 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 | |||
void Scan_finishedWithUSBBuffer( uint8_t sentKeys ) | |||
void Scan_finishedWithOutput( uint8_t sentKeys ) | |||
{ | |||
cli(); // Disable Interrupts | |||
@@ -379,3 +392,8 @@ void Scan_unlockKeyboard( void ) | |||
{ | |||
} | |||
// NOTE: Does nothing with the MBC-55x | |||
void Scan_currentChange( unsigned int current ) | |||
{ | |||
} | |||
@@ -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 | |||
* of this software and associated documentation files (the "Software"), to deal | |||
@@ -48,16 +48,17 @@ extern volatile uint8_t KeyIndex_Add_InputSignal; | |||
// ----- Functions ----- | |||
// Functions used by main.c | |||
void Scan_setup( void ); | |||
uint8_t Scan_loop( void ); | |||
void Scan_setup(); | |||
uint8_t Scan_loop(); | |||
// Functions available to macro.c | |||
uint8_t Scan_sendData( uint8_t dataPayload ); | |||
void Scan_finishedWithBuffer( uint8_t sentKeys ); | |||
void Scan_finishedWithUSBBuffer( uint8_t sentKeys ); | |||
void Scan_finishedWithMacro( uint8_t sentKeys ); | |||
void Scan_finishedWithOutput( uint8_t sentKeys ); | |||
void Scan_lockKeyboard( void ); | |||
void Scan_unlockKeyboard( void ); | |||
void Scan_resetKeyboard( void ); | |||
void Scan_currentChange( unsigned int current ); | |||
@@ -1,6 +1,6 @@ | |||
###| 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 | |||
# | |||
@@ -13,7 +13,7 @@ | |||
# Module C files | |||
# | |||
set( SCAN_SRCS | |||
set( Module_SRCS | |||
scan_loop.c | |||
) | |||
@@ -26,7 +26,7 @@ set( SCAN_SRCS | |||
### | |||
# Compiler Family Compatibility | |||
# | |||
set( ScanModuleCompatibility | |||
set( ModuleCompatibility | |||
arm | |||
avr | |||
) |