]> git.donarmstrong.com Git - tmk_firmware.git/blob - converter/terminal_usb/keymap_102.c
Fix BOOTLOADER_SIZE setting
[tmk_firmware.git] / converter / terminal_usb / keymap_102.c
1 /*
2 Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 #include <stdint.h>
19 #include <stdbool.h>
20 #include <avr/pgmspace.h>
21 #include "keycode.h"
22 #include "print.h"
23 #include "debug.h"
24 #include "util.h"
25 #include "keymap.h"
26
27
28
29
30 /* 
31  * IBM Terminal keyboard 1392595(102keys)
32  * http://geekhack.org/showthread.php?10737-What-Can-I-Do-With-a-Terminal-Model-M
33  * http://www.seasip.info/VintagePC/ibm_1391406.html
34  *
35  * Keymap array:
36  *     8 bytes
37  *   +---------+
38  *  0|         |
39  *  :|         | 0x00-0x87
40  *  ;|         |
41  * 17|         |
42  *   +---------+
43  */
44 #define KEYMAP( \
45     K08,    K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E,      K57,K5F,K62,                   \
46                                                                                                  \
47     K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66,  K67,K6E,K6F,  K76,K77,K7E,K84, \
48     K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,    K5C,  K64,K65,K6D,  K6C,K75,K7D,K7C, \
49     K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52,    K53,K5A,                K6B,K73,K74,K7B, \
50     K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A,    K51,K59,      K63,      K69,K72,K7A,K79, \
51     K11,    K19,            K29,                    K39,    K58,  K61,K60,K6A,  K68,K70,K71,K78  \
52 ) { \
53     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_##K07 }, \
54     { KC_##K08, KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_##K0D, KC_##K0E, KC_##K0F }, \
55     { KC_NO,    KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
56     { KC_NO,    KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
57     { KC_NO,    KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
58     { KC_NO,    KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
59     { KC_NO,    KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
60     { KC_NO,    KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
61     { KC_NO,    KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
62     { KC_NO,    KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \
63     { KC_NO,    KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
64     { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \
65     { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
66     { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \
67     { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
68     { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO    }, \
69     { KC_NO,    KC_NO,    KC_NO,    KC_NO,    KC_##K84, KC_NO,    KC_NO,    KC_NO,   }, \
70 }
71
72
73 // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
74 static const uint8_t PROGMEM fn_layer[] = {
75     1,              // Fn0
76     2,              // Fn1
77     3,              // Fn2
78     0,              // Fn3
79     0,              // Fn4
80     0,              // Fn5
81     0,              // Fn6
82     0               // Fn7
83 };
84
85 // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.
86 // See layer.c for details.
87 static const uint8_t PROGMEM fn_keycode[] = {
88     KC_SCLN,        // Fn0
89     KC_SLSH,        // Fn1
90     KC_ESC,         // Fn2
91     KC_NO,          // Fn3
92     KC_NO,          // Fn4
93     KC_NO,          // Fn5
94     KC_NO,          // Fn6
95     KC_NO           // Fn7
96 };
97
98
99 static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
100     /* 0: default
101      * ,---.   ,---------------. ,---------------. ,---------------. ,-----------.
102      * |Esc|   |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau|
103      * `---'   `---------------' `---------------' `---------------' `-----------'
104      * ,-----------------------------------------------------------. ,-----------. ,---------------.
105      * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|BS | |Ins|Hom|PgU| |NmL|  /|  *|  -|
106      * |-----------------------------------------------------------| |-----------| |---------------|
107      * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| |Del|End|PgD| |  7|  8|  9|   |
108      * |-----------------------------------------------------------| `-----------' |-----------|  +|
109      * |CapsLo|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  #|Retu|               |  4|  5|  6|   |
110      * |-----------------------------------------------------------|     ,---.     |---------------|
111      * |Shif|  \|  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /|Shift     |     |Up |     |  1|  2|  3|   |
112      * |-----------------------------------------------------------| ,-----------. |-----------|Ent|
113      * |Ctrl|    |Alt |          Space              |Alt |    |Ctrl| |Lef|Dow|Rig| |      0|  .|   |
114      * `----'    `---------------------------------------'    `----' `-----------' `---------------'
115      */
116     KEYMAP(
117     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,             PSCR,SLCK,BRK,
118     GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC,  INS, HOME,PGUP,  NLCK,PSLS,PAST,PMNS,
119     TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     BSLS,  DEL, END, PGDN,  P7,  P8,  P9,  PPLS,
120     LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN0, QUOT,     NUHS,ENT,                    P4,  P5,  P6,  PCMM,
121     LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN1,      RO,  FN2,        UP,         P1,  P2,  P3,  PENT,
122     LGUI,     LALT,               SPC,                          RALT,     RCTL,  LEFT,DOWN,RGHT,  NO,  P0,  PDOT,NO
123     ),
124
125     /* 1: Mouse keys
126      * ,-----------------------------------------------------------.
127      * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backspa|
128      * |-----------------------------------------------------------|
129      * |Tab  |MwL|MwU|McU|WwU|WwR|MwL|MwD|MwU|MwR|   |   |   |    \|
130      * |-----------------------------------------------------------|
131      * |CapsLo|   |McL|McD|McR|   |McL|McD|McU|McR|Fn0|   |Return  |
132      * |-----------------------------------------------------------|
133      * |Shift   |VoD|VoU|Mut|Mb2|Mb3|Mb2|Mb1|VoD|VoU|Mut|Shift     |
134      * |-----------------------------------------------------------|
135      * |Ctrl |    |Alt |         Mb1                |Alt |    |Ctrl|
136      * `-----'    `--------------------------------------'    `----'
137      * Mc = mouse cursor, Mw = mouse wheel, Mb = mouse button
138      * Vo = Volume, Mut = Mute
139      */
140     KEYMAP(
141     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,                PSCR,SLCK,BRK,
142     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F8,  F10, F11, F12, NO,  BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
143     TAB, WH_L,WH_D,MS_U,WH_U,WH_R,WH_L,WH_D,WH_U,WH_R,NO,  NO,  NO,       BSLS,     DEL, END, PGDN,    P7,  P8,  P9,  PPLS,
144     LCTL,NO,  MS_L,MS_D,MS_R,NO,  MS_L,MS_D,MS_U,MS_R,FN0, NO,       NO,  ENT,                         P4,  P5,  P6,  PCMM,
145     LSFT,NO,  VOLD,VOLU,MUTE,BTN2,BTN3,BTN2,BTN1,VOLD,VOLU,MUTE,     NO,  RSFT,          UP,           P1,  P2,  P3,  PENT,
146     LGUI,     LALT,               BTN1,                         RALT,     RCTL,     LEFT,DOWN,RGHT,    NO,  P0,  PDOT,NO
147     ),
148
149     /* 2: Cursor keys
150      * ,-----------------------------------------------------------.
151      * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backspa|
152      * |-----------------------------------------------------------|
153      * |Tab  |Hom|PgU| Up|PgU|End|Hom|PgD|PgU|End|   |   |   |    \|
154      * |-----------------------------------------------------------|
155      * |CapsLo|   |Lef|Dow|Rig|   |Lef|Dow| Up|Rig|   |   |Return  |
156      * |-----------------------------------------------------------|
157      * |Shift   |   |   |   |   |   |Hom|PgD|PgU|End|Fn1|Shift     |
158      * |-----------------------------------------------------------|
159      * |Ctrl |    |Alt |         Space              |Alt |    |Ctrl|
160      * `-----'    `--------------------------------------'    `----'
161      */
162     KEYMAP(
163     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,                PSCR,SLCK,BRK,
164     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F8,  F10, F11, F12, NO,  BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
165     TAB, NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, NO,  NO,  NO,       BSLS,     DEL, END, PGDN,    P7,  P8,  P9,  PMNS,
166     LCTL,NO,  NO,  NO,  NO,  NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,       NO,  ENT,                         P4,  P5,  P6,  PCMM,
167     LSFT,NO,  VOLD,VOLU,MUTE,NO,  NO,  HOME,PGDN,PGUP,END, FN1,      NO,  RSFT,          UP,           P1,  P2,  P3,  PENT,
168     LGUI,     LALT,               SPC,                          RALT,     RCTL,     LEFT,DOWN,RGHT,    NO,  P0,  PDOT,NO
169     ),
170
171     /* 3: HHKB
172      * ,-----------------------------------------------------------.
173      * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
174      * |-----------------------------------------------------------|
175      * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
176      * |-----------------------------------------------------------|
177      * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
178      * |-----------------------------------------------------------|
179      * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Fn2       |
180      * |-----------------------------------------------------------|
181      * |Ctrl |    |Alt |         Space              |Alt |    |Ctrl|
182      * `-----'    `--------------------------------------'    `----'
183      */
184     KEYMAP(
185     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,                PSCR,SLCK,BRK,
186     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F8,  F10, F11, F12, NO,  BSPC,     INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,
187     CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,BRK, UP,  NO,       BSLS,     DEL, END, PGDN,    P7,  P8,  P9,  PPLS,
188     LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,     NO,  ENT,                         P4,  P5,  P6,  PCMM,
189     LSFT,NO,  NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,     NO,  FN2,           UP,           P1,  P2,  P3,  PENT,
190     LGUI,     LALT,               SPC,                          RALT,     RCTL,     LEFT,DOWN,RGHT,    NO,  P0,  PDOT,NO
191     ),
192 };
193
194
195 uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col)
196 {
197     return pgm_read_byte(&keymaps[(layer)][(row)][(col)]);
198 }
199
200 uint8_t keymap_fn_layer(uint8_t index)
201 {
202     return pgm_read_byte(&fn_layer[index]);
203 }
204
205 uint8_t keymap_fn_keycode(uint8_t index)
206 {
207     return pgm_read_byte(&fn_keycode[index]);
208 }