]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - converter/terminal_usb/keymap.c
ibmpc_usb: Add prebuilt firmware files
[max/tmk_keyboard.git] / converter / terminal_usb / keymap.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 "keycode.h"
21 #include "print.h"
22 #include "debug.h"
23 #include "util.h"
24 #include "keymap.h"
25
26
27
28
29 /*
30  * IBM Terminal keyboard 122-key
31  * http://www.seasip.info/VintagePC/ibm_1391406.html
32  */
33 #define KEYMAP( \
34                   K08,K10,K18,K20,K28,K30,K38,K40,K48,K50,K57,K5F,                                         \
35                   K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E,                                         \
36                                                                                                            \
37     K05,K06,  K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66,  K67,K6E,K6F,  K76,K77,K7E,K84, \
38     K04,K0C,  K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,    K5C,  K64,K65,K6D,  K6C,K75,K7D,K7C, \
39     K03,K0B,  K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52,    K53,K5A,      K63,      K6B,K73,K74,K7B, \
40     K83,K0A,  K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A,    K51,K59,  K61,K62,K6A,  K69,K72,K7A,K79, \
41     K01,K09,  K11,    K19,            K29,                    K39,    K58,      K60,      K68,K70,K71,K78  \
42 ) { \
43     { KC_NO,    KC_##K01, KC_NO,    KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
44     { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
45     { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
46     { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
47     { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
48     { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
49     { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
50     { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
51     { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
52     { KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \
53     { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
54     { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \
55     { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
56     { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \
57     { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
58     { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO    }, \
59     { KC_NO,    KC_NO,    KC_NO,    KC_##K83, KC_##K84, KC_NO,    KC_NO,    KC_NO,   }, \
60 }
61
62
63 /*
64  * IBM Terminal keyboard 102-key
65  * http://www.seasip.info/VintagePC/ibm_1391406.html
66  */
67 #define KEYMAP_102( \
68     K08,    K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E,      K57,K5F,K62,                   \
69                                                                                                  \
70     K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66,  K67,K6E,K6F,  K76,K77,K7E,K84, \
71     K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,    K5C,  K64,K65,K6D,  K6C,K75,K7D,K7C, \
72     K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52,    K53,K5A,                K6B,K73,K74,K7B, \
73     K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A,    K51,K59,      K63,      K69,K72,K7A,K79, \
74     K11,    K19,            K29,                    K39,    K58,  K61,K60,K6A,  K68,K70,K71,K78  \
75 ) { \
76     { KC_NO,    KC_NO   , KC_NO,    KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_##K07 }, \
77     { KC_##K08, KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_##K0D, KC_##K0E, KC_##K0F }, \
78     { KC_NO   , KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
79     { KC_NO   , KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
80     { KC_NO   , KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
81     { KC_NO   , KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
82     { KC_NO   , KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
83     { KC_NO   , KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
84     { KC_NO   , KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
85     { KC_NO   , KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \
86     { KC_NO   , KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
87     { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \
88     { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
89     { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \
90     { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
91     { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO    }, \
92     { KC_NO,    KC_NO,    KC_NO,    KC_NO   , KC_##K84, KC_NO,    KC_NO,    KC_NO,   }, \
93 }
94
95 // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
96 const uint8_t PROGMEM fn_layer[] = {
97     0,              // Fn0
98     0,              // Fn1
99     0,              // Fn2
100     0,              // Fn3
101     0,              // Fn4
102     0,              // Fn5
103     0,              // Fn6
104     0               // Fn7
105 };
106
107 // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.
108 // See layer.c for details.
109 const uint8_t PROGMEM fn_keycode[] = {
110     KC_NO,          // Fn0
111     KC_NO,          // Fn1
112     KC_NO,          // Fn2
113     KC_NO,          // Fn3
114     KC_NO,          // Fn4
115     KC_NO,          // Fn5
116     KC_NO,          // Fn6
117     KC_NO           // Fn7
118 };
119
120
121 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
122     /*
123      *               ,-----------------------------------------------.
124      *               |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24|
125      *               `-----------------------------------------------'
126      *               ,-----------------------------------------------.
127      *               |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|
128      *               `-----------------------------------------------'
129      * ,-------. ,-----------------------------------------------------------. ,-----------. ,---------------.
130      * |PrS|Esc| |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \| BS| |Ins|Hom|PgU| |NmL|  /|  *|  -|
131      * |-------| |-----------------------------------------------------------| |-----------| |---------------|
132      * |ScL|In4| |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| |Del|End|PgD| |  7|  8|  9|  +|
133      * |-------| |-----------------------------------------------------------| `-----------' |-----------|---|
134      * |Pau|In5| |CapsLo|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  #| Ret|     |Up |     |  4|  5|  6|  ,|
135      * |-------| |-----------------------------------------------------------| ,-----------. |---------------|
136      * |App|In6| |Shif|  \|  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /| RO| Shift| |Lef|In2|Rig| |  1|  2|  3|Ent|
137      * |-------| |-----------------------------------------------------------| `-----------' |-----------|---|
138      * |Gui|Gui| |Ctrl|    |Alt |          Space              |Alt |    |Ctrl|     |Dow|     | 00|  0|  .|  =|
139      * `-------' `----'    `---------------------------------------'    `----'     `---'     `---------------'
140      */
141     KEYMAP(
142                      F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
143                      F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,
144
145     PSCR,ESC,   GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC,  INS, HOME,PGUP,  NLCK,PSLS,PAST,PMNS,
146     SLCK,INT4,  TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     BSLS,  DEL, END, PGDN,  P7,  P8,  P9,  PPLS,
147     PAUS,INT5,  CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     NUHS,ENT,        UP,         P4,  P5,  P6,  PCMM,
148     APP, INT6,  LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RO,  RSFT,  LEFT,INT2,RGHT,  P1,  P2,  P3,  PENT,
149     RGUI,LGUI,  LCTL,     LALT,               SPC,                          RALT,     RCTL,       DOWN,       P00, P0,  PDOT,PEQL
150     ),
151
152
153 #if 0
154     /*
155      * ,---.   ,---------------. ,---------------. ,---------------. ,-----------.
156      * |Esc|   |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau|
157      * `---'   `---------------' `---------------' `---------------' `-----------'
158      * ,-----------------------------------------------------------. ,-----------. ,---------------.
159      * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \| BS| |Ins|Hom|PgU| |NmL|  /|  *|  -|
160      * |-----------------------------------------------------------| |-----------| |---------------|
161      * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| |Del|End|PgD| |  7|  8|  9|  +|
162      * |-----------------------------------------------------------| `-----------' |-----------|---|
163      * |CapsLo|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  #| Ret|               |  4|  5|  6|  ,|
164      * |-----------------------------------------------------------|     ,---.     |---------------|
165      * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /| RO| Shift|     |Up |     |  1|  2|  3|Ent|
166      * |-----------------------------------------------------------| ,-----------. |-----------|---|
167      * |Ctrl|    |Alt |          Space              |Alt |    |Ctrl| |Lef|Dow|Rig| | 00|  0|  .|  =|
168      * `----'    `---------------------------------------'    `----' `-----------' `---------------'
169      */
170     KEYMAP_102(
171     ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12,             PSCR,SLCK,PAUS,
172
173     GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC,  INS, HOME,PGUP,  NLCK,PSLS,PAST,PMNS,
174     TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,     BSLS,  DEL, END, PGDN,  P7,  P8,  P9,  PPLS,
175     CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     NUHS,ENT,                    P4,  P5,  P6,  PCMM,
176     LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RO,  RSFT,       UP,         P1,  P2,  P3,  PENT,
177     LCTL,     LALT,               SPC,                          RALT,     RCTL,  LEFT,DOWN,RGHT,  P00, P0,  PDOT,PEQL
178     ),
179 #endif
180 };