Fix keymap to adjust new keyboard.c.
[tmk_keyboard.git] / converter / adb_usb / keymap.c
CommitLineData
0dde25e8 1/*
2Copyright 2011 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
56e098d7 18/*
19 * Keymap for ADB keyboard
20 */
21#include <stdint.h>
22#include <stdbool.h>
23#include <avr/pgmspace.h>
24#include "usb_keyboard.h"
ce2e06c3 25#include "keycode.h"
56e098d7 26#include "print.h"
27#include "debug.h"
28#include "util.h"
c958b2d1 29#include "keymap.h"
56e098d7 30
31
c5b9f2b0 32#define KEYCODE(layer, row, col) (pgm_read_byte(&keymaps[(layer)][(row)][(col)]))
33
56e098d7 34// Convert physical keyboard layout to matrix array.
35// This is a macro to define keymap easily in keyboard layout form.
c5b9f2b0 36/* Apple Extended Keyboard */
56e098d7 37#define KEYMAP( \
c5b9f2b0 38 K35, K7A,K78,K63,K76, K60,K61,K62,K64, K65,K6D,K67,K6F, K69,K6B,K71, K7F, \
39 K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K72,K73,K74, K47,K51,K4B,K43, \
40 K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K75,K77,K79, K59,K5B,K5C,K4E, \
41 K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K45, \
42 K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K3E, K53,K54,K55, \
43 K36,K3A,K37, K31, K3B,K3D,K3C, K52, K41,K4C \
56e098d7 44) { \
ce2e06c3 45 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
46 { KC_##K08, KC_##K09, KC_NO, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \
47 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
48 { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
49 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \
50 { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
51 { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_NO, KC_##K35, KC_##K36, KC_##K37 }, \
52 { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \
53 { KC_NO, KC_##K41, KC_NO, KC_##K43, KC_NO, KC_##K45, KC_NO, KC_##K47 }, \
54 { KC_NO, KC_NO, KC_NO, KC_##K4B, KC_##K4C, KC_NO, KC_##K4E, KC_NO }, \
55 { KC_NO, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \
56 { KC_##K58, KC_##K59, KC_NO, KC_##K5B, KC_##K5C, KC_NO, KC_NO, KC_NO }, \
57 { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_NO, KC_##K67 }, \
58 { KC_NO, KC_##K69, KC_NO, KC_##K6B, KC_NO, KC_##K6D, KC_NO, KC_##K6F }, \
59 { KC_NO, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \
60 { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_NO, KC_NO, KC_NO, KC_##K7F } \
56e098d7 61}
56e098d7 62
63
64// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
65static const uint8_t PROGMEM fn_layer[] = {
33d58c2b 66 0, // Fn0
c5b9f2b0 67 0, // Fn1
68 0, // Fn2
69 0, // Fn3
70 0, // Fn4
71 0, // Fn5
72 0, // Fn6
73 0 // Fn7
56e098d7 74};
75
76// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.
77// See layer.c for details.
78static const uint8_t PROGMEM fn_keycode[] = {
ce2e06c3 79 KC_NO, // Fn0
80 KC_NO, // Fn1
81 KC_NO, // Fn2
82 KC_NO, // Fn3
83 KC_NO, // Fn4
84 KC_NO, // Fn5
85 KC_NO, // Fn6
86 KC_NO // Fn7
56e098d7 87};
88
89static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
c5b9f2b0 90 /* Default Layer: plain keymap
91 * ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---.
9f05dc6f 92 * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr|
c5b9f2b0 93 * `---' `---------------' `---------------' `---------------' `-----------' `---'
94 * ,-----------------------------------------------------------. ,-----------. ,---------------.
95 * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *|
96 * |-----------------------------------------------------------| |-----------| |---------------|
97 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| -|
98 * |-----------------------------------------------------------| `-----------' |---------------|
99 * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| +|
100 * |-----------------------------------------------------------| ,---. |---------------|
101 * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| |
102 * |-----------------------------------------------------------| ,-----------. |-----------|Ent|
103 * |Ctrl |Gui |Alt | Space | | | | |Lef|Dow|Rig| | 0| .| |
104 * `-----------------------------------------------------------' `-----------' `---------------'
56e098d7 105 */
c5b9f2b0 106 KEYMAP(
33d58c2b 107 ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK,PAUS, PWR,
c5b9f2b0 108 GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, INS, HOME,PGUP, NLCK,EQL, PSLS,PAST,
33d58c2b 109 TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, DEL, END, PGDN, P7, P8, P9, PMNS,
c5b9f2b0 110 CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, P4, P5, P6, PPLS,
111 LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, UP, P1, P2, P3,
112 LCTL,LGUI,LALT, SPC, LEFT,DOWN,RGHT, P0, PDOT,PENT
113 ),
56e098d7 114};
115
116
117uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col)
118{
119 return KEYCODE(layer, row, col);
120}
121
8a819861 122uint8_t keymap_fn_layer(uint8_t index)
56e098d7 123{
8a819861 124 return pgm_read_byte(&fn_layer[index]);
56e098d7 125}
126
8a819861 127uint8_t keymap_fn_keycode(uint8_t index)
56e098d7 128{
8a819861 129 return pgm_read_byte(&fn_keycode[index]);
56e098d7 130}
Imprint / Impressum