Quellcode durchsuchen

Major code cleanup and preparation for PartialMap Macro Module

- Code should be working, but much is untested
- All of the old modules will need to update and use the new DefaultMap keymap
- There might still be some naming conflicts with some Scan Modules
simple
Jacob Alexander vor 10 Jahren
Ursprung
Commit
9d423a64a8
81 geänderte Dateien mit 1373 neuen und 904 gelöschten Zeilen
  1. 0
    3
      CMakeLists.txt
  2. 15
    15
      Debug/cli/cli.c
  3. 6
    6
      Debug/cli/cli.h
  4. 0
    7
      Debug/full/setup.cmake
  5. 1
    7
      Debug/led/setup.cmake
  6. 3
    3
      Debug/print/print.c
  7. 2
    2
      Debug/print/print.h
  8. 1
    7
      Debug/print/setup.cmake
  9. 172
    0
      Macro/PartialMap/macro.c
  10. 48
    0
      Macro/PartialMap/macro.h
  11. 31
    0
      Macro/PartialMap/setup.cmake
  12. 365
    0
      Macro/PartialMap/usb_hid.h
  13. 3
    2
      Macro/basic/setup.cmake
  14. 0
    0
      Macro/buffer/Keymap/avrcapsense.h
  15. 0
    0
      Macro/buffer/Keymap/betkb.h
  16. 0
    0
      Macro/buffer/Keymap/budkeypad.h
  17. 0
    0
      Macro/buffer/Keymap/epsonqx10.h
  18. 0
    0
      Macro/buffer/Keymap/facom6684.h
  19. 0
    0
      Macro/buffer/Keymap/heathzenith.h
  20. 0
    0
      Macro/buffer/Keymap/hp150.h
  21. 0
    0
      Macro/buffer/Keymap/ibmconvertible.h
  22. 0
    0
      Macro/buffer/Keymap/kaypro1.h
  23. 0
    0
      Macro/buffer/Keymap/keymap.h
  24. 0
    0
      Macro/buffer/Keymap/mbc55x.h
  25. 0
    0
      Macro/buffer/Keymap/microswitch8304.h
  26. 0
    0
      Macro/buffer/Keymap/skm67001.h
  27. 0
    0
      Macro/buffer/Keymap/sonynews.h
  28. 0
    0
      Macro/buffer/Keymap/sonyoas3400.h
  29. 0
    0
      Macro/buffer/Keymap/tandy1000.h
  30. 0
    0
      Macro/buffer/Keymap/univacf3w9.h
  31. 0
    0
      Macro/buffer/Keymap/usb_keys.h
  32. 11
    1
      Macro/buffer/setup.cmake
  33. 14
    14
      Output/pjrcUSB/output_com.c
  34. 10
    9
      Output/pjrcUSB/output_com.h
  35. 8
    13
      Scan/BETKB/scan_loop.c
  36. 12
    12
      Scan/BETKB/scan_loop.h
  37. 1
    25
      Scan/BETKB/setup.cmake
  38. 1
    9
      Scan/BudKeypad/setup.cmake
  39. 7
    40
      Scan/DPH/scan_loop.c
  40. 10
    10
      Scan/DPH/scan_loop.h
  41. 0
    24
      Scan/DPH/setup.cmake
  42. 33
    38
      Scan/EpsonQX-10/scan_loop.c
  43. 12
    12
      Scan/EpsonQX-10/scan_loop.h
  44. 1
    25
      Scan/EpsonQX-10/setup.cmake
  45. 15
    20
      Scan/FACOM6684/scan_loop.c
  46. 12
    12
      Scan/FACOM6684/scan_loop.h
  47. 1
    25
      Scan/FACOM6684/setup.cmake
  48. 13
    18
      Scan/HP150/scan_loop.c
  49. 12
    12
      Scan/HP150/scan_loop.h
  50. 1
    25
      Scan/HP150/setup.cmake
  51. 1
    9
      Scan/HeathZenith/setup.cmake
  52. 1
    9
      Scan/IBMConvertible/setup.cmake
  53. 47
    52
      Scan/Kaypro1/scan_loop.c
  54. 12
    12
      Scan/Kaypro1/scan_loop.h
  55. 1
    9
      Scan/Kaypro1/setup.cmake
  56. 46
    51
      Scan/MBC-55X/scan_loop.c
  57. 12
    12
      Scan/MBC-55X/scan_loop.h
  58. 1
    25
      Scan/MBC-55X/setup.cmake
  59. 14
    19
      Scan/MicroSwitch8304/scan_loop.c
  60. 12
    12
      Scan/MicroSwitch8304/scan_loop.h
  61. 1
    25
      Scan/MicroSwitch8304/setup.cmake
  62. 119
    0
      Scan/SKM67001/customSKM.h
  63. 121
    0
      Scan/SKM67001/defaultMap.h
  64. 1
    9
      Scan/SKM67001/setup.cmake
  65. 14
    19
      Scan/SonyNEWS/scan_loop.c
  66. 12
    12
      Scan/SonyNEWS/scan_loop.h
  67. 1
    25
      Scan/SonyNEWS/setup.cmake
  68. 13
    18
      Scan/SonyOA-S3400/scan_loop.c
  69. 12
    12
      Scan/SonyOA-S3400/scan_loop.h
  70. 1
    24
      Scan/SonyOA-S3400/setup.cmake
  71. 13
    16
      Scan/Tandy1000/scan_loop.c
  72. 12
    12
      Scan/Tandy1000/scan_loop.h
  73. 1
    9
      Scan/Tandy1000/setup.cmake
  74. 16
    21
      Scan/UnivacF3W9/scan_loop.c
  75. 12
    12
      Scan/UnivacF3W9/scan_loop.h
  76. 1
    25
      Scan/UnivacF3W9/setup.cmake
  77. 15
    27
      Scan/matrix/scan_loop.c
  78. 5
    11
      Scan/matrix/scan_loop.h
  79. 1
    7
      Scan/matrix/setup.cmake
  80. 8
    9
      main.c
  81. 26
    5
      setup.cmake

+ 0
- 3
CMakeLists.txt Datei anzeigen

@@ -11,9 +11,6 @@
set( CMAKE_LEGACY_CYGWIN_WIN32 0 )
set( CMAKE_USE_RELATIVE_PATHS 1 )

#| Add Dependency Macro
include( AddFileDependencies )



###

+ 15
- 15
Debug/cli/cli.c Datei anzeigen

@@ -58,7 +58,7 @@ inline void prompt()
}

// Initialize the CLI
inline void init_cli()
inline void CLI_init()
{
// Reset the Line Buffer
CLILineBufferCurrent = 0;
@@ -68,7 +68,7 @@ inline void init_cli()

// Register first dictionary
CLIDictionariesUsed = 0;
registerDictionary_cli( basicCLIDict, basicCLIDictName );
CLI_registerDictionary( basicCLIDict, basicCLIDictName );

// Initialize main LED
init_errorLED();
@@ -79,7 +79,7 @@ inline void init_cli()
}

// Query the serial input buffer for any new characters
void process_cli()
void CLI_process()
{
// Current buffer position
uint8_t prev_buf_pos = CLILineBufferCurrent;
@@ -88,11 +88,11 @@ void process_cli()
while ( 1 )
{
// No more characters to process
if ( output_availablechar() == 0 )
if ( Output_availablechar() == 0 )
break;

// Retrieve from output module
char cur_char = (char)output_getchar();
char cur_char = (char)Output_getchar();

// Make sure buffer isn't full
if ( CLILineBufferCurrent >= CLILineBufferMaxSize )
@@ -143,7 +143,7 @@ void process_cli()
CLILineBufferCurrent--;

// Process the current line buffer
commandLookup_cli();
CLI_commandLookup();

// Reset the buffer
CLILineBufferCurrent = 0;
@@ -158,7 +158,7 @@ void process_cli()

case 0x09: // Tab
// Tab completion for the current command
tabCompletion_cli();
CLI_tabCompletion();

CLILineBufferCurrent--; // Remove the Tab

@@ -207,7 +207,7 @@ void process_cli()
// One to the first non-space character
// The second to the next argument (first NULL if there isn't an argument). delimited by a space
// Places a NULL at the first space after the first argument
inline void argumentIsolation_cli( char* string, char** first, char** second )
inline void CLI_argumentIsolation( char* string, char** first, char** second )
{
// Mark out the first argument
// This is done by finding the first space after a list of non-spaces and setting it NULL
@@ -228,7 +228,7 @@ inline void argumentIsolation_cli( char* string, char** first, char** second )
}

// Scans the CLILineBuffer for any valid commands
void commandLookup_cli()
void CLI_commandLookup()
{
// Ignore command if buffer is 0 length
if ( CLILineBufferCurrent == 0 )
@@ -241,7 +241,7 @@ void commandLookup_cli()
// Places a NULL at the first space after the command
char* cmdPtr;
char* argPtr;
argumentIsolation_cli( CLILineBuffer, &cmdPtr, &argPtr );
CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr );

// Scan array of dictionaries for a valid command match
for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ )
@@ -267,7 +267,7 @@ void commandLookup_cli()
}

// Registers a command dictionary with the CLI
inline void registerDictionary_cli( CLIDictItem *cmdDict, char* dictName )
inline void CLI_registerDictionary( CLIDictItem *cmdDict, char* dictName )
{
// Make sure this max limit of dictionaries hasn't been reached
if ( CLIDictionariesUsed >= CLIMaxDictionaries )
@@ -281,7 +281,7 @@ inline void registerDictionary_cli( CLIDictItem *cmdDict, char* dictName )
CLIDict[CLIDictionariesUsed++] = cmdDict;
}

inline void tabCompletion_cli()
inline void CLI_tabCompletion()
{
// Ignore command if buffer is 0 length
if ( CLILineBufferCurrent == 0 )
@@ -294,7 +294,7 @@ inline void tabCompletion_cli()
// Places a NULL at the first space after the command
char* cmdPtr;
char* argPtr;
argumentIsolation_cli( CLILineBuffer, &cmdPtr, &argPtr );
CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr );

// Tab match pointer
char* tabMatch = 0;
@@ -393,7 +393,7 @@ void cliFunc_led( char* args )
void cliFunc_reload( char* args )
{
// Request to output module to be set into firmware reload mode
output_firmwareReload();
Output_firmwareReload();
}

void cliFunc_reset( char* args )
@@ -404,7 +404,7 @@ void cliFunc_reset( char* args )
void cliFunc_restart( char* args )
{
// Trigger an overall software reset
output_softReset();
Output_softReset();
}

void cliFunc_version( char* args )

+ 6
- 6
Debug/cli/cli.h Datei anzeigen

@@ -66,13 +66,13 @@ uint8_t CLIHexDebugMode;

// ----- Functions and Corresponding Function Aliases -----

void init_cli();
void process_cli();
void registerDictionary_cli( CLIDictItem *cmdDict, char* dictName );
void argumentIsolation_cli( char* string, char** first, char** second );
void CLI_init();
void CLI_process();
void CLI_registerDictionary( CLIDictItem *cmdDict, char* dictName );
void CLI_argumentIsolation( char* string, char** first, char** second );

void commandLookup_cli();
void tabCompletion_cli();
void CLI_commandLookup();
void CLI_tabCompletion();

// CLI Command Functions
void cliFunc_arch ( char* args );

+ 0
- 7
Debug/full/setup.cmake Datei anzeigen

@@ -19,13 +19,6 @@ set( DEBUG_SRCS
)


###
# Setup File Dependencies
#
add_file_dependencies( ../led/led.c ../led/led.h )
add_file_dependencies( ../print/print.c ../print/print.h )


###
# Module Specific Options
#

+ 1
- 7
Debug/led/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Debug Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -16,12 +16,6 @@ set( DEBUG_SRCS
)


###
# Setup File Dependencies
#
add_file_dependencies( ../led/led.c ../led/led.h )


###
# Module Specific Options
#

+ 3
- 3
Debug/print/print.c Datei anzeigen

