mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-25 12:46:41 +00:00
Merge remote-tracking branch 'upstream/develop' into layoutless-keymap-json
This commit is contained in:
commit
ebc411afe8
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1,7 +1,7 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: QMK Discord
|
||||
url: https://discord.gg/Uq7gcHh
|
||||
url: https://discord.gg/qmk
|
||||
about: Ask questions, discuss issues and features. Chill.
|
||||
- name: OLKB Subreddit
|
||||
url: https://www.reddit.com/r/olkb
|
||||
|
@ -35,15 +35,12 @@ endif
|
||||
|
||||
# Force expansion
|
||||
override TARGET := $(TARGET)
|
||||
$(info TARGET=$(TARGET))
|
||||
|
||||
ifneq ($(FORCE_LAYOUT),)
|
||||
override TARGET := $(TARGET)_$(FORCE_LAYOUT)
|
||||
$(info TARGET=$(TARGET))
|
||||
endif
|
||||
ifneq ($(CONVERT_TO),)
|
||||
override TARGET := $(TARGET)_$(CONVERT_TO)
|
||||
$(info TARGET=$(TARGET))
|
||||
endif
|
||||
|
||||
# Object files and generated keymap directory
|
||||
|
@ -563,6 +563,15 @@
|
||||
"plain60": {
|
||||
"target": "evyd13/plain60"
|
||||
},
|
||||
"planck/ez": {
|
||||
"target": "zsa/planck_ez/base"
|
||||
},
|
||||
"planck/ez/base": {
|
||||
"target": "zsa/planck_ez/base"
|
||||
},
|
||||
"planck/ez/glow": {
|
||||
"target": "zsa/planck_ez/glow"
|
||||
},
|
||||
"ploopyco/trackball": {
|
||||
"target": "ploopyco/trackball/rev1_005"
|
||||
},
|
||||
|
@ -31,4 +31,4 @@ Commenting on your pull request and being responsive to questions, comments, and
|
||||
|
||||
### Ask for Help
|
||||
|
||||
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/Uq7gcHh).
|
||||
Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or [reach out to the QMK team on Discord](https://discord.gg/qmk).
|
||||
|
@ -11,7 +11,7 @@ Third-party contributions help us grow and improve QMK. We want to make the pull
|
||||
|
||||
## I Don't Want to Read This Whole Thing! I Just Have a Question!
|
||||
|
||||
If you'd like to ask questions about QMK you can do so on the [OLKB Subreddit](https://reddit.com/r/olkb) or on [Discord](https://discord.gg/Uq7gcHh).
|
||||
If you'd like to ask questions about QMK you can do so on the [OLKB Subreddit](https://reddit.com/r/olkb) or on [Discord](https://discord.gg/qmk).
|
||||
|
||||
Please keep these things in mind:
|
||||
|
||||
@ -29,7 +29,7 @@ QMK is largely written in C, with specific features and parts written in C++. It
|
||||
|
||||
# Where Can I Go for Help?
|
||||
|
||||
If you need help you can [open an issue](https://github.com/qmk/qmk_firmware/issues) or [chat on Discord](https://discord.gg/Uq7gcHh).
|
||||
If you need help you can [open an issue](https://github.com/qmk/qmk_firmware/issues) or [chat on Discord](https://discord.gg/qmk).
|
||||
|
||||
# How Do I Make a Contribution?
|
||||
|
||||
@ -128,7 +128,7 @@ We also ask that you follow these guidelines:
|
||||
|
||||
Before you put a lot of work into building your new feature you should make sure you are implementing it in the best way. You can get a basic understanding of QMK by reading [Understanding QMK](understanding_qmk), which will take you on a tour of the QMK program flow. From here you should talk to us to get a sense of the best way to implement your idea. There are two main ways to do this:
|
||||
|
||||
* [Chat on Discord](https://discord.gg/Uq7gcHh)
|
||||
* [Chat on Discord](https://discord.gg/qmk)
|
||||
* [Open an Issue](https://github.com/qmk/qmk_firmware/issues/new)
|
||||
|
||||
Feature and Bug Fix PRs affect all keyboards. We are also in the process of restructuring QMK. For this reason it is especially important for significant changes to be discussed before implementation has happened. If you open a PR without talking to us first please be prepared to do some significant rework if your choices do not mesh well with our planned direction.
|
||||
|
@ -184,7 +184,7 @@ Whenever possible you should customize your keyboard by using `process_record_*(
|
||||
|
||||
### Example `matrix_scan_*` Implementation
|
||||
|
||||
This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) or [chat with us on Discord](https://discord.gg/Uq7gcHh).
|
||||
This example has been deliberately omitted. You should understand enough about QMK internals to write this without an example before hooking into such a performance sensitive area. If you need help please [open an issue](https://github.com/qmk/qmk_firmware/issues/new) or [chat with us on Discord](https://discord.gg/qmk).
|
||||
|
||||
### `matrix_scan_*` Function Documentation
|
||||
|
||||
|
@ -40,7 +40,7 @@ That's amazing! We would love to assist you with that!
|
||||
|
||||
In fact, we have a [whole page](https://qmk.fm/powered/) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.
|
||||
|
||||
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/Uq7gcHh).
|
||||
If you have any questions about this, open an issue or head to [Discord](https://discord.gg/qmk).
|
||||
|
||||
## What Differences Are There Between QMK and TMK?
|
||||
|
||||
|
@ -231,7 +231,7 @@ Once you have confirmed that the keyboard is working, if you have used a seperat
|
||||
|
||||
If you found this fullfilling you could experiment by adding additional features such as [in switch LEDs](https://geekhack.org/index.php?topic=94258.0), [in switch RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/), [RGB underglow](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) or even an [OLED display!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/)
|
||||
|
||||
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](https://docs.qmk.fm) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/Uq7gcHh) for help!
|
||||
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](https://docs.qmk.fm) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/qmk) for help!
|
||||
|
||||
## Links to Other Guides
|
||||
|
||||
|
@ -32,7 +32,7 @@ There are a lot of ways you can contribute to the QMK Community. The easiest way
|
||||
|
||||
* Help people out on our forums and chat rooms:
|
||||
* [/r/olkb](https://www.reddit.com/r/olkb/)
|
||||
* [Discord Server](https://discord.gg/Uq7gcHh)
|
||||
* [Discord Server](https://discord.gg/qmk)
|
||||
* Contribute to our documentation by clicking "Edit This Page" at the bottom
|
||||
* [Report a bug](https://github.com/qmk/qmk_firmware/issues/new/choose)
|
||||
* [Open a Pull Request](contributing)
|
||||
|
@ -15,7 +15,7 @@ Different keyboards have different ways to enter this special mode. If your PCB
|
||||
* Press the physical `RESET` button, usually located on the underside of the PCB
|
||||
* Locate header pins on the PCB labeled `RESET` and `GND`, and short them together while plugging your PCB in
|
||||
|
||||
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` or `RP2-B1` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/Uq7gcHh) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
|
||||
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` or `RP2-B1` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/qmk) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
|
||||
|
||||
Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:
|
||||
|
||||
@ -129,4 +129,4 @@ Congrats! Your custom firmware has been programmed to your keyboard and you're r
|
||||
With a little bit of luck everything will work perfectly, but if not there are steps that will help you figure out what's wrong.
|
||||
Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
|
||||
|
||||
Still not working? Browse the FAQ topics for more information, or [chat with us on Discord](https://discord.gg/Uq7gcHh).
|
||||
Still not working? Browse the FAQ topics for more information, or [chat with us on Discord](https://discord.gg/qmk).
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
This is a non-exhaustive checklist of what the QMK Collaborators will be checking when reviewing submitted PRs.
|
||||
|
||||
If there are any inconsistencies with these recommendations, you're best off [creating an issue](https://github.com/qmk/qmk_firmware/issues/new) against this document, or getting in touch with a QMK Collaborator on [Discord](https://discord.gg/Uq7gcHh).
|
||||
If there are any inconsistencies with these recommendations, you're best off [creating an issue](https://github.com/qmk/qmk_firmware/issues/new) against this document, or getting in touch with a QMK Collaborator on [Discord](https://discord.gg/qmk).
|
||||
|
||||
## Requirements for all PRs
|
||||
|
||||
|
@ -6,7 +6,7 @@ Please read our [Code of Conduct](https://qmk.fm/coc/) before participating in a
|
||||
|
||||
## Realtime Chat
|
||||
|
||||
If you need help with something, the best place to get quick support is going to be on our [Discord Server](https://discord.gg/Uq7gcHh). There is usually somebody online, and there are a bunch of very helpful people there.
|
||||
If you need help with something, the best place to get quick support is going to be on our [Discord Server](https://discord.gg/qmk). There is usually somebody online, and there are a bunch of very helpful people there.
|
||||
|
||||
## OLKB Subreddit
|
||||
|
||||
|
@ -382,15 +382,23 @@ static bool is_on = false;
|
||||
static bool is_dynamic_recording = false;
|
||||
static uint16_t dynamic_loop_timer;
|
||||
|
||||
void dynamic_macro_record_start_user(int8_t direction) {
|
||||
bool dynamic_macro_record_start_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_start_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
is_dynamic_recording = true;
|
||||
dynamic_loop_timer = timer_read();
|
||||
ergodox_right_led_1_on();
|
||||
return true;
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction) {
|
||||
bool dynamic_macro_record_end_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_end_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
is_dynamic_recording = false;
|
||||
layer_state_set_user(layer_state);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -206,11 +206,19 @@ void update_layer_leds(void) {
|
||||
|
||||
#endif
|
||||
|
||||
void dynamic_macro_record_start_user(int8_t direction) {
|
||||
bool dynamic_macro_record_start_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_start_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
isRecording++;
|
||||
blink_cycle_timer = timer_read();
|
||||
return true;
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction) {
|
||||
if (isRecording) isRecording--;
|
||||
bool dynamic_macro_record_end_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_end_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
if (isRecording) isRecording--;
|
||||
return true;
|
||||
}
|
||||
|
@ -1,170 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_japanese.h"
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_BASE = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
RGBRST = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
KANJI,
|
||||
};
|
||||
|
||||
// enum tapdances{
|
||||
// TD_CODO = 0,
|
||||
// TD_SLRO,
|
||||
// };
|
||||
|
||||
// Layer Mode aliases
|
||||
#define KC_MLAD MO(_ADJUST)
|
||||
|
||||
// Base layer mod tap
|
||||
#define KC_A_SF LSFT_T(KC_A)
|
||||
#define KC_Z_CT LCTL_T(KC_Z)
|
||||
#define KC_X_AL LALT_T(KC_X)
|
||||
#define KC_C_GU LGUI_T(KC_C)
|
||||
#define KC_SSCT RCTL_T(KC_SLSH)
|
||||
#define KC_ENSF RSFT_T(KC_ENT)
|
||||
|
||||
// Lower layer mod tap
|
||||
#define KC_F6SF LSFT_T(KC_F6)
|
||||
#define KC_BSSF RSFT_T(KC_BSLS)
|
||||
#define KC_11CT LCTL_T(KC_F11)
|
||||
#define KC_12AL LALT_T(KC_F12)
|
||||
|
||||
// Layer tap
|
||||
#define KC_BSLO LT(_LOWER, KC_BSPC)
|
||||
#define KC_SPRA LT(_RAISE, KC_SPC)
|
||||
|
||||
// Tap dance
|
||||
// #define KC_CODO TD(TD_CODO)
|
||||
// #define KC_SLRO TD(TD_SLRO)
|
||||
|
||||
// tap_dance_action_t tap_dance_actions[] = {
|
||||
// [TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
|
||||
// [TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, JP_BSLS),
|
||||
// };
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT(
|
||||
//,---------------------------------------------------------------------------------------------------.
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_A_SF, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENSF,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_Z_CT, KC_X_AL, KC_C_GU, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SSCT,
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
KC_BSLO, KC_SPRA
|
||||
// `---------|---------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//,---------------------------------------------------------------------------------------------------.
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, JP_YEN, KC_LBRC, KC_RBRC,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_F6SF, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSSF,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_11CT, KC_12AL, KC_ESC, KC_TAB, KANJI, KC_DEL, XXXXXXX, XXXXXXX, KC_GRV, JP_BSLS,
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
_______, KC_MLAD
|
||||
// `---------|---------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//,---------------------------------------------------------------------------------------------------.
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LSFT,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_MINS, JP_BSLS, KC_COMM, KC_DOT, KC_SSCT,
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
_______, _______
|
||||
// `---------|---------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,---------------------------------------------------------------------------------------------------.
|
||||
QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NUM,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
_______, _______
|
||||
// `---------|---------'
|
||||
)
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_BSLO:
|
||||
return TAPPING_LAYER_TERM;
|
||||
case KC_SPRA:
|
||||
return TAPPING_LAYER_TERM;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
}
|
||||
|
||||
int RGB_current_mode;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
bool result = false;
|
||||
switch (keycode) {
|
||||
case KANJI:
|
||||
if (record->event.pressed) {
|
||||
if (keymap_config.swap_lalt_lgui == false) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
break;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
||||
case RGB_MOD:
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
break;
|
||||
case RGBRST:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
#endif
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
# JISキーボードライクなキーマップ
|
||||
|
||||
## 概要
|
||||
|
||||
デフォルトキーマップの記号類をJISライクな配置に揃えなおしたものです。
|
||||
|
||||
## キーマップの見かた
|
||||
|
||||
qmk_firmware\tmk_core\common\keycode.h
|
||||
に基本的なキーコードがあります。また、Keymap.cの上部にカスタムしたKC_で始まるものを登録しています。
|
||||
|
||||
Leyer Tap、Mod TapというQMKの機能を使っています。
|
||||
|
||||
Layer Tapはタップで指定したキー、長押しで指定したレイヤーに移動します。
|
||||
例:LT(RAISE, KC_V) → タップでV、長押しでRAISEレイヤー移動
|
||||
|
||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||
|
||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||
|
||||
## 機能
|
||||
|
||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||
Lowerを最初し続けながらRaiseを同時押しするとAdjustレイヤーを使うことが出来ます。
|
||||
|
||||
## OS切り替え方法
|
||||
|
||||
Adjustレイヤーにあります。LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
|
||||
- KNRM: QMKのノーマル状態です。macだと正常に使える(はず)です
|
||||
- KSWP: ノーマル状態のままWindowsで使用するとALTキーとGUI(win)キーが逆ですので、それを入れ換えます。Windowsユーザーはこちらのモードにしてください
|
||||
|
||||
## IME切り替え方法
|
||||
|
||||
Winの場合、LowerレイヤーにKANJIキー(半角/全角 漢字)がありますので、Lower+KANJIで切り替えてください。
|
||||
|
||||
## ソフトウェアリセットについて
|
||||
|
||||
キーボードにはハードウェアのリセットボタンが付いていますが、ソフトウェアリセットをかけられます。
|
||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来、AdjustレイヤーのRESETを押下するとリセットがかかります。
|
||||
|
||||
## LEDの点灯切り替え方法
|
||||
|
||||
Adjustレイヤーにあります。LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
|
||||
- RGBRST: LEDのリセット
|
||||
- RGB_TOG: LEDのON/OFF切り替え
|
||||
- RGB_MOD: LEDの光り方の変更
|
||||
- RGB_HUI: Hue+ 色合いを変更
|
||||
- RGB_HUD: Hue- 色合いを変更
|
||||
- RGB_SAI: Saturation+ 色の濃さを変更
|
||||
- RGB_SAD: Saturation- 色の濃さを変更
|
||||
- RGB_VAI: Value+ 明るさを変更
|
||||
- RGB_VAD: Value- 明るさを変更
|
@ -1,17 +0,0 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
|
||||
# If your custom treadstone32 pcb, you can rewrite to yes.
|
||||
RGBLIGHT_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.)
|
||||
# Other selectable option
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
endif
|
@ -1,49 +0,0 @@
|
||||
/* Copyright 2020 marksard
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
|
||||
#ifdef TAPPING_TERM
|
||||
#undef TAPPING_TERM
|
||||
#endif
|
||||
#define TAPPING_TERM 225
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
#undef MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_INTERVAL 1
|
||||
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#define MOUSEKEY_TIME_TO_MAX 150
|
||||
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
|
||||
#undef MOUSEKEY_MOVE_DELTA
|
||||
#define MOUSEKEY_MOVE_DELTA 4
|
||||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#endif
|
||||
|
||||
// If you use the HashTwenty(alpha), please enable USE_HASHTWENTY
|
||||
// #define ANGELINA_KEYMAP
|
||||
|
||||
// If you plug in the USB on the right side, please enable MASTER_RIGHT
|
||||
// #define RHYMESTONE_RIGHTHAND
|
||||
|
||||
#define OLED_FONT_H "keyboards/marksard/treadstone48/common/glcdfont.c"
|
@ -1,231 +0,0 @@
|
||||
/* Copyright 2020 marksard
|
||||
*
|
||||
* 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
|
||||
#include "../common/oled_helper.h"
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_BASE = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
LOWER = SAFE_RANGE,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
KANJI,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
#define KC_TBSF LSFT_T(KC_TAB)
|
||||
#define KC_ALAP LALT_T(KC_APP)
|
||||
#define KC_ROSF RSFT_T(KC_INT1)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_base(
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
KC_ROSF
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_base(
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_INT3, KC_LBRC, KC_RBRC, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KANJI, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_PGUP,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END,
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
_______
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_base(
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_INT1, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH,
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
_______
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_base(
|
||||
//,--------------------------------------------------------------------------------------------------------------------.
|
||||
XXXXXXX, QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
|
||||
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R,
|
||||
//`-------------------------------------------------------------------------------------------------------------------'
|
||||
_______
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
)
|
||||
};
|
||||
|
||||
#define L_BASE _BASE
|
||||
#define L_LOWER (1<<_LOWER)
|
||||
#define L_RAISE (1<<_RAISE)
|
||||
#define L_ADJUST (1<<_ADJUST)
|
||||
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef struct {
|
||||
uint8_t state;
|
||||
char name[8];
|
||||
}LAYER_DISPLAY_NAME;
|
||||
|
||||
#define LAYER_DISPLAY_MAX 5
|
||||
const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = {
|
||||
{L_BASE, "Base"},
|
||||
{L_BASE + 1, "Base"},
|
||||
{L_LOWER, "Lower"},
|
||||
{L_RAISE, "Raise"},
|
||||
{L_ADJUST_TRI, "Adjust"}
|
||||
};
|
||||
|
||||
static inline const char* get_leyer_status(void) {
|
||||
|
||||
for (uint8_t i = 0; i < LAYER_DISPLAY_MAX; ++i) {
|
||||
if (layer_state == 0 && layer_display_name[i].state == default_layer_state) {
|
||||
|
||||
return layer_display_name[i].name;
|
||||
} else if (layer_state != 0 && layer_display_name[i].state == layer_state) {
|
||||
|
||||
return layer_display_name[i].name;
|
||||
}
|
||||
}
|
||||
|
||||
return "?";
|
||||
}
|
||||
|
||||
static char layer_status_buf[24] = "Layer state ready.\n";
|
||||
static inline void update_keymap_status(void) {
|
||||
|
||||
snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "OS:%s Layer:%s\n",
|
||||
keymap_config.swap_lalt_lgui? "win" : "mac", get_leyer_status());
|
||||
}
|
||||
|
||||
static inline void render_keymap_status(void) {
|
||||
|
||||
oled_write(layer_status_buf, false);
|
||||
}
|
||||
|
||||
#define UPDATE_KEYMAP_STATUS() update_keymap_status()
|
||||
|
||||
static inline void render_status(void) {
|
||||
|
||||
UPDATE_LED_STATUS();
|
||||
RENDER_LED_STATUS();
|
||||
render_keymap_status();
|
||||
UPDATE_LOCK_STATUS();
|
||||
RENDER_LOCK_STATUS();
|
||||
RENDER_KEY_STATUS();
|
||||
}
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
|
||||
// if (is_keyboard_master())
|
||||
// return OLED_ROTATION_180; // flips the display 180 degrees if offhand
|
||||
return rotation;
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
|
||||
if (is_keyboard_master()) {
|
||||
render_status();
|
||||
} else {
|
||||
render_logo();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#define UPDATE_KEYMAP_STATUS()
|
||||
|
||||
#endif
|
||||
|
||||
static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
|
||||
pressed ? layer_on(layer1) : layer_off(layer1);
|
||||
IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3);
|
||||
}
|
||||
|
||||
int RGB_current_mode;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
UPDATE_KEY_STATUS(keycode, record);
|
||||
|
||||
bool result = false;
|
||||
switch (keycode) {
|
||||
case LOWER:
|
||||
update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST);
|
||||
break;
|
||||
case RAISE:
|
||||
update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST);
|
||||
break;
|
||||
case KANJI:
|
||||
if (record->event.pressed) {
|
||||
if (keymap_config.swap_lalt_lgui == false) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
break;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
case RGBRST:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
|
||||
UPDATE_KEYMAP_STATUS();
|
||||
return result;
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
# JISキーボードライクなキーマップ
|
||||
|
||||
## 概要
|
||||
|
||||
デフォルトキーマップの記号類をJISライクな配置に揃えなおしたものです。
|
||||
|
||||
## キーマップの見かた
|
||||
|
||||
qmk_firmware\tmk_core\common\keycode.h
|
||||
に基本的なキーコードがあります。また、Keymap.cの上部にカスタムしたKC_で始まるものを登録しています。
|
||||
キーマップに書くときは「KC_」を省略して書いています。
|
||||
例:KC_A → A
|
||||
|
||||
Leyer Tap、Mod Tap、Tap DanceというQMKの機能を使っています。
|
||||
|
||||
Layer Tapはタップで指定したキー、長押しで指定したレイヤーに移動します。
|
||||
例:LT(RAISE, KC_V) → タップでV、長押しでRAISEレイヤー移動
|
||||
|
||||
Mod Tapはタップで視程したキー、長押しで視程したレイヤーに移動します。
|
||||
例:LSFT_T(KC_Z) → タップでZ、長押しで左シフト
|
||||
|
||||
もう少し詳しい内容についてはQMK Documentをお読みいただくかネットを検索すれば情報が載っていますので別途検索してみてください。
|
||||
|
||||
## 機能
|
||||
|
||||
QWERTYキーマップをベースにしていて、LowerレイヤーとRaiseレイヤーに他のキーを配置しています。
|
||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
マウスキーの割り当てがありますので、もし使用したい場合はrules.mkでMOUSEKEY_ENABLE = yesにしてmakeすると使用することができます。
|
||||
|
||||
## 48キー目について
|
||||
|
||||
このキーボードはEnterキーの上の2Uキーを1Ux2個にして使用する事が出来るようになっています。 使用する場合はキーマップの書き換えが必要です。
|
||||
|
||||
各レイヤーの最下段の
|
||||
|
||||
```c
|
||||
XXXXXXX \
|
||||
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
|
||||
```
|
||||
|
||||
のXXXXXに任意のキーを入れることでPの右隣のキーとして動作するようになっています。その右隣りに従来のキーが配置されています。
|
||||
|
||||
## OS切り替え方法
|
||||
|
||||
Adjustレイヤーにあります。LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
|
||||
- KNRM: QMKのノーマル状態です。macだと正常に使える(はず)です
|
||||
- KSWP: ノーマル状態のままWindowsで使用するとALTキーとGUI(win)キーが逆ですので、それを入れ換えます。Windowsユーザーはこちらのモードにしてください
|
||||
|
||||
## NUMPADモードについて
|
||||
|
||||
Lower + DLNPキーを一度押下するとNumpadモードになります。通常モードに戻す場合はDLBSキーを押下してください。
|
||||
|
||||
## IME切り替え方法
|
||||
|
||||
Winの場合、LowerレイヤーにKANJIキー(半角/全角 漢字)がありますので、Lower+KANJIで切り替えてください。
|
||||
|
||||
## ソフトウェアリセットについて
|
||||
|
||||
キーボードにはハードウェアのリセットボタンが付いていますが、ソフトウェアリセットをかけられます。
|
||||
LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来、AdjustレイヤーのRSTを押下するとリセットがかかります。
|
||||
|
||||
## LEDの点灯切り替え方法
|
||||
|
||||
Adjustレイヤーにあります。LowerとRaiseを同時押しでAdjustレイヤーを使うことが出来ます。
|
||||
|
||||
- RGBRST: LEDのリセット
|
||||
- RGB_TOG: LEDのON/OFF切り替え
|
||||
- RGB_MOD: LEDの光り方の変更
|
||||
- RGB_HUI: Hue+ 色合いを変更
|
||||
- RGB_HUD: Hue- 色合いを変更
|
||||
- RGB_SAI: Saturation+ 色の濃さを変更
|
||||
- RGB_SAD: Saturation- 色の濃さを変更
|
||||
- RGB_VAI: Value+ 明るさを変更
|
||||
- RGB_VAD: Value- 明るさを変更
|
@ -1,8 +0,0 @@
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
OLED_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
|
||||
# If you want to change the display of OLED, you need to change here
|
||||
SRC += ./common/oled_helper.c \
|
17
keyboards/pimoroni/keybow2040/config.h
Normal file
17
keyboards/pimoroni/keybow2040/config.h
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright 2024 QMK Collaborators (@qmk)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
|
||||
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
|
||||
|
||||
#define I2C_DRIVER I2CD0
|
||||
#define I2C1_SDA_PIN GP4
|
||||
#define I2C1_SCL_PIN GP5
|
||||
#define I2C1_CLOCK_SPEED 100000
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGB_MATRIX_SLEEP
|
||||
#endif
|
7
keyboards/pimoroni/keybow2040/halconf.h
Normal file
7
keyboards/pimoroni/keybow2040/halconf.h
Normal file
@ -0,0 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
|
||||
#include_next <halconf.h>
|
119
keyboards/pimoroni/keybow2040/keyboard.json
Normal file
119
keyboards/pimoroni/keybow2040/keyboard.json
Normal file
@ -0,0 +1,119 @@
|
||||
{
|
||||
"manufacturer": "Pimoroni",
|
||||
"keyboard_name": "Keybow 2040",
|
||||
"url": "https://shop.pimoroni.com/products/keybow-2040",
|
||||
"maintainer": "fanf2",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"features": {
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"vid": "0x5069",
|
||||
"pid": "0x4784"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "is31fl3731",
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"center_point": [112, 112],
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 75, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 150, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 224, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 75, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 75, "y": 75, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 150, "y": 75, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 224, "y": 75, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 150, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 75, "y": 150, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 150, "y": 150, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 224, "y": 150, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 224, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 75, "y": 224, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 150, "y": 224, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 224, "y": 224, "flags": 4}
|
||||
]
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["GP18", "GP14", "GP10", "GP6"],
|
||||
["GP19", "GP15", "GP11", "GP7"],
|
||||
["GP20", "GP16", "GP12", "GP8"],
|
||||
["GP21", "GP17", "GP13", "GP9"],
|
||||
["GP23", null, null, null]
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
25
keyboards/pimoroni/keybow2040/keybow2040.c
Normal file
25
keyboards/pimoroni/keybow2040/keybow2040.c
Normal file
@ -0,0 +1,25 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
|
||||
/* driver, r, g, b */
|
||||
{ 0, C8_9, C6_9, C7_9 }, // LEDB12 0,0
|
||||
{ 0, C9_9, C3_9, C5_9 }, // LEDB11 1,0
|
||||
{ 0, C8_1, C6_1, C7_1 }, // LEDA12 2,0
|
||||
{ 0, C9_1, C3_1, C5_1 }, // LEDA11 3,0
|
||||
{ 0, C8_10, C6_10, C7_10 }, // LEDB22 0,1
|
||||
{ 0, C9_10, C3_10, C5_10 }, // LEDB21 1,1
|
||||
{ 0, C8_2, C6_2, C7_2 }, // LEDA22 2,1
|
||||
{ 0, C9_2, C3_2, C5_2 }, // LEDA21 3,1
|
||||
{ 0, C8_11, C6_11, C7_11 }, // LEDB32 0,2
|
||||
{ 0, C9_11, C2_10, C5_11 }, // LEDB31 1,2
|
||||
{ 0, C8_3, C6_3, C7_3 }, // LEDA32 2,2
|
||||
{ 0, C9_3, C2_2, C5_3 }, // LEDA31 3,2
|
||||
{ 0, C8_12, C6_12, C7_12 }, // LEDB42 0,3
|
||||
{ 0, C9_12, C2_11, C5_12 }, // LEDB41 1,3
|
||||
{ 0, C8_4, C6_4, C7_4 }, // LEDA42 2,3
|
||||
{ 0, C9_4, C2_3, C5_4 }, // LEDA41 3,3
|
||||
};
|
||||
#endif
|
28
keyboards/pimoroni/keybow2040/keymaps/acc/keymap.json
Normal file
28
keyboards/pimoroni/keybow2040/keymaps/acc/keymap.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"keyboard": "pimoroni/keybow2040",
|
||||
"author": "willoucom",
|
||||
"version": 1,
|
||||
"keymap": "acc",
|
||||
"config": {
|
||||
"features": {
|
||||
"via": true
|
||||
}
|
||||
},
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_F13", "KC_F14", "KC_F15", "KC_F16",
|
||||
"KC_AUDIO_MUTE", "KC_AUDIO_VOL_DOWN", "KC_AUDIO_VOL_UP", "KC_AUDIO_MUTE",
|
||||
"LSFT(KC_A)", "LSFT(KC_T)", "LSFT(KC_Y)", "LSFT(KC_B)",
|
||||
"LCTL(KC_A)", "LCTL(KC_T)", "LCTL(KC_Y)", "LCTL(KC_B)",
|
||||
"TO(1)"
|
||||
],
|
||||
[
|
||||
"KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT",
|
||||
"KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT",
|
||||
"RGB_SAD", "RGB_SAI", "RGB_HUD", "RGB_HUI",
|
||||
"KC_TRANSPARENT", "RGB_TOG", "RGB_RMOD", "RGB_MOD",
|
||||
"TO(0)"
|
||||
]
|
||||
]
|
||||
}
|
23
keyboards/pimoroni/keybow2040/keymaps/default/keymap.json
Normal file
23
keyboards/pimoroni/keybow2040/keymaps/default/keymap.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"keyboard": "pimoroni/keybow2040",
|
||||
"author": "fanf2",
|
||||
"version": 1,
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_F13", "KC_F14", "KC_F15", "KC_F16",
|
||||
"KC_F17", "KC_F18", "KC_F19", "KC_F20",
|
||||
"KC_HOME", "KC_UP", "KC_END", "KC_PGUP",
|
||||
"KC_LEFT", "KC_DOWN", "KC_RIGHT","KC_PGDN",
|
||||
"TO(1)"
|
||||
],
|
||||
[
|
||||
"KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT",
|
||||
"KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT",
|
||||
"RGB_SAD", "RGB_SAI", "RGB_HUD", "RGB_HUI",
|
||||
"KC_TRANSPARENT", "RGB_TOG", "RGB_RMOD", "RGB_MOD",
|
||||
"TO(0)"
|
||||
]
|
||||
]
|
||||
}
|
28
keyboards/pimoroni/keybow2040/keymaps/via/keymap.json
Normal file
28
keyboards/pimoroni/keybow2040/keymaps/via/keymap.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"keyboard": "pimoroni/keybow2040",
|
||||
"author": "fanf2",
|
||||
"version": 1,
|
||||
"keymap": "via",
|
||||
"config": {
|
||||
"features": {
|
||||
"via": true
|
||||
}
|
||||
},
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_F13", "KC_F14", "KC_F15", "KC_F16",
|
||||
"KC_F17", "KC_F18", "KC_F19", "KC_F20",
|
||||
"KC_HOME", "KC_UP", "KC_END", "KC_PGUP",
|
||||
"KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_PGDN",
|
||||
"TO(1)"
|
||||
],
|
||||
[
|
||||
"KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT",
|
||||
"KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT", "KC_TRANSPARENT",
|
||||
"RGB_SAD", "RGB_SAI", "RGB_HUD", "RGB_HUI",
|
||||
"KC_TRANSPARENT", "RGB_TOG", "RGB_RMOD", "RGB_MOD",
|
||||
"TO(0)"
|
||||
]
|
||||
]
|
||||
}
|
10
keyboards/pimoroni/keybow2040/mcuconf.h
Normal file
10
keyboards/pimoroni/keybow2040/mcuconf.h
Normal file
@ -0,0 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#define RP_I2C_USE_I2C1 FALSE
|
43
keyboards/pimoroni/keybow2040/readme.md
Normal file
43
keyboards/pimoroni/keybow2040/readme.md
Normal file
@ -0,0 +1,43 @@
|
||||
# Keybow 2040
|
||||
|
||||
![Keybow 2040 board](https://i.imgur.com/WDGDOkb.jpeg)
|
||||
|
||||
The [Pimoroni Keybow 2040](https://shop.pimoroni.com/products/keybow-2040) is a 16 key mechanical macropad
|
||||
controlled by a Raspberry Pi RP2040, with Kailh hot swap sockets and
|
||||
per key RGB lighting, in a decorative FR4 sandwich. The Keybow 2040 is
|
||||
also known by its codename Venus Dust, or its product codes of the
|
||||
form PIM56x.
|
||||
|
||||
* Original Keyboard Maintainer: [Tony Finch](https://github.com/fanf2)
|
||||
* Keyboard Maintainer: [Wilfried Jeanniard](https://github.com/willoucom) and [Sandy Macdonald](https://github.com/sandyjmacdonald)
|
||||
* Hardware Supported: Keybow 2040
|
||||
* Hardware Availability: [Pimoroni](https://shop.pimoroni.com/products/keybow-2040)
|
||||
|
||||
## Usage
|
||||
|
||||
The bootloader button is used to switch from one layer to another, the first layer is used for macros and shortcuts, while the second layer controls RGB lights. You can modify this behavior using the QMK configurator.
|
||||
|
||||
## Build
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make pimoroni/keybow2040:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make pimoroni/keybow2040:default:flash
|
||||
|
||||
|
||||
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).
|
||||
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
|
||||
* **Physical reset button**: Hold down BOOTSEL while pressing RESET
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@ -1,62 +0,0 @@
|
||||
/* Copyright 2018 Jack Humbert <jack.humb@gmail.com>
|
||||
* Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||
* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MUSIC_MAP
|
||||
#undef AUDIO_VOICES
|
||||
#undef AUDIO_PIN
|
||||
#define AUDIO_PIN A5
|
||||
#define AUDIO_PIN_ALT A4
|
||||
#define AUDIO_PIN_ALT_AS_NEGATIVE
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
|
||||
// #define WS2812_LED_N 2
|
||||
// #define WS2812_TIM_N 2
|
||||
// #define WS2812_TIM_CH 2
|
||||
// #define PORT_WS2812 GPIOA
|
||||
// #define PIN_WS2812 1
|
||||
// #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
|
||||
//#define WS2812_PWM_DMA_CHANNEL 7 // DMA channel for TIMx_UP
|
||||
//#define WS2812_EXTERNAL_PULLUP
|
||||
|
||||
#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
|
||||
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#define MOUSEKEY_TIME_TO_MAX 60
|
||||
#define MOUSEKEY_MAX_SPEED 7
|
||||
#define MOUSEKEY_WHEEL_DELAY 400
|
||||
#define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "Planck EZ Glow",
|
||||
"usb": {
|
||||
"pid": "0xC6CF"
|
||||
},
|
||||
"features": {
|
||||
"rgb_matrix": true
|
||||
}
|
||||
}
|
@ -1,207 +0,0 @@
|
||||
{
|
||||
"manufacturer": "ZSA Technology Labs",
|
||||
"url": "https://ergodox-ez.com/pages/planck",
|
||||
"maintainer": "jackhumbert",
|
||||
"usb": {
|
||||
"vid": "0x3297",
|
||||
"device_version": "0.0.1",
|
||||
"shared_endpoint": {
|
||||
"mouse": false
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"audio": true,
|
||||
"bootmagic": true,
|
||||
"command": true,
|
||||
"console": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"pixel_rain": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"multisplash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true
|
||||
},
|
||||
"driver": "is31fl3737",
|
||||
"led_process_limit": 5,
|
||||
"led_flush_limit": 26,
|
||||
"sleep": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B11", "B10", "B2", "B1", "A7", "B0"],
|
||||
"rows": ["A10", "A9", "A8", "B15", "C13", "C14", "C15", "A2"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"audio": {
|
||||
"driver": "dac_additive"
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B12", "pin_b": "B13"}
|
||||
]
|
||||
},
|
||||
"processor": "STM32F303",
|
||||
"bootloader": "stm32-dfu",
|
||||
"tapping": {
|
||||
"toggle": 1
|
||||
},
|
||||
"community_layouts": ["ortho_4x12", "planck_mit"],
|
||||
"layout_aliases": {
|
||||
"LAYOUT_planck_grid": "LAYOUT_ortho_4x12",
|
||||
"LAYOUT_planck_mit": "LAYOUT_planck_1x2uC"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_planck_1x2uC": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [4, 0], "x": 6, "y": 0},
|
||||
{"matrix": [4, 1], "x": 7, "y": 0},
|
||||
{"matrix": [4, 2], "x": 8, "y": 0},
|
||||
{"matrix": [4, 3], "x": 9, "y": 0},
|
||||
{"matrix": [4, 4], "x": 10, "y": 0},
|
||||
{"matrix": [4, 5], "x": 11, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [5, 0], "x": 6, "y": 1},
|
||||
{"matrix": [5, 1], "x": 7, "y": 1},
|
||||
{"matrix": [5, 2], "x": 8, "y": 1},
|
||||
{"matrix": [5, 3], "x": 9, "y": 1},
|
||||
{"matrix": [5, 4], "x": 10, "y": 1},
|
||||
{"matrix": [5, 5], "x": 11, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
{"matrix": [6, 0], "x": 6, "y": 2},
|
||||
{"matrix": [6, 1], "x": 7, "y": 2},
|
||||
{"matrix": [6, 2], "x": 8, "y": 2},
|
||||
{"matrix": [6, 3], "x": 9, "y": 2},
|
||||
{"matrix": [6, 4], "x": 10, "y": 2},
|
||||
{"matrix": [6, 5], "x": 11, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [7, 3], "x": 3, "y": 3},
|
||||
{"matrix": [7, 4], "x": 4, "y": 3},
|
||||
{"matrix": [7, 5], "x": 5, "y": 3, "w": 2},
|
||||
{"matrix": [7, 0], "x": 7, "y": 3},
|
||||
{"matrix": [7, 1], "x": 8, "y": 3},
|
||||
{"matrix": [7, 2], "x": 9, "y": 3},
|
||||
{"matrix": [3, 3], "x": 10, "y": 3},
|
||||
{"matrix": [3, 4], "x": 11, "y": 3}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [4, 0], "x": 6, "y": 0},
|
||||
{"matrix": [4, 1], "x": 7, "y": 0},
|
||||
{"matrix": [4, 2], "x": 8, "y": 0},
|
||||
{"matrix": [4, 3], "x": 9, "y": 0},
|
||||
{"matrix": [4, 4], "x": 10, "y": 0},
|
||||
{"matrix": [4, 5], "x": 11, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [5, 0], "x": 6, "y": 1},
|
||||
{"matrix": [5, 1], "x": 7, "y": 1},
|
||||
{"matrix": [5, 2], "x": 8, "y": 1},
|
||||
{"matrix": [5, 3], "x": 9, "y": 1},
|
||||
{"matrix": [5, 4], "x": 10, "y": 1},
|
||||
{"matrix": [5, 5], "x": 11, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
{"matrix": [6, 0], "x": 6, "y": 2},
|
||||
{"matrix": [6, 1], "x": 7, "y": 2},
|
||||
{"matrix": [6, 2], "x": 8, "y": 2},
|
||||
{"matrix": [6, 3], "x": 9, "y": 2},
|
||||
{"matrix": [6, 4], "x": 10, "y": 2},
|
||||
{"matrix": [6, 5], "x": 11, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [7, 3], "x": 3, "y": 3},
|
||||
{"matrix": [7, 4], "x": 4, "y": 3},
|
||||
{"matrix": [7, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6, "y": 3},
|
||||
{"matrix": [7, 0], "x": 7, "y": 3},
|
||||
{"matrix": [7, 1], "x": 8, "y": 3},
|
||||
{"matrix": [7, 2], "x": 9, "y": 3},
|
||||
{"matrix": [3, 3], "x": 10, "y": 3},
|
||||
{"matrix": [3, 4], "x": 11, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
#define TAPPING_LAYER_TERM 150 // Custom LT Tapping term
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
#undef MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_INTERVAL 1
|
||||
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#define MOUSEKEY_TIME_TO_MAX 150
|
||||
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
|
||||
#undef MOUSEKEY_MOVE_DELTA
|
||||
#define MOUSEKEY_MOVE_DELTA 4
|
||||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#endif
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_ANIMATIONS)
|
||||
//#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
//#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
//#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
//#define RGBLIGHT_EFFECT_RGB_TEST
|
||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
||||
|
||||
// LED Setting: if you have KUMO you can use RGBLIGHT_ENABLE = yes
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define WS2812_DI_PIN B5
|
||||
#define RGBLIGHT_TIMER
|
||||
|
||||
#define RGBLIGHT_LED_COUNT 6
|
||||
#endif
|
@ -1,159 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_japanese.h"
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_BASE = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
RGBRST = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
KANJI,
|
||||
};
|
||||
|
||||
// enum tapdances{
|
||||
// TD_CODO = 0,
|
||||
// TD_SLRO,
|
||||
// };
|
||||
|
||||
// Layer Mode aliases
|
||||
#define KC_MLAD MO(_ADJUST)
|
||||
|
||||
// Base layer mod tap
|
||||
#define KC_CMSF LSFT_T(KC_COMM)
|
||||
#define KC_DTCT LCTL_T(KC_DOT)
|
||||
#define KC_Z_AL LALT_T(KC_Z)
|
||||
#define KC_X_GU LGUI_T(KC_X)
|
||||
#define KC_ENSF LSFT_T(KC_ENT)
|
||||
|
||||
// Lower layer mod tap
|
||||
#define KC_BSSF LSFT_T(KC_BSLS)
|
||||
#define KC_11AL LALT_T(KC_F11)
|
||||
|
||||
// Layer tap
|
||||
#define KC_BSLO LT(_LOWER, KC_BSPC)
|
||||
#define KC_SPRA LT(_RAISE, KC_SPC)
|
||||
|
||||
// Tap dance
|
||||
// #define KC_CODO TD(TD_CODO)
|
||||
// #define KC_SLRO TD(TD_SLRO)
|
||||
|
||||
// tap_dance_action_t tap_dance_actions[] = {
|
||||
// [TD_CODO] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
|
||||
// [TD_SLRO] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, JP_BSLS),
|
||||
// };
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLO,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_CMSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENSF,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_DTCT, KC_Z_AL, KC_X_GU, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SPRA
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, JP_YEN, KC_LBRC, KC_RBRC, _______,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSSF,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, KC_11AL, KC_F12, KC_ESC, KC_TAB, KANJI, KC_COMM, KC_DOT, KC_MLAD
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LSFT,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLSH, JP_BSLS, _______
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
)
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_BSLO:
|
||||
return TAPPING_LAYER_TERM;
|
||||
case KC_SPRA:
|
||||
return TAPPING_LAYER_TERM;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
}
|
||||
|
||||
int RGB_current_mode;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
bool result = false;
|
||||
switch (keycode) {
|
||||
case KANJI:
|
||||
if (record->event.pressed) {
|
||||
if (keymap_config.swap_lalt_lgui == false) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
break;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
||||
case RGB_MOD:
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
break;
|
||||
case RGBRST:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
#endif
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
# The LikeJIS is Japanese Keyboard like keymap
|
||||
|
||||
A Nomu30 can use full color LED strip used by B5 pin. This keymap can use LED animation option.
|
||||
|
||||
## Keymap Description
|
||||
|
||||
- KC_CMSF ...... , key is one tap, Shift key is long push.
|
||||
- KC_DTCT ...... . key is one tap, Ctrl key is long tap.
|
||||
- KC_ENSF ...... Enter key is one tap, Ctrl key is long tap.
|
||||
- KC_Z_AL ...... Z key is one tap, Alt key is long tap.
|
||||
- KC_X_GU ...... X key is one tap, GUI key is long tap.
|
||||
- KC_BSLO ...... Backspace key is one tap, Move to Lower layer with long push.
|
||||
- KC_SPRA ...... Space key is one tap, Move to Raise layer with.
|
||||
- AG_NORM ...... If you use Mac set to mode.
|
||||
- AG_SWAP ...... If you use Win set to mode.
|
||||
- KANJI ...... Japanese IME toggle key.
|
||||
|
||||
## How to move to Ajdust Layer
|
||||
|
||||
At first, Move to Lower layer with long push. After that Adjust key with long push. Now you have into Adjust layer state.
|
||||
|
||||
```c
|
||||
|
||||
[_BASE] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLO,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_CMSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENSF,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
KC_DTCT, KC_Z_AL, KC_X_GU, KC_C, KC_V, KC_B, KC_N, KC_M, KC_SPRA
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_INT3, KC_LBRC, KC_RBRC, _______,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSSF,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, KC_11AL, KC_F12, KC_ESC, KC_TAB, KANJI, KC_COMM, KC_DOT, KC_MLAD
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LSFT,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLSH, KC_INT1, _______
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------------------.
|
||||
QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX,
|
||||
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX
|
||||
//`---------+---------+---------+---------+---------+---------+---------+---------+---------'
|
||||
)
|
||||
|
||||
```
|
@ -1,25 +0,0 @@
|
||||
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
TAP_DANCE_ENABLE = no
|
||||
|
||||
# If your custom treadstone32 pcb, you can rewrite to yes.
|
||||
RGBLIGHT_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.)
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
|
||||
# Other selectable option
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
endif
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
@ -1,42 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define TAPPING_TERM 200
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
#undef MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_INTERVAL 1
|
||||
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#define MOUSEKEY_TIME_TO_MAX 150
|
||||
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
|
||||
#undef MOUSEKEY_MOVE_DELTA
|
||||
#define MOUSEKEY_MOVE_DELTA 4
|
||||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#endif
|
||||
|
||||
// Selection of RGBLIGHT MODE to use.
|
||||
#if defined(LED_ANIMATIONS)
|
||||
//#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
//#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
//#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
//#define RGBLIGHT_EFFECT_RGB_TEST
|
||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#endif
|
||||
|
||||
// LED Setting: if you have KUMO you can use RGBLIGHT_ENABLE = yes
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define WS2812_DI_PIN D0
|
||||
#define RGBLIGHT_TIMER
|
||||
#define RGBLIGHT_LED_COUNT 3
|
||||
#endif
|
@ -1,173 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_japanese.h"
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_number {
|
||||
_BASE = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
LOWER = SAFE_RANGE,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
KANJI,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum tapdances{
|
||||
TD_SCCL = 0,
|
||||
};
|
||||
|
||||
// Layer Mode aliases
|
||||
#define KC_TBSF LSFT_T(KC_TAB)
|
||||
#define KC_ROSF RSFT_T(JP_BSLS)
|
||||
#define KC_ALAP LALT_T(KC_APP)
|
||||
|
||||
// Layer tap
|
||||
#define KC_BSLO LT(_LOWER, KC_BSPC)
|
||||
#define KC_SPRA LT(_RAISE, KC_SPC)
|
||||
#define KC_MLAD MO(_ADJUST)
|
||||
|
||||
#define KC_SCCL TD(TD_SCCL)
|
||||
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SCCL] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// Esc Q W E R T Y U I O P -
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
//Tab/Shift A S D F G H J K L ;/: Enter
|
||||
KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, KC_ENT,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Shift Z X C V B N M , . / yen
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ROSF,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Ctrl Alt GUI/Comm BackSpace/Lower Space/Raise Alt Menu Ctrl
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_BSLO, KC_SPRA, KC_RALT, KC_ALAP, KC_RCTL
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// F1 F2 F3 F4 F5 - ^ \ @ [ Delete
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, JP_YEN, KC_LBRC, KC_RBRC, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// F6 F7 F8 F9 F10 ; : ]
|
||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_BSLS, _______,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// F11 F12 Kana/Kanji Enter Delete
|
||||
_______, KC_F11, KC_F12, XXXXXXX, KANJI, KC_ENT, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Adjust
|
||||
_______, _______, _______, _______, KC_MLAD, _______, _______, _______
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// 1 2 3 4 5 6 7 8 9 0 -
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Left Down Up Right
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, _______,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// , . / yen
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_SLSH, KC_ROSF,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// Reset LEDReset MacMode WinMode Home PageDown PageUp End
|
||||
_______, QK_BOOT,RGBRST, AG_NORM, AG_SWAP, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// LED On/Off Hue/Saturation/Value Increment Mouse Left Down Up Right
|
||||
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, _______,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// LED Mode Hue/Saturation/Value Decrement Mouse Button Left Right
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
)
|
||||
};
|
||||
|
||||
#define TAPPING_LAYER_TERM 150 // Custom LT Tapping term
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_BSLO:
|
||||
return TAPPING_LAYER_TERM;
|
||||
case KC_SPRA:
|
||||
return TAPPING_LAYER_TERM;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
}
|
||||
|
||||
int RGB_current_mode;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
bool result = false;
|
||||
switch (keycode) {
|
||||
case KANJI:
|
||||
if (record->event.pressed) {
|
||||
if (keymap_config.swap_lalt_lgui == false) {
|
||||
register_code(KC_LNG2);
|
||||
} else {
|
||||
SEND_STRING(SS_LALT("`"));
|
||||
}
|
||||
} else {
|
||||
unregister_code(KC_LNG2);
|
||||
}
|
||||
break;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
||||
case RGB_MOD:
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
break;
|
||||
case RGBRST:
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
#endif
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
# The LikeJIS is Japanese Keyboard like keymap
|
||||
|
||||
This keymap use for KUMO. Therefore it can use full color LED indicators used by D0 pin. But this keymap as use as Illumination :)
|
||||
|
||||
## Keymap Description
|
||||
|
||||
- Tab/Shift ...... Tab key is one tap, Shift key is long push.
|
||||
- ;/: ...... ; key is one tap, : key is double tap.
|
||||
- BackSpace/Lower ...... Backspace key is one tap, Move to Lower layer with long push.
|
||||
- Space/Raise ...... Space key is one tap, Move to Raise layer with .
|
||||
- Kanji ...... Japanese IME toggle key.
|
||||
|
||||
## How to move to Ajdust Layer
|
||||
|
||||
At first, Move to Lower layer with long push. After that Adjust key with long push. Now you have into Adjust layer state.
|
||||
|
||||
```c
|
||||
Base Layer
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// Esc Q W E R T Y U I O P -
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
//Tab/Shift A S D F G H J K L ;/: Enter
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Shift Z X C V B N M , . / \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Ctrl Alt GUI BackSpace/Lower Space/Raise Alt Menu Ctrl
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
|
||||
Lower Layer
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// F1 F2 F3 F4 F5 - ^ \ @ [ Delete
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// F6 F7 F8 F9 F10 ; : ]
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// F11 F12 Kanji Enter Delete
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Adjust
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
|
||||
Raise Layer
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// 1 2 3 4 5 6 7 8 9 0 -
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// Left Down Up Right
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// , . / \
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
//
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
|
||||
Adjust Layer
|
||||
//,-----------------------------------------------------------------------------------------------------------.
|
||||
// Reset LEDReset MacMode WinMode Home PageDown PageUp End
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// LED On/Off Hue Saturation Value Increment MouseLeft Down Up Right
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
// LED Mode Hue Saturation Value Decrement Button L R
|
||||
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
|
||||
//
|
||||
//`-----------------------------------------------------------------------------------------------------------'
|
||||
};
|
||||
|
||||
```
|
@ -1,24 +0,0 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
TAP_DANCE_ENABLE = yes
|
||||
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
@ -26,11 +26,21 @@ bool is_launching = false;
|
||||
#ifdef DYNAMIC_MACRO_ENABLE
|
||||
static bool is_dynamic_recording = false;
|
||||
|
||||
void dynamic_macro_record_start_user(int8_t direction) { is_dynamic_recording = true; }
|
||||
bool dynamic_macro_record_start_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_start_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
is_dynamic_recording = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction) {
|
||||
bool dynamic_macro_record_end_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_end_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
is_dynamic_recording = false;
|
||||
ML_LED_3(false);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
/* Copyright 2019 marksard
|
||||
/* Copyright 2018 Jack Humbert <jack.humb@gmail.com>
|
||||
* Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||
* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -16,24 +18,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
// place overrides here
|
||||
#define TAPPING_TERM 200
|
||||
#define MUSIC_MAP
|
||||
#define AUDIO_PIN A5
|
||||
#define AUDIO_PIN_ALT A4
|
||||
#define AUDIO_PIN_ALT_AS_NEGATIVE
|
||||
|
||||
#define TAPPING_LAYER_TERM 150 // Custom LT Tapping term
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
#undef MOUSEKEY_INTERVAL
|
||||
#define MOUSEKEY_INTERVAL 1
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#define MOUSEKEY_TIME_TO_MAX 150
|
||||
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
|
||||
#undef MOUSEKEY_MOVE_DELTA
|
||||
#define MOUSEKEY_MOVE_DELTA 4
|
||||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#endif
|
||||
#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND
|
75
keyboards/zsa/planck_ez/glow/glow.c
Normal file
75
keyboards/zsa/planck_ez/glow/glow.c
Normal file
@ -0,0 +1,75 @@
|
||||
/* Copyright 2018 Jack Humbert <jack.humb@gmail.com>
|
||||
* Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
||||
* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "planck_ez.h"
|
||||
|
||||
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
|
||||
{0, SW2_CS12, SW1_CS12, SW3_CS12},
|
||||
{0, SW2_CS11, SW1_CS11, SW3_CS11},
|
||||
{0, SW2_CS10, SW1_CS10, SW3_CS10},
|
||||
{0, SW2_CS9, SW1_CS9, SW3_CS9},
|
||||
{0, SW2_CS8, SW1_CS8, SW3_CS8},
|
||||
{0, SW2_CS7, SW1_CS7, SW3_CS7},
|
||||
|
||||
{0, SW8_CS12, SW7_CS12, SW9_CS12},
|
||||
{0, SW8_CS11, SW7_CS11, SW9_CS11},
|
||||
{0, SW8_CS10, SW7_CS10, SW9_CS10},
|
||||
{0, SW8_CS9, SW7_CS9, SW9_CS9},
|
||||
{0, SW8_CS8, SW7_CS8, SW9_CS8},
|
||||
{0, SW8_CS7, SW7_CS7, SW9_CS7},
|
||||
|
||||
{0, SW2_CS6, SW1_CS6, SW3_CS6},
|
||||
{0, SW2_CS5, SW1_CS5, SW3_CS5},
|
||||
{0, SW2_CS4, SW1_CS4, SW3_CS4},
|
||||
{0, SW2_CS3, SW1_CS3, SW3_CS3},
|
||||
{0, SW2_CS2, SW1_CS2, SW3_CS2},
|
||||
{0, SW2_CS1, SW1_CS1, SW3_CS1},
|
||||
|
||||
{0, SW8_CS6, SW7_CS6, SW9_CS6},
|
||||
{0, SW8_CS5, SW7_CS5, SW9_CS5},
|
||||
{0, SW8_CS4, SW7_CS4, SW9_CS4},
|
||||
{0, SW8_CS3, SW7_CS3, SW9_CS3},
|
||||
{0, SW8_CS2, SW7_CS2, SW9_CS2},
|
||||
{0, SW8_CS1, SW7_CS1, SW9_CS1},
|
||||
|
||||
{0, SW5_CS12, SW4_CS12, SW6_CS12},
|
||||
{0, SW5_CS11, SW4_CS11, SW6_CS11},
|
||||
{0, SW5_CS10, SW4_CS10, SW6_CS10},
|
||||
{0, SW5_CS9, SW4_CS9, SW6_CS9},
|
||||
{0, SW5_CS8, SW4_CS8, SW6_CS8},
|
||||
{0, SW5_CS7, SW4_CS7, SW6_CS7},
|
||||
|
||||
{0, SW11_CS12, SW10_CS12, SW12_CS12},
|
||||
{0, SW11_CS11, SW10_CS11, SW12_CS11},
|
||||
{0, SW11_CS10, SW10_CS10, SW12_CS10},
|
||||
{0, SW11_CS9, SW10_CS9, SW12_CS9},
|
||||
{0, SW11_CS8, SW10_CS8, SW12_CS8},
|
||||
{0, SW11_CS7, SW10_CS7, SW12_CS7},
|
||||
|
||||
{0, SW5_CS6, SW4_CS6, SW6_CS6},
|
||||
{0, SW5_CS5, SW4_CS5, SW6_CS5},
|
||||
{0, SW5_CS4, SW4_CS4, SW6_CS4},
|
||||
{0, SW5_CS3, SW4_CS3, SW6_CS3},
|
||||
{0, SW5_CS2, SW4_CS2, SW6_CS2},
|
||||
{0, SW5_CS1, SW4_CS1, SW6_CS1},
|
||||
|
||||
{0, SW11_CS6, SW10_CS6, SW12_CS6},
|
||||
{0, SW11_CS5, SW10_CS5, SW12_CS5},
|
||||
{0, SW11_CS4, SW10_CS4, SW12_CS4},
|
||||
{0, SW11_CS3, SW10_CS3, SW12_CS3},
|
||||
{0, SW11_CS2, SW10_CS2, SW12_CS2},
|
||||
};
|
109
keyboards/zsa/planck_ez/glow/keyboard.json
Normal file
109
keyboards/zsa/planck_ez/glow/keyboard.json
Normal file
@ -0,0 +1,109 @@
|
||||
{
|
||||
"keyboard_name": "Planck EZ Glow",
|
||||
"usb": {
|
||||
"pid": "0xC6CF"
|
||||
},
|
||||
"features": {
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"pixel_rain": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"multisplash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true
|
||||
},
|
||||
"driver": "is31fl3737",
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 1], "x": 20, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 40, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 61, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 81, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 101, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 122, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 142, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 162, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 183, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 203, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 223, "y": 0, "flags": 1},
|
||||
{"matrix": [1, 0], "x": 0, "y": 21, "flags": 1},
|
||||
{"matrix": [1, 1], "x": 20, "y": 21, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 40, "y": 21, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 61, "y": 21, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 81, "y": 21, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 101, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 122, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 142, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 162, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 183, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 203, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 223, "y": 21, "flags": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 42, "flags": 1},
|
||||
{"matrix": [2, 1], "x": 20, "y": 42, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 40, "y": 42, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 61, "y": 42, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 81, "y": 42, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 101, "y": 42, "flags": 4},
|
||||
{"matrix": [6, 0], "x": 122, "y": 42, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 142, "y": 42, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 162, "y": 42, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 183, "y": 42, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 203, "y": 42, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 223, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 0], "x": 0, "y": 63, "flags": 1},
|
||||
{"matrix": [3, 1], "x": 20, "y": 63, "flags": 1},
|
||||
{"matrix": [3, 2], "x": 40, "y": 63, "flags": 1},
|
||||
{"matrix": [7, 3], "x": 61, "y": 63, "flags": 1},
|
||||
{"matrix": [7, 4], "x": 81, "y": 63, "flags": 1},
|
||||
{"matrix": [7, 5], "x": 111, "y": 63, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 142, "y": 63, "flags": 1},
|
||||
{"matrix": [7, 1], "x": 162, "y": 63, "flags": 1},
|
||||
{"matrix": [7, 2], "x": 183, "y": 63, "flags": 1},
|
||||
{"matrix": [3, 3], "x": 203, "y": 63, "flags": 1},
|
||||
{"matrix": [3, 4], "x": 223, "y": 63, "flags": 1}
|
||||
],
|
||||
"led_flush_limit": 26,
|
||||
"led_process_limit": 5,
|
||||
"sleep": true
|
||||
}
|
||||
}
|
157
keyboards/zsa/planck_ez/info.json
Normal file
157
keyboards/zsa/planck_ez/info.json
Normal file
@ -0,0 +1,157 @@
|
||||
{
|
||||
"manufacturer": "ZSA Technology Labs",
|
||||
"maintainer": "drashna",
|
||||
"audio": {
|
||||
"driver": "dac_additive"
|
||||
},
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B12", "pin_b": "B13"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"audio": true,
|
||||
"bootmagic": true,
|
||||
"command": true,
|
||||
"console": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B11", "B10", "B2", "B1", "A7", "B0"],
|
||||
"rows": ["A10", "A9", "A8", "B15", "C13", "C14", "C15", "A2"]
|
||||
},
|
||||
"mousekey": {
|
||||
"delay": 0,
|
||||
"interval": 20,
|
||||
"max_speed": 7,
|
||||
"time_to_max": 60,
|
||||
"wheel_delay": 400
|
||||
},
|
||||
"processor": "STM32F303",
|
||||
"tapping": {
|
||||
"toggle": 1
|
||||
},
|
||||
"url": "https://blog.zsa.io/2307-goodbye-planck-ez/",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"shared_endpoint": {
|
||||
"mouse": false
|
||||
},
|
||||
"vid": "0x3297"
|
||||
},
|
||||
"community_layouts": ["ortho_4x12", "planck_mit"],
|
||||
"layout_aliases": {
|
||||
"LAYOUT_planck_grid": "LAYOUT_ortho_4x12",
|
||||
"LAYOUT_planck_mit": "LAYOUT_planck_1x2uC"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [4, 0], "x": 6, "y": 0},
|
||||
{"matrix": [4, 1], "x": 7, "y": 0},
|
||||
{"matrix": [4, 2], "x": 8, "y": 0},
|
||||
{"matrix": [4, 3], "x": 9, "y": 0},
|
||||
{"matrix": [4, 4], "x": 10, "y": 0},
|
||||
{"matrix": [4, 5], "x": 11, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [5, 0], "x": 6, "y": 1},
|
||||
{"matrix": [5, 1], "x": 7, "y": 1},
|
||||
{"matrix": [5, 2], "x": 8, "y": 1},
|
||||
{"matrix": [5, 3], "x": 9, "y": 1},
|
||||
{"matrix": [5, 4], "x": 10, "y": 1},
|
||||
{"matrix": [5, 5], "x": 11, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
{"matrix": [6, 0], "x": 6, "y": 2},
|
||||
{"matrix": [6, 1], "x": 7, "y": 2},
|
||||
{"matrix": [6, 2], "x": 8, "y": 2},
|
||||
{"matrix": [6, 3], "x": 9, "y": 2},
|
||||
{"matrix": [6, 4], "x": 10, "y": 2},
|
||||
{"matrix": [6, 5], "x": 11, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [7, 3], "x": 3, "y": 3},
|
||||
{"matrix": [7, 4], "x": 4, "y": 3},
|
||||
{"matrix": [7, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6, "y": 3},
|
||||
{"matrix": [7, 0], "x": 7, "y": 3},
|
||||
{"matrix": [7, 1], "x": 8, "y": 3},
|
||||
{"matrix": [7, 2], "x": 9, "y": 3},
|
||||
{"matrix": [3, 3], "x": 10, "y": 3},
|
||||
{"matrix": [3, 4], "x": 11, "y": 3}
|
||||
]
|
||||
},
|
||||
"LAYOUT_planck_1x2uC": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [4, 0], "x": 6, "y": 0},
|
||||
{"matrix": [4, 1], "x": 7, "y": 0},
|
||||
{"matrix": [4, 2], "x": 8, "y": 0},
|
||||
{"matrix": [4, 3], "x": 9, "y": 0},
|
||||
{"matrix": [4, 4], "x": 10, "y": 0},
|
||||
{"matrix": [4, 5], "x": 11, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [5, 0], "x": 6, "y": 1},
|
||||
{"matrix": [5, 1], "x": 7, "y": 1},
|
||||
{"matrix": [5, 2], "x": 8, "y": 1},
|
||||
{"matrix": [5, 3], "x": 9, "y": 1},
|
||||
{"matrix": [5, 4], "x": 10, "y": 1},
|
||||
{"matrix": [5, 5], "x": 11, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
{"matrix": [6, 0], "x": 6, "y": 2},
|
||||
{"matrix": [6, 1], "x": 7, "y": 2},
|
||||
{"matrix": [6, 2], "x": 8, "y": 2},
|
||||
{"matrix": [6, 3], "x": 9, "y": 2},
|
||||
{"matrix": [6, 4], "x": 10, "y": 2},
|
||||
{"matrix": [6, 5], "x": 11, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [7, 3], "x": 3, "y": 3},
|
||||
{"matrix": [7, 4], "x": 4, "y": 3},
|
||||
{"matrix": [7, 5], "x": 5, "y": 3, "w": 2},
|
||||
{"matrix": [7, 0], "x": 7, "y": 3},
|
||||
{"matrix": [7, 1], "x": 8, "y": 3},
|
||||
{"matrix": [7, 2], "x": 9, "y": 3},
|
||||
{"matrix": [3, 3], "x": 10, "y": 3},
|
||||
{"matrix": [3, 4], "x": 11, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
17
keyboards/zsa/planck_ez/keymaps/default/keymap.json
Normal file
17
keyboards/zsa/planck_ez/keymaps/default/keymap.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"keyboard": "zsa/planck_ez/base",
|
||||
"keymap": "default",
|
||||
"layers": [
|
||||
["KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", "KC_ESC", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ENT", "CW_TOGG", "KC_LCTL", "KC_LALT", "KC_LGUI", "TL_LOWR", "KC_SPC", "TL_UPPR", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"],
|
||||
["KC_TILD", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_BSPC", "KC_DEL", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE", "KC_TRNS", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "S(KC_NUHS)", "S(KC_NUBS)", "KC_HOME", "KC_END", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"],
|
||||
["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC", "KC_DEL", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_TRNS", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_NUHS", "KC_NUBS", "KC_PGUP", "KC_PGDN", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MPLY"],
|
||||
["KC_TRNS", "QK_BOOT", "DB_TOGG", "RGB_TOG", "RGB_MOD", "RGB_HUI", "RGB_HUD", "RGB_SAI", "RGB_SAD", "RGB_VAI", "RGB_VAD", "KC_DEL", "KC_TRNS", "KC_TRNS", "MU_NEXT", "AU_ON", "AU_OFF", "AG_NORM", "AG_SWAP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "AU_PREV", "AU_NEXT", "MU_ON", "MU_OFF", "MI_ON", "MI_OFF", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"]
|
||||
],
|
||||
"layout": "LAYOUT_planck_1x2uC",
|
||||
"config": {
|
||||
"features": {
|
||||
"tri_layer": true,
|
||||
"caps_word": true
|
||||
}
|
||||
}
|
||||
}
|
@ -35,7 +35,3 @@
|
||||
#define STM32_DAC_USE_DAC1_CH2 TRUE
|
||||
#undef STM32_GPT_USE_TIM6
|
||||
#define STM32_GPT_USE_TIM6 TRUE
|
||||
#undef STM32_GPT_USE_TIM7
|
||||
#define STM32_GPT_USE_TIM7 TRUE
|
||||
#undef STM32_GPT_USE_TIM8
|
||||
#define STM32_GPT_USE_TIM8 TRUE
|
@ -15,98 +15,13 @@
|
||||
* 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 "ez.h"
|
||||
#include "planck_ez.h"
|
||||
#include <ch.h>
|
||||
#include <hal.h>
|
||||
#include "keycodes.h"
|
||||
|
||||
keyboard_config_t keyboard_config;
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
* | | | B location
|
||||
* | | | | */
|
||||
{0, SW2_CS12, SW1_CS12, SW3_CS12},
|
||||
{0, SW2_CS11, SW1_CS11, SW3_CS11},
|
||||
{0, SW2_CS10, SW1_CS10, SW3_CS10},
|
||||
{0, SW2_CS9, SW1_CS9, SW3_CS9},
|
||||
{0, SW2_CS8, SW1_CS8, SW3_CS8},
|
||||
{0, SW2_CS7, SW1_CS7, SW3_CS7},
|
||||
|
||||
{0, SW8_CS12, SW7_CS12, SW9_CS12},
|
||||
{0, SW8_CS11, SW7_CS11, SW9_CS11},
|
||||
{0, SW8_CS10, SW7_CS10, SW9_CS10},
|
||||
{0, SW8_CS9, SW7_CS9, SW9_CS9},
|
||||
{0, SW8_CS8, SW7_CS8, SW9_CS8},
|
||||
{0, SW8_CS7, SW7_CS7, SW9_CS7},
|
||||
|
||||
{0, SW2_CS6, SW1_CS6, SW3_CS6},
|
||||
{0, SW2_CS5, SW1_CS5, SW3_CS5},
|
||||
{0, SW2_CS4, SW1_CS4, SW3_CS4},
|
||||
{0, SW2_CS3, SW1_CS3, SW3_CS3},
|
||||
{0, SW2_CS2, SW1_CS2, SW3_CS2},
|
||||
{0, SW2_CS1, SW1_CS1, SW3_CS1},
|
||||
|
||||
{0, SW8_CS6, SW7_CS6, SW9_CS6},
|
||||
{0, SW8_CS5, SW7_CS5, SW9_CS5},
|
||||
{0, SW8_CS4, SW7_CS4, SW9_CS4},
|
||||
{0, SW8_CS3, SW7_CS3, SW9_CS3},
|
||||
{0, SW8_CS2, SW7_CS2, SW9_CS2},
|
||||
{0, SW8_CS1, SW7_CS1, SW9_CS1},
|
||||
|
||||
{0, SW5_CS12, SW4_CS12, SW6_CS12},
|
||||
{0, SW5_CS11, SW4_CS11, SW6_CS11},
|
||||
{0, SW5_CS10, SW4_CS10, SW6_CS10},
|
||||
{0, SW5_CS9, SW4_CS9, SW6_CS9},
|
||||
{0, SW5_CS8, SW4_CS8, SW6_CS8},
|
||||
{0, SW5_CS7, SW4_CS7, SW6_CS7},
|
||||
|
||||
{0, SW11_CS12, SW10_CS12, SW12_CS12},
|
||||
{0, SW11_CS11, SW10_CS11, SW12_CS11},
|
||||
{0, SW11_CS10, SW10_CS10, SW12_CS10},
|
||||
{0, SW11_CS9, SW10_CS9, SW12_CS9},
|
||||
{0, SW11_CS8, SW10_CS8, SW12_CS8},
|
||||
{0, SW11_CS7, SW10_CS7, SW12_CS7},
|
||||
|
||||
{0, SW5_CS6, SW4_CS6, SW6_CS6},
|
||||
{0, SW5_CS5, SW4_CS5, SW6_CS5},
|
||||
{0, SW5_CS4, SW4_CS4, SW6_CS4},
|
||||
{0, SW5_CS3, SW4_CS3, SW6_CS3},
|
||||
{0, SW5_CS2, SW4_CS2, SW6_CS2},
|
||||
{0, SW5_CS1, SW4_CS1, SW6_CS1},
|
||||
|
||||
{0, SW11_CS6, SW10_CS6, SW12_CS6},
|
||||
{0, SW11_CS5, SW10_CS5, SW12_CS5},
|
||||
{0, SW11_CS4, SW10_CS4, SW12_CS4},
|
||||
{0, SW11_CS3, SW10_CS3, SW12_CS3},
|
||||
{0, SW11_CS2, SW10_CS2, SW12_CS2},
|
||||
|
||||
};
|
||||
|
||||
led_config_t g_led_config = { {
|
||||
{ 0, 1, 2, 3, 4, 5 },
|
||||
{ 12, 13, 14, 15, 16, 17 },
|
||||
{ 24, 25, 26, 27, 28, 29 },
|
||||
{ 36, 37, 38, 45, 46, NO_LED },
|
||||
{ 6, 7, 8, 9, 10, 11 },
|
||||
{ 18, 19, 20, 21, 22, 23 },
|
||||
{ 30, 31, 32, 33, 34, 35 },
|
||||
{ 42, 43, 44, 39, 40, 41 }
|
||||
}, {
|
||||
{ 0, 0 }, { 20, 0 }, { 40, 0 }, { 61, 0 }, { 81, 0 }, { 101, 0 }, { 122, 0 }, { 142, 0 }, { 162, 0 }, { 183, 0 }, { 203, 0 }, { 223, 0 },
|
||||
{ 0, 21 }, { 20, 21 }, { 40, 21 }, { 61, 21 }, { 81, 21 }, { 101, 21 }, { 122, 21 }, { 142, 21 }, { 162, 21 }, { 183, 21 }, { 203, 21 }, { 223, 21 },
|
||||
{ 0, 42 }, { 20, 42 }, { 40, 42 }, { 61, 42 }, { 81, 42 }, { 101, 42 }, { 122, 42 }, { 142, 42 }, { 162, 42 }, { 183, 42 }, { 203, 42 }, { 223, 42 },
|
||||
{ 0, 63 }, { 20, 63 }, { 40, 63 }, { 61, 63 }, { 81, 63 }, { 111, 63 }, { 142, 63 }, { 162, 63 }, { 183, 63 }, { 203, 63 }, { 223, 63 }
|
||||
}, {
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
||||
1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1
|
||||
} };
|
||||
|
||||
#endif
|
||||
|
||||
/* Left B9 Right B8 */
|
||||
|
||||
@ -236,13 +151,13 @@ void eeconfig_init_kb(void) { // EEPROM is getting reset!
|
||||
#ifndef PLANCK_EZ_USER_LEDS
|
||||
|
||||
#ifndef PLANCK_EZ_LED_LOWER
|
||||
# define PLANCK_EZ_LED_LOWER 3
|
||||
# define PLANCK_EZ_LED_LOWER 1
|
||||
#endif
|
||||
#ifndef PLANCK_EZ_LED_RAISE
|
||||
# define PLANCK_EZ_LED_RAISE 4
|
||||
# define PLANCK_EZ_LED_RAISE 2
|
||||
#endif
|
||||
#ifndef PLANCK_EZ_LED_ADJUST
|
||||
# define PLANCK_EZ_LED_ADJUST 6
|
||||
# define PLANCK_EZ_LED_ADJUST 3
|
||||
#endif
|
||||
|
||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||
@ -331,6 +246,8 @@ bool music_mask_kb(uint16_t keycode) {
|
||||
case AU_ON ... AU_PREV:
|
||||
case QK_BOOT:
|
||||
case QK_CLEAR_EEPROM:
|
||||
case QK_TRI_LAYER_LOWER:
|
||||
case QK_TRI_LAYER_UPPER:
|
||||
return false;
|
||||
default:
|
||||
return music_mask_user(keycode);
|
@ -6,15 +6,15 @@ A variant of the Planck featuring a 2u spacebar and per-key RGB backlighting.
|
||||
|
||||
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert), [Drashna Jael're](https://github.com/drashna)
|
||||
Hardware Supported: Planck EZ
|
||||
Hardware Availability: [ZSA](https://www.zsa.io/planck/)
|
||||
Hardware Availability: [ZSA](https://www.zsa.io/planck/) (discontinued)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make planck/ez:oryx
|
||||
make zsa/planck_ez/base:default
|
||||
|
||||
For the per key RGB version of this keyboard, you want to use the "glow" subdirectory. For example:
|
||||
|
||||
make planck/ez/glow:oryx
|
||||
make zsa/planck_ez/glow:default
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
@ -1,4 +1,4 @@
|
||||
RGBLIGHT_SUPPORTED = no
|
||||
BAKCLIGHT_SUPPORTED = no
|
||||
|
||||
DEFAULT_FOLDER = planck/ez/base
|
||||
DEFAULT_FOLDER = zsa/planck_ez/base
|
@ -21,18 +21,26 @@ static uint32_t dynamic_macro_led(uint32_t trigger_time, void *cb_arg) {
|
||||
return 100;
|
||||
}
|
||||
|
||||
void dynamic_macro_record_start_user(int8_t direction) {
|
||||
bool dynamic_macro_record_start_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_start_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
if (dynamic_macro_token == INVALID_DEFERRED_TOKEN) {
|
||||
STATUS_LED_3(true);
|
||||
dynamic_macro_token = defer_exec(100, dynamic_macro_led, NULL);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction) {
|
||||
bool dynamic_macro_record_end_kb(int8_t direction) {
|
||||
if (!dynamic_macro_record_end_user(direction)) {
|
||||
return false;
|
||||
}
|
||||
if (cancel_deferred_exec(dynamic_macro_token)) {
|
||||
dynamic_macro_token = INVALID_DEFERRED_TOKEN;
|
||||
STATUS_LED_3(false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
# endif
|
||||
|
||||
|
@ -187,5 +187,5 @@ def doctor(cli):
|
||||
return 1
|
||||
else:
|
||||
cli.log.info('{fg_red}Major problems detected, please fix these problems before proceeding.')
|
||||
cli.log.info('{fg_blue}Check out the FAQ (https://docs.qmk.fm/#/faq_build) or join the QMK Discord (https://discord.gg/Uq7gcHh) for help.')
|
||||
cli.log.info('{fg_blue}Check out the FAQ (https://docs.qmk.fm/#/faq_build) or join the QMK Discord (https://discord.gg/qmk) for help.')
|
||||
return 2
|
||||
|
@ -546,9 +546,6 @@ ifneq ($(findstring STM32G431, $(MCU)),)
|
||||
|
||||
# Bootloader address for STM32 DFU
|
||||
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
|
||||
|
||||
# Default to transient driver as ChibiOS EFL is currently broken for single-bank G4xx devices
|
||||
EEPROM_DRIVER ?= transient
|
||||
endif
|
||||
|
||||
ifneq ($(findstring STM32G474, $(MCU)),)
|
||||
|
@ -1,264 +0,0 @@
|
||||
/* Copyright 2016 Jack Humbert
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
/* Author: Wojciech Siewierski < wojciech dot siewierski at onet dot pl > */
|
||||
#pragma once
|
||||
|
||||
/* Warn users that this is now deprecated and they should use the core feature instead. */
|
||||
#pragma message "Dynamic Macros is now a core feature. See updated documentation to see how to configure it: https://docs.qmk.fm/#/feature_dynamic_macros"
|
||||
|
||||
#include "action_layer.h"
|
||||
|
||||
#ifndef DYNAMIC_MACRO_SIZE
|
||||
/* May be overridden with a custom value. Be aware that the effective
|
||||
* macro length is half of this value: each keypress is recorded twice
|
||||
* because of the down-event and up-event. This is not a bug, it's the
|
||||
* intended behavior.
|
||||
*
|
||||
* Usually it should be fine to set the macro size to at least 256 but
|
||||
* there have been reports of it being too much in some users' cases,
|
||||
* so 128 is considered a safe default.
|
||||
*/
|
||||
# define DYNAMIC_MACRO_SIZE 128
|
||||
#endif
|
||||
|
||||
/* Blink the LEDs to notify the user about some event. */
|
||||
void dynamic_macro_led_blink(void) {
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_toggle();
|
||||
wait_ms(100);
|
||||
backlight_toggle();
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Convenience macros used for retrieving the debug info. All of them
|
||||
* need a `direction` variable accessible at the call site.
|
||||
*/
|
||||
#define DYNAMIC_MACRO_CURRENT_SLOT() (direction > 0 ? 1 : 2)
|
||||
#define DYNAMIC_MACRO_CURRENT_LENGTH(BEGIN, POINTER) ((int)(direction * ((POINTER) - (BEGIN))))
|
||||
#define DYNAMIC_MACRO_CURRENT_CAPACITY(BEGIN, END2) ((int)(direction * ((END2) - (BEGIN)) + 1))
|
||||
|
||||
/**
|
||||
* Start recording of the dynamic macro.
|
||||
*
|
||||
* @param[out] macro_pointer The new macro buffer iterator.
|
||||
* @param[in] macro_buffer The macro buffer used to initialize macro_pointer.
|
||||
*/
|
||||
void dynamic_macro_record_start(keyrecord_t **macro_pointer, keyrecord_t *macro_buffer) {
|
||||
dprintln("dynamic macro recording: started");
|
||||
|
||||
dynamic_macro_led_blink();
|
||||
|
||||
clear_keyboard();
|
||||
layer_clear();
|
||||
*macro_pointer = macro_buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Play the dynamic macro.
|
||||
*
|
||||
* @param macro_buffer[in] The beginning of the macro buffer being played.
|
||||
* @param macro_end[in] The element after the last macro buffer element.
|
||||
* @param direction[in] Either +1 or -1, which way to iterate the buffer.
|
||||
*/
|
||||
void dynamic_macro_play(keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_t direction) {
|
||||
dprintf("dynamic macro: slot %d playback\n", DYNAMIC_MACRO_CURRENT_SLOT());
|
||||
|
||||
uint32_t saved_layer_state = layer_state;
|
||||
|
||||
clear_keyboard();
|
||||
layer_clear();
|
||||
|
||||
while (macro_buffer != macro_end) {
|
||||
process_record(macro_buffer);
|
||||
macro_buffer += direction;
|
||||
}
|
||||
|
||||
clear_keyboard();
|
||||
|
||||
layer_state = saved_layer_state;
|
||||
}
|
||||
|
||||
/**
|
||||
* Record a single key in a dynamic macro.
|
||||
*
|
||||
* @param macro_buffer[in] The start of the used macro buffer.
|
||||
* @param macro_pointer[in,out] The current buffer position.
|
||||
* @param macro2_end[in] The end of the other macro.
|
||||
* @param direction[in] Either +1 or -1, which way to iterate the buffer.
|
||||
* @param record[in] The current keypress.
|
||||
*/
|
||||
void dynamic_macro_record_key(keyrecord_t *macro_buffer, keyrecord_t **macro_pointer, keyrecord_t *macro2_end, int8_t direction, keyrecord_t *record) {
|
||||
/* If we've just started recording, ignore all the key releases. */
|
||||
if (!record->event.pressed && *macro_pointer == macro_buffer) {
|
||||
dprintln("dynamic macro: ignoring a leading key-up event");
|
||||
return;
|
||||
}
|
||||
|
||||
/* The other end of the other macro is the last buffer element it
|
||||
* is safe to use before overwriting the other macro.
|
||||
*/
|
||||
if (*macro_pointer - direction != macro2_end) {
|
||||
**macro_pointer = *record;
|
||||
*macro_pointer += direction;
|
||||
} else {
|
||||
dynamic_macro_led_blink();
|
||||
}
|
||||
|
||||
dprintf("dynamic macro: slot %d length: %d/%d\n", DYNAMIC_MACRO_CURRENT_SLOT(), DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, *macro_pointer), DYNAMIC_MACRO_CURRENT_CAPACITY(macro_buffer, macro2_end));
|
||||
}
|
||||
|
||||
/**
|
||||
* End recording of the dynamic macro. Essentially just update the
|
||||
* pointer to the end of the macro.
|
||||
*/
|
||||
void dynamic_macro_record_end(keyrecord_t *macro_buffer, keyrecord_t *macro_pointer, int8_t direction, keyrecord_t **macro_end) {
|
||||
dynamic_macro_led_blink();
|
||||
|
||||
/* Do not save the keys being held when stopping the recording,
|
||||
* i.e. the keys used to access the layer DM_RSTP is on.
|
||||
*/
|
||||
while (macro_pointer != macro_buffer && (macro_pointer - direction)->event.pressed) {
|
||||
dprintln("dynamic macro: trimming a trailing key-down event");
|
||||
macro_pointer -= direction;
|
||||
}
|
||||
|
||||
dprintf("dynamic macro: slot %d saved, length: %d\n", DYNAMIC_MACRO_CURRENT_SLOT(), DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, macro_pointer));
|
||||
|
||||
*macro_end = macro_pointer;
|
||||
}
|
||||
|
||||
/* Handle the key events related to the dynamic macros. Should be
|
||||
* called from process_record_user() like this:
|
||||
*
|
||||
* bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
* if (!process_record_dynamic_macro(keycode, record)) {
|
||||
* return false;
|
||||
* }
|
||||
* <...THE REST OF THE FUNCTION...>
|
||||
* }
|
||||
*/
|
||||
bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
|
||||
/* Both macros use the same buffer but read/write on different
|
||||
* ends of it.
|
||||
*
|
||||
* Macro1 is written left-to-right starting from the beginning of
|
||||
* the buffer.
|
||||
*
|
||||
* Macro2 is written right-to-left starting from the end of the
|
||||
* buffer.
|
||||
*
|
||||
* ¯o_buffer macro_end
|
||||
* v v
|
||||
* +------------------------------------------------------------+
|
||||
* |>>>>>> MACRO1 >>>>>> <<<<<<<<<<<<< MACRO2 <<<<<<<<<<<<<|
|
||||
* +------------------------------------------------------------+
|
||||
* ^ ^
|
||||
* r_macro_end r_macro_buffer
|
||||
*
|
||||
* During the recording when one macro encounters the end of the
|
||||
* other macro, the recording is stopped. Apart from this, there
|
||||
* are no arbitrary limits for the macros' length in relation to
|
||||
* each other: for example one can either have two medium sized
|
||||
* macros or one long macro and one short macro. Or even one empty
|
||||
* and one using the whole buffer.
|
||||
*/
|
||||
static keyrecord_t macro_buffer[DYNAMIC_MACRO_SIZE];
|
||||
|
||||
/* Pointer to the first buffer element after the first macro.
|
||||
* Initially points to the very beginning of the buffer since the
|
||||
* macro is empty. */
|
||||
static keyrecord_t *macro_end = macro_buffer;
|
||||
|
||||
/* The other end of the macro buffer. Serves as the beginning of
|
||||
* the second macro. */
|
||||
static keyrecord_t *const r_macro_buffer = macro_buffer + DYNAMIC_MACRO_SIZE - 1;
|
||||
|
||||
/* Like macro_end but for the second macro. */
|
||||
static keyrecord_t *r_macro_end = r_macro_buffer;
|
||||
|
||||
/* A persistent pointer to the current macro position (iterator)
|
||||
* used during the recording. */
|
||||
static keyrecord_t *macro_pointer = NULL;
|
||||
|
||||
/* 0 - no macro is being recorded right now
|
||||
* 1,2 - either macro 1 or 2 is being recorded */
|
||||
static uint8_t macro_id = 0;
|
||||
|
||||
if (macro_id == 0) {
|
||||
/* No macro recording in progress. */
|
||||
if (!record->event.pressed) {
|
||||
switch (keycode) {
|
||||
case QK_DYNAMIC_MACRO_RECORD_START_1:
|
||||
dynamic_macro_record_start(¯o_pointer, macro_buffer);
|
||||
macro_id = 1;
|
||||
return false;
|
||||
case QK_DYNAMIC_MACRO_RECORD_START_2:
|
||||
dynamic_macro_record_start(¯o_pointer, r_macro_buffer);
|
||||
macro_id = 2;
|
||||
return false;
|
||||
case QK_DYNAMIC_MACRO_PLAY_1:
|
||||
dynamic_macro_play(macro_buffer, macro_end, +1);
|
||||
return false;
|
||||
case QK_DYNAMIC_MACRO_PLAY_2:
|
||||
dynamic_macro_play(r_macro_buffer, r_macro_end, -1);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* A macro is being recorded right now. */
|
||||
switch (keycode) {
|
||||
case QK_DYNAMIC_MACRO_RECORD_STOP:
|
||||
/* Stop the macro recording. */
|
||||
if (record->event.pressed) { /* Ignore the initial release
|
||||
* just after the recoding
|
||||
* starts. */
|
||||
switch (macro_id) {
|
||||
case 1:
|
||||
dynamic_macro_record_end(macro_buffer, macro_pointer, +1, ¯o_end);
|
||||
break;
|
||||
case 2:
|
||||
dynamic_macro_record_end(r_macro_buffer, macro_pointer, -1, &r_macro_end);
|
||||
break;
|
||||
}
|
||||
macro_id = 0;
|
||||
}
|
||||
return false;
|
||||
case QK_DYNAMIC_MACRO_PLAY_1:
|
||||
case QK_DYNAMIC_MACRO_PLAY_2:
|
||||
dprintln("dynamic macro: ignoring macro play key while recording");
|
||||
return false;
|
||||
default:
|
||||
/* Store the key in the macro buffer and process it normally. */
|
||||
switch (macro_id) {
|
||||
case 1:
|
||||
dynamic_macro_record_key(macro_buffer, ¯o_pointer, r_macro_end, +1, record);
|
||||
break;
|
||||
case 2:
|
||||
dynamic_macro_record_key(r_macro_buffer, ¯o_pointer, macro_end, -1, record);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#undef DYNAMIC_MACRO_CURRENT_SLOT
|
||||
#undef DYNAMIC_MACRO_CURRENT_LENGTH
|
||||
#undef DYNAMIC_MACRO_CURRENT_CAPACITY
|
@ -38,20 +38,44 @@ void dynamic_macro_led_blink(void) {
|
||||
|
||||
/* User hooks for Dynamic Macros */
|
||||
|
||||
__attribute__((weak)) void dynamic_macro_record_start_user(int8_t direction) {
|
||||
dynamic_macro_led_blink();
|
||||
__attribute__((weak)) bool dynamic_macro_record_start_kb(int8_t direction) {
|
||||
return dynamic_macro_record_start_user(direction);
|
||||
}
|
||||
|
||||
__attribute__((weak)) void dynamic_macro_play_user(int8_t direction) {
|
||||
__attribute__((weak)) bool dynamic_macro_record_start_user(int8_t direction) {
|
||||
dynamic_macro_led_blink();
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__((weak)) void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record) {
|
||||
dynamic_macro_led_blink();
|
||||
__attribute__((weak)) bool dynamic_macro_play_kb(int8_t direction) {
|
||||
return dynamic_macro_play_user(direction);
|
||||
}
|
||||
|
||||
__attribute__((weak)) void dynamic_macro_record_end_user(int8_t direction) {
|
||||
__attribute__((weak)) bool dynamic_macro_play_user(int8_t direction) {
|
||||
dynamic_macro_led_blink();
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__((weak)) bool dynamic_macro_record_key_kb(int8_t direction, keyrecord_t *record) {
|
||||
return dynamic_macro_record_key_user(direction, record);
|
||||
}
|
||||
|
||||
__attribute__((weak)) bool dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record) {
|
||||
dynamic_macro_led_blink();
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__((weak)) bool dynamic_macro_record_end_kb(int8_t direction) {
|
||||
return dynamic_macro_record_end_user(direction);
|
||||
}
|
||||
|
||||
__attribute__((weak)) bool dynamic_macro_record_end_user(int8_t direction) {
|
||||
dynamic_macro_led_blink();
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__((weak)) bool dynamic_macro_valid_key_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
return dynamic_macro_valid_key_user(keycode, record);
|
||||
}
|
||||
|
||||
__attribute__((weak)) bool dynamic_macro_valid_key_user(uint16_t keycode, keyrecord_t *record) {
|
||||
@ -74,7 +98,7 @@ __attribute__((weak)) bool dynamic_macro_valid_key_user(uint16_t keycode, keyrec
|
||||
void dynamic_macro_record_start(keyrecord_t **macro_pointer, keyrecord_t *macro_buffer, int8_t direction) {
|
||||
dprintln("dynamic macro recording: started");
|
||||
|
||||
dynamic_macro_record_start_user(direction);
|
||||
dynamic_macro_record_start_kb(direction);
|
||||
|
||||
clear_keyboard();
|
||||
layer_clear();
|
||||
@ -108,7 +132,7 @@ void dynamic_macro_play(keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_
|
||||
|
||||
layer_state_set(saved_layer_state);
|
||||
|
||||
dynamic_macro_play_user(direction);
|
||||
dynamic_macro_play_kb(direction);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -134,7 +158,7 @@ void dynamic_macro_record_key(keyrecord_t *macro_buffer, keyrecord_t **macro_poi
|
||||
**macro_pointer = *record;
|
||||
*macro_pointer += direction;
|
||||
}
|
||||
dynamic_macro_record_key_user(direction, record);
|
||||
dynamic_macro_record_key_kb(direction, record);
|
||||
|
||||
dprintf("dynamic macro: slot %d length: %d/%d\n", DYNAMIC_MACRO_CURRENT_SLOT(), DYNAMIC_MACRO_CURRENT_LENGTH(macro_buffer, *macro_pointer), DYNAMIC_MACRO_CURRENT_CAPACITY(macro_buffer, macro2_end));
|
||||
}
|
||||
@ -144,7 +168,7 @@ void dynamic_macro_record_key(keyrecord_t *macro_buffer, keyrecord_t **macro_poi
|
||||
* pointer to the end of the macro.
|
||||
*/
|
||||
void dynamic_macro_record_end(keyrecord_t *macro_buffer, keyrecord_t *macro_pointer, int8_t direction, keyrecord_t **macro_end) {
|
||||
dynamic_macro_record_end_user(direction);
|
||||
dynamic_macro_record_end_kb(direction);
|
||||
|
||||
/* Do not save the keys being held when stopping the recording,
|
||||
* i.e. the keys used to access the layer DM_RSTP is on.
|
||||
@ -220,15 +244,7 @@ void dynamic_macro_stop_recording(void) {
|
||||
macro_id = 0;
|
||||
}
|
||||
|
||||
/* Handle the key events related to the dynamic macros. Should be
|
||||
* called from process_record_user() like this:
|
||||
*
|
||||
* bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
* if (!process_record_dynamic_macro(keycode, record)) {
|
||||
* return false;
|
||||
* }
|
||||
* <...THE REST OF THE FUNCTION...>
|
||||
* }
|
||||
/* Handle the key events related to the dynamic macros.
|
||||
*/
|
||||
bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
|
||||
if (macro_id == 0) {
|
||||
@ -271,7 +287,7 @@ bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record) {
|
||||
return false;
|
||||
#endif
|
||||
default:
|
||||
if (dynamic_macro_valid_key_user(keycode, record)) {
|
||||
if (dynamic_macro_valid_key_kb(keycode, record)) {
|
||||
/* Store the key in the macro buffer and process it normally. */
|
||||
switch (macro_id) {
|
||||
case 1:
|
||||
|
@ -37,8 +37,14 @@
|
||||
|
||||
void dynamic_macro_led_blink(void);
|
||||
bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record);
|
||||
void dynamic_macro_record_start_user(int8_t direction);
|
||||
void dynamic_macro_play_user(int8_t direction);
|
||||
void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record);
|
||||
void dynamic_macro_record_end_user(int8_t direction);
|
||||
bool dynamic_macro_record_start_kb(int8_t direction);
|
||||
bool dynamic_macro_record_start_user(int8_t direction);
|
||||
bool dynamic_macro_play_kb(int8_t direction);
|
||||
bool dynamic_macro_play_user(int8_t direction);
|
||||
bool dynamic_macro_record_key_kb(int8_t direction, keyrecord_t *record);
|
||||
bool dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record);
|
||||
bool dynamic_macro_record_end_kb(int8_t direction);
|
||||
bool dynamic_macro_record_end_user(int8_t direction);
|
||||
bool dynamic_macro_valid_key_kb(uint16_t keycode, keyrecord_t *record);
|
||||
bool dynamic_macro_valid_key_user(uint16_t keycode, keyrecord_t *record);
|
||||
void dynamic_macro_stop_recording(void);
|
||||
|
@ -7,11 +7,11 @@ RGB_MATRIX_EFFECT(RIVERFLOW)
|
||||
bool RIVERFLOW(effect_params_t* params) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
uint16_t time = scale16by8(g_rgb_timer + (i * 315), rgb_matrix_config.speed / 8);
|
||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||
RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
|
@ -2,25 +2,26 @@
|
||||
RGB_MATRIX_EFFECT(STARLIGHT)
|
||||
# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
void set_starlight_color(int i, effect_params_t* params) {
|
||||
void set_starlight_color(uint8_t i, effect_params_t* params) {
|
||||
uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8);
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
bool STARLIGHT(effect_params_t* params) {
|
||||
if (!params->init) {
|
||||
if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) {
|
||||
int rand_led = rand() % RGB_MATRIX_LED_COUNT;
|
||||
uint8_t rand_led = random8_max(RGB_MATRIX_LED_COUNT);
|
||||
set_starlight_color(rand_led, params);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
for (int i = led_min; i < led_max; i++) {
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
set_starlight_color(i, params);
|
||||
}
|
||||
return rgb_matrix_check_finished_leds(led_max);
|
||||
|
@ -2,26 +2,27 @@
|
||||
RGB_MATRIX_EFFECT(STARLIGHT_DUAL_HUE)
|
||||
# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
void set_starlight_dual_hue_color(int i, effect_params_t* params) {
|
||||
void set_starlight_dual_hue_color(uint8_t i, effect_params_t* params) {
|
||||
uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8);
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||
hsv.h = hsv.h + (rand() % (30 + 1 - -30) + -30);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
hsv.h = hsv.h + random8_max((30 + 1 - -30) + -30);
|
||||
RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
bool STARLIGHT_DUAL_HUE(effect_params_t* params) {
|
||||
if (!params->init) {
|
||||
if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) {
|
||||
int rand_led = rand() % RGB_MATRIX_LED_COUNT;
|
||||
uint8_t rand_led = random8_max(RGB_MATRIX_LED_COUNT);
|
||||
set_starlight_dual_hue_color(rand_led, params);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
for (int i = led_min; i < led_max; i++) {
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
set_starlight_dual_hue_color(i, params);
|
||||
}
|
||||
return rgb_matrix_check_finished_leds(led_max);
|
||||
|
@ -2,26 +2,27 @@
|
||||
RGB_MATRIX_EFFECT(STARLIGHT_DUAL_SAT)
|
||||
# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
void set_starlight_dual_sat_color(int i, effect_params_t* params) {
|
||||
void set_starlight_dual_sat_color(uint8_t i, effect_params_t* params) {
|
||||
uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 8);
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
|
||||
hsv.s = hsv.s + (rand() % (30 + 1 - -30) + -30);
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
hsv.s = hsv.s + random8_max((30 + 1 - -30) + -30);
|
||||
RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
bool STARLIGHT_DUAL_SAT(effect_params_t* params) {
|
||||
if (!params->init) {
|
||||
if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 5)) % 5 == 0) {
|
||||
int rand_led = rand() % RGB_MATRIX_LED_COUNT;
|
||||
uint8_t rand_led = random8_max(RGB_MATRIX_LED_COUNT);
|
||||
set_starlight_dual_sat_color(rand_led, params);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
for (int i = led_min; i < led_max; i++) {
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
set_starlight_dual_sat_color(i, params);
|
||||
}
|
||||
return rgb_matrix_check_finished_leds(led_max);
|
||||
|
@ -5,7 +5,7 @@ Warning- This is the `develop` branch of QMK Firmware. You may encounter broken
|
||||
# Quantum Mechanical Keyboard Firmware
|
||||
|
||||
[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
|
||||
[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
|
||||
[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/qmk)
|
||||
[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
|
||||
[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
|
||||
[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
|
||||
|
@ -88,7 +88,13 @@ void send_nkro(report_nkro_t *report) {
|
||||
__disable_irq();
|
||||
__DMB();
|
||||
|
||||
memcpy(udi_hid_nkro_report, report, UDI_HID_NKRO_REPORT_SIZE);
|
||||
/*
|
||||
Skipping ahead `sizeof(report->report_id)` bytes
|
||||
since `report_id` is not used by this driver
|
||||
*/
|
||||
void *report_no_report_id = (void *)((char *)report + sizeof(report->report_id));
|
||||
|
||||
memcpy(udi_hid_nkro_report, report_no_report_id, UDI_HID_NKRO_REPORT_SIZE);
|
||||
udi_hid_nkro_b_report_valid = 1;
|
||||
udi_hid_nkro_send_report();
|
||||
|
||||
@ -105,7 +111,17 @@ void send_mouse(report_mouse_t *report) {
|
||||
__disable_irq();
|
||||
__DMB();
|
||||
|
||||
# ifdef MOUSE_SHARED_EP
|
||||
/*
|
||||
Skipping ahead `sizeof(report->report_id)` bytes
|
||||
since `report_id` is not used by this driver
|
||||
*/
|
||||
void *report_no_report_id = (void *)((char *)report + sizeof(report->report_id));
|
||||
|
||||
memcpy(udi_hid_mou_report, report_no_report_id, UDI_HID_MOU_REPORT_SIZE);
|
||||
# else
|
||||
memcpy(udi_hid_mou_report, report, UDI_HID_MOU_REPORT_SIZE);
|
||||
# endif
|
||||
udi_hid_mou_b_report_valid = 1;
|
||||
udi_hid_mou_send_report();
|
||||
|
||||
|
@ -4,7 +4,7 @@ _qmk_install() {
|
||||
echo "Installing dependencies"
|
||||
|
||||
. /etc/os-release
|
||||
if [ "$VERSION_ID" == "39" ]; then
|
||||
if [ "$VERSION_ID" -ge "39" ]; then
|
||||
sudo dnf $SKIP_PROMPT copr enable erovia/dfu-programmer
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user