diff --git a/keyboard/hhkb/Makefile b/keyboard/hhkb/Makefile index 8e15df19..1146d5ec 100644 --- a/keyboard/hhkb/Makefile +++ b/keyboard/hhkb/Makefile @@ -118,6 +118,9 @@ COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # USB Nkey Rollover #KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor #HHKB_JP = yes # HHKB JP support +#UNIMAP_ENABLE = yes +#ACTIONMAP_ENABLE = yes # Use 16bit actionmap instead of 8bit keymap +#KEYMAP_SECTION_ENABLE = yes # fixed address keymap for keymap editor #OPT_DEFS += -DNO_ACTION_TAPPING #OPT_DEFS += -DNO_ACTION_LAYER @@ -127,13 +130,22 @@ NKRO_ENABLE = yes # USB Nkey Rollover # # Keymap file # +ifdef UNIMAP_ENABLE + KEYMAP_FILE = unimap +else + ifdef ACTIONMAP_ENABLE + KEYMAP_FILE = actionmap + else + KEYMAP_FILE = keymap + endif +endif ifdef KEYMAP - SRC := keymap_$(KEYMAP).c $(SRC) + SRC := $(KEYMAP_FILE)_$(KEYMAP).c $(SRC) else ifdef HHKB_JP - SRC := keymap_jp.c $(SRC) + SRC := $(KEYMAP_FILE)_jp.c $(SRC) else - SRC := keymap_hhkb.c $(SRC) + SRC := $(KEYMAP_FILE)_hhkb.c $(SRC) endif endif diff --git a/keyboard/hhkb/Makefile.unimap.jp b/keyboard/hhkb/Makefile.unimap.jp new file mode 100644 index 00000000..3c41b25c --- /dev/null +++ b/keyboard/hhkb/Makefile.unimap.jp @@ -0,0 +1,4 @@ +HHKB_JP = yes +UNIMAP_ENABLE = yes +KEYMAP_SECTION_ENABLE = yes +include Makefile diff --git a/keyboard/hhkb/unimap_common.h b/keyboard/hhkb/unimap_common.h new file mode 100644 index 00000000..905c116f --- /dev/null +++ b/keyboard/hhkb/unimap_common.h @@ -0,0 +1,222 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#ifndef UNIMAP_COMMON_H +#define UNIMAP_COMMON_H + +#include +#include +#include "unimap.h" + + +/* HHKB JP + * ,-----------------------------------------------------------. + * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |JPY|BS | + * |-----------------------------------------------------------| + * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ |] |Enter| + * |------------------------------------------------------` | + * |Caps |A |S |D |F |G |H |J |K |L |; |' |# | | + * |-----------------------------------------------------------| + * |Shift |Z |X |C |V |B |N |M |, |. |/ |Ro |Up |Shi| + * |-----------------------------------------------------------| + * |Ctl||Esc|Gui|Alt|Mhn| |Hen|Kan|Alt|Ctl||Lef|Dow|Rig| + * `-----------------------------------------------------------' + * Esc = Grave(`) + * Control = Caps Lock + * Left Fn = Left Control + * Right Fn = Right Control + */ +// row:16 x col:8 +const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = { + // 0 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_GRAVE, + UNIMAP_TAB, + UNIMAP_LCTRL, + UNIMAP_LSHIFT, + UNIMAP_CAPSLOCK, + UNIMAP_NO, + }, + // 1 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_4, + UNIMAP_E, + UNIMAP_MHEN, + UNIMAP_C, + UNIMAP_D, + UNIMAP_NO, + }, + // 2 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_3, + UNIMAP_W, + UNIMAP_LALT, + UNIMAP_X, + UNIMAP_S, + UNIMAP_NO, + }, + // 3 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_1, + UNIMAP_NO, + UNIMAP_ESCAPE, + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_NO, + }, + // 4 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_NO, + }, + // 5 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_5, + UNIMAP_R, + UNIMAP_NO, + UNIMAP_V, + UNIMAP_F, + UNIMAP_NO, + }, + // 6 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_2, + UNIMAP_Q, + UNIMAP_LGUI, + UNIMAP_Z, + UNIMAP_A, + UNIMAP_NO, + }, + // 7 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_6, + UNIMAP_T, + UNIMAP_SPACE, + UNIMAP_B, + UNIMAP_G, + UNIMAP_NO, + }, + // 8 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_9, + UNIMAP_I, + UNIMAP_KANA, + UNIMAP_COMMA, + UNIMAP_K, + UNIMAP_NO, + }, + // 9 + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_8, + UNIMAP_U, + UNIMAP_HENK, + UNIMAP_M, + UNIMAP_J, + UNIMAP_NO, + }, + // A + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_7, + UNIMAP_Y, + UNIMAP_NO, + UNIMAP_N, + UNIMAP_H, + UNIMAP_NO, + }, + // B + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_0, + UNIMAP_O, + UNIMAP_RALT, + UNIMAP_DOT, + UNIMAP_L, + UNIMAP_NO, + }, + // C + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_BSPACE, + UNIMAP_NO, + UNIMAP_RIGHT, + UNIMAP_RSHIFT, + UNIMAP_ENTER, + UNIMAP_NO, + }, + // D + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_JYEN, + UNIMAP_RBRACKET, + UNIMAP_DOWN, + UNIMAP_UP, + UNIMAP_NONUS_HASH, + UNIMAP_NO, + }, + // E + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_MINUS, + UNIMAP_P, + UNIMAP_RCTRL, + UNIMAP_SLASH, + UNIMAP_SCOLON, + UNIMAP_NO, + }, + // F + { + UNIMAP_NO, + UNIMAP_NO, + UNIMAP_EQUAL, + UNIMAP_LBRACKET, + UNIMAP_LEFT, + UNIMAP_RO, + UNIMAP_QUOTE, + UNIMAP_NO, + }, +}; + +#endif diff --git a/keyboard/hhkb/unimap_jp.c b/keyboard/hhkb/unimap_jp.c new file mode 100644 index 00000000..70e6b0cd --- /dev/null +++ b/keyboard/hhkb/unimap_jp.c @@ -0,0 +1,45 @@ +/* +Copyright 2016 Jun Wako + +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 . +*/ +#include "unimap_common.h" + + +#define AC_FN0 ACTION_LAYER_MOMENTARY(1) + +#ifdef KEYMAP_SECTION_ENABLE +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = { +#else +const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = { +#endif + UNIMAP( + NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + ZKHK, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, NO, NO, NO, NO, NO, NO, NO, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, NO, NO, NO, NO, NO, NO, NO, + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, NO, NO, NO, NO, + LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, UP, NO, NO, NO, NO, + FN0, LGUI,LALT,MHEN, SPC, HENK,KANA,RALT,NO, NO, FN0, LEFT,DOWN,RGHT, NO, NO, NO + ), + UNIMAP( + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, + TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS, + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS, TRNS, TRNS,TRNS,TRNS, TRNS,TRNS,TRNS,TRNS, + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, TRNS,PENT, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, PGUP, TRNS,TRNS,TRNS,TRNS, + TRNS,TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, HOME,PGDN,END, TRNS, TRNS,TRNS + ), +};