@@ -45,7 +45,7 @@ void printstrs( char* first, ... )
while ( !( cur[0] == '\0' && cur[1] == '\0' && cur[2] == '\0' ) )
{
// Print out the given string
output_putstr( cur );
Output_putstr( cur );

// Get the next argument ready
cur = va_arg( ap, char* );
@@ -62,10 +62,10 @@ void _print( const char* s )
char c;
while ( ( c = pgm_read_byte( s++ ) ) != '\0' )
{
output_putchar( c );
Output_putchar( c );
}
#elif defined(_mk20dx128_) || defined(_mk20dx256_) // ARM
output_putstr( (char*)s );
Output_putstr( (char*)s );
#endif
}


+ 2
- 2
Debug/print/print.h Datei anzeigen

@@ -46,8 +46,8 @@
*/

// Function Aliases
#define dPrint(c) output_putstr(c)
#define dPrintStr(c) output_putstr(c)
#define dPrint(c) Output_putstr(c)
#define dPrintStr(c) Output_putstr(c)
#define dPrintStrs(...) printstrs(__VA_ARGS__, "\0\0\0") // Convenience Variadic Macro
#define dPrintStrNL(c) dPrintStrs (c, NL) // Appends New Line Macro
#define dPrintStrsNL(...) printstrs(__VA_ARGS__, NL, "\0\0\0") // Appends New Line Macro

+ 1
- 7
Debug/print/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Debug Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -16,12 +16,6 @@ set( DEBUG_SRCS
)


###
# Setup File Dependencies
#
add_file_dependencies( ../led/print.c ../led/print.h )


###
# Module Specific Options
#

+ 172
- 0
Macro/PartialMap/macro.c Datei anzeigen

@@ -0,0 +1,172 @@
/* Copyright (C) 2014 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.
*/

// ----- Includes -----

// Compiler Includes
#include <Lib/MacroLib.h>

// Project Includes
#include <cli.h>
#include <led.h>
#include <print.h>
#include <scan_loop.h>
#include <output_com.h>

// Keymaps
#include "usb_hid.h"
#include <defaultMap.h>

// Local Includes
#include "macro.h"



// ----- Function Declarations -----

void cliFunc_capList ( char* args );
void cliFunc_capSelect ( char* args );
void cliFunc_lookComb ( char* args );
void cliFunc_lookDefault( char* args );
void cliFunc_lookPartial( char* args );
void cliFunc_macroDebug ( char* args );



// ----- Variables -----

// Output Module command dictionary
char* macroCLIDictName = "Macro Module Commands";
CLIDictItem macroCLIDict[] = {
{ "capList", "Prints an indexed list of all non USB keycode capabilities.", cliFunc_capList },
{ "capSelect", "Triggers the specified capability. U10 is USB Code 0x0A (G). K11 is keyboard capability 0x0B.", cliFunc_capSelect },
{ "lookComb", "Do a lookup on the Combined map. S10 specifies Scancode 0x0A. U10 specified USB keycode 0x0A.", cliFunc_lookComb },
{ "lookDefault", "Do a lookup on the Default map. S10 specifies Scancode 0x0A. USB keycodes are not valid.", cliFunc_lookDefault },
{ "lookPartial", "Do a lookup on the layered partial map. S10 specifies Scancode 0x0A. U10 specifies USB keycode 0x0A.", cliFunc_lookPartial },
{ "macroDebug", "Disables/Enables sending USB keycodes to the Output Module and prints U/K codes.", cliFunc_macroDebug },
{ 0, 0, 0 } // Null entry for dictionary end
};



// ----- Functions -----

inline void Macro_bufferAdd( uint8_t byte )
{
// Make sure we haven't overflowed the key buffer
// Default function for adding keys to the KeyIndex_Buffer, does a DefaultMap_Lookup
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER )
{
KeyIndex_Buffer[KeyIndex_BufferUsed++] = DefaultMap_Lookup[byte];
}
}

inline void Macro_finishWithUSBBuffer( uint8_t sentKeys )
{
}

inline void Macro_process()
{
// Only do one round of macro processing between Output Module timer sends
if ( USBKeys_Sent != 0 )
return;

// Loop through input buffer
for ( uint8_t index = 0; index < KeyIndex_BufferUsed; index++ )
{
// Get the keycode from the buffer
uint8_t key = KeyIndex_Buffer[index];

// Set the modifier bit if this key is a modifier
if ( key & KEY_LCTRL ) // AND with 0xE0
{
USBKeys_Modifiers |= 1 << (key ^ KEY_LCTRL); // Left shift 1 by key XOR 0xE0

// Modifier processed, move on to the next key
continue;
}

// Too many keys
if ( USBKeys_Sent >= USBKeys_MaxSize )
{
info_print("USB Key limit reached");
errorLED( 1 );
break;
}

// Allow ignoring keys with 0's
if ( key != 0 )
{
USBKeys_Array[USBKeys_Sent++] = key;
}
else
{
// Key was not mapped
// TODO Add dead key map
erro_dPrint( "Key not mapped... - " );
printHex( key );
errorLED( 1 );
}
}

// Signal buffer that we've used it
Scan_finishedWithBuffer( KeyIndex_BufferUsed );
}

inline void Macro_setup()
{
// Register Macro CLI dictionary
CLI_registerDictionary( macroCLIDict, macroCLIDictName );
}


// ----- CLI Command Functions -----

void cliFunc_capList( char* args )
{
// TODO
}

void cliFunc_capSelect( char* args )
{
// TODO
}

void cliFunc_lookComb( char* args )
{
// TODO
}

void cliFunc_lookDefault( char* args )
{
// TODO
}

void cliFunc_lookPartial( char* args )
{
// TODO
}

void cliFunc_macroDebug( char* args )
{
// TODO
}


+ 48
- 0
Macro/PartialMap/macro.h Datei anzeigen

@@ -0,0 +1,48 @@
/* Copyright (C) 2014 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.
*/

#ifndef __macro_h
#define __macro_h

// ----- Includes -----

// Compiler Includes
#include <stdint.h>



// ----- Variables -----



// ----- Macros -----



// ----- Functions -----

void Macro_bufferAdd( uint8_t byte );
void Macro_finishWithUSBBuffer( uint8_t sentKeys );
void Macro_process();
void Macro_setup();

#endif


+ 31
- 0
Macro/PartialMap/setup.cmake Datei anzeigen

@@ -0,0 +1,31 @@
###| CMake Kiibohd Controller Macro Module |###
#
# Written by Jacob Alexander in 2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
###


###
# Module C files
#

set( MACRO_SRCS
macro.c
)


###
# Module Specific Options
#


###
# Compiler Family Compatibility
#
set( MacroModuleCompatibility
arm
avr
)


+ 365
- 0
Macro/PartialMap/usb_hid.h Datei anzeigen

@@ -0,0 +1,365 @@
/* Copyright (C) 2011-2014 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.
*/

#ifndef __usb_hid_h
#define __usb_hid_h

// ----- Defines -----

// The USB codes are all taken from the USB HID Spec
// http://www.usb.org/developers/devclass_docs/Hut1_11.pdf

// List of Keycodes - USB HID 1.11 pg 53
#define KEY_NOEVENT 0x00 // Event, not a physical key
#define KEY_ERRORROLLOVER 0x01 // Event, not a physical key
#define KEY_POSTFAIL 0x02 // Event, not a physical key
#define KEY_ERRORUNDEFINED 0x03 // Event, not a physical key
#define KEY_A 0x04
#define KEY_B 0x05
#define KEY_C 0x06
#define KEY_D 0x07
#define KEY_E 0x08
#define KEY_F 0x09
#define KEY_G 0x0A
#define KEY_H 0x0B
#define KEY_I 0x0C
#define KEY_J 0x0D
#define KEY_K 0x0E
#define KEY_L 0x0F
#define KEY_M 0x10
#define KEY_N 0x11
#define KEY_O 0x12
#define KEY_P 0x13
#define KEY_Q 0x14
#define KEY_R 0x15
#define KEY_S 0x16
#define KEY_T 0x17
#define KEY_U 0x18
#define KEY_V 0x19
#define KEY_W 0x1A
#define KEY_X 0x1B
#define KEY_Y 0x1C
#define KEY_Z 0x1D
#define KEY_1 0x1E
#define KEY_2 0x1F
#define KEY_3 0x20
#define KEY_4 0x21
#define KEY_5 0x22
#define KEY_6 0x23
#define KEY_7 0x24
#define KEY_8 0x25
#define KEY_9 0x26
#define KEY_0 0x27
#define KEY_ENTER 0x28
#define KEY_ESC 0x29
#define KEY_BACKSPACE 0x2A
#define KEY_TAB 0x2B
#define KEY_SPACE 0x2C
#define KEY_MINUS 0x2D
#define KEY_EQUAL 0x2E
#define KEY_LEFT_BRACE 0x2F
#define KEY_RIGHT_BRACE 0x30
#define KEY_BACKSLASH 0x31
#define KEY_NUMBER 0x32
#define KEY_SEMICOLON 0x33
#define KEY_QUOTE 0x34
#define KEY_TILDE 0x35
#define KEY_COMMA 0x36
#define KEY_PERIOD 0x37
#define KEY_SLASH 0x38
#define KEY_CAPS_LOCK 0x39
#define KEY_F1 0x3A
#define KEY_F2 0x3B
#define KEY_F3 0x3C
#define KEY_F4 0x3D
#define KEY_F5 0x3E
#define KEY_F6 0x3F
#define KEY_F7 0x40
#define KEY_F8 0x41
#define KEY_F9 0x42
#define KEY_F10 0x43
#define KEY_F11 0x44
#define KEY_F12 0x45
#define KEY_PRINTSCREEN 0x46
#define KEY_SCROLL_LOCK 0x47
#define KEY_PAUSE 0x48
#define KEY_INSERT 0x49
#define KEY_HOME 0x4A
#define KEY_PAGE_UP 0x4B
#define KEY_DELETE 0x4C
#define KEY_END 0x4D
#define KEY_PAGE_DOWN 0x4E
#define KEY_RIGHT 0x4F
#define KEY_LEFT 0x50
#define KEY_DOWN 0x51
#define KEY_UP 0x52
#define KEY_NUM_LOCK 0x53
#define KEYPAD_SLASH 0x54
#define KEYPAD_ASTERIX 0x55
#define KEYPAD_MINUS 0x56
#define KEYPAD_PLUS 0x57
#define KEYPAD_ENTER 0x58
#define KEYPAD_1 0x59
#define KEYPAD_2 0x5A
#define KEYPAD_3 0x5B
#define KEYPAD_4 0x5C
#define KEYPAD_5 0x5D
#define KEYPAD_6 0x5E
#define KEYPAD_7 0x5F
#define KEYPAD_8 0x60
#define KEYPAD_9 0x61
#define KEYPAD_0 0x62
#define KEYPAD_PERIOD 0x63
#define KEY_ISO_BACKSLASH 0x64
#define KEY_APP 0x65
#define KEYBOARD_STATUS 0x66 // Used for indicating status or errors, not a key
#define KEYPAD_EQUAL 0x67
#define KEY_F13 0x68
#define KEY_F14 0x69
#define KEY_F15 0x6A
#define KEY_F16 0x6B
#define KEY_F17 0x6C
#define KEY_F18 0x6D
#define KEY_F19 0x6E
#define KEY_F20 0x6F
#define KEY_F21 0x70
#define KEY_F22 0x71
#define KEY_F23 0x72
#define KEY_F24 0x73
#define KEY_EXEC 0x74
#define KEY_HELP 0x75
#define KEY_MENU 0x76
#define KEY_SELECT 0x77
#define KEY_STOP 0x78
#define KEY_AGAIN 0x79
#define KEY_UNDO 0x7A
#define KEY_CUT 0x7B
#define KEY_COPY 0x7C
#define KEY_PASTE 0x7D
#define KEY_FIND 0x7E
#define KEY_MUTE 0x7F
#define KEY_VOL_UP 0x80
#define KEY_VOL_DOWN 0x81
#define KEY_CAPS_LLOCK 0x82 // "Locking" Scroll Lock (Old keyboards with Locking Caps Lock)
#define KEY_NUM_LLOCK 0x83
#define KEY_SCROLL_LLOCK 0x84
#define KEYPAD_COMMA 0x85 // Brazillian (See spec)
#define KEYPAD_EQUAL_AS 0x86 // AS/400 Keyboard (See spec)
#define KEY_INTER1 0x87 // KANJI1 - Brazillian and Japanese "Ru" and "-"
#define KEY_INTER2 0x88 // KANJI2 - Japanese Katakana/Hiragana
#define KEY_INTER3 0x89 // KANJI3 - Japanese Yen
#define KEY_INTER4 0x8A // KANJI4 - Japanese Henkan
#define KEY_INTER5 0x8B // KANJI5 - Japanese Muhenkan
#define KEY_INTER6 0x8C // KANJI6 - PC0x62 Comma (Ka-m-ma)
#define KEY_INTER7 0x8D // KANJI7 - Double-Byte/Single-Byte Toggle
#define KEY_INTER8 0x8E // KANJI8 - Undefined
#define KEY_INTER9 0x8F // KANJI9 - Undefined
#define KEY_LANG1 0x90 // Korean Hangul/English Toggle
#define KEY_LANG2 0x91 // Korean Hanja Conversion - Japanese Eisu
#define KEY_LANG3 0x92 // Japanese Katakana Key (USB)
#define KEY_LANG4 0x93 // Japanese Hiragana Key (USB)
#define KEY_LANG5 0x94 // Japanese Zenkaku/Hankaku Key (USB)
#define KEY_LANG6 0x95 // Reserved (Application Specific)
#define KEY_LANG7 0x96 // Reserved (Application Specific)
#define KEY_LANG8 0x97 // Reserved (Application Specific)
#define KEY_LANG9 0x98 // Reserved (Application Specific)
#define KEY_ALT_ERASE 0x99 // Special Erase (See Spec)
#define KEY_SYSREQ_ATT 0x9A // Modifier Type
#define KEY_CANCEL 0x9B
#define KEY_CLEAR 0x9C
#define KEY_PRIOR 0x9D
#define KEY_RETURN 0x9E
#define KEY_SEPARATOR 0x9F
#define KEY_OUT 0xA0

