diff options
Diffstat (limited to 'keyboard')
-rw-r--r-- | keyboard/gh60/Makefile (renamed from keyboard/gh60/Makefile.lufa) | 26 | ||||
-rw-r--r-- | keyboard/gh60/Makefile.pjrc | 8 | ||||
-rw-r--r-- | keyboard/gh60/README.md | 152 | ||||
-rw-r--r-- | keyboard/gh60/keymap_common.c | 30 | ||||
-rw-r--r-- | keyboard/gh60/keymap_common.h | 84 | ||||
-rw-r--r-- | keyboard/gh60/keymap_hasu.c (renamed from keyboard/gh60/keymap.c) | 110 | ||||
-rw-r--r-- | keyboard/gh60/keymap_hhkb.c | 52 | ||||
-rw-r--r-- | keyboard/gh60/keymap_plain.c (renamed from keyboard/gh60/keymap_plain.h) | 6 | ||||
-rw-r--r-- | keyboard/gh60/keymap_poker.c (renamed from keyboard/gh60/keymap_poker.h) | 6 | ||||
-rw-r--r-- | keyboard/gh60/keymap_poker_bit.c (renamed from keyboard/gh60/keymap_poker_bit.h) | 6 | ||||
-rw-r--r-- | keyboard/gh60/keymap_poker_set.c (renamed from keyboard/gh60/keymap_poker_set.h) | 6 | ||||
-rw-r--r-- | keyboard/gh60/keymap_spacefn.c | 55 | ||||
-rw-r--r-- | keyboard/gh60/matrix.c | 9 | ||||
-rw-r--r-- | keyboard/onekey/Makefile (renamed from keyboard/onekey/Makefile.lufa) | 33 | ||||
-rw-r--r-- | keyboard/onekey/Makefile.pjrc | 33 | ||||
-rw-r--r-- | keyboard/onekey/README.md | 2 | ||||
-rw-r--r-- | keyboard/onekey/config.h | 86 | ||||
-rw-r--r-- | keyboard/onekey/matrix.c | 19 |
18 files changed, 450 insertions, 273 deletions
diff --git a/keyboard/gh60/Makefile.lufa b/keyboard/gh60/Makefile index ad7d219e3e..fd202c1792 100644 --- a/keyboard/gh60/Makefile.lufa +++ b/keyboard/gh60/Makefile @@ -48,10 +48,16 @@ TOP_DIR = ../.. TARGET_DIR = . # project specific files -SRC = keymap.c \ +SRC = keymap_common.c \ matrix.c \ led.c +ifdef KEYMAP + SRC := keymap_$(KEYMAP).c $(SRC) +else + SRC := keymap_poker.c $(SRC) +endif + CONFIG_H = config.h @@ -93,7 +99,7 @@ ARCH = AVR8 F_USB = $(F_CPU) # Interrupt driven control endpoint task(+60) -#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Boot Section Size in *bytes* @@ -113,8 +119,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA # Optimize size but this may cause error "relocation truncated to fit" @@ -127,15 +133,3 @@ VPATH += $(TOP_DIR) include $(TOP_DIR)/protocol/lufa.mk include $(TOP_DIR)/common.mk include $(TOP_DIR)/rules.mk - -plain: OPT_DEFS += -DKEYMAP_PLAIN -plain: all - -poker: OPT_DEFS += -DKEYMAP_POKER -poker: all - -poker_set: OPT_DEFS += -DKEYMAP_POKER_SET -poker_set: all - -poker_bit: OPT_DEFS += -DKEYMAP_POKER_BIT -poker_bit: all diff --git a/keyboard/gh60/Makefile.pjrc b/keyboard/gh60/Makefile.pjrc index 0ea33ea304..9655ff65a9 100644 --- a/keyboard/gh60/Makefile.pjrc +++ b/keyboard/gh60/Makefile.pjrc @@ -48,10 +48,16 @@ TOP_DIR = ../.. TARGET_DIR = . # project specific files -SRC = keymap.c \ +SRC = keymap_common.c \ matrix.c \ led.c +ifdef KEYMAP + SRC := keymap_$(KEYMAP).c $(SRC) +else + SRC := keymap_poker.c $(SRC) +endif + CONFIG_H = config.h diff --git a/keyboard/gh60/README.md b/keyboard/gh60/README.md index 4dc4e5ee2e..5e0fc244fc 100644 --- a/keyboard/gh60/README.md +++ b/keyboard/gh60/README.md @@ -2,57 +2,40 @@ GH60 keyboard firmware ====================== DIY compact keyboard designed and run by komar007 and Geekhack community. -## Threads on Geekhack.org +- Both Rev.A and Rev.B PCB are supported by one firmware binary(issue #64) + +## GH60 Resources +- [KOMAR's project page](http://blog.komar.be/projects/gh60-programmable-keyboard/) - [Prototyping](http://geekhack.org/index.php?topic=34959.0) -- [Beta-test](http://geekhack.org/index.php?topic=37570.0) +- [Rev.A PCB test](http://geekhack.org/index.php?topic=37570.0) +- [Rev.B PCB test](http://geekhack.org/index.php?topic=50685.0) +- [Group buy](http://geekhack.org/index.php?topic=41464.0) ## Build Move to this directory then just run `make` like: - $ make -f Makfile.[pjrc|lufa] - -Use `Makefile.pjrc` if you want to use PJRC stack or use `Makefile.lufa` for LUFA stack. - + $ make -## Boot Magic -Plugin pressing these `Boot Magic` key. - -- `Fn` key for bootloader kick up. -- `D` key for Debug enable. +Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason to do so now. ## Keymap -Two version of keymap are available. `Plan`, `Poker` and `Funky`(default). -See keymap.c to define your own favourite keymap. - - $ make -f Makefile.[pjrc|lufa] [plain|poker] - -### 1. Plain keymap -This will be useful if you want to use key mapping tool like AHK. +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files. -See [keymap_plain.h](keymap_plain.h) for detail. +To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like: -#### 1.0 Plain 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| [| ]| \| - |-----------------------------------------------------------| - |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | - |-----------------------------------------------------------| - |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | - |-----------------------------------------------------------| - |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| - `-----------------------------------------------------------' + $ make KEYMAP=[poker|poker_set|poker_bit|plain|hasu|spacefn|hhkb|<name>] -### 2 Poker keymap -See [keymap_poker.h](keymap_poker.h) for Poker layer emulation, [keymap_poker_bit.h](keymap_poker_bit.h) and [keymap_poker_set.h](keymap_poker_set.h) for better support of Esc and arrow. +### 1 Poker +[keymap_poker.c](keymap_poker.c) emulates original Poker layers +while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys. - These keymap supports Colemak, Dvorak and Workmans, use `Magic` + {`1`, `2`, `3`} to switch and `Magic` + `0` to return to Qwerty. + Fn + Esc = ` + Fn + {left, down, up, right} = {home, pgdown, pgup, end} -#### 2.0 Poker Default Layer +#### 1.0 Default layer ,-----------------------------------------------------------. | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |-----------------------------------------------------------| @@ -64,102 +47,95 @@ See [keymap_poker.h](keymap_poker.h) for Poker layer emulation, [keymap_poker_bi |-----------------------------------------------------------| |Ctrl|Gui |Alt | Space |Fn |Gui |App |Ctrl| `-----------------------------------------------------------' - -#### 2.1 Poker Arrow Layer +#### 1.1 Poker Fn layer ,-----------------------------------------------------------. - | | | | | | | | | | | | | | | + |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |-----------------------------------------------------------| - | | | | | | | | | | | | | | | + | |FnQ| Up| | | | | | |Cal| |Hom|Ins| | |-----------------------------------------------------------| - | | | | | | | | | | | | | | + | |Lef|Dow|Rig| | |Psc|Slk|Pau| |Tsk|End| | |-----------------------------------------------------------| - | | | | | | | | | | | | Up | + | |Del| |Web|Mut|VoU|VoD| |PgU|PgD|Del| Up | |-----------------------------------------------------------| - | | | | |Fn |Left|Down|Righ| + | | | | FnS |Fn |Left|Down|Righ| `-----------------------------------------------------------' -#### 2.2 Poker Esc Layer - ,-----------------------------------------------------------. - |Esc| | | | | | | | | | | | | | - |-----------------------------------------------------------| - | | | | | | | | | | | | | | | - |-----------------------------------------------------------| - | | | | | | | | | | | | | | - |-----------------------------------------------------------| - | | | | | | | | | | | | | - |-----------------------------------------------------------| - | | | | |Fn | | | | - `-----------------------------------------------------------' -#### 2.1 Poker Fn Layer +### 2. Plain +Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host. +See [keymap_plain.c](keymap_plain.c) for detail. + +#### 1.0 Plain Default layer ,-----------------------------------------------------------. - |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | + |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | |-----------------------------------------------------------| - | |FnQ| Up| | | | | | |Cal| |Hom|Ins| | + |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |-----------------------------------------------------------| - | |Lef|Dow|Rig| | |Psc|Slk|Pau| |Tsk|End| | + |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | |-----------------------------------------------------------| - | |Del| |Web|Mut|VoU|VoD| |PgU|PgD|Del| | + |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | |-----------------------------------------------------------| - | | | | FnS |Fn | | | | + |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| `-----------------------------------------------------------' +### 3. Hasu +This is my favourite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail. -### 3. Funky keymap -This is my keymap(default) with HHKB, Vi cursor and Mousekey layer. -See [keymap.c](keymap.c) for detail. +### 4. SpaceFN +This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0). -#### 3.0 Funky Default Layer +#### 4.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| [| ]| \| |-----------------------------------------------------------| - |Caps | A| S| D| F| G| H| J| K| L|*L3| '|Return | + |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | |-----------------------------------------------------------| - |Shift | Z| X| C| V| B| N| M| ,| .|*L2|Shift | + |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | |-----------------------------------------------------------| - |Ctrl|Gui |Alt | Space |Alt |*L3 |*L3 |*L1 | + |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |App |Ctrl| `-----------------------------------------------------------' - -#### 3.1 Funky HHKB mode +#### 4.1 SpaceFN layer ,-----------------------------------------------------------. - |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | |-----------------------------------------------------------| - |Caps | | | | | | | |Psc|Slk|Pus|Up | |Inser| + | | | | | | | |Hom|Up |End|Psc|Slk|Pau|Ins | |-----------------------------------------------------------| - |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | + | | | | | | |PgU|Lef|Dow|Rig| | | | |-----------------------------------------------------------| - |Shift | | | | | | +| -|End|PgD|Dow|Shift | + | | | | | |Spc|PgD|` |~ | | | | |-----------------------------------------------------------| - |Ctrl|Gui |Alt | Space |Alt |Gui |App |*L0 | + | | | | Fn | | | | | `-----------------------------------------------------------' -#### 3.2 Funky Vi mode + +### 5. HHKB +[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers. +#### 5.0: Default layer ,-----------------------------------------------------------. - | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp | + |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| |-----------------------------------------------------------| - |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End| | | | | + |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc | |-----------------------------------------------------------| - |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return | + |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return | |-----------------------------------------------------------| - |Shift | | | | | |Hom|PgD|PgU|End|*L0|Shift | + |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn | |-----------------------------------------------------------| - |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| + | |Gui |Alt | Space | |Alt |Gui | | `-----------------------------------------------------------' - -#### 3.3 Funky Mouse mode +#### 5.1: HHKB Fn layer ,-----------------------------------------------------------. - | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp | + |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| |-----------------------------------------------------------| - |Tab |MwL|MwD|McU|MwU|MwR|MwL|MwD|MwU|MwR| | | | | + |Caps | | | | | | | |Psc|Slk|Pus|Up | | | |-----------------------------------------------------------| - |Contro| |McL|McD|McR| |McL|McD|McU|McR|*L0| |Return | + | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter | |-----------------------------------------------------------| - |Shift | | |Mb1|Mb2|Mb3|Mb2|Mb1| | | |Shift | + | | | | | | | +| -|End|PgD|Dow| | | |-----------------------------------------------------------| - |Ctrl|Gui |Alt | Space |Alt |*L0 |*L0 |Ctrl| + | | | | | | | | | `-----------------------------------------------------------' - Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel + diff --git a/keyboard/gh60/keymap_common.c b/keyboard/gh60/keymap_common.c new file mode 100644 index 0000000000..7b6379f6b6 --- /dev/null +++ b/keyboard/gh60/keymap_common.c @@ -0,0 +1,30 @@ +/* +Copyright 2012,2013 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/>. +*/ +#include "keymap_common.h" + + +/* translates key to keycode */ +uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +{ + return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); +} + +/* translates Fn keycode to action */ +action_t keymap_fn_to_action(uint8_t keycode) +{ + return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; +} diff --git a/keyboard/gh60/keymap_common.h b/keyboard/gh60/keymap_common.h new file mode 100644 index 0000000000..896badd748 --- /dev/null +++ b/keyboard/gh60/keymap_common.h @@ -0,0 +1,84 @@ +/* +Copyright 2012,2013 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/>. +*/ +#ifndef KEYMAP_COMMON_H +#define KEYMAP_COMMON_H + +#include <stdint.h> +#include <stdbool.h> +#include <avr/pgmspace.h> +#include "keycode.h" +#include "action.h" +#include "action_macro.h" +#include "report.h" +#include "host.h" +#include "print.h" +#include "debug.h" +#include "keymap.h" + + +extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; +extern const uint16_t fn_actions[]; + + +/* GH60 keymap definition macro + * K2C, K31 and K3C are extra keys for ISO + */ +#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, \ + K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ +) { \ + { 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 }, \ + { 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 } \ +} + +/* 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 \ +) 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, NO, K2D, \ + K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \ + K40, K41, K42, K45, NO, K4A, K4B, K4C, K4D \ +) + + +#define KEYMAP_HHKB( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\ + 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, K3C, \ + K40, K41, K42, K45, K4A, K4B, K4C, K4D \ +) 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, NO, K2D, \ + K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ +) + +#endif diff --git a/keyboard/gh60/keymap.c b/keyboard/gh60/keymap_hasu.c index edc1caf190..e6af28585b 100644 --- a/keyboard/gh60/keymap.c +++ b/keyboard/gh60/keymap_hasu.c @@ -1,78 +1,9 @@ -/* -Copyright 2012,2013 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/>. -*/ -#include <stdint.h> -#include <stdbool.h> -#include <avr/pgmspace.h> -#include "keycode.h" -#include "action.h" -#include "action_macro.h" -#include "report.h" -#include "host.h" -#include "print.h" -#include "debug.h" -#include "keymap.h" +#include "keymap_common.h" - -/* GH60 keymap definition macro - * K2C, K31 and K3C are extra keys for ISO +/* + * Hasu */ -#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, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4D \ -) { \ - { 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 }, \ - { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ -} - -/* 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 \ -) 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, NO, K2D, \ - K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4D \ -) - - -#if defined(KEYMAP_PLAIN) - #include "keymap_plain.h" -#elif defined(KEYMAP_POKER) - #include "keymap_poker.h" -#elif defined(KEYMAP_POKER_SET) - #include "keymap_poker_set.h" -#elif defined(KEYMAP_POKER_BIT) - #include "keymap_poker_bit.h" -#else -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - * Funky - */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Default Layer * ,-----------------------------------------------------------. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | @@ -200,7 +131,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -static const uint16_t PROGMEM fn_actions[] = { +const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_LAYER_MOMENTARY(4), [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH), [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN), @@ -212,34 +143,3 @@ static const uint16_t PROGMEM fn_actions[] = { [8] = ACTION_DEFAULT_LAYER_SET(3), // set workman layout [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV), }; -#endif - - - -#define KEYMAPS_SIZE (sizeof(keymaps) / sizeof(keymaps[0])) -#define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) -{ - if (layer < KEYMAPS_SIZE) { - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); - } 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 - return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]); - } -} - -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - action_t action; - if (FN_INDEX(keycode) < FN_ACTIONS_SIZE) { - action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]); - } else { - action.code = ACTION_NO; - } - return action; -} diff --git a/keyboard/gh60/keymap_hhkb.c b/keyboard/gh60/keymap_hhkb.c new file mode 100644 index 0000000000..ce1b816ecb --- /dev/null +++ b/keyboard/gh60/keymap_hhkb.c @@ -0,0 +1,52 @@ +#include "keymap_common.h" + +/* + * HHKB Layout + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: Default layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Bspc | + * |-----------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L|Fn3| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn | + * |-----------------------------------------------------------| + * | |Gui |Alt | Space | |Alt |Gui | | + * `-----------------------------------------------------------' + */ + KEYMAP_HHKB( + ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT,FN0, \ + NO, LGUI,LALT, SPC, NO, RALT,RGUI,NO), + /* 1: HHKB Fn layer + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps | | | | | | | |Psc|Slk|Pus|Up | | | + * |-----------------------------------------------------------| + * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ + KEYMAP_HHKB( + PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,TRNS, \ + TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, PENT, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN, TRNS,TRNS, \ + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MOMENTARY(1), +}; diff --git a/keyboard/gh60/keymap_plain.h b/keyboard/gh60/keymap_plain.c index 52d11256c2..3138c18077 100644 --- a/keyboard/gh60/keymap_plain.h +++ b/keyboard/gh60/keymap_plain.c @@ -1,4 +1,6 @@ -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ KEYMAP(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, \ @@ -6,4 +8,4 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LSFT,NO, Z, X, C, V, B, N, M, COMM,DOT, SLSH,NO, RSFT, \ LCTL,LGUI,LALT, SPC, RALT,RGUI,APP, RCTL), }; -static const uint16_t PROGMEM fn_actions[] = {}; +const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/gh60/keymap_poker.h b/keyboard/gh60/keymap_poker.c index 1642999493..7a612ee44d 100644 --- a/keyboard/gh60/keymap_poker.h +++ b/keyboard/gh60/keymap_poker.c @@ -1,4 +1,6 @@ -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +#include "keymap_common.h" + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ KEYMAP_ANSI( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ @@ -88,7 +90,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), }; -static const uint16_t PROGMEM fn_actions[] = { +const uint16_t PROGMEM fn_actions[] = { /* Poker Layout */ [0] = ACTION_LAYER_MOMENTARY(6), // to Fn overlay [1] = ACTION_LAYER_TOGGLE(4), // toggle arrow overlay diff --git a/keyboard/gh60/keymap_poker_bit.h b/keyboard/gh60/keymap_poker_bit.c index 1b498351da..b8870fdd81 100644 --- a/keyboard/gh60/keymap_poker_bit.h +++ b/keyboard/gh60/keymap_poker_bit.c @@ -1,7 +1,9 @@ +#include "keymap_common.h" + // Poker fix with toggle and bit operation // Fn + Esc = ` // Fn + {left, down, up, right} = {home, pgdown, pgup, end} -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ KEYMAP_ANSI( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ @@ -38,7 +40,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, UP, \ TRNS,TRNS,TRNS, TRNS, TRNS,LEFT,DOWN,RGHT), }; -static const uint16_t PROGMEM fn_actions[] = { +const uint16_t PROGMEM fn_actions[] = { /* Poker Layout */ [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH), // Poker Fn(with fix for Esc) [1] = ACTION_LAYER_TOGGLE(5), // Poker Arrow toggle diff --git a/keyboard/gh60/keymap_poker_set.h b/keyboard/gh60/keymap_poker_set.c index e1e4d80eef..aaa31fc571 100644 --- a/keyboard/gh60/keymap_poker_set.h +++ b/keyboard/gh60/keymap_poker_set.c @@ -1,7 +1,9 @@ +#include "keymap_common.h" + // Poker fix with set(state transition) // Fn + Esc = ` // Fn + {left, down, up, right} = {home, pgdown, pgup, end} -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ KEYMAP_ANSI( GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, \ @@ -63,7 +65,7 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Fn action definition */ -static const uint16_t PROGMEM fn_actions[] = { +const uint16_t PROGMEM fn_actions[] = { /* Poker Layout */ [0] = ACTION_LAYER_SET(4, ON_PRESS), // FN0 move to Fn'd when press [1] = ACTION_LAYER_SET(5, ON_PRESS), // FN1 move to Fn'd arrow when press diff --git a/keyboard/gh60/keymap_spacefn.c b/keyboard/gh60/keymap_spacefn.c new file mode 100644 index 0000000000..8077dcee7b --- /dev/null +++ b/keyboard/gh60/keymap_spacefn.c @@ -0,0 +1,55 @@ +#include "keymap_common.h" + +/* + * SpaceFN + * http://geekhack.org/index.php?topic=51069.0 + */ +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 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| [| ]| \| + * |-----------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Gui |App |Ctrl| + * `-----------------------------------------------------------' + */ + 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, \ + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, ENT, \ + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RSFT, \ + LCTL,LGUI,LALT, FN0, RALT,RGUI,APP, RCTL), + + /* Overlay 1: SpaceFN + * ,-----------------------------------------------------------. + * |` | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * | | | | | | | |Hom|Up |End|Psc|Slk|Pau|Ins | + * |-----------------------------------------------------------| + * | | | | | | |