Skip to content

Commit

Permalink
[qmk#11]
Browse files Browse the repository at this point in the history
* FIXED ALL KIND OF ACCENTS (NOT ONLY ACUTE)
        * ( MANAGED AS KEY RELEASES, NOT AS KEY PRESSES INTO “action_function()” ),

* DefaultKeyBinding.dict file copied into `qmk_firmware/keyboards/40percentclub/gherkin/keymaps/30_layout/` as a reference, …
* … because all ?VIM layers use keybindings from the system customised by me, for collecting all possible editor movements
* ALL EXTRA FILES ARE MOVED FROM ITS ORIGINAL FOLDER TO “QMK-my_files”,
* COPIES OF KEYMAPS ARE NOW STORED IN `keymap_c-copies`,

* IMPLEMENTED THE REST OF THE LAYERS (APART FROM GHKN, NMBR, SYMB):
    * 3 [FNCT]   FuNCTion keys layer,
    * 4 [L_XTND] (Left side),
    * 5 [R_XTND] (Right side) for making an eXTeNDed Gherkin(default) layer with frequent functions,
            * this two counterparts layers collect most frequent combos
                * left side:
 * ,-----------------------------------.,----------------------------------.
 * |      |      | Vol. | Vol. |      ||      |      |      |      | •Spot|
 * |      | Mute |      |      |      || Close| Prev | Next |Launch| Light|
 * |      |      | Down |  Up  |      ||  APP | APP  | APP  |  Pad |••SIRI|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      |      ||      |      |      |      |      |
 * |      |Rewind|  UP  |Forwrd| Play || Close| Prev | Next | Dash | SPACE|
 * |      |      |      |      |      ||Window|Window|Window| Board|      |
 * |------+------+------+------+------||------+------+------+------+------|
 * |@@@@@@|      |      |      |      ||      |      |      |      |      |
 * |@@@@@@| LEFT | DOWN | RIGHT|Reopen|| Close| Prev | Next |DELETE| ENTER|
 * |@@@@@@|      |      |      |  tab ||  tab | tab  | tab  |      |      |
 * '------+------+------+------+------'`------+------+------+------+------'
                * right side:
 * ,----------------------------------.,----------------------------------.
 * |      |      |      |      |      ||      | Vol. | Vol. |      |      |
 * |  Tab | Desk |Windws|Mision|Float.||      |      |      | Mute |      |
 * |      |      | Apps |Contrl|Window||      |  Up  | Down |      |      |
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |Sublim|      |      ||      |      |      |      |      |
 * | Caps |Dictat|Text 3| Speak|Active||      |      |  UP  |      |      |
 * |      |      |Histry|      |Window||      |      |      |      |      |
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      | PASTE||      |      |      |      |@@@@@@|
 * |      |      |      |      |   &  ||      | LEFT | DOWN | RIGHT|@@@@@@|
 * | UNDO |  CUT | COPY | PASTE| MATCH|| REDO |      |      |      |@@@@@@|
 * '------+------+------+------+------'`------+------+------+------+------'
    * 6 [APPS] & [MAPS] APPlicationS & Multiple APplicationS layer implemented,
            * … layer not complete yet, neither active,
            * … APPS & MAPS activate the same apps, but with
            * … with APPS the apps are open alone,
            * … with MAPS the apps are open on top of all current apps.
    * 7 [SUSR] Super USeR layer allow us access system functions
            * i.e.:
* ,-----------------------------------.,---------------------------------.
* |@@@@@@|      |      |      |      ||      |      |      |      |@@@@@@|
* |@@@@@@|      |      |onHold|      ||      |      |      |      |@@@@@@|
* | BLIT |LOGOUT|LCKSCR| RESET| REDO ||      |      |      |      | BLIT |
* |------+------+------+------+------||------+------+------+------+------|
* | Menu | Dock | Tool |Status|Float.||      |      |      |      |      |
* | _bar | _bar | _bar | _bar |Window||      |      |      |      |      |
* |      |      |      |      |      ||      |      |      |      |      |
* |onHold|onHold|onHold|onHold|onHold||      | LGui | LAlt | LCtl | LSft |
* | SLEEP|K_MENU|KILL_A|SHUT_D|RSTART||      |      |      |      |      |
* |------+------+------+------+------||------+------+------+------+------|
* |      |      |      |      |      ||      |      |      |      |      |
* |      |      |      |      |      ||      |      |      |      |      |
* | RSft | RCtl | RAlt | RGui |      ||      | RGui | RAlt | RCtl | RSft |
* '------+------+------+------+------'`------+------+------+------+------'

    * 8 [PVIM] Personal VIM layer,
            * this name is provisional,
            * this layer makes a kinda of a customised right side keyboard for reflecting natural movements,
            * i.e.:
 * ,----------------------------------.,----------------------------------.
 * |      |      |      |      |      || Move | Move | Move | Move | Move |
 * |      |      |      |      |      ||Prgrph| Begin| Word | Word |End Of|
 * |      |      |      |      |      ||  Up  |Ln/Prg|Bckwrd|Forwrd|Ln/Prg|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      |      ||Center| Move | Move | Move | Move |
 * |      |      |      |      |      ||LineIn|      |      |      |      |
 * |      |      |      |      |      || View | LEFT |  UP  | DOWN | RIGHT|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |@@@@@@|      || Move | Move | Move | Move | Move |
 * |      |      |      |@@@@@@|      ||Prgrph|      | Page | Page |      |
 * |      |      |      |@@@@@@|      || Down | HOME |  UP  | DOWN |  END |
 * `----------------------------------'`----------------------------------'
    * 9 [DVIM] Delete   VIM layer,
            * this name is provisional too,
            * this layer makes a kinda of a customised right side keyboard for reflecting natural movements for deleting,
            * i.e.:
 * ,----------------------------------.,----------------------------------.
 * |      |      |      |      |      ||      |Delete|Delete|Delete|Delete|
 * |      |      |      |      |      ||      | Begin| Word | Word |End Of|
 * |      |      |      |      |      ||      |Ln/Prg|Bckwrd|Forwrd|Ln/Prg|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      |      ||      |Delete|Delete|Delete|Delete|
 * |      |      |      |      |      || Yank | Char | Line | Line | Char |
 * |      |      |      |      |      ||      | LEFT |  UP  | DOWN | RIGHT|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |@@@@@@|      |@@@@@@|      ||      |Delete|Delete|Delete|Delete|
 * |      |      |      |@@@@@@|      ||      |      | Page | Page |      |
 * |      |      |      |@@@@@@|      ||      | HOME |  UP  | DOWN |  END |
 * `----------------------------------'`----------------------------------'
    * 10 [SVIM] Selecting VIM layer,
            * this name is provisional as well,
            * this layer reflect natural movements for select parts of our text,
            * i.e.:
 * ,----------------------------------.,----------------------------------.
 * |      |      |      |      |      ||Select|Select|Select|Select|Select|
 * |      |      |      |      |      ||Prgrph| Begin| Word | Word |End Of|
 * |      |      |      |      |      || Above|Ln/Prg|Bckwrd|Forwrd|Ln/Prg|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      |      ||      |Select|Select|Select|Select|
 * |      |      |      |      |      ||      | Char | Line | Line | Char |
 * |      |      |      |      |      ||      | LEFT |  UP  | DOWN | RIGHT|
 * |------+------+------+------+------||------+------+------+------+------|
 * |@@@@@@|      |      |@@@@@@|      ||Select|Select|Select|Select|Select|
 * |      |      |      |@@@@@@|      ||Prgrph|      | Page | Page |      |
 * |      |      |      |@@@@@@|      || Below| HOME |  UP  | DOWN |  END |
 * `----------------------------------'`----------------------------------'
* 11 [XVIM] eXtended VIM layer,
        * this name is provisional too,
        * this layer reflect natural movements for extended functions over our text,
        * i.e.:
 * ,----------------------------------.,----------------------------------.
 * |      |      |      |      |      || Copy |Upper |Capita|      |Lower |
 * |      |      |      |      |      || prev.|case  |lize  |      |case  |
 * |      |      |      |      |      ||prgrph| Word | Word |      | Word |
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      |      ||Duplct|  25  |  50  |  50  |  25  |
 * |      |      |      |      |      ||prgrph| lines| lines| lines| lines|
 * |      |      |      |      |      || Below|  UP  |  UP  | DOWN | DOWN |
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |@@@@@@|      || Copy |Scroll|Scroll|Scroll|Scroll|
 * |@@@@@@|      |      |@@@@@@|      || next |      | Page | Page |      |
 * |@@@@@@|      |      |@@@@@@|      ||prgrph| HOME |  UP  | DOWN |  END |
 * `----------------------------------'`----------------------------------'
* 12 [ZVIM] `eZtended` VIM layer,
        * this name is provisional as well,
        * this layer reflect MORE natural movements for `eZtended` functions over our text,
        * i.e.:
 * ,----------------------------------.,----------------------------------.
 * |      |      |      |      |      ||Insert|Trans |      |      |Trans |
 * |      |      |      |      |      ||LnAbve|pose  |      |      |pose  |
 * |      |      |      |      |      ||prgrph| Words|      |      |Chrctr|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      |      ||Select|Select|Select|Select|Select|
 * |      |      |      |      |      ||& Copy|& Copy|& Copy|& Copy|& Copy|
 * |      |      |      |      |      ||Chrctr| Word | Line |prgrph|  All |
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |@@@@@@|      ||Insert|      |      |      |      |
 * |      |      |@@@@@@|@@@@@@|      ||LnBlow|      |      |      |      |
 * |      |      |@@@@@@|@@@@@@|      ||prgrph|      |      |      |      |
 * `----------------------------------'`----------------------------------'
* 13 [AVIM] Alignment VIM layer,
        * this name is provisional too,
        * this layer reflect natural movements for alignment elements into our text,
        * i.e.:
 * ,----------------------------------.,----------------------------------.
 * |      |      |      |      |      || Super|Align |Align |Align |Align |
 * |      |      |      |      |      ||script|      |      | Justi|      |
 * |      |      |      |      |      ||      | Left |Center|-fied | Right|
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |      |      ||  Un  |  Out |      |      |  In  |
 * |      |      |      |      |      ||script|-dent |      |      |-dent |
 * |      |      |      |      |      ||      |      |      |      |      |
 * |------+------+------+------+------||------+------+------+------+------|
 * |      |      |      |@@@@@@|      || Subs | Check|Ignore|      |      |
 * |      |@@@@@@|      |@@@@@@|      ||script| spell| spell|      |      |
 * |      |@@@@@@|      |@@@@@@|      ||      |      |      |      |      |
 * `----------------------------------'`----------------------------------'
* 14 [MOUS] Mouse layer,
        * this layer allows us to move the pointer and the wheel mouse, and click buttons 1…5 as well,
* ,----------------------------------.,----------------------------------.
* |      |      |      |      |      ||      |      |      |      |      |
* |Accel0|      |      |      |      ||      | wLeft|  wUp | wDown|wRight|
* |      |      |      |      |      ||      |      |      |      |      |
* |------+------+------+------+------||------+------+------+------+------|
* |      |      |      |      |      ||      |      |      |      |      |
* | LSft | LCtl | LAlt | LGui |      ||      | mLeft|  mUp | mDown|mRight|
* |      |      |      |      |      ||      |      |      |      |      |
* |------+------+------+------+------||------+------+------+------+------|
* |      |      |@@@@@@|@@@@@@|      ||      |      |      |      |      |
* |Accel1|Accel2|      | mBtn1|Accel0|| mBtn1| mBtn2| mBtn3| mBtn4| mBtn5|
* |      |      |      |@@@@@@|      ||      |      |      |      |      |
* '------+------+------+------+------'`------+------+------+------+------'
* 15 [BLIT] Backlight layer,
        * this layer controls LED diodes (level of brightness and `breathing mode,
        * i.e.:
* .-----------------------------------------------------------------------------------------.
* |  BL_1  |  BL_2  |  BL_3  |  BL_4  |  BL_5  |BREATH_1|BREATH_2|BREATH_3|BREATH_4|BREATH_T|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* |  BL_6  |  BL_7  |  BL_8  |  BL_9  |  BL_10 |BREATH_5|BREATH_6|BREATH_7|BREATH12|BL_TOGGL|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|F
* |  BL_11 |  BL_12 |  BL_13 |  BL_14 |  BL_15 |BREATH15| BL_ON | BL_INC | BL_DEC | BL_OFF |
* '-----------------------------------------------------------------------------------------'
    * 31 [TEST] debugging or testing layer,
            * this layer is for implementing new or experimental features, before update the consolidated firmware,
            * be careful: you must call layers from code when it comes to layers between 16 and 31,
            * … if you invoke them from keycap, it doesn’t work !!!  And layers over 31 are not allowed on QMK.
  • Loading branch information
manolodeinternet committed Mar 17, 2019
1 parent 35e65f6 commit 3402625
Show file tree
Hide file tree
Showing 79 changed files with 25,423 additions and 3,000 deletions.

Large diffs are not rendered by default.

193 changes: 193 additions & 0 deletions QMK-my_files/KEYMAP.C STRUCTURE SCHEME SKELETON.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
/*

// STRUCTURE OF /Users/navarro/qmk_firmware/keyboards/handwired/frenchdev/keymaps/default/keymap.c
//
//
// # INCLUDES
//
#include "keymap_extras/keymap_bepo.h"

// # LAYER DEFINES
//
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
#define _BASE 0
#define _SYMBOLS 1
#define _MEDIA 2
#define _TRNS 8

// CONST SYSTEM USER # DEFINES
//
#define PEDAL_DELAY 250
#define KEY_DELAY 130

// ENUM MACROS
//
enum macros {
M_LP, // left pedal
M_RP, // right pedal
M_SF, // shift
M_SFS, // shift and space
M_L1E, // L1 and space
L2INS, // L2 and insert
L2LOC, // Lock L2
M_UN, // undo
M_CUT, // cut
M_CP, // copy
M_PS, // paste
M_SE, // search
M_SFU, // shift and underscore
};

// STATIC SYSTEM USER VARIABLES
//
static uint16_t key_timer_left_pedal;
static uint16_t key_timer_right_pedal;
static uint16_t key_timer_shift;
static uint16_t key_timer_1;
static uint16_t key_timer_2;

static uint16_t shift_count = 0; //this is used to keep track of shift state and avoid inserting non breakable space
static uint16_t l2_locked = 0; //this indicate wether L2 is locked

// USER SHORTCUTS # DEFINE
#define BP_CBSP CTL_T(KC_BSPC)


// KEYMAPS MATRIX

// ACTION FUNCTIONS MATRIX
// CUSTOM FUNCTIONS
// OLD MACROS
// ACTION FUNCTION DEFINITIONS
// MATRIX INIT USER
// ANOTHER USER VARIABLE DEFINITIONS
// MATRIX SCAN USER
// NEW MACROS WAY DEFINITIONS
// ANOTHER CUSTOM USER FUNCTION DEFINITIONS



// KEYMAPS MATRIX
//
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = KEYMAP(
),
//...
[_SYMBOLS] = KEYMAP(
),
};


// ACTION FUNCTIONS MATRIX
//
const uint16_t PROGMEM fn_actions[] = {

};


// CUSTOM FUNCTIONS
//
// custom functions for using into macro algorithms
// void hold_shift(void) {
// ;
// ;
// ;
// }
// ...
// void ... {
// ...
// }


// OLD MACROS
//
// MACRO_T *ACTION GET MACRO
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case M_LP: //left pedal
if (record->event.pressed) {
// ...
} else {
// ...
}
break;
case M_RP: //right pedal
if (record->event.pressed) {
// ...
} else {
// ...
}
break;
case M_SF:
// ...
// ...
// ...
case M_SE: // search
// ...
}
return MACRO_NONE;
};


// ACTION FUNCTION DEFINITIONS
//
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {

}

// MATRIX INIT USER
//
void matrix_init_user(void) {
}


// ANOTHER USER VARIABLE DEFINITIONS
//
// Bleah globals need to be initialized.
uint8_t old_layer=_BASE;


// MATRIX SCAN USER
//
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
// ...
switch (layer) {
case _BASE:
// ...
break;
case _SYMBOLS:
// ...
break;
case _MEDIA:
// ...
default:
// ...
break;
}
}


// NEW MACROS WAY DEFINITIONS
//
// PROCESS RECORD USER
//
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}


// ANOTHER CUSTOM USER FUNCTION DEFINITIONS
//
// custom user function
void led_set_user(uint8_t usb_led) {
if (usb_led & (1<<USB_LED_CAPS_LOCK)){
frenchdev_led_3_on();
} else {
frenchdev_led_3_off();
}
return ;
}
*/
File renamed without changes.
File renamed without changes.
111 changes: 111 additions & 0 deletions qmk_issues_log.txt → QMK-my_files/QMK_issues_log.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,117 @@
// instead of symbol characters for those keystrokes.
//

[FIXME]
// 🍎🍎🍎
[#009]
BULLETPROOF ACCENTED ACUTE FOR ALL 5 VOWELS AND N TILDE !!!

* modified files: keyboards/40percentclub/gdherkin/keymaps/30_layout/keymap.c

* IMPLEMENTING 150 ms keypress time for shift key(space),

* A, I, O, U vowels implemented with implicit acute accent included,

* As I need having tap_dance functions over KC_A, KC_U, KC_I and
tap_dance doesn’t get acute modifying character when shift is pressed,
I have implemented acute modifying character with action_function,
but over a new [ACUT] layer for not to overlapping previous tap_dance over A, U, I.
And I access this new layer by pressing acute accent trigger (KC_V, KC_M),

* It appeared a new problem when once in [ACUT] layer, I need KC_A for two
functions again: ( á | Á ) and ( LSHIFT while acute accent trigger is pressed ).
I have solved this issue, by implementing a new tap_dance for KC_A called
A_AC_ON, who calls action_function directly with a NULL keyrecord_t parameter.
This way, I can activate LSHIFT when hold, or call action_function directly
from the code (not from KEYMAP, as I believed that was the only way to call it).
It’s a solution, not too much elegant, but a solution.
A better solution it should be to rewrite tap_dance_function at process_tap_dance
files at ‘qmk_firmware/quantum/process_keycode/process_tap_dance.h & .c’

* added files: QMK POWER tricks,
* where I’m going to collect all new power discoveries of C, QMK, algorithms, or whatever it brights by itself !
* The first annotation is about how to manage what layer I am at present time, whenever I want to know it.

[#008]
BULLETPROOF ACCENTED ACUTE VOWELS !!!
AT LAST, WHAT A RELIEF !!!

It’s approached since low level coding, i.e.: modifying mods bits at QMK level of programming. This was inspired from QMK documentation,

‘void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)’
and
‘#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))’
at
‘https://docs.qmk.fm/#/keymap?id=action_function’

The issue with accented acute vowels was that acute modifier for vowels didn’t appear while shift key was pressed. Instead of acute modifier for vowel, it appeared acute symbol followed by a space character, thus we couldn’t accentuate the vowel, it appeared the acute symbol and the vowel after it.

Then, instead of use `bool process_record_user(uint16_t keycode, keyrecord_t *record) }`
we use now
`void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {`
and we modify mods bits directly, using
`mod_shift_enable = get_mods()&LSHIFT_MODS;`
`del_mods(mod_shift_enable);`
`add_mods(mod_shift_enable);`

In ˜/qmk_firmware/tmk_core/common/action_code.h we have codification for mods at bit level.
/** \brief Key Actions
*
* Mod bits: 43210
* bit 0 ||||+- Control
* bit 1 |||+-- Shift
* bit 2 ||+--- Alt
* bit 3 |+---- Gui
* bit 4 +----- LR flag(Left:0, Right:1)
*/
enum mods_bit {
MOD_LCTL = 0x01,
MOD_LSFT = 0x02,
MOD_LALT = 0x04,
MOD_LGUI = 0x08,
MOD_RCTL = 0x11,
MOD_RSFT = 0x12,
MOD_RALT = 0x14,
MOD_RGUI = 0x18,
};


And by this way, we can press acute accent and get an acute modifier, even while shift key is pressed !!!

* modified file: keyboards/40percentclub/gdherkin/keymaps/30_layout/keymap.c,
for correct acute accent behaviour while shift key is pressed.

* renamed file: qmk_issues_log.txt into QMK_issues_log.txt,

* modified file: QMK_issues_log.txt
by adding the present acute accent issue committed in this commit

// 🍏🍏🍏 SOLVED -
[fixme]

2019/02/23/S 15:00
// 🍎🍎🍎 BIG COMPILING ERROR WITHOUT ANY IMPORTANCE
If we get an error like the following:
******************************************************************************************************************************************************************************************
Compiling: keyboards/40percentclub/gherkin/keymaps/30_layout/keymap.c keyboards/40percentclub/gherkin/keymaps/30_layout/keymap.c: In function 'A_CAPS_reset':
keyboards/40percentclub/gherkin/keymaps/30_layout/keymap.c:1908:1: error: '__progmem__' attribute ignored [-Werror=attributes]
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
^~~~~
keyboards/40percentclub/gherkin/keymaps/30_layout/keymap.c:2121:1: error: '__progmem__' attribute ignored [-Werror=attributes]
const uint16_t PROGMEM fn_actions[] = {
^~~~~
keyboards/40percentclub/gherkin/keymaps/30_layout/keymap.c:2376:1: error: expected declaration or statement at end of input
}; // END OF THE PROGRAM //
^
keyboards/40percentclub/gherkin/keymaps/30_layout/keymap.c:2121:24: error: unused variable 'fn_actions' [-Werror=unused-variable]
const uint16_t PROGMEM fn_actions[] = {
^~~~~~~~~~
keyboards/40percentclub/gherkin/keymaps/30_layout/keymap.c:1908:24: error: unused variable 'keymaps' [-Werror=unused-variable]
******************************************************************************************************************************************************************************************
it has been because we forgot to close a curly brace(from an if sentence) into a tap_dance_reset function. And the code line of the error is a thousand after the missing '}'. That's all

2019/02/23/S 15:05
// 🍏🍏🍏 SOLVED -

/////////////////////////////////////////////////////////////////////////////////////////

Expand Down
18 changes: 18 additions & 0 deletions QMK-my_files/gherkin/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Gherkin
===

A 30 key keyboard.

* [The original TMK firmware](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/gherkin)

Keyboard Maintainer: QMK Community
Hardware Supported: Gherkin PCB
Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html)

Make example for this keyboard (after setting up your build environment):

make gherkin:default

See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
First pass at adding support for the gherkin keyboard. Compiles but completely
untested. Intended to kick-start development.
Loading

0 comments on commit 3402625

Please sign in to comment.