Fix keymap to adjust new keyboard.c.
[tmk_keyboard.git] / keyboard / IIgs_Standard / keymap.c
CommitLineData
d1117dca
JS
1/*\r
2Copyright 2012 Jeffrey Sung <nattyman@gmail.com>\r
3\r
4This program is free software: you can redistribute it and/or modify\r
5it under the terms of the GNU General Public License as published by\r
6the Free Software Foundation, either version 2 of the License, or\r
7(at your option) any later version.\r
8\r
9This program is distributed in the hope that it will be useful,\r
10but WITHOUT ANY WARRANTY; without even the implied warranty of\r
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
12GNU General Public License for more details.\r
13\r
14You should have received a copy of the GNU General Public License\r
15along with this program. If not, see <http://www.gnu.org/licenses/>.\r
16*/\r
17\r
18/* \r
19 * Keymap for Apple IIgs/Standard Keyboard\r
20 */\r
21#include <stdint.h>\r
22#include <stdbool.h>\r
23#include <avr/pgmspace.h>\r
ce2e06c3 24#include "keycode.h"\r
d1117dca
JS
25#include "print.h"\r
26#include "debug.h"\r
27#include "util.h"\r
28#include "keymap.h"\r
29\r
30\r
31// Convert physical keyboard layout to matrix array.\r
32// This is a macro to define keymap easily in keyboard layout form.\r
33#define KEYMAP( R10C5, \\r
34 R3C7, R3C6, R3C5, R3C4, R3C3, R3C2, R3C1, R8C1, R8C0, R3C0, R0C0, R0C1, R0C2, R0C3, R4C4, R4C5, R4C6, R4C7, \\r
35 R9C7, R9C6, R9C5, R9C4, R9C3, R9C2, R9C1, R9C0, R1C0, R1C1, R1C2, R1C3, R1C4, R2C4, R2C5, R2C6, R2C3, \\r
36 R10C0,R7C7, R7C6, R7C5, R7C4, R7C3, R7C2, R7C1, R7C0, R0C4, R1C6, R1C7, R1C5, R2C0, R2C1, R2C2, R2C7, \\r
37 R10C1,R6C7, R6C6, R6C5, R6C4, R6C3, R6C2, R6C1, R6C0, R0C5, R0C6, R4C0, R4C1, R4C2, \\r
38 R10C4,R10C2,R10C3,R5C4, R5C7, R5C5, R5C6, R5C0, R5C2, R0C7, R5C1, R5C3, R4C3 \\r
39) { \\r
40 { R0C0, R0C1, R0C2, R0C3, R0C4, R0C5, R0C6, R0C7 }, \\r
41 { R1C0, R1C1, R1C2, R1C3, R1C4, R1C5, R1C6, R1C7 }, \\r
42 { R2C0, R2C1, R2C2, R2C3, R2C4, R2C5, R2C6, R2C7 }, \\r
43 { R3C0, R3C1, R3C2, R3C3, R3C4, R3C5, R3C6, R3C7 }, \\r
44 { R4C0, R4C1, R4C2, R4C3, R4C4, R4C5, R4C6, R4C7 }, \\r
45 { R5C0, R5C1, R5C2, R5C3, R5C4, R5C5, R5C6, R5C7 }, \\r
46 { R6C0, R6C1, R6C2, R6C3, R6C4, R6C5, R6C6, R6C7 }, \\r
47 { R7C0, R7C1, R7C2, R7C3, R7C4, R7C5, R7C6, R7C7 }, \\r
ce2e06c3 48 { R8C0, R8C1, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO }, \\r
d1117dca 49 { R9C0, R9C1, R9C2, R9C3, R9C4, R9C5, R9C6, R9C7 }, \\r
ce2e06c3 50 { R10C0,R10C1, R10C2, R10C3, R10C4,R10C5, KC_NO, KC_NO} \\r
d1117dca
JS
51}\r
52\r
53#define KEYCODE(layer, row, col) (pgm_read_byte(&keymaps[(layer)][(row)][(col)]))\r
54\r
55\r
56// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.\r
57static const uint8_t PROGMEM fn_layer[] = {\r
58 0, // Fn0\r
59 1, // Fn1\r
60 2, // Fn2\r
61 3, // Fn3\r
62 4, // Fn4\r
63 0, // Fn5\r
64 3, // Fn6\r
65 3 // Fn7\r
66};\r
67\r
68// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.\r
69// See layer.c for details.\r
70static const uint8_t PROGMEM fn_keycode[] = {\r
ce2e06c3 71 KC_NO, // Fn0\r
72 KC_NO, // Fn1\r
73 KC_SLSH, // Fn2\r
74 KC_SCLN, // Fn3\r
75 KC_SPC, // Fn4\r
76 KC_NO, // Fn5\r
77 KC_NO, // Fn6\r
78 KC_NO // Fn7\r
d1117dca
JS
79};\r
80\r
81static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\r
82 /* Layer 0: Default Layer\r
83 * ,-----------------------------------------------------------. ,---------------,\r
84 * | POWER | | | \r
85 * |-----------------------------------------------------------| |---------------|\r
86 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |FN0| = | / | * |\r
87 * |-----------------------------------------------------------| |---------------|\r
88 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7 | 8 | 9 | + |\r
89 * |-----------------------------------------------------' | |---------------|\r
90 * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Return | | 4 | 5 | 6 | - |\r
91 * |-----------------------------------------------------------| |---------------|\r
92 * |Shift | Z| X| C| V| B| N| M| ,| .| / |Shift | | 1 | 2 | 3 | E |\r
93 * |-----------------------------------------------------------| |-----------| N |\r
94 * |CAPS|Alt |Gui |` |SPC |BSLS |LFT|RGT|DN|UP| | 0 | . | T |\r
95 * `-----------------------------------------------------------' |---------------'\r
96 */\r
ce2e06c3 97 KEYMAP( KC_PWR,\r
98 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_FN1, KC_PEQL, KC_PSLS, KC_PAST, \\r
99 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS, \\r
100 KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_ENT, KC_P4, KC_P5, KC_P6, KC_PMNS, \\r
101 KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_P1, KC_P2, KC_P3, \\r
102 KC_CAPS,KC_LALT,KC_LGUI,KC_GRV, KC_SPC, KC_BSLS,KC_LEFT,KC_RGHT,KC_DOWN,KC_UP, KC_P0, KC_PDOT, KC_PENT),\r
d1117dca
JS
103\r
104\r
105 /* Layer 1: Tenkey use Layer\r
106 * ,-----------------------------------------------------------. ,---------------,\r
107 * | POWER | | | \r
108 * |-----------------------------------------------------------| |---------------|\r
109 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |NLK| = | / | * |\r
110 * |-----------------------------------------------------------| |---------------|\r
111 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | |INS| 8 |PGU|V+ |\r
112 * |-----------------------------------------------------' | |---------------|\r
113 * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Return | |DEL|UP |PGD|V- |\r
114 * |-----------------------------------------------------------| |---------------|\r
115 * |Shift | Z| X| C| V| B| N| M| ,| .| / |Shift | |LFT|DN |RGT| E |\r
116 * |-----------------------------------------------------------| |-----------| N |\r
117 * |CAPS|Alt |Gui |` |SPC |BSLS |LFT|RGT|DN|UP| | 0 | . | T |\r
118 * `-----------------------------------------------------------' `---------------'\r
119 */\r
ce2e06c3 120 KEYMAP( KC_PWR, \\r
121 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_FN1, KC_PEQL, KC_PSLS, KC_MUTE, \\r
122 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_INS, KC_P8, KC_PGUP, KC_VOLU, \\r
123 KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_ENT, KC_DEL, KC_UP, KC_PGDN, KC_VOLD, \\r
124 KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_LEFT, KC_DOWN, KC_RIGHT, \\r
125 KC_CAPS,KC_LALT,KC_LGUI,KC_GRV, KC_SPC, KC_BSLS,KC_LEFT,KC_RGHT,KC_DOWN,KC_UP, KC_P0, KC_PDOT, KC_PENT),\r
d1117dca
JS
126};\r
127\r
128\r
129uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col)\r
130{\r
131 return KEYCODE(layer, row, col);\r
132}\r
133\r
8a819861 134uint8_t keymap_fn_layer(uint8_t index)\r
d1117dca 135{\r
8a819861 136 return pgm_read_byte(&fn_layer[index]);\r
d1117dca
JS
137}\r
138\r
8a819861 139uint8_t keymap_fn_keycode(uint8_t index)\r
d1117dca 140{\r
8a819861 141 return pgm_read_byte(&fn_keycode[index]);\r
d1117dca 142}\r
Imprint / Impressum