#define KEY_OPER 0xA1
#define KEY_CLEAR_AGAIN 0xA2
#define KEY_CRSEL_PROPS 0xA3
#define KEY_EXSEL 0xA4
// 0xA5 - 0xAF Reserved
#define KEYPAD_00 0xB0
#define KEYPAD_000 0xB1
#define KEY_1000_SEP 0xB2
#define KEY_DECIMAL_SEP 0xB3
#define KEY_CURRENCY_MAIN 0xB4
#define KEY_CURRENCY_SUB 0xB5
#define KEYPAD_LPAREN 0xB6
#define KEYPAD_RPAREN 0xB7
#define KEYPAD_LBRACE 0xB8
#define KEYPAD_RBRACE 0xB9
#define KEYPAD_TAB 0xBA
#define KEYPAD_BACKSPACE 0xBB
#define KEYPAD_A 0xBC
#define KEYPAD_B 0xBD
#define KEYPAD_C 0xBE
#define KEYPAD_D 0xBF
#define KEYPAD_E 0xC0
#define KEYPAD_F 0xC1
#define KEYPAD_XOR 0xC2
#define KEYPAD_CHEVRON 0xC3
#define KEYPAD_PERCENT 0xC4
#define KEYPAD_LTHAN 0xC5
#define KEYPAD_GTHAN 0xC6
#define KEYPAD_BITAND 0xC7
#define KEYPAD_AND 0xC8
#define KEYPAD_BITOR 0xC9
#define KEYPAD_OR 0xCA
#define KEYPAD_COLON 0xCB
#define KEYPAD_POUND 0xCC
#define KEYPAD_SPACE 0xCD
#define KEYPAD_AT 0xCE
#define KEYPAD_EXCLAIM 0xCF
#define KEYPAD_MEM_STORE 0xD0
#define KEYPAD_MEM_RECALL 0xD1
#define KEYPAD_MEM_CLEAR 0xD2
#define KEYPAD_MEM_ADD 0xD3
#define KEYPAD_MEM_SUB 0xD4
#define KEYPAD_MEM_MULT 0xD5
#define KEYPAD_MEM_DIV 0xD6
#define KEYPAD_PLUS_MINUS 0xD7
#define KEYPAD_CLEAR 0xD8
#define KEYPAD_CLEAR_ENTRY 0xD9
#define KEYPAD_BINARY 0xDA
#define KEYPAD_OCTAL 0xDB
#define KEYPAD_DECIMAL 0xDC
#define KEYPAD_HEX 0xDD
// 0xDE - 0xDF Reserved
#define KEY_CTRL 0xE0 // Convenience
#define KEY_LCTRL 0xE0
#define KEY_SHIFT 0xE1 // Convenience
#define KEY_LSHIFT 0xE1
#define KEY_ALT 0xE2 // Convenience
#define KEY_LALT 0xE2
#define KEY_GUI 0xE3 // Convenience
#define KEY_LGUI 0xE3
#define KEY_RCTRL 0xE4
#define KEY_RSHIFT 0xE5
#define KEY_RALT 0xE6
#define KEY_RGUI 0xE7
// 0xE8 - 0xFFFF Reserved
// Except for 0xE0-0xE7 which are DV (Dynamic Flags), all Keycodes are Sel (Selectors).


// List of LED codes - USB HID 1.11 pg 61
// LED/Indicators are defined as:
// OOC - On/Off Control
// US - Usage Indicator: 1 - In Use, 0 - Not In Use
// UM - Usage Multi Mode Indicator Collection of 1 or more indicators: On, Flash, Slow Blink, Fast Blink, Off
// Sel - Selector
// DV - Dynamic Flag
#define LED_UNDEFINED 0x00
#define LED_NUM_LOCK 0x01 // OOC
#define LED_CAPS_LOCK 0x02 // OOC
#define LED_SCROLL_LOCK 0x03 // OOC
#define LED_COMPOSE 0x04 // OOC
#define LED_KANA 0x05 // OOC
#define LED_POWER 0x06 // OOC
#define LED_SHIFT 0x07 // OOC
#define LED_DO_NOT_DISTURB 0x08 // OOC
#define LED_MUTE 0x09 // OOC
#define LED_TONE_ENABLE 0x0A // OOC
#define LED_HIGHCUT_FILTER 0x0B // OOC
#define LED_LOWCUT_FILTER 0x0C // OOC
#define LED_EQL_ENABLE 0x0D // OOC
#define LED_SND_FLD_ON 0x0E // OOC
#define LED_SURROUND_ON 0x0F // OOC
#define LED_REPEAT 0x10 // OOC
#define LED_STEREO 0x11 // OOC
#define LED_SAMPLE_RT_DET 0x12 // OOC
#define LED_SPINNING 0x13 // OOC
#define LED_CAV 0x14 // OOC
#define LED_CLV 0x15 // OOC
#define LED_REC_FMT_DET 0x16 // OOC
#define LED_OFF_HOOK 0x17 // OOC
#define LED_RING 0x18 // OOC
#define LED_MSG_WAITING 0x19 // OOC
#define LED_DATA_MODE 0x1A // OOC
#define LED_BAT_OPERATION 0x1B // OOC
#define LED_BAT_OK 0x1C // OOC
#define LED_BAT_LOW 0x1D // OOC
#define LED_SPEAKER 0x1E // OOC
#define LED_HEAD_SET 0x1F // OOC
#define LED_HOLD 0x20 // OOC
#define LED_MICROPHONE 0x21 // OOC
#define LED_COVERAGE 0x22 // OOC
#define LED_NIGHT_MODE 0x23 // OOC
#define LED_SEND_CALLS 0x24 // OOC
#define LED_CALL_PICKUP 0x25 // OOC
#define LED_CONFERENCE 0x26 // OOC
#define LED_STAND_BY 0x27 // OOC
#define LED_CAMERA_ON 0x28 // OOC
#define LED_CAMERA_OFF 0x29 // OOC
#define LED_ON_LINE 0x2A // OOC
#define LED_OFF_LINE 0x2B // OOC
#define LED_BUSY 0x2C // OOC
#define LED_READY 0x2D // OOC
#define LED_PAPER_OUT 0x2E // OOC
#define LED_PAPER_JAM 0x2F // OOC
#define LED_REMOTE 0x30 // OOC
#define LED_FORWARD 0x31 // OOC
#define LED_REVERSE 0x32 // OOC
#define LED_STOP 0x33 // OOC
#define LED_REWIND 0x34 // OOC
#define LED_FAST_FORWARD 0x35 // OOC
#define LED_PLAY 0x36 // OOC
#define LED_PAUSE 0x37 // OOC
#define LED_RECORD 0x38 // OOC
#define LED_ERROR 0x39 // OOC
#define LED_USI 0x3A // US
#define LED_UIUI 0x3B // US
#define LED_UMMI 0x3C // UM
#define LED_IND_ON 0x3D // Sel
#define LED_IND_FLASH 0x3E // Sel
#define LED_IND_SLOW_BLNK 0x3F // Sel
#define LED_IND_FAST_BLNK 0x40 // Sel
#define LED_IND_OFF 0x41 // Sel
#define LED_FLASH_ON_TIME 0x42 // DV
#define LED_SLW_B_ON_TIME 0x43 // DV
#define LED_SLW_B_OFF_TIME 0x44 // DV
#define LED_FST_B_ON_TIME 0x45 // DV
#define LED_FST_B_OFF_TIME 0x46 // DV
#define LED_UIC 0x47 // UM
#define LED_IND_RED 0x48 // Sel
#define LED_IND_GREEN 0x49 // Sel
#define LED_IND_AMBER 0x4A // Sel
#define LED_GENERIC_IND 0x4B // OOC
#define LED_SYS_SUSPEND 0x4C // OOC
#define LED_EXT_PWR_CONN 0x4D // OOC
// 0x4E - 0xFFFF Reserved


// List of Mouse Buttons - USB HID 1.11 pg 67
#define MOUSE_NOPRESS 0x00
#define MOUSE_PRIMARY 0x01 // Button 1
#define MOUSE_SECONDARY 0x02 // Button 2
#define MOUSE_TERTIARY 0x03 // Button 3
#define MOUSE_BUTTON(x) x
// Continues to 0xFFFF, the higher the Mouse code, the selector significance descreases
// Buttons can be defined as:
// Sel - Selector
// OOC - On/Off Control
// MC - Momentary Control
// OSC - One-Shot Control
// depending on context.


#endif


+ 3
- 2
Macro/basic/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Macro Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -14,7 +14,8 @@
message( AUTHOR_WARNING
"The 'basic' macro module was originally designed for matrix scanning designs,
it was found not to be scalable with NKRO keyboard converters.
It has also not been tested in a long time, use at your own risk."
It has also not been tested in a (very) long time, use at your own risk.
It is older than the deprecated 'buffer' macro module."
)



Keymap/avrcapsense.h → Macro/buffer/Keymap/avrcapsense.h Datei anzeigen


Keymap/betkb.h → Macro/buffer/Keymap/betkb.h Datei anzeigen


Keymap/budkeypad.h → Macro/buffer/Keymap/budkeypad.h Datei anzeigen


Keymap/epsonqx10.h → Macro/buffer/Keymap/epsonqx10.h Datei anzeigen


Keymap/facom6684.h → Macro/buffer/Keymap/facom6684.h Datei anzeigen


Keymap/heathzenith.h → Macro/buffer/Keymap/heathzenith.h Datei anzeigen


Keymap/hp150.h → Macro/buffer/Keymap/hp150.h Datei anzeigen


Keymap/ibmconvertible.h → Macro/buffer/Keymap/ibmconvertible.h Datei anzeigen


Keymap/kaypro1.h → Macro/buffer/Keymap/kaypro1.h Datei anzeigen


