]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - keymap.c
add mouse wheel function.
[max/tmk_keyboard.git] / keymap.c
1 /* 
2  * keymap for modified macway keyboarq
3  */
4 #include <avr/pgmspace.h>
5 #include "matrix.h"
6 #include "keymap.h"
7
8 int current_layer = 0;
9
10 static const uint8_t PROGMEM Keymap[][MATRIX_ROWS][MATRIX_COLS] = {
11     // 0: default
12     {
13         { KB_LALT, KB_NO,     KB_BSPACE,  KB_NO, KB_LEFT,   KB_NO,      KB_ENTER, KB_SPACE },
14         { KB_1,    KB_ESCAPE, KB_TAB,     KB_Q,  KB_A,      KB_LCTRL,   KB_Z,     KB_RIGHT },
15         { KB_2,    FN_0,      KB_LGUI,    KB_W,  KB_S,      KB_NO,      KB_X,     KB_UP },
16         { KB_3,    KB_NO,     KB_RSHIFT,  KB_E,  KB_D,      FN_1,       KB_C,     KB_DOWN },
17         { KB_4,    KB_5,      KB_T,       KB_R,  KB_F,      KB_G,       KB_V,     KB_B },
18         { KB_7,    KB_6,      KB_Y,       KB_U,  KB_J,      KB_H,       KB_M,     KB_N },
19         { KB_8,    KB_EQUAL,  KB_RBRACKET,KB_I,  KB_K,      KB_NO,      KB_COMMA, KB_LSHIFT },
20         { KB_9,    KB_NO,     KB_NO,      KB_O,  KB_L,      FN_2,       KB_DOT,   KB_NO },
21         { KB_0,    KB_MINUS,  KB_LBRACKET,KB_P,  KB_SCOLON, KB_QUOTE,   KB_NO,    KB_SLASH }
22     },
23     // 1: FN_0(RIGHT ALT)
24     {
25         { KB_LALT, KB_NO,     KB_DELETE,  KB_NO, KB_NO,     KB_NO,      KB_BSLASH,KB_NO },
26         { KB_F1,   KB_GRAVE,  KB_BSLASH,  KB_NO, KB_NO,     KB_LCTRL,   KB_NO,    KB_NO },
27         { KB_F2,   KB_NO,     KB_LGUI,    KB_NO, KB_NO,     KB_NO,      KB_NO,    KB_NO },
28         { KB_F3,   KB_NO,     KB_RSHIFT,  KB_NO, KB_NO,     KB_NO,      KB_NO,    KB_NO },
29         { KB_F4,   KB_F5,     KB_NO,      KB_NO, KB_NO,     KB_NO,      KB_NO,    KB_NO },
30         { KB_F7,   KB_F6,     KB_NO,      KB_NO, KB_DOWN,   KB_LEFT,    KB_PGDOWN,KB_HOME },
31         { KB_F8,   KB_F12,    KB_NO,      KB_NO, KB_UP,     KB_NO,      KB_PGUP,  KB_LSHIFT },
32         { KB_F9,   KB_NO,     KB_NO,      KB_NO, KB_RIGHT,  KB_NO,      KB_END,   KB_NO },
33         { KB_F10,  KB_F11,    KB_NO,      KB_NO, KB_NO,     KB_NO,      KB_NO,    KB_NO }
34     },
35     // 2: FN_1(HHKB Fn)
36     {
37         { KB_LALT, KB_NO,     KB_DELETE,  KB_NO, KB_NO,     KB_NO,      KB_BSLASH,KB_NO },
38         { KB_F1,   KB_GRAVE,  KB_BSLASH,  KB_NO, KB_VOLDOWN,KB_LCTRL,   KB_NO,    KB_NO },
39         { KB_F2,   KB_NO,     KB_LGUI,    KB_NO, KB_VOLUP,  KB_NO,      KB_NO,    KB_NO },
40         { KB_F3,   KB_NO,     KB_RSHIFT,  KB_NO, KB_MUTE,   KB_NO,      KB_NO,    KB_NO },
41         { KB_F4,   KB_F5,     KB_NO,      KB_NO, KB_F20,    KB_NO,      KB_NO,    KB_NO },
42         { KB_F7,   KB_F6,     KB_NO,      KB_NO, KP_SLASH,  KP_ASTERISK,KP_MINUS, KP_PLUS },
43         { KB_F8,   KB_F12,    KB_NO,      KB_NO, KB_HOME,   KB_NO,      KB_END,   KB_LSHIFT },
44         { KB_F9,   KB_NO,     KB_NO,      KB_NO, KB_PGUP,   KB_NO,      KB_PGDOWN,KB_NO },
45         { KB_F10,  KB_F11,    KB_UP,      KB_NO, KB_LEFT,   KB_RIGHT,   KB_NO,    KB_DOWN }
46     },
47     // 3: FN_2(LEFT Bottom)
48     {
49         { KB_LALT, KB_NO,     KB_DELETE,  KB_NO, MS_LEFT,   KB_NO,      KB_BSLASH,  MS_BTN1 },
50         { KB_F1,   KB_GRAVE,  KB_BSLASH,  KB_NO, MS_BTN1,   KB_LCTRL,   KB_NO,      MS_RIGHT },
51         { KB_F2,   MS_BTN2,   KB_LGUI,    KB_NO, MS_BTN2,   KB_NO,      KB_NO,      MS_UP },
52         { KB_F3,   KB_NO,     KB_RSHIFT,  KB_NO, MS_BTN3,   KB_NO,      KB_NO,      MS_DOWN },
53         { KB_F4,   KB_F5,     KB_NO,      KB_NO, KB_NO,     KB_NO,      KB_NO,      KB_NO },
54         { KB_F7,   KB_F6,     KB_NO,      KB_NO, MS_DOWN,   MS_LEFT,    MS_WH_UP,   MS_WH_LEFT },
55         { KB_F8,   KB_F12,    MS_BTN5,    KB_NO, MS_UP,     KB_NO,      MS_WH_DOWN, KB_LSHIFT },
56         { KB_F9,   KB_NO,     KB_NO,      KB_NO, MS_RIGHT,  KB_NO,      MS_WH_RIGHT,KB_NO },
57         { KB_F10,  KB_F11,    MS_BTN4,    KB_NO, KB_NO,     KB_NO,      KB_NO,      KB_NO }
58     },
59 };
60
61
62 uint8_t get_keycode(int layer, int row, int col)
63 {
64     if (row >= MATRIX_ROWS)
65         return KB_NO;
66     if (col >= MATRIX_COLS)
67         return KB_NO;
68     return pgm_read_byte(&Keymap[layer][row][col]);
69 }
70
71 int get_layer(void) {
72     int layer = 0;
73     for (int row = 0; row < MATRIX_ROWS; row++) {
74         for (int col = 0; col < MATRIX_ROWS; col++) {
75             if (matrix[row] & 1<<col) continue;
76             if (get_keycode(0, row, col) == FN_0) layer = 1;
77             if (get_keycode(0, row, col) == FN_1) layer = 2;
78             if (get_keycode(0, row, col) == FN_2) layer = 3;
79         }
80     }
81     current_layer = layer;
82     return current_layer;
83 }