Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Richard Baptist 2019-06-20 10:08:27 +02:00
commit 04892c18d1
No known key found for this signature in database
GPG Key ID: 115D8B1815981F35
106 changed files with 3989 additions and 648 deletions

View File

@ -76,11 +76,11 @@ This is a C header file that is one of the first things included, and will persi
* `#define B7_AUDIO` * `#define B7_AUDIO`
* enables audio on pin B7 (duophony is enables if one of B[5-7]\_AUDIO is enabled along with one of C[4-6]\_AUDIO) * enables audio on pin B7 (duophony is enables if one of B[5-7]\_AUDIO is enabled along with one of C[4-6]\_AUDIO)
* `#define BACKLIGHT_PIN B7` * `#define BACKLIGHT_PIN B7`
* pin of the backlight - B5, B6, B7 use PWM, others use softPWM * pin of the backlight - `B5`, `B6`, `B7` and `C6` (and `D4` on ATmega32A) use hardware PWM, others use software implementation
* `#define BACKLIGHT_LEVELS 3` * `#define BACKLIGHT_LEVELS 3`
* number of levels your backlight will have (maximum 15 excluding off) * number of levels your backlight will have (maximum 15 excluding off)
* `#define BACKLIGHT_BREATHING` * `#define BACKLIGHT_BREATHING`
* enables backlight breathing (only works with backlight pins B5, B6 and B7) * enables backlight breathing
* `#define BREATHING_PERIOD 6` * `#define BREATHING_PERIOD 6`
* the length of one backlight "breath" in seconds * the length of one backlight "breath" in seconds
* `#define DEBOUNCE 5` * `#define DEBOUNCE 5`
@ -93,8 +93,8 @@ This is a C header file that is one of the first things included, and will persi
* key combination that allows the use of magic commands (useful for debugging) * key combination that allows the use of magic commands (useful for debugging)
* `#define USB_MAX_POWER_CONSUMPTION` * `#define USB_MAX_POWER_CONSUMPTION`
* sets the maximum power (in mA) over USB for the device (default: 500) * sets the maximum power (in mA) over USB for the device (default: 500)
* `#define SCL_CLOCK 100000L` * `#define F_SCL 100000L`
* sets the SCL_CLOCK speed for split keyboards. The default is `100000L` but some boards can be set to `400000L`. * sets the I2C clock rate speed for keyboards using I2C. The default is `400000L`, except for keyboards using `split_common`, where the default is `100000L`.
## Features That Can Be Disabled ## Features That Can Be Disabled

View File

@ -35,11 +35,12 @@ Hardware PWM is only supported on certain pins of the MCU, so if the backlightin
Hardware PWM is supported according to the following table: Hardware PWM is supported according to the following table:
| Backlight Pin | Hardware timer | | Backlight Pin | Hardware timer |
|---------------|----------------| |---------------|-------------------------|
|`B5` | Timer 1 | |`B5` | Timer 1 |
|`B6` | Timer 1 | |`B6` | Timer 1 |
|`B7` | Timer 1 | |`B7` | Timer 1 |
|`C6` | Timer 3 | |`C6` | Timer 3 |
|`D4` | Timer 1 (ATmega32A only)|
| other | Software PWM | | other | Software PWM |
The [audio feature](feature_audio.md) also uses hardware timers. Please refer to the following table to know what hardware timer the software PWM will use depending on the audio configuration: The [audio feature](feature_audio.md) also uses hardware timers. Please refer to the following table to know what hardware timer the software PWM will use depending on the audio configuration:
@ -63,11 +64,17 @@ To change the behaviour of the backlighting, `#define` these in your `config.h`:
|Define |Default |Description | |Define |Default |Description |
|---------------------|-------------|-------------------------------------------------------------------------------------------------------------| |---------------------|-------------|-------------------------------------------------------------------------------------------------------------|
|`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this| |`BACKLIGHT_PIN` |`B7` |The pin that controls the LEDs. Unless you are designing your own keyboard, you shouldn't need to change this|
|`BACKLIGHT_PINS` |*Not defined*|experimental: see below for more information| |`BACKLIGHT_PINS` |*Not defined*|experimental: see below for more information |
|`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 15 excluding off) | |`BACKLIGHT_LEVELS` |`3` |The number of brightness levels (maximum 15 excluding off) |
|`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) | |`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported | |`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported |
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds | |`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|`BACKLIGHT_ON_STATE` |`0` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
## Backlight On State
Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *low*.
Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case you must `#define BACKLIGHT_ON_STATE 1`, so that when the transistor is on, the pin is driven *high* instead.
## Multiple backlight pins ## Multiple backlight pins

View File

@ -59,6 +59,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_SLEEP
#endif #endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */

View File

@ -0,0 +1,24 @@
/*
Copyright 2012 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/>.
*/
#pragma once
#undef TAPPING_TERM
#define TAPPING_TERM 190
#define MUSIC_MASK (keycode != KC_NO)
#define MIDI_ADVANCED

View File

@ -0,0 +1,115 @@
#include QMK_KEYBOARD_H
enum layer_number {
_IONIAN = 0,
_DORIAN,
_PHRYGIAN,
_LYDIAN,
_MIXOLYDIAN,
_AEOLIAN,
_LOCRIAN,
_MENU
};
enum custom_keycodes {
IONIAN = SAFE_RANGE,
DORIAN,
PHRYGIAN,
LYDIAN,
MIXOLYDIAN,
AEOLIAN,
LOCRIAN,
};
#define MENU MO(_MENU)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_IONIAN] = LAYOUT_ortho_3x10(
MI_C_1, MI_F_1, MI_B_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, MI_OCTD, MI_OCTU,
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_B_2, MI_E_3, MI_A_3, MI_D_4, MI_TRNSD, MI_TRNSU,
MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_B_3, MI_E_4, MI_SUS, MENU
),
[_DORIAN] = LAYOUT_ortho_3x10(
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_A_3, MI_D_4, _______, _______,
MI_Ds_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
),
[_PHRYGIAN] = LAYOUT_ortho_3x10(
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_Cs_3, MI_G_3, MI_C_4, _______, _______,
MI_Cs_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_Cs_4, _______, _______,
MI_Ds_1, MI_Gs_1, MI_Cs_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
),
[_LYDIAN] = LAYOUT_ortho_3x10(
MI_C_1, MI_Fs_1, MI_B_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
MI_D_1, MI_G_1, MI_C_2, MI_Fs_2, MI_B_2, MI_E_3, MI_A_3, MI_D_4, _______, _______,
MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_Fs_3, MI_B_3, MI_E_4, _______, _______
),
[_MIXOLYDIAN] = LAYOUT_ortho_3x10(
MI_C_1, MI_F_1, MI_As_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_E_3, MI_A_3, MI_D_4, _______, _______,
MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_E_4, _______, _______
),
[_AEOLIAN] = LAYOUT_ortho_3x10(
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_D_4, _______, _______,
MI_Ds_1, MI_Gs_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
),
[_LOCRIAN] = LAYOUT_ortho_3x10(
MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_Cs_3, MI_Fs_3, MI_C_4, _______, _______,
MI_Cs_1, MI_Fs_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_Cs_4, _______, _______,
MI_Ds_1, MI_Gs_1, MI_Cs_2, MI_Fs_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
),
[_MENU] = LAYOUT_ortho_3x10(
IONIAN, LYDIAN, LOCRIAN, _______, _______, _______, _______, _______, _______, _______,
DORIAN, MIXOLYDIAN, _______, _______, _______, _______, _______, _______, _______, _______,
PHRYGIAN, AEOLIAN, _______, _______, _______, _______, _______, _______, RESET, _______
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case IONIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_IONIAN);
}
break;
case DORIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_DORIAN);
}
break;
case PHRYGIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_PHRYGIAN);
}
break;
case LYDIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_LYDIAN);
}
break;
case MIXOLYDIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_MIXOLYDIAN);
}
break;
case AEOLIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_AEOLIAN);
}
break;
case LOCRIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_LOCRIAN);
}
break;
}
return true;
}

View File

@ -0,0 +1,14 @@
### Gherkin Midi
A gherkin midi layout that should cover most midi note playing needs.
A 3x8 grid of notes written bottom left to right upwards as notes for the selected mode, with octave and transpose note controls at the top. Menu accesses other mode layouts, persisted to keyboard settings, and a reset for firmware programming.
Modes are set by pressing Menu and their corresponding note from the C Ionian layout. That is, for Aeolian, press Menu and A 1. For Phrygian, press Menu and E 1.
#### Keyboard Default Layout
![](https://i.imgur.com/VNc0GsI.jpg)
Keyboard Editor Gist [link](https://gist.github.com/scottsheffield/c57859fe1a85d703f5387bf8ce41028c)
#### Glamour Shot
![](https://i.imgur.com/B3Q4JoU.jpg)

View File

@ -0,0 +1,8 @@
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no
MIDI_ENABLE = yes

View File

@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{KC_SPC, XXXXXXX, _______, _______, _______, _______, _______, _______, G_0, _______, _______, _______} {KC_SPC, XXXXXXX, _______, _______, _______, KC_LCTL, KC_LCTL, _______, G_0, _______, _______, _______}
} }
}; };

View File

@ -5,6 +5,8 @@
#define PERMISSIVE_HOLD #define PERMISSIVE_HOLD
#define TAPPING_TERM 150 #define TAPPING_TERM 150
#define TAP_HOLD_CAPS_DELAY 0
#undef DISABLE_RGB_MATRIX_SPLASH #undef DISABLE_RGB_MATRIX_SPLASH
#undef DISABLE_RGB_MATRIX_MULTISPLASH #undef DISABLE_RGB_MATRIX_MULTISPLASH
#undef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH #undef DISABLE_RGB_MATRIX_SOLID_MULTISPLASH

View File

@ -6,12 +6,15 @@
#undef TAPPING_TERM #undef TAPPING_TERM
#define TAPPING_TERM 200 #define TAPPING_TERM 175
#undef DEBOUNCE #undef DEBOUNCE
#define DEBOUNCE 10 #define DEBOUNCE 15
#undef IGNORE_MOD_TAP_INTERRUPT #undef IGNORE_MOD_TAP_INTERRUPT
#define IGNORE_MOD_TAP_INTERRUPT
#define RGB_DISABLE_WHEN_USB_SUSPENDED true
#undef FORCE_NKRO #undef FORCE_NKRO
#define FORCE_NKRO #define FORCE_NKRO
@ -20,12 +23,13 @@
#define TAPPING_TOGGLE 5 #define TAPPING_TOGGLE 5
#define LEADER_TIMEOUT 1000 #define LEADER_TIMEOUT 1000
#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD #define PERMISSIVE_HOLD
#define QMK_KEYS_PER_SCAN 4 #define QMK_KEYS_PER_SCAN 4
#define DANCING_TERM 175 #define DANCING_TERM 175
#define ONESHOT_TAP_TOGGLE 5 #define ONESHOT_TAP_TOGGLE 5
#undef ONESHOT_TIMEOUT
#define ONESHOT_TIMEOUT 5000 #define ONESHOT_TIMEOUT 5000
#define COMBO_COUNT 4 #define COMBO_COUNT 4

View File

@ -1,19 +1,22 @@
let gulp = require('gulp'); const gulp = require('gulp');
let run = require('gulp-run-command').default; const run = require('gulp-run-command').default;
gulp.task('clean', run('rm -rf ../../../../.build')); const ROOT_DIR = '../../../../';
const BUILD_DIR = `${ROOT_DIR}.build`;
const HACKER_DVORAK_DIR = './**/*';
gulp.task('build', ['clean'], run('make -C ../../../../ ergodox_ez:hacker_dvorak', { const CLEAN_CMD = `rm -rf ${BUILD_DIR}`;
const BUILD_CMD = `make -C ${ROOT_DIR} ergodox_ez:hacker_dvorak`;
gulp.task('clean', run(CLEAN_CMD));
gulp.task('build', gulp.series('clean', run(BUILD_CMD, {
ignoreErrors: true ignoreErrors: true
})));
gulp.task('watch', gulp.series('build', () => {
gulp.watch(HACKER_DVORAK_DIR, gulp.series('build'));
})); }));
gulp.task('watch', ['build'], () => { gulp.task('default', gulp.series('watch'));
gulp.watch([
'keymap.c',
'config.h',
'rules.mk',
], ['build']);
});
gulp.task('default', ['watch']);

View File