Keymap/keymap.h → Macro/buffer/Keymap/keymap.h Datei anzeigen


Keymap/mbc55x.h → Macro/buffer/Keymap/mbc55x.h Datei anzeigen


Keymap/microswitch8304.h → Macro/buffer/Keymap/microswitch8304.h Datei anzeigen


Keymap/skm67001.h → Macro/buffer/Keymap/skm67001.h Datei anzeigen


Keymap/sonynews.h → Macro/buffer/Keymap/sonynews.h Datei anzeigen


Keymap/sonyoas3400.h → Macro/buffer/Keymap/sonyoas3400.h Datei anzeigen


Keymap/tandy1000.h → Macro/buffer/Keymap/tandy1000.h Datei anzeigen


Keymap/univacf3w9.h → Macro/buffer/Keymap/univacf3w9.h Datei anzeigen


Keymap/usb_keys.h → Macro/buffer/Keymap/usb_keys.h Datei anzeigen


+ 11
- 1
Macro/buffer/setup.cmake Datei anzeigen

@@ -1,12 +1,22 @@
###| CMake Kiibohd Controller Macro Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
###


###
# Warning, this module has been deprecated
#
message( AUTHOR_WARNING
"The 'buffer' macro module has been deprecated in favour of 'Partial Map'.
This module may or may not compile/function properly.
It has been kept for historical purposes."
)


###
# Module C files
#

+ 14
- 14
Output/pjrcUSB/output_com.c Datei anzeigen

@@ -98,7 +98,7 @@ volatile uint8_t USBKeys_LEDs = 0;
// ----- Functions -----

// USB Module Setup
inline void output_setup()
inline void Output_setup()
{
// Initialize the USB, and then wait for the host to set configuration.
// If the Teensy is powered without a PC connected to the USB port,
@@ -106,8 +106,8 @@ inline void output_setup()
usb_init();
while ( !usb_configured() ) /* wait */ ;

// Register USB Output dictionary
registerDictionary_cli( outputCLIDict, outputCLIDictName );
// Register USB Output CLI dictionary
CLI_registerDictionary( outputCLIDict, outputCLIDictName );

// Wait an extra second for the PC's operating system to load drivers
// and do whatever it does to actually be ready for input
@@ -116,7 +116,7 @@ inline void output_setup()


// USB Data Send
inline void output_send(void)
inline void Output_send(void)
{
// TODO undo potentially old keys
for ( uint8_t c = USBKeys_Sent; c < USBKeys_MaxSize; c++ )
@@ -130,12 +130,12 @@ inline void output_send(void)
USBKeys_Sent = 0;

// Signal Scan Module we are finishedA
scan_finishedWithUSBBuffer( USBKeys_Sent <= USBKeys_MaxSize ? USBKeys_Sent : USBKeys_MaxSize );
Scan_finishedWithUSBBuffer( USBKeys_Sent <= USBKeys_MaxSize ? USBKeys_Sent : USBKeys_MaxSize );
}


// Sets the device into firmware reload mode
inline void output_firmwareReload()
inline void Output_firmwareReload()
{
#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_)
usb_debug_reload();
@@ -146,14 +146,14 @@ inline void output_firmwareReload()


// USB Input buffer available
inline unsigned int output_availablechar()
inline unsigned int Output_availablechar()
{
return usb_serial_available();
}


// USB Get Character from input buffer
inline int output_getchar()
inline int Output_getchar()
{
#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_)
// XXX Make sure to check output_availablechar() first! Information is lost with the cast (error codes)
@@ -165,14 +165,14 @@ inline int output_getchar()


// USB Send Character to output buffer
inline int output_putchar( char c )
inline int Output_putchar( char c )
{
return usb_serial_putchar( c );
}


// USB Send String to output buffer, null terminated
inline int output_putstr( char* str )
inline int Output_putstr( char* str )
{
#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) // AVR
uint16_t count = 0;
@@ -188,7 +188,7 @@ inline int output_putstr( char* str )


// Soft Chip Reset
inline void output_softReset()
inline void Output_softReset()
{
#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_)
usb_debug_software_reset();
@@ -232,7 +232,7 @@ void cliFunc_setKeys( char* args )
for ( USBKeys_SentCLI = 0; USBKeys_SentCLI < USBKeys_MaxSize; ++USBKeys_SentCLI )
{
curArgs = arg2Ptr;
argumentIsolation_cli( curArgs, &arg1Ptr, &arg2Ptr );
CLI_argumentIsolation( curArgs, &arg1Ptr, &arg2Ptr );

// Stop processing args if no more are found
if ( *arg1Ptr == '\0' )
@@ -250,7 +250,7 @@ void cliFunc_setLEDs( char* args )
// NOTE: Only first argument is used
char* arg1Ptr;
char* arg2Ptr;
argumentIsolation_cli( args, &arg1Ptr, &arg2Ptr );
CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr );

USBKeys_LEDs = decToInt( arg1Ptr );
}
@@ -262,7 +262,7 @@ void cliFunc_setMod( char* args )
// NOTE: Only first argument is used
char* arg1Ptr;
char* arg2Ptr;
argumentIsolation_cli( args, &arg1Ptr, &arg2Ptr );
CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr );

USBKeys_ModifiersCLI = decToInt( arg1Ptr );
}

+ 10
- 9
Output/pjrcUSB/output_com.h Datei anzeigen

@@ -41,7 +41,8 @@

// ----- Variables -----

// Variables used to communciate to the usb module
// Variables used to communciate to the output module
// XXX Even if the output module is not USB, this is internally understood keymapping scheme
extern uint8_t USBKeys_Modifiers;
extern uint8_t USBKeys_Array[USB_MAX_KEY_SEND];
extern uint8_t USBKeys_Sent;
@@ -58,18 +59,18 @@ extern uint8_t USBKeys_Idle_Count;

// ----- Functions -----

void output_setup();
void output_send();
void Output_setup();
void Output_send();

void output_firmwareReload();
void output_softReset();
void Output_firmwareReload();
void Output_softReset();

// Relies on USB serial module
unsigned int output_availablechar();
unsigned int Output_availablechar();

int output_getchar();
int output_putchar( char c );
int output_putstr( char* str );
int Output_getchar();
int Output_putchar( char c );
int Output_putstr( char* str );

#endif


+ 8
- 13
Scan/BETKB/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -43,11 +43,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -176,7 +171,7 @@ void processKeyValue( uint8_t keyValue )
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );

// Only send data if enabled
if ( KeyIndex_Add_InputSignal )
@@ -222,7 +217,7 @@ void removeKeyValue( uint8_t keyValue )
}
}

// Send data
// Send data
uint8_t scan_sendData( uint8_t dataPayload )
{
// Enable the USART Transmitter
@@ -245,12 +240,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_finishedWithBuffer( uint8_t sentKeys )
{
}

// Signal that the keys have been properly sent over USB
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
}


+ 12
- 12
Scan/BETKB/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/BETKB/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,33 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h microswitch8304.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=betkb_ModifierMask
-DKEYINDEX_MASK=betkb_ColemakMap
#-DKEYINDEX_MASK=betkb_DefaultMap
)


###

+ 1
- 9
Scan/BudKeypad/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -21,16 +21,8 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )
add_definitions(
-I${HEAD_DIR}/Scan/matrix
)

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=budkeypad_ModifierMask
#-DKEYINDEX_MASK=budkeypad_TheProfosistMap
-DKEYINDEX_MASK=budkeypad_DefaultMap
)



+ 7
- 40
Scan/DPH/scan_loop.c Datei anzeigen

@@ -114,11 +114,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte

// Select mux
#define SET_FULL_MUX(X) ((ADMUX) = (((ADMUX) & ~(FULL_MUX_MASK)) | ((X) & (FULL_MUX_MASK))))

@@ -198,7 +193,7 @@ uint8_t testColumn( uint8_t strobe );
// ----- Functions -----

// Initial setup for cap sense controller
inline void scan_setup()
inline void Scan_setup()
{
// TODO dfj code...needs cleanup + commenting...
setup_ADC();
@@ -282,7 +277,7 @@ inline void scan_setup()
// TODO
#endif

// TODO all this code should probably be in scan_resetKeyboard
// TODO all this code should probably be in Scan_resetKeyboard
for ( int i = 0; i < total_strobes; ++i)
{
cur_keymap[i] = 0;
@@ -309,7 +304,7 @@ inline void scan_setup()

// Main Detection Loop
// This is where the important stuff happens
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
capsense_scan();

@@ -342,43 +337,15 @@ inline uint8_t scan_loop()

// Return non-zero if macro and USB processing should be delayed
// Macro processing will always run if returning 0
// USB processing only happens once the USB send timer expires, if it has not, scan_loop will be called
// USB processing only happens once the USB send timer expires, if it has not, Scan_loop will be called
// after the macro processing has been completed
return 0;
}


// Reset Keyboard
void scan_resetKeyboard( void )
{
// Empty buffer, now that keyboard has been reset
KeyIndex_BufferUsed = 0;
}


// Send data to keyboard
// NOTE: Only used for converters, since the scan module shouldn't handle sending data in a controller
uint8_t scan_sendData( uint8_t dataPayload )
{
return 0;
}


// Reset/Hold keyboard
// NOTE: Only used for converters, not needed for full controllers
void scan_lockKeyboard( void )
{
}

// NOTE: Only used for converters, not needed for full controllers
void scan_unlockKeyboard( void )
{
}


// Signal KeyIndex_Buffer that it has been properly read
// NOTE: Only really required for implementing "tricks" in converters for odd protocols
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
// Convenient place to clear the KeyIndex_Buffer
KeyIndex_BufferUsed = 0;
@@ -388,7 +355,7 @@ void scan_finishedWithBuffer( uint8_t sentKeys )

// Signal KeyIndex_Buffer that it has been properly read and sent out by the USB module
// NOTE: Only really required for implementing "tricks" in converters for odd protocols
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
return;
}
@@ -864,7 +831,7 @@ uint8_t testColumn( uint8_t strobe )
// Only add the key to the buffer once
// NOTE: Buffer can easily handle multiple adds, just more efficient
// and nicer debug messages :P
//bufferAdd( key );
//Macro_bufferAdd( key );
}

keys_debounce[key]++;

+ 10
- 10
Scan/DPH/scan_loop.h Datei anzeigen

