aboutsummaryrefslogtreecommitdiff
path: root/converter/terminal_usb/keymap.c
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2013-05-04 14:46:42 +0900
committertmk <nobody@nowhere>2013-05-04 14:46:42 +0900
commit95001dd6e43645ba7b6d586c6af8d5c421a569fb (patch)
tree9d733d29acf33a85407d5d5e36904013f6aad5c3 /converter/terminal_usb/keymap.c
parentdad9dab995c75b6d6ac54303bc385bb484f63a88 (diff)
downloadqmk_firmware-95001dd6e43645ba7b6d586c6af8d5c421a569fb.tar.gz
qmk_firmware-95001dd6e43645ba7b6d586c6af8d5c421a569fb.zip
Add support of Model F 122 terminal keyboard
- change initialize of keyboard in matrix_scan() - keymap for 122 keys - Mafilefie and config.h for LUFA and PS/2 USART
Diffstat (limited to 'converter/terminal_usb/keymap.c')
-rw-r--r--converter/terminal_usb/keymap.c156
1 files changed, 156 insertions, 0 deletions
diff --git a/converter/terminal_usb/keymap.c b/converter/terminal_usb/keymap.c
new file mode 100644
index 000000000..73009cb47
--- /dev/null
+++ b/converter/terminal_usb/keymap.c
@@ -0,0 +1,156 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along 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 6110345(122keys)/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,K10,K18,K20,K28,K30,K38,K40,K48,K50,K57,K5F, \
46 K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, \
47 \
48 K05,K06, K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66, K67,K6E,K6F, K76,K77,K7E,K84, \
49 K04,K0C, K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \
50 K03,K0B, K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K53,K5A, K63, K6B,K73,K74,K7B, \
51 K83,K0A, K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K51,K59, K61,K62,K6A, K69,K72,K7A,K79, \
52 K01,K09, K11, K19, K29, K39, K58, K60, K68,K70,K71,K78 \
53) { \
54 { KC_NO, KC_##K01, KC_NO, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
55 { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
56 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
57 { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
58 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
59 { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
60 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
61 { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
62 { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \
63 { KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \
64 { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
65 { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \
66 { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
67 { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \
68 { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
69 { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \
70 { KC_NO, KC_NO, KC_NO, KC_##K83, KC_##K84, KC_NO, KC_NO, KC_NO, }, \
71}
72
73
74// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
75static const uint8_t PROGMEM fn_layer[] = {
76 0, // Fn0
77 0, // Fn1
78 0, // Fn2
79 0, // Fn3
80 0, // Fn4
81 0, // Fn5
82 0, // Fn6
83 0 // Fn7
84};
85
86// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.
87// See layer.c for details.
88static const uint8_t PROGMEM fn_keycode[] = {
89 KC_NO, // Fn0
90 KC_NO, // Fn1
91 KC_NO, // Fn2
92 KC_NO, // Fn3
93 KC_NO, // Fn4
94 KC_NO, // Fn5
95 KC_NO, // Fn6
96 KC_NO // Fn7
97};
98
99
100static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
101 /* 0: default
102 * ,---. ,---------------. ,---------------. ,---------------. ,-----------.
103 * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau|
104 * `---' `---------------' `---------------' `---------------' `-----------'
105 * ,-----------------------------------------------------------. ,-----------. ,---------------.
106 * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BS | |Ins|Hom|PgU| |NmL| /| *| -|
107 * |-----------------------------------------------------------| |-----------| |---------------|
108 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| |
109 * |-----------------------------------------------------------| `-----------' |-----------| +|
110 * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #|Retu| | 4| 5| 6| |
111 * |-----------------------------------------------------------| ,---. |---------------|
112 * |Shif| \| Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
113 * |-----------------------------------------------------------| ,-----------. |-----------|Ent|
114 * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| |
115 * `----' `---------------------------------------' `----' `-----------' `---------------'
116 */
117/*
118 KEYMAP(
119 F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
120 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
121
122 PSCR,ESC, GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS,
123 SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS,
124 PAUS,INT5, CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, UP, P4, P5, P6, PCMM,
125 APP, INT6, LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT,
126 RGUI,LGUI, LCTL, LALT, SPC, RALT, RCTL, DOWN, NO, P0, PDOT,NO
127 ),
128*/
129 // pseudo ANSI
130 KEYMAP(
131 F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24,
132 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
133
134 PSCR,ESC, ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS,
135 SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, NO, DEL, END, PGDN, P7, P8, P9, PPLS,
136 PAUS,INT5, LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, BSLS,ENT, UP, P4, P5, P6, PCMM,
137 APP, INT6, LSFT,LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT,
138 RGUI,LGUI, LCTL, LALT, SPC, LGUI, GRV, DOWN, NO, P0, PDOT,NO
139 ),
140};
141
142
143uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col)
144{
145 return pgm_read_byte(&keymaps[(layer)][(row)][(col)]);
146}
147
148uint8_t keymap_fn_layer(uint8_t index)
149{
150 return pgm_read_byte(&fn_layer[index]);
151}
152
153uint8_t keymap_fn_keycode(uint8_t index)
154{
155 return pgm_read_byte(&fn_keycode[index]);
156}