@ -13,21 +13,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// TAB | MOD TAP: ALT+SHIFT | MOD TAP: CTRL+ALT | MOD TAP: CTRL+SHIFT | P | Y | // // TAB | MOD TAP: ALT+SHIFT | MOD TAP: CTRL+ALT | MOD TAP: CTRL+SHIFT | P | Y | //
// | | | | | | // // | | | | | | //
KC_TAB, TD(NONE_LEAD), TD(QUOT_DQUO), TD(DOT_COMM), ALL_T(KC_P), MEH_T(KC_Y), DYN_MACRO_PLAY1, // KC_TAB, TD(NONE_LEAD), TD(QUOT_DQUO), TD(DOT_COMM), LCG_T(KC_P), LAG_T(KC_Y), DYN_MACRO_PLAY1, //
// | LEAD | " | , | | | // // | LEAD | " | , | | | //
// | TAP DANCE: NONE | TAP DANCE: ' | TAP DANCE: . | MOD TAP: HYPER | MOD TAP: MEH | // // | TAP DANCE: NONE | TAP DANCE: ' | TAP DANCE: . | MOD TAP: CTRL+GUI | MOD TAP: ALT+GUI | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| PLAY DYNAMIC MACRO 1 // //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| PLAY DYNAMIC MACRO 1 //
// | MOD TAP: ALT | MOD TAP: CTRL | LAYER TAP: SHIFT | LAYER TAP: ARROW KEYS | MOD TAP: GUI | // // | MOD TAP: ALT | MOD TAP: CTRL | LAYER TAP: SHIFT | M TAP DANCE: ARROWS/GUI | MOD TAP: SHIFT+GUI | //
// | | | | Ü | | // // | | | | Ü | | //
TD(EQL_PLUS), ALT_T(KC_A), CTL_T(KC_O), SFT_T(KC_E), LT(ARROWS, KC_U), LGUI_T(KC_I), //-----------------------// TD(EQL_PLUS), LALT_T(KC_A), LCTL_T(KC_O), LSFT_T(KC_E), TD(U_ARR_GUI), SGUI_T(KC_I), //-----------------------//
// + | Á | Ó | É | Ú | Í | // // + | Á | Ó | É | Ú | Í | //
// TAP DANCE: = | TAP DANCE: A | TAP DANCE: O | TAP DANCE: E | TAP DANCE: U | TAP DANCE: I | // // TAP DANCE: = | TAP DANCE: A | TAP DANCE: O | TAP DANCE: E | TAP DANCE: U | TAP DANCE: I | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| META // //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------| META //
// STOP RECORDING | MOD TAP: GUI+SHIFT+ALT | Q | J | K | X | // // STOP RECORDING | MOD TAP: GUI+SHIFT+ALT | Q | J | K | X | //
// | | | | | | // // | | | | | | //
DYN_REC_STOP, TD(SCLN_COLN), SGUI_T(KC_Q), LT(MEDIA_FN, KC_J), LT(NUMPAD, KC_K), LCAG_T(KC_X), KC_LGUI, // DYN_REC_STOP, TD(SCLN_COLN), LCAG_T(KC_Q), TD(J_MED_MEH), TD(K_NUM_HYP), LCSG_T(KC_X), KC_LGUI, //
// | : | | | | | // // | : | | | | | //
// DYNAMIC MACRO | TAP DANCE: ; | MOD TAP: SHIFT+GUI | LAYER TAP: MEDIA/F-KEYS | LAYER TAP: ATM NUMPAD | MOD TAP: CTL+ALT+GUI | // // DYNAMIC MACRO | TAP DANCE: ; | MOD TAP: SHIFT+GUI | M TAP DANCE: MEDIA/MEH | M TAP DANCE: ATM/HYPER | MOD TAP: CTL+SHIFT+GUI | //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// LAYERS SWITCHER | APPLICATION MENU | | | // // LAYERS SWITCHER | APPLICATION MENU | | | //
// | | | | SCROLL // // | | | | SCROLL //
@ -69,19 +69,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | // // | | | | | | //
// | | | | | | // // | | | | | | //
DYN_MACRO_PLAY2, MEH_T(KC_F), ALL_T(KC_G), C_S_T(KC_C), LCA_T(KC_R), LAS_T(KC_L), TD(SLSH_BSLS), // DYN_MACRO_PLAY2, LAG_T(KC_F), LCG_T(KC_G), C_S_T(KC_C), LCA_T(KC_R), LAS_T(KC_L), TD(SLSH_BSLS), //
// | | | | | | // // | | | | | | //
// | | | | | | // // | | | | | | //
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// // |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | // // | | | | | | //
// | | | | | | // // | | | | | | //
/*-----------------------*/ LGUI_T(KC_D), LT(MOUSE, KC_H), SFT_T(KC_T), CTL_T(KC_N), ALT_T(KC_S), TD(MINS_UNDS), // /*-----------------------*/ SGUI_T(KC_D), TD(H_MOU_GUI), LSFT_T(KC_T), LCTL_T(KC_N), LALT_T(KC_S), TD(MINS_UNDS), //
// | | | | | | // // | | | | | | //
// | | | | | | // // | | | | | | //
// |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// // |-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
// | | | | | | // // | | | | | | //
// | | | | | | // // | | | | | | //
KC_LGUI, LCAG_T(KC_B), LT(HYPER, KC_M), LT(MEDIA_FN, KC_W), SGUI_T(KC_V), LGAS_T(KC_Z), COMPOSE, // KC_LGUI, LCSG_T(KC_B), TD(M_CHO_HYP), TD(W_MED_MEH), LCAG_T(KC_V), LASG_T(KC_Z), COMPOSE, //
// | | | | | | // // | | | | | | //
// | | | | | | ⎄ // // | | | | | | ⎄ //
//------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------// //------------------------+-------------------------+-------------------------+-------------------------+-------------------------+-------------------------+------------------------//
@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, KC_RBRC, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX,
// right thumb // right thumb
KC_MS_BTN5, MO(HYPER), KC_MS_BTN5, MO(CHORD),
KC_MS_BTN4, KC_MS_BTN4,
KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1 KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1
), ),
@ -295,10 +295,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// right thumb // right thumb
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX,
RGB_GREEN, XXXXXXX, XXXXXXX XXXXXXX, XXXXXXX, XXXXXXX
), ),
[HYPER] = LAYOUT_ergodox( [CHORD] = LAYOUT_ergodox(
// left hand // left hand
XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX, XXXXXXX, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), XXXXXXX,
XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX, XXXXXXX, HYPR(KC_F6), HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), XXXXXXX,

View File

@ -1,5 +1,13 @@
// Keycode aliases // Compound keycode aliases
#define SCTL(kc) LSFT(LCTL(kc)) // Modifier keys: SHIFT+CTRL+kc combination. #define SCTL(kc) LSFT(LCTL(kc)) // Modifier keys: SHIFT+CTRL+kc combination.
#define LGAS_T(kc) MT(MOD_LGUI | MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, GUI+ALT+SHIFT when held.
#define LAS_T(kc) MT(MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, ALT+SHIFT whin held. // Tap
#define LASG_T(kc) MT(MOD_LGUI | MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, GUI+ALT+SHIFT when held.
#define LCSG_T(kc) MT(MOD_LGUI | MOD_LSFT | MOD_LCTL, kc) // Mod tap: kc when tapped, GUI+CTL+SHIFT when held.
#define LCG_T(kc) MT(MOD_LCTL | MOD_LGUI, kc) // Mod tap: kc when tapped, CTL+GUI when held.
#define LAS_T(kc) MT(MOD_LALT | MOD_LSFT, kc) // Mod tap: kc when tapped, ALT+SHIFT when held.
#define LAG_T(kc) MT(MOD_LALT | MOD_LGUI, kc) // Mod tap: kc when tapped, ALT+GUI when held.
// Others
#define COMPOSE KC_RALT // Compose key (used to input characters like á, ñ, ü). #define COMPOSE KC_RALT // Compose key (used to input characters like á, ñ, ü).

View File

@ -1,7 +1,6 @@
// Define custom user keycodes: // Define custom user keycodes:
enum custom_keycodes { enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // Can always be here. PLACEHOLDER = SAFE_RANGE, // Can always be here.
RGB_GREEN, // To set default RGB layer as green once.
MY_CUSTOM_MACRO, // Custom macro example. MY_CUSTOM_MACRO, // Custom macro example.
MY_OTHER_MACRO, // Custom macro example. MY_OTHER_MACRO, // Custom macro example.
DYNAMIC_MACRO_RANGE // Should always be the last. DYNAMIC_MACRO_RANGE // Should always be the last.

View File

@ -9,6 +9,15 @@
#include "tap_dance/tap_dances.c" #include "tap_dance/tap_dances.c"
#include "user/matrix_scan_user.c" #include "user/matrix_scan_user.c"
#include "tap_dance/mod_tap_layer_dances/none_lead.c" #include "tap_dance/mod_tap_layer_dances/none_lead.c"
#include "tap_dance/mod_tap_layer_dances/dot_comm.c"
#include "tap_dance/mod_tap_layer_dances/quot_dquot.c"
#include "tap_dance/mod_tap_layer_dances/scln_coln.c"
#include "tap_dance/mod_tap_layer_dances/u_arrows_gui.c"
#include "tap_dance/mod_tap_layer_dances/h_mouse_gui.c"
#include "tap_dance/mod_tap_layer_dances/j_media_meh.c"
#include "tap_dance/mod_tap_layer_dances/w_media_meh.c"
#include "tap_dance/mod_tap_layer_dances/k_numpad_hyper.c"
#include "tap_dance/mod_tap_layer_dances/m_chords_hyper.c"
#include "tap_dance/tap_dance_actions.c" #include "tap_dance/tap_dance_actions.c"
#include "keycodes/custom_keycodes.c" #include "keycodes/custom_keycodes.c"
#include "dynamic_macro.h" // Includes dynamic macro definitions, needed *after* the custom keycodes. #include "dynamic_macro.h" // Includes dynamic macro definitions, needed *after* the custom keycodes.

View File

@ -7,6 +7,6 @@ enum layers { // Hacker Dvorak keyboard layers:
NUMPAD = 5, // * ATM style numpad with symbols and letters that should suffice to input any numeric literal. NUMPAD = 5, // * ATM style numpad with symbols and letters that should suffice to input any numeric literal.
LAYERS = 6, // * Layer switcher used to change between DVORAK, PLOVER and GAMING layers. LAYERS = 6, // * Layer switcher used to change between DVORAK, PLOVER and GAMING layers.
MEDIA_FN = 7, // * Media, RGB and function keys from F1 to F24 in symmetric fashion. MEDIA_FN = 7, // * Media, RGB and function keys from F1 to F24 in symmetric fashion.
HYPER = 8, // * Hot keys layer (uses hyper + F1 .. F24) suitable for global shortcut tasks. CHORD = 8, // * Hot keys layer (uses hyper + F1 .. F24) suitable for global shortcut tasks.
FIRMWARE = 9 // * Layer with firmware related functionality, like the reset and EEPROM keys. FIRMWARE = 9 // * Layer with firmware related functionality, like the reset and EEPROM keys.
}; };

View File

@ -1,14 +1 @@
LEADER_EXTERNS(); LEADER_EXTERNS();
void qk_leader_start(void) {
if (!leading) {
leading = true;
leader_time = timer_read();
leader_sequence_size = 0;
leader_sequence[0] = 0;
leader_sequence[1] = 0;
leader_sequence[2] = 0;
leader_sequence[3] = 0;
leader_sequence[4] = 0;
}
}

View File

@ -9,7 +9,7 @@
"author": "SalchiPapa", "author": "SalchiPapa",
"license": "GPL-2.0", "license": "GPL-2.0",
"dependencies": { "dependencies": {
"gulp": "^3.9.1", "gulp": "^4.0.0",
"gulp-run-command": "0.0.9" "gulp-run-command": "0.0.9"
} }
} }

View File

@ -1,6 +1,7 @@
# Set any rules.mk overrides for your specific keymap here. # Set any rules.mk overrides for your specific keymap here.
# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file # See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
LINK_TIME_OPTIMIZATION_ENABLE = yes
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
MOUSEKEY_ENABLE = yes # Mouse keys(+4700b). MOUSEKEY_ENABLE = yes # Mouse keys(+4700b).

View File

@ -0,0 +1,41 @@
//instanalize an instance of 'tap' for the Dot - Comma tap dance.
static tap dot_comm_state = {
.is_press_action = true,
.state = 0
};
void dot_comm_finished(qk_tap_dance_state_t *state, void *user_data) {
dot_comm_state.state = current_dance(state);
switch (dot_comm_state.state) {
case SINGLE_TAP:
register_code(KC_DOT);
break;
case SINGLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
break;
case DOUBLE_TAP:
register_code(KC_COMM);
break;
}
}
void dot_comm_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (dot_comm_state.state) {
case SINGLE_TAP:
unregister_code(KC_DOT);
break;
case SINGLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
break;
case DOUBLE_TAP:
unregister_code(KC_COMM);
break;
}
dot_comm_state.state = 0;
}

View File

@ -0,0 +1,39 @@
//instanalize an instance of 'tap' for the H - Mouse - Gui tap dance.
static tap h_mouse_gui_state = {
.is_press_action = true,
.state = 0
};
void h_mouse_gui_finished(qk_tap_dance_state_t *state, void *user_data) {
h_mouse_gui_state.state = current_dance(state);
switch (h_mouse_gui_state.state) {
case SINGLE_TAP:
register_code(KC_H);
break;
case SINGLE_HOLD:
layer_on(MOUSE);
break;
case DOUBLE_HOLD:
register_code(KC_LGUI);
break;
}
}
void h_mouse_gui_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (h_mouse_gui_state.state) {
case SINGLE_TAP:
unregister_code(KC_H);
break;
case SINGLE_HOLD:
layer_off(MOUSE);
break;
case DOUBLE_HOLD:
unregister_code(KC_LGUI);
break;
}
h_mouse_gui_state.state = 0;
}

View File

@ -0,0 +1,43 @@
//instanalize an instance of 'tap' for the J - Media - Meh tap dance.
static tap j_media_meh_state = {
.is_press_action = true,
.state = 0
};
void j_media_meh_finished(qk_tap_dance_state_t *state, void *user_data) {
j_media_meh_state.state = current_dance(state);
switch (j_media_meh_state.state) {
case SINGLE_TAP:
register_code(KC_J);
break;
case SINGLE_HOLD:
layer_on(MEDIA_FN);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
break;
}
}
void j_media_meh_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (j_media_meh_state.state) {
case SINGLE_TAP:
unregister_code(KC_J);
break;
case SINGLE_HOLD:
layer_off(MEDIA_FN);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
break;
}
j_media_meh_state.state = 0;
}

View File

@ -0,0 +1,45 @@
//instanalize an instance of 'tap' for the K - Numpad - Hyper tap dance.
static tap k_numpad_hyper_state = {
.is_press_action = true,
.state = 0
};
void k_numpad_hyper_finished(qk_tap_dance_state_t *state, void *user_data) {
k_numpad_hyper_state.state = current_dance(state);
switch (k_numpad_hyper_state.state) {
case SINGLE_TAP:
register_code(KC_K);
break;
case SINGLE_HOLD:
layer_on(NUMPAD);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
register_code(KC_LGUI);
break;
}
}
void k_numpad_hyper_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (k_numpad_hyper_state.state) {
case SINGLE_TAP:
unregister_code(KC_K);
break;
case SINGLE_HOLD:
layer_off(NUMPAD);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
unregister_code(KC_LGUI);
break;
}
k_numpad_hyper_state.state = 0;
}

View File

@ -0,0 +1,45 @@
//instanalize an instance of 'tap' for the M - Chords - Hyper tap dance.
static tap m_chords_hyper_state = {
.is_press_action = true,
.state = 0
};
void m_chords_hyper_finished(qk_tap_dance_state_t *state, void *user_data) {
m_chords_hyper_state.state = current_dance(state);
switch (m_chords_hyper_state.state) {
case SINGLE_TAP:
register_code(KC_M);
break;
case SINGLE_HOLD:
layer_on(CHORD);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
register_code(KC_LGUI);
break;
}
}
void m_chords_hyper_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (m_chords_hyper_state.state) {
case SINGLE_TAP:
unregister_code(KC_M);
break;
case SINGLE_HOLD:
layer_off(CHORD);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
unregister_code(KC_LGUI);
break;
}
m_chords_hyper_state.state = 0;
}

View File

@ -0,0 +1,41 @@
//instanalize an instance of 'tap' for the Quote - Double Quote tap dance.
static tap quot_dquot_state = {
.is_press_action = true,
.state = 0
};
void quot_dquot_finished(qk_tap_dance_state_t *state, void *user_data) {
quot_dquot_state.state = current_dance(state);
switch (quot_dquot_state.state) {
case SINGLE_TAP:
register_code(KC_QUOT);
break;
case SINGLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LALT);
break;
case DOUBLE_TAP:
register_code16(KC_DQUO);
break;
}
}
void quot_dquot_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (quot_dquot_state.state) {
case SINGLE_TAP:
unregister_code(KC_QUOT);
break;
case SINGLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LALT);
break;
case DOUBLE_TAP:
unregister_code16(KC_DQUO);
break;
}
quot_dquot_state.state = 0;
}