@@ -1,5 +1,5 @@
/* Copyright (C) 2013 by Jacob Alexander
*
/* Copyright (C) 2013-2014 by Jacob Alexander
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
@@ -46,18 +46,18 @@ extern volatile uint8_t KeyIndex_BufferUsed;
// ----- Functions -----

// Functions used by main.c
void scan_setup( void );
uint8_t scan_loop( void );
void Scan_setup( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 0
- 24
Scan/DPH/setup.cmake Datei anzeigen

@@ -16,33 +16,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h avrcapsense.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=avrcapsense_ModifierMask
#-DKEYINDEX_MASK=avrcapsense_ColemakMap
-DKEYINDEX_MASK=avrcapsense_DefaultMap
)


###

+ 33
- 38
Scan/EpsonQX-10/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -43,11 +43,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte

#define setLED(id, status) \
status = status ? 0 : 1; \
scan_setLED( id, status )
@@ -72,16 +67,16 @@ volatile uint8_t drawLED = 0;

// ----- Function Declarations -----

void scan_diagnostics( void );
void Scan_diagnostics( void );
void processKeyValue( uint8_t keyValue );
void scan_diagnostics( void );
void scan_setRepeatStart( uint8_t n );
void scan_readSwitchStatus( void );
void scan_repeatControl( uint8_t on );
void scan_enableKeyboard( uint8_t enable );
void scan_setRepeatRate( uint8_t n );
void scan_setLED( uint8_t ledNumber, uint8_t on );
void scan_readLED( void );
void Scan_diagnostics( void );
void Scan_setRepeatStart( uint8_t n );
void Scan_readSwitchStatus( void );
void Scan_repeatControl( uint8_t on );
void Scan_enableKeyboard( uint8_t enable );
void Scan_setRepeatRate( uint8_t n );
void Scan_setLED( uint8_t ledNumber, uint8_t on );
void Scan_readLED( void );



@@ -129,7 +124,7 @@ ISR(USART1_RX_vect)
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Setup Timer Pulse (16 bit)
// 16 MHz / (2 * Prescaler * (1 + OCR1A)) = 1204.8 baud (820 us)
@@ -183,7 +178,7 @@ inline void scan_setup()

// Main Detection Loop
// Nothing is required here with the Epson QX-10 Keyboards as the interrupts take care of the inputs
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
return 0;
}
@@ -241,7 +236,7 @@ void processKeyValue( uint8_t keyValue )
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
}

@@ -293,14 +288,14 @@ void processKeyValue( uint8_t keyValue )
// - Last 4 bits corresond to the KSC signals (P13, P12, P11, P10 respectively)
// Or, that can be read as, each key has it's own keycode (with NO release code)
// Modifiers are treated differently
// Add the key to the buffer, if it isn't already in the current Key Buffer
for ( uint8_t c = 0; c < KeyIndex_BufferUsed + 1; c++ )
{
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
}

@@ -368,7 +363,7 @@ void processKeyValue( uint8_t keyValue )

// Send data
// See below functions for the input sequences for the Epson QX-10 Keyboard
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
// Debug
char tmpStr[6];
@@ -380,7 +375,7 @@ uint8_t scan_sendData( uint8_t dataPayload )
}

// Signal KeyIndex_Buffer that it has been properly read
inline void scan_finishedWithBuffer( uint8_t sentKeys )
inline void Scan_finishedWithBuffer( uint8_t sentKeys )
{
return;
}
@@ -392,7 +387,7 @@ inline void scan_finishedWithBuffer( uint8_t sentKeys )
//
// However, this differentiation causes complications on how the key signals are discarded and used
// The single keypresses must be discarded immediately, while the modifiers must be kept
inline void scan_finishedWithUSBBuffer( uint8_t sentKeys )
inline void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
uint8_t foundModifiers = 0;

@@ -423,12 +418,12 @@ inline void scan_finishedWithUSBBuffer( uint8_t sentKeys )
// Reset/Hold keyboard
// Warning! This will cause the keyboard to not send any data, so you can't disable with a keypress
// The Epson QX-10 Keyboards have a command used to lock the keyboard output
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
scan_enableKeyboard( 0x00 );
}

void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
scan_enableKeyboard( 0x01 );
}
@@ -440,7 +435,7 @@ void scan_unlockKeyboard( void )
// - Sets repeat start time (500 ms)
// - Sets repeat interval (50 ms)
// - Turns off all LEDs
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
// Reset command for the QX-10 Keyboard
scan_sendData( 0xE0 );
@@ -451,11 +446,11 @@ void scan_resetKeyboard( void )

// TODO Check
// Runs Diagnostics on the keyboard
// - First does a reset (see scan_resetKeyboard)
// - First does a reset (see Scan_resetKeyboard)
// - Blinks all of the LEDs one after another
// - Outputs 0x00 if no keys are pressed
// - Outputs 0xFF if any keys are being pressed
void scan_diagnostics( void )
void Scan_diagnostics( void )
{
// Send reset command with diagnositics
scan_sendData( 0xE7 );
@@ -465,7 +460,7 @@ void scan_diagnostics( void )
// Set Repeat Interval Start
// 300 ms + n * 25 ms
// Interval after which to start the repeated keys
void scan_setRepeatStart( uint8_t n )
void Scan_setRepeatStart( uint8_t n )
{
// Send command
// Binary Representation: 000n nnnn
@@ -483,7 +478,7 @@ void scan_setRepeatStart( uint8_t n )
// 101 - Left CTRL
// 110 - GRPH SHIFT
// 111 - Right CTRL
void scan_readSwitchStatus( void )
void Scan_readSwitchStatus( void )
{
scan_sendData( 0x80 );
}
@@ -492,7 +487,7 @@ void scan_readSwitchStatus( void )
// Repeat Control
// 0x00 Stops repeat function
// 0x01 Enables repeat function
void scan_repeatControl( uint8_t on )
void Scan_repeatControl( uint8_t on )
{
// Send command
// Binary Representation: 101X XXXn
@@ -504,7 +499,7 @@ void scan_repeatControl( uint8_t on )
// Enable Sending Keyboard Data
// 0x00 Stops keycode transmission
// 0x01 Enables keycode transmission
void scan_enableKeyboard( uint8_t enable )
void Scan_enableKeyboard( uint8_t enable )
{
// Send command
// Binary Representation: 110X XXXn
@@ -515,7 +510,7 @@ void scan_enableKeyboard( uint8_t enable )
// Set Repeat Interval
// 30 ms + n * 5 ms
// Period between sending each repeated key after the initial interval
void scan_setRepeatRate( uint8_t n )
void Scan_setRepeatRate( uint8_t n )
{
// Send command
// Binary Representation: 001n nnnn
@@ -530,7 +525,7 @@ void scan_setRepeatRate( uint8_t n )
//
// 8 LEDs max (Note: 5 connected on my board, there is 1 position empty on the PCB for a total of 6)
// 0 to 7 (0x0 to 0x7)
void scan_setLED( uint8_t ledNumber, uint8_t on )
void Scan_setLED( uint8_t ledNumber, uint8_t on )
{
// Send command
// Binary Representation: 010l llln
@@ -564,7 +559,7 @@ void scan_setLED( uint8_t ledNumber, uint8_t on )

// Read LED Status
// High priority data output (may overwrite some keycode data)
void scan_readLED( void )
void Scan_readLED( void )
{
scan_sendData( 0x7F );
}

+ 12
- 12
Scan/EpsonQX-10/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -48,18 +48,18 @@ extern volatile uint8_t KeyIndex_BufferUsed;
// ----- Functions -----

// Functions used by main.c
void scan_setup( void );
uint8_t scan_loop( void );
void Scan_setup( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/EpsonQX-10/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,33 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h epsonqx10.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=epsonqx10_ModifierMask
-DKEYINDEX_MASK=epsonqx10_ColemakMap
#-DKEYINDEX_MASK=epsonqx10_DefaultMap
)


###

+ 15
- 20
Scan/FACOM6684/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2013 by Jacob Alexander
*
/* Copyright (C) 2013-2014 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
@@ -38,11 +38,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -105,7 +100,7 @@ ISR(USART1_RX_vect)
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Setup the the USART interface for keyboard data input
@@ -130,7 +125,7 @@ inline void scan_setup()


// Main Detection Loop
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
// Remove any "released keys", this is delayed due to buffer release synchronization issues
for ( uint8_t c = 0; c < KeyBufferRemoveCount; c++ )
@@ -165,7 +160,7 @@ void processKeyValue( uint8_t valueType, uint8_t keyValue )
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
}

@@ -206,7 +201,7 @@ void removeKeyValue( uint8_t keyValue )
}

// Send data
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
// Debug
char tmpStr[6];
@@ -219,7 +214,7 @@ uint8_t scan_sendData( uint8_t dataPayload )
}

// Signal KeyIndex_Buffer that it has been properly read
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
// Make sure we aren't in the middle of a receiving a new scancode
while ( KeyBufferCount != 0 );
@@ -276,7 +271,7 @@ void scan_finishedWithBuffer( uint8_t sentKeys )
// Add back lost keys, so they are processed on the next USB send
for ( ; key < prevBuffer; key++ )
{
bufferAdd( KeyIndex_Buffer[key] );
Macro_bufferAdd( KeyIndex_Buffer[key] );
info_print("Re-appending lost key after USB send...");
}

@@ -285,7 +280,7 @@ void scan_finishedWithBuffer( uint8_t sentKeys )
{
for ( uint8_t c = 0; c < latched; c++ )
{
bufferAdd( latchBuffer[c] );
Macro_bufferAdd( latchBuffer[c] );
}
}

@@ -293,23 +288,23 @@ void scan_finishedWithBuffer( uint8_t sentKeys )
}

// Signal that the keys have been properly sent over USB
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
}

// Reset/Hold keyboard
// NOTE: Does nothing with the FACOM6684
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
}

// NOTE: Does nothing with the FACOM6684
void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
// Not a calculated valued...
_delay_ms( 50 );

+ 12
- 12
Scan/FACOM6684/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2013 by Jacob Alexander
*
/* Copyright (C) 2013-2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/FACOM6684/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2013 for the Kiibohd Controller
# Written by Jacob Alexander in 2013,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,33 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h facom6684.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=facom6684_ModifierMask
-DKEYINDEX_MASK=facom6684_ColemakMap
#-DKEYINDEX_MASK=facom6684_DefaultMap
)


###

+ 13
- 18
Scan/HP150/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -52,11 +52,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -110,7 +105,7 @@ ISR( TIMER1_COMPA_vect )
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Setup Timer Pulse (16 bit)

@@ -145,7 +140,7 @@ inline void scan_setup()
// We are looking for a start of packet
// If detected, all subsequent bits are then logged into a variable
// Once the end of the packet has been detected (always the same length), decode the pressed keys
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
// Only use as a valid signal
// Check if there was a position change
@@ -181,7 +176,7 @@ inline uint8_t scan_loop()

// No duplicate keys, add it to the buffer
if ( c == KeyIndex_BufferUsed )
bufferAdd( positionCounter );
Macro_bufferAdd( positionCounter );
}
}
// Remove the key from the buffer
@@ -245,34 +240,34 @@ inline uint8_t scan_loop()
}

// Send data
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
return 0;
}

// Signal KeyIndex_Buffer that it has been properly read
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
}

// Signal that the keys have been properly sent over USB
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
}

// Reset/Hold keyboard
// NOTE: Does nothing with the HP150
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
}

// NOTE: Does nothing with the HP150
void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
info_print("Attempting to synchronize the keyboard, do not press any keys...");
errorLED( 1 );

+ 12
- 12
Scan/HP150/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/HP150/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,33 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h microswitch8304.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=hp150_ModifierMask
-DKEYINDEX_MASK=hp150_ColemakMap
#-DKEYINDEX_MASK=hp150_DefaultMap
)


###

+ 1
- 9
Scan/HeathZenith/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -21,16 +21,8 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )
add_definitions(
-I${HEAD_DIR}/Scan/matrix
)

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=heathzenith_ModifierMask
-DKEYINDEX_MASK=heathzenith_DefaultMap
#-DKEYINDEX_MASK=heathzenith_ColemakMap
)



+ 1
- 9
Scan/IBMConvertible/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2012 for the Kiibohd Controller
# Written by Jacob Alexander in 2012,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -21,16 +21,8 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )
add_definitions(
-I${HEAD_DIR}/Scan/matrix
)

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=ibmconv_ModifierMask
#-DKEYINDEX_MASK=ibmconv_DefaultMap
-DKEYINDEX_MASK=ibmconv_ColemakMap
)



+ 47
- 52
Scan/Kaypro1/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011-2013 by Jacob Alexander
*
/* Copyright (C) 2011-2014 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
@@ -39,11 +39,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -66,10 +61,10 @@ static uint8_t cmd_ACK_AA = 0x10; // Keyboard will send ack (0xAA) back to PC
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Setup the the USART interface for keyboard data input
// Setup baud rate
// 16 MHz / ( 16 * Baud ) = UBRR
// Baud <- 3.358 ms per bit, thus 1000 / 3.358 = 297.80
@@ -92,7 +87,7 @@ inline void scan_setup()
// Nothing is needed here for the Kaypro, but the function is available as part of the api to be called in a polling fashion
// TODO
// - Add songs :D
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
// We *could* do extra offline processing here, but, it's not really needed for the Kaypro 1 keyboard
return 0;
@@ -126,7 +121,7 @@ ISR(USART1_RX_vect)
case 0x09: // ^I
case 0x0D: // ^M
case 0x1B: // ^[
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
// 0x40 Offset Keys
// Add Ctrl key and offset to the lower alphabet
@@ -135,8 +130,8 @@ ISR(USART1_RX_vect)
case 0x1D: // ^]
case 0x1E: // ^^
case 0x1F: // ^_
bufferAdd( 0xF6 );
bufferAdd( keyValue + 0x40 );
Macro_bufferAdd( 0xF6 );
Macro_bufferAdd( keyValue + 0x40 );
break;

// - Add Shift key and offset to non-shifted key -
@@ -145,73 +140,73 @@ ISR(USART1_RX_vect)
case 0x23: // #
case 0x24: // $
case 0x25: // %
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x10 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x10 );
break;
// 0x11 Offset Keys
case 0x26: // &
case 0x28: // (
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x11 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x11 );
break;
// 0x07 Offset Keys
case 0x29: // )
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x07 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x07 );
break;
// -0x0E Offset Keys
case 0x40: // @
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x0E );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x0E );
break;
// 0x0E Offset Keys
case 0x2A: // *
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x0E );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x0E );
break;
// 0x12 Offset Keys
case 0x2B: // +
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x12 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x12 );
break;
// 0x05 Offset Keys
case 0x22: // "
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x05 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x05 );
break;
// 0x01 Offset Keys
case 0x3A: // :
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x01 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x01 );
break;
// -0x10 Offset Keys
case 0x3C: // <
case 0x3E: // >
case 0x3F: // ?
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x10 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x10 );
break;
// -0x28 Offset Keys
case 0x5E: // ^
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x28 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x28 );
break;
// -0x32 Offset Keys
case 0x5F: // _
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x32 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x32 );
break;
// -0x20 Offset Keys
case 0x7B: // {
case 0x7C: // |
case 0x7D: // }
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x20 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x20 );
break;
// -0x1E Offset Keys
case 0x7E: // ~
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x1E );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x1E );
break;
// All other keys
default:
@@ -226,8 +221,8 @@ ISR(USART1_RX_vect)
// Add Ctrl key and offset to the lower alphabet
if ( keyValue >= 0x00 && keyValue <= 0x1F )
{
bufferAdd( 0xF6 );
bufferAdd( keyValue + 0x60 );
Macro_bufferAdd( 0xF6 );
Macro_bufferAdd( keyValue + 0x60 );
}

// Shift Characters are from 0x41 to 0x59
@@ -235,14 +230,14 @@ ISR(USART1_RX_vect)
// Add Shift key and offset to the lower alphabet
else if ( keyValue >= 0x41 && keyValue <= 0x5A )
{
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x20 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x20 );
}

// Everything else
else
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
}
break;
}
@@ -274,35 +269,35 @@ ISR(USART1_RX_vect)
}

// Send data
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
UDR1 = dataPayload;
return 0;
}

// Signal KeyIndex_Buffer that it has been properly read
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
}

// Signal that the keys have been properly sent over USB
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
}

// Reset/Hold keyboard
// NOTE: Does nothing with the BETKB
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
}

// NOTE: Does nothing with the BETKB
void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
}


+ 12
- 12
Scan/Kaypro1/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011-2013 by Jacob Alexander
*
/* Copyright (C) 2011-2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 9
Scan/Kaypro1/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -19,14 +19,6 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=kaypro1_ModifierMask
#-DKEYINDEX_MASK=kaypro1_ColemakMap
-DKEYINDEX_MASK=kaypro1_DefaultMap
)


###

+ 46
- 51
Scan/MBC-55X/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2013 by Jacob Alexander
*
/* Copyright (C) 2013,2014 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
@@ -38,11 +38,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -101,7 +96,7 @@ void uart0_status_isr(void)
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) // AVR
{
// Setup the the USART interface for keyboard data input
@@ -183,7 +178,7 @@ inline void scan_setup()


// Main Detection Loop
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
return 0;
}
@@ -207,7 +202,7 @@ void processKeyValue( uint8_t keyValue )
case 0x09: // ^I
case 0x0D: // ^M
case 0x1B: // ^[
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
// 0x40 Offset Keys
// Add Ctrl key and offset to the lower alphabet
@@ -216,8 +211,8 @@ void processKeyValue( uint8_t keyValue )
case 0x1D: // ^]
case 0x1E: // ^^
case 0x1F: // ^_
bufferAdd( 0xF6 );
bufferAdd( keyValue + 0x40 );
Macro_bufferAdd( 0xF6 );
Macro_bufferAdd( keyValue + 0x40 );
break;

// - Add Shift key and offset to non-shifted key -
@@ -226,73 +221,73 @@ void processKeyValue( uint8_t keyValue )
case 0x23: // #
case 0x24: // $
case 0x25: // %
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x10 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x10 );
break;
// 0x11 Offset Keys
case 0x26: // &
case 0x28: // (
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x11 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x11 );
break;
// 0x07 Offset Keys
case 0x29: // )
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x07 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x07 );
break;
// -0x0E Offset Keys
case 0x40: // @
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x0E );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x0E );
break;
// 0x0E Offset Keys
case 0x2A: // *
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x0E );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x0E );
break;
// 0x12 Offset Keys
case 0x2B: // +
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x12 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x12 );
break;
// 0x05 Offset Keys
case 0x22: // "
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x05 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x05 );
break;
// 0x01 Offset Keys
case 0x3A: // :
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x01 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x01 );
break;
// -0x10 Offset Keys
case 0x3C: // <
case 0x3E: // >
case 0x3F: // ?
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x10 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x10 );
break;
// -0x28 Offset Keys
case 0x5E: // ^
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x28 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x28 );
break;
// -0x32 Offset Keys
case 0x5F: // _
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x32 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x32 );
break;
// -0x20 Offset Keys
case 0x7B: // {
case 0x7C: // |
case 0x7D: // }
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x20 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x20 );
break;
// -0x1E Offset Keys
case 0x7E: // ~
bufferAdd( 0xF5 );
bufferAdd( keyValue - 0x1E );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue - 0x1E );
break;
// All other keys
default:
@@ -307,8 +302,8 @@ void processKeyValue( uint8_t keyValue )
// Add Ctrl key and offset to the lower alphabet
if ( keyValue >= 0x00 && keyValue <= 0x1F )
{
bufferAdd( 0xF6 );
bufferAdd( keyValue + 0x60 );
Macro_bufferAdd( 0xF6 );
Macro_bufferAdd( keyValue + 0x60 );
}

// Shift Characters are from 0x41 to 0x59
@@ -316,14 +311,14 @@ void processKeyValue( uint8_t keyValue )
// Add Shift key and offset to the lower alphabet
else if ( keyValue >= 0x41 && keyValue <= 0x5A )
{
bufferAdd( 0xF5 );
bufferAdd( keyValue + 0x20 );
Macro_bufferAdd( 0xF5 );
Macro_bufferAdd( keyValue + 0x20 );
}

// Everything else
else
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
}
break;
}
@@ -331,7 +326,7 @@ void processKeyValue( uint8_t keyValue )

// Send data
// NOTE: Example only, MBC-55X cannot receive user data
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
// Debug
char tmpStr[6];
@@ -348,12 +343,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_finishedWithBuffer( uint8_t sentKeys )
{
}

// Signal that the keys have been properly sent over USB
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
cli(); // Disable Interrupts

@@ -365,17 +360,17 @@ void scan_finishedWithUSBBuffer( uint8_t sentKeys )

// Reset/Hold keyboard
// NOTE: Does nothing with the MBC-55x
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
}

// NOTE: Does nothing with the MBC-55x
void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
// Not a calculated valued...
_delay_ms( 50 );

+ 12
- 12
Scan/MBC-55X/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2013 by Jacob Alexander
*
/* Copyright (C) 2013,2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/MBC-55X/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2013 for the Kiibohd Controller
# Written by Jacob Alexander in 2013,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,33 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h facom6684.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=mbc55x_ModifierMask
#-DKEYINDEX_MASK=mbc55x_ColemakMap
-DKEYINDEX_MASK=mbc55x_DefaultMap
)


###

+ 14
- 19
Scan/MicroSwitch8304/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -43,11 +43,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte

#define UNSET_RESET() RESET_DDR &= ~(1 << RESET_PIN)
#define SET_RESET() RESET_DDR |= (1 << RESET_PIN)

@@ -68,11 +63,11 @@ volatile uint8_t BufferReadyToClear;
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Setup the the USART interface for keyboard data input
// NOTE: The input data signal needs to be inverted for the Teensy USART to properly work
// Setup baud rate
// 16 MHz / ( 16 * Baud ) = UBRR
// Baud <- 0.82020 ms per bit, thus 1000 / 0.82020 = 1219.2
@@ -101,7 +96,7 @@ inline void scan_setup()

// Main Detection Loop
// Not needed for the Micro Switch 8304, this is just a busy loop
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
return 0;
}
@@ -132,7 +127,7 @@ void processKeyValue( uint8_t keyValue )
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
}

@@ -194,7 +189,7 @@ ISR(USART1_RX_vect)
// 0x9E sets echo scancode mode from (0x81 to 0xFF; translates to 0x01 to 0x7F)
// Other echos: 0x15~0x19 send 0x15~0x19, 0x40 sends 0x40 (as well as 0x44,0x45, 0x80)
// 0x8C Acks the keyboard and gets 0x70 sent back (delayed)
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
UDR1 = dataPayload;
return 0;
@@ -202,7 +197,7 @@ uint8_t scan_sendData( uint8_t dataPayload )

// Signal KeyIndex_Buffer that it has been properly read
// In the case of the Micro Switch 8304, we leave the buffer alone until more scancode data comes in
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
// We received a Clear code from the 8304, clear the buffer now that we've used it
if ( BufferReadyToClear )
@@ -213,25 +208,25 @@ void scan_finishedWithBuffer( uint8_t sentKeys )
}

// Signal that the keys have been properly sent over USB
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
}

// Reset/Hold keyboard
// Warning! This will cause the keyboard to not send any data, so you can't disable with a keypress
// The Micro Switch 8304 has a dedicated reset line
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
UNSET_RESET();
}

void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
SET_RESET();
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
// Reset command for the 8304
scan_sendData( 0x92 );

+ 12
- 12
Scan/MicroSwitch8304/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/MicroSwitch8304/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,33 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h microswitch8304.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=microswitch8304_ModifierMask
-DKEYINDEX_MASK=microswitch8304_ColemakMap
#-DKEYINDEX_MASK=microswitch8304_DefaultMap
)


###

+ 119
- 0
Scan/SKM67001/customSKM.h Datei anzeigen

@@ -0,0 +1,119 @@
/* Copyright (C) 2012,2014 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.
*/

