diff options
| author | tmk <nobody@nowhere> | 2011-12-05 02:53:15 +0900 |
|---|---|---|
| committer | tmk <nobody@nowhere> | 2011-12-05 16:14:45 +0900 |
| commit | 3f9de37310f670e6289738c628747e6787d42b22 (patch) | |
| tree | b4e7ab8df3cb59ba388cd60f7c8a698a4e9ce08e /ps2_usb/keymap.c | |
| parent | 6284b147c23aa32a9e65138b1eb8ee908ece4941 (diff) | |
| download | qmk_firmware-3f9de37310f670e6289738c628747e6787d42b22.tar.gz qmk_firmware-3f9de37310f670e6289738c628747e6787d42b22.zip | |
Added ISO/JIS keyboard support.
Diffstat (limited to 'ps2_usb/keymap.c')
| -rw-r--r-- | ps2_usb/keymap.c | 103 |
1 files changed, 85 insertions, 18 deletions
diff --git a/ps2_usb/keymap.c b/ps2_usb/keymap.c index e84e8c29b..fc429212d 100644 --- a/ps2_usb/keymap.c +++ b/ps2_usb/keymap.c | |||
| @@ -28,11 +28,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 28 | #include "keymap.h" | 28 | #include "keymap.h" |
| 29 | 29 | ||
| 30 | 30 | ||
| 31 | #define KEYCODE(layer, row, col) (pgm_read_byte(&keymaps[(layer)][(row)][(col)])) | ||
| 32 | 31 | ||
| 33 | 32 | ||
| 34 | // The keymap is a 32*8 matrix which convert a PS/2 scancode into a USB keycode. | 33 | // Following macros help you to define a keymap with the form of actual keyboard layout. |
| 35 | // See matrix.c for the detail of matrix. | 34 | |
| 35 | /* US layout plus all other various keys */ | ||
| 36 | #define KEYMAP_ALL( \ | 36 | #define KEYMAP_ALL( \ |
| 37 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ | 37 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ |
| 38 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ | 38 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ |
| @@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 41 | K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \ | 41 | K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \ |
| 42 | K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \ | 42 | K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \ |
| 43 | \ | 43 | \ |
| 44 | K61, /* for European ISO */ \ | ||
| 45 | K51, K13, K6A, K64, K67, /* for Japanese JIS */ \ | ||
| 46 | K08, K10, K18, K20, K28, K30, K38, K40, K48, K50, K57, K5F, /* F13-24 */ \ | ||
| 44 | KB7, KBF, KDE, /* System Power, Sleep, Wake */ \ | 47 | KB7, KBF, KDE, /* System Power, Sleep, Wake */ \ |
| 45 | KA3, KB2, KA1, /* Mute, Volume Up, Volume Down */ \ | 48 | KA3, KB2, KA1, /* Mute, Volume Up, Volume Down */ \ |
| 46 | KCD, K95, KBB, KB4, KD0, /* Next, Previous, Stop, Pause, Media Select */ \ | 49 | KCD, K95, KBB, KB4, KD0, /* Next, Previous, Stop, Pause, Media Select */ \ |
| @@ -49,19 +52,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 49 | KA8, KA0, K98 /* WWW Stop, Refresh, Favorites */ \ | 52 | KA8, KA0, K98 /* WWW Stop, Refresh, Favorites */ \ |
| 50 | ) { \ | 53 | ) { \ |
| 51 | { KB_NO, KB_##K01, KB_NO, KB_##K03, KB_##K04, KB_##K05, KB_##K06, KB_##K07 }, \ | 54 | { KB_NO, KB_##K01, KB_NO, KB_##K03, KB_##K04, KB_##K05, KB_##K06, KB_##K07 }, \ |
| 52 | { KB_NO, KB_##K09, KB_##K0A, KB_##K0B, KB_##K0C, KB_##K0D, KB_##K0E, KB_NO }, \ | 55 | { KB_##K08, KB_##K09, KB_##K0A, KB_##K0B, KB_##K0C, KB_##K0D, KB_##K0E, KB_NO }, \ |
| 53 | { KB_NO, KB_##K11, KB_##K12, KB_NO, KB_##K14, KB_##K15, KB_##K16, KB_NO }, \ | 56 | { KB_##K10, KB_##K11, KB_##K12, KB_##K13, KB_##K14, KB_##K15, KB_##K16, KB_NO }, \ |
| 54 | { KB_NO, KB_NO, KB_##K1A, KB_##K1B, KB_##K1C, KB_##K1D, KB_##K1E, KB_NO }, \ | 57 | { KB_##K18, KB_NO, KB_##K1A, KB_##K1B, KB_##K1C, KB_##K1D, KB_##K1E, KB_NO }, \ |
| 55 | { KB_NO, KB_##K21, KB_##K22, KB_##K23, KB_##K24, KB_##K25, KB_##K26, KB_NO }, \ | 58 | { KB_##K20, KB_##K21, KB_##K22, KB_##K23, KB_##K24, KB_##K25, KB_##K26, KB_NO }, \ |
| 56 | { KB_NO, KB_##K29, KB_##K2A, KB_##K2B, KB_##K2C, KB_##K2D, KB_##K2E, KB_NO }, \ | 59 | { KB_##K28, KB_##K29, KB_##K2A, KB_##K2B, KB_##K2C, KB_##K2D, KB_##K2E, KB_NO }, \ |
| 57 | { KB_NO, KB_##K31, KB_##K32, KB_##K33, KB_##K34, KB_##K35, KB_##K36, KB_NO }, \ | 60 | { KB_##K30, KB_##K31, KB_##K32, KB_##K33, KB_##K34, KB_##K35, KB_##K36, KB_NO }, \ |
| 58 | { KB_NO, KB_NO, KB_##K3A, KB_##K3B, KB_##K3C, KB_##K3D, KB_##K3E, KB_NO }, \ | 61 | { KB_##K38, KB_NO, KB_##K3A, KB_##K3B, KB_##K3C, KB_##K3D, KB_##K3E, KB_NO }, \ |
| 59 | { KB_NO, KB_##K41, KB_##K42, KB_##K43, KB_##K44, KB_##K45, KB_##K46, KB_NO }, \ | 62 | { KB_##K40, KB_##K41, KB_##K42, KB_##K43, KB_##K44, KB_##K45, KB_##K46, KB_NO }, \ |
| 60 | { KB_NO, KB_##K49, KB_##K4A, KB_##K4B, KB_##K4C, KB_##K4D, KB_##K4E, KB_NO }, \ | 63 | { KB_##K48, KB_##K49, KB_##K4A, KB_##K4B, KB_##K4C, KB_##K4D, KB_##K4E, KB_NO }, \ |
| 61 | { KB_NO, KB_NO, KB_##K52, KB_NO, KB_##K54, KB_##K55, KB_NO, KB_NO }, \ | 64 | { KB_##K50, KB_##K51, KB_##K52, KB_NO, KB_##K54, KB_##K55, KB_NO, KB_##K57 }, \ |
| 62 | { KB_##K58, KB_##K59, KB_##K5A, KB_##K5B, KB_NO, KB_##K5D, KB_NO, KB_NO }, \ | 65 | { KB_##K58, KB_##K59, KB_##K5A, KB_##K5B, KB_NO, KB_##K5D, KB_NO, KB_##K5F }, \ |
| 63 | { KB_NO, KB_NO, KB_NO, KB_NO, KB_NO, KB_NO, KB_##K66, KB_NO }, \ | 66 | { KB_NO, KB_##K61, KB_NO, KB_NO, KB_##K64, KB_NO, KB_##K66, KB_##K67 }, \ |
| 64 | { KB_NO, KB_##K69, KB_NO, KB_##K6B, KB_##K6C, KB_NO, KB_NO, KB_NO }, \ | 67 | { KB_NO, KB_##K69, KB_##K6A, KB_##K6B, KB_##K6C, KB_NO, KB_NO, KB_NO }, \ |
| 65 | { KB_##K70, KB_##K71, KB_##K72, KB_##K73, KB_##K74, KB_##K75, KB_##K76, KB_##K77 }, \ | 68 | { KB_##K70, KB_##K71, KB_##K72, KB_##K73, KB_##K74, KB_##K75, KB_##K76, KB_##K77 }, \ |
| 66 | { KB_##K78, KB_##K79, KB_##K7A, KB_##K7B, KB_##K7C, KB_##K7D, KB_##K7E, KB_NO }, \ | 69 | { KB_##K78, KB_##K79, KB_##K7A, KB_##K7B, KB_##K7C, KB_##K7D, KB_##K7E, KB_NO }, \ |
| 67 | { KB_NO, KB_NO, KB_NO, KB_##K83, KB_NO, KB_NO, KB_NO, KB_NO }, \ | 70 | { KB_NO, KB_NO, KB_NO, KB_##K83, KB_NO, KB_NO, KB_NO, KB_NO }, \ |
| @@ -82,6 +85,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 82 | { KB_NO, KB_NO, KB_##KFA, KB_NO, KB_##KFC, KB_##KFD, KB_##KFE, KB_NO }, \ | 85 | { KB_NO, KB_NO, KB_##KFA, KB_NO, KB_##KFC, KB_##KFD, KB_##KFE, KB_NO }, \ |
| 83 | } | 86 | } |
| 84 | 87 | ||
| 88 | /* US layout */ | ||
| 85 | #define KEYMAP( \ | 89 | #define KEYMAP( \ |
| 86 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ | 90 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ |
| 87 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ | 91 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ |
| @@ -98,6 +102,65 @@ KEYMAP_ALL( \ | |||
| 98 | K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \ | 102 | K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \ |
| 99 | K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \ | 103 | K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \ |
| 100 | \ | 104 | \ |
| 105 | NUBS, \ | ||
| 106 | RO, KANA, JYEN, HENK, MHEN, \ | ||
| 107 | F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, \ | ||
| 108 | SYSTEM_POWER, SYSTEM_SLEEP, SYSTEM_WAKE, \ | ||
| 109 | AUDIO_MUTE, AUDIO_VOL_UP, AUDIO_VOL_DOWN, \ | ||
| 110 | MEDIA_NEXT_TRACK, MEDIA_PREV_TRACK, MEDIA_STOP, MEDIA_PLAY_PAUSE, MEDIA_SELECT, \ | ||
| 111 | MAIL, CALCULATOR, MY_COMPUTER, \ | ||
| 112 | WWW_SEARCH, WWW_HOME, WWW_BACK, WWW_FORWARD, \ | ||
| 113 | WWW_STOP, WWW_REFRESH, WWW_FAVORITES \ | ||
| 114 | ) | ||
| 115 | |||
| 116 | /* ISO layout */ | ||
| 117 | #define KEYMAP_ISO( \ | ||
| 118 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ | ||
| 119 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ | ||
| 120 | K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, KF1,KE9,KFA, K6C,K75,K7D, \ | ||
| 121 | K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52,K5D,K5A, K6B,K73,K74,K79, \ | ||
| 122 | K12,K61,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \ | ||
| 123 | K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA \ | ||
| 124 | ) \ | ||
| 125 | KEYMAP_ALL( \ | ||
| 126 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ | ||
| 127 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ | ||
| 128 | K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5D, KF1,KE9,KFA, K6C,K75,K7D, \ | ||
| 129 | K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K79, \ | ||
| 130 | K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \ | ||
| 131 | K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \ | ||
| 132 | \ | ||
| 133 | K61, \ | ||
| 134 | RO, KANA, JYEN, HENK, MHEN, \ | ||
| 135 | F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, \ | ||
| 136 | SYSTEM_POWER, SYSTEM_SLEEP, SYSTEM_WAKE, \ | ||
| 137 | AUDIO_MUTE, AUDIO_VOL_UP, AUDIO_VOL_DOWN, \ | ||
| 138 | MEDIA_NEXT_TRACK, MEDIA_PREV_TRACK, MEDIA_STOP, MEDIA_PLAY_PAUSE, MEDIA_SELECT, \ | ||
| 139 | MAIL, CALCULATOR, MY_COMPUTER, \ | ||
| 140 | WWW_SEARCH, WWW_HOME, WWW_BACK, WWW_FORWARD, \ | ||
| 141 | WWW_STOP, WWW_REFRESH, WWW_FAVORITES \ | ||
| 142 | ) | ||
| 143 | |||
| 144 | /* JIS layout */ | ||
| 145 | #define KEYMAP_JIS( \ | ||
| 146 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ | ||
| 147 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K6A,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ | ||
| 148 | K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, KF1,KE9,KFA, K6C,K75,K7D, \ | ||
| 149 | K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52,K5D, K5A, K6B,K73,K74,K79, \ | ||
| 150 | K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A,K51, K59, KF5, K69,K72,K7A, \ | ||
| 151 | K14,K9F,K11, K67,K29,K64,K13, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA \ | ||
| 152 | ) \ | ||
| 153 | KEYMAP_ALL( \ | ||
| 154 | K76,K05,K06,K04,K0C,K03,K0B,K83,K0A,K01,K09,K78,K07, KFC,K7E,KFE, \ | ||
| 155 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, KF0,KEC,KFD, K77,KCA,K7C,K7B, \ | ||
| 156 | K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5D, KF1,KE9,KFA, K6C,K75,K7D, \ | ||
| 157 | K58,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K79, \ | ||
| 158 | K12,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, KF5, K69,K72,K7A, \ | ||
| 159 | K14,K9F,K11, K29, K91,KA7,KAF,K94, KEB,KF2,KF4, K70, K71,KDA, \ | ||
| 160 | \ | ||
| 161 | NUBS, \ | ||
| 162 | K51, K13, K6A, K64, K67, \ | ||
| 163 | F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, \ | ||
| 101 | SYSTEM_POWER, SYSTEM_SLEEP, SYSTEM_WAKE, \ | 164 | SYSTEM_POWER, SYSTEM_SLEEP, SYSTEM_WAKE, \ |
| 102 | AUDIO_MUTE, AUDIO_VOL_UP, AUDIO_VOL_DOWN, \ | 165 | AUDIO_MUTE, AUDIO_VOL_UP, AUDIO_VOL_DOWN, \ |
| 103 | MEDIA_NEXT_TRACK, MEDIA_PREV_TRACK, MEDIA_STOP, MEDIA_PLAY_PAUSE, MEDIA_SELECT, \ | 166 | MEDIA_NEXT_TRACK, MEDIA_PREV_TRACK, MEDIA_STOP, MEDIA_PLAY_PAUSE, MEDIA_SELECT, \ |
| @@ -111,7 +174,7 @@ KEYMAP_ALL( \ | |||
| 111 | static const uint8_t PROGMEM fn_layer[] = { | 174 | static const uint8_t PROGMEM fn_layer[] = { |
| 112 | 5, // Fn0 | 175 | 5, // Fn0 |
| 113 | 6, // Fn1 | 176 | 6, // Fn1 |
| 114 | 5, // Fn2 | 177 | 0, // Fn2 |
| 115 | 0, // Fn3 | 178 | 0, // Fn3 |
| 116 | 0, // Fn4 | 179 | 0, // Fn4 |
| 117 | 0, // Fn5 | 180 | 0, // Fn5 |
| @@ -132,6 +195,10 @@ static const uint8_t PROGMEM fn_keycode[] = { | |||
| 132 | KB_NO // Fn7 | 195 | KB_NO // Fn7 |
| 133 | }; | 196 | }; |
| 134 | 197 | ||
| 198 | |||
| 199 | // The keymap is a 32*8 byte array which convert a PS/2 scan code into a USB keycode. | ||
| 200 | // See usb_keycodes.h for USB keycodes. You should omit a 'KB_' prefix of USB keycodes in keymap macro. | ||
| 201 | // Use KEYMAP_ISO() or KEYMAP_JIS() instead of KEYMAP() if your keyboard is ISO or JIS. | ||
| 135 | static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 202 | static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 136 | /* keymap | 203 | /* keymap |
| 137 | * ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,-----------. | 204 | * ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,-----------. |
| @@ -223,7 +290,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 223 | 290 | ||
| 224 | uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) | 291 | uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col) |
| 225 | { | 292 | { |
| 226 | return KEYCODE(layer, row, col); | 293 | return pgm_read_byte(&keymaps[(layer)][(row)][(col)]); |
| 227 | } | 294 | } |
| 228 | 295 | ||
| 229 | uint8_t keymap_fn_layer(uint8_t fn_bits) | 296 | uint8_t keymap_fn_layer(uint8_t fn_bits) |
