2011-07-20 15:32:52 +00:00
/*
Copyright 2011 Jun Wako < wakojun @ gmail . com >
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/>.
*/
2010-08-23 03:53:00 +00:00
/*
2010-10-27 11:51:45 +00:00
* Keymap for Macway mod
2010-08-22 14:58:37 +00:00
*/
2010-10-27 11:51:45 +00:00
# include <stdint.h>
2010-10-14 08:36:00 +00:00
# include <stdbool.h>
2010-08-23 03:53:00 +00:00
# include <avr/pgmspace.h>
2012-10-17 12:43:44 +00:00
# include "keycode.h"
2010-10-27 11:51:45 +00:00
# include "print.h"
# include "debug.h"
# include "util.h"
2011-02-21 14:46:08 +00:00
# include "keymap.h"
2010-08-23 03:53:00 +00:00
2010-10-27 11:51:45 +00:00
2011-01-06 06:18:55 +00:00
// Convert physical keyboard layout to matrix array.
// This is a macro to define keymap easily in keyboard layout form.
2010-10-27 11:51:45 +00:00
# define KEYMAP( \
2012-03-03 15:58:37 +00:00
K11 , K10 , K20 , K30 , K40 , K41 , K51 , K50 , K60 , K70 , K80 , K81 , K61 , K02 , \
2012-06-15 07:14:56 +00:00
K12 , K13 , K23 , K33 , K43 , K42 , K52 , K53 , K63 , K73 , K83 , K82 , K62 , K01 , \
2012-03-03 15:58:37 +00:00
K15 , K14 , K24 , K34 , K44 , K45 , K55 , K54 , K64 , K74 , K84 , K85 , K06 , \
K67 , K16 , K26 , K36 , K46 , K47 , K57 , K56 , K66 , K76 , K87 , K32 , K35 , \
K75 , K22 , K00 , K07 , K21 , K04 , K37 , K27 , K17 \
2010-10-27 11:51:45 +00:00
) { \
2012-10-17 12:43:44 +00:00
{ KC_ # # K00 , KC_ # # K01 , KC_ # # K02 , KC_NO , KC_ # # K04 , KC_NO , KC_ # # K06 , KC_ # # K07 } , \
{ KC_ # # K10 , KC_ # # K11 , KC_ # # K12 , KC_ # # K13 , KC_ # # K14 , KC_ # # K15 , KC_ # # K16 , KC_ # # K17 } , \
{ KC_ # # K20 , KC_ # # K21 , KC_ # # K22 , KC_ # # K23 , KC_ # # K24 , KC_NO , KC_ # # K26 , KC_ # # K27 } , \
{ KC_ # # K30 , KC_NO , KC_ # # K32 , KC_ # # K33 , KC_ # # K34 , KC_ # # K35 , KC_ # # K36 , KC_ # # K37 } , \
{ KC_ # # K40 , KC_ # # K41 , KC_ # # K42 , KC_ # # K43 , KC_ # # K44 , KC_ # # K45 , KC_ # # K46 , KC_ # # K47 } , \
{ KC_ # # K50 , KC_ # # K51 , KC_ # # K52 , KC_ # # K53 , KC_ # # K54 , KC_ # # K55 , KC_ # # K56 , KC_ # # K57 } , \
{ KC_ # # K60 , KC_ # # K61 , KC_ # # K62 , KC_ # # K63 , KC_ # # K64 , KC_NO , KC_ # # K66 , KC_ # # K67 } , \
{ KC_ # # K70 , KC_NO , KC_NO , KC_ # # K73 , KC_ # # K74 , KC_ # # K75 , KC_ # # K76 , KC_NO } , \
{ KC_ # # K80 , KC_ # # K81 , KC_ # # K82 , KC_ # # K83 , KC_ # # K84 , KC_ # # K85 , KC_NO , KC_ # # K87 } \
2010-10-27 11:51:45 +00:00
}
2010-10-29 06:17:18 +00:00
# define KEYCODE(layer, row, col) (pgm_read_byte(&keymaps[(layer)][(row)][(col)]))
2010-10-27 11:51:45 +00:00
2011-01-06 06:18:55 +00:00
// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
static const uint8_t PROGMEM fn_layer [ ] = {
2011-01-13 07:39:49 +00:00
0 , // Fn0
1 , // Fn1
2 , // Fn2
3 , // Fn3
4 , // Fn4
0 , // Fn5
2012-06-28 14:05:21 +00:00
3 , // Fn6
2011-01-13 07:39:49 +00:00
3 // Fn7
2011-01-06 06:18:55 +00:00
} ;
2010-10-27 11:51:45 +00:00
2011-01-06 06:18:55 +00:00
// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.
// See layer.c for details.
2010-10-27 11:51:45 +00:00
static const uint8_t PROGMEM fn_keycode [ ] = {
2012-10-17 12:43:44 +00:00
KC_NO , // Fn0
KC_NO , // Fn1
KC_SLSH , // Fn2
KC_SCLN , // Fn3
KC_SPC , // Fn4
KC_NO , // Fn5
KC_NO , // Fn6
KC_NO // Fn7
2010-08-22 14:58:37 +00:00
} ;
2010-10-27 11:51:45 +00:00
static const uint8_t PROGMEM keymaps [ ] [ MATRIX_ROWS ] [ MATRIX_COLS ] = {
/* Layer 0: Default Layer
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backsp |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' |
2011-01-02 14:52:13 +00:00
* | Contro | A | S | D | F | G | H | J | K | L | Fn3 | ' | Return |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn1 |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2011-01-02 14:52:13 +00:00
* | Fn7 | Gui | Alt | Fn4 | Alt | Gui | Fn6 | Fn6 | Ctr |
2010-10-27 11:51:45 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
*/
2012-03-03 15:58:37 +00:00
KEYMAP ( ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , MINS , EQL , BSPC , \
2012-06-15 07:14:56 +00:00
TAB , Q , W , E , R , T , Y , U , I , O , P , LBRC , RBRC , BSLS , \
2012-03-03 15:58:37 +00:00
LCTL , A , S , D , F , G , H , J , K , L , FN3 , QUOT , ENT , \
LSFT , Z , X , C , V , B , N , M , COMM , DOT , FN2 , RSFT , FN1 , \
2012-06-28 14:05:21 +00:00
FN7 , LGUI , LALT , FN4 , RALT , GRV , FN6 , FN6 , RCTL ) ,
2010-08-23 06:46:24 +00:00
2010-10-29 06:17:18 +00:00
2010-10-27 11:51:45 +00:00
/* Layer 1: HHKB mode (HHKB Fn)
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
2011-01-02 14:52:13 +00:00
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Caps | | | | | | | | Psc | Slk | Pus | Up | | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' |
2011-01-02 14:52:13 +00:00
* | Contro | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Shift | | | | | | + | - | End | PgD | Dow | Shift | xxx |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2011-01-02 14:52:13 +00:00
* | | Gui | Alt | | Alt | Gui | | | Ctr |
2010-10-27 11:51:45 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
*/
2012-06-28 14:05:21 +00:00
KEYMAP ( PWR , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10 , F11 , F12 , DEL , \
2012-07-08 15:11:26 +00:00
CAPS , NO , NO , NO , NO , NO , NO , NO , PSCR , SLCK , BRK , UP , INS , NLCK , \
2012-03-03 15:58:37 +00:00
LCTL , VOLD , VOLU , MUTE , NO , NO , PAST , PSLS , HOME , PGUP , LEFT , RGHT , ENT , \
LSFT , NO , NO , NO , NO , NO , PPLS , PMNS , END , PGDN , DOWN , RSFT , FN1 , \
NO , LGUI , LALT , SPC , RALT , NO , NO , NO , RCTL ) ,
2010-10-27 11:51:45 +00:00
2010-10-29 06:17:18 +00:00
2010-10-27 11:51:45 +00:00
/* Layer 2: Vi mode (Quote/Rmeta)
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | ` |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | \ | Hom | PgD | Up | PgU | End | Hom | PgD | PgU | End | | | | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' |
2011-01-02 14:52:13 +00:00
* | Contro | | Lef | Dow | Rig | | Lef | Dow | Up | Rig | | | \ |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2011-01-02 14:52:13 +00:00
* | Shift | | | | | | Hom | PgD | PgU | End | xxx | Shift | |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2011-01-02 14:52:13 +00:00
* | | Gui | Alt | Space | Alt | Gui | Fn6 | Fn6 | Ctr |
2010-10-27 11:51:45 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
*/
2012-03-03 15:58:37 +00:00
KEYMAP ( GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10 , F11 , F12 , GRV , \
2012-06-15 07:14:56 +00:00
BSLS , HOME , PGDN , UP , PGUP , END , HOME , PGDN , PGUP , END , NO , NO , NO , NO , \
2012-03-03 15:58:37 +00:00
LCTL , NO , LEFT , DOWN , RGHT , NO , LEFT , DOWN , UP , RGHT , NO , NO , BSLS , \
LSFT , NO , NO , NO , NO , NO , HOME , PGDN , PGUP , END , FN2 , RSFT , NO , \
NO , LGUI , LALT , SPC , RALT , RGUI , FN6 , FN6 , RCTL ) ,
2010-10-27 11:51:45 +00:00
2010-10-29 06:17:18 +00:00
2010-10-27 11:51:45 +00:00
/* Layer 3: Mouse mode (Semicolon)
2011-01-02 14:52:13 +00:00
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | ` |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2011-01-02 14:52:13 +00:00
* | \ | MwL | MwD | McU | MwU | MwR | MwL | MwD | MwU | MwR | | | | |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' |
2011-01-02 14:52:13 +00:00
* | Contro | | McL | McD | McR | | McL | McD | McU | McR | xxx | | \ |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2010-11-03 08:33:20 +00:00
* | Shift | | | Mb1 | Mb2 | Mb3 | Mb2 | Mb1 | | | | Shift | |
2010-10-27 11:51:45 +00:00
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | xxx | Gui | Alt | Mb1 | Alt | | | | |
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
* Mc : Mouse Cursor / Mb : Mouse Button / Mw : Mouse Wheel
*/
2012-03-03 15:58:37 +00:00
KEYMAP ( GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10 , F11 , F12 , GRV , \
2012-06-15 07:14:56 +00:00
BSLS , WH_L , WH_D , MS_U , WH_U , WH_R , WH_L , WH_D , WH_U , WH_R , NO , NO , NO , NO , \
2012-03-03 15:58:37 +00:00
LCTL , NO , MS_L , MS_D , MS_R , NO , MS_L , MS_D , MS_U , MS_R , FN3 , NO , BSLS , \
LSFT , NO , NO , BTN1 , BTN2 , BTN3 , BTN2 , BTN1 , NO , NO , NO , RSFT , NO , \
2012-06-28 14:05:21 +00:00
FN7 , LGUI , LALT , BTN1 , RALT , NO , FN6 , FN6 , NO ) ,
2010-10-27 11:51:45 +00:00
2010-10-29 06:17:18 +00:00
2010-10-27 11:51:45 +00:00
/* Layer 4: Matias half keyboard style (Space)
* , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Backs | P | O | I | U | Y | T | R | E | W | Q | Tab | Tab | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' |
* | Contro | ; | L | K | J | H | G | F | D | S | A | Con | Control |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
* | Shift | / | . | , | M | N | B | V | C | X | Z | Shift | |
* | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
2011-01-02 14:52:13 +00:00
* | | Gui | Alt | xxxxxxxxxxxxxxxxxxxxxx | Alt | Gui | | | Ctr |
2010-10-27 11:51:45 +00:00
* ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '
*/
2012-03-03 15:58:37 +00:00
KEYMAP ( MINS , 0 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , NO , NO , ESC , \
2012-06-15 07:14:56 +00:00
BSPC , P , O , I , U , Y , T , R , E , W , Q , TAB , TAB , TAB , \
2012-03-03 15:58:37 +00:00
LCTL , SCLN , L , K , J , H , G , F , D , S , A , RCTL , RCTL , \
LSFT , SLSH , DOT , COMM , M , N , B , V , C , X , Z , RSFT , NO , \
NO , LGUI , LALT , FN4 , RALT , RGUI , NO , NO , RCTL ) ,
2010-10-27 11:51:45 +00:00
} ;
2010-10-29 06:17:18 +00:00
uint8_t keymap_get_keycode ( uint8_t layer , uint8_t row , uint8_t col )
2010-08-22 14:58:37 +00:00
{
2010-10-29 06:17:18 +00:00
return KEYCODE ( layer , row , col ) ;
2010-09-16 12:05:15 +00:00
}
2012-10-19 06:33:02 +00:00
uint8_t keymap_fn_layer ( uint8_t index )
2010-10-27 11:51:45 +00:00
{
2012-10-19 06:33:02 +00:00
return pgm_read_byte ( & fn_layer [ index ] ) ;
2010-10-27 11:51:45 +00:00
}
2012-10-19 06:33:02 +00:00
uint8_t keymap_fn_keycode ( uint8_t index )
2010-10-27 11:51:45 +00:00
{
2012-10-19 06:33:02 +00:00
return pgm_read_byte ( & fn_keycode [ index ] ) ;
2010-10-27 11:51:45 +00:00
}