#ifndef __KEYMAP_H
#define __KEYMAP_H

// ----- Variables -----

// Default 1-indexed key mappings
static uint8_t DefaultMap_Lookup[] = {
0, // 0x00
KEY_1, // 0x01
KEY_Q, // 0x02
KEY_A, // 0x03
KEY_2, // 0x04
KEY_Z, // 0x05
KEY_W, // 0x06
KEY_S, // 0x07
KEY_3, // 0x08
KEY_X, // 0x09
KEY_E, // 0x0A
KEY_D, // 0x0B
KEY_4, // 0x0C
KEY_C, // 0x0D
KEY_R, // 0x0E
KEY_F, // 0x0F
KEY_5, // 0x10
KEY_V, // 0x11
KEY_T, // 0x12
KEY_G, // 0x13
KEY_6, // 0x14
KEY_B, // 0x15
KEY_Y, // 0x16
KEY_H, // 0x17
KEY_7, // 0x18
KEY_N, // 0x19
KEY_U, // 0x1A
KEY_J, // 0x1B
KEY_8, // 0x1C
KEY_M, // 0x1D
KEY_I, // 0x1E
KEY_K, // 0x1F
KEY_9, // 0x20
KEY_COMMA, // 0x21
KEY_O, // 0x22
KEY_L, // 0x23
KEY_0, // 0x24
KEY_PERIOD, // 0x25
KEY_P, // 0x26
KEY_SEMICOLON, // 0x27
KEY_MINUS, // 0x28
KEY_SLASH, // 0x29
KEY_LEFT_BRACE, // 0x2A (1/4)
KEY_QUOTE, // 0x2B
KEY_EQUAL, // 0x2C
KEY_RIGHT_BRACE, // 0x2D
0, // 0x2E
0, // 0x2F
KEY_TILDE, // 0x30
KEY_TAB, // 0x31
0, // 0x32
0, // 0x33
KEY_SHIFT, // 0x34
KEY_ENTER, // 0x35
KEY_BACKSPACE, // 0x36
KEY_DELETE, // 0x37
KEY_CTRL, // 0x38 (MAR LEFT)
KEY_SPACE, // 0x39
KEY_ALT, // 0x3A (EXPRESS / MAR RIGHT)
0, // 0x3B
0, // 0x3C
KEY_ESC, // 0x3D (MAR REL)
0, // 0x3E (STORE)
0, // 0x3F (RECALL)
KEY_GUI, // 0x40 (CODE)
0, // 0x41
0, // 0x42
0, // 0x43
0, // 0x44
0, // 0x45
0, // 0x46
0, // 0x47
0, // 0x48 (DEC TAB)
0, // 0x49 (SET TAB)
0, // 0x4A (TAB CLEAR)
0, // 0x4B (INDEX)
0, // 0x4C (RELOC)
0, // 0x4D
0, // 0x4E
0, // 0x4F
0, // 0x50 (REV INDEX)
0, // 0x51
0, // 0x52
0, // 0x53
0, // 0x54
0, // 0x55
};