View File

@ -0,0 +1,43 @@
//instanalize an instance of 'tap' for the Semicolon - Colon tap dance.
static tap scln_coln_state = {
.is_press_action = true,
.state = 0
};
void scln_coln_finished(qk_tap_dance_state_t *state, void *user_data) {
scln_coln_state.state = current_dance(state);
switch (scln_coln_state.state) {
case SINGLE_TAP:
register_code(KC_SCLN);
break;
case SINGLE_HOLD:
register_code(KC_LALT);
register_code(KC_LSFT);
register_code(KC_LGUI);
break;
case DOUBLE_TAP:
register_code16(KC_COLN);
break;
}
}
void scln_coln_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (scln_coln_state.state) {
case SINGLE_TAP:
unregister_code(KC_SCLN);
break;
case SINGLE_HOLD:
unregister_code(KC_LALT);
unregister_code(KC_LSFT);
unregister_code(KC_LGUI);
break;
case DOUBLE_TAP:
unregister_code16(KC_COLN);
break;
}
scln_coln_state.state = 0;
}

View File

@ -0,0 +1,39 @@
//instanalize an instance of 'tap' for the U - Arrows - Gui tap dance.
static tap u_arrows_gui_state = {
.is_press_action = true,
.state = 0
};
void u_arrows_gui_finished(qk_tap_dance_state_t *state, void *user_data) {
u_arrows_gui_state.state = current_dance(state);
switch (u_arrows_gui_state.state) {
case SINGLE_TAP:
register_code(KC_U);
break;
case SINGLE_HOLD:
layer_on(ARROWS);
break;
case DOUBLE_HOLD:
register_code(KC_LGUI);
break;
}
}
void u_arrows_gui_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (u_arrows_gui_state.state) {
case SINGLE_TAP:
unregister_code(KC_U);
break;
case SINGLE_HOLD:
layer_off(ARROWS);
break;
case DOUBLE_HOLD:
unregister_code(KC_LGUI);
break;
}
u_arrows_gui_state.state = 0;
}

View File

@ -0,0 +1,43 @@
//instanalize an instance of 'tap' for the W - Media - Meh tap dance.
static tap w_media_meh_state = {
.is_press_action = true,
.state = 0
};
void w_media_meh_finished(qk_tap_dance_state_t *state, void *user_data) {
w_media_meh_state.state = current_dance(state);
switch (w_media_meh_state.state) {
case SINGLE_TAP:
register_code(KC_W);
break;
case SINGLE_HOLD:
layer_on(MEDIA_FN);
break;
case DOUBLE_HOLD:
register_code(KC_LCTL);
register_code(KC_LSFT);
register_code(KC_LALT);
break;
}
}
void w_media_meh_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (w_media_meh_state.state) {
case SINGLE_TAP:
unregister_code(KC_W);
break;
case SINGLE_HOLD:
layer_off(MEDIA_FN);
break;
case DOUBLE_HOLD:
unregister_code(KC_LCTL);
unregister_code(KC_LSFT);
unregister_code(KC_LALT);
break;
}
w_media_meh_state.state = 0;
}

View File

@ -4,8 +4,6 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[MINS_UNDS] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS), [MINS_UNDS] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS),
[SLSH_BSLS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS), [SLSH_BSLS] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS),
[GRV_TILD] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_TILD), [GRV_TILD] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, KC_TILD),
[QUOT_DQUO] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_DQUO),
[SCLN_COLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
[ASTR_CIRC] = ACTION_TAP_DANCE_DOUBLE(KC_ASTR, KC_CIRC), [ASTR_CIRC] = ACTION_TAP_DANCE_DOUBLE(KC_ASTR, KC_CIRC),
[APMR_PIPE] = ACTION_TAP_DANCE_DOUBLE(KC_AMPR, KC_PIPE), [APMR_PIPE] = ACTION_TAP_DANCE_DOUBLE(KC_AMPR, KC_PIPE),
[EXLM_QUES] = ACTION_TAP_DANCE_DOUBLE(KC_EXLM, KC_QUES), [EXLM_QUES] = ACTION_TAP_DANCE_DOUBLE(KC_EXLM, KC_QUES),
@ -15,6 +13,14 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[RPRN_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC), [RPRN_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC),
[LCBR_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_LABK), [LCBR_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_LABK),
[RCBR_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_RCBR, KC_RABK), [RCBR_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_RCBR, KC_RABK),
[DOT_COMM] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COMM), [SCLN_COLN] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, scln_coln_finished, scln_coln_reset, DANCING_TERM),
[NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, none_lead_finished, none_lead_reset, DANCING_TERM) [QUOT_DQUO] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, quot_dquot_finished, quot_dquot_reset, DANCING_TERM),
[DOT_COMM] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, dot_comm_finished, dot_comm_reset, DANCING_TERM),
[NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, none_lead_finished, none_lead_reset, DANCING_TERM),
[U_ARR_GUI] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, u_arrows_gui_finished, u_arrows_gui_reset, DANCING_TERM),
[H_MOU_GUI] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, h_mouse_gui_finished, h_mouse_gui_reset, DANCING_TERM),
[J_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, j_media_meh_finished, j_media_meh_reset, DANCING_TERM),
[W_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, w_media_meh_finished, w_media_meh_reset, DANCING_TERM),
[K_NUM_HYP] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, k_numpad_hyper_finished, k_numpad_hyper_reset, DANCING_TERM),
[M_CHO_HYP] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, m_chords_hyper_finished, m_chords_hyper_reset, DANCING_TERM),
}; };

View File

@ -4,31 +4,31 @@
// Mod tap dances: // | | | | | // // Mod tap dances: // | | | | | //
enum tap_dances { //--------------------------------------------------------------------------------------------// enum tap_dances { //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
EQL_PLUS = 0, // = | + | | | | // EQL_PLUS = 0, // = | | + | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
MINS_UNDS = 1, // - | _ | | | | // MINS_UNDS = 1, // - | | _ | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
SLSH_BSLS = 2, // / | \ | | | | // SLSH_BSLS = 2, // / | | \ | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
GRV_TILD = 3, // ` | ~ | | | | // GRV_TILD = 3, // ` | | ~ | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
QUOT_DQUO = 4, // ' | " | | | | // QUOT_DQUO = 4, // ' | CTRL+ALT | " | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
SCLN_COLN = 5, // ; | : | | | | // SCLN_COLN = 5, // ; |ALT+SHIFT+META | : | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
ASTR_CIRC = 6, // * | ^ | | | | // ASTR_CIRC = 6, // * | | ^ | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
@ -36,39 +36,63 @@ enum tap_dances { //-------------------------------------------------------
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
EXLM_QUES = 8, // ! | ? | | | | // EXLM_QUES = 8, // ! | | ? | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
HASH_PERC = 9, // # | % | | | | // HASH_PERC = 9, // # | | % | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
AT_DLR = 10, // @ | $ | | | | // AT_DLR = 10, // @ | | $ | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
LPRN_LBRC = 11, // ( | [ | | | | // LPRN_LBRC = 11, // ( | | [ | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
RPRN_RBRC = 12, // ) | ] | | | | // RPRN_RBRC = 12, // ) | | ] | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
LCBR_LABK = 13, // { | < | | | | // LCBR_LABK = 13, // { | | < | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
RCBR_RABK = 14, // } | > | | | | // RCBR_RABK = 14, // } | | > | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
DOT_COMM = 15, // . | , | | | | // DOT_COMM = 15, // . | CTRL+SHIFT | , | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | // // | | | | | //
NONE_LEAD = 16, // NONE | ALT+SHIFT | LEAD | | | // NONE_LEAD = 16, // NONE | ALT+SHIFT | LEAD | | | //
// | | | | | // // | | | | | //
//--------------------------------------------------------------------------------------------// //--------------------------------------------------------------------------------------------//
// | | | | | //
U_ARR_GUI = 17, // U | ARROWS | | GUI | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
H_MOU_GUI = 18, // H | MOUSE | | GUI | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
J_MED_MEH = 19, // J | MEDIA_FN | | MEH | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
W_MED_MEH = 20, // W | MEDIA_FN | | MEH | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
K_NUM_HYP = 21, // K | NUMPAD | | HYPER | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
// | | | | | //
M_CHO_HYP = 22, // M | CHORD | | HYPER | | //
// | | | | | //
//--------------------------------------------------------------------------------------------//
}; };

View File

@ -91,7 +91,7 @@ uint32_t layer_state_set_user(uint32_t state) {
break; break;
case HYPER: case CHORD:
rgblight_sethsv_noeeprom_magenta(); rgblight_sethsv_noeeprom_magenta();
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2); rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT + 2);

View File

@ -0,0 +1,8 @@
# Sid's mods for the fc660c
Emulates original keymap with modifications for:
- Media keys
- Grave key(s)
- Reset on the function layer
- Mouse keys ala Tada68

View File

@ -0,0 +1,19 @@
/* Copyright 2019 Khader Syed
*
* 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/>.
*/
#pragma once
// place overrides here

View File

@ -0,0 +1,60 @@
/*
Copyright 2019 Khader Syed
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 QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BASE layer: Default Layer
* ,--------------------------------------------------------------------------------------------------.
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | | ` |
* |-----------------------------------------------------------------------------------------+ +-----+
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | | Del |
* |-----------------------------------------------------------------------------------------+ +-----+
* | ` | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
* |--------------------------------------------------------------------------------------------+
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Up |
* +--------------------------------------------------------------------------------------------+-----+
* | Ctrl | Alt | Gui | Space | Fn | Ctrl | Alt | Left| Down|Right|
* `--------------------------------------------------------------------------------------------------´
*/
[0] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_GRV,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL,
KC_GRV ,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP,
KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, MO(1),KC_RCTL,KC_RALT, KC_LEFT,KC_DOWN,KC_RGHT
),
/* FN layer
* ,--------------------------------------------------------------------------------------------------.
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Mute| | Vol-|
* |-----------------------------------------------------------------------------------------+ +-----+
* | | | | | | | | |PrtSc| Slck| Paus| | | | | Vol+|
* |-----------------------------------------------------------------------------------------+ +-----+
* | | | | | | | | | Home| PgUp| | | |
* |--------------------------------------------------------------------------------------------+
* | | | | | | | | | End | PgDn| | Mouse Btn 1 | MsU |
* +--------------------------------------------------------------------------------------------+-----+
* | | Reset | | | | | | MsL | MsD | MsR |
* `--------------------------------------------------------------------------------------------------´
*/
[1] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_VOLU,
_______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______, KC_VOLD,
_______,_______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGUP,_______,_______, _______,
_______,_______,_______,_______,_______,_______,_______,_______,KC_END, KC_PGDN,_______,KC_BTN1, KC_MS_U,
_______, RESET,_______, _______, MO(1), _______,_______, KC_MS_L,KC_MS_D,KC_MS_R
)
};

View File

@ -0,0 +1,49 @@
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x4DAE
#define PRODUCT_ID 0x1000
#define DEVICE_VER 0x0001
#define MANUFACTURER joelproko
#define PRODUCT jopr-106-Nl2SR-Cl2nL
#define DESCRIPTION jopr-106 Mechanical Keyboard
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 11
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D6, D2, D4, D3, D5, D7, C6, B6, F5 }
#define MATRIX_COL_PINS { B3, B2, B1, B0, F7, E6, F6, B5, C7, B4, D1 }
#define UNUSED_PINS { B7 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* number of backlight levels */
#ifdef BACKLIGHT_PIN
#define BACKLIGHT_LEVELS 0
#endif
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
/* #define LOCKING_SUPPORT_ENABLE */
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) */
#define NO_ACTION_ONESHOT
#define TAPPING_TOGGLE 3
/*#define RGB_DI_PIN F4*/
#ifdef RGB_DI_PIN
/*#define RGBLIGHT_ANIMATIONS*/
#define RGBLED_NUM 1
#define RGBLIGHT_HUE_STEP 1
#define RGBLIGHT_SAT_STEP 1
#define RGBLIGHT_VAL_STEP 1
#endif

View File

