]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Moving the layouts to a separate file.
authorJacob Alexander <triplehaata@gmail.com>
Thu, 31 Mar 2011 00:51:28 +0000 (17:51 -0700)
committerJacob Alexander <triplehaata@gmail.com>
Thu, 31 Mar 2011 00:51:28 +0000 (17:51 -0700)
layouts.h [new file with mode: 0644]
main.c
usb_keyboard.h

diff --git a/layouts.h b/layouts.h
new file mode 100644 (file)
index 0000000..3ae7759
--- /dev/null
+++ b/layouts.h
@@ -0,0 +1,160 @@
+#ifndef __layouts_h
+#define __layouts_h
+
+// Modifier Mask
+#define MODIFIERS_KEYPAD   0
+#define MODIFIERS_KEYBOARD 4
+static uint8_t   keypad_modifierMask[] = {};
+static uint8_t keyboard_modifierMask[] = { 1, 17, 33, 49 };
+
+// Default 1-indexed key mappings
+static uint8_t keypadDefaultMap[] = { 0,
+                               KEYPAD_ASTERIX,
+                               KEYPAD_MINUS,
+                               KEYPAD_PLUS,
+                               KEYPAD_ENTER,
+                               KEYPAD_9,
+                               KEYPAD_6,
+                               KEYPAD_3,
+                               KEYPAD_0,
+                               KEYPAD_8,
+                               KEYPAD_5,
+                               KEYPAD_2,
+                               KEYPAD_PERIOD,
+                               KEYPAD_7,
+                               KEYPAD_4,
+                               KEYPAD_1,
+                               KEYPAD_SLASH };
+
+static uint8_t defaultMap[] = { 0,
+                               KEY_GUI,
+                               KEY_1,
+                               KEY_2,
+                               KEY_3,
+                               KEY_4,
+                               KEY_5,
+                               KEY_6,
+                               KEY_7,
+                               KEY_8,
+                               KEY_9,
+                               KEY_0,
+                               KEY_MINUS,
+                               KEY_EQUAL,
+                               KEY_BACKSLASH,
+                               KEY_TILDE,
+                               KEY_BACKSPACE,
+                               KEY_ALT,
+                               KEY_TAB,
+                               KEY_Q,
+                               KEY_W,
+                               KEY_E,
+                               KEY_R,
+                               KEY_T,
+                               KEY_Y,
+                               KEY_U,
+                               KEY_I,
+                               KEY_O,
+                               KEY_P,
+                               KEY_LEFT_BRACE,
+                               KEY_RIGHT_BRACE,
+                               KEY_DELETE,
+                               KEY_UP,
+                               KEY_CTRL,
+                               KEY_CAPS_LLOCK,
+                               KEY_A,
+                               KEY_S,
+                               KEY_D,
+                               KEY_F,
+                               KEY_G,
+                               KEY_H,
+                               KEY_J,
+                               KEY_K,
+                               KEY_L,
+                               KEY_SEMICOLON,
+                               KEY_QUOTE,
+                               KEY_ENTER,
+                               KEY_DOWN,
+                               KEY_ESC,
+                               KEY_LEFT_SHIFT,
+                               KEY_Z,
+                               KEY_X,
+                               KEY_C,
+                               KEY_V,
+                               KEY_B,
+                               KEY_N,
+                               KEY_M,
+                               KEY_COMMA,
+                               KEY_PERIOD,
+                               KEY_SLASH,
+                               KEY_RIGHT_SHIFT,
+                               KEY_LEFT,
+                               KEY_RIGHT,
+                               KEY_SPACE };
+
+static uint8_t colemakMap[] = { 0,
+                               KEY_GUI,
+                               KEY_1,
+                               KEY_2,
+                               KEY_3,
+                               KEY_4,
+                               KEY_5,
+                               KEY_6,
+                               KEY_7,
+                               KEY_8,
+                               KEY_9,
+                               KEY_0,
+                               KEY_MINUS,
+                               KEY_EQUAL,
+                               KEY_BACKSLASH,
+                               KEY_TILDE,
+                               KEY_BACKSPACE,
+                               KEY_ALT,
+                               KEY_TAB,
+                               KEY_Q,
+                               KEY_W,
+                               KEY_F,
+                               KEY_P,
+                               KEY_G,
+                               KEY_J,
+                               KEY_L,
+                               KEY_U,
+                               KEY_Y,
+                               KEY_SEMICOLON,
+                               KEY_LEFT_BRACE,
+                               KEY_RIGHT_BRACE,
+                               KEY_DELETE,
+                               KEY_UP,
+                               KEY_CTRL,
+                               KEY_CAPS_LLOCK,
+                               KEY_A,
+                               KEY_R,
+                               KEY_S,
+                               KEY_T,
+                               KEY_D,
+                               KEY_H,
+                               KEY_N,
+                               KEY_E,
+                               KEY_I,
+                               KEY_O,
+                               KEY_QUOTE,
+                               KEY_ENTER,
+                               KEY_DOWN,
+                               KEY_ESC,
+                               KEY_LEFT_SHIFT,
+                               KEY_Z,
+                               KEY_X,
+                               KEY_C,
+                               KEY_V,
+                               KEY_B,
+                               KEY_K,
+                               KEY_M,
+                               KEY_COMMA,
+                               KEY_PERIOD,
+                               KEY_SLASH,
+                               KEY_RIGHT_SHIFT,
+                               KEY_LEFT,
+                               KEY_RIGHT,
+                               KEY_SPACE };
+
+#endif
+
diff --git a/main.c b/main.c
index baa8ce1d5ecdd95e16666ec50556e93729c5d905..2039f0990333776ed71b055dfd78b9e7aa840a9c 100644 (file)
--- a/main.c
+++ b/main.c
@@ -24,6 +24,7 @@
 #include <avr/interrupt.h>
 #include <util/delay.h>
 #include "usb_keys.h"