#endif


+ 121
- 0
Scan/SKM67001/defaultMap.h Datei anzeigen

@@ -0,0 +1,121 @@
/* Copyright (C) 2012,2014 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.
*/

#ifndef __KEYMAP_H
#define __KEYMAP_H

// This file contains various key layouts for the SKM 67001 Keyboard from the Olympia Professional ES 105 Typewriter

// ----- Variables -----

// Default 1-indexed key mappings
static uint8_t DefaultMap_Lookup[] = {
0, // 0x00
KEY_1, // 0x01
KEY_Q, // 0x02
KEY_A, // 0x03
KEY_2, // 0x04
KEY_Z, // 0x05
KEY_W, // 0x06
KEY_S, // 0x07
KEY_3, // 0x08
KEY_X, // 0x09
KEY_E, // 0x0A
KEY_D, // 0x0B
KEY_4, // 0x0C
KEY_C, // 0x0D
KEY_R, // 0x0E
KEY_F, // 0x0F
KEY_5, // 0x10
KEY_V, // 0x11
KEY_T, // 0x12
KEY_G, // 0x13
KEY_6, // 0x14
KEY_B, // 0x15
KEY_Y, // 0x16
KEY_H, // 0x17
KEY_7, // 0x18
KEY_N, // 0x19
KEY_U, // 0x1A
KEY_J, // 0x1B
KEY_8, // 0x1C
KEY_M, // 0x1D
KEY_I, // 0x1E
KEY_K, // 0x1F
KEY_9, // 0x20
KEY_COMMA, // 0x21
KEY_O, // 0x22
KEY_L, // 0x23
KEY_0, // 0x24
KEY_PERIOD, // 0x25
KEY_P, // 0x26
KEY_SEMICOLON, // 0x27
KEY_MINUS, // 0x28
KEY_SLASH, // 0x29
KEY_LEFT_BRACE, // 0x2A (1/4)
KEY_QUOTE, // 0x2B
KEY_EQUAL, // 0x2C
KEY_RIGHT_BRACE, // 0x2D
0, // 0x2E
0, // 0x2F
KEY_TILDE, // 0x30
KEY_TAB, // 0x31
0, // 0x32
0, // 0x33
KEY_SHIFT, // 0x34
KEY_ENTER, // 0x35
KEY_BACKSPACE, // 0x36
KEY_DELETE, // 0x37
KEY_CTRL, // 0x38 (MAR LEFT)
KEY_SPACE, // 0x39
KEY_ALT, // 0x3A (EXPRESS / MAR RIGHT)
0, // 0x3B
0, // 0x3C
KEY_ESC, // 0x3D (MAR REL)
0, // 0x3E (STORE)
0, // 0x3F (RECALL)
KEY_GUI, // 0x40 (CODE)
0, // 0x41
0, // 0x42
0, // 0x43
0, // 0x44
0, // 0x45
0, // 0x46
0, // 0x47
0, // 0x48 (DEC TAB)
0, // 0x49 (SET TAB)
0, // 0x4A (TAB CLEAR)
0, // 0x4B (INDEX)
0, // 0x4C (RELOC)
0, // 0x4D
0, // 0x4E
0, // 0x4F
0, // 0x50 (REV INDEX)
0, // 0x51
0, // 0x52
0, // 0x53
0, // 0x54
0, // 0x55
};


#endif


+ 1
- 9
Scan/SKM67001/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2012 for the Kiibohd Controller
# Written by Jacob Alexander in 2012,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -21,18 +21,10 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )
add_definitions(
-I${HEAD_DIR}/Scan/matrix
)

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=skm67001_ModifierMask
#-DKEYINDEX_MASK=skm67001_DefaultMap
-DKEYINDEX_MASK=skm67001_ColemakMap
)


###
# Compiler Family Compatibility

+ 14
- 19
Scan/SonyNEWS/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -48,11 +48,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -66,10 +61,10 @@ volatile uint8_t KeyIndex_BufferUsed;
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Setup the the USART interface for keyboard data input
// Setup baud rate
// 16 MHz / ( 16 * Baud ) = UBRR
// Baud <- 0.10450 ms per bit, thus 1000 / 0.10450 = 9569.4
@@ -105,7 +100,7 @@ inline void scan_setup()

// Main Detection Loop
// Not needed for the Sony NEWS, this is just a busy loop
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
return 0;
}
@@ -158,7 +153,7 @@ void processKeyValue( uint8_t keyValue )
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
}

@@ -193,7 +188,7 @@ ISR(USART1_RX_vect)
}

// Send data to keyboard
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
// Debug
char tmpStr[6];
@@ -206,29 +201,29 @@ uint8_t scan_sendData( uint8_t dataPayload )

// Signal KeyIndex_Buffer that it has been properly read
// Not needed as a signal is sent to remove key-presses
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
return;
}

// Reset/Hold keyboard TODO
// Warning! This will cause the keyboard to not send any data, so you can't disable with a keypress
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
}

void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
// Empty buffer, now that keyboard has been reset
KeyIndex_BufferUsed = 0;
}

void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
return;
}

+ 12
- 12
Scan/SonyNEWS/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -48,18 +48,18 @@ extern volatile uint8_t KeyIndex_BufferUsed;
// ----- Functions -----

// Functions used by main.c
void scan_setup( void );
uint8_t scan_loop( void );
void Scan_setup( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/SonyNEWS/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,33 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h sonynews.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=sonynews_ModifierMask
#-DKEYINDEX_MASK=sonynews_ColemakMap
-DKEYINDEX_MASK=sonynews_DefaultMap
)


###

+ 13
- 18
Scan/SonyOA-S3400/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -130,11 +130,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -158,7 +153,7 @@ void processKeyValue( uint8_t keyValue );


// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Setup the external interrupts for
// - General keypresses (INT6/E6) -> rising edge (to detect key release)
@@ -221,7 +216,7 @@ inline void scan_setup()
// Not needed for the Sony OA-S3400 as signals are interrupt based, thus this is a busy loop
// XXX Function is used for scanning troublesome keys, technically this is not needed for a pure converter
// I just want proper use of the shift and shift lock keys, without having to do major rework to attach to the entire matrix
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
// Loop through known keys
for ( uint8_t key = 0; key < MANUAL_SCAN_KEYS; key++ ) switch ( key )
@@ -437,7 +432,7 @@ void processKeyValue( uint8_t keyValue )
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( keyValue );
Macro_bufferAdd( keyValue );
break;
}

@@ -498,7 +493,7 @@ 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 )
uint8_t Scan_sendData( uint8_t dataPayload )
{
switch ( dataPayload )
{
@@ -517,23 +512,23 @@ uint8_t scan_sendData( uint8_t dataPayload )

// Signal KeyIndex_Buffer that it has been properly read
// Not needed as a signal is sent to remove key-presses
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
return;
}

// Reset/Hold keyboard
// Sony OA-S3400 has no locking signals
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
}

void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
// Empty buffer, now that keyboard has been reset
KeyIndex_BufferUsed = 0;
@@ -549,7 +544,7 @@ void scan_resetKeyboard( void )

// USB module is finished with buffer
// Not needed as a signal is sent to remove key-presses
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
return;
}

+ 12
- 12
Scan/SonyOA-S3400/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 24
Scan/SonyOA-S3400/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2012 for the Kiibohd Controller
# Written by Jacob Alexander in 2012,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -18,32 +18,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=sonyoas3400_ModifierMask
-DKEYINDEX_MASK=sonyoas3400_ColemakMap
#-DKEYINDEX_MASK=sonyoas3400_DefaultMap
)


###

+ 13
- 16
Scan/Tandy1000/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -60,9 +60,6 @@
#define UNSET_INTR() INTR_DDR &= ~(1 << INTR_PIN)
#define SET_INTR() INTR_DDR |= (1 << INTR_PIN)

#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte


// ----- Variables -----
@@ -81,10 +78,10 @@ uint8_t packet_index = 0;
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
// Initially reset the keyboard (just in case we are in a wierd state)
scan_resetKeyboard();
Scan_resetKeyboard();

// Setup SPI for data input using the clock and data inputs
// TODO
@@ -108,7 +105,7 @@ inline void scan_setup()