@ -0,0 +1,562 @@
{
"keyboard_name": "jopr-106",
"url": "https://github.com/joelproko/keyboard_layout_jopr",
"maintainer": "joelproko",
"width": 22.5,
"height": 6.25,
"layouts": {
"LAYOUT": {
"key_count": 106,
"layout": [
{
"label": "MX_A0",
"x": 0,
"y": 0
},
{
"label": "MX_B0",
"x": 1.25,
"y": 0
},
{
"label": "MX_C0",
"x": 2.25,
"y": 0
},
{
"label": "MX_D0",
"x": 3.25,
"y": 0
},
{
"label": "MX_E0",
"x": 4.25,
"y": 0
},
{
"label": "MX_F0",
"x": 5.5,
"y": 0
},
{
"label": "MX_G0",
"x": 6.5,
"y": 0
},
{
"label": "MX_H0",
"x": 7.5,
"y": 0
},
{
"label": "MX_I0",
"x": 8.5,
"y": 0
},
{
"label": "MX_J0",
"x": 9.75,
"y": 0
},
{
"label": "MX_A6",
"x": 10.75,
"y": 0
},
{
"label": "MX_B6",
"x": 11.75,
"y": 0
},
{
"label": "MX_C6",
"x": 12.75,
"y": 0
},
{
"label": "MX_D6",
"x": 14,
"y": 0
},
{
"label": "MX_E6",
"x": 15.25,
"y": 0
},
{
"label": "MX_F6",
"x": 16.25,
"y": 0
},
{
"label": "MX_G6",
"x": 17.25,
"y": 0
},
{
"label": "MX_H6",
"x": 18.25,
"y": 0
},
{
"label": "MX_A1",
"x": 0,
"y": 1.25
},
{
"label": "MX_B1",
"x": 1,
"y": 1.25
},
{
"label": "MX_C1",
"x": 2,
"y": 1.25
},
{
"label": "MX_D1",
"x": 3,
"y": 1.25
},
{
"label": "MX_E1",
"x": 4,
"y": 1.25
},
{
"label": "MX_F1",
"x": 5,
"y": 1.25
},
{
"label": "MX_G1",
"x": 6,
"y": 1.25
},
{
"label": "MX_H1",
"x": 7,
"y": 1.25
},
{
"label": "MX_I1",
"x": 8,
"y": 1.25
},
{
"label": "MX_J1",
"x": 9,
"y": 1.25
},
{
"label": "MX_A7",
"x": 10,
"y": 1.25
},
{
"label": "MX_B7",
"x": 11,
"y": 1.25
},
{
"label": "MX_C7",
"x": 12,
"y": 1.25
},
{
"label": "MX_D7",
"x": 13,
"y": 1.25,
"w": 2
},
{
"label": "MX_E7",
"x": 15.25,
"y": 1.25
},
{
"label": "MX_F7",
"x": 16.25,
"y": 1.25
},
{
"label": "MX_G7",
"x": 17.25,
"y": 1.25
},
{
"label": "MX_H7",
"x": 18.25,
"y": 1.25
},
{
"label": "MX_A2",
"x": 0,
"y": 2.25,
"w": 1.5
},
{
"label": "MX_B2",
"x": 1.5,
"y": 2.25
},
{
"label": "MX_C2",
"x": 2.5,
"y": 2.25
},
{
"label": "MX_D2",
"x": 3.5,
"y": 2.25
},
{
"label": "MX_E2",
"x": 4.5,
"y": 2.25
},
{
"label": "MX_F2",
"x": 5.5,
"y": 2.25
},
{
"label": "MX_G2",
"x": 6.5,
"y": 2.25
},
{
"label": "MX_H2",
"x": 7.5,
"y": 2.25
},
{
"label": "MX_I2",
"x": 8.5,
"y": 2.25
},
{
"label": "MX_J2",
"x": 9.5,
"y": 2.25
},
{
"label": "MX_A8",
"x": 10.5,
"y": 2.25
},
{
"label": "MX_B8",
"x": 11.5,
"y": 2.25
},
{
"label": "MX_C8",
"x": 12.5,
"y": 2.25
},
{
"label": "MX_D8",
"x": 13.75,
"y": 2.25,
"w": 1.25,
"h": 2
},
{
"label": "MX_E8",
"x": 15.25,
"y": 2.25
},
{
"label": "MX_F8",
"x": 16.25,
"y": 2.25
},
{
"label": "MX_G8",
"x": 17.25,
"y": 2.25
},
{
"label": "MX_H8",
"x": 18.25,
"y": 2.25,
"h": 2
},
{
"label": "MX_A3",
"x": 0,
"y": 3.25,
"w": 1.75
},
{
"label": "MX_B3",
"x": 1.75,
"y": 3.25
},
{
"label": "MX_C3",
"x": 2.75,
"y": 3.25
},
{
"label": "MX_D3",
"x": 3.75,
"y": 3.25
},
{
"label": "MX_E3",
"x": 4.75,
"y": 3.25
},
{
"label": "MX_F3",
"x": 5.75,
"y": 3.25
},
{
"label": "MX_G3",
"x": 6.75,
"y": 3.25
},
{
"label": "MX_H3",
"x": 7.75,
"y": 3.25
},
{
"label": "MX_I3",
"x": 8.75,
"y": 3.25
},
{
"label": "MX_J3",
"x": 9.75,
"y": 3.25
},
{
"label": "MX_A9",
"x": 10.75,
"y": 3.25
},
{
"label": "MX_B9",
"x": 11.75,
"y": 3.25
},
{
"label": "MX_C9",
"x": 12.75,
"y": 3.25
},
{
"label": "MX_E9",
"x": 15.25,
"y": 3.25
},
{
"label": "MX_F9",
"x": 16.25,
"y": 3.25
},
{
"label": "MX_G9",
"x": 17.25,
"y": 3.25
},
{
"label": "MX_H9",
"x": 19.5,
"y": 3.25
},
{
"label": "MX_K1",
"x": 20.5,
"y": 3.25
},
{
"label": "MX_K0",
"x": 21.5,
"y": 3.25
},
{
"label": "MX_A4",
"x": 0,
"y": 4.25,
"w": 1.25
},
{
"label": "MX_B4",
"x": 1.25,
"y": 4.25
},
{
"label": "MX_C4",
"x": 2.25,
"y": 4.25
},
{
"label": "MX_D4",
"x": 3.25,
"y": 4.25
},
{
"label": "MX_E4",
"x": 4.25,
"y": 4.25
},
{
"label": "MX_F4",
"x": 5.25,
"y": 4.25
},
{
"label": "MX_G4",
"x": 6.25,
"y": 4.25
},
{
"label": "MX_H4",
"x": 7.25,
"y": 4.25
},
{
"label": "MX_I4",
"x": 8.25,
"y": 4.25
},
{
"label": "MX_J4",
"x": 9.25,
"y": 4.25
},
{
"label": "MX_I9",
"x": 10.25,
"y": 4.25
},
{
"label": "MX_I8",
"x": 11.25,
"y": 4.25
},
{
"label": "MX_I7",
"x": 12.25,
"y": 4.25,
"w": 2.75
},
{
"label": "MX_I6",
"x": 15.25,
"y": 4.25
},
{
"label": "MX_J9",
"x": 16.25,
"y": 4.25
},
{
"label": "MX_J8",
"x": 17.25,
"y": 4.25
},
{
"label": "MX_J7",
"x": 18.25,
"y": 4.25,
"h": 2
},
{
"label": "MX_J6",
"x": 19.5,
"y": 4.25
},
{
"label": "MX_K3",
"x": 20.5,
"y": 4.25
},
{
"label": "MX_K2",
"x": 21.5,
"y": 4.25
},
{
"label": "MX_A5",
"x": 0,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_B5",
"x": 1.25,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_C5",
"x": 2.5,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_D5",
"x": 3.75,
"y": 5.25,
"w": 6.25
},
{
"label": "MX_J5",
"x": 10,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_I5",
"x": 11.25,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_K9",
"x": 12.5,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_E5",
"x": 13.75,
"y": 5.25,
"w": 1.25
},
{
"label": "MX_K8",
"x": 15.25,
"y": 5.25,
"w": 2
},
{
"label": "MX_K7",
"x": 17.25,
"y": 5.25
},
{
"label": "MX_K6",
"x": 19.5,
"y": 5.25
},
{
"label": "MX_K5",
"x": 20.5,
"y": 5.25
},
{
"label": "MX_K4",
"x": 21.5,
"y": 5.25
}
]
}
}
}

View File

@ -0,0 +1,11 @@
#include "jopr.h"
void matrix_init_kb(void) {
matrix_init_user();
led_init_ports();
};
void led_init_ports(void) {
setPinOutput(F0);
setPinOutput(F1);
setPinOutput(F4);
}

View File

@ -0,0 +1,24 @@
#pragma once
#include "quantum.h"
#define LAYOUT( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K600, K601, K602, K603, K604, K605, K606, K607, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K700, K701, K702, K703, K704, K705, K706, K707, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K800, K801, K802, K803, K804, K805, K806, K807, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K900, K901, K902, K904, K905, K906, K907, K110, K010, \
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K908, K808, K708, K608, K909, K809, K709, K609, K310, K210, \
K500, K501, K502, K503, K509, K508, K910, K504, K810, K710, K610, K510, K410 \
) \
{ \
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310 }, \
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410 }, \
{ K500, K501, K502, K503, K504, KC_NO, KC_NO, KC_NO, K508, K509, K510 }, \
{ K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, K610 }, \
{ K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, K710 }, \
{ K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K810 }, \
{ K900, K901, K902, KC_NO, K904, K905, K906, K907, K908, K909, K910 } \
}

View File

@ -0,0 +1,59 @@
#include QMK_KEYBOARD_H
#define _BL 0
#define _FN 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NO, KC_CAPS, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_MHEN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_P4, KC_P5, KC_P6, KC_PGUP, KC_INS, KC_PGDN,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, KC_HOME, KC_UP, KC_END,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, LT(_FN,KC_APP), KC_RCTL, KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSREQ, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_MUTE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, KC_VOLD, KC_MSTP, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
)
};
void led_set_user(uint8_t usb_led) {
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
writePinHigh(F1);
} else {
writePinLow(F1);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
writePinHigh(F0);
} else {
writePinLow(F0);
}
if (!(IS_LED_ON(usb_led, USB_LED_NUM_LOCK))) {
tap_code(KC_NUMLOCK);
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static bool sysreq_led = false;
if (record->event.pressed) {
if (sysreq_led) {
sysreq_led = false;
writePinLow(F4);
}
else {
switch(keycode) {
case KC_SYSREQ:
sysreq_led = true;
writePinHigh(F4);
}
}
}
return true;
}

View File

@ -0,0 +1,59 @@
#include QMK_KEYBOARD_H
#define _BL 0
#define _FN 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NO, KC_CAPS, KC_SLCK, KC_PAUS,
KC_NUHS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NUBS, KC_SLSH, KC_BSPC, KC_PSCR, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT, KC_INT1, KC_J, KC_M, KC_L, KC_U, KC_LBRC, KC_RBRC, KC_ENT, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_MHEN, KC_A, KC_T, KC_H, KC_E, KC_B, KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I, KC_EQL, KC_P4, KC_P5, KC_P6, KC_PGUP, KC_INS, KC_PGDN,
KC_LSFT, KC_GRV, KC_P, KC_K, KC_G, KC_W, KC_Q, KC_X, KC_R, KC_F, KC_DOT, KC_Z, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, KC_HOME, KC_UP, KC_END,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, LT(_FN,KC_APP), KC_RCTL, KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SYSREQ, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_MUTE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, KC_VOLD, KC_MSTP, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
)
};
void led_set_user(uint8_t usb_led) {
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
writePinHigh(F1);
} else {
writePinLow(F1);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
writePinHigh(F0);
} else {
writePinLow(F0);
}
if (!(IS_LED_ON(usb_led, USB_LED_NUM_LOCK))) {
tap_code(KC_NUMLOCK);
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static bool sysreq_led = false;
if (record->event.pressed) {
if (sysreq_led) {
sysreq_led = false;
writePinLow(F4);
}
else {
switch(keycode) {
case KC_SYSREQ:
sysreq_led = true;
writePinHigh(F4);
}
}
}
return true;
}

View File

@ -0,0 +1,17 @@
# jopr-106-Nl2SR-Cl2MH
106-key based on ISO 105-key, NumLock to SysReq, CapsLock to Muhenkan/ROYA, NumLock state forced on
![jopr-106-default](https://raw.githubusercontent.com/joelproko/keyboard_layout_jopr/master/keycode_layout_default.png)
![jopr-106-modded_white](https://raw.githubusercontent.com/joelproko/keyboard_layout_jopr/master/keycap_layout_modded_white.png)
Inspired by [KeyBored](https://github.com/itractus/KeyBored) and [white_keyboard_layout](https://github.com/mw8/white_keyboard_layout)
Keyboard Maintainer: [joelproko](https://github.com/joelproko)
Hardware: https://github.com/joelproko/keyboard_layout_jopr
Make example for this keyboard (after setting up your build environment):
make jopr:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,63 @@
# MCU name
MCU = atmega32u4
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16000000
#
# LUFA specific
#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Interrupt driven control endpoint task(+60)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
# Bootloader selection
# Teensy halfkay
# Pro Micro caterina
# Atmel DFU atmel-dfu
# LUFA DFU lufa-dfu
# QMK DFU qmk-dfu
# atmega32a bootloadHID
BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
UNICODE_ENABLE = yes
RGBLIGHT_ENABLE = no

View File

@ -56,7 +56,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN E2 #define RGB_DI_PIN E2
#ifdef RGB_DI_PIN #ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 18 #define RGBLED_NUM 20
#define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_VAL_STEP 8

View File

@ -0,0 +1,27 @@
/*
Copyright 2017 Danny Nguyen <danny@hexwire.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/>.
*/
#pragma once
// #define USE_I2C
/* Select hand configuration */
// #define MASTER_RIGHT
// #define EE_HANDS
#undef RGBLED_NUM
#define RGBLED_NUM 12

View File

@ -0,0 +1,91 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
#define _BASE 0
#define _L 1
#define _R 2
enum custom_keycodes {
QWERTY = SAFE_RANGE
};
#define KC_TL LCTL(KC_PGUP)
#define KC_TR LCTL(KC_PGDN)
#define KC_TC LCTL(KC_W)
#define KC_TRO LCTL(LSFT(KC_T))
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_DEL ,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT ,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_CAPS, KC_LCTL, KC_LGUI, KC_LALT, MO(_L) , KC_SPC , KC_SPC , TG(_R) , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
//└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┘
),
[_L] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_BSLS,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_PGUP, KC_HOME, KC_END , _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┘
),
[_R] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, KC_TL , KC_TR , KC_TC , KC_TRO , _______, _______, KC_TL , KC_TR , KC_TC , KC_TRO , _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, KC_PGDN, KC_PGUP, KC_HOME, KC_END , _______, _______, KC_PGDN, KC_PGUP, KC_HOME, KC_END , _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┘
)
};
void keyboard_post_init_user(void) {
rgblight_sethsv_noeeprom(HSV_BLUE);
}
void update_led(void) {
switch (biton32(layer_state)) {
case _BASE:
rgblight_sethsv_noeeprom(HSV_BLUE);
break;
case _L:
rgblight_sethsv_noeeprom(HSV_CORAL);
break;
case _R:
rgblight_sethsv_noeeprom(HSV_MAGENTA);
break;
}
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
rgblight_sethsv_range(HSV_WHITE,0,3);
rgblight_sethsv_range(HSV_WHITE,9,12);
}
}
uint32_t layer_state_set_user(uint32_t state) {
update_led();
return state;
}
void led_set_user(uint8_t usb_led) {
update_led();
}

View File

@ -0,0 +1,52 @@
# George Petri's Nyquist layout
```
make keebio/nyquist/rev2:georgepetri
```
Features a dedicated navigation layer on rise and current layer status on rgb underglow.
### Base Layer
```
┌──────┬──────┬──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┬──────┬──────┐
│ GRAVE│ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ BSPC │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ TAB │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ DEL │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ ESC │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ SCLN│ QUOT │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ LSFT│ Z │ X │ C │ V │ B │ │ N │ M │ COMM │ DOT │ SLSH│ ENT │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ CAPS│ LCTL│ LGUI │ LALT │MO(_L)│ SPC │ │ SPC │MO(_R)│ LEFT │ DOWN│ UP │ RGHT │
└──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘
```
### Lower
```
┌──────┬──────┬──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┬──────┬──────┐
│ │ F1 │ F2 │ F3 │ F4 │ F5 │ │ F6 │ F7 │ F8 │ F9 │ F10 │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ F11 │ F12 │ │ │ │ │ │ │ │ │ │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │ │ │ │ MINS│ EQL │ LBRC│ RBRC│ BSLS │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │ │ │ │ PGDN│ PGUP │ HOME│ END │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │
└──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘
```
### Rise
```
┌──────┬──────┬──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┬──────┬──────┐
│ │ │ │ │ │ │ │ │ │ │ │ │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ TAB_L│ TAB_R│ TAB_C│ TAB_R│ │ │ │ TAB_L│ TAB_R│ TAB_C│ TAB_R│ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ LEFT │ DOWN │ UP │ RGHT │ │ │ LEFT │ DOWN │ UP │ RGHT │ │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ PGDN │ PGUP │ HOME│ END │ │ │ │ PGDN │ PGUP │ HOME│ END │ │
├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │
└──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘
```

