forked from mirror/qmk_firmware
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ea9806d67 | ||
|
|
7874f297b3 | ||
|
|
3541f01a72 | ||
|
|
eae21eed74 | ||
|
|
e62ab7e259 | ||
|
|
0270d4d5a1 | ||
|
|
7e9ed2acbf |
@@ -111,7 +111,7 @@
|
||||
* [Using Eclipse with QMK](other_eclipse.md)
|
||||
* [Using VSCode with QMK](other_vscode.md)
|
||||
* [Support](support.md)
|
||||
* [How to add translations](translating.md)
|
||||
* [Translating the QMK Docs](translating.md)
|
||||
|
||||
* QMK Internals (In Progress)
|
||||
* [Defines](internals_defines.md)
|
||||
|
||||
@@ -101,6 +101,18 @@ enum my_keycodes {
|
||||
};
|
||||
```
|
||||
|
||||
### Previewing the Documentation
|
||||
|
||||
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
|
||||
|
||||
./bin/qmk docs
|
||||
|
||||
or if you only have Python 3 installed:
|
||||
|
||||
python3 -m http.server 8936
|
||||
|
||||
and navigating to `http://localhost:8936/`.
|
||||
|
||||
## Keymaps
|
||||
|
||||
Most first-time QMK contributors start with their personal keymaps. We try to keep keymap standards pretty casual (keymaps, after all, reflect the personality of their creators) but we do ask that you follow these guidelines to make it easier for others to discover and learn from your keymap.
|
||||
|
||||
@@ -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.
|
||||
|
||||
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.
|
||||
|
||||
@@ -122,66 +130,41 @@ You must return either `true` or `false` from this function, depending on whethe
|
||||
|
||||
```c
|
||||
bool led_update_kb(led_t led_state) {
|
||||
if(led_update_user(led_state)) {
|
||||
if (led_state.num_lock) {
|
||||
writePinLow(B0);
|
||||
} else {
|
||||
writePinHigh(B0);
|
||||
}
|
||||
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);
|
||||
}
|
||||
return true;
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
// writePin sets the pin high for 1 and low for 0.
|
||||
// In this example the pins are inverted, setting
|
||||
// it low/0 turns it on, and high/1 turns the LED off.
|
||||
// This behavior depends on whether the LED is between the pin
|
||||
// and VCC or the pin and GND.
|
||||
writePin(B0, !led_state.num_lock);
|
||||
writePin(B1, !led_state.caps_lock);
|
||||
writePin(B2, !led_state.scroll_lock);
|
||||
writePin(B3, !led_state.compose);
|
||||
writePin(B4, !led_state.kana);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
```
|
||||
|
||||
### 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
|
||||
#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) {
|
||||
if (led_state.num_lock) {
|
||||
writePinLow(B0);
|
||||
} else {
|
||||
writePinHigh(B0);
|
||||
}
|
||||
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);
|
||||
#ifdef AUDIO_ENABLE
|
||||
static uint8_t caps_state = 0;
|
||||
if (caps_state != led_state.caps_lock) {
|
||||
led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off);
|
||||
caps_state = led_state.caps_lock;
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
```
|
||||
@@ -411,7 +394,7 @@ void keyboard_post_init_user(void) {
|
||||
// Set default layer, if enabled
|
||||
if (user_config.rgb_layer_change) {
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_sethsv_noeeprom_cyan();
|
||||
rgblight_sethsv_noeeprom_cyan();
|
||||
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
|
||||
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
|
||||
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
|
||||
}
|
||||
}
|
||||
return false; break;
|
||||
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 (user_config.rgb_layer_change) { // only if this is enabled
|
||||
user_config.rgb_layer_change = false; // disable it, and
|
||||
if (user_config.rgb_layer_change) { // only if this is enabled
|
||||
user_config.rgb_layer_change = false; // disable it, and
|
||||
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.
|
||||
|
||||
```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.rgb_layer_change = true; // We want this enabled by default
|
||||
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`.
|
||||
|
||||
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
|
||||
|
||||
@@ -35,6 +35,15 @@
|
||||
loadNavbar: '_langs.md',
|
||||
mergeNavbar: true,
|
||||
auto2top: true,
|
||||
fallbackLanguages: [
|
||||
'de',
|
||||
'es',
|
||||
'fr-fr',
|
||||
'he-il',
|
||||
'ja',
|
||||
'ru-ru',
|
||||
'zh-cn'
|
||||
],
|
||||
formatUpdated: '{YYYY}/{MM}/{DD} {HH}:{mm}',
|
||||
search: {
|
||||
paths: 'auto',
|
||||
|
||||
@@ -1,29 +1,49 @@
|
||||
# How to translate the QMK docs into different languages
|
||||
# Translating the QMK Docs
|
||||
|
||||
All files in the root folder (`docs/`) should be in English - all other languages should be in subfolders with the ISO 639-1 language codes, followed by `-` and the country code where relevant. [A list of common ones can be found here](https://www.andiamo.co.uk/resources/iso-language-codes/). If this folder doesn't exist, you may create it. Each of the translated files should have the same name as the English version, so things can fall back successfully.
|
||||
|
||||
A `_summary.md` file should exist in this folder with a list of links to each file, with a translated name, and link preceded by the language folder:
|
||||
|
||||
* [QMK简介](zh-cn/getting_started_introduction.md)
|
||||
```markdown
|
||||
* [QMK简介](zh-cn/getting_started_introduction.md)
|
||||
```
|
||||
|
||||
All links to other docs pages must also be prefixed with the language folder. If the link is to a specific part of the page (ie. a certain heading), you must use the English ID for the heading, like so:
|
||||
|
||||
```markdown
|
||||
[建立你的环境](zh-cn/newbs-getting-started.md#set-up-your-environment)
|
||||
|
||||
## 建立你的环境 :id=set-up-your-environment
|
||||
```
|
||||
|
||||
Once you've finished translating a new language, you'll also need to modify the following files:
|
||||
|
||||
* [`docs/_langs.md`](https://github.com/qmk/qmk_firmware/blob/master/docs/_langs.md)
|
||||
Each line should contain a country flag in the format `:us:` followed by the name represented in its own language:
|
||||
|
||||
- [:cn: 中文](/zh-cn/)
|
||||
Each line should contain a country flag as a [GitHub emoji shortcode](https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md#country-flag) followed by the name represented in its own language:
|
||||
|
||||
```markdown
|
||||
- [:cn: 中文](/zh-cn/)
|
||||
```
|
||||
|
||||
* [`docs/index.html`](https://github.com/qmk/qmk_firmware/blob/master/docs/index.html)
|
||||
Both `placeholder` and `noData` objects should have a dictionary entry for the language folder in a string:
|
||||
|
||||
'/zh-cn/': '没有结果!',
|
||||
Both `placeholder` and `noData` objects should have a dictionary entry for the language folder in a string:
|
||||
|
||||
## Previewing the translations
|
||||
```js
|
||||
'/zh-cn/': '没有结果!',
|
||||
```
|
||||
|
||||
Before opening a pull request, you can preview your additions if you have Python 3 installed by running this command in the `docs/` folder:
|
||||
And make sure to add the language folder in the `fallbackLanguages` list, so it will properly fall back to English instead of 404ing:
|
||||
|
||||
python -m http.server 9000
|
||||
```js
|
||||
fallbackLanguages: [
|
||||
// ...
|
||||
'zh-cn',
|
||||
// ...
|
||||
],
|
||||
```
|
||||
|
||||
and navigating to http://localhost:9000/ - you should be able to select your new language from the "Translations" menu at the top-right.
|
||||
## Previewing the Translations
|
||||
|
||||
See (Previewing the Documentation)[contributing.md#previewing-the-documentation] for how to set up a local instance of the docs - you should be able to select your new language from the "Translations" menu at the top-right.
|
||||
|
||||
Once you're happy with your work, feel free to open a pull request!
|
||||
|
||||
85
keyboards/keebio/bdn9/keymaps/hbbisenieks/keymap.c
Normal file
85
keyboards/keebio/bdn9/keymaps/hbbisenieks/keymap.c
Normal file
@@ -0,0 +1,85 @@
|
||||
/* Copyright 2019 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/>.
|
||||
*/
|
||||
#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
|
||||
}
|
||||
}
|
||||
}
|
||||
41
keyboards/keebio/iris/keymaps/hbbisenieks/config.h
Normal file
41
keyboards/keebio/iris/keymaps/hbbisenieks/config.h
Normal file
@@ -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
|
||||
161
keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c
Normal file
161
keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c
Normal file
@@ -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;
|
||||
}
|
||||
6
keyboards/keebio/iris/keymaps/hbbisenieks/readme.md
Normal file
6
keyboards/keebio/iris/keymaps/hbbisenieks/readme.md
Normal file
@@ -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.
|
||||
|
||||
6
keyboards/keebio/iris/keymaps/hbbisenieks/rules.mk
Normal file
6
keyboards/keebio/iris/keymaps/hbbisenieks/rules.mk
Normal file
@@ -0,0 +1,6 @@
|
||||
RGBLIGHT_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
|
||||
# Comment out for pro-micro board
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
@@ -22,3 +22,33 @@ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
_______, 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
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "wonderland.h"
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
@@ -7,12 +8,14 @@ void matrix_init_kb(void) {
|
||||
led_init_ports();
|
||||
};
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
matrix_scan_user();
|
||||
};
|
||||
|
||||
__attribute__ ((weak))
|
||||
void led_init_ports(void) {
|
||||
// * Set our LED pins as output
|
||||
setPinOutput(B1);
|
||||
@@ -20,23 +23,12 @@ void led_init_ports(void) {
|
||||
setPinOutput(B3);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
|
||||
writePinLow(B1);
|
||||
} else {
|
||||
writePinHigh(B1);
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool runDefault = led_update_user(led_state);
|
||||
if (runDefault) {
|
||||
writePin(B1, !led_state.num_lock);
|
||||
writePin(B2, !led_state.caps_lock);
|
||||
writePin(B3, !led_state.scroll_lock);
|
||||
}
|
||||
|
||||
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);
|
||||
return runDefault;
|
||||
}
|
||||
|
||||
@@ -3,3 +3,5 @@
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define STARTUP_SONG SONG(DVORAK_SOUND)
|
||||
#endif
|
||||
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 5
|
||||
|
||||
@@ -13,7 +13,9 @@ This is a keyboard firmware based on the [tmk\_keyboard firmware](https://github
|
||||
|
||||
* [See the official documentation on docs.qmk.fm](https://docs.qmk.fm)
|
||||
|
||||
The docs are powered by [Docsify](https://docsify.js.org/) and hosted on [GitHub](/docs/). You can request changes by making a fork and [pull request](https://github.com/qmk/qmk_firmware/pulls), or by clicking the "Edit Document" link at the bottom of any page.
|
||||
The docs are powered by [Docsify](https://docsify.js.org/) and hosted on [GitHub](/docs/). They are also viewable offline; see [Previewing the Documentation](https://docs.qmk.fm/#/contributing?id=previewing-the-documentation) for more details.
|
||||
|
||||
You can request changes by making a fork and opening a [pull request](https://github.com/qmk/qmk_firmware/pulls), or by clicking the "Edit Document" link at the bottom of any page.
|
||||
|
||||
## Supported Keyboards
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@ extcoff: $(BUILD_DIR)/$(TARGET).elf
|
||||
bootloader:
|
||||
make -C lib/lufa/Bootloaders/DFU/ clean
|
||||
$(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 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))
|
||||
|
||||
@@ -397,7 +397,7 @@ ifeq ($(findstring avr-gcc,$(CC)),avr-gcc)
|
||||
SIZE_MARGIN = 1024
|
||||
|
||||
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 FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE)))
|
||||
$(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE)))
|
||||
|
||||
@@ -13,7 +13,7 @@ if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; the
|
||||
# fix formatting
|
||||
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} | 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 commit -m "format code according to conventions [skip ci]" && git push git@github.com:qmk/qmk_firmware.git master
|
||||
|
||||
|
||||
Reference in New Issue
Block a user