+#include "layouts.h"
 //#include "usb_keyboard.h"
 
 // TEMP INCLUDES
@@ -32,7 +33,6 @@
 
 #define CPU_PRESCALE(n)        (CLKPR = 0x80, CLKPR = (n))
 
-
 // Number of keys
 #define KEYBOARD_SIZE 63
 #define KEYPAD_SIZE 16
 uint8_t keyDetectArray[KEYBOARD_SIZE + 1];
 uint8_t keypadDetectArray[KEYPAD_SIZE + 1];
 
+// Interrupt Variables
 uint16_t sendKeypressCounter = 0;
 volatile uint8_t sendKeypresses = 0;
 
 
-// Modifier Mask
-#define MODIFIERS_KEYPAD   0
-#define MODIFIERS_KEYBOARD 4
-static uint8_t   keypad_modifierMask[] = {};
-static uint8_t keyboard_modifierMask[] = { 1, 17, 33, 49 };
-
-// Default 1-indexed key mappings
-static uint8_t keypadDefaultMap[] = { 0,
-                               KEYPAD_ASTERIX,
-                               KEYPAD_MINUS,
-                               KEYPAD_PLUS,
-                               KEYPAD_ENTER,
-                               KEYPAD_9,
-                               KEYPAD_6,
-                               KEYPAD_3,
-                               KEYPAD_0,
-                               KEYPAD_8,
-                               KEYPAD_5,
-                               KEYPAD_2,
-                               KEYPAD_PERIOD,
-                               KEYPAD_7,
-                               KEYPAD_4,
-                               KEYPAD_1,
-                               KEYPAD_SLASH };
-
-static uint8_t defaultMap[] = { 0,
-                               KEY_GUI,
-                               KEY_1,
-                               KEY_2,
-                               KEY_3,
-                               KEY_4,
-                               KEY_5,
-                               KEY_6,
-                               KEY_7,
-                               KEY_8,
-                               KEY_9,
-                               KEY_0,
-                               KEY_MINUS,
-                               KEY_EQUAL,
-                               KEY_BACKSLASH,
-                               KEY_TILDE,
-                               KEY_BACKSPACE,
-                               KEY_ALT,
-                               KEY_TAB,
-                               KEY_Q,
-                               KEY_W,
-                               KEY_E,
-                               KEY_R,
-                               KEY_T,
-                               KEY_Y,
-                               KEY_U,
-                               KEY_I,
-                               KEY_O,
-                               KEY_P,
-                               KEY_LEFT_BRACE,
-                               KEY_RIGHT_BRACE,
-                               KEY_DELETE,
-                               KEY_UP,
-                               KEY_CTRL,
-                               KEY_CAPS_LLOCK,
-                               KEY_A,
-                               KEY_S,
-                               KEY_D,
-                               KEY_F,
-                               KEY_G,
-                               KEY_H,
-                               KEY_J,
-                               KEY_K,
-                               KEY_L,
-                               KEY_SEMICOLON,
-                               KEY_QUOTE,
-                               KEY_ENTER,
-                               KEY_DOWN,
-                               KEY_ESC,
-                               KEY_LEFT_SHIFT,
-                               KEY_Z,
-                               KEY_X,
-                               KEY_C,
-                               KEY_V,
-                               KEY_B,
-                               KEY_N,
-                               KEY_M,
-                               KEY_COMMA,
-                               KEY_PERIOD,
-                               KEY_SLASH,
-                               KEY_RIGHT_SHIFT,
-                               KEY_LEFT,
-                               KEY_RIGHT,
-                               KEY_SPACE };
-
-
 void detection( int group )
 {
        // XXX Modify for different detection groups <-> groupArray mappings
@@ -466,8 +376,17 @@ int main( void )
 
                // Detect Valid Keypresses - TODO
                uint8_t validKeys = 0;
-               keyPressDetection( keyDetectArray, &validKeys, KEYBOARD_SIZE, keyboard_modifierMask, MODIFIERS_KEYBOARD, defaultMap );
-               keyPressDetection( keypadDetectArray, &validKeys, KEYPAD_SIZE, keypad_modifierMask, MODIFIERS_KEYPAD, keypadDefaultMap );
+
+               // Map selection
+               if ( keyDetectArray[34] & (1 << 7) ) { // CapsLock FN Modifier
+                       keyPressDetection( keyDetectArray, &validKeys, KEYBOARD_SIZE, keyboard_modifierMask, MODIFIERS_KEYBOARD, colemakMap );
+                       keyPressDetection( keypadDetectArray, &validKeys, KEYPAD_SIZE, keypad_modifierMask, MODIFIERS_KEYPAD, keypadDefaultMap );
+               }
+               else {
+                       keyPressDetection( keyDetectArray, &validKeys, KEYBOARD_SIZE, keyboard_modifierMask, MODIFIERS_KEYBOARD, defaultMap );
+                       keyPressDetection( keypadDetectArray, &validKeys, KEYPAD_SIZE, keypad_modifierMask, MODIFIERS_KEYPAD, keypadDefaultMap );
+               }
+
                print(":\n");
 
                // TODO undo potentially old keys
index d9f1fc0935a6762af99f0c69014b99dccc6a2593..7f4cbbeb54cf03943a7725e84a9ffd619fac9397 100644 (file)
@@ -12,195 +12,5 @@ extern uint8_t keyboard_modifier_keys;
 extern uint8_t keyboard_keys[6];
 extern volatile uint8_t keyboard_leds;
 
-// This file does not include the HID debug functions, so these empty
-// macros replace them with nothing, so users can compile code that
-// has calls to these functions.
-#define usb_debug_putchar(c)
-#define usb_debug_flush_output()
-
-
-#define KEY_CTRL       0x01
-#define KEY_SHIFT      0x02
-#define KEY_ALT                0x04
-#define KEY_GUI                0x08
-#define KEY_LEFT_CTRL  0x01
-#define KEY_LEFT_SHIFT 0x02
-#define KEY_LEFT_ALT   0x04
-#define KEY_LEFT_GUI   0x08
-#define KEY_RIGHT_CTRL 0x10
-#define KEY_RIGHT_SHIFT        0x20
-#define KEY_RIGHT_ALT  0x40
-#define KEY_RIGHT_GUI  0x80
-
-#define KEY_A          4
-#define KEY_B          5
-#define KEY_C          6
-#define KEY_D          7
-#define KEY_E          8
-#define KEY_F          9
-#define KEY_G          10
-#define KEY_H          11
-#define KEY_I          12
-#define KEY_J          13
-#define KEY_K          14
-#define KEY_L          15
-#define KEY_M          16
-#define KEY_N          17
-#define KEY_O          18
-#define KEY_P          19
-#define KEY_Q          20
-#define KEY_R          21
-#define KEY_S          22
-#define KEY_T          23
-#define KEY_U          24
-#define KEY_V          25
-#define KEY_W          26
-#define KEY_X          27
-#define KEY_Y          28
-#define KEY_Z          29
-#define KEY_1          30
-#define KEY_2          31
-#define KEY_3          32
-#define KEY_4          33
-#define KEY_5          34
-#define KEY_6          35
-#define KEY_7          36
-#define KEY_8          37
-#define KEY_9          38
-#define KEY_0          39
-#define KEY_ENTER      40      
-#define KEY_ESC                41
-#define KEY_BACKSPACE  42      
-#define KEY_TAB                43
-#define KEY_SPACE      44      
-#define KEY_MINUS      45
-#define KEY_EQUAL      46
-#define KEY_LEFT_BRACE 47
-#define KEY_RIGHT_BRACE        48
-#define KEY_BACKSLASH  49
-#define KEY_NUMBER     50
-#define KEY_SEMICOLON  51
-#define KEY_QUOTE      52
-#define KEY_TILDE      53
-#define KEY_COMMA      54
-#define KEY_PERIOD     55
-#define KEY_SLASH      56
-#define KEY_CAPS_LOCK  57
-#define KEY_F1         58
-#define KEY_F2         59
-#define KEY_F3         60
-#define KEY_F4         61
-#define KEY_F5         62
-#define KEY_F6         63
-#define KEY_F7         64
-#define KEY_F8         65
-#define KEY_F9         66
-#define KEY_F10                67
-#define KEY_F11                68
-#define KEY_F12                69
-#define KEY_PRINTSCREEN        70              
-#define KEY_SCROLL_LOCK        71              
-#define KEY_PAUSE      72
-#define KEY_INSERT     73      
-#define KEY_HOME       74
-#define KEY_PAGE_UP    75
-#define KEY_DELETE     76
-#define KEY_END                77
-#define KEY_PAGE_DOWN  78      
-#define KEY_RIGHT      79
-#define KEY_LEFT       80
-#define KEY_DOWN       81
-#define KEY_UP         82
-#define KEY_NUM_LOCK   83
-#define KEYPAD_SLASH   84      
-#define KEYPAD_ASTERIX 85      
-#define KEYPAD_MINUS   86      
-#define KEYPAD_PLUS    87      
-#define KEYPAD_ENTER   88      
-#define KEYPAD_1       89
-#define KEYPAD_2       90
-#define KEYPAD_3       91      
-#define KEYPAD_4       92      
-#define KEYPAD_5       93      
-#define KEYPAD_6       94      
-#define KEYPAD_7       95      
-#define KEYPAD_8       96      
-#define KEYPAD_9       97      
-#define KEYPAD_0       98              
-#define KEYPAD_PERIOD  99              
-
-
-
-
-// Everything below this point is only intended for usb_serial.c
-#ifdef USB_SERIAL_PRIVATE_INCLUDE
-#include <avr/io.h>
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-
-#define EP_TYPE_CONTROL                        0x00
-#define EP_TYPE_BULK_IN                        0x81
-#define EP_TYPE_BULK_OUT               0x80
-#define EP_TYPE_INTERRUPT_IN           0xC1
-#define EP_TYPE_INTERRUPT_OUT          0xC0
-#define EP_TYPE_ISOCHRONOUS_IN         0x41
-#define EP_TYPE_ISOCHRONOUS_OUT                0x40
-
-#define EP_SINGLE_BUFFER               0x02
-#define EP_DOUBLE_BUFFER               0x06
-
-#define EP_SIZE(s)     ((s) == 64 ? 0x30 :     \
-                       ((s) == 32 ? 0x20 :     \
-                       ((s) == 16 ? 0x10 :     \
-                                    0x00)))
-
-#define MAX_ENDPOINT           4
-
-#define LSB(n) (n & 255)
-#define MSB(n) ((n >> 8) & 255)
-
-#if defined(__AVR_AT90USB162__)
-#define HW_CONFIG() 
-#define PLL_CONFIG() (PLLCSR = ((1<<PLLE)|(1<<PLLP0)))
-#define USB_CONFIG() (USBCON = (1<<USBE))
-#define USB_FREEZE() (USBCON = ((1<<USBE)|(1<<FRZCLK)))
-#elif defined(__AVR_ATmega32U4__)
-#define HW_CONFIG() (UHWCON = 0x01)
-#define PLL_CONFIG() (PLLCSR = 0x12)
-#define USB_CONFIG() (USBCON = ((1<<USBE)|(1<<OTGPADE)))
-#define USB_FREEZE() (USBCON = ((1<<USBE)|(1<<FRZCLK)))
-#elif defined(__AVR_AT90USB646__)
-#define HW_CONFIG() (UHWCON = 0x81)
-#define PLL_CONFIG() (PLLCSR = 0x1A)
-#define USB_CONFIG() (USBCON = ((1<<USBE)|(1<<OTGPADE)))
-#define USB_FREEZE() (USBCON = ((1<<USBE)|(1<<FRZCLK)))
-#elif defined(__AVR_AT90USB1286__)
-#define HW_CONFIG() (UHWCON = 0x81)
-#define PLL_CONFIG() (PLLCSR = 0x16)
-#define USB_CONFIG() (USBCON = ((1<<USBE)|(1<<OTGPADE)))
-#define USB_FREEZE() (USBCON = ((1<<USBE)|(1<<FRZCLK)))
 #endif
 
-// standard control endpoint request types
-#define GET_STATUS                     0
-#define CLEAR_FEATURE                  1
-#define SET_FEATURE                    3
-#define SET_ADDRESS                    5
-#define GET_DESCRIPTOR                 6
-#define GET_CONFIGURATION              8
-#define SET_CONFIGURATION              9
-#define GET_INTERFACE                  10
-#define SET_INTERFACE                  11
-// HID (human interface device)
-#define HID_GET_REPORT                 1
-#define HID_GET_IDLE                   2
-#define HID_GET_PROTOCOL               3
-#define HID_SET_REPORT                 9
-#define HID_SET_IDLE                   10
-#define HID_SET_PROTOCOL               11
-// CDC (communication class device)
-#define CDC_SET_LINE_CODING            0x20
-#define CDC_GET_LINE_CODING            0x21
-#define CDC_SET_CONTROL_LINE_STATE     0x22
-#endif
-#endif