View File

@ -0,0 +1,3 @@
RGBLIGHT_ENABLE = yes
MOUSEKEY_ENABLE = no
COMMAND_ENABLE = no

View File

@ -3,15 +3,11 @@
enum layer { enum layer {
LAYER_DEFAULT, LAYER_DEFAULT,
LAYER_FUNCTION, LAYER_FUNCTION,
LAYER_MOUSE,
}; };
/* Switch to function layer when held. */ /* Switch to function layer when held. */
#define LY_FUNC MO(LAYER_FUNCTION) #define LY_FUNC MO(LAYER_FUNCTION)
/* Switch to mouse layer when held; send menu key when tapped. */
#define LY_MOUSE LT(LAYER_MOUSE, KC_APP)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Default layer: http://www.keyboard-layout-editor.com/#/gists/60a262432bb340b37d364a4424f3037b */ /* Default layer: http://www.keyboard-layout-editor.com/#/gists/60a262432bb340b37d364a4424f3037b */
[LAYER_DEFAULT] = LAYOUT_65( [LAYER_DEFAULT] = LAYOUT_65(
@ -19,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, LY_FUNC, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FUNC, LY_MOUSE, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, LY_FUNC, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FUNC, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
), ),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */ /* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */
@ -30,13 +26,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
), ),
/* Mouse layer: http://www.keyboard-layout-editor.com/#/gists/05b9fbe8a34f65ed85ded659b3941152 */
[LAYER_MOUSE] = LAYOUT_65(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN3,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_D,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN3, KC_BTN1, KC_MS_U, KC_BTN2,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
),
}; };

View File

@ -2,16 +2,12 @@
This is pretty much a stock 65% split keyboard layout, with an HHKB-style This is pretty much a stock 65% split keyboard layout, with an HHKB-style
(split) backspace, media keys in the function layer centered around the WASD (split) backspace, media keys in the function layer centered around the WASD
cluster, and mouse keys on their own layer centered around the arrow cluster. cluster, and RGB controls in the function layer on the arrow/nav keys.
## Default layer ## Default layer
![Default layer layout](https://i.imgur.com/3riRFev.png) ![Default layer layout](https://i.imgur.com/CU2fxDg.png)
## Function layer ## Function layer
![Function layer layout](https://i.imgur.com/4R1F72M.png) ![Function layer layout](https://i.imgur.com/4R1F72M.png)
## Mouse layer
![Mouse layer layout](https://i.imgur.com/LmGgJEG.png)

View File

@ -5,6 +5,8 @@
#define PERMISSIVE_HOLD #define PERMISSIVE_HOLD
#define TAPPING_TERM 150 #define TAPPING_TERM 150
#define TAP_HOLD_CAPS_DELAY 0
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// #define DISABLE_RGB_MATRIX_SOLID_COLOR // #define DISABLE_RGB_MATRIX_SOLID_COLOR

View File

@ -206,7 +206,7 @@ void rgb_matrix_indicators_user(void)
rgb_matrix_set_color(71, 0x00, 0xFF, 0x01); //MAS_GRN rgb_matrix_set_color(71, 0x00, 0xFF, 0x01); //MAS_GRN
rgb_matrix_set_color(72, 0xFF, 0xA5, 0x18); //MAS_CRM rgb_matrix_set_color(72, 0xFF, 0xA5, 0x18); //MAS_CRM
rgb_matrix_set_color(60, 0x81, 0x3C, 0xFF); //MAS_PRP rgb_matrix_set_color(60, 0x81, 0x3C, 0xFF); //MAS_PRP
rgb_matrix_set_color(26, 0xFF, 0xFF, 0xFF); //MAS_WHT rgb_matrix_set_color(43, 0xFF, 0xFF, 0xFF); //MAS_WHT
} }
break; break;
} }

View File

@ -101,10 +101,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/ */
[_NAV] = LAYOUT_ortho( [_NAV] = LAYOUT_ortho(
ALTF4, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, RGB_TOG, RGB_MOD, RGB_HUI, CU_RGBV, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, RGB_TOG, RGB_MOD, RGB_HUI, CU_RGBV, _______,
RESET, CU_ESCT, _______, _______, _______, KC_SPC, CTLENT, RGB_M_P, _______, _______, _______, CU_GAME RESET, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, RGB_M_P, _______, _______, _______, CU_GAME
) )
}; };

View File

@ -1,7 +1,7 @@
NK65 NK65
========= =========
[NK65]() ![NK65](https://i.imgur.com/EXNbVpL.jpg)
This is a standard fixed layout 65% PCB. It supports VIA and full per-key RGB. This is a standard fixed layout 65% PCB. It supports VIA and full per-key RGB.

View File

@ -21,87 +21,32 @@
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \ ) \
{ \ { \
{ k00, k01, k02, k03, k04, k05 }, \ { k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \ { k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \ { k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \ { k30, k31, k32, k3a, k3b, KC_NO }, \
{ k06, k07, k08, k09, k0a, k0b }, \ { k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \ { k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \ { k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, k35 } \ { k37, k38, k39, k33, k34, k35 } \
} }
#define LAYOUT_planck_1x2uR( \ #define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \ k30, k31, k32, k33, k34, k35, KC_NO, k37, k38, k39, k3a, k3b \
) \ ) \
{ \ LAYOUT_planck_1x2uC( \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, k35 } \
}
#define LAYOUT_planck_1x2uL( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \ )
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, k35 } \
}
#define LAYOUT_planck_2x2u( \ #define KEYMAP LAYOUT_ortho_4x12
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ #define LAYOUT_planck_mit LAYOUT_planck_1x2uC
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ #define LAYOUT_planck_grid LAYOUT_ortho_4x12
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, k35 } \
}
#define LAYOUT_planck_grid( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, KC_NO, k36, k37, k38, k39, k3a \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, KC_NO }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, k35 } \
}
#define KEYMAP LAYOUT_planck_grid
#define LAYOUT_ortho_4x12 LAYOUT_planck_grid
#define KC_LAYOUT_ortho_4x12 KC_KEYMAP

View File

@ -0,0 +1,115 @@
{
"keyboard_name": "Planck EZ",
"keyboard_folder": "planck/ez",
"url": "https://ergodox-ez.com/pages/planck",
"maintainer": "jackhumbert",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_planck_1x2uC": {
"key_count": 47,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3, "w": 2 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
},
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3 },
{ "x": 6, "y": 3 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
}
}
}

View File

@ -0,0 +1,15 @@
# Planck EZ
![Planck EZ](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/planck/ez/neat-planck-banner.png)
A variant of the Planck featuring a 2u spacebar and per-key RGB backlighting.
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck EZ
Hardware Availability: [ergodox-ez.com](https://ergodox-ez.com/pages/planck)
Make example for this keyboard (after setting up your build environment):
make planck/ez:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,39 @@
#pragma once
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(PLANCK_SOUND)
// #define STARTUP_SONG SONG(NO_SOUND)
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
SONG(COLEMAK_SOUND), \
SONG(DVORAK_SOUND) \
}
#endif
/*
* MIDI options
*/
/* Prevent use of disabled MIDI features in the keymap */
//#define MIDI_ENABLE_STRICT 1
/* enable basic MIDI features:
- MIDI notes can be sent when in Music mode is on
*/
#define MIDI_BASIC
/* enable advanced MIDI features:
- MIDI notes can be added to the keymap
- Octave shift and transpose
- Virtual sustain, portamento, and modulation wheel
- etc.
*/
//#define MIDI_ADVANCED
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
// Most tactile encoders have detents every 4 stages
#define ENCODER_RESOLUTION 4

View File

@ -0,0 +1,141 @@
[
{
"backcolor": "#ffffff",
"name": "Deft Plank",
"author": "Michael Speiserß",
"switchMount": "cherry",
"switchBrand": "gateron",
"switchType": "KS-3-Tea",
"plate": true,
"pcb": true
},
[
{
"c": "#ba0000",
"sb": "gateron",
"st": "KS-3-Tea",
"a": 5
},
"\nDel\n\n\n\n\nEsc",
{
"c": "#cccccc",
"a": 4
},
"\n\n!\n\n\n\n\n\n1\nQ\nAlt 1",
"\n\n@\n\n\n\n\n\n2\nW\nAlt 2",
"\n\n#\n\n\n\n\n\n3\nE\nAlt 3",
"\n\n$\n\n\n\n\n\n4\nR\nAlt 4",
"\n\n%\n\n\n\n\n\n5\nT\n(",
"\n\n^\n\n\n\n\n\n6\nY\n)",
"\n\n&\n\n\n\n\n\n7\nU\nNum 7",
"\n\n*\n\n\n\n\n\n8\nI\nNum 8",
"\n\n(\n\n\n\n\n\n9\nO\nNum 9",
"\n\n)\n\n\n\n\n\n0\nP\nNum 0",
{
"c": "#ba0000",
"a": 7
},
"Bksp"
],
[
{
"c": "#365eff"
},
"Tab",
{
"c": "#cccccc",
"a": 4
},
"\n\n\n~\n\n\n\n\nF1\nA\n`",
"\n\n\n|\n\n\n\n\nF2\nS\n\\",
"\n\n\n+\n\n\n\n\nF3\nD\n=",
{
"n": true
},
"\n\n\n_\n\n\n\n\nF4\nF\n-",
{
"a": 5
},
"F5\n<\n\n\n\n\nG",
"F6\n>\n\n\n\n\nH",
{
"n": true
},
"F7\nNum 4\n\n\n\n\nJ",
"F8\nNum 5\n\n\n\n\nK",
"F9\nNum 6\n\n\n\n\nL",
{
"a": 4
},
"\n\n\n\n\n\n\n:\nF10\n;\nNum .",
"\n\n\n\n\n\n\n\"\n\n'\nNumLk"
],
[
{
"c": "#365eff",
"a": 7
},
"Shift",
{
"c": "#cccccc",
"a": 5
},
"F11\nNum /\n\n\n\n\nZ",
"F12\nNum *\n\n\n\n\nX",
"F13\nNum -\n\n\n\n\nC",
"F14\nNum +\n\n\n\n\nV",
"F15\n[\n\n\n\n\nB",
"F16\n]\n\n\n\n\nN",
"F17\nNum 1\n\n\n\n\nM",
{
"a": 4
},
"\n\n\n\n\n\n\n<\nF18\n,\nNum 2",
"\n\n\n\n\n\n\n>\nF19\n.\nNum 3",
{
"c": "#365eff",
"a": 5
},
"Vol+\nPgup\n\n\n\n\n&uarr;",
{
"c": "#cccccc",
"a": 4
},
"\n\n\n\n\n\n\n?\n\n/\nNum ="
],
[
{
"c": "#365eff",
"a": 7
},
"Ctrl",
{
"a": 5
},
"\nOption\n\n\n\n\nAlt",
"\n⌘\n\n\n\n\nWin",
"Cut\nPaste\n\n\n\n\nCopy",
{
"c": "#3f8f00",
"a": 7
},
"Lower",
{
"c": "#cccccc",
"w": 2
},
"",
{
"c": "#3f8f00"
},
"Raise",
{
"c": "#365eff",
"a": 5
},
"\nNumE\n\n\n\n\nReturn",
"Play\nHome\n\n\n\n\n&larr;",
"Vol -\nPgdn\n\n\n\n\n&darr;",
"Next\nEnd\n\n\n\n\n&rarr;"
]
]

View File

