2012-12-26 17:41:32 +00:00
/*
2013-02-12 08:08:51 +00:00
Copyright 2012 , 2013 Jun Wako < wakojun @ gmail . com >
2012-12-26 17:41:32 +00:00
This program is free software : you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation , either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# include <stdint.h>
# include <stdbool.h>
# include <avr/pgmspace.h>
# include "keycode.h"
2013-02-12 08:08:51 +00:00
# include "action.h"
# include "action_macro.h"
# include "report.h"
# include "host.h"
2012-12-26 17:41:32 +00:00
# include "print.h"
# include "debug.h"
# include "keymap.h"
2013-11-21 04:08:32 +00:00
# include "keymap_ex.h"
2012-12-26 17:41:32 +00:00
2013-02-11 04:56:05 +00:00
/* GH60 keymap definition macro
2012-12-27 07:06:13 +00:00
* K2C , K31 and K3C are extra keys for ISO
*/
2012-12-26 17:41:32 +00:00
# define KEYMAP( \
K00 , K01 , K02 , K03 , K04 , K05 , K06 , K07 , K08 , K09 , K0A , K0B , K0C , K0D , \
K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 , K18 , K19 , K1A , K1B , K1C , K1D , \
K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 , K28 , K29 , K2A , K2B , K2C , K2D , \
K30 , K31 , K32 , K33 , K34 , K35 , K36 , K37 , K38 , K39 , K3A , K3B , K3C , K3D , \
2013-11-21 04:08:32 +00:00
K40 , K41 , K42 , K45 , K49 , K4A , K4B , K4C , K4D \
2012-12-26 17:41:32 +00:00
) { \
{ KC_ # # K00 , KC_ # # K01 , KC_ # # K02 , KC_ # # K03 , KC_ # # K04 , KC_ # # K05 , KC_ # # K06 , KC_ # # K07 , KC_ # # K08 , KC_ # # K09 , KC_ # # K0A , KC_ # # K0B , KC_ # # K0C , KC_ # # K0D } , \
{ KC_ # # K10 , KC_ # # K11 , KC_ # # K12 , KC_ # # K13 , KC_ # # K14 , KC_ # # K15 , KC_ # # K16 , KC_ # # K17 , KC_ # # K18 , KC_ # # K19 , KC_ # # K1A , KC_ # # K1B , KC_ # # K1C , KC_ # # K1D } , \
{ KC_ # # K20 , KC_ # # K21 , KC_ # # K22 , KC_ # # K23 , KC_ # # K24 , KC_ # # K25 , KC_ # # K26 , KC_ # # K27 , KC_ # # K28 , KC_ # # K29 , KC_ # # K2A , KC_ # # K2B , KC_ # # K2C , KC_ # # K2D } , \
{ KC_ # # K30 , KC_ # # K31 , KC_ # # K32 , KC_ # # K33 , KC_ # # K34 , KC_ # # K35 , KC_ # # K36 , KC_ # # K37 , KC_ # # K38 , KC_ # # K39 , KC_ # # K3A , KC_ # # K3B , KC_ # # K3C , KC_ # # K3D } , \
2013-11-21 04:08:32 +00:00
{ KC_ # # K40 , KC_ # # K41 , KC_ # # K42 , KC_NO , KC_NO , KC_ # # K45 , KC_NO , KC_NO , KC_NO , KC_ # # K49 , KC_ # # K4A , KC_ # # K4B , KC_ # # K4C , KC_ # # K4D } \
2012-12-26 17:41:32 +00:00
}
2012-12-27 07:06:13 +00:00
/* ANSI valiant. No extra keys for ISO */
# define KEYMAP_ANSI( \
K00 , K01 , K02 , K03 , K04 , K05 , K06 , K07 , K08 , K09 , K0A , K0B , K0C , K0D , \
K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 , K18 , K19 , K1A , K1B , K1C , K1D , \
K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 , K28 , K29 , K2A , K2B , K2D , \
K30 , K32 , K33 , K34 , K35 , K36 , K37 , K38 , K39 , K3A , K3B , K3D , \
K40 , K41 , K42 , K45 , K4A , K4B , K4C , K4D \
2013-02-11 04:56:05 +00:00
) KEYMAP ( \
2012-12-27 07:06:13 +00:00
K00 , K01 , K02 , K03 , K04 , K05 , K06 , K07 , K08 , K09 , K0A , K0B , K0C , K0D , \
K10 , K11 , K12 , K13 , K14 , K15 , K16 , K17 , K18 , K19 , K1A , K1B , K1C , K1D , \
K20 , K21 , K22 , K23 , K24 , K25 , K26 , K27 , K28 , K29 , K2A , K2B , NO , K2D , \
K30 , NO , K32 , K33 , K34 , K35 , K36 , K37 , K38 , K39 , K3A , K3B , NO , K3D , \
2013-11-21 04:08:32 +00:00
K40 , K41 , K42 , K45 , NO , K4A , K4B , K4C , K4D \
2012-12-27 07:06:13 +00:00
)
2012-12-26 17:41:32 +00:00
2013-02-12 08:08:51 +00:00
# if defined(KEYMAP_PLAIN)
# include "keymap_plain.h"
# elif defined(KEYMAP_POKER)
# include "keymap_poker.h"
2013-02-15 17:58:19 +00:00
# elif defined(KEYMAP_POKER_SET)
# include "keymap_poker_set.h"
# elif defined(KEYMAP_POKER_BIT)
# include "keymap_poker_bit.h"
2013-11-21 04:08:32 +00:00
# elif defined(KEYMAP_POKER2)
# include "keymap_poker2.h"
2013-02-12 08:08:51 +00:00
# else
2012-12-26 17:41:32 +00:00
static const uint8_t PROGMEM keymaps [ ] [ MATRIX_ROWS ] [ MATRIX_COLS ] = {
2013-02-12 08:08:51 +00:00
/*
* Funky
2012-12-26 17:41:32 +00:00
*/
2013-02-20 01:40:07 +00:00
/* Keymap 0: Default Layer
2012-12-26 17:41:32 +00:00
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
2012-12-27 07:06:13 +00:00
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backsp |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-27 07:06:13 +00:00
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Caps | A | S | D | F | G | H | J | K | L | Fn3 | ' | Return |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-27 07:06:13 +00:00
* | Shift | Z | X | C | V | B | N | M | , | . | Fn2 | Shift |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-31 18:19:34 +00:00
* | Ctrl | Gui | Alt | Space | Alt | Fn4 | Fn4 | Fn1 |
2012-12-26 17:41:32 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
2012-12-27 07:06:13 +00:00
*/
KEYMAP_ANSI (
ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , MINS , EQL , BSPC , \
TAB , Q , W , E , R , T , Y , U , I , O , P , LBRC , RBRC , BSLS , \
2013-02-21 01:15:08 +00:00
LCTL , A , S , D , F , G , H , J , K , L , FN2 , QUOT , ENT , \
2013-03-31 13:47:19 +00:00
LSFT , Z , X , C , V , B , N , M , COMM , DOT , FN1 , FN9 , \
2013-02-21 01:15:08 +00:00
LCTL , LGUI , LALT , SPC , RALT , FN3 , FN3 , FN0 ) ,
2013-02-20 01:40:07 +00:00
/* Keymap 1: colemak */
KEYMAP_ANSI (
GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , MINS , EQL , BSPC , \
TAB , Q , W , F , P , G , J , L , U , Y , SCLN , LBRC , RBRC , BSLS , \
BSPC , A , R , S , T , D , H , N , E , I , O , QUOT , ENT , \
LSFT , Z , X , C , V , B , K , M , COMM , DOT , SLSH , RSFT , \
2013-02-21 01:15:08 +00:00
LCTL , LGUI , LALT , SPC , RALT , RGUI , APP , FN0 ) ,
2013-02-20 01:40:07 +00:00
/* Keymap 2: dvorak */
KEYMAP_ANSI (
GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , LBRC , RBRC , BSPC , \
TAB , QUOT , COMM , DOT , P , Y , F , G , C , R , L , SLSH , EQL , BSLS , \
CAPS , A , O , E , U , I , D , H , T , N , S , MINS , ENT , \
LSFT , SCLN , Q , J , K , X , B , M , W , V , Z , RSFT , \
2013-02-21 01:15:08 +00:00
LCTL , LGUI , LALT , SPC , RALT , RGUI , APP , FN0 ) ,
2013-02-27 01:32:46 +00:00
/* Keymap 3: workman */
2013-02-20 01:40:07 +00:00
KEYMAP_ANSI (
GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , MINS , EQL , BSPC , \
TAB , Q , D , R , W , B , J , F , U , P , SCLN , LBRC , RBRC , BSLS , \
BSPC , A , S , H , T , G , Y , N , E , O , I , QUOT , ENT , \
LSFT , Z , X , M , C , V , K , L , COMM , DOT , SLSH , RSFT , \
2013-02-21 01:15:08 +00:00
LCTL , LGUI , LALT , SPC , RALT , RGUI , APP , FN0 ) ,
2013-02-20 01:40:07 +00:00
2013-02-27 01:32:46 +00:00
/* Overlay 4: HHKB mode
2012-12-26 17:41:32 +00:00
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
2012-12-27 07:06:13 +00:00
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-27 07:06:13 +00:00
* | Caps | | | | | | | | Psc | Slk | Pus | Up | | Inser |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Contro | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-27 07:06:13 +00:00
* | Shift | | | | | | + | - | End | PgD | Dow | Shift |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2013-02-21 01:15:08 +00:00
* | Ctrl | Gui | Alt | Space | Alt | Gui | App | |
2012-12-26 17:41:32 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
2013-02-11 04:56:05 +00:00
*/
2012-12-27 07:06:13 +00:00
KEYMAP_ANSI (
2013-02-27 01:32:46 +00:00
GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10 , F11 , F12 , DEL , \
2013-02-20 01:40:07 +00:00
CAPS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , PSCR , SLCK , PAUS , UP , TRNS , INS , \
LCTL , VOLD , VOLU , MUTE , TRNS , TRNS , PAST , PSLS , HOME , PGUP , LEFT , RGHT , ENT , \
LSFT , TRNS , TRNS , TRNS , TRNS , TRNS , PPLS , PMNS , END , PGDN , DOWN , RSFT , \
2013-02-27 01:32:46 +00:00
LCTL , LGUI , LALT , SPC , RALT , RGUI , FN4 , TRNS ) ,
/* Overlay 5: Vi mode (Slash)
2012-12-26 17:41:32 +00:00
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
2012-12-27 07:06:13 +00:00
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Backsp |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-27 07:06:13 +00:00
* | Tab | Hom | PgD | Up | PgU | End | Hom | PgD | PgU | End | | | | |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-27 07:06:13 +00:00
* | Contro | | Lef | Dow | Rig | | Lef | Dow | Up | Rig | | | Return |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2013-02-21 01:15:08 +00:00
* | Shift | | | | | | Hom | PgD | PgU | End | | Shift |
2012-12-27 07:06:13 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Ctrl | Gui | Alt | Space | Alt | Gui | App | Ctrl |
2012-12-26 17:41:32 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
*/
2012-12-27 07:06:13 +00:00
KEYMAP_ANSI (
GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10 , F11 , F12 , BSPC , \
2013-02-20 01:40:07 +00:00
TAB , HOME , PGDN , UP , PGUP , END , HOME , PGDN , PGUP , END , TRNS , TRNS , TRNS , TRNS , \
LCTL , TRNS , LEFT , DOWN , RGHT , TRNS , LEFT , DOWN , UP , RGHT , TRNS , TRNS , ENT , \
2013-02-21 01:15:08 +00:00
LSFT , TRNS , TRNS , TRNS , TRNS , TRNS , HOME , PGDN , PGUP , END , TRNS , RSFT , \
2012-12-27 07:06:13 +00:00
LCTL , LGUI , LALT , SPC , RALT , RGUI , APP , RCTL ) ,
2013-02-27 01:32:46 +00:00
/* Overlay 6: Mouse mode (Semicolon/App)
2012-12-26 17:41:32 +00:00
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
2012-12-27 07:06:13 +00:00
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Backsp |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-31 18:19:34 +00:00
* | Tab | | | | | | MwL | MwD | MwU | MwR | | | | |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2013-02-21 01:15:08 +00:00
* | Contro | | Ac0 | Ac1 | Ac1 | | McL | McD | McU | McR | | | Return |
2012-12-26 17:41:32 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2012-12-31 18:19:34 +00:00
* | Shift | | | | | Mb3 | Mb2 | Mb1 | Mb4 | Mb5 | | Shift |
2012-12-27 07:06:13 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2013-02-21 01:15:08 +00:00
* | Ctrl | Gui | Alt | Space | | | | |
2012-12-26 17:41:32 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
2013-02-11 04:56:05 +00:00
* Mc : Mouse Cursor / Mb : Mouse Button / Mw : Mouse Wheel
2012-12-26 17:41:32 +00:00
*/
2012-12-27 07:06:13 +00:00
KEYMAP_ANSI (
GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10 , F11 , F12 , BSPC , \
2013-02-20 01:40:07 +00:00
TAB , TRNS , TRNS , TRNS , TRNS , TRNS , WH_L , WH_D , WH_U , WH_R , TRNS , TRNS , TRNS , TRNS , \
2013-02-21 01:15:08 +00:00
LCTL , TRNS , ACL0 , ACL1 , ACL2 , TRNS , MS_L , MS_D , MS_U , MS_R , TRNS , TRNS , ENT , \
2013-02-20 01:40:07 +00:00
LSFT , TRNS , TRNS , TRNS , TRNS , BTN3 , BTN2 , BTN1 , BTN4 , BTN5 , TRNS , RSFT , \
2013-02-21 01:15:08 +00:00
LCTL , LGUI , LALT , BTN1 , TRNS , TRNS , TRNS , RCTL ) ,
2013-02-27 01:32:46 +00:00
/* Overlay 7: Layout selector
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | Lq | Lc | Ld | Lw | | | | | | | | | | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | | Lq | Lw | | | | | | | | | | | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | | | | Ld | | | | | | | | | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | | | | Lc | | | | | | | | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | | | | | | | | |
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* Lq : set Qwerty layout
* Lc : set Colemak layout
* Ld : set Dvorak layout
* Lw : set Workman layout
*/
KEYMAP_ANSI (
FN5 , FN6 , FN7 , FN8 , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , \
TRNS , FN5 , FN8 , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , \
TRNS , TRNS , TRNS , FN7 , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , \
TRNS , TRNS , TRNS , FN6 , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , \
TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS , TRNS ) ,
2012-12-26 17:41:32 +00:00
} ;
2013-02-12 08:08:51 +00:00
/*
* Fn action definition
*/
static const uint16_t PROGMEM fn_actions [ ] = {
2013-03-31 13:47:19 +00:00
[ 0 ] = ACTION_LAYER_MOMENTARY ( 4 ) ,
[ 1 ] = ACTION_LAYER_TAP_KEY ( 5 , KC_SLASH ) ,
[ 2 ] = ACTION_LAYER_TAP_KEY ( 6 , KC_SCLN ) ,
[ 3 ] = ACTION_LAYER_MOMENTARY ( 6 ) ,
[ 4 ] = ACTION_LAYER_MOMENTARY ( 7 ) , // to Layout selector
2013-03-04 17:42:28 +00:00
[ 5 ] = ACTION_DEFAULT_LAYER_SET ( 0 ) , // set qwerty layout
[ 6 ] = ACTION_DEFAULT_LAYER_SET ( 1 ) , // set colemak layout
[ 7 ] = ACTION_DEFAULT_LAYER_SET ( 2 ) , // set dvorak layout
[ 8 ] = ACTION_DEFAULT_LAYER_SET ( 3 ) , // set workman layout
2013-04-04 16:39:17 +00:00
[ 9 ] = ACTION_MODS_TAP_KEY ( MOD_RSFT , KC_GRV ) ,
2013-02-12 08:08:51 +00:00
} ;
# endif
2012-12-26 17:41:32 +00:00
2013-02-20 01:40:07 +00:00
# define KEYMAPS_SIZE (sizeof(keymaps) / sizeof(keymaps[0]))
# define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0]))
2013-11-21 04:08:32 +00:00
# ifdef KEYMAP_EX_ENABLE
const uint8_t * keymaps_pointer ( void ) {
return ( const uint8_t * ) keymaps ;
}
const uint16_t * fn_actions_pointer ( void ) {
return fn_actions ;
}
uint16_t keymaps_size ( void ) {
return KEYMAPS_SIZE * MATRIX_ROWS * MATRIX_COLS ;
}
uint16_t fn_actions_size ( void ) {
return FN_ACTIONS_SIZE ;
}
# endif
2013-02-13 02:20:47 +00:00
/* translates key to keycode */
uint8_t keymap_key_to_keycode ( uint8_t layer , key_t key )
{
2013-03-31 13:47:19 +00:00
if ( layer < KEYMAPS_SIZE ) {
2013-11-21 04:08:32 +00:00
# ifndef KEYMAP_EX_ENABLE
2013-03-31 13:47:19 +00:00
return pgm_read_byte ( & keymaps [ ( layer ) ] [ ( key . row ) ] [ ( key . col ) ] ) ;
2013-11-21 04:08:32 +00:00
# else
return eeconfig_read_keymap_key ( layer , key . row , key . col ) ;
# endif
2013-03-31 13:47:19 +00:00
} else {
// XXX: this may cuaes bootlaoder_jump inconsistent fail.
//debug("key_to_keycode: base "); debug_dec(layer); debug(" is invalid.\n");
// fall back to layer 0
2013-11-21 04:08:32 +00:00
# ifndef KEYMAP_EX_ENABLE
2013-03-31 13:47:19 +00:00
return pgm_read_byte ( & keymaps [ 0 ] [ ( key . row ) ] [ ( key . col ) ] ) ;
2013-11-21 04:08:32 +00:00
# else
return eeconfig_read_keymap_key ( 0 , key . row , key . col ) ;
# endif
2013-02-20 01:40:07 +00:00
}
2013-02-13 02:20:47 +00:00
}
2013-02-12 08:08:51 +00:00
2013-02-20 01:40:07 +00:00
/* translates Fn keycode to action */
2013-02-13 02:20:47 +00:00
action_t keymap_fn_to_action ( uint8_t keycode )
{
2013-02-12 08:08:51 +00:00
action_t action ;
2013-02-20 01:40:07 +00:00
if ( FN_INDEX ( keycode ) < FN_ACTIONS_SIZE ) {
2013-11-21 04:08:32 +00:00
# ifndef KEYMAP_EX_ENABLE
2013-02-13 02:20:47 +00:00
action . code = pgm_read_word ( & fn_actions [ FN_INDEX ( keycode ) ] ) ;
2013-11-21 04:08:32 +00:00
# else
action . code = eeconfig_read_keymap_fn_action ( FN_INDEX ( keycode ) ) ;
# endif
2013-02-13 02:20:47 +00:00
} else {
action . code = ACTION_NO ;
}
return action ;
}