Compare commits

..
13 Commits
Author SHA1 Message Date
a_p_u_r_o 7874f297b3 Remove CR when computing BOOTLOADER_SIZE. (#7453) 2019-11-24 03:01:03 +11:00
Yan-Fa Li 3541f01a72 Update led_update_kb example (#7451)
* Update led_update_kb example

* Update comment to explain pin behavior

* wordsmith

* wordsmithing 2
2019-11-23 15:37:25 +00:00
Hilary B. Brenum eae21eed74 [Keymap] Adding hbbisenieks keymap for keebio/iris (#7440)
* hbbisenieks keymap

* fixed right encoder

* changes suggested during pr
2019-11-22 14:40:18 -08:00
Yan-Fa Liandfauxpark e62ab7e259 Allow overriding of all functions in wonderland.c (#7198)
* f

* Allow overriding of all functions in wonderland.c

 - needed for custom LED functions in keymap.c

* Example of layer indication via LEDs

optimize

* Use newer led_update_kb and led_update_user hooks

 - these allow overriding without use of __attribute((weak))__

* Update led documentation a bit

 - clarify some of the wording around how  to use led_update_user

* Update led_update_user example

* Update audio example to be complete

* trailing spaces smh

* spaces

* spaces

* smh

* Less code is good

* Update docs/custom_quantum_functions.md

Co-Authored-By: fauxpark <[email protected]>

* Update docs/custom_quantum_functions.md

Co-Authored-By: fauxpark <[email protected]>

* Update docs/custom_quantum_functions.md

Co-Authored-By: fauxpark <[email protected]>

* Update docs/custom_quantum_functions.md

Co-Authored-By: fauxpark <[email protected]>

* Update docs/custom_quantum_functions.md

Co-Authored-By: fauxpark <[email protected]>

* Update docs/custom_quantum_functions.md

Co-Authored-By: fauxpark <[email protected]>
2019-11-22 12:55:45 -08:00
dsanchezseco 0270d4d5a1 [Keymap] changed knight ridder offset to face me on planck (#7445)
* added rgblight controls to planck keymap

* fixed knight ridder offset to face me
2019-11-22 10:26:45 -08:00
Joel Challis 7e9ed2acbf Fix clang-format logic within CI (#7386) 2019-11-22 17:02:55 +00:00
66d4734371 Improve and streamline MSYS2 installation (#7232)
* Make MSYS force install

* Cleanup msys script

* Update to gcc 8.3 for arm and avr

And cleanup install scripts for both

* Fix path and scripts

* Fix links

* No confirmation for msys

* Tweak arm function since file structure changed

* Fix spacing and wording

Co-Authored-By: fauxpark <[email protected]>

* Only use MSYS2's make binary

Co-Authored-By: fauxpark <[email protected]>

* Some wordsmithing

Co-Authored-By: Mikkel Jeppesen <[email protected]>

* Add "disable download timeout" for download issues in MSYS

Co-Authored-By: Mikkel Jeppesen <[email protected]>

* Clean up URL for arm gcc download

Co-Authored-By: Joel Challis <[email protected]>

* add pip

Co-Authored-By: fauxpark <[email protected]>
2019-11-22 18:09:02 +11:00
Drashna Jaelre 6cf574396a [Keyboard] Update default keymaps to use layer_state_t (#7444)
* Update default keymaps to use `layer_state_t`

* Convert binon32 as get_highest_layer in default keymaps
2019-11-21 22:40:29 -08:00
dsanchezseco f0a9c10b6d [Keymap] added rgblight controls to planck keymap (#7439) 2019-11-21 22:15:40 -08:00
fauxpark 78954a0d3e [Keyboard] Add three missing layouts (#7441)
* Add three missing default layouts

* Add layout support to tragicforce68

* Not really 68%

* Fix dumb mistake

* Update info.json too

* Apply suggestions from code review
2019-11-21 20:25:19 -08:00
fauxpark 02412156d5 Add 4-character aliases for sendstring keycodes (#7409)
* Add 4-character aliases for sendstring keycodes

* Remove pointless mail keycode redefinition

* Forgot brightness keycodes
2019-11-22 14:11:28 +11:00
Thomas Baart e70fef03c1 Updated Kyria readme.md with relocated build guide (#7438) 2019-11-21 21:03:47 +00:00
Erovia 7e7eb69edf MILC: Add support for hidden subcommands (#7034)
* MILC: Add support for hidden subcommands

Subcommands with 'hidden=True' will not show up in the help output, but
will work as any other subcommands.

* Hide those hidden submodules, for real now

* Rebase on latest MILC
2019-11-21 12:52:00 -08:00
74 changed files with 1171 additions and 391 deletions

No files matched your search

+42 -59
View File
@@ -114,7 +114,15 @@ Two more deprecated functions exist that provide the LED state as a `uint8_t`:
This function will be called when the state of one of those 5 LEDs changes. It receives the LED state as a struct parameter. This function will be called when the state of one of those 5 LEDs changes. It receives the LED state as a struct parameter.
You must return either `true` or `false` from this function, depending on whether you want to override the keyboard-level implementation. By convention, return `true` from `led_update_user()` to get the `led_update_kb()` hook to run its code, and
return `false` when you would prefer not to run the code in `led_update_kb()`.
Some examples include:
- overriding the LEDs to use them for something else like layer indication
- return `false` because you do not want the `_kb()` function to run, as it would override your layer behavior.
- play a sound when an LED turns on or off.
- return `true` because you want the `_kb` function to run, and this is in addition to the default LED behavior.
?> Because the `led_set_*` functions return `void` instead of `bool`, they do not allow for overriding the keyboard LED control, and thus it's recommended to use `led_update_*` instead. ?> Because the `led_set_*` functions return `void` instead of `bool`, they do not allow for overriding the keyboard LED control, and thus it's recommended to use `led_update_*` instead.
@@ -122,66 +130,41 @@ You must return either `true` or `false` from this function, depending on whethe
```c ```c
bool led_update_kb(led_t led_state) { bool led_update_kb(led_t led_state) {
if(led_update_user(led_state)) { bool res = led_update_user(led_state);
if (led_state.num_lock) { if(res) {
writePinLow(B0); // writePin sets the pin high for 1 and low for 0.
} else { // In this example the pins are inverted, setting
writePinHigh(B0); // it low/0 turns it on, and high/1 turns the LED off.
} // This behavior depends on whether the LED is between the pin
if (led_state.caps_lock) { // and VCC or the pin and GND.
writePinLow(B1); writePin(B0, !led_state.num_lock);
} else { writePin(B1, !led_state.caps_lock);
writePinHigh(B1); writePin(B2, !led_state.scroll_lock);
} writePin(B3, !led_state.compose);
if (led_state.scroll_lock) { writePin(B4, !led_state.kana);
writePinLow(B2);
} else {
writePinHigh(B2);
}
if (led_state.compose) {
writePinLow(B3);
} else {
writePinHigh(B3);
}
if (led_state.kana) {
writePinLow(B4);
} else {
writePinHigh(B4);
}
return true;
} }
return res;
} }
``` ```
### Example `led_update_user()` Implementation ### Example `led_update_user()` Implementation
This incomplete example would play a sound if Caps Lock is turned on or off. It returns `true`, because you also want the LEDs to maintain their state.
```c ```c
#ifdef AUDIO_ENABLE
float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
#endif
bool led_update_user(led_t led_state) { bool led_update_user(led_t led_state) {
if (led_state.num_lock) { #ifdef AUDIO_ENABLE
writePinLow(B0); static uint8_t caps_state = 0;
} else { if (caps_state != led_state.caps_lock) {
writePinHigh(B0); led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off);
} caps_state = led_state.caps_lock;
if (led_state.caps_lock) {
writePinLow(B1);
} else {
writePinHigh(B1);
}
if (led_state.scroll_lock) {
writePinLow(B2);
} else {
writePinHigh(B2);
}
if (led_state.compose) {
writePinLow(B3);
} else {
writePinHigh(B3);
}
if (led_state.kana) {
writePinLow(B4);
} else {
writePinHigh(B4);
} }
#endif
return true; return true;
} }
``` ```
@@ -411,7 +394,7 @@ void keyboard_post_init_user(void) {
// Set default layer, if enabled // Set default layer, if enabled
if (user_config.rgb_layer_change) { if (user_config.rgb_layer_change) {
rgblight_enable_noeeprom(); rgblight_enable_noeeprom();
rgblight_sethsv_noeeprom_cyan(); rgblight_sethsv_noeeprom_cyan();
rgblight_mode_noeeprom(1); rgblight_mode_noeeprom(1);
} }
} }
@@ -459,18 +442,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
return true; // Let QMK send the enter press/release events return true; // Let QMK send the enter press/release events
case RGB_LYR: // This allows me to use underglow as layer indication, or as normal case RGB_LYR: // This allows me to use underglow as layer indication, or as normal
if (record->event.pressed) { if (record->event.pressed) {
user_config.rgb_layer_change ^= 1; // Toggles the status user_config.rgb_layer_change ^= 1; // Toggles the status
eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
if (user_config.rgb_layer_change) { // if layer state indication is enabled, if (user_config.rgb_layer_change) { // if layer state indication is enabled,
layer_state_set(layer_state); // then immediately update the layer color layer_state_set(layer_state); // then immediately update the layer color
} }
} }
return false; break; return false; break;
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference) case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference)
if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
if (user_config.rgb_layer_change) { // only if this is enabled if (user_config.rgb_layer_change) { // only if this is enabled
user_config.rgb_layer_change = false; // disable it, and user_config.rgb_layer_change = false; // disable it, and
eeconfig_update_user(user_config.raw); // write the setings to EEPROM eeconfig_update_user(user_config.raw); // write the setings to EEPROM
} }
} }
@@ -483,7 +466,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued. And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
```c ```c
void eeconfig_init_user(void) { // EEPROM is getting reset! void eeconfig_init_user(void) { // EEPROM is getting reset!
user_config.raw = 0; user_config.raw = 0;
user_config.rgb_layer_change = true; // We want this enabled by default user_config.rgb_layer_change = true; // We want this enabled by default
eeconfig_update_user(user_config.raw); // Write default value to EEPROM now eeconfig_update_user(user_config.raw); // Write default value to EEPROM now
@@ -508,7 +491,7 @@ The `val` is the value of the data that you want to write to EEPROM. And the `e
By default, the tapping term is defined globally, and is not configurable by key. For most users, this is perfectly fine. But in come cases, dual function keys would be greatly improved by different timeouts than `LT` keys, or because some keys may be easier to hold than others. Instead of using custom key codes for each, this allows for per key configurable `TAPPING_TERM`. By default, the tapping term is defined globally, and is not configurable by key. For most users, this is perfectly fine. But in come cases, dual function keys would be greatly improved by different timeouts than `LT` keys, or because some keys may be easier to hold than others. Instead of using custom key codes for each, this allows for per key configurable `TAPPING_TERM`.
To enable this functionality, you need to add `#define TAPPING_TERM_PER_KEY` to your `config.h`, first. To enable this functionality, you need to add `#define TAPPING_TERM_PER_KEY` to your `config.h`, first.
## Example `get_tapping_term` Implementation ## Example `get_tapping_term` Implementation
@@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -90,8 +90,8 @@ void led_set_user(uint8_t usb_led) {
} }
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
switch (biton32(state)) { switch (get_highest_layer(state)) {
case 1: case 1:
writePinHigh(D1); writePinHigh(D1);
break; break;
@@ -85,7 +85,7 @@ void led_set_user(uint8_t usb_led) {
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return state; return state;
} }
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -163,4 +163,3 @@ void matrix_init_user(void) {
void matrix_scan_user(void) { void matrix_scan_user(void) {
} }
+1 -1
View File
@@ -144,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
} }
@@ -194,6 +194,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
} }
@@ -174,7 +174,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
ergodox_right_led_2_off(); ergodox_right_led_2_off();
ergodox_right_led_3_off(); ergodox_right_led_3_off();
uint8_t layer = biton32(state); uint8_t layer = get_highest_layer(state);
switch (layer) { switch (layer) {
case 0: case 0:
#ifdef RGBLIGHT_COLOR_LAYER_0 #ifdef RGBLIGHT_COLOR_LAYER_0
@@ -13,9 +13,9 @@ const uint16_t PROGMEM fn_actions[] = {
[1] = TT(1) [1] = TT(1)
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
uint8_t layer = biton32(state); uint8_t layer = get_highest_layer(state);
ergodox_led_all_off(); ergodox_led_all_off();
ergodox_board_led_1_off(); ergodox_board_led_1_off();
@@ -155,7 +155,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -193,7 +193,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -267,4 +267,3 @@ void matrix_init_user(void) {
void matrix_scan_user(void) { void matrix_scan_user(void) {
} }
@@ -143,7 +143,7 @@ layer_state_t layer_state_set_user(layer_state_t state)
{ {
turn_off_leds(); turn_off_leds();
switch (biton32(state)) switch (get_highest_layer(state))
{ {
case NORMAL_LAYER: case NORMAL_LAYER:
break; break;
@@ -50,8 +50,8 @@ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9,
}; };
/* Layer based ilumination, just binary */ /* Layer based ilumination, just binary */
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
switch (biton32(state)) { switch (get_highest_layer(state)) {
case _FNONE: case _FNONE:
palSetPad(GPIOA, 0); //OFF Color A palSetPad(GPIOA, 0); //OFF Color A
palClearPad(GPIOA, 1); //ON Color B palClearPad(GPIOA, 1); //ON Color B
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
), ),
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -78,9 +78,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
#ifdef JOTANCK_LEDS #ifdef JOTANCK_LEDS
switch (biton32(state)) { switch (get_highest_layer(state)) {
case _LOWER: case _LOWER:
writePinHigh(JOTANCK_LED1); writePinHigh(JOTANCK_LED1);
writePinLow(JOTANCK_LED2); writePinLow(JOTANCK_LED2);
@@ -132,9 +132,9 @@ void led_set_user(uint8_t usb_led) {
} }
//function for layer indicator LED //function for layer indicator LED
uint32_t layer_state_set_user(uint32_t state) layer_state_t layer_state_set_user(layer_state_t state)
{ {
if (biton32(state) == 2) { if (get_highest_layer(state) == 2) {
writePinHigh(C6); writePinHigh(C6);
} else { } else {
writePinLow(C6); writePinLow(C6);
@@ -986,7 +986,7 @@ void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *
} }
#endif #endif
uint32_t layer_state_set_kb(uint32_t state) layer_state_t layer_state_set_user(layer_state_t state)
{ {
// turn on punc layer if both fun & num are on // turn on punc layer if both fun & num are on
if ((state & ((1UL<<_NUM) | (1UL<<_FUN))) == ((1UL<<_NUM) | (1UL<<_FUN))) { if ((state & ((1UL<<_NUM) | (1UL<<_FUN))) == ((1UL<<_NUM) | (1UL<<_FUN))) {
@@ -99,6 +99,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
) )
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
float tone_qwerty[][2] = TONE_QWERTY; float tone_qwerty[][2] = TONE_QWERTY;
float tone_numpad[][2] = TONE_NUMPAD; float tone_numpad[][2] = TONE_NUMPAD;
uint32_t default_layer_state_set_kb(uint32_t state) { layer_state_t default_layer_state_set_kb(layer_state_t state) {
if (state == 1UL<<_QWERTY) { if (state == 1UL<<_QWERTY) {
PLAY_SONG(tone_qwerty); PLAY_SONG(tone_qwerty);
} else if (state == 1UL<<_NUMPAD) { } else if (state == 1UL<<_NUMPAD) {
+2 -2
View File
@@ -75,9 +75,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
uint32_t layer_state_set_user(uint32_t state) layer_state_t layer_state_set_user(layer_state_t state)
{ {
uint8_t layer=biton32(state); uint8_t layer=get_highest_layer(state);
switch(layer) switch(layer)
{ {
case DF: case DF:
+1 -1
View File
@@ -99,6 +99,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
) )
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -0,0 +1,85 @@
/* Copyright 2019 Danny Nguyen <[email protected]>
*
* 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
#define _AUDACITY 0
#define _LIGHTS 1
enum custom_keycodes {
AUDACITY = SAFE_RANGE,
LIGHTS,
};
#define KC_ KC_TRNS
#define KC_AUD AUDACITY
#define KC_LITE LIGHTS
#define KC_ZNRM LCTL(KC_2) // zoom normal
#define KC_SAVE LCTL(KC_S) // save
#define KC_SYNC LALT(KC_S) // sync-lock tracks
#define KC_SLNC LCTL(KC_L) // silence selection
#define KC_BL_S BL_STEP
#define KC_RGBM RGB_MOD
#define KC_RGBT RGB_TOG
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
| Knob 1: Vol Dn/Up | | Knob 2: Page Dn/Up |
| Press: Mute | Home | Press: Play/Pause |
| Hold: Layer 2 | Up | RGB Mode |
| Left | Down | Right |
*/
[_AUDACITY] = LAYOUT(
//,-------+-------+-------.
KC_LITE,KC_SAVE,KC_ZNRM,
//|-------+-------+-------|
KC_SYNC,KC_SLNC,KC_BSPC,
//|-------+-------+-------|
KC_SPC , KC_F1 , KC_F2
//`-------+-------+-------'
),
/*
| RESET | N/A | Media Stop |
| Held: Layer 2 | Home | RGB Mode |
| Media Previous | End | Media Next |
*/
[_LIGHTS] = LAYOUT(
//,-------+-------+-------.
KC_ ,KC_BL_S,KC_STOP,
//|-------+-------+-------|
KC_RGBM,KC_HOME,KC_RGBT,
//|-------+-------+-------|
KC_MPRV,KC_END ,KC_MNXT
//`-------+-------+-------'
),
};
void encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
if (clockwise) {
tap_code(KC_RGHT);
} else {
tap_code(KC_LEFT);
}
}
else if (index == 1) {
if (clockwise) {
SEND_STRING(SS_LCTRL("1")); // audacity zoom in
} else {
SEND_STRING(SS_LCTRL("3")); // audacity zoom out
}
}
}
@@ -0,0 +1,41 @@
/*
Copyright 2017 Danny Nguyen <danny@keeb.io>
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
/* Use I2C or Serial, not both */
#define USE_SERIAL
// #define USE_I2C
/* Select hand configuration */
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS
#define TAPPING_TERM 150
#define TAPPING_TOGGLE 2
#define PERMISSIVE_HOLD
#undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
@@ -0,0 +1,161 @@
#include QMK_KEYBOARD_H
enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
_ADJUST,
};
enum custom_keycodes {
LOWER = SAFE_RANGE,
RAISE,
ADJUST,
GUSR,
HGRP,
CHUS,
};
#define KC_ KC_TRNS
#define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen
#define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen
#define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen
#define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen
#define KC_ESCC MT(MOD_LCTL, KC_ESC)
#define KC_LOWR LOWER
#define KC_RASE RAISE
#define KC_RST RESET
#define KC_BL_S BL_STEP
// Left and right shift as mot-tap square braces
#define KC_LSBR MT(MOD_LSFT, KC_LBRC)
#define KC_RSBR MT(MOD_RSFT, KC_RBRC)
// mod-tap shift/minus
#define KC_SMIN MT(MOD_LSFT, KC_MINS)
// Tap-toggle layers
#define KC_TT_L TT(1)
#define KC_TT_R TT(2)
#define KC_RGBM RGB_MOD
#define KC_RGBT RGB_TOG
#define KC_SLOK LGUI(LCTL(KC_Q)) // mojave lock screen
#define KC_GUSR GUSR // "gam info user" macro
#define KC_HGRP HGRP // "history | grep" macro
#define KC_CHUS CHUS // "thisisunsafe" chrome browser macro
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
ESC , A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
LSBR, Z , X , C , V , B ,TT_L, TT_R, N , M ,COMM,DOT ,SLSH,RSBR,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
LCTL,SMIN,LGUI, ENT ,SPC ,LALT
// `----+----+----' `----+----+----'
),
[_LOWER] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,MINS,EQL , ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
,SLOK, , UP , ,RGBT, P7 , P8 , P9 , E , F ,LPRN,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
DEL , ,LEFT,DOWN,RGHT,GUSR, P4 , P5 , P6 , C , D ,RPRN,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
BL_S, , , ,HGRP,CHUS, , , P1 , P2 , P3 , A , B , ,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
, , , DOT , P0 ,COLN
// `----+----+----' `----+----+----'
),
[_RAISE] = LAYOUT_kc(
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
,RGBT,RGBM, , , , ,AMPR,MUTE, , , ,
//|----+----+----+----+----+----| |----+----+----+----+----+----|
,CAPW,CPYW,CAPP,CPYP,PGUP, EQL ,HOME,VOLU,MRWD,MFFD, ,
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
, , , , ,PGDN, , ,PLUS,END ,VOLD,MPLY,MSTP, ,
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
, , , , ,
// `----+----+----' `----+----+----'
),
[_ADJUST] = LAYOUT(
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RESET , DEBUG , RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------'
_______, _______, _______, _______, _______, _______
// `--------+--------+--------' `--------+--------+--------'
)
};
#ifdef AUDIO_ENABLE
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
update_tri_layer(_LOWER, _RAISE, _ADJUST);
}
return false;
break;
case ADJUST:
if (record->event.pressed) {
layer_on(_ADJUST);
} else {
layer_off(_ADJUST);
}
return false;
break;
case GUSR:
if (record->event.pressed) {
SEND_STRING("gam info user ");
}
break;
case HGRP:
if (record->event.pressed) {
SEND_STRING("history|grep ");
}
break;
case CHUS:
if (record->event.pressed) {
SEND_STRING("thisisunsafe");
}
break;
}
return true;
}
@@ -0,0 +1,6 @@
# HBBisenieks' Iris Layout
A modified Iris layout with toggle-tap layers and a hexidecimal
numpad. Other features include Space-Cadet-like shift keys that can do
square or curly braces and a home-row escape key.
@@ -0,0 +1,6 @@
RGBLIGHT_ENABLE = yes
BACKLIGHT_ENABLE = yes
# Comment out for pro-micro board
BOOTLOADER = atmel-dfu
+1 -1
View File
@@ -5,7 +5,7 @@
"width": 17.25, "width": 17.25,
"height": 5, "height": 5,
"layouts": { "layouts": {
"LAYOUT": { "LAYOUT_68_ansi": {
"layout": [ "layout": [
{"label":"~", "x":0, "y":0}, {"label":"~", "x":0, "y":0},
{"label":"!", "x":1, "y":0}, {"label":"!", "x":1, "y":0},
@@ -4,7 +4,7 @@
#define _FN1 1 #define _FN1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT( [_QWERTY] = LAYOUT_68_ansi(
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────────────┐ ┌────────┬────────┐ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────────────┐ ┌────────┬────────┐
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_INS, KC_PGUP, 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_INS, KC_PGUP,
//├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────────────┤ ├────────┼────────┤ //├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────────────┤ ├────────┼────────┤
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//└──────────┴──────────┴──────────┴───────────────────────────────────────────────────────┴──────────┴──────────┴──────────┘ └────────┴────────┴────────┘ //└──────────┴──────────┴──────────┴───────────────────────────────────────────────────────┴──────────┴──────────┴──────────┘ └────────┴────────┴────────┘
), ),
[_FN1] = LAYOUT( [_FN1] = LAYOUT_68_ansi(
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────────────┐ ┌────────┬────────┐ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────────────┐ ┌────────┬────────┐
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_HOME, 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_HOME,
//├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────────────┤ ├────────┼────────┤ //├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────────────┤ ├────────┼────────┤
+2
View File
@@ -28,3 +28,5 @@ MIDI_ENABLE = no # MIDI controls
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6 AUDIO_ENABLE = no # Audio output on port C6
LAYOUTS = 68_ansi
@@ -2,7 +2,7 @@
#include "quantum.h" #include "quantum.h"
#define LAYOUT( \ #define LAYOUT_68_ansi( \
A1, A2, A3, A4, A5, A6, A7, A8, E1, E2, E3, E4, E5, E6, E7, E8, \ A1, A2, A3, A4, A5, A6, A7, A8, E1, E2, E3, E4, E5, E6, E7, E8, \
B1, B2, B3, B4, B5, B6, B7, B8, F1, F2, F3, F4, F5, F6, F7, F8, \ B1, B2, B3, B4, B5, B6, B7, B8, F1, F2, F3, F4, F5, F6, F7, F8, \
C1, C2, C3, C4, C5, C6, C7, C8, G1, G2, G3, G4, G5, \ C1, C2, C3, C4, C5, C6, C7, C8, G1, G2, G3, G4, G5, \
@@ -72,3 +72,5 @@
KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, KC_##K68, \ KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, KC_##K68, \
KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74 \ KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74 \
) )
#define LAYOUT LAYOUT_68_ansi
+1 -1
View File
@@ -18,4 +18,4 @@ Example of flashing this keyboard:
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). 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).
A build guide for the Kyria can be found at [docs.splitkb.com](https://docs.splitkb.com/docs/kyria-build-log/). A build guide for the Kyria can be found at [docs.splitkb.com](https://docs.splitkb.com/hc/en-us/articles/360010552059-Kyria-Build-Guide-Introduction).
@@ -116,9 +116,9 @@ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
} }
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
switch (biton32(state)) { switch (get_highest_layer(state)) {
case _LOWER: case _LOWER:
rgblight_sethsv_noeeprom(HSV_GREEN); rgblight_sethsv_noeeprom(HSV_GREEN);
break; break;
@@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -115,6 +115,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -22,3 +22,33 @@ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
_______, KC_LALT, _______, _______, _______, KC_RALT, _______ \ _______, KC_LALT, _______, _______, _______, KC_RALT, _______ \
) )
}; };
#ifdef USE_LEDS_FOR_LAYERS
// example of how to use LEDs as layer indicators
static uint8_t top = 1;
static uint8_t middle = 0;
static uint8_t bottom = 0;
layer_state_t layer_state_set_user(layer_state_t state) {
top = middle = bottom = 0;
switch (get_highest_layer(state)) {
case _BASE:
top = 1;
break;
case _FUNC:
middle = 1;
break;
default: // for any other layers, or the default layer
break;
}
return state;
}
// override kb level function
bool led_update_user(led_t usb_led) {
writePin(B1, !top);
writePin(B2, !middle);
writePin(B3, !bottom);
return false; // we are using LEDs for something else override kb
}
#endif
+10 -18
View File
@@ -1,5 +1,6 @@
#include "wonderland.h" #include "wonderland.h"
__attribute__ ((weak))
void matrix_init_kb(void) { void matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
@@ -7,12 +8,14 @@ void matrix_init_kb(void) {
led_init_ports(); led_init_ports();
}; };
__attribute__ ((weak))
void matrix_scan_kb(void) { void matrix_scan_kb(void) {
// put your looping keyboard code here // put your looping keyboard code here
// runs every cycle (a lot) // runs every cycle (a lot)
matrix_scan_user(); matrix_scan_user();
}; };
__attribute__ ((weak))
void led_init_ports(void) { void led_init_ports(void) {
// * Set our LED pins as output // * Set our LED pins as output
setPinOutput(B1); setPinOutput(B1);
@@ -20,23 +23,12 @@ void led_init_ports(void) {
setPinOutput(B3); setPinOutput(B3);
} }
void led_set_kb(uint8_t usb_led) { bool led_update_kb(led_t led_state) {
if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) { bool runDefault = led_update_user(led_state);
writePinLow(B1); if (runDefault) {
} else { writePin(B1, !led_state.num_lock);
writePinHigh(B1); writePin(B2, !led_state.caps_lock);
writePin(B3, !led_state.scroll_lock);
} }
return runDefault;
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
writePinLow(B2);
} else {
writePinHigh(B2);
}
if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
writePinLow(B3);
} else {
writePinHigh(B3);
}
led_set_user(usb_led);
} }
+1 -1
View File
@@ -110,7 +110,7 @@ void rgb_matrix_indicators_user(void) {
} }
#else /* no RGB matrix support */ #else /* no RGB matrix support */
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
if (state & (1<<NUM)) { if (state & (1<<NUM)) {
set_numpad_colours(1, &set_led_to); set_numpad_colours(1, &set_led_to);
} else { } else {
+1 -1
View File
@@ -171,7 +171,7 @@ enum layers {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
+1 -1
View File
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
+2 -1
View File
@@ -21,7 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define _x_ KC_NO #define _x_ KC_NO
#define LAYOUT_iso( \ #define LAYOUT_65_iso_blocker( \
K0D, K0C, K0B, K0A, K09, K08, K07, K06, K05, K04, K03, K02, K01, K00, K0E, \ K0D, K0C, K0B, K0A, K09, K08, K07, K06, K05, K04, K03, K02, K01, K00, K0E, \
K1D, K1C, K1B, K1A, K19, K18, K17, K16, K15, K14, K13, K12, K11, K1E, \ K1D, K1C, K1B, K1A, K19, K18, K17, K16, K15, K14, K13, K12, K11, K1E, \
K2D, K2C, K2B, K2A, K29, K28, K27, K26, K25, K24, K23, K22, K10, K21, K2E, \ K2D, K2C, K2B, K2A, K29, K28, K27, K26, K25, K24, K23, K22, K10, K21, K2E, \
@@ -56,3 +56,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
} }
#define LAYOUT LAYOUT_65_ansi_blocker // added to not break existing checked in keymaps #define LAYOUT LAYOUT_65_ansi_blocker // added to not break existing checked in keymaps
#define LAYOUT_iso LAYOUT_65_iso_blocker
+1 -1
View File
@@ -5,7 +5,7 @@
"height": 6, "height": 6,
"width": 15, "width": 15,
"layouts": { "layouts": {
"LAYOUT_iso": { "LAYOUT_65_iso_blocker": {
"key_count": 68, "key_count": 68,
"layout": [{"label":"K0D", "x":0, "y":0}, {"label":"K0C", "x":1, "y":0}, {"label":"K0B", "x":2, "y":0}, {"label":"K0A", "x":3, "y":0}, {"label":"K09", "x":4, "y":0}, {"label":"K08", "x":5, "y":0}, {"label":"K07", "x":6, "y":0}, {"label":"K06", "x":7, "y":0}, {"label":"K05", "x":8, "y":0}, {"label":"K04", "x":9, "y":0}, {"label":"K03", "x":10, "y":0}, {"label":"K02", "x":11, "y":0}, {"label":"K01", "x":12, "y":0}, {"label":"K00", "x":13, "y":0, "w":2}, {"label":"K0E", "x":15, "y":0}, {"label":"K1D", "x":0, "y":1, "w":1.5}, {"label":"K1C", "x":1.5, "y":1}, {"label":"K1B", "x":2.5, "y":1}, {"label":"K1A", "x":3.5, "y":1}, {"label":"K19", "x":4.5, "y":1}, {"label":"K18", "x":5.5, "y":1}, {"label":"K17", "x":6.5, "y":1}, {"label":"K16", "x":7.5, "y":1}, {"label":"K15", "x":8.5, "y":1}, {"label":"K14", "x":9.5, "y":1}, {"label":"K13", "x":10.5, "y":1}, {"label":"K12", "x":11.5, "y":1}, {"label":"K11", "x":12.5, "y":1}, {"label":"K1E", "x":15, "y":1}, {"label":"K2D", "x":0, "y":2, "w":1.75}, {"label":"K2C", "x":1.75, "y":2}, {"label":"K2B", "x":2.75, "y":2}, {"label":"K2A", "x":3.75, "y":2}, {"label":"K29", "x":4.75, "y":2}, {"label":"K28", "x":5.75, "y":2}, {"label":"K27", "x":6.75, "y":2}, {"label":"K26", "x":7.75, "y":2}, {"label":"K25", "x":8.75, "y":2}, {"label":"K24", "x":9.75, "y":2}, {"label":"K23", "x":10.75, "y":2}, {"label":"K22", "x":11.75, "y":2}, {"label":"K10", "x":12.75, "y":2}, {"label":"K21", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"K2E", "x":15, "y":2}, {"label":"K3D", "x":0, "y":3, "w":1.25}, {"label":"K4A", "x":1.25, "y":3}, {"label":"K3C", "x":2.25, "y":3}, {"label":"K3B", "x":3.25, "y":3}, {"label":"K3A", "x":4.25, "y":3}, {"label":"K39", "x":5.25, "y":3}, {"label":"K38", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K36", "x":8.25, "y":3}, {"label":"K35", "x":9.25, "y":3}, {"label":"K34", "x":10.25, "y":3}, {"label":"K33", "x":11.25, "y":3}, {"label":"K32", "x":12.25, "y":3, "w":1.75}, {"label":"K30", "x":14, "y":3}, {"label":"K3E", "x":15, "y":3}, {"label":"K4D", "x":0, "y":4, "w":1.25}, {"label":"K4C", "x":1.25, "y":4, "w":1.25}, {"label":"K4B", "x":2.5, "y":4, "w":1.25}, {"label":"K48", "x":3.75, "y":4, "w":6.25}, {"label":"K44", "x":10, "y":4, "w":1.25}, {"label":"K43", "x":11.25, "y":4, "w":1.25}, {"label":"K42", "x":13, "y":4}, {"label":"K40", "x":14, "y":4}, {"label":"K4E", "x":15, "y":4}] "layout": [{"label":"K0D", "x":0, "y":0}, {"label":"K0C", "x":1, "y":0}, {"label":"K0B", "x":2, "y":0}, {"label":"K0A", "x":3, "y":0}, {"label":"K09", "x":4, "y":0}, {"label":"K08", "x":5, "y":0}, {"label":"K07", "x":6, "y":0}, {"label":"K06", "x":7, "y":0}, {"label":"K05", "x":8, "y":0}, {"label":"K04", "x":9, "y":0}, {"label":"K03", "x":10, "y":0}, {"label":"K02", "x":11, "y":0}, {"label":"K01", "x":12, "y":0}, {"label":"K00", "x":13, "y":0, "w":2}, {"label":"K0E", "x":15, "y":0}, {"label":"K1D", "x":0, "y":1, "w":1.5}, {"label":"K1C", "x":1.5, "y":1}, {"label":"K1B", "x":2.5, "y":1}, {"label":"K1A", "x":3.5, "y":1}, {"label":"K19", "x":4.5, "y":1}, {"label":"K18", "x":5.5, "y":1}, {"label":"K17", "x":6.5, "y":1}, {"label":"K16", "x":7.5, "y":1}, {"label":"K15", "x":8.5, "y":1}, {"label":"K14", "x":9.5, "y":1}, {"label":"K13", "x":10.5, "y":1}, {"label":"K12", "x":11.5, "y":1}, {"label":"K11", "x":12.5, "y":1}, {"label":"K1E", "x":15, "y":1}, {"label":"K2D", "x":0, "y":2, "w":1.75}, {"label":"K2C", "x":1.75, "y":2}, {"label":"K2B", "x":2.75, "y":2}, {"label":"K2A", "x":3.75, "y":2}, {"label":"K29", "x":4.75, "y":2}, {"label":"K28", "x":5.75, "y":2}, {"label":"K27", "x":6.75, "y":2}, {"label":"K26", "x":7.75, "y":2}, {"label":"K25", "x":8.75, "y":2}, {"label":"K24", "x":9.75, "y":2}, {"label":"K23", "x":10.75, "y":2}, {"label":"K22", "x":11.75, "y":2}, {"label":"K10", "x":12.75, "y":2}, {"label":"K21", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"K2E", "x":15, "y":2}, {"label":"K3D", "x":0, "y":3, "w":1.25}, {"label":"K4A", "x":1.25, "y":3}, {"label":"K3C", "x":2.25, "y":3}, {"label":"K3B", "x":3.25, "y":3}, {"label":"K3A", "x":4.25, "y":3}, {"label":"K39", "x":5.25, "y":3}, {"label":"K38", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K36", "x":8.25, "y":3}, {"label":"K35", "x":9.25, "y":3}, {"label":"K34", "x":10.25, "y":3}, {"label":"K33", "x":11.25, "y":3}, {"label":"K32", "x":12.25, "y":3, "w":1.75}, {"label":"K30", "x":14, "y":3}, {"label":"K3E", "x":15, "y":3}, {"label":"K4D", "x":0, "y":4, "w":1.25}, {"label":"K4C", "x":1.25, "y":4, "w":1.25}, {"label":"K4B", "x":2.5, "y":4, "w":1.25}, {"label":"K48", "x":3.75, "y":4, "w":6.25}, {"label":"K44", "x":10, "y":4, "w":1.25}, {"label":"K43", "x":11.25, "y":4, "w":1.25}, {"label":"K42", "x":13, "y":4}, {"label":"K40", "x":14, "y":4}, {"label":"K4E", "x":15, "y":4}]
}, },
@@ -23,14 +23,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT( [_BL] = LAYOUT_65_ansi_blocker(
KC_GESC, 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_GESC, 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_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_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_CAPS, 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_PGUP, \ KC_CAPS, 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_PGUP, \
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_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_PGDN, \
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RIGHT), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RIGHT),
[_FL] = LAYOUT( [_FL] = LAYOUT_65_ansi_blocker(
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_DEL, KC_PAUS, \ 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_DEL, KC_PAUS, \
KC_TRNS, KC_NO, KC_UP, KC_NO, RGB_TOG,RGB_VAI,RGB_HUI,RGB_SAI,KC_INS, RESET, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSLS, KC_SLCK, \ KC_TRNS, KC_NO, KC_UP, KC_NO, RGB_TOG,RGB_VAI,RGB_HUI,RGB_SAI,KC_INS, RESET, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSLS, KC_SLCK, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,RGB_MOD,RGB_VAD,RGB_HUD,RGB_SAD,KC_NO, KC_NO, KC_F14, KC_F15, KC_INS, KC_HOME, \ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,RGB_MOD,RGB_VAD,RGB_HUD,RGB_SAD,KC_NO, KC_NO, KC_F14, KC_F15, KC_INS, KC_HOME, \
+1 -1
View File
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_iso( [0] = LAYOUT_65_iso_blocker(
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_INS, 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_INS,
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_DEL, 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_DEL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_END, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_END,
+1 -1
View File
@@ -27,4 +27,4 @@ OPT_DEFS = -DDEBUG_LEVEL=0
CUSTOM_MATRIX = yes CUSTOM_MATRIX = yes
SRC = matrix.c SRC = matrix.c
LAYOUTS = 65_ansi_blocker LAYOUTS = 65_ansi_blocker 65_iso_blocker
+1 -1
View File
@@ -234,7 +234,7 @@ void eeconfig_init_user(void) { // EEPROM is getting reset!
eeconfig_update_user(led_config.raw); eeconfig_update_user(led_config.raw);
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -3,3 +3,5 @@
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(DVORAK_SOUND) #define STARTUP_SONG SONG(DVORAK_SOUND)
#endif #endif
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 5
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
), ),
[_ADJUST] = LAYOUT_planck_grid( [_ADJUST] = LAYOUT_planck_grid(
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_RIGHT, _______, _______, RESET, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, _______, _______, _______, _______,
_______, KC_PSCR, _______, KC_DOWN, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, KC_DOWN, KC_UP, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@@ -46,6 +46,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
//void matrix_init_user(void) {
// eeconfig_init();
//}
uint32_t layer_state_set_user(uint32_t state) { uint32_t layer_state_set_user(uint32_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
@@ -83,9 +83,9 @@ void led_set_user(uint8_t usb_led) {
} }
//function for layer indicator LED //function for layer indicator LED
uint32_t layer_state_set_user(uint32_t state) layer_state_t layer_state_set_user(layer_state_t state)
{ {
if (biton32(state) == 1) { if (get_highest_layer(state) == 1) {
writePinHigh(B3); writePinHigh(B3);
} else { } else {
writePinLow(B3); writePinLow(B3);
+1 -2
View File
@@ -61,7 +61,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
), ),
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
+1 -1
View File
@@ -56,6 +56,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
), ),
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
+1 -1
View File
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
) )
}; };
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
} }
+2 -2
View File
@@ -81,8 +81,8 @@ void keyboard_post_init_user(void) {
rgblight_sethsv_noeeprom_white(); rgblight_sethsv_noeeprom_white();
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
switch (biton32(state)) { switch (get_highest_layer(state)) {
case _LAYER1: case _LAYER1:
rgblight_sethsv_noeeprom_cyan(); rgblight_sethsv_noeeprom_cyan();
break; break;
+2 -2
View File
@@ -59,10 +59,10 @@ void keyboard_post_init_user(void) {
} }
} }
uint32_t layer_state_set_user(uint32_t state) { layer_state_t layer_state_set_user(layer_state_t state) {
// This code switches underglow color by active layer, if the user has enabled the feature // This code switches underglow color by active layer, if the user has enabled the feature
if(user_config.layer_rgb) { if(user_config.layer_rgb) {
switch (biton32(state)) { switch (get_highest_layer(state)) {
case _BL: case _BL:
rgblight_sethsv_noeeprom(0,10,255); rgblight_sethsv_noeeprom(0,10,255);
rgblight_mode_noeeprom(1); rgblight_mode_noeeprom(1);
@@ -0,0 +1,24 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤
* │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Sft│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
* │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl│
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
[0] = LAYOUT_60_iso_split_bs_rshift(
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_BSPC,
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_CAPS, 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_ENT,
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_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
)
};
@@ -0,0 +1,81 @@
{
"keyboard_name": "60% ISO layout with split Backspace and Right Shift",
"url": "",
"maintainer": "qmk",
"width": 15,
"height": 5,
"layouts": {
"LAYOUT_60_iso_split_bs_rshift": {
"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":12, "y":0},
{"x":13, "y":0},
{"x":14, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2},
{"x":13.75, "y":1, "w":1.25, "h":2},
{"x":0, "y":3, "w":1.25},
{"x":1.25, "y":3},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
{"x":5.25, "y":3},
{"x":6.25, "y":3},
{"x":7.25, "y":3},
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3, "w":1.75},
{"x":14, "y":3},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4, "w":1.25},
{"x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"x":10, "y":4, "w":1.25},
{"x":11.25, "y":4, "w":1.25},
{"x":12.5, "y":4, "w":1.25},
{"x":13.75, "y":4, "w":1.25}
]
}
}
}
@@ -0,0 +1,5 @@
[{a:7},"","","","","","","","","","","","","","",""],
[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},""],
[{w:1.75},"","","","","","","","","","","","",""],
[{w:1.25},"","","","","","","","","","","","",{w:1.75},"",""],
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},""]
@@ -0,0 +1,3 @@
# 60_iso_split_bs_rshift
LAYOUT_60_iso_split_bs_rshift
@@ -0,0 +1,24 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │PgU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │PgD│
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
* │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
* │Ctrl│GUI │Alt │                        │ Alt│Ctrl│ │ ← │ ↓ │ → │
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
[0] = LAYOUT_65_iso_blocker(
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_HOME,
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_PGUP,
KC_CAPS, 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_ENT, 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_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
+85
View File
@@ -0,0 +1,85 @@
{
"keyboard_name": "65% ISO layout with blocker",
"url": "",
"maintainer": "qmk",
"width": 16,
"height": 5,
"layouts": {
"LAYOUT_65_iso_blocker": {
"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":12, "y":0},
{"x":13, "y":0, "w":2},
{"x":15, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":15, "y":1},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2},
{"x":13.75, "y":1, "w":1.25, "h":2},
{"x":15, "y":2},
{"x":0, "y":3, "w":1.25},
{"x":1.25, "y":3},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
{"x":5.25, "y":3},
{"x":6.25, "y":3},
{"x":7.25, "y":3},
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3, "w":1.75},
{"x":14, "y":3},
{"x":15, "y":3},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4, "w":1.25},
{"x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"x":10, "y":4, "w":1.25},
{"x":11.25, "y":4, "w":1.25},
{"x":13, "y":4},
{"x":14, "y":4},
{"x":15, "y":4}
]
}
}
}
@@ -0,0 +1,5 @@
[{a:7},"","","","","","","","","","","","","",{w:2},"",""],
[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",""],
[{w:1.75},"","","","","","","","","","","","","",{x:1.25},""],
[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",""],
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{x:0.5},"","",""]
+5
View File
@@ -0,0 +1,5 @@
# 65_iso_blocker
LAYOUT_65_iso_blocker
This is the 65% ISO layout made popular by boards such as the Percent Canoe.
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"keyboard_name": "68% ANSI layout", "keyboard_name": "68-key ANSI layout",
"url": "", "url": "",
"maintainer": "qmk", "maintainer": "qmk",
"width": 17.25, "width": 17.25,
@@ -0,0 +1,24 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┐
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│PgU│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     ││Del│PgD│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│└───┴───┘
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤┌───┐
* │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift    ││ ↑ │
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬─┬──┴┼───┼───┐
* │Ctrl│GUI │Alt │                        │ Alt│ GUI│Ctrl│ │ ← │ ↓ │ → │
* └────┴────┴────┴────────────────────────┴────┴────┴────┘ └───┴───┴───┘
*/
[0] = LAYOUT_68_iso(
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_INS, 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_DEL, KC_PGDN,
KC_CAPS, 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_ENT,
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_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
+86
View File
@@ -0,0 +1,86 @@
{
"keyboard_name": "68-key ISO layout",
"url": "",
"maintainer": "qmk",
"width": 17.25,
"height": 5,
"layouts": {
"LAYOUT_68_iso": {
"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":12, "y":0},
{"x":13, "y":0, "w":2},
{"x":15.25, "y":0},
{"x":16.25, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
{"x":2.5, "y":1},
{"x":3.5, "y":1},
{"x":4.5, "y":1},
{"x":5.5, "y":1},
{"x":6.5, "y":1},
{"x":7.5, "y":1},
{"x":8.5, "y":1},
{"x":9.5, "y":1},
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
{"x":15.25, "y":1},
{"x":16.25, "y":1},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
{"x":2.75, "y":2},
{"x":3.75, "y":2},
{"x":4.75, "y":2},
{"x":5.75, "y":2},
{"x":6.75, "y":2},
{"x":7.75, "y":2},
{"x":8.75, "y":2},
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
{"x":12.75, "y":2},
{"x":13.75, "y":1, "w":1.25, "h":2},
{"x":0, "y":3, "w":1.25},
{"x":1.25, "y":3},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
{"x":5.25, "y":3},
{"x":6.25, "y":3},
{"x":7.25, "y":3},
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3, "w":2.75},
{"x":15.25, "y":3},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4, "w":1.25},
{"x":2.5, "y":4, "w":1.25},
{"x":3.75, "y":4, "w":6.25},
{"x":10, "y":4, "w":1.25},
{"x":11.25, "y":4, "w":1.25},
{"x":12.5, "y":4, "w":1.25},
{"x":14.25, "y":4},
{"x":15.25, "y":4},
{"x":16.25, "y":4}
]
}
}
}
+5
View File
@@ -0,0 +1,5 @@
[{a:7},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"",""],
[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"",""],
[{w:1.75},"","","","","","","","","","","","",""],
[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:0.25},""],
[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.5},"","",""]
+5
View File
@@ -0,0 +1,5 @@
# 68_iso
LAYOUT_68_iso
This is the 68 (actually 69) key ISO layout made popular by boards such as the Magicforce 69-key and Varmilo VA69M.
+8 -6
View File
@@ -595,23 +595,25 @@ class MILC(object):
return entrypoint_func return entrypoint_func
def add_subcommand(self, handler, description, name=None, **kwargs): def add_subcommand(self, handler, description, name=None, hidden=False, **kwargs):
"""Register a subcommand. """Register a subcommand.
If name is not provided we use `handler.__name__`. If name is not provided we use `handler.__name__`.
""" """
if self._inside_context_manager: if self._inside_context_manager:
raise RuntimeError('You must run this before the with statement!') raise RuntimeError('You must run this before the with statement!')
if self._subparsers is None: if self._subparsers is None:
self.add_subparsers() self.add_subparsers(metavar="")
if not name: if not name:
name = handler.__name__.replace("_", "-") name = handler.__name__.replace("_", "-")
self.acquire_lock() self.acquire_lock()
if not hidden:
kwargs['help'] = description self._subparsers.metavar = "{%s,%s}" % (self._subparsers.metavar[1:-1], name) if self._subparsers.metavar else "{%s%s}" % (self._subparsers.metavar[1:-1], name)
kwargs['help'] = description
self.subcommands[name] = SubparserWrapper(self, name, self._subparsers.add_parser(name, **kwargs)) self.subcommands[name] = SubparserWrapper(self, name, self._subparsers.add_parser(name, **kwargs))
self.subcommands[name].set_defaults(entrypoint=handler) self.subcommands[name].set_defaults(entrypoint=handler)
@@ -619,11 +621,11 @@ class MILC(object):
return handler return handler
def subcommand(self, description, **kwargs): def subcommand(self, description, hidden=False, **kwargs):
"""Decorator to register a subcommand. """Decorator to register a subcommand.
""" """
def subcommand_function(handler): def subcommand_function(handler):
return self.add_subcommand(handler, description, **kwargs) return self.add_subcommand(handler, description, hidden=hidden, **kwargs)
return subcommand_function return subcommand_function
+336 -201
View File
@@ -1,207 +1,342 @@
#ifndef SEND_STRING_KEYCODES /* Copyright 2019
#define SEND_STRING_KEYCODES *
* 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/>.
*/
#define X_NO 00 #pragma once
#define X_ROLL_OVER 01
#define X_POST_FAIL 02 // clang-format off
#define X_UNDEFINED 03
#define X_A 04 /* Punctuation */
#define X_B 05 #define X_ENT X_ENTER
#define X_C 06 #define X_ESC X_ESCAPE
#define X_D 07 #define X_BSPC X_BSPACE
#define X_E 08 #define X_SPC X_SPACE
#define X_F 09 #define X_MINS X_MINUS
#define X_G 0a #define X_EQL X_EQUAL
#define X_H 0b #define X_LBRC X_LBRACKET
#define X_I 0c #define X_RBRC X_RBRACKET
#define X_J 0d #define X_BSLS X_BSLASH
#define X_K 0e #define X_NUHS X_NONUS_HASH
#define X_L 0f #define X_SCLN X_SCOLON
#define X_M 10 #define X_QUOT X_QUOTE
#define X_N 11 #define X_GRV X_GRAVE
#define X_O 12 #define X_COMM X_COMMA
#define X_P 13 #define X_SLSH X_SLASH
#define X_Q 14 #define X_NUBS X_NONUS_BSLASH
#define X_R 15
#define X_S 16 /* Lock Keys */
#define X_T 17 #define X_CLCK X_CAPSLOCK
#define X_U 18 #define X_CAPS X_CAPSLOCK
#define X_V 19 #define X_SLCK X_SCROLLLOCK
#define X_W 1a #define X_NLCK X_NUMLOCK
#define X_X 1b #define X_LCAP X_LOCKING_CAPS
#define X_Y 1c #define X_LNUM X_LOCKING_NUM
#define X_Z 1d #define X_LSCR X_LOCKING_SCROLL
#define X_1 1e
#define X_2 1f /* Commands */
#define X_3 20 #define X_PSCR X_PSCREEN
#define X_4 21 #define X_PAUS X_PAUSE
#define X_5 22 #define X_BRK X_PAUSE
#define X_6 23 #define X_INS X_INSERT
#define X_7 24 #define X_DEL X_DELETE
#define X_8 25 #define X_PGDN X_PGDOWN
#define X_9 26 #define X_RGHT X_RIGHT
#define X_0 27 #define X_APP X_APPLICATION
#define X_ENTER 28 #define X_EXEC X_EXECUTE
#define X_ESCAPE 29 #define X_SLCT X_SELECT
#define X_BSPACE 2a #define X_AGIN X_AGAIN
#define X_TAB 2b #define X_PSTE X_PASTE
#define X_SPACE 2c #define X_ERAS X_ALT_ERASE
#define X_MINUS 2d #define X_CLR X_CLEAR
#define X_EQUAL 2e
#define X_LBRACKET 2f /* Keypad */
#define X_RBRACKET 30 #define X_PSLS X_KP_SLASH
#define X_BSLASH 31 #define X_PAST X_KP_ASTERISK
#define X_NONUS_HASH 32 #define X_PMNS X_KP_MINUS
#define X_SCOLON 33 #define X_PPLS X_KP_PLUS
#define X_QUOTE 34 #define X_PENT X_KP_ENTER
#define X_GRAVE 35 #define X_P1 X_KP_1
#define X_COMMA 36 #define X_P2 X_KP_2
#define X_DOT 37 #define X_P3 X_KP_3
#define X_SLASH 38 #define X_P4 X_KP_4
#define X_CAPSLOCK 39 #define X_P5 X_KP_5
#define X_F1 3a #define X_P6 X_KP_6
#define X_F2 3b #define X_P7 X_KP_7
#define X_F3 3c #define X_P8 X_KP_8
#define X_F4 3d #define X_P9 X_KP_9
#define X_F5 3e #define X_P0 X_KP_0
#define X_F6 3f #define X_PDOT X_KP_DOT
#define X_F7 40 #define X_PEQL X_KP_EQUAL
#define X_F8 41 #define X_PCMM X_KP_COMMA
#define X_F9 42
#define X_F10 43 /* Japanese specific */
#define X_F11 44 #define X_ZKHK X_GRAVE
#define X_F12 45 #define X_RO X_INT1
#define X_PSCREEN 46 #define X_KANA X_INT2
#define X_SCROLLLOCK 47 #define X_JYEN X_INT3
#define X_PAUSE 48 #define X_HENK X_INT4
#define X_INSERT 49 #define X_MHEN X_INT5
#define X_HOME 4a
#define X_PGUP 4b /* Korean specific */
#define X_DELETE 4c #define X_HAEN X_LANG1
#define X_END 4d #define X_HANJ X_LANG2
#define X_PGDOWN 4e
#define X_RIGHT 4f
#define X_LEFT 50
#define X_DOWN 51
#define X_UP 52
#define X_NUMLOCK 53
#define X_KP_SLASH 54
#define X_KP_ASTERISK 55
#define X_KP_MINUS 56
#define X_KP_PLUS 57
#define X_KP_ENTER 58
#define X_KP_1 59
#define X_KP_2 5a
#define X_KP_3 5b
#define X_KP_4 5c
#define X_KP_5 5d
#define X_KP_6 5e
#define X_KP_7 5f
#define X_KP_8 60
#define X_KP_9 61
#define X_KP_0 62
#define X_KP_DOT 63
#define X_NONUS_BSLASH 64
#define X_APPLICATION 65
#define X_POWER 66
#define X_KP_EQUAL 67
#define X_F13 68
#define X_F14 69
#define X_F15 6a
#define X_F16 6b
#define X_F17 6c
#define X_F18 6d
#define X_F19 6e
#define X_F20 6f
#define X_F21 70
#define X_F22 71
#define X_F23 72
#define X_F24 73
#define X_EXECUTE 74
#define X_HELP 75
#define X_MENU 76
#define X_SELECT 77
#define X_STOP 78
#define X_AGAIN 79
#define X_UNDO 7a
#define X_CUT 7b
#define X_COPY 7c
#define X_PASTE 7d
#define X_FIND 7e
#define X__MUTE 7f
#define X__VOLUP 80
#define X__VOLDOWN 81
#define X_LOCKING_CAPS 82
#define X_LOCKING_NUM 83
#define X_LOCKING_SCROLL 84
#define X_KP_COMMA 85
#define X_KP_EQUAL_AS400 86
#define X_INT1 87
#define X_INT2 88
#define X_INT3 89
#define X_INT4 8a
#define X_INT5 8b
#define X_INT6 8c
#define X_INT7 8d
#define X_INT8 8e
#define X_INT9 8f
#define X_LANG1 90
#define X_LANG2 91
#define X_LANG3 92
#define X_LANG4 93
#define X_LANG5 94
#define X_LANG6 95
#define X_LANG7 96
#define X_LANG8 97
#define X_LANG9 98
#define X_ALT_ERASE 99
#define X_SYSREQ 9a
#define X_CANCEL 9b
#define X_CLEAR 9c
#define X_PRIOR 9d
#define X_RETURN 9e
#define X_SEPARATOR 9f
#define X_OUT a0
#define X_OPER a1
#define X_CLEAR_AGAIN a2
#define X_CRSEL a3
#define X_EXSEL a4
/* Modifiers */ /* Modifiers */
#define X_LCTRL e0 #define X_LCTL X_LCTRL
#define X_LSHIFT e1 #define X_LSFT X_LSHIFT
#define X_LALT e2 #define X_LCMD X_LGUI
#define X_LGUI e3 #define X_LWIN X_LGUI
#define X_RCTRL e4 #define X_RCTL X_RCTRL
#define X_RSHIFT e5 #define X_RSFT X_RSHIFT
#define X_RALT e6 #define X_ALGR X_RALT
#define X_RGUI e7 #define X_RCMD X_RGUI
#define X_RWIN X_RGUI
/* System Control */ /* Generic Desktop Page (0x01) */
#define X_SYSTEM_POWER a5 #define X_PWR X_SYSTEM_POWER
#define X_SYSTEM_SLEEP a6 #define X_SLEP X_SYSTEM_SLEEP
#define X_SYSTEM_WAKE a7 #define X_WAKE X_SYSTEM_WAKE
/* Media Control */ /* Consumer Page (0x0C) */
#define X_AUDIO_MUTE a8 #define X_MUTE X_AUDIO_MUTE
#define X_AUDIO_VOL_UP a9 #define X_VOLU X_AUDIO_VOL_UP
#define X_AUDIO_VOL_DOWN aa #define X_VOLD X_AUDIO_VOL_DOWN
#define X_MEDIA_NEXT_TRACK ab #define X_MNXT X_MEDIA_NEXT_TRACK
#define X_MEDIA_PREV_TRACK ac #define X_MPRV X_MEDIA_PREV_TRACK
#define X_MEDIA_STOP ad #define X_MSTP X_MEDIA_STOP
#define X_MEDIA_PLAY_PAUSE ae #define X_MPLY X_MEDIA_PLAY_PAUSE
#define X_MEDIA_SELECT af #define X_MSEL X_MEDIA_SELECT
#define X_MEDIA_EJECT b0 #define X_EJCT X_MEDIA_EJECT
#define X_MAIL b1 #define X_CALC X_CALCULATOR
#define X_CALCULATOR b2 #define X_MYCM X_MY_COMPUTER
#define X_MY_COMPUTER b3 #define X_WSCH X_WWW_SEARCH
#define X_WWW_SEARCH b4 #define X_WHOM X_WWW_HOME
#define X_WWW_HOME b5 #define X_WBAK X_WWW_BACK
#define X_WWW_BACK b6 #define X_WFWD X_WWW_FORWARD
#define X_WWW_FORWARD b7 #define X_WSTP X_WWW_STOP
#define X_WWW_STOP b8 #define X_WREF X_WWW_REFRESH
#define X_WWW_REFRESH b9 #define X_WFAV X_WWW_FAVORITES
#define X_WWW_FAVORITES ba #define X_MFFD X_MEDIA_FAST_FORWARD
#define X_MRWD X_MEDIA_REWIND
#define X_BRIU X_BRIGHTNESS_UP
#define X_BRID X_BRIGHTNESS_DOWN
/* System Specific */
#define X_BRMU X_PAUSE
#define X_BRMD X_SCROLLLOCK
/* Keyboard/Keypad Page (0x07) */
#define X_A 04
#define X_B 05
#define X_C 06
#define X_D 07
#define X_E 08
#define X_F 09
#define X_G 0a
#define X_H 0b
#define X_I 0c
#define X_J 0d
#define X_K 0e
#define X_L 0f
#define X_M 10
#define X_N 11
#define X_O 12
#define X_P 13
#define X_Q 14
#define X_R 15
#define X_S 16
#define X_T 17
#define X_U 18
#define X_V 19
#define X_W 1a
#define X_X 1b
#define X_Y 1c
#define X_Z 1d
#define X_1 1e
#define X_2 1f
#define X_3 20
#define X_4 21
#define X_5 22
#define X_6 23
#define X_7 24
#define X_8 25
#define X_9 26
#define X_0 27
#define X_ENTER 28
#define X_ESCAPE 29
#define X_BSPACE 2a
#define X_TAB 2b
#define X_SPACE 2c
#define X_MINUS 2d
#define X_EQUAL 2e
#define X_LBRACKET 2f
#define X_RBRACKET 30
#define X_BSLASH 31
#define X_NONUS_HASH 32
#define X_SCOLON 33
#define X_QUOTE 34
#define X_GRAVE 35
#define X_COMMA 36
#define X_DOT 37
#define X_SLASH 38
#define X_CAPSLOCK 39
#define X_F1 3a
#define X_F2 3b
#define X_F3 3c
#define X_F4 3d
#define X_F5 3e
#define X_F6 3f
#define X_F7 40
#define X_F8 41
#define X_F9 42
#define X_F10 43
#define X_F11 44
#define X_F12 45
#define X_PSCREEN 46
#define X_SCROLLLOCK 47
#define X_PAUSE 48
#define X_INSERT 49
#define X_HOME 4a
#define X_PGUP 4b
#define X_DELETE 4c
#define X_END 4d
#define X_PGDOWN 4e
#define X_RIGHT 4f
#define X_LEFT 50
#define X_DOWN 51
#define X_UP 52
#define X_NUMLOCK 53
#define X_KP_SLASH 54
#define X_KP_ASTERISK 55
#define X_KP_MINUS 56
#define X_KP_PLUS 57
#define X_KP_ENTER 58
#define X_KP_1 59
#define X_KP_2 5a
#define X_KP_3 5b
#define X_KP_4 5c
#define X_KP_5 5d
#define X_KP_6 5e
#define X_KP_7 5f
#define X_KP_8 60
#define X_KP_9 61
#define X_KP_0 62
#define X_KP_DOT 63
#define X_NONUS_BSLASH 64
#define X_APPLICATION 65
#define X_POWER 66
#define X_KP_EQUAL 67
#define X_F13 68
#define X_F14 69
#define X_F15 6a
#define X_F16 6b
#define X_F17 6c
#define X_F18 6d
#define X_F19 6e
#define X_F20 6f
#define X_F21 70
#define X_F22 71
#define X_F23 72
#define X_F24 73
#define X_EXECUTE 74
#define X_HELP 75
#define X_MENU 76
#define X_SELECT 77
#define X_STOP 78
#define X_AGAIN 79
#define X_UNDO 7a
#define X_CUT 7b
#define X_COPY 7c
#define X_PASTE 7d
#define X_FIND 7e
#define X__MUTE 7f
#define X__VOLUP 80
#define X__VOLDOWN 81
#define X_LOCKING_CAPS 82
#define X_LOCKING_NUM 83
#define X_LOCKING_SCROLL 84
#define X_KP_COMMA 85
#define X_KP_EQUAL_AS400 86
#define X_INT1 87
#define X_INT2 88
#define X_INT3 89
#define X_INT4 8a
#define X_INT5 8b
#define X_INT6 8c
#define X_INT7 8d
#define X_INT8 8e
#define X_INT9 8f
#define X_LANG1 90
#define X_LANG2 91
#define X_LANG3 92
#define X_LANG4 93
#define X_LANG5 94
#define X_LANG6 95
#define X_LANG7 96
#define X_LANG8 97
#define X_LANG9 98
#define X_ALT_ERASE 99
#define X_SYSREQ 9a
#define X_CANCEL 9b
#define X_CLEAR 9c
#define X_PRIOR 9d
#define X_RETURN 9e
#define X_SEPARATOR 9f
#define X_OUT a0
#define X_OPER a1
#define X_CLEAR_AGAIN a2
#define X_CRSEL a3
#define X_EXSEL a4
/* Modifiers */
#define X_LCTRL e0
#define X_LSHIFT e1
#define X_LALT e2
#define X_LGUI e3
#define X_RCTRL e4
#define X_RSHIFT e5
#define X_RALT e6
#define X_RGUI e7
/* Media and Function keys */
/* Generic Desktop Page (0x01) */
#define X_SYSTEM_POWER a5
#define X_SYSTEM_SLEEP a6
#define X_SYSTEM_WAKE a7
/* Consumer Page (0x0C) */
#define X_AUDIO_MUTE a8
#define X_AUDIO_VOL_UP a9
#define X_AUDIO_VOL_DOWN aa
#define X_MEDIA_NEXT_TRACK ab
#define X_MEDIA_PREV_TRACK ac
#define X_MEDIA_STOP ad
#define X_MEDIA_PLAY_PAUSE ae
#define X_MEDIA_SELECT af
#define X_MEDIA_EJECT b0
#define X_MAIL b1
#define X_CALCULATOR b2
#define X_MY_COMPUTER b3
#define X_WWW_SEARCH b4
#define X_WWW_HOME b5
#define X_WWW_BACK b6
#define X_WWW_FORWARD b7
#define X_WWW_STOP b8
#define X_WWW_REFRESH b9
#define X_WWW_FAVORITES ba
#define X_MEDIA_FAST_FORWARD bb #define X_MEDIA_FAST_FORWARD bb
#define X_MEDIA_REWIND bc #define X_MEDIA_REWIND bc
#endif #define X_BRIGHTNESS_UP bd
#define X_BRIGHTNESS_DOWN be
+1 -1
View File
@@ -321,7 +321,7 @@ extcoff: $(BUILD_DIR)/$(TARGET).elf
bootloader: bootloader:
make -C lib/lufa/Bootloaders/DFU/ clean make -C lib/lufa/Bootloaders/DFU/ clean
$(TMK_DIR)/make_dfu_header.sh $(ALL_CONFIGS) $(TMK_DIR)/make_dfu_header.sh $(ALL_CONFIGS)
$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne '/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0))
$(eval PROGRAM_SIZE_KB=$(shell n=`expr $(MAX_SIZE) / 1024` && echo $$(($$n)) || echo 0)) $(eval PROGRAM_SIZE_KB=$(shell n=`expr $(MAX_SIZE) / 1024` && echo $$(($$n)) || echo 0))
$(eval BOOT_SECTION_SIZE_KB=$(shell n=`expr $(BOOTLOADER_SIZE) / 1024` && echo $$(($$n)) || echo 0)) $(eval BOOT_SECTION_SIZE_KB=$(shell n=`expr $(BOOTLOADER_SIZE) / 1024` && echo $$(($$n)) || echo 0))
$(eval FLASH_SIZE_KB=$(shell n=`expr $(PROGRAM_SIZE_KB) + $(BOOT_SECTION_SIZE_KB)` && echo $$(($$n)) || echo 0)) $(eval FLASH_SIZE_KB=$(shell n=`expr $(PROGRAM_SIZE_KB) + $(BOOT_SECTION_SIZE_KB)` && echo $$(($$n)) || echo 0))
-1
View File
@@ -175,7 +175,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define KC_MPLY KC_MEDIA_PLAY_PAUSE #define KC_MPLY KC_MEDIA_PLAY_PAUSE
#define KC_MSEL KC_MEDIA_SELECT #define KC_MSEL KC_MEDIA_SELECT
#define KC_EJCT KC_MEDIA_EJECT #define KC_EJCT KC_MEDIA_EJECT
#define KC_MAIL KC_MAIL
#define KC_CALC KC_CALCULATOR #define KC_CALC KC_CALCULATOR
#define KC_MYCM KC_MY_COMPUTER #define KC_MYCM KC_MY_COMPUTER
#define KC_WSCH KC_WWW_SEARCH #define KC_WSCH KC_WWW_SEARCH
+1 -1
View File
@@ -397,7 +397,7 @@ ifeq ($(findstring avr-gcc,$(CC)),avr-gcc)
SIZE_MARGIN = 1024 SIZE_MARGIN = 1024
check-size: check-size:
$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne '/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0))
$(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi)) $(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi))
$(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE))) $(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE)))
$(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE))) $(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE)))
+23 -43
View File
@@ -8,25 +8,27 @@ installflip=false
util_dir=$(dirname "$0") util_dir=$(dirname "$0")
echo "Installing dependencies needed for the installation (quazip)" echo "Installing dependencies needed for the installation (quazip)"
pacman --needed -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-clang msys/git msys/p7zip msys/python3 msys/unzip pacman --needed --noconfirm --disable-download-timeout -Sy base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-clang msys/git msys/p7zip mingw-w64-x86_64-python3-pip msys/unzip
source "$dir/win_shared_install.sh" source "$dir/win_shared_install.sh"
function install_avr { function install_avr {
rm -f -r "$avrtools" rm -f -r "$avrtools"
wget "http://ww1.microchip.com/downloads/en/DeviceDoc/avr8-gnu-toolchain-3.6.1.1752-win32.any.x86.zip" wget "https://blog.zakkemble.net/download/avr-gcc-8.3.0-x86-mingw.zip"
echo "Extracting AVR toolchain..." echo "Extracting AVR toolchain..."
unzip -q avr8-gnu-toolchain-3.6.1.1752-win32.any.x86.zip unzip -q -d . avr-gcc-8.3.0-x86-mingw.zip
mv avr8-gnu-toolchain-win32_x86/ avr8-gnu-toolchain mv avr-gcc-8.3.0-x86-mingw avr8-gnu-toolchain
rm __MACOSX -R rm avr8-gnu-toolchain/bin/make.exe
rm avr8-gnu-toolchain-3.6.1.1752-win32.any.x86.zip rm avr-gcc-8.3.0-x86-mingw.zip
pacman --needed -S mingw-w64-x86_64-avrdude pacman --needed --disable-download-timeout -S mingw-w64-x86_64-avrdude
} }
function install_arm { function install_arm {
wget -O gcc-arm-none-eabi.zip "https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-win32.zip?product=GNU%20ARM%20Embedded%20Toolchain,ZIP,,Windows,6-2017-q2-update" rm -f -r "$armtools"
unzip -d gcc-arm-none-eabi gcc-arm-none-eabi.zip wget -O gcc-arm-none-eabi-8-2019-q3-update-win32.zip "https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2019q3/RC1.1/gcc-arm-none-eabi-8-2019-q3-update-win32.zip"
rm gcc-arm-none-eabi.zip echo "Extracting ARM toolchain..."
unzip -q -d gcc-arm-none-eabi gcc-arm-none-eabi-8-2019-q3-update-win32.zip
rm gcc-arm-none-eabi-8-2019-q3-update-win32.zip
} }
function extract_flip { function extract_flip {
@@ -43,17 +45,10 @@ if [ -f "FlipInstaller.exe" ]; then
fi fi
if [ ! -d "$avrtools" ]; then if [ ! -d "$avrtools" ]; then
while true; do echo
echo echo "The AVR toolchain is not installed."
echo "The AVR toolchain is not installed." echo "This is needed for building AVR based keyboards."
echo "This is needed for building AVR based keboards." install_avr
read -p "Do you want to install it? (Y/N) " res
case $res in
[Yy]* ) install_avr; break;;
[Nn]* ) break;;
* ) echo "Invalid answer";;
esac
done
else else
while true; do while true; do
echo echo
@@ -68,17 +63,10 @@ else
fi fi
if [ ! -d "$armtools" ]; then if [ ! -d "$armtools" ]; then
while true; do echo
echo echo "The ARM toolchain is not installed."
echo "The ARM toolchain is not installed." echo "This is needed for building ARM based keyboards."
echo "This is needed for building ARM based keyboards." install_arm
read -p "Do you want to install it? (Y/N) " res
case $res in
[Yy]* ) install_arm; break;;
[Nn]* ) break;;
* ) echo "Invalid answer";;
esac
done
else else
while true; do while true; do
echo echo
@@ -103,18 +91,10 @@ then
echo "The line source ~/qmk_utils/activate_msys2.sh is already added to your /.bashrc" echo "The line source ~/qmk_utils/activate_msys2.sh is already added to your /.bashrc"
echo "Not adding it twice!" echo "Not adding it twice!"
else else
while true; do
echo echo
echo "Do you want to add 'source ~/qmk_utils/activate_msys2.sh' to the end of your" echo "Adding 'source ~/qmk_utils/activate_msys2.sh' to the end of your"
echo ".bashrc file? Without this make won't find the needed utils, so if you don't" echo ".bashrc file. Without this make won't find the needed utils."
echo "want to do it automatically, then you have to do it manually later." echo "source ~/qmk_utils/activate_msys2.sh" >> ~/.bashrc;
read -p "(Y/N)? " res
case $res in
[Yy]* ) echo "source ~/qmk_utils/activate_msys2.sh" >> ~/.bashrc; break;;
[Nn]* ) break;;
* ) echo "Invalid answer";;
esac
done
fi fi
echo echo
+1 -1
View File
@@ -13,7 +13,7 @@ if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; the
# fix formatting # fix formatting
git checkout master git checkout master
git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | xargs -0 dos2unix git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | xargs -0 dos2unix
git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | grep -e '^drivers' -e '^quantum' -e '^tests' -e '^tmk_core' | grep -v 'quantum/template' | xargs -0 clang-format git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} '*.c' '*.h' '*.cpp' | grep -z -e '^drivers' -e '^quantum' -e '^tests' -e '^tmk_core' | grep -zv -e 'quantum/template' -e 'tmk_core/protocol/usb_hid' | xargs -0 clang-format -i
git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | xargs -0 git add git diff --diff-filter=AM --name-only -n 1 -z ${TRAVIS_COMMIT_RANGE} | xargs -0 git add
git commit -m "format code according to conventions [skip ci]" && git push [email protected]:qmk/qmk_firmware.git master git commit -m "format code according to conventions [skip ci]" && git push [email protected]:qmk/qmk_firmware.git master