@ -0,0 +1,138 @@
/*
* The Deft layout for the Planck Keyboard
* Version 1.0
*
* A keyboard layout designed for efficiency in programming and transferability between ortholinear boards.
* Deft is currently supported on the following boards:
* Planck (12x4)
*
* The Deft keyboard layout was designed by Michael Speiser. You can find other Deft layouts at my Github:
* https://github.com/Speiserm
*
* For questions, issues, or feedback, feel free to email me at Speiserm@pm.me.
*
*
* Flashing:
*
* Rev 5 or earlier:
* make planck/revX:deft:dfu
*
* Rev 6:
* make planck/rev6:deft:dfu-util
*
*
*
*
*
*
*
*
*
*
*
*
*
*
* Follow my cat:
* https://twitter.com/CatBucha
* https://www.instagram.com/buchathecat/
*
*/
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
enum planck_layers {
_QWERTY,
_LOWER,
_RAISE,
_ADJUST
};
enum planck_keycodes {
QWERTY = SAFE_RANGE
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Tab | A | S | D | F | G | H | J | K | L | ; | ' |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* |Shift | Z | X | C | V | B | N | M | , | . | Up | / |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | Alt | GUI | Copy |Lower | Space |Raise |Enter | Left | Down |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_planck_grid(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH,
KC_LCTL, KC_LALT, KC_LGUI, C(KC_C), LOWER, KC_SPC, KC_SPC, RAISE, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Lower
* ,-----------------------------------------------------------------------------------.
* | Del | Alt1 | Alt2 | Alt3 | Alt4 | ( | ) | Num7 | Num8 | Num9 | Num0 | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | ` | \ | = | - | < | > | Num4 | Num5 | Num6 | Num. | NumL |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | Num/ | Num* | Num- | Num+ | [ | ] | Num1 | Num2 | Num3 | Pgup | Num= |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | |Paste | | | | NumE | Home | Pgdn | End |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_planck_grid(
KC_DEL, A(KC_1), A(KC_2), A(KC_3), A(KC_4), S(KC_9), S(KC_0), KC_P7, KC_P8, KC_P9, KC_P0, _______,
_______, KC_GRV,KC_BSLS,KC_EQL, KC_MINS,S(KC_COMM),S(KC_DOT), KC_P4, KC_P5, KC_P6, KC_PDOT, KC_NLCK,
_______, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_LBRC, KC_RBRC, KC_P1, KC_P2, KC_P3, KC_PGUP, KC_PEQL,
_______, _______, _______, C(KC_V), _______, _______, _______, _______, KC_PENT, KC_HOME,KC_PGDOWN, KC_END
),
/* Raise
* ,-----------------------------------------------------------------------------------.
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | Vol+ | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | Cut | | | | | Play | Vol- | Next |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_planck_grid(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_VOLU, _______,
_______, _______, _______, C(KC_X), _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_MNXT
),
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
* |Reset | | | | | | | | | | | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
uint32_t layer_state_set_user(uint32_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

View File

@ -0,0 +1,73 @@
# The Deft Planck Layout
![Deft layout for the Planck keyboard](https://i.imgur.com/VtUkAyh.png)
The Deft Planck layout is designed for efficiency in programming and transferability between ortholinear boards. It features a fairly standard default layer with properly placed arrow keys, a lower layer with a usable numpad and symbols, and a raise layer for numbers, f-keys, and music controls. The code is also cut down to only what you need. The result is a very usable Planck that can easily replace fullsize layouts.
The strangely placed Enter key is meant to be closer to your thumb and moving it allows for proper arrow key placement without disturbing our layout too much. I wanted to separate the enter key from the forward slash key anyway, as I was commonly pressing enter when I meant to type a question mark. You get used to it pretty fast.
Follow my cat:
https://twitter.com/CatBucha
https://www.instagram.com/buchathecat/
## Flashing:
| Rev 5 or earlier: | Rev 6: |
|-|-|
| `make planck/revX:deft:dfu` | `make planck/rev6:deft:dfu-util` |
## Layout:
### QWERTY layer
```
,-----------------------------------------------------------------------------------.
| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|------+------+------+------+------+-------------+------+------+------+------+------|
| Tab | A | S | D | F | G | H | J | K | L | ; | ' |
|------+------+------+------+------+------|------+------+------+------+------+------|
|Shift | Z | X | C | V | B | N | M | , | . | Up | / |
|------+------+------+------+------+------+------+------+------+------+------+------|
| Ctrl | Alt | GUI | Copy |Lower | Space |Raise |Enter | Left | Down |Right |
`-----------------------------------------------------------------------------------'
```
### Lower layer
```
,-----------------------------------------------------------------------------------.
| Del | Alt1 | Alt2 | Alt3 | Alt4 | ( | ) | Num7 | Num8 | Num9 | Num0 | |
|------+------+------+------+------+-------------+------+------+------+------+------|
| | ` | \ | = | - | < | > | Num4 | Num5 | Num6 | Num. | NumL |
|------+------+------+------+------+------|------+------+------+------+------+------|
| | Num/ | Num* | Num- | Num+ | [ | ] | Num1 | Num2 | Num3 | Pgup | Num= |
|------+------+------+------+------+------+------+------+------+------+------+------|
| | | |Paste | | | | NumE | Home | Pgdn | End |
`-----------------------------------------------------------------------------------'
```
### Raise layer
```
,-----------------------------------------------------------------------------------.
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|------+------+------+------+------+-------------+------+------+------+------+------|
| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
|------+------+------+------+------+------|------+------+------+------+------+------|
| | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | Vol+ | |
|------+------+------+------+------+------+------+------+------+------+------+------|
| | | | Cut | | | | | Play | Vol- | Next |
`-----------------------------------------------------------------------------------'
```
### Adjust layer
```
,-----------------------------------------------------------------------------------.
|Reset | | | | | | | | | | | |
|------+------+------+------+------+-------------+------+------+------+------+------|
| | | | | | | | | | | | |
|------+------+------+------+------+------|------+------+------+------+------+------|
| | | | | | | | | | | | |
|------+------+------+------+------+------+------+------+------+------+------+------|
| | | | | | | | | | | |
`-----------------------------------------------------------------------------------'
```

View File

@ -0,0 +1 @@
SRC += muse.c

View File

@ -33,3 +33,6 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2 //#define MIDI_TONE_KEYCODE_OCTAVES 2
// Most tactile encoders have detents every 4 stages
#define ENCODER_RESOLUTION 4

View File

@ -15,6 +15,7 @@
*/ */
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
#include "muse.h"
extern keymap_config_t keymap_config; extern keymap_config_t keymap_config;
@ -26,7 +27,7 @@ enum planck_layers {
}; };
enum planck_keycodes { enum planck_keycodes {
// QWERTY = SAFE_RANGE, QWERTY = SAFE_RANGE,
BACKLIT, BACKLIT,
EXT_PLV EXT_PLV
}; };
@ -51,10 +52,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------------' * `-------------------------------------------------------------------------------------------------------'
*/ */
[_QWERTY] = LAYOUT_planck_grid( [_QWERTY] = LAYOUT_planck_grid(
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
{CTRL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, CTRL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
{_______, KC_LCTL, RAISE, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, LOWER, HYPER, _______, _______, RAISE } _______, KC_LCTL, RAISE, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, LOWER, HYPER, _______, _______, RAISE
), ),
/* Lower /* Lower
@ -69,10 +70,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------------------------' * `-----------------------------------------------------------------------------------------------------------'
*/ */
[_LOWER] = LAYOUT_planck_grid( [_LOWER] = LAYOUT_planck_grid(
{_______, KC_BSLS, KC_SLSH, KC_LBRC, KC_RBRC, KC_TILD, KC_PIPE, KC_EQL, KC_PLUS, KC_MINS, KC_UNDS, _______}, _______, KC_BSLS, KC_SLSH, KC_LBRC, KC_RBRC, KC_TILD, KC_PIPE, KC_EQL, KC_PLUS, KC_MINS, KC_UNDS, _______,
{_______, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_GRV, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_LALT, _______}, _______, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_GRV, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_LALT, _______,
{_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______}, _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
), ),
/* Raise /* Raise
@ -87,10 +88,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------------------------------------------------' * `----------------------------------------------------------------------------------------------------------'
*/ */
[_RAISE] = LAYOUT_planck_grid( [_RAISE] = LAYOUT_planck_grid(
{_______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______}, _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______,
{_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, KC_4, KC_5, KC_6, _______, _______}, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, KC_4, KC_5, KC_6, _______, _______,
{_______, KC_MRWD, KC_MFFD, KC_SLCK, KC_PAUS, _______, _______, KC_1, KC_2, KC_3, _______, _______}, _______, KC_MRWD, KC_MFFD, KC_SLCK, KC_PAUS, _______, _______, KC_1, KC_2, KC_3, _______, _______,
{_______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, _______, _______} _______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, KC_DOT, _______, _______
), ),
/* Adjust (Lower + Raise) /* Adjust (Lower + Raise)
@ -105,10 +106,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------------------------------------------------' * `----------------------------------------------------------------------------------------------------------'
*/ */
[_ADJUST] = LAYOUT_planck_grid( [_ADJUST] = LAYOUT_planck_grid(
{_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL }, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
{_______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, QWERTY, _______, _______, _______, _______}, _______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, QWERTY, _______, _______, _______, _______,
{_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______}, _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
) )
}; };
@ -145,9 +146,9 @@ bool music_mask_user(uint16_t keycode) {
* `----------------------------------------------------------------------------------------------------------' * `----------------------------------------------------------------------------------------------------------'
* *
[_EXAMPLE] = LAYOUT_planck_grid( [_EXAMPLE] = LAYOUT_planck_grid(
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
), ),
*/ */

View File

@ -0,0 +1 @@
SRC += muse.c

View File

@ -108,10 +108,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/ */
[_NAV] = LAYOUT_ortho_4x12( [_NAV] = LAYOUT_ortho_4x12(
ALTF4, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, MU_ON, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, MU_ON, XXXXXXX, XXXXXXX, XXXXXXX, _______,
RESET, CU_ESCT, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME RESET, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
) )
}; };

View File

@ -1,4 +1,115 @@
{ {
"keyboard_name": "Planck Light", "keyboard_name": "Planck Light",
"keyboard_folder": "planck/light" "keyboard_folder": "planck/light",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_planck_1x2uC": {
"key_count": 47,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3, "w": 2 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
},
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3 },
{ "x": 6, "y": 3 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
}
}
} }

View File

@ -20,4 +20,50 @@
#include "planck.h" #include "planck.h"
#include "rgb_matrix.h" #include "rgb_matrix.h"
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
}
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc
#endif #endif

View File

@ -0,0 +1,15 @@
# Planck Light
![Planck Light](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/planck/light/planck_light.jpg)
A Planck variant sold by Massdrop. Designed for Kailh PG1350 "Choc" switches, the Planck Light Features per-key RGB backlighting and a dual-channel speaker. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck Light
Hardware Availability: [Massdrop](https://www.massdrop.com/buy/massdrop-x-olkb-planck-light-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/light:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -5,147 +5,22 @@
#define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise) #define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise)
#ifdef KEYBOARD_planck_ez #if defined(KEYBOARD_planck_ez)
#include "ez.h" #include "ez.h"
#endif #elif defined(KEYBOARD_planck_light)
#include "light.h"
#ifdef __AVR__ // Planck revs. 1-5 #elif defined(KEYBOARD_planck_rev1)
#include "rev1.h"
#define LAYOUT_planck_1x2uC( \ #elif defined(KEYBOARD_planck_rev2)
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ #include "rev2.h"
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ #elif defined(KEYBOARD_planck_rev3)
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ #include "rev3.h"
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \ #elif defined(KEYBOARD_planck_rev4)
) \ #include "rev4.h"
{ \ #elif defined(KEYBOARD_planck_rev5)
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ #include "rev5.h"
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ #elif defined(KEYBOARD_planck_rev6)
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ #include "rev6.h"
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \ #endif // Planck revisions
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
}
#elif KEYBOARD_planck_rev6
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, KC_NO } \
}
#define LAYOUT_planck_1x2uR( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ KC_NO, k37, k38, k33, k34, k35 } \
}
#define LAYOUT_planck_1x2uL( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, KC_NO, k35 } \
}
#define LAYOUT_planck_2x2u( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ KC_NO, k37, k38, k33, KC_NO, k35 } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, k35 } \
}
#endif
// all Planck keyboards
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc
#endif #endif

View File

@ -6,7 +6,7 @@ Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/) A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert) Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, rev5, rev6; Planck Light Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, rev5, rev6; Planck Light, Planck EZ
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open) Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):

View File

@ -0,0 +1,115 @@
{
"keyboard_name": "Planck rev 1",
"keyboard_folder": "planck/rev1",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_planck_1x2uC": {
"key_count": 47,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3, "w": 2 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
},
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3 },
{ "x": 6, "y": 3 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
}
}
}

View File

@ -0,0 +1,13 @@
# Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev1
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/rev1:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,49 @@
#pragma once
#include "planck.h"
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
}
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc

View File

@ -0,0 +1,115 @@
{
"keyboard_name": "Planck rev 2",
"keyboard_folder": "planck/rev2",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_planck_1x2uC": {
"key_count": 47,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3, "w": 2 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
},
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3 },
{ "x": 6, "y": 3 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
}
}
}

View File

@ -0,0 +1,13 @@
# Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev2
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/rev2:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,49 @@
#pragma once
#include "planck.h"
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
}
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc

View File

@ -0,0 +1,115 @@
{
"keyboard_name": "Planck rev 3",
"keyboard_folder": "planck/rev3",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_planck_1x2uC": {
"key_count": 47,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3, "w": 2 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
},
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3 },
{ "x": 6, "y": 3 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
}
}
}

View File

@ -0,0 +1,13 @@
# Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev3
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/rev3:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,49 @@
#pragma once
#include "planck.h"
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
}
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc

View File

@ -0,0 +1,115 @@
{
"keyboard_name": "Planck rev 4",
"keyboard_folder": "planck/rev4",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_planck_1x2uC": {
"key_count": 47,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3, "w": 2 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
},
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3 },
{ "x": 6, "y": 3 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
}
}
}

View File

@ -0,0 +1,13 @@
# Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. The first revision of the Planck to support Audio. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev4
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/rev4:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,49 @@
#pragma once
#include "planck.h"
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
}
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc

View File

@ -0,0 +1,115 @@
{
"keyboard_name": "Planck rev 5",
"keyboard_folder": "planck/rev5",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"width": 12,
"height": 4,
"layouts": {
"LAYOUT_planck_1x2uC": {
"key_count": 47,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3, "w": 2 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
},
"LAYOUT_ortho_4x12": {
"key_count": 48,
"layout": [
{ "x": 0, "y": 0 },
{ "x": 1, "y": 0 },
{ "x": 2, "y": 0 },
{ "x": 3, "y": 0 },
{ "x": 4, "y": 0 },
{ "x": 5, "y": 0 },
{ "x": 6, "y": 0 },
{ "x": 7, "y": 0 },
{ "x": 8, "y": 0 },
{ "x": 9, "y": 0 },
{ "x": 10, "y": 0 },
{ "x": 11, "y": 0 },
{ "x": 0, "y": 1 },
{ "x": 1, "y": 1 },
{ "x": 2, "y": 1 },
{ "x": 3, "y": 1 },
{ "x": 4, "y": 1 },
{ "x": 5, "y": 1 },
{ "x": 6, "y": 1 },
{ "x": 7, "y": 1 },
{ "x": 8, "y": 1 },
{ "x": 9, "y": 1 },
{ "x": 10, "y": 1 },
{ "x": 11, "y": 1 },
{ "x": 0, "y": 2 },
{ "x": 1, "y": 2 },
{ "x": 2, "y": 2 },
{ "x": 3, "y": 2 },
{ "x": 4, "y": 2 },
{ "x": 5, "y": 2 },
{ "x": 6, "y": 2 },
{ "x": 7, "y": 2 },
{ "x": 8, "y": 2 },
{ "x": 9, "y": 2 },
{ "x": 10, "y": 2 },
{ "x": 11, "y": 2 },
{ "x": 0, "y": 3 },
{ "x": 1, "y": 3 },
{ "x": 2, "y": 3 },
{ "x": 3, "y": 3 },
{ "x": 4, "y": 3 },
{ "x": 5, "y": 3 },
{ "x": 6, "y": 3 },
{ "x": 7, "y": 3 },
{ "x": 8, "y": 3 },
{ "x": 9, "y": 3 },
{ "x": 10, "y": 3 },
{ "x": 11, "y": 3 }
]
}
}
}

View File

@ -0,0 +1,13 @@
# Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev5
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/rev5:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -0,0 +1,49 @@
#pragma once
#include "planck.h"
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
}
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc

View File

@ -1,6 +1,6 @@
{ {
"keyboard_name": "Planck", "keyboard_name": "Planck rev 6",
"keyboard_folder": "planck", "keyboard_folder": "planck/rev6",
"url": "https://olkb.com/planck", "url": "https://olkb.com/planck",
"maintainer": "jackhumbert", "maintainer": "jackhumbert",
"width": 12, "width": 12,

View File

@ -0,0 +1,13 @@
# Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. A complete hardware rework of the Planck, sporting a faster and more powerful STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
Hardware Supported: Planck PCB rev6
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
make planck/rev6:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@ -18,4 +18,110 @@
#include "planck.h" #include "planck.h"
#define LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, KC_NO } \
}
#define LAYOUT_planck_1x2uR( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ KC_NO, k37, k38, k33, k34, k35 } \
}
#define LAYOUT_planck_1x2uL( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, KC_NO, k35 } \
}
#define LAYOUT_planck_2x2u( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k35, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ KC_NO, k37, k38, k33, KC_NO, k35 } \
}
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
{ \
{ k00, k01, k02, k03, k04, k05 }, \
{ k10, k11, k12, k13, k14, k15 }, \
{ k20, k21, k22, k23, k24, k25 }, \
{ k30, k31, k32, k39, k3a, k3b }, \
{ k06, k07, k08, k09, k0a, k0b }, \
{ k16, k17, k18, k19, k1a, k1b }, \
{ k26, k27, k28, k29, k2a, k2b }, \
{ k36, k37, k38, k33, k34, k35 } \
}
// Used to create a keymap using only KC_ prefixed keys
#define LAYOUT_kc( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
) \
LAYOUT_ortho_4x12( \
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_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
)
#define KEYMAP LAYOUT_ortho_4x12
#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
#define LAYOUT_planck_grid LAYOUT_ortho_4x12
#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
#define KC_KEYMAP LAYOUT_kc
#endif #endif