// Main Detection Loop
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
/*
// Packet Read
@@ -223,37 +220,37 @@ inline uint8_t scan_loop()

// Send data
// XXX Not used with the Tandy1000
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
return 0;
}

// Signal KeyIndex_Buffer that it has been properly read
// TODO
void scan_finishedWithBuffer( uint8_t sentKeys )
void Scan_finishedWithBuffer( uint8_t sentKeys )
{
}

// Signal that the keys have been properly sent over USB
void scan_finishedWithUSBBuffer( uint8_t sentKeys )
void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
}

// Reset/Hold keyboard
// Warning! This will cause the keyboard to not send any data, so you can't disable with a keypress
// The Tandy 1000 keyboard has a dedicated hold/processor interrupt line
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
UNSET_INTR();
}

void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
SET_INTR();
}

// Reset Keyboard
void scan_resetKeyboard( void )
void Scan_resetKeyboard( void )
{
// TODO Tandy1000 has a dedicated reset line
}

+ 12
- 12
Scan/Tandy1000/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2011 by Jacob Alexander
*
/* Copyright (C) 2011,2014 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
@@ -49,18 +49,18 @@ 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( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 9
Scan/Tandy1000/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -19,14 +19,6 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=tandy1000_ModifierMask
-DKEYINDEX_MASK=tandy1000_ColemakMap
#-DKEYINDEX_MASK=tandy1000_DefaultMap
)


###

+ 16
- 21
Scan/UnivacF3W9/scan_loop.c Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -56,11 +56,6 @@
#define REQUEST_DATA() REQUEST_DDR &= ~(1 << REQUEST_PIN) // Start incoming keyboard transfer
#define STOP_DATA() REQUEST_DDR |= (1 << REQUEST_PIN) // Stop incoming keyboard data

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -90,7 +85,7 @@ void processPacketValue( uint16_t packetValue );
// To be nice, we wait a little bit after powering on, and dump any of the pending keyboard data.
// Afterwards (as long as no keys were being held), the keyboard should have a clean buffer, and be ready to go.
// (Even if keys were held down, everything should probably still work...)
inline void scan_setup()
inline void Scan_setup()
{
// Setup the DATA pin
DATA_DDR &= ~(1 << DATA_PIN); // Set to input
@@ -109,7 +104,7 @@ inline void scan_setup()

// Reset the keyboard before scanning, we might be in a wierd state
_delay_ms( 50 );
//scan_resetKeyboard();
//Scan_resetKeyboard();

// Message
info_print("Keyboard Buffer Flushed");
@@ -119,9 +114,9 @@ inline void scan_setup()
// Main Detection Loop
// The Univac-Sperry F3W9 has a convenient feature, an internal 8 key buffer
// This buffer is only emptied (i.e. sent over the bus) when the REQUEST line is held high
// Because of this, we can utilize the scan_loop to do all of the critical processing,
// Because of this, we can utilize the Scan_loop to do all of the critical processing,
// without having to resort to interrupts, giving the data reading 100% of the CPU.
// This is because the USB interrupts can wait until the scan_loop is finished to continue.
// This is because the USB interrupts can wait until the Scan_loop is finished to continue.
//
// Normally, this approach isn't taken, as it's easier/faster/safer to use Teensy hardware shift registers
// for serial data transfers.
@@ -133,7 +128,7 @@ inline void scan_setup()
// Output and /Output (NOT'ted version).
// Not really useful here, but could be used for error checking, or eliminating an external NOT gate if
// we were using (but can't...) a hardware decoder like a USART.
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
return 0;
// Protocol Notes:
@@ -308,27 +303,27 @@ void processPacketValue( uint16_t packetValue )
switch ( scanCode )
{
default:
//bufferAdd( scanCode ); TODO - Uncomment when ready for USB output
//Macro_bufferAdd( scanCode ); TODO - Uncomment when ready for USB output
break;
}
}

// Send data
// NOTE: Does nothing with the Univac-Sperry F3W9
uint8_t scan_sendData( uint8_t dataPayload )
uint8_t Scan_sendData( uint8_t dataPayload )
{
return 0;
}

// Signal KeyIndex_Buffer that it has been properly read
inline void scan_finishedWithBuffer( uint8_t sentKeys )
inline void Scan_finishedWithBuffer( uint8_t sentKeys )
{
return;
}

// Signal that the keys have been properly sent over USB
// TODO
inline void scan_finishedWithUSBBuffer( uint8_t sentKeys )
inline void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
/*
uint8_t foundModifiers = 0;
@@ -352,12 +347,12 @@ inline void scan_finishedWithUSBBuffer( uint8_t sentKeys )

// Reset/Hold keyboard
// NOTE: Does nothing with the Univac-Sperry F3W9
void scan_lockKeyboard( void )
void Scan_lockKeyboard( void )
{
}

// NOTE: Does nothing with the Univac-Sperry F3W9
void scan_unlockKeyboard( void )
void Scan_unlockKeyboard( void )
{
}

@@ -365,7 +360,7 @@ void scan_unlockKeyboard( void )
// - 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 )
void Scan_resetKeyboard( void )
{
// Initiate data request line, but don't read the incoming data
REQUEST_DATA();

+ 12
- 12
Scan/UnivacF3W9/scan_loop.h Datei anzeigen

@@ -1,15 +1,15 @@
/* Copyright (C) 2012 by Jacob Alexander
*
/* Copyright (C) 2012,2014 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
@@ -48,18 +48,18 @@ extern volatile uint8_t KeyIndex_BufferUsed;
// ----- Functions -----

// Functions used by main.c
void scan_setup( void );
uint8_t scan_loop( void );
void Scan_setup( void );
uint8_t Scan_loop( void );


// 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_finishedWithUSBBuffer( uint8_t sentKeys );
void scan_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );
void Scan_lockKeyboard( void );
void Scan_unlockKeyboard( void );
void Scan_resetKeyboard( void );


#endif // __SCAN_LOOP_H

+ 1
- 25
Scan/UnivacF3W9/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2012 for the Kiibohd Controller
# Written by Jacob Alexander in 2012,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -16,33 +16,9 @@ set( SCAN_SRCS
)


###
# Module H files
#
set( SCAN_HDRS
scan_loop.h
)


###
# File Dependency Setup
#
ADD_FILE_DEPENDENCIES( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( scan_loop.c ${SCAN_HDRS} )
#add_file_dependencies( macro.c keymap.h epsonqx10.h )


###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

#| Keymap Settings
add_definitions(
-DMODIFIER_MASK=univacf3w9_ModifierMask
-DKEYINDEX_MASK=univacf3w9_ColemakMap
#-DKEYINDEX_MASK=univacf3w9_DefaultMap
)


###

+ 15
- 27
Scan/matrix/scan_loop.c Datei anzeigen

@@ -26,6 +26,7 @@

// Project Includes
#include <led.h>
#include <macro.h>
#include <print.h>

// Local Includes
@@ -47,11 +48,6 @@

// ----- Macros -----

// Make sure we haven't overflowed the buffer
#define bufferAdd(byte) \
if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER ) \
KeyIndex_Buffer[KeyIndex_BufferUsed++] = byte



// ----- Variables -----
@@ -63,7 +59,7 @@ volatile uint8_t KeyIndex_Add_InputSignal; // Used to pass the (click/input valu


// Keeps track of the number of scans, so we only do a debounce assess when it would be valid (as it throws away data)
uint8_t scan_count = 0;
uint8_t Scan_count = 0;

// This is where the matrix scan data is held, as well as debouncing is evaluated to, which (depending on the read value) is handled
// by the macro module
@@ -74,24 +70,24 @@ uint8_t KeyIndex_Array[KEYBOARD_KEYS + 1];
// ----- Functions -----

// Setup
inline void scan_setup()
inline void Scan_setup()
{
matrix_pinSetup( (uint8_t*)matrix_pinout, scanMode );
}

// Main Detection Loop
inline uint8_t scan_loop()
inline uint8_t Scan_loop()
{
// Check count to see if the sample threshold may have been reached, otherwise collect more data
if ( scan_count < MAX_SAMPLES )
if ( Scan_count < MAX_SAMPLES )
{
matrix_scan( (uint8_t*)matrix_pinout, KeyIndex_Array );

// scanDual requires 2 passes, and thus needs more memory per matrix_scan pass
#if scanMode == scanDual
scan_count += 2;
Scan_count += 2;
#else
scan_count++;
Scan_count++;
#endif

// Signal Main Detection Loop to continue scanning
@@ -99,7 +95,7 @@ inline uint8_t scan_loop()
}

// Reset Sample Counter
scan_count = 0;
Scan_count = 0;

// Assess debouncing sample table
// Loop over all of the sampled keys of the given array
@@ -108,9 +104,8 @@ inline uint8_t scan_loop()
for ( uint8_t key = 1; key < KeyIndex_Size + 1; key++ ) if ( ( KeyIndex_Array[key] & ~(1 << 7) ) > SAMPLE_THRESHOLD )
{
// Debug output (keypress detected)
char tmpStr[6];
hexToStr( key, tmpStr );
dPrintStrs( tmpStr, " " );
printHex( key );
print(" ");

// Add the key to the buffer, if it isn't already in the current Key Buffer
for ( uint8_t c = 0; c < KeyIndex_BufferUsed + 1; c++ )
@@ -118,7 +113,7 @@ inline uint8_t scan_loop()
// Key isn't in the buffer yet
if ( c == KeyIndex_BufferUsed )
{
bufferAdd( key );
Macro_bufferAdd( key );
break;
}

@@ -160,23 +155,16 @@ inline uint8_t scan_loop()
}


// Signal that the keys have been properly sent over USB
inline void scan_finishedWithUSBBuffer( uint8_t sentKeys )
// Signal that the USB keycodes have been properly sent through the Output Module
inline void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
{
return;
}


// Signal KeyIndex_Buffer that it has been fully scanned using the macro module
inline void scan_finishedWithBuffer( uint8_t sentKeys )
// Signal KeyIndex_Buffer that it has been fully processed using the macro module
inline void Scan_finishedWithBuffer( uint8_t sentKeys )
{
return;
}

// Send data to keyboard
// Not used in this module
uint8_t scan_sendData( uint8_t dataPayload )
{
return 0;
}


+ 5
- 11
Scan/matrix/scan_loop.h Datei anzeigen

@@ -56,18 +56,12 @@ extern volatile uint8_t KeyIndex_Add_InputSignal;

// ----- Functions -----

void scan_setup( void );
uint8_t scan_loop( void );
void Scan_setup( void );
uint8_t Scan_loop( void );


// 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_lockKeyboard( void );
void scan_unlockKeyboard( void );
void scan_resetKeyboard( void );
// Callbacks from the Macro and Output modules (useful with difficult protocols)
void Scan_finishedWithBuffer( uint8_t sentKeys );
void Scan_finishedWithUSBBuffer( uint8_t sentKeys );


#endif // __SCAN_LOOP_H

+ 1
- 7
Scan/matrix/setup.cmake Datei anzeigen

@@ -1,6 +1,6 @@
###| CMake Kiibohd Controller Scan Module |###
#
# Written by Jacob Alexander in 2011 for the Kiibohd Controller
# Written by Jacob Alexander in 2011,2014 for the Kiibohd Controller
#
# Released into the Public Domain
#
@@ -27,12 +27,6 @@ set( SCAN_SRCS
###
# Module Specific Options
#
add_definitions( -I${HEAD_DIR}/Keymap )

add_definitions(
#-DMODIFIER_MASK=
#-DKEYINDEX_MASK=
)


###

+ 8
- 9
main.c Datei anzeigen

@@ -141,22 +141,21 @@ int main(void)
pinSetup();

// Enable CLI
init_cli();
CLI_init();

// Setup Output Module
output_setup();
// Setup Modules
Output_setup();
Macro_setup();
//scan_setup();

// Setup ISR Timer for flagging a kepress send to USB
usbTimerSetup();

// Setup the scanning module
//scan_setup();

// Main Detection Loop
while ( 1 )
{
// Process CLI
process_cli();
CLI_process();

// Acquire Key Indices
// Loop continuously until scan_loop returns 0
@@ -165,14 +164,14 @@ int main(void)
sei();

// Run Macros over Key Indices and convert to USB Keys
process_macros();
Macro_process();

// Send keypresses over USB if the ISR has signalled that it's time
if ( !sendKeypresses )
continue;

// Send USB Data
output_send();
Output_send();

// Clear sendKeypresses Flag
sendKeypresses = 0;

+ 26
- 5
setup.cmake Datei anzeigen

@@ -20,19 +20,35 @@
#| Please look at the {Scan,Macro,USB,Debug}/module.txt for information on the modules and how to create new ones

##| Deals with acquiring the keypress information and turning it into a key index
set( ScanModule "SKM67001" )
set( ScanModule "SKM67001" )

##| Uses the key index and potentially applies special conditions to it, mapping it to a usb key code
set( MacroModule "buffer" )
##| Provides the mapping functions for DefaultMap and handles any macro processing before sending to the OutputModule
set( MacroModule "PartialMap" )

##| Sends the current list of usb key codes through USB HID
set( OutputModule "pjrcUSB" )
set( OutputModule "pjrcUSB" )

##| Debugging source to use, each module has it's own set of defines that it sets
set( DebugModule "full" )
set( DebugModule "full" )



###
# Keymap Configuration
#

##| If there are multiple DefaultMaps, it is defined here. If, the specified DefaultMap is not found, defaultMap.h is used.
set( DefaultMap "kishsaver" )

##| PartialMap combined keymap layering. The first keymap has the "least" precedence.
set( CombinedMap colemak capslock2ctrl )

##| ParitalMaps available on top of the CombinedMap. If there are input conflicts, the last PartialMap takes precedence.
set( PartialMaps hhkbnav kbdctrl )

##| MacroSets define extra capabilities that are not provided by the Scan or Output modules. Last MacroSet takes precedence.
set( MacroSets retype )


###
# Module Overrides (Used in the buildall.bash script)
@@ -132,6 +148,11 @@ include ( "${DebugModulePath}/setup.cmake" )
PathPrepend( DEBUG_SRCS ${DebugModulePath} ${DEBUG_SRCS} )


#| Default Map
# TODO Add support for different defaultMaps
configure_file( "${ScanModulePath}/defaultMap.h" defaultMap.h )


#| Print list of all module sources
message( STATUS "Detected Scan Module Source Files:" )
message( "${SCAN_SRCS}" )