View File

@ -1,5 +0,0 @@
#pragma once
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(NO_SOUND)
#endif

View File

@ -1,176 +0,0 @@
#include QMK_KEYBOARD_H
#include "spacebarracecar.h"
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
enum layers {
_BASE,
_RAISE,
_LOWER,
_MUSICMODE
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base
,-----------------------------------------------------------------------------------------------------------------------.
|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |\ |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|Tab |Q |W |E |R |T |Z |U |I |O |P |Backspace|
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|Esc/Nav |A |S |D |F |G |H |J |K |L |; |' |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|Shift |Y |X |C |V |B |N |M |, |. |/ |Shift |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|LCtrl | |Win |Alt |Lower |Space |Enter |Raise |AltGr |Win |Menu |RCtrl |
`-----------------------------------------------------------------------------------------------------------------------'
*/
[_BASE] = LAYOUT_preonic_grid(
CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, CU_BSLS,
KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, CU_Z, DE_U, DE_I, DE_O, DE_P, KC_BSPC,
CU_NAV, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, CU_SCLN, CU_QUOT,
CU_LSFT, CU_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT,
KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, KC_SPC, CTLENT, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
),
/* Lower
,-----------------------------------------------------------------------------------------------------------------------.
|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |\ |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|~ |! |" |# |$ |% |^ |& |* |( |) | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |@ |Strg+X |Strg+C |Strg+V | | |_ |+ |{ |} || |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |? | | | | | | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| | | | | | | | | | | | |
`-----------------------------------------------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_preonic_grid(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
DE_TILD, DE_EXLM, DE_DQOT, DE_HASH, DE_DLR, DE_PERC, CU_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, _______,
_______, DE_AT, CTRLX, CTRLC, CTRLV, XXXXXXX, XXXXXXX, DE_UNDS, DE_PLUS, DE_LCBR, DE_RCBR, DE_PIPE,
_______, DE_EURO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Raise
,-----------------------------------------------------------------------------------------------------------------------.
|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |\ |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |F1 |F2 |F3 |F4 |F5 |F6 |- |= |[ |] |\ |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |F7 |F8 |F9 |F10 |F11 |F12 | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| | | | | | | | | | | | |
`-----------------------------------------------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_preonic_grid(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
CU_GRV, DE_1, DE_2, CU_3, DE_4, DE_5, CU_6, CU_7, CU_8, CU_9, CU_0, _______,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DE_MINS, CU_EQL, CU_LBRC, CU_RBRC, CU_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_MUSICMODE] = LAYOUT_preonic_grid(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LCTL, KC_LALT, KC_LGUI, KC_DOWN, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_MOD, MU_OFF
),
/* Deadkey
,-----------------------------------------------------------------------------------------------------------------------.
| | | | | | | | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| | | | | | | |Ü | |Ö | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |Ä |ß | | | | | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| | | | | | | | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| | | | | |" |" | | | | | |
`-----------------------------------------------------------------------------------------------------------------------'
*/
[_DEADKEY] = LAYOUT_preonic_grid(
CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED,
KC_TAB, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_UE, CU_ED, CU_OE, CU_ED, KC_BSPC,
CU_NAV, CU_AE, CU_SS, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_DDQ,
CU_LSFT, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_ED, CU_RSFT,
KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, LOWER, CU_DDQ, CU_DDQ, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
),
/* Navigation
,-----------------------------------------------------------------------------------------------------------------------.
|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10 |F11 |F12 |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|ALT F4 |PageDown |Up |PageUp |Home | | | |Win+Up | | |Del |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |Left |Down |Right |End | | |Win+Left |Win+Down |Win+Right| |Enter |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|RESET |ESCT | | | | | | | | | |Game |
`-----------------------------------------------------------------------------------------------------------------------'
*/
[_NAV] = LAYOUT_preonic_grid(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
ALTF4, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, MU_ON, XXXXXXX, XXXXXXX, XXXXXXX, _______,
RESET, CU_ESCT, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
)
};
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case MO(_LOWER):
if (game){
if(record->event.pressed) {
register_code(KC_SPC);
} else {
unregister_code(KC_SPC);
}
return false;
} else {
return true;
}
case KC_LALT:
if (game) {
if (record->event.pressed){
layer_on(_RAISE);
} else {
layer_off(_RAISE);
}
return false;
} else {
return true;
}
case MU_ON:
if(record->event.pressed) {
layer_off(_LOWER);
layer_off(_RAISE);
layer_off(_NAV);
layer_off(_DEADKEY);
layer_on(_MUSICMODE);
}
return true;
case MU_OFF:
if(record->event.pressed) {
layer_off(_MUSICMODE);
}
return true;
default:
return true;
}
}

View File

@ -1,5 +0,0 @@
# SpacebarRacecar US-International Preonic Keymap for German PCs
This keymap emulates most keys of the US-International layout on PCs that have German set as input language.
This allows the use of the keyboard on any PC in Germany without the need to change any settings.
The keymap is mostly based on the Preonic default layout but adds essential features for german input, like access to Ä, Ö, Ü, ß.

View File

@ -1,22 +0,0 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# Userspace defines
GERMAN_ENABLE = yes # Enable Custom US Ansi Keycodes for PC with German set as input language

View File

@ -121,10 +121,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAV] = LAYOUT( [_NAV] = LAYOUT(
_______, _______, _______, _______, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, ALTF4, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, _______, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, _______, _______, _______, RESET, CU_ESCT, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME _______, _______, _______, _______, RESET, ALTF4, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
), ),
// Can be used to place macros on the numpad // Can be used to place macros on the numpad
@ -242,10 +242,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAV] = LAYOUT( [_NAV] = LAYOUT(
KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
ALTF4, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, _______, _______, _______, _______, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, _______, _______, _______, _______, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
RESET, CU_ESCT, _______, _______, _______, KC_SPC, _______, _______, _______, _______, CTLENT, _______, _______, _______, _______, CU_GAME RESET, CU_ESCT, ALTF4, _______, _______, KC_SPC, _______, _______, _______, _______, CTLENT, _______, _______, _______, _______, CU_GAME
), ),
// Can be used to place macros on the numpad // Can be used to place macros on the numpad
@ -363,10 +363,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAV] = LAYOUT( [_NAV] = LAYOUT(
KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
ALTF4, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, _______, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT, _______, _______, _______, _______,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______,
RESET, CU_ESCT, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME, _______, _______, _______, _______ RESET, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME, _______, _______, _______, _______
), ),
// Can be used to place macros on the numpad // Can be used to place macros on the numpad

View File

@ -0,0 +1,4 @@
#pragma once
#define TAPPING_TERM 200
#define PERMISSIVE_HOLD

View File

@ -0,0 +1,175 @@
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
// Keymap layers
enum layer_names {
_BASE_LAYER,
_RAISE_LAYER,
_LOWER_LAYER,
_NUMPAD_LAYER,
_NAVIGATION_LAYER,
_UI_LAYER,
_KEYBOARD_LAYER,
};
// Layer switches aliases
#define L_LOWER MO(_LOWER_LAYER)
#define L_RAISE MO(_RAISE_LAYER)
#define L_NUMPAD MO(_NUMPAD_LAYER)
#define L_UI MO(_UI_LAYER)
#define L_KEYBD MO(_KEYBOARD_LAYER)
#define SCL_NAV LT(_NAVIGATION_LAYER, KC_SCLN)
#define SFT_MIN MT(MOD_RSFT, KC_MINS)
#define SFT_ENT KC_SFTENT
// GUI chords
#define GUI_1 LGUI(KC_1)
#define GUI_2 LGUI(KC_2)
#define GUI_3 LGUI(KC_3)
#define GUI_4 LGUI(KC_4)
#define GUI_5 LGUI(KC_5)
#define GUI_6 LGUI(KC_6)
#define GUI_7 LGUI(KC_7)
#define GUI_8 LGUI(KC_8)
#define GUI_9 LGUI(KC_9)
#define GUI_0 LGUI(KC_0)
#define GUI_MIN LGUI(KC_MINS)
#define GUI_EQL LGUI(KC_EQL)
#define GUI_LBR LGUI(KC_LBRC)
#define GUI_RBR LGUI(KC_RBRC)
#define GUI_ENT LGUI_T(KC_ENT)
#define GUI_ESC LGUI_T(KC_ESC)
#define GUI_TAB LGUI(KC_TAB) // application toggle
#define GUI_GRV LGUI(KC_GRV) // window toggle
#define GUI_SSF LGUI(LSFT(KC_3)) // Full screen shot
#define GUI_SST LGUI(LSFT(KC_4)) // Targetted screen shot
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | - |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | GUI/Esc| A | S | D | F | G | H | J | K | L | ;/nav | " |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | Shift | Z | X | C | V | B | N | M | , | . | / | Sft/ent|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | Numpad | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Ctrl | Alt | UI | Keybd |
* `-----------------------------------------------------------------------------------------------------------'
*/
[_BASE_LAYER] = LAYOUT_ortho_4x12(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
GUI_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCL_NAV, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT,
L_NUMPAD,KC_LCTL, KC_LALT, KC_LGUI, L_LOWER, KC_BSPC, KC_SPACE,L_RAISE, KC_RCTRL,KC_RALT, L_UI, L_KEYBD
),
/* Lower
* ,-----------------------------------------------------------------------------------------------------------.
* | ` | ! | @ | # | $ | % | ^ | & | * | + | = | - |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | , | . | / | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | Del | | | | | |
* `-----------------------------------------------------------------------------------------------------------'
*/
[_LOWER_LAYER] = LAYOUT_ortho_4x12(
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PLUS, KC_EQL, _______,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, _______,
_______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______
),
/* Raise
* ,-----------------------------------------------------------------------------------------------------------.
* | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | _ |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | { | [ | ( | < | > | ) | ] | } | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | Del | | | | | | |
* `-----------------------------------------------------------------------------------------------------------'
*/
[_RAISE_LAYER] = LAYOUT_ortho_4x12(
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_7, KC_F8, KC_F9, KC_F10, KC_UNDS,
_______, XXXXXXX, KC_LCBR, KC_LBRC, KC_LPRN, KC_LABK, KC_RABK, KC_RPRN, KC_RBRC, KC_RCBR, XXXXXXX, KC_PIPE,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______
),
/* Numpad
* ,-----------------------------------------------------------------------------------------------------------.
* | | | | | | | | 7 | 8 | 9 | * | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | 4 | 5 | 6 | - | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | 1 | 2 | 3 | + | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | 0 | . | / | | |
* `-----------------------------------------------------------------------------------------------------------'
*/
[_NUMPAD_LAYER] = LAYOUT_ortho_4x12(
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, KC_ASTR, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_MINS, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_PLUS, _______,
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_SLSH, _______, _______
),
/* Navigation
* ,-----------------------------------------------------------------------------------------------------------.
* | | | | | | | | Home | Up | End | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | Left | Down | Right | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | Enter | | | Del | | | | |
* `-----------------------------------------------------------------------------------------------------------'
*/
[_NAVIGATION_LAYER] = LAYOUT_ortho_4x12(
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, KC_ENT, _______, _______, KC_DEL, _______, _______, _______, _______
),
/* UI
* ,--------------------------------------------------------------------------------+--------+-----------------.
* | GUI Tab| | | | | | | | | GUI - | GUI = | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | GUI ` | GUI 1 | GUI 2 | GUI 3 | GUI 4 | GUI 5 | GUI 6 | GUI 7 | | GUI [ | GUI ] | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------------------------+--------|
* | |Full SS | Area SS| | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | Prev | Play | Next | Bri - | | | Bri + | Mute | Vol - | Vol + | |
* `-----------------------------------------------------------------------------------------------------------'
*/
[_UI_LAYER] = LAYOUT_ortho_4x12(
GUI_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, GUI_MIN, GUI_EQL, XXXXXXX,
GUI_GRV, GUI_1, GUI_2, GUI_3, GUI_4, GUI_5, GUI_6, GUI_7, XXXXXXX, GUI_LBR, GUI_RBR, XXXXXXX,
_______, GUI_SSF, GUI_SST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, KC_MRWD, KC_MPLY, KC_MFFD, KC_VOLD, KC_MUTE, KC_MUTE, KC_VOLU, _______, _______, _______, _______
),
/* Keyboard
* ,--------------------------------------------------------------------------------+--------+-----------------.
* | | | | | | | | | | | | RESET |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | DEBUG |
* |--------+--------+--------+--------+--------+-----------------+--------+--------------------------+--------|
* | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------------------------------'
*/
[_KEYBOARD_LAYER] = LAYOUT_ortho_4x12(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______
),
};

View File

@ -0,0 +1,105 @@
# bredfield's 4x12 Ortho Keymap
## Overview
This is the layout that I use for all 4x12 boards, for writing and programming.
- Works with planck or split style boards
- Split spacebar; left position is backspace, which frees up the typical key for minus/undersc
- Targets mac os; linux variant to come
- Navigation layer is triggered via the `;` key, allowing for single-hand navigation without leaving the home row
- Brackets are located on the home row on raise, which is comfortable when programming
- Reduced mod / layer tap use, to avoid input lag
- LEDs are overrated
## Layers
### Main
```
* ,-----------------------------------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | - |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | GUI/Esc| A | S | D | F | G | H | J | K | L | ;/nav | " |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | Shift | Z | X | C | V | B | N | M | , | . | / | Sft/ent|
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | Numpad | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Ctrl | Alt | UI | Keybd |
* `-----------------------------------------------------------------------------------------------------------'
```
### Lower
```
* ,-----------------------------------------------------------------------------------------------------------.
* | ` | ! | @ | # | $ | % | ^ | & | * | + | = | - |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | , | . | / | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | Del | | | | | | |
* `-----------------------------------------------------------------------------------------------------------'
```
### Raise
```
* ,-----------------------------------------------------------------------------------------------------------.
* | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | _ |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | { | [ | ( | < | > | ) | ] | } | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | Del | | | | | | |
* `-----------------------------------------------------------------------------------------------------------'
```
### Numpad
```
* ,-----------------------------------------------------------------------------------------------------------.
* | | | | | | | | 7 | 8 | 9 | * | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | 4 | 5 | 6 | - | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | 1 | 2 | 3 | + | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | 0 | . | / | | |
* `-----------------------------------------------------------------------------------------------------------'
```
### Navigation
```
* ,-----------------------------------------------------------------------------------------------------------.
* | | | | | | | | Home | Up | End | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | Left | Down | Right | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | Enter | | | Del | | | | |
* `-----------------------------------------------------------------------------------------------------------'
```
### UI
```
* ,--------------------------------------------------------------------------------+--------+-----------------.
* | GUI Tab| | | | | | | | | GUI - | GUI = | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | GUI ` | GUI 1 | GUI 2 | GUI 3 | GUI 4 | GUI 5 | GUI 6 | GUI 7 | | GUI [ | GUI ] | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------------------------+--------|
* | |Full SS | Area SS| | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | Prev | Play | Next | Bri - | | | Bri + | Mute | Vol - | Vol + | |
* `-----------------------------------------------------------------------------------------------------------'
```
### Keyboard
```
* ,--------------------------------------------------------------------------------+--------+-----------------.
* | | | | | | | | | | | | RESET |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | DEBUG |
* |--------+--------+--------+--------+--------+-----------------+--------+--------------------------+--------|
* | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------------------------------'
*/
```

View File

@ -6,56 +6,74 @@ enum layers {
_QWERTY, _QWERTY,
_LOWER, _LOWER,
_RAISE, _RAISE,
_ADJUST,
}; };
#define LOWER TT(_LOWER) #define LOWER TT(_LOWER)
#define RAISE TT(_RAISE) #define RAISE TT(_RAISE)
#define FN_LAYER LAYOUT_ortho_4x12 (\ static bool is_ctl_pressed;
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,\ static bool is_esc_pressed;
_______, KC_VOLD, KC_MUTE, KC_VOLU, KC_HOME, KC_PGUP, KC_LBRC, KC_RBRC, KC_BSLS, KC_QUOT, _______, _______,\ static bool is_bspc_pressed;
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MINS, KC_EQL, _______, _______, _______, _______,\
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
),
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* qwerty /* qwerty
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | gesc | Q | W | E | R | T | Y | U | I | O | P | bksp | * | esc | Q | W | E | R | T | Y | U | I | O | P | bspc |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | tab | A | S | D | F | G | H | J | K | L | ; | enter | * | tab | A | S | D | F | G | H | J | K | L | ; | ' |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | lshift | Z | X | C | V | B | N | M | , | . | up | / | * | lshift | Z | X | C | V | B | N | M | , | . | / | enter |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | lctrl | lgui | lalt | ralt | lower | space | space | raise | del | right | down | right | * | lctrl | lgui | lalt | ralt | lower | space | space | raise | right | down | up | right |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+ * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
*/ */
[_QWERTY] = LAYOUT_ortho_4x12 ( [_QWERTY] = LAYOUT_ortho_4x12 (
KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_RALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_RALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
), ),
[_LOWER] = FN_LAYER /* lower
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
[_RAISE] = FN_LAYER * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
/* * | | vol- | mute | vol+ | | | | | | | | |
* Adjust * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | | prev | play | next | | | | | | | | |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | | | | | | | | | | | | |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
*/ */
[_ADJUST] = LAYOUT_ortho_4x12 ( [_LOWER] = LAYOUT_ortho_4x12 (
_______, RESET, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
), ),
/* raise
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | del |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | caps | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + | { | } | | |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | | | | | | | | | home | pgdn | pgup | end |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
*/
[_RAISE] = LAYOUT_ortho_4x12 (
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
}; };
uint32_t layer_state_set_user(uint32_t state) { uint32_t layer_state_set_user(uint32_t state) {
state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
#ifdef JOTANCK_LEDS #ifdef JOTANCK_LEDS
switch (biton32(state)) { switch (biton32(state)) {
case _LOWER: case _LOWER:
@ -66,10 +84,6 @@ uint32_t layer_state_set_user(uint32_t state) {
writePinLow(JOTANCK_LED1); writePinLow(JOTANCK_LED1);
writePinHigh(JOTANCK_LED2); writePinHigh(JOTANCK_LED2);
break; break;
case _ADJUST:
writePinHigh(JOTANCK_LED1);
writePinHigh(JOTANCK_LED2);
break;
default: default:
writePinLow(JOTANCK_LED1); writePinLow(JOTANCK_LED1);
writePinLow(JOTANCK_LED2); writePinLow(JOTANCK_LED2);
@ -79,5 +93,23 @@ uint32_t layer_state_set_user(uint32_t state) {
return state; return state;
} }
void matrix_init_user(void) { bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case KC_LCTL:
is_ctl_pressed = record->event.pressed;
break;
case KC_ESC:
is_esc_pressed = record->event.pressed;
break;
case KC_BSPC:
is_bspc_pressed = record->event.pressed;
break;
};
return true;
}
void matrix_scan_user(void) {
if (is_ctl_pressed && is_esc_pressed && is_bspc_pressed) {
reset_keyboard();
}
} }

View File

@ -1,6 +1,6 @@
# Jotix ortho 4x12 keymap # Jotix ortho 4x12 keymap
![keymap](https://i.imgur.com/6fW4Uf4.jpg) ![keymap](https://i.imgur.com/ocZCRkN.png)
Tested on: Tested on:

View File

@ -707,8 +707,9 @@ bool process_record_quantum(keyrecord_t *record) {
#if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_BREATHING) #if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_BREATHING)
case BL_BRTG: { case BL_BRTG: {
if (record->event.pressed) if (record->event.pressed) {
breathing_toggle(); breathing_toggle();
}
return false; return false;
} }
#endif #endif
@ -1027,35 +1028,49 @@ void matrix_scan_quantum() {
# define TCCRxB TCCR1B # define TCCRxB TCCR1B
# define COMxx1 COM1C1 # define COMxx1 COM1C1
# define OCRxx OCR1C # define OCRxx OCR1C
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TOIEx TOIE1
# define ICRx ICR1 # define ICRx ICR1
# define TIMSKx TIMSK1
#elif BACKLIGHT_PIN == B6 #elif BACKLIGHT_PIN == B6
# define HARDWARE_PWM # define HARDWARE_PWM
# define TCCRxA TCCR1A # define TCCRxA TCCR1A
# define TCCRxB TCCR1B # define TCCRxB TCCR1B
# define COMxx1 COM1B1 # define COMxx1 COM1B1
# define OCRxx OCR1B # define OCRxx OCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TOIEx TOIE1
# define ICRx ICR1 # define ICRx ICR1
# define TIMSKx TIMSK1
#elif BACKLIGHT_PIN == B5 #elif BACKLIGHT_PIN == B5
# define HARDWARE_PWM # define HARDWARE_PWM
# define TCCRxA TCCR1A # define TCCRxA TCCR1A
# define TCCRxB TCCR1B # define TCCRxB TCCR1B
# define COMxx1 COM1A1 # define COMxx1 COM1A1
# define OCRxx OCR1A # define OCRxx OCR1A
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TOIEx TOIE1
# define ICRx ICR1 # define ICRx ICR1
# define TIMSKx TIMSK1
#elif BACKLIGHT_PIN == C6 #elif BACKLIGHT_PIN == C6
# define HARDWARE_PWM # define HARDWARE_PWM
# define TCCRxA TCCR3A # define TCCRxA TCCR3A
# define TCCRxB TCCR3B # define TCCRxB TCCR3B
# define COMxx1 COM1A1 # define COMxx1 COM3A1
# define OCRxx OCR3A # define OCRxx OCR3A
# define TIMERx_OVF_vect TIMER3_OVF_vect
# define TOIEx TOIE3
# define ICRx ICR3 # define ICRx ICR3
# define TIMSKx TIMSK3
#elif defined(__AVR_ATmega32A__) && BACKLIGHT_PIN == D4 #elif defined(__AVR_ATmega32A__) && BACKLIGHT_PIN == D4
# define TCCRxA TCCR1A # define TCCRxA TCCR1A
# define TCCRxB TCCR1B # define TCCRxB TCCR1B
# define COMxx1 COM1B1 # define COMxx1 COM1B1
# define OCRxx OCR1B # define OCRxx OCR1B
# define TIMERx_OVF_vect TIMER1_OVF_vect
# define TOIEx TOIE1
# define ICRx ICR1 # define ICRx ICR1
# define TIMSK1 TIMSK # define TIMSKx TIMSK1
#else #else
# if !defined(BACKLIGHT_CUSTOM_DRIVER) # if !defined(BACKLIGHT_CUSTOM_DRIVER)
# if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO) # if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO)
@ -1066,15 +1081,15 @@ void matrix_scan_quantum() {
# define TCCRxA TCCR1A # define TCCRxA TCCR1A
# define TCCRxB TCCR1B # define TCCRxB TCCR1B
# define OCRxx OCR1A # define OCRxx OCR1A
# define OCRxAH OCR1AH
# define OCRxAL OCR1AL
# define TIMERx_COMPA_vect TIMER1_COMPA_vect # define TIMERx_COMPA_vect TIMER1_COMPA_vect
# define TIMERx_OVF_vect TIMER1_OVF_vect # define TIMERx_OVF_vect TIMER1_OVF_vect
# define OCIExA OCIE1A # define OCIExA OCIE1A
# define TOIEx TOIE1 # define TOIEx TOIE1
# define ICRx ICR1 # define ICRx ICR1
# ifndef TIMSK # if defined(__AVR_ATmega32A__) // This MCU has only one TIMSK register
# define TIMSK TIMSK1 # define TIMSKx TIMSK
# else
# define TIMSKx TIMSK1
# endif # endif
# elif !defined(C6_AUDIO) && !defined(C5_AUDIO) && !defined(C4_AUDIO) # elif !defined(C6_AUDIO) && !defined(C5_AUDIO) && !defined(C4_AUDIO)
#pragma message "Using hardware timer 3 with software PWM" #pragma message "Using hardware timer 3 with software PWM"
@ -1084,16 +1099,12 @@ void matrix_scan_quantum() {
# define TCCRxA TCCR3A # define TCCRxA TCCR3A
# define TCCRxB TCCR3B # define TCCRxB TCCR3B
# define OCRxx OCR3A # define OCRxx OCR3A
# define OCRxAH OCR3AH
# define OCRxAL OCR3AL
# define TIMERx_COMPA_vect TIMER3_COMPA_vect # define TIMERx_COMPA_vect TIMER3_COMPA_vect
# define TIMERx_OVF_vect TIMER3_OVF_vect # define TIMERx_OVF_vect TIMER3_OVF_vect
# define OCIExA OCIE3A # define OCIExA OCIE3A
# define TOIEx TOIE3 # define TOIEx TOIE3
# define ICRx ICR1 # define ICRx ICR1
# ifndef TIMSK # define TIMSKx TIMSK3
# define TIMSK TIMSK3
# endif
# else # else
#pragma message "Audio in use - using pure software PWM" #pragma message "Audio in use - using pure software PWM"
#define NO_HARDWARE_PWM #define NO_HARDWARE_PWM
@ -1223,7 +1234,9 @@ ISR(TIMERx_COMPA_vect) {
// this one triggers at F_CPU/65536 =~ 244 Hz // this one triggers at F_CPU/65536 =~ 244 Hz
ISR(TIMERx_OVF_vect) { ISR(TIMERx_OVF_vect) {
#ifdef BACKLIGHT_BREATHING #ifdef BACKLIGHT_BREATHING
if(is_breathing()) {
breathing_task(); breathing_task();
}
#endif #endif
// for very small values of OCRxx (or backlight level) // for very small values of OCRxx (or backlight level)
// we can't guarantee this whole code won't execute // we can't guarantee this whole code won't execute
@ -1274,8 +1287,8 @@ void backlight_set(uint8_t level) {
if (level == 0) { if (level == 0) {
#ifdef BACKLIGHT_PWM_TIMER #ifdef BACKLIGHT_PWM_TIMER
if (OCRxx) { if (OCRxx) {
TIMSK &= ~(_BV(OCIExA)); TIMSKx &= ~(_BV(OCIExA));
TIMSK &= ~(_BV(TOIEx)); TIMSKx &= ~(_BV(TOIEx));
FOR_EACH_LED( FOR_EACH_LED(
backlight_off(backlight_pin); backlight_off(backlight_pin);
) )
@ -1287,8 +1300,8 @@ void backlight_set(uint8_t level) {
} else { } else {
#ifdef BACKLIGHT_PWM_TIMER #ifdef BACKLIGHT_PWM_TIMER
if (!OCRxx) { if (!OCRxx) {
TIMSK |= _BV(OCIExA); TIMSKx |= _BV(OCIExA);
TIMSK |= _BV(TOIEx); TIMSKx |= _BV(TOIEx);
} }
#else #else
// Turn on PWM control of backlight pin // Turn on PWM control of backlight pin
@ -1325,11 +1338,11 @@ bool is_breathing(void) {
#else #else
bool is_breathing(void) { bool is_breathing(void) {
return !!(TIMSK1 & _BV(TOIE1)); return !!(TIMSKx & _BV(TOIEx));
} }
#define breathing_interrupt_enable() do {TIMSK1 |= _BV(TOIE1);} while (0) #define breathing_interrupt_enable() do {TIMSKx |= _BV(TOIEx);} while (0)
#define breathing_interrupt_disable() do {TIMSK1 &= ~_BV(TOIE1);} while (0) #define breathing_interrupt_disable() do {TIMSKx &= ~_BV(TOIEx);} while (0)
#endif #endif
#define breathing_min() do {breathing_counter = 0;} while (0) #define breathing_min() do {breathing_counter = 0;} while (0)
@ -1411,7 +1424,7 @@ void breathing_task(void)
/* Assuming a 16MHz CPU clock and a timer that resets at 64k (ICR1), the following interrupt handler will run /* Assuming a 16MHz CPU clock and a timer that resets at 64k (ICR1), the following interrupt handler will run
* about 244 times per second. * about 244 times per second.
*/ */
ISR(TIMER1_OVF_vect) ISR(TIMERx_OVF_vect)
#endif #endif
{ {
uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS; uint16_t interval = (uint16_t) breathing_period * 244 / BREATHING_STEPS;

View File

@ -4,6 +4,10 @@
#define RGBLIGHT_SPLIT #define RGBLIGHT_SPLIT
#endif #endif
#ifndef F_SCL
#define F_SCL 100000UL // SCL frequency
#endif
#else // use serial #else // use serial
// When using serial, the user must define RGBLIGHT_SPLIT explicitly // When using serial, the user must define RGBLIGHT_SPLIT explicitly
// in config.h as needed. // in config.h as needed.

Some files were not shown because too many files have changed in this diff Show More