forked from mirrors/qmk_firmware
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd7bc03134 | ||
|
|
22a8992d1b | ||
|
|
2367e3e1fd | ||
|
|
0bd03150e5 | ||
|
|
feddc496ee | ||
|
|
36d3902504 | ||
|
|
f204ed67f2 | ||
|
|
f3acaff65b | ||
|
|
20c0533c4c | ||
|
|
a747953dfa | ||
|
|
1ab008eabd | ||
|
|
0a7222b703 | ||
|
|
4381dea621 | ||
|
|
827f8ce1bc | ||
|
|
207fde997f | ||
|
|
b1691ba696 | ||
|
|
7ec583e5ef | ||
|
|
c966da89da | ||
|
|
8060e52946 | ||
|
|
2e8cdb126e | ||
|
|
3261c408e4 | ||
|
|
d41961c9ed | ||
|
|
840b9090a0 | ||
|
|
40b0ddd425 | ||
|
|
17ff9cf554 | ||
|
|
d3ebf903c9 | ||
|
|
f1c89280d5 | ||
|
|
4602361095 | ||
|
|
28f53462d0 | ||
|
|
4532caf5f2 | ||
|
|
e08e6c11e3 |
@@ -1,22 +1,33 @@
|
||||
# Tap Dance: A Single Key Can Do 3, 5, or 100 Different Things
|
||||
|
||||
<!-- FIXME: Break this up into multiple sections -->
|
||||
|
||||
## Introduction
|
||||
Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by [algernon](https://github.com/algernon) in [#451](https://github.com/qmk/qmk_firmware/pull/451). Here's how algernon describes the feature:
|
||||
|
||||
With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter.
|
||||
|
||||
To make it clear how this is different from `ACTION_FUNCTION_TAP`, let's explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap.
|
||||
## Explanatory Comparison with `ACTION_FUNCTION_TAP`
|
||||
`ACTION_FUNCTION_TAP` can offer similar functionality to Tap Dance, but it's worth noting some important differences. To do this, let's explore a certain setup! We want one key to send `Space` on single-tap, but `Enter` on double-tap.
|
||||
|
||||
With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be sent first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly.
|
||||
With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be sent first. Thus, `SPC a` will result in `a SPC` being sent, if `SPC` and `a` are both typed within `TAPPING_TERM`. With the Tap Dance feature, that'll come out correctly as `SPC a` (even if both `SPC` and `a` are typed within the `TAPPING_TERM`.
|
||||
|
||||
The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time.
|
||||
To achieve this correct handling of interrupts, the implementation of Tap Dance hooks into two parts of the system: `process_record_quantum()`, and the matrix scan. These two parts are explained below, but for now the point to note is that we need the latter to be able to time out a tap sequence even when a key is not being pressed. That way, `SPC` alone will time out and register after `TAPPING_TERM` time.
|
||||
|
||||
But lets start with how to use it, first!
|
||||
## How to Use Tap Dance
|
||||
But enough of the generalities; lets look at how to actually use Tap Dance!
|
||||
|
||||
First, you will need `TAP_DANCE_ENABLE=yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array.
|
||||
First, you will need `TAP_DANCE_ENABLE=yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size.
|
||||
|
||||
This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
|
||||
Optionally, you might want to set a custom `TAPPING_TERM` time by adding something like this in you `config.h`:
|
||||
|
||||
```
|
||||
#define TAPPING_TERM 175
|
||||
```
|
||||
|
||||
The `TAPPING_TERM` time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above `#define` statement and set up a Tap Dance key that sends `Space` on single-tap and `Enter` on double-tap, then this key will send `ENT` only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending `SPC SPC` instead.
|
||||
|
||||
Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()` - takes a number, which will later be used as an index into the `tap_dance_actions` array.
|
||||
|
||||
After this, you'll want to use the `tap_dance_actions` array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
|
||||
|
||||
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
|
||||
* `ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode).
|
||||
@@ -24,17 +35,22 @@ This array specifies what actions shall be taken when a tap-dance key is in acti
|
||||
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
|
||||
* `ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
|
||||
|
||||
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
|
||||
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
|
||||
|
||||
!> Keep in mind that only [basic keycodes](keycodes_basic.md) are supported here. Custom keycodes are not supported.
|
||||
|
||||
And that's the bulk of it!
|
||||
Similar to the first option, the second option is good for simple layer-switching cases.
|
||||
|
||||
And now, on to the explanation of how it works!
|
||||
For more complicated cases, use the third or fourth options (examples of each are listed below).
|
||||
|
||||
The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer.
|
||||
Finally, the fifth option is particularly useful if your non-Tap-Dance keys start behaving weirdly after adding the code for your Tap Dance keys. The likely problem is that you changed the `TAPPING_TERM` time to make your Tap Dance keys easier for you to use, and that this has changed the way your other keys handle interrupts.
|
||||
|
||||
This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
|
||||
## Implementation Details
|
||||
Well, that's the bulk of it! You should now be able to work through the examples below, and to develop your own Tap Dance functionality. But if you want a deeper understanding of what's going on behind the scenes, then read on for the explanation of how it all works!
|
||||
|
||||
The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and reset the timer.
|
||||
|
||||
This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
|
||||
|
||||
Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys.
|
||||
|
||||
@@ -397,3 +413,111 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
```
|
||||
|
||||
Wrap each tapdance keycode in `TD()` when including it in your keymap, e.g. `TD(ALT_LP)`.
|
||||
|
||||
### Example 6: Using tap dance for momentary-layer-switch and layer-toggle keys
|
||||
|
||||
Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this example, we will set up a key to function as `KC_QUOT` on single-tap, as `MO(_MY_LAYER)` on single-hold, and `TG(_MY_LAYER)` on double-tap.
|
||||
|
||||
The first step is to include the following code towards the beginning of your `keymap.c`:
|
||||
|
||||
```
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
int state;
|
||||
} tap;
|
||||
|
||||
//Define a type for as many tap dance states as you need
|
||||
enum {
|
||||
SINGLE_TAP = 1,
|
||||
SINGLE_HOLD = 2,
|
||||
DOUBLE_TAP = 3
|
||||
};
|
||||
|
||||
enum {
|
||||
QUOT_LAYR = 0 //Our custom tap dance key; add any other tap dance keys to this enum
|
||||
};
|
||||
|
||||
//Declare the functions to be used with your tap dance key(s)
|
||||
|
||||
//Function associated with all tap dances
|
||||
int cur_dance (qk_tap_dance_state_t *state);
|
||||
|
||||
//Functions associated with individual tap dances
|
||||
void ql_finished (qk_tap_dance_state_t *state, void *user_data);
|
||||
void ql_reset (qk_tap_dance_state_t *state, void *user_data);
|
||||
|
||||
//Declare variable to track which layer is active
|
||||
int active_layer;
|
||||
```
|
||||
|
||||
The above code is similar to that used in previous examples. The one point to note is that you need to declare a variable to keep track of what layer is currently the active layer. We'll see why shortly.
|
||||
|
||||
Towards the bottom of your `keymap.c`, include the following code:
|
||||
|
||||
```
|
||||
//Update active_layer
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
switch (biton32(state)) {
|
||||
case 1:
|
||||
active_layer = 1;
|
||||
break;
|
||||
case 2:
|
||||
active_layer = 2;
|
||||
break;
|
||||
case 3:
|
||||
active_layer = 3;
|
||||
break;
|
||||
default:
|
||||
active_layer = 0;
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
//Determine the current tap dance state
|
||||
int cur_dance (qk_tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (!state->pressed) {return SINGLE_TAP;}
|
||||
else return SINGLE_HOLD;
|
||||
} else if (state->count == 2) {return DOUBLE_TAP;}
|
||||
else return 8;
|
||||
}
|
||||
|
||||
//Initialize tap structure associated with example tap dance key
|
||||
static tap ql_tap_state = {
|
||||
.is_press_action = true,
|
||||
.state = 0
|
||||
};
|
||||
|
||||
//Functions that control what our tap dance key does
|
||||
void ql_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||
ql_tap_state.state = cur_dance(state);
|
||||
switch (ql_tap_state.state) {
|
||||
case SINGLE_TAP: tap_code(KC_QUOT); break;
|
||||
case SINGLE_HOLD: layer_on(_MY_LAYER); break;
|
||||
case DOUBLE_TAP:
|
||||
if (active_layer==_MY_LAYER) {layer_off(_MY_LAYER);}
|
||||
else layer_on(_MY_LAYER);
|
||||
}
|
||||
}
|
||||
|
||||
void ql_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||
if (ql_tap_state.state==SINGLE_HOLD) {layer_off(_MY_LAYER);}
|
||||
ql_tap_state.state = 0;
|
||||
}
|
||||
|
||||
//Associate our tap dance key with its functionality
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
[QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275)
|
||||
};
|
||||
```
|
||||
|
||||
The is where the real logic of our tap dance key gets worked out. Since `layer_state_set_user()` is called on any layer switch, we use it to update `active_layer`. Our example is assuming that your `keymap.c` includes 4 layers, so adjust the switch statement here to fit your actual number of layers.
|
||||
|
||||
The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
|
||||
|
||||
The `case:SINGLE_TAP` in `ql_finished` is similar to the above examples. The `case:SINGLE_HOLD` works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `case:DOUBLE_TAP` works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
|
||||
|
||||
`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.
|
||||
|
||||
Finally, to get this tap dance key working, be sure to include `TD(QUOT_LAYR)` in your `keymaps[]`.
|
||||
|
||||
@@ -17,6 +17,19 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Shift | Z | X | C | V | B | N | M | , | . | / | Shift |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Ctrl | GUI | Alt | Space | Alt | GUI | L1 | Ctrl |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[0] = LAYOUT_60_ansi(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
@@ -25,6 +38,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
|
||||
),
|
||||
|
||||
/* Function
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | Up | | | | | | | |PrtSc|ScrLk|Pause| |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | |Left |Down |Right| | | | | | Ins |Home |PgUp | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | |VolUp|VolDn|VolMu| | | | | | End |PgDn | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | L2 | | |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[1] = LAYOUT_60_ansi(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
|
||||
@@ -33,6 +59,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
/* RGB
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | Reset |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | BL Tog |BLInc|BLDec|BLStp| | | | | | | | | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | RGB Tog |Mode |Hue I|Sat I|Val I|Spd I|Plain|Breat|Rnbow|Swirl| | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | |RMode|Hue D|Sat D|Val D|Spd D|Snake|Knigh|Xmas |Gradi| | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[2] = LAYOUT_60_ansi(
|
||||
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, RESET,
|
||||
BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
// 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
|
||||
@@ -15,18 +13,18 @@ enum custom_keycodes {
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_60_ansi(
|
||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||
KC_LCTL , KC_LGUI , KC_LALT , KC_SPC , KC_RALT , KC_RGUI , MO(_FN1) , KC_RCTL
|
||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT , KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_60_ansi(
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, \
|
||||
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
||||
BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
KC_GRV, _______, _______, _______, _______, _______, _______, _______
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
|
||||
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_GRV, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
6
keyboards/40percentclub/luddite/keymaps/tzarc/config.h
Normal file
6
keyboards/40percentclub/luddite/keymaps/tzarc/config.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 16
|
||||
|
||||
#define QMK_ESC_OUTPUT F4
|
||||
#define QMK_ESC_INPUT D3
|
||||
#define QMK_LED B0
|
||||
30
keyboards/40percentclub/luddite/keymaps/tzarc/keymap.c
Normal file
30
keyboards/40percentclub/luddite/keymaps/tzarc/keymap.c
Normal file
@@ -0,0 +1,30 @@
|
||||
#include QMK_KEYBOARD_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.
|
||||
#define _BASE 0
|
||||
#define _FN1 1
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_60_ansi(
|
||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT , KC_SPC, KC_RALT, KC_APP, MO(_FN1), KC_RCTL
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_60_ansi(
|
||||
KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_GRV, _______, _______, _______, _______, KC_RGUI, _______, _______
|
||||
)
|
||||
};
|
||||
1
keyboards/40percentclub/luddite/keymaps/tzarc/rules.mk
Normal file
1
keyboards/40percentclub/luddite/keymaps/tzarc/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
BOOTLOADER = qmk-dfu
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT_60_ansi( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K10, K11, K12, K13, K14, K15, \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K10, K11, K12, K13, K14, K15, \
|
||||
K16, K17, K20, K21, K22, K23, K24, K25, K26, K27, K30, K31, K32, K33, \
|
||||
K34, K35, K36, K37, K40, K41, K42, K43, K44, K45, K46, K47, K50, \
|
||||
K51, K52, K53, K54, K55, K56, K57, K60, K61, K62, K63, K64, \
|
||||
@@ -18,4 +18,3 @@
|
||||
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
|
||||
{ K70, K71, K72, K73, K74 }, \
|
||||
}
|
||||
|
||||
|
||||
@@ -48,16 +48,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
// #define RGB_DI_PIN E2
|
||||
// #ifdef RGB_DI_PIN
|
||||
// #define RGBLED_NUM 64
|
||||
// #define RGBLIGHT_HUE_STEP 8
|
||||
// #define RGBLIGHT_SAT_STEP 8
|
||||
// #define RGBLIGHT_VAL_STEP 8
|
||||
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
// /*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
#define RGB_DI_PIN D3
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 64
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 25 /* The maximum brightness level */
|
||||
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
/*== all animations enable ==*/
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
@@ -74,7 +74,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
// /*==== use exp() and sin() ====*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
|
||||
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
|
||||
// #endif
|
||||
#endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
@@ -61,17 +61,17 @@ BOOTLOADER = atmel-dfu
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
|
||||
@@ -36,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
|
||||
@@ -74,8 +74,6 @@ static bool matrix_is_mod = false;
|
||||
* This supports two cascaded hubs and four keyboards
|
||||
*/
|
||||
USB usb_host;
|
||||
USBHub hub1(&usb_host);
|
||||
USBHub hub2(&usb_host);
|
||||
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd1(&usb_host);
|
||||
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd2(&usb_host);
|
||||
HIDBoot<HID_PROTOCOL_KEYBOARD> kbd3(&usb_host);
|
||||
@@ -84,6 +82,8 @@ KBDReportParser kbd_parser1;
|
||||
KBDReportParser kbd_parser2;
|
||||
KBDReportParser kbd_parser3;
|
||||
KBDReportParser kbd_parser4;
|
||||
USBHub hub1(&usb_host);
|
||||
USBHub hub2(&usb_host);
|
||||
|
||||
|
||||
extern "C"
|
||||
@@ -252,10 +252,10 @@ extern "C"
|
||||
|
||||
void led_set(uint8_t usb_led)
|
||||
{
|
||||
kbd1.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
kbd2.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
kbd3.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
kbd4.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
if (kbd1.isReady()) kbd1.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
if (kbd2.isReady()) kbd2.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
if (kbd3.isReady()) kbd3.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
if (kbd4.isReady()) kbd4.SetReport(0, 0, 2, 0, 1, &usb_led);
|
||||
led_set_kb(usb_led);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "bootloader.h"
|
||||
#ifdef PROTOCOL_LUFA
|
||||
#include "lufa.h"
|
||||
#include "split_util.h"
|
||||
@@ -39,70 +38,52 @@ enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
#define KC______ KC_TRNS
|
||||
#define KC_XXXXX KC_NO
|
||||
#define KC_LOWER LOWER
|
||||
#define KC_RAISE RAISE
|
||||
#define KC_RST RESET
|
||||
#define KC_LRST RGBRST
|
||||
#define KC_LTOG RGB_TOG
|
||||
#define KC_LHUI RGB_HUI
|
||||
#define KC_LHUD RGB_HUD
|
||||
#define KC_LSAI RGB_SAI
|
||||
#define KC_LSAD RGB_SAD
|
||||
#define KC_LVAI RGB_VAI
|
||||
#define KC_LVAD RGB_VAD
|
||||
#define KC_LMOD RGB_MOD
|
||||
#define KC_CTLTB CTL_T(KC_TAB)
|
||||
#define KC_GUIEI GUI_T(KC_LANG2)
|
||||
#define KC_ALTKN ALT_T(KC_LANG1)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT_kc( \
|
||||
[_QWERTY] = LAYOUT( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC,\
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_BSPC,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
CTLTB, A, S, D, F, G, H, J, K, L, SCLN, QUOT,\
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT,\
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
|
||||
//`--------------------' `--------------------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_kc( \
|
||||
[_LOWER] = LAYOUT( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,\
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_BSPC,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
CTLTB, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, XXXXX,\
|
||||
KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT,KC_NO,KC_NO,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LSFT, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, XXXXX,\
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
|
||||
//`--------------------' `--------------------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_kc( \
|
||||
[_RAISE] = LAYOUT( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
ESC, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, BSPC,\
|
||||
KC_ESC,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
CTLTB, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, MINS, EQL, LCBR, RCBR, PIPE, GRV,\
|
||||
KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS,KC_EQL,KC_LCBR,KC_RCBR,KC_PIPE,KC_GRV,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LSFT, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, UNDS, PLUS, LBRC, RBRC, BSLS, TILD,\
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS,KC_PLUS,KC_LBRC,KC_RBRC,KC_BSLS,KC_TILD,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
|
||||
//`--------------------' `--------------------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_kc( \
|
||||
[_ADJUST] = LAYOUT( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
RESET,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
RGB_MOD,RGB_HUD,RGB_SAD,RGB_VAD,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
KC_LGUI, LOWER,KC_SPC, KC_ENT, RAISE,KC_RALT \
|
||||
//`--------------------' `--------------------'
|
||||
)
|
||||
};
|
||||
@@ -157,7 +138,7 @@ void matrix_render_user(struct CharacterMatrix *matrix) {
|
||||
// If you want to change the display of OLED, you need to change here
|
||||
matrix_write_ln(matrix, read_layer_state());
|
||||
matrix_write_ln(matrix, read_keylog());
|
||||
matrix_write_ln(matrix, read_keylogs());
|
||||
//matrix_write_ln(matrix, read_keylogs());
|
||||
//matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
|
||||
//matrix_write_ln(matrix, read_host_led_state());
|
||||
//matrix_write_ln(matrix, read_timelog());
|
||||
@@ -195,7 +176,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
persistent_default_layer_set(1UL<<_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
@@ -205,7 +185,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
@@ -215,7 +194,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
@@ -223,7 +201,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RGB_MOD:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
@@ -233,7 +210,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
|
||||
@@ -20,7 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
// #define MASTER_LEFT
|
||||
@@ -36,52 +35,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
// #define TAPPING_TERM 100
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 27
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 27
|
||||
|
||||
# define RGBLIGHT_HUE_STEP 8
|
||||
# define RGBLIGHT_SAT_STEP 8
|
||||
# define RGBLIGHT_VAL_STEP 8
|
||||
# define RGBLIGHT_LIMIT_VAL 100
|
||||
# define RGBLIGHT_HUE_STEP 8
|
||||
# define RGBLIGHT_SAT_STEP 8
|
||||
# define RGBLIGHT_VAL_STEP 5
|
||||
# define RGBLIGHT_LIMIT_VAL 150
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
|
||||
// # define DISABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
# define DISABLE_RGB_MATRIX_BREATHING
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_ALL
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
# define DISABLE_RGB_MATRIX_DUAL_BEACON
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
// # define DISABLE_RGB_MATRIX_RAINDROPS
|
||||
// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
# define DISABLE_RGB_MATRIX_SPLASH
|
||||
// # define DISABLE_RGB_MATRIX_MULTISPLASH
|
||||
# define DISABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
|
||||
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
|
||||
// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
|
||||
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
|
||||
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
|
||||
# define RGB_MATRIX_HUE_STEP 8
|
||||
# define RGB_MATRIX_SAT_STEP 8
|
||||
# define RGB_MATRIX_VAL_STEP 5
|
||||
# define RGB_MATRIX_SPD_STEP 10
|
||||
#endif
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
# define B6_AUDIO
|
||||
# define B6_AUDIO
|
||||
// #define NO_MUSIC_MODE
|
||||
#endif
|
||||
|
||||
@@ -92,4 +70,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
// #define OLED_FONT_WIDTH 5
|
||||
// #define OLED_FONT_HEIGHT 7
|
||||
|
||||
#define OLED_DISABLE_TIMEOUT
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
|
||||
@@ -2,17 +2,16 @@
|
||||
#include "drashna.h"
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
extern uint8_t is_master;
|
||||
extern uint8_t is_master;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
// Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
#endif
|
||||
|
||||
enum crkbd_keycodes {
|
||||
RGBRST = NEW_SAFE_RANGE
|
||||
};
|
||||
enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT_crkbd_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
@@ -103,60 +102,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_______, KC_NUKE, _______, _______, TG_MODS, _______
|
||||
)
|
||||
};
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
setPinOutput(D5);
|
||||
writePinHigh(D5);
|
||||
|
||||
setPinOutput(B0);
|
||||
writePinHigh(B0);
|
||||
#endif
|
||||
}
|
||||
|
||||
// clang-format on
|
||||
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
if (is_master) {
|
||||
return OLED_ROTATION_270;
|
||||
} else {
|
||||
return rotation;
|
||||
}
|
||||
}
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
|
||||
uint16_t oled_timer;
|
||||
|
||||
void render_crkbd_logo(void) {
|
||||
static const char PROGMEM crkbd_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
|
||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
|
||||
0};
|
||||
oled_write_P(crkbd_logo, false);
|
||||
}
|
||||
char keylog_str[5] = {};
|
||||
uint8_t keylogs_str_idx = 0;
|
||||
uint16_t log_timer = 0;
|
||||
|
||||
#define KEYLOG_LEN (int)(32 / OLED_FONT_WIDTH)
|
||||
char keylog_str[KEYLOG_LEN] = {};
|
||||
uint8_t keylogs_str_idx = 0;
|
||||
uint16_t log_timer = 0;
|
||||
|
||||
const char code_to_name[60] = {
|
||||
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
|
||||
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
|
||||
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
||||
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
|
||||
'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
|
||||
'#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
|
||||
const char code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
|
||||
|
||||
void add_keylog(uint16_t keycode) {
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
|
||||
(keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
|
||||
if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
|
||||
keycode = keycode & 0xFF;
|
||||
}
|
||||
|
||||
for (uint8_t i = KEYLOG_LEN - 1; i > 0; i--) {
|
||||
for (uint8_t i = 4; i > 0; i--) {
|
||||
keylog_str[i] = keylog_str[i - 1];
|
||||
}
|
||||
if (keycode < 60) {
|
||||
keylog_str[0] = code_to_name[keycode];
|
||||
}
|
||||
keylog_str[KEYLOG_LEN] = 0;
|
||||
keylog_str[5] = 0;
|
||||
|
||||
log_timer = timer_read();
|
||||
}
|
||||
@@ -167,94 +136,153 @@ void update_log(void) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) { add_keylog(keycode); }
|
||||
if (record->event.pressed) {
|
||||
add_keylog(keycode);
|
||||
oled_timer = timer_read();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void render_status(void) {
|
||||
void render_rgb_status(void) {
|
||||
oled_write_ln("RGB:", false);
|
||||
static char temp[20] = {0};
|
||||
snprintf(temp, sizeof(temp) + 1, "M:%3dH:%3dS:%3dV:%3d", rgb_matrix_config.mode, rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v);
|
||||
oled_write(temp, false);
|
||||
}
|
||||
|
||||
oled_write_P(PSTR("Layer"), false);
|
||||
switch (biton32(layer_state)) {
|
||||
case 0:
|
||||
oled_write_P(PSTR("Base "), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_P(PSTR("Adjst"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_P(PSTR("Unkn "), false);
|
||||
break;
|
||||
}
|
||||
oled_write_P(PSTR("Lyout"), false);
|
||||
void render_status_main(void) {
|
||||
/* Show Keyboard Layout */
|
||||
oled_write("Lyout", false);
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR("QWRTY"), false);
|
||||
oled_write(" QRTY", false);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
oled_write_P(PSTR("COLMK"), false);
|
||||
oled_write(" COLE", false);
|
||||
break;
|
||||
case _DVORAK:
|
||||
oled_write_P(PSTR("DVRAK"), false);
|
||||
oled_write(" DVRK", false);
|
||||
break;
|
||||
case _WORKMAN:
|
||||
oled_write_P(PSTR("WRKMN"), false);
|
||||
oled_write(" WKMN", false);
|
||||
break;
|
||||
case _NORMAN:
|
||||
oled_write_P(PSTR("NORMN"), false);
|
||||
oled_write(" NORM", false);
|
||||
break;
|
||||
case _MALTRON:
|
||||
oled_write_P(PSTR("MLTRN"), false);
|
||||
oled_write(" MLTN", false);
|
||||
break;
|
||||
case _EUCALYN:
|
||||
oled_write_P(PSTR("ECLYN"), false);
|
||||
oled_write(" ECLN", false);
|
||||
break;
|
||||
case _CARPLAX:
|
||||
oled_write_P(PSTR("CRPLX"), false);
|
||||
oled_write(" CRPX", false);
|
||||
break;
|
||||
}
|
||||
|
||||
uint8_t modifiers = get_mods();
|
||||
uint8_t one_shot = get_oneshot_mods();
|
||||
|
||||
oled_write_P(PSTR("Mods:"), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_SHIFT || one_shot & MOD_MASK_SHIFT) ? PSTR(" SFT ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL ) ? PSTR(" CTL ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT ) ? PSTR(" ALT ") : PSTR(" "), false);
|
||||
oled_write_P( (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI ) ? PSTR(" GUI ") : PSTR(" "), false);
|
||||
|
||||
|
||||
oled_write_P(PSTR("BTMGK"), false);
|
||||
|
||||
if (keymap_config.swap_lalt_lgui) {
|
||||
oled_write_P(PSTR(" Mac "), false);
|
||||
} else {
|
||||
oled_write_P(PSTR(" Win "), false);
|
||||
}
|
||||
|
||||
/* Show Lock Status (only work on master side) */
|
||||
uint8_t led_usb_state = host_keyboard_leds();
|
||||
oled_write_P(PSTR("Lock:"), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR(" NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR(" CAPS") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR(" SCRL") : PSTR(" "), false);
|
||||
oled_write("Lock:", false);
|
||||
oled_write(" ", false);
|
||||
oled_write_ln("NUM", led_usb_state & (1 << USB_LED_NUM_LOCK));
|
||||
oled_write(" ", false);
|
||||
oled_write("CAPS", led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
||||
oled_write(" ", false);
|
||||
oled_write("SCRL", led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
||||
|
||||
/* Show Alt-Gui Swap options */
|
||||
oled_write("BTMGK", false);
|
||||
oled_write(" ", false);
|
||||
oled_write_ln("Win", !keymap_config.swap_lalt_lgui);
|
||||
oled_write(" ", false);
|
||||
oled_write_ln("Mac", keymap_config.swap_lalt_lgui);
|
||||
|
||||
# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
/* Show RGB Options */
|
||||
render_rgb_status();
|
||||
# endif
|
||||
|
||||
oled_write(keylog_str, false);
|
||||
}
|
||||
|
||||
void render_status_secondary(void) {
|
||||
/* Show Keyboard Layout */
|
||||
oled_write("Lyout", false);
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
oled_write(" QRTY", false);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
oled_write(" COLE", false);
|
||||
break;
|
||||
case _DVORAK:
|
||||
oled_write(" DVRK", false);
|
||||
break;
|
||||
case _WORKMAN:
|
||||
oled_write(" WKMN", false);
|
||||
break;
|
||||
case _NORMAN:
|
||||
oled_write(" NORM", false);
|
||||
break;
|
||||
case _MALTRON:
|
||||
oled_write(" MLTN", false);
|
||||
break;
|
||||
case _EUCALYN:
|
||||
oled_write(" ECLN", false);
|
||||
break;
|
||||
case _CARPLAX:
|
||||
oled_write(" CRPX", false);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Show Activate layer */
|
||||
oled_write("Layer", false);
|
||||
switch (biton32(layer_state)) {
|
||||
case _RAISE:
|
||||
oled_write("Raise", false);
|
||||
break;
|
||||
case _LOWER:
|
||||
oled_write("Lower", false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write("Adjst", false);
|
||||
break;
|
||||
default:
|
||||
oled_write("Dflt ", false);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Show Mod */
|
||||
uint8_t modifiers = get_mods() | get_oneshot_mods();
|
||||
|
||||
oled_write("Mods:", false);
|
||||
oled_write(" ", false);
|
||||
oled_write_ln("SFT", (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write(" ", false);
|
||||
oled_write_ln("CTL", (modifiers & MOD_MASK_CTRL));
|
||||
oled_write(" ", false);
|
||||
oled_write_ln("ALT", (modifiers & MOD_MASK_ALT));
|
||||
oled_write(" ", false);
|
||||
oled_write_ln("GUI", (modifiers & MOD_MASK_GUI));
|
||||
|
||||
# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
render_rgb_status();
|
||||
# endif
|
||||
|
||||
/* Show logged Keys */
|
||||
oled_write(keylog_str, false);
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (timer_elapsed(oled_timer) > 60000) {
|
||||
oled_off();
|
||||
return;
|
||||
}
|
||||
if (is_master) {
|
||||
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
|
||||
} else {
|
||||
render_crkbd_logo();
|
||||
oled_scroll_left(); // Turns on scrolling
|
||||
render_status_secondary();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,57 +300,82 @@ uint16_t get_tapping_term(uint16_t keycode) {
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
static bool is_suspended;
|
||||
static bool rgb_matrix_enabled;
|
||||
|
||||
void suspend_power_down_keymap(void) {
|
||||
rgb_matrix_set_suspend_state(true);
|
||||
if (!is_suspended) {
|
||||
is_suspended = true;
|
||||
rgb_matrix_enabled = (bool)rgb_matrix_config.enable;
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
}
|
||||
|
||||
void suspend_wakeup_init_keymap(void) {
|
||||
rgb_matrix_set_suspend_state(false);
|
||||
is_suspended = false;
|
||||
if (rgb_matrix_enabled) {
|
||||
rgb_matrix_enable_noeeprom();
|
||||
}
|
||||
}
|
||||
|
||||
void rgb_matrix_indicators_user(void) {
|
||||
if ( userspace_config.rgb_layer_change &&
|
||||
#ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
if (userspace_config.rgb_layer_change &&
|
||||
# ifdef RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
!g_suspend_state &&
|
||||
#endif
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
# endif
|
||||
# if defined(RGBLIGHT_ENABLE)
|
||||
(!rgblight_config.enable && rgb_matrix_config.enable)
|
||||
#else
|
||||
# else
|
||||
rgb_matrix_config.enable
|
||||
#endif
|
||||
# endif
|
||||
) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _MODS:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
case _GAMEPAD:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _DIABLO:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _RAISE:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _LOWER:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _ADJUST:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
default:
|
||||
rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
default: {
|
||||
bool mods_enabled = IS_LAYER_ON(_MODS);
|
||||
switch (biton32(default_layer_state)) {
|
||||
case _QWERTY:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_CYAN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _COLEMAK:
|
||||
rgb_matrix_layer_helper(0xFF, 0x00, 0xFF, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_MAGENTA, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _DVORAK:
|
||||
rgb_matrix_layer_helper(0x00, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_SPRINGGREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _WORKMAN:
|
||||
rgb_matrix_layer_helper(0xD9, 0xA5, 0x21, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_GOLDENROD, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _NORMAN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x7C, 0x4D, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_CORAL, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _MALTRON:
|
||||
rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_YELLOW, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _EUCALYN:
|
||||
rgb_matrix_layer_helper(0xFF, 0x80, 0xBF, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_PINK, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
case _CARPLAX:
|
||||
rgb_matrix_layer_helper(0x00, 0x00, 0xFF, LED_FLAG_UNDERGLOW); break;
|
||||
rgb_matrix_layer_helper(HSV_BLUE, mods_enabled, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
RGB_MATRIX_ENABLE = WS2812
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
@@ -25,7 +24,3 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
BOOTLOADER = qmk-dfu
|
||||
|
||||
OLED_DRIVER_ENABLE = yes
|
||||
|
||||
ifneq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||
RGB_MATRIX_SPLIT_RIGHT=yes
|
||||
endif
|
||||
|
||||
44
keyboards/crkbd/keymaps/foostan/config.h
Normal file
44
keyboards/crkbd/keymaps/foostan/config.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
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
|
||||
|
||||
//#define USE_MATRIX_I2C
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
#define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
// #define EE_HANDS
|
||||
|
||||
#define SSD1306OLED
|
||||
|
||||
#define USE_SERIAL_PD2
|
||||
|
||||
#define TAPPING_FORCE_HOLD
|
||||
#define TAPPING_TERM 100
|
||||
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 27
|
||||
#define RGBLIGHT_LIMIT_VAL 120
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
241
keyboards/crkbd/keymaps/foostan/keymap.c
Normal file
241
keyboards/crkbd/keymaps/foostan/keymap.c
Normal file
@@ -0,0 +1,241 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#ifdef PROTOCOL_LUFA
|
||||
#include "lufa.h"
|
||||
#include "split_util.h"
|
||||
#endif
|
||||
#ifdef SSD1306OLED
|
||||
#include "ssd1306.h"
|
||||
#endif
|
||||
|
||||
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.
|
||||
#define _QWERTY 0
|
||||
#define _LOWER 1
|
||||
#define _RAISE 2
|
||||
#define _ADJUST 3
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
BACKLIT,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
#define KC______ KC_TRNS
|
||||
#define KC_XXXXX KC_NO
|
||||
#define KC_LOWER LOWER
|
||||
#define KC_RAISE RAISE
|
||||
#define KC_RST RESET
|
||||
#define KC_LRST RGBRST
|
||||
#define KC_LTOG RGB_TOG
|
||||
#define KC_LHUI RGB_HUI
|
||||
#define KC_LHUD RGB_HUD
|
||||
#define KC_LSAI RGB_SAI
|
||||
#define KC_LSAD RGB_SAD
|
||||
#define KC_LVAI RGB_VAI
|
||||
#define KC_LVAD RGB_VAD
|
||||
#define KC_LMOD RGB_MOD
|
||||
#define KC_GUIEI GUI_T(KC_LANG2)
|
||||
#define KC_ALTKN ALT_T(KC_LANG1)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT_kc( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
TAB, Q, W, E, R, T, Y, U, I, O, P, BSPC,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ESC,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
//`--------------------' `--------------------'
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_kc( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
TAB, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, BSPC,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LCTL, F1, F2, F3, F4, F5, LEFT, DOWN, UP, RIGHT, XXXXX, XXXXX,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LSFT, F6, F7, F8, F9, F10, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
//`--------------------' `--------------------'
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_kc( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
TAB, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, BSPC,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LCTL, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, MINS, EQL, LCBR, RCBR, PIPE, GRV,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LSFT, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, UNDS, PLUS, LBRC, RBRC, BSLS, TILD,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
//`--------------------' `--------------------'
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_kc( \
|
||||
//,-----------------------------------------. ,-----------------------------------------.
|
||||
RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
//|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
|
||||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN \
|
||||
//`--------------------' `--------------------'
|
||||
)
|
||||
};
|
||||
|
||||
int RGB_current_mode;
|
||||
|
||||
void persistent_default_layer_set(uint16_t default_layer) {
|
||||
eeconfig_update_default_layer(default_layer);
|
||||
default_layer_set(default_layer);
|
||||
}
|
||||
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
#endif
|
||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
iota_gfx_init(!has_usb()); // turns on the display
|
||||
#endif
|
||||
}
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
|
||||
// When add source files to SRC in rules.mk, you can use functions.
|
||||
const char *read_layer_state(void);
|
||||
const char *read_logo(void);
|
||||
void set_keylog(uint16_t keycode, keyrecord_t *record);
|
||||
const char *read_keylog(void);
|
||||
const char *read_keylogs(void);
|
||||
|
||||
// const char *read_mode_icon(bool swap);
|
||||
// const char *read_host_led_state(void);
|
||||
// void set_timelog(void);
|
||||
// const char *read_timelog(void);
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
iota_gfx_task();
|
||||
}
|
||||
|
||||
void matrix_render_user(struct CharacterMatrix *matrix) {
|
||||
if (is_master) {
|
||||
// If you want to change the display of OLED, you need to change here
|
||||
matrix_write_ln(matrix, read_layer_state());
|
||||
matrix_write_ln(matrix, read_keylog());
|
||||
matrix_write_ln(matrix, read_keylogs());
|
||||
//matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
|
||||
//matrix_write_ln(matrix, read_host_led_state());
|
||||
//matrix_write_ln(matrix, read_timelog());
|
||||
} else {
|
||||
matrix_write(matrix, read_logo());
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
|
||||
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||
dest->dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
void iota_gfx_task_user(void) {
|
||||
struct CharacterMatrix matrix;
|
||||
matrix_clear(&matrix);
|
||||
matrix_render_user(&matrix);
|
||||
matrix_update(&display, &matrix);
|
||||
}
|
||||
#endif//SSD1306OLED
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
#ifdef SSD1306OLED
|
||||
set_keylog(keycode, record);
|
||||
#endif
|
||||
// set_timelog();
|
||||
}
|
||||
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
persistent_default_layer_set(1UL<<_QWERTY);
|
||||
}
|
||||
return false;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
case RGB_MOD:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode(RGB_current_mode);
|
||||
rgblight_step();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
10
keyboards/crkbd/keymaps/foostan/rules.mk
Normal file
10
keyboards/crkbd/keymaps/foostan/rules.mk
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
# If you want to change the display of OLED, you need to change here
|
||||
SRC += ./lib/glcdfont.c \
|
||||
./lib/rgb_state_reader.c \
|
||||
./lib/layer_state_reader.c \
|
||||
./lib/logo_reader.c \
|
||||
./lib/keylogger.c \
|
||||
# ./lib/mode_icon_reader.c \
|
||||
# ./lib/host_led_state_reader.c \
|
||||
# ./lib/timelogger.c \
|
||||
@@ -36,6 +36,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
@@ -36,6 +36,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
@@ -38,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "drashna.h"
|
||||
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT_gergo_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
@@ -111,3 +111,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
),
|
||||
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
1
keyboards/hadron/ver3/keymaps/xulkal/config.h
Normal file
1
keyboards/hadron/ver3/keymaps/xulkal/config.h
Normal file
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
73
keyboards/hadron/ver3/keymaps/xulkal/keymap.c
Normal file
73
keyboards/hadron/ver3/keymaps/xulkal/keymap.c
Normal file
@@ -0,0 +1,73 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "xulkal.h"
|
||||
|
||||
#define EXPAND_LAYOUT(...) LAYOUT(__VA_ARGS__)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty Layout
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BkSp |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+--------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | 7 | 8 | 9 |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | S | D | F | G | H | J | K | L | ; | Enter| 4 | 5 | 6 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Sft[ | Z | X | C | V | B | N | M | , | . | / | Sft] | 1 | 2 | 3 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctl- | Win | LOWER| RAISE| Alt | Space| Space| Left | Up | Down | Right| Ctl= | 0 | . | = |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------'
|
||||
*/
|
||||
[_QWERTY] = EXPAND_LAYOUT( \
|
||||
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,\
|
||||
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_P7, KC_P8, KC_P9, \
|
||||
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_P4, KC_P5, KC_P6, \
|
||||
_________________QWERTY_L4_________________, _________________QWERTY_R4_________________, KC_P1, KC_P2, KC_P3, \
|
||||
_________________QWERTY_L5_________________, _________________QWERTY_R5_________________, KC_P0, KC_DOT, KC_EQL \
|
||||
),
|
||||
|
||||
#ifndef GAMELAYER_DISABLE
|
||||
[_GAME] = EXPAND_LAYOUT( \
|
||||
___________________GAME_L1_________________, ___________________GAME_R1_________________, \
|
||||
___________________GAME_L2_________________, ___________________GAME_R2_________________, _______, _______, _______, \
|
||||
___________________GAME_L3_________________, ___________________GAME_R3_________________, _______, _______, _______, \
|
||||
___________________GAME_L4_________________, ___________________GAME_R4_________________, _______, _______, _______, \
|
||||
___________________GAME_L5_________________, ___________________GAME_R5_________________, _______, _______, _______ \
|
||||
),
|
||||
#endif
|
||||
|
||||
[_LOWER] = EXPAND_LAYOUT( \
|
||||
__________________LOWER_L1_________________, __________________LOWER_R1_________________, \
|
||||
__________________LOWER_L2_________________, __________________LOWER_R2_________________, _______, _______, _______, \
|
||||
__________________LOWER_L3_________________, __________________LOWER_R3_________________, _______, _______, _______, \
|
||||
__________________LOWER_L4_________________, __________________LOWER_R4_________________, _______, _______, _______, \
|
||||
__________________LOWER_L5_________________, __________________LOWER_R5_________________, _______, _______, _______ \
|
||||
),
|
||||
|
||||
[_RAISE] = EXPAND_LAYOUT( \
|
||||
__________________RAISE_L1_________________, __________________RAISE_R1_________________, \
|
||||
__________________RAISE_L2_________________, __________________RAISE_R2_________________, _______, _______, _______, \
|
||||
__________________RAISE_L3_________________, __________________RAISE_R3_________________, _______, _______, _______, \
|
||||
__________________RAISE_L4_________________, __________________RAISE_R4_________________, _______, _______, _______, \
|
||||
__________________RAISE_L5_________________, __________________RAISE_R5_________________, _______, _______, _______ \
|
||||
),
|
||||
|
||||
#ifdef TRILAYER_ENABLED
|
||||
[_ADJUST] = EXPAND_LAYOUT( \
|
||||
_________________ADJUST_L1_________________, _________________ADJUST_R1_________________, \
|
||||
_________________ADJUST_L2_________________, _________________ADJUST_R2_________________, _______, _______, _______, \
|
||||
_________________ADJUST_L3_________________, _________________ADJUST_R3_________________, _______, _______, _______, \
|
||||
_________________ADJUST_L4_________________, _________________ADJUST_R4_________________, _______, _______, _______, \
|
||||
_________________ADJUST_L5_________________, _________________ADJUST_R5_________________, _______, _______, _______ \
|
||||
),
|
||||
#endif
|
||||
};
|
||||
|
||||
bool music_mask_user(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case RAISE:
|
||||
case LOWER:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
4
keyboards/hadron/ver3/keymaps/xulkal/rules.mk
Normal file
4
keyboards/hadron/ver3/keymaps/xulkal/rules.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
# Overridden build options
|
||||
|
||||
COMMAND_ENABLE = no
|
||||
ENCODER_ENABLER = no
|
||||
@@ -28,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define MATRIX_ROWS 8
|
||||
#define MATRIX_COLS 16
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLED_NUM 16
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#pragma once
|
||||
|
||||
#define LAYER_FN
|
||||
#define SEND_STRING_CLEAN
|
||||
|
||||
@@ -10,7 +10,7 @@ enum layers_keymap {
|
||||
};
|
||||
|
||||
void eeconfig_init_keymap(void) {
|
||||
rgblight_sethsv(MODERN_DOLCH_RED.h, MODERN_DOLCH_RED.s, MODERN_DOLCH_RED.v);
|
||||
rgblight_sethsv(MODERN_DOLCH_RED);
|
||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||||
}
|
||||
|
||||
@@ -31,6 +31,46 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
}
|
||||
}
|
||||
|
||||
static bool skip_caps = false;
|
||||
|
||||
static void fn_light(uint32_t state) {
|
||||
if (IS_LAYER_ON_STATE(state, L_FN)) {
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
rgblight_sethsv_noeeprom(modern_dolch_red.h, modern_dolch_red.s, rgblight_get_val());
|
||||
skip_caps = true;
|
||||
} else {
|
||||
rgblight_config_t saved = { .raw = eeconfig_read_rgblight() };
|
||||
rgblight_sethsv_noeeprom(saved.hue, saved.sat, saved.val);
|
||||
rgblight_mode_noeeprom(saved.mode);
|
||||
}
|
||||
// caps_light will be called automatically after this
|
||||
}
|
||||
|
||||
static void caps_light(uint8_t usb_led) {
|
||||
if (skip_caps) {
|
||||
skip_caps = false;
|
||||
return; // Skip calls triggered by the Fn layer turning on
|
||||
}
|
||||
if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
rgblight_sethsv_noeeprom(modern_dolch_cyan.h, modern_dolch_cyan.s, rgblight_get_val());
|
||||
} else {
|
||||
fn_light(layer_state); // Caps is off, check if Fn light should be on
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t layer_state_set_keymap(uint32_t state) {
|
||||
static uint32_t prev_state = L_BASE;
|
||||
if (IS_LAYER_ON_STATE(state, L_FN) != IS_LAYER_ON_STATE(prev_state, L_FN)) {
|
||||
fn_light(state); // Fn state changed since last time
|
||||
}
|
||||
return prev_state = state;
|
||||
}
|
||||
|
||||
void led_set_keymap(uint8_t usb_led) {
|
||||
caps_light(usb_led);
|
||||
}
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Base layer
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
BOOTMAGIC_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
UNICODEMAP_ENABLE = no
|
||||
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
SPACE_CADET_ENABLE = no
|
||||
TAP_DANCE_ENABLE = yes
|
||||
UNICODEMAP_ENABLE = no
|
||||
|
||||
233
keyboards/keebio/ergodicity/config.h
Normal file
233
keyboards/keebio/ergodicity/config.h
Normal file
@@ -0,0 +1,233 @@
|
||||
/*
|
||||
Copyright 2019 Keebio
|
||||
|
||||
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
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xCB10
|
||||
#define PRODUCT_ID 0x125F
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Keebio
|
||||
#define PRODUCT Ergodicity
|
||||
#define DESCRIPTION Low-profile ergo keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
#define MATRIX_ROW_PINS { B0, B1, C7, B6, B4 }
|
||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D7, D6, D4, D3, D2, D1, D0, B7, B3 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL*/
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/*
|
||||
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
|
||||
*/
|
||||
// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
|
||||
|
||||
#define BACKLIGHT_PIN B5
|
||||
#define BACKLIGHT_BREATHING
|
||||
#define BACKLIGHT_LEVELS 7
|
||||
|
||||
#define RGB_DI_PIN B2
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLED_NUM 12
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
/*== all animations enable ==*/
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Magic Key Options
|
||||
*
|
||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||
* the keyboard. They are best used in combination with the HID Listen program,
|
||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||
*
|
||||
* The options below allow the magic key functionality to be changed. This is
|
||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||
*
|
||||
*/
|
||||
|
||||
/* key combination for magic key command */
|
||||
/* defined by default; to change, uncomment and set to the combination you want */
|
||||
// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
|
||||
|
||||
/* control how magic key switches layers */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||
|
||||
/* override magic key keymap */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||
//#define MAGIC_KEY_HELP H
|
||||
//#define MAGIC_KEY_HELP_ALT SLASH
|
||||
//#define MAGIC_KEY_DEBUG D
|
||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||
//#define MAGIC_KEY_DEBUG_KBD K
|
||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||
//#define MAGIC_KEY_VERSION V
|
||||
//#define MAGIC_KEY_STATUS S
|
||||
//#define MAGIC_KEY_CONSOLE C
|
||||
//#define MAGIC_KEY_LAYER0 0
|
||||
//#define MAGIC_KEY_LAYER0_ALT GRAVE
|
||||
//#define MAGIC_KEY_LAYER1 1
|
||||
//#define MAGIC_KEY_LAYER2 2
|
||||
//#define MAGIC_KEY_LAYER3 3
|
||||
//#define MAGIC_KEY_LAYER4 4
|
||||
//#define MAGIC_KEY_LAYER5 5
|
||||
//#define MAGIC_KEY_LAYER6 6
|
||||
//#define MAGIC_KEY_LAYER7 7
|
||||
//#define MAGIC_KEY_LAYER8 8
|
||||
//#define MAGIC_KEY_LAYER9 9
|
||||
//#define MAGIC_KEY_BOOTLOADER B
|
||||
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
|
||||
//#define MAGIC_KEY_LOCK CAPS
|
||||
//#define MAGIC_KEY_EEPROM E
|
||||
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
|
||||
//#define MAGIC_KEY_NKRO N
|
||||
//#define MAGIC_KEY_SLEEP_LED Z
|
||||
|
||||
/*
|
||||
* 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 NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
//#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
//#define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
//#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
|
||||
/*
|
||||
* HD44780 LCD Display Configuration
|
||||
*/
|
||||
/*
|
||||
#define LCD_LINES 2 //< number of visible lines of the display
|
||||
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
||||
|
||||
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
||||
|
||||
#if LCD_IO_MODE
|
||||
#define LCD_PORT PORTB //< port for the LCD lines
|
||||
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
||||
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
||||
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
||||
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
||||
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
||||
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
||||
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
||||
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
||||
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
||||
#define LCD_RS_PIN 3 //< pin for RS line
|
||||
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
||||
#define LCD_RW_PIN 2 //< pin for RW line
|
||||
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
||||
#define LCD_E_PIN 1 //< pin for Enable line
|
||||
#endif
|
||||
*/
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
// #define BOOTMAGIC_LITE_ROW 0
|
||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||
51
keyboards/keebio/ergodicity/ergodicity.c
Normal file
51
keyboards/keebio/ergodicity/ergodicity.c
Normal file
@@ -0,0 +1,51 @@
|
||||
/* Copyright 2019 Keebio
|
||||
*
|
||||
* 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 "ergodicity.h"
|
||||
|
||||
// Optional override functions below.
|
||||
// You can leave any or all of these undefined.
|
||||
// These are only required if you want to perform custom actions.
|
||||
|
||||
/*
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
// put your per-action keyboard code here
|
||||
// runs for every action, just before processing by the firmware
|
||||
|
||||
return process_record_user(keycode, record);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
|
||||
led_set_user(usb_led);
|
||||
}
|
||||
|
||||
*/
|
||||
41
keyboards/keebio/ergodicity/ergodicity.h
Normal file
41
keyboards/keebio/ergodicity/ergodicity.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/* Copyright 2019 Keebio
|
||||
*
|
||||
* 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
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
/* This a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
#define LAYOUT( \
|
||||
kA1, kA2, kA3, kE3, kA4, kA5, kA6, kA7, kA8, kA9, kA10, kA11, kA12, kA13, kA15, \
|
||||
kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8, kB9, kB10, kB11, kB12, kB13, kB14, kB15, \
|
||||
kC1, kC2, kC3, kC4, kC5, kC6, kC7, kC8, kC9, kC10, kC11, kC12, kC13, kC15, \
|
||||
kD2, kD3, kD4, kD5, kD6, kD7, kD8, kD9, kD10, kD11, kD12, kD13, kD14, kD15, \
|
||||
kE2, kE4, kE6, kE7, kE9, kE11, kE15 \
|
||||
) \
|
||||
{ \
|
||||
{ kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8, kA9, kA10, kA11, kA12, kA13, KC_NO, kA15 }, \
|
||||
{ kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8, kB9, kB10, kB11, kB12, kB13, kB14, kB15 }, \
|
||||
{ kC1, kC2, kC3, kC4, kC5, kC6, kC7, kC8, kC9, kC10, kC11, kC12, kC13, KC_NO, kC15 }, \
|
||||
{ KC_NO, kD2, kD3, kD4, kD5, kD6, kD7, kD8, kD9, kD10, kD11, kD12, kD13, kD14, kD15 }, \
|
||||
{ KC_NO, kE2, kE3, kE4, KC_NO, kE6, kE7, KC_NO, kE9, KC_NO, kE11, KC_NO, KC_NO, kE15 } \
|
||||
}
|
||||
82
keyboards/keebio/ergodicity/info.json
Normal file
82
keyboards/keebio/ergodicity/info.json
Normal file
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"keyboard_name": "Ergodicity",
|
||||
"url": "https://keeb.io",
|
||||
"maintainer": "Keebio",
|
||||
"width": 19.5,
|
||||
"height": 5.25,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"Esc", "x":0.5, "y":0},
|
||||
{"label":"`", "x":1.75, "y":0.25},
|
||||
{"label":"1", "x":2.75, "y":0.25},
|
||||
{"label":"2", "x":3.75, "y":0},
|
||||
{"label":"3", "x":4.75, "y":0.25},
|
||||
{"label":"4", "x":5.75, "y":0.25},
|
||||
{"label":"5", "x":6.75, "y":0.25},
|
||||
{"label":"6", "x":7.75, "y":0.25},
|
||||
{"label":"7", "x":11, "y":0.25},
|
||||
{"label":"8", "x":12, "y":0.25},
|
||||
{"label":"9", "x":13, "y":0.25},
|
||||
{"label":"0", "x":14, "y":0.25},
|
||||
{"label":"-", "x":15, "y":0},
|
||||
{"label":"=", "x":16, "y":0.25},
|
||||
{"label":"Backspace", "x":17, "y":0.25, "w":2},
|
||||
|
||||
{"label":"PgUp", "x":0.25, "y":1},
|
||||
{"label":"Tab", "x":1.5, "y":1.25, "w":1.5},
|
||||
{"label":"Q", "x":3, "y":1.25},
|
||||
{"label":"W", "x":4.25, "y":1.25},
|
||||
{"label":"E", "x":5.25, "y":1.25},
|
||||
{"label":"R", "x":6.25, "y":1.25},
|
||||
{"label":"T", "x":7.25, "y":1.25},
|
||||
{"label":"Y", "x":10.5, "y":1.25},
|
||||
{"label":"U", "x":11.5, "y":1.25},
|
||||
{"label":"I", "x":12.5, "y":1.25},
|
||||
{"label":"O", "x":13.5, "y":1.25},
|
||||
{"label":"P", "x":14.75, "y":1.25},
|
||||
{"label":"[", "x":15.75, "y":1.25},
|
||||
{"label":"]", "x":16.75, "y":1.25},
|
||||
{"label":"Backslash", "x":17.75, "y":1.25, "w":1.5},
|
||||
|
||||
{"label":"PgDn", "x":0, "y":2},
|
||||
{"label":"Caps Lock", "x":1.25, "y":2.25, "w":2},
|
||||
{"label":"A", "x":3.25, "y":2.25},
|
||||
{"label":"S", "x":4.5, "y":2.25},
|
||||
{"label":"D", "x":5.5, "y":2.25},
|
||||
{"label":"F", "x":6.5, "y":2.25},
|
||||
{"label":"G", "x":7.5, "y":2.25},
|
||||
{"label":"H", "x":10.75, "y":2.25},
|
||||
{"label":"J", "x":11.75, "y":2.25},
|
||||
{"label":"K", "x":12.75, "y":2.25},
|
||||
{"label":"L", "x":13.75, "y":2.25},
|
||||
{"label":";", "x":15.25, "y":2.25},
|
||||
{"label":"'", "x":16.25, "y":2.25},
|
||||
{"label":"Enter", "x":17.25, "y":2.25, "w":2},
|
||||
|
||||
{"label":"Shift", "x":1.25, "y":3.25, "w":2.5},
|
||||
{"label":"Z", "x":3.75, "y":3.25},
|
||||
{"label":"X", "x":5, "y":3.25},
|
||||
{"label":"C", "x":6, "y":3.25},
|
||||
{"label":"V", "x":7, "y":3.25},
|
||||
{"label":"B", "x":8, "y":3.25},
|
||||
{"label":"B", "x":10.25, "y":3.25},
|
||||
{"label":"N", "x":11.25, "y":3.25},
|
||||
{"label":"M", "x":12.25, "y":3.25},
|
||||
{"label":",", "x":13.25, "y":3.25},
|
||||
{"label":".", "x":14.75, "y":3.25},
|
||||
{"label":"/", "x":15.75, "y":3.25},
|
||||
{"label":"Shift", "x":16.75, "y":3.25, "w":1.5},
|
||||
{"label":"Fn", "x":18.25, "y":3.25},
|
||||
|
||||
{"label":"Alt", "x":1.25, "y":4.25, "w":1.5},
|
||||
{"label":"Gui", "x":5, "y":4.25, "w":1.5},
|
||||
{"label":"Space", "x":6.5, "y":4.25, "w":2},
|
||||
{"label":"Menu", "x":8.5, "y":4.25},
|
||||
{"label":"Space", "x":10.25, "y":4.25, "w":2.5},
|
||||
{"label":"Alt", "x":12.75, "y":4.25, "w":1.5},
|
||||
{"label":"Fn", "x":17.75, "y":4.25, "w":1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
19
keyboards/keebio/ergodicity/keymaps/default/config.h
Normal file
19
keyboards/keebio/ergodicity/keymaps/default/config.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/* Copyright 2019 Keebio
|
||||
*
|
||||
* 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
|
||||
73
keyboards/keebio/ergodicity/keymaps/default/keymap.c
Normal file
73
keyboards/keebio/ergodicity/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,73 @@
|
||||
/* Copyright 2019 Keebio
|
||||
*
|
||||
* 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
|
||||
|
||||
// Defines the keycodes used by our macros in process_record_user
|
||||
enum custom_keycodes {
|
||||
QMKBEST = SAFE_RANGE,
|
||||
QMKURL
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||
KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||
KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), \
|
||||
KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL \
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
_______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, \
|
||||
RGB_MOD, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
BL_STEP, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QMKBEST:
|
||||
if (record->event.pressed) {
|
||||
// when keycode QMKBEST is pressed
|
||||
SEND_STRING("QMK is the best thing ever!");
|
||||
} else {
|
||||
// when keycode QMKBEST is released
|
||||
}
|
||||
break;
|
||||
case QMKURL:
|
||||
if (record->event.pressed) {
|
||||
// when keycode QMKURL is pressed
|
||||
SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
|
||||
} else {
|
||||
// when keycode QMKURL is released
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
|
||||
}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
|
||||
}
|
||||
1
keyboards/keebio/ergodicity/keymaps/default/readme.md
Normal file
1
keyboards/keebio/ergodicity/keymaps/default/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# The default keymap for ergodicity
|
||||
15
keyboards/keebio/ergodicity/readme.md
Normal file
15
keyboards/keebio/ergodicity/readme.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Ergodicity
|
||||
|
||||

|
||||
|
||||
A short description of the keyboard/project
|
||||
|
||||
Keyboard Maintainer: [nooges/bakingpy](https://github.com/nooges)
|
||||
Hardware Supported: Ergodicity PCB w/ATmega32u4
|
||||
Hardware Availability: [Keebio](https://keeb.io)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keebio/ergodicity:default:dfu
|
||||
|
||||
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).
|
||||
80
keyboards/keebio/ergodicity/rules.mk
Normal file
80
keyboards/keebio/ergodicity/rules.mk
Normal file
@@ -0,0 +1,80 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
#
|
||||
# This will be an integer division of F_USB below, as it is sourced by
|
||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||
# does not *change* the processor frequency - it should merely be updated to
|
||||
# reflect the processor speed set externally so that the code can use accurate
|
||||
# software delays.
|
||||
F_CPU = 16000000
|
||||
|
||||
|
||||
#
|
||||
# LUFA specific
|
||||
#
|
||||
# Target architecture (see library "Board Types" documentation).
|
||||
ARCH = AVR8
|
||||
|
||||
# Input clock frequency.
|
||||
# This will define a symbol, F_USB, in all source code files equal to the
|
||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||
# at the end, this will be done automatically to create a 32-bit value in your
|
||||
# source code.
|
||||
#
|
||||
# If no clock division is performed on the input clock inside the AVR (via the
|
||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||
F_USB = $(F_CPU)
|
||||
|
||||
# Interrupt driven control endpoint task(+60)
|
||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# atmega32a bootloadHID
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
|
||||
# If you don't know the bootloader type, then you can specify the
|
||||
# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
|
||||
# Teensy halfKay 512
|
||||
# Teensy++ halfKay 1024
|
||||
# Atmel DFU loader 4096
|
||||
# LUFA bootloader 4096
|
||||
# USBaspLoader 2048
|
||||
# OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||
@@ -19,8 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/* Use I2C or Serial, not both */
|
||||
|
||||
// #define USE_SERIAL
|
||||
#define USE_I2C
|
||||
#define USE_SERIAL
|
||||
// #define USE_I2C
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
@@ -29,33 +29,38 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define EE_HANDS
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 18 // Number of LEDs
|
||||
# define RGBLED_SPLIT { 9, 9 }
|
||||
# define RGBLIGHT_HUE_STEP 12
|
||||
# define RGBLIGHT_SAT_STEP 12
|
||||
# define RGBLIGHT_VAL_STEP 12
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
# undef RGBLED_NUM
|
||||
# define RGBLED_NUM 18 // Number of LEDs
|
||||
# undef RGBLED_SPLIT
|
||||
# define RGBLED_SPLIT { 9, 9 }
|
||||
# define RGBLIGHT_HUE_STEP 8
|
||||
# define RGBLIGHT_SAT_STEP 8
|
||||
# define RGBLIGHT_VAL_STEP 8
|
||||
# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||
# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
|
||||
|
||||
# define RGBLIGHT_LIMIT_VAL 225
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
# define RGBLIGHT_LIMIT_VAL 225
|
||||
#endif // RGBLIGHT_ENABLE
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
# define C6_AUDIO
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
# define NO_MUSIC_MODE
|
||||
# endif //RGBLIGHT_ENABLE
|
||||
#endif //AUDIO_ENABLE
|
||||
# define C6_AUDIO
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
# define NO_MUSIC_MODE
|
||||
# endif // RGBLIGHT_ENABLE
|
||||
#endif // AUDIO_ENABLE
|
||||
|
||||
#define QMK_ESC_OUTPUT F6 // usually COL
|
||||
#define QMK_ESC_INPUT D7 // usually ROW
|
||||
#define QMK_LED B0
|
||||
#define QMK_SPEAKER C6
|
||||
#ifndef KEYBOARD_keebio_iris_rev3
|
||||
# define QMK_ESC_OUTPUT F6 // usually COL
|
||||
# define QMK_ESC_INPUT D7 // usually ROW
|
||||
# define QMK_LED B0
|
||||
# define QMK_SPEAKER C6
|
||||
#endif
|
||||
|
||||
#undef PRODUCT
|
||||
#ifdef KEYBOARD_keebio_iris_rev2
|
||||
# define PRODUCT Drashna Hacked Iris Rev.2
|
||||
# define PRODUCT Drashna Hacked Iris Rev .2
|
||||
#elif defined(KEYBOARD_keebio_iris_rev3)
|
||||
# define PRODUCT Drashna Hacked Iris Rev .3
|
||||
#endif
|
||||
|
||||
#define SHFT_LED1 6
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "drashna.h"
|
||||
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT_iris_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
@@ -122,13 +122,12 @@ void matrix_init_keymap(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void keyboard_post_init_keymap(void) {
|
||||
#if BACKLIGHT_ENABLE
|
||||
backlight_enable();
|
||||
backlight_level(5);
|
||||
#ifdef BACKLIGHT_BREATHING
|
||||
breathing_enable();
|
||||
#endif
|
||||
# ifdef BACKLIGHT_BREATHING
|
||||
breathing_enable();
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -14,6 +14,6 @@ SPACE_CADET_ENABLE = no
|
||||
INDICATOR_LIGHTS = no
|
||||
MACROS_ENABLED = no
|
||||
RGBLIGHT_TWINKLE = no
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
RGBLIGHT_STARTUP_ANIMATION = no
|
||||
|
||||
BOOTLOADER = qmk-dfu
|
||||
|
||||
@@ -4,7 +4,7 @@ extern keymap_config_t keymap_config;
|
||||
|
||||
enum layer_names {
|
||||
_QWERTY,
|
||||
_WORKMAN,
|
||||
_COLEMAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
@@ -12,7 +12,7 @@ enum layer_names {
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
WORKMAN,
|
||||
COLEMAK,
|
||||
LOWER,
|
||||
RAISE
|
||||
};
|
||||
@@ -24,8 +24,8 @@ enum custom_keycodes {
|
||||
#define KC_RST RESET
|
||||
#define KC_BL_S BL_STEP
|
||||
|
||||
// left control as a left key too - makes perfect sense
|
||||
#define KC_LECL LCTL_T(KC_LEFT)
|
||||
// left shift as a left key too - makes perfect sense
|
||||
#define KC_LESF LSFT_T(KC_LEFT)
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
@@ -36,23 +36,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
TAB , Q , W , E , R , T , Y , U , I , O , P ,BSLS,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
LSFT, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
|
||||
LCTL, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
LECL, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RGHT,
|
||||
LESF, Z , X , C , V , B ,LBRC, RBRC, N , M ,COMM,DOT ,SLSH,RGHT,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
LGUI,LOWR,ENT , SPC ,RASE,RALT
|
||||
// `----+----+----' `----+----+----'
|
||||
),
|
||||
|
||||
[_WORKMAN] = LAYOUT_kc(
|
||||
[_COLEMAK] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
|
||||
GESC, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,BSPC,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
TAB , Q , D , R , W , B , J , F , U , P ,SCLN,BSLS,
|
||||
TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,BSLS,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
LSFT, A , S , H , T , G , Y , N , E , O ,I ,QUOT,
|
||||
LCTL, A , R , S , T , D , H , N , E , I , O ,QUOT,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
LECL, Z , X , M , C , V ,LBRC, RBRC, K , L ,COMM,DOT ,SLSH,RGHT,
|
||||
LESF, Z , X , C , V , B ,LBRC, RBRC, K , M ,COMM,DOT ,SLSH,RGHT,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
LGUI,LOWR,ENT , SPC ,RASE,RALT
|
||||
// `----+----+----' `----+----+----'
|
||||
@@ -60,13 +60,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_LOWER] = LAYOUT_kc(
|
||||
//,----+----+----+----+----+----. ,----+----+----+----+----+----.
|
||||
TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
|
||||
GRV ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL ,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
, , , , , , , ,BTN1, , , ,
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
, , , , , , MS_L,MS_D,MS_U,MS_R, , ,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
, , , , , UP , , , , , , , , ,
|
||||
, , , , , UP , , ,DOWN, , , , , ,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
, , , , ,
|
||||
// `----+----+----' `----+----+----'
|
||||
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//|----+----+----+----+----+----| |----+----+----+----+----+----|
|
||||
,MPLY,VOLD,MNXT, ,LPRN, RPRN,MINS,EQL , , , ,
|
||||
//|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
|
||||
, , , , , , , ,DOWN, , , , , ,
|
||||
, , , , , , , , , , , , , ,
|
||||
//`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----'
|
||||
, , , , ,
|
||||
// `----+----+----' `----+----+----'
|
||||
@@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
|
||||
_______, _______, _______, _______, _______, QWERTY, WORKMAN, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, _______, _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
@@ -113,9 +113,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
case WORKMAN:
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_WORKMAN);
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
case LOWER:
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||

|
||||
|
||||
- mouse keys enabled
|
||||
- includes a QWERTY and a WORKMAN layout now
|
||||
- includes a QWERTY and a COLEMAK layout now
|
||||
- keys that I need, while removing keys that I don't
|
||||
- more updates with the layout coming soon
|
||||
- the enter needs to move elsewhere, not yet sure where
|
||||
- support for VIA Configurator
|
||||
|
||||
See keymap.c for layouts
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
RGBLIGHT_ENABLE = yes
|
||||
BACKLIGHT_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
|
||||
# VIA Support - Comment these 3 lines out to disable
|
||||
# RAW_ENABLE = yes
|
||||
# DYNAMIC_KEYMAP_ENABLE = yes
|
||||
# SRC += keyboards/wilba_tech/wt_main.c
|
||||
@@ -21,4 +21,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#define USE_I2C
|
||||
#undef RGBLIGHT_ANIMATIONS
|
||||
|
||||
@@ -2,43 +2,90 @@
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
// 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.
|
||||
#define _BASE 0
|
||||
#define _FN1 1
|
||||
#define _L 1
|
||||
#define _R 2
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
};
|
||||
|
||||
#define KC_TL LCTL(KC_PGUP)
|
||||
#define KC_TR LCTL(KC_PGDN)
|
||||
#define KC_TC LCTL(KC_W)
|
||||
#define KC_TRO LCTL(LSFT(KC_T))
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_65(
|
||||
// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,\
|
||||
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_MINS ,KC_EQL ,KC_HOME,
|
||||
// ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
|
||||
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC ,KC_RBRC ,KC_BSLS ,KC_END ,
|
||||
// ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\
|
||||
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_ENT ,KC_PGUP ,
|
||||
// ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_PGDN,\
|
||||
KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT, _______ ,KC_PGDN ,
|
||||
// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
|
||||
KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC ,_______, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
KC_CAPS ,KC_LCTL ,KC_LALT ,MO(_L) ,KC_SPC , KC_SPC ,_______ ,KC_LGUI ,TG(_R) ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
|
||||
// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_65(
|
||||
[_L] = LAYOUT_65(
|
||||
// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, KC_INS, \
|
||||
_______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,_______ ,_______ ,_______ ,_______ ,KC_INS ,
|
||||
// ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,\
|
||||
_______ ,KC_F11 ,KC_F12 ,_______ ,_______ ,_______ , _______ ,KC_MINS ,KC_EQL ,_______ ,_______ ,_______ ,_______ ,_______, KC_PAUS ,
|
||||
// ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
||||
_______ ,_______ ,_______ ,_______ ,_______ ,_______ , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,_______ ,_______ ,_______ ,_______ ,
|
||||
// ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
|
||||
_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,KC_PGDN ,KC_PGUP ,KC_HOME ,KC_END ,_______ ,_______ ,_______ ,
|
||||
// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______
|
||||
// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||
),
|
||||
|
||||
[_R] = LAYOUT_65(
|
||||
// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
|
||||
// ├────────┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┘ ┌───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────┬───┴────────┼────────┤
|
||||
_______ ,KC_TL ,KC_TR ,KC_TC ,KC_TRO ,_______ , _______ ,KC_TL , KC_TR , KC_TC , KC_TRO ,_______ ,_______ ,_______, _______ ,
|
||||
// ├─────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┐ └─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┼────────┤
|
||||
_______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,_______ , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,_______ ,_______ ,_______ ,_______ ,
|
||||
// ├───────────────┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┐ └─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴───────────────────┼────────┤
|
||||
_______ ,KC_PGDN ,KC_PGUP ,KC_HOME ,KC_END ,_______ , _______ ,KC_PGDN ,KC_PGUP ,KC_HOME ,KC_END ,_______ ,_______ ,_______ ,
|
||||
// ├──────────┬──────────┴┬───────┴──┬─────┴─────┬──┴────────┴────────┤ ├────────┴────────┴────┬───┴────┬───┴────┬───┴────┬────────┬────────┼────────┤
|
||||
_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______
|
||||
// └──────────┴───────────┴──────────┴───────────┴────────────────────┘ └──────────────────────┴────────┴────────┴────────┴────────┴────────┴────────┘
|
||||
)
|
||||
};
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
rgblight_sethsv_noeeprom(HSV_BLUE);
|
||||
}
|
||||
|
||||
void update_led(void) {
|
||||
switch (biton32(layer_state)) {
|
||||
case _BASE:
|
||||
rgblight_sethsv_noeeprom(HSV_BLUE);
|
||||
break;
|
||||
case _L:
|
||||
rgblight_sethsv_noeeprom(HSV_CORAL);
|
||||
break;
|
||||
case _R:
|
||||
rgblight_sethsv_noeeprom(HSV_MAGENTA);
|
||||
break;
|
||||
}
|
||||
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
|
||||
rgblight_sethsv_range(HSV_WHITE,0,4);
|
||||
rgblight_sethsv_range(HSV_WHITE,12,16);
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
update_led();
|
||||
return state;
|
||||
}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
update_led();
|
||||
}
|
||||
|
||||
@@ -1,48 +1,64 @@
|
||||
# George Petri's Quefrency 65 layout
|
||||
|
||||
```
|
||||
make keebio/quefrency:georgepetri
|
||||
make keebio/quefrency/rev1:georgepetri
|
||||
```
|
||||
|
||||
Based on the default querty layout with minor tweaks.
|
||||
The position of the arrow keys in a line in the bottom right.
|
||||
The backspace key is 1u and to the left of the delete key.
|
||||
Grave, pause and insert are on the function layer.
|
||||
Querty layout with minor changes and dedicated navigation layer.
|
||||
|
||||
### Base Layer
|
||||
```
|
||||
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
|
||||
│ ESC ││ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 │ │ 7 ││ 8 ││ 9 ││ 0 ││ MINS││ EQL ││ BSPC││ DEL ││ HOME│
|
||||
│ GRV ││ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 │ │ 7 ││ 8 ││ 9 ││ 0 ││ BSPC││ DEL ││ MINS││ EQL ││ HOME│
|
||||
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
|
||||
┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
|
||||
│ TAB ││ Q ││ W ││ E ││ R ││ T │ │ Y ││ U ││ I ││ O ││ P ││ LBRC││ RBRC││ BSLS ││ END │
|
||||
└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
|
||||
┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
|
||||
│ CAPS ││ A ││ S ││ D ││ F ││ G │ │ H ││ J ││ K ││ L ││ SCLN││ QUOT││ ENT ││ PGUP│
|
||||
│ ESC ││ A ││ S ││ D ││ F ││ G │ │ H ││ J ││ K ││ L ││ SCLN││ QUOT││ ENT ││ PGUP│
|
||||
└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
|
||||
┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
|
||||
│ LSFT ││ Z ││ X ││ C ││ V ││ B │ │ N ││ M ││ COMM││ DOT ││ SLSH││ RSFT ││ PGDN│
|
||||
└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
|
||||
┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
|
||||
│ LCTL ││ LGUI ││ LALT ││MO(_FN1)││ SPC │ │ SPC ││ RALT││ RCTL││ LEFT││ DOWN││ UP ││ RGHT│
|
||||
│ CAPS ││ LCTL ││ LALT ││MO(_L) ││ SPC │ │ SPC ││ LGUI││TG(_R)││ LEFT││ DOWN││ UP ││ RGHT│
|
||||
└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
|
||||
```
|
||||
|
||||
### Function
|
||||
### Raise
|
||||
```
|
||||
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
|
||||
│ GRV ││ F1 ││ F2 ││ F3 ││ F4 ││ F5 ││ F6 │ │ F7 ││ F8 ││ F9 ││ F10 ││ F11 ││ F12 ││ BSPC││ DEL ││ INS │
|
||||
│ ││ F1 ││ F2 ││ F3 ││ F4 ││ F5 ││ F6 │ │ F7 ││ F8 ││ F9 ││ F10 ││ F11 ││ F12 ││ BSPC││ DEL ││ INS │
|
||||
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
|
||||
┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
|
||||
│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ ││ PAUS│
|
||||
│ ││ F1 ││ F12 ││ ││ ││ │ │ ││ MINS││ EQL ││ ││ ││ ││ ││ ││ PAUS│
|
||||
└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
|
||||
┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
|
||||
│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ │
|
||||
│ ││ ││ ││ ││ ││ │ │ LEFT││ DOWN││ UP ││ RGHT││ ││ ││ ││ │
|
||||
└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
|
||||
┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
|
||||
│ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
|
||||
│ ││ ││ ││ ││ ││ │ │ ││ PGDN││ PGUP││ HOME││ END ││ ││ │
|
||||
└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
|
||||
┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
|
||||
│ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
|
||||
└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
|
||||
```
|
||||
```
|
||||
|
||||
### Lower
|
||||
```
|
||||
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
|
||||
│ ││ ││ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ ││ ││ │
|
||||
└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
|
||||
┌──────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────────┐┌──────┐
|
||||
│ ││ TAB_L││ TAB_R││ TAB_C││ TAB_R││ │ │ ││ TAB_L││ TAB_R││ TAB_C││ TAB_R││ ││ ││ ││ │
|
||||
└──────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────────┘└──────┘
|
||||
┌────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────┐┌──────┐
|
||||
│ ││ LEFT││ DOWN││ UP ││ RGHT││ │ │ LEFT││ DOWN││ UP ││ RGHT││ ││ ││ ││ │
|
||||
└────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└──────┘└────────────────┘└──────┘
|
||||
┌────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌────────────────────┐┌──────┐
|
||||
│ ││ PGDN││ PGUP││ HOME││ END ││ │ │ ││ PGDN││ PGUP││ HOME││ END ││ ││ │
|
||||
└────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘ └──────┘└──────┘└──────┘└──────┘└──────┘└────────────────────┘└──────┘
|
||||
┌────────┐┌────────┐┌────────┐┌────────┐┌────────────────┐ ┌────────────────────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
|
||||
│ ││ ││ ││ ││ │ │ ││ ││ ││ ││ ││ ││ │
|
||||
└────────┘└────────┘└────────┘└────────┘└────────────────┘ └────────────────────┘└──────┘└──────┘└──────┘└──────┘└──────┘└──────┘
|
||||
```
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
EXTRAKEY_ENABLE = no
|
||||
|
||||
@@ -102,11 +102,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_KEYLIGHT: {
|
||||
case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
|
||||
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
|
||||
23
keyboards/massdrop/ctrl/keymaps/xulkal/config.h
Normal file
23
keyboards/massdrop/ctrl/keymaps/xulkal/config.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
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
|
||||
|
||||
#define RGB_MATRIX_TOG_LAYERS
|
||||
@@ -8,7 +8,6 @@ enum ctrl_keycodes {
|
||||
DBG_MTRX, //DEBUG Toggle Matrix Prints
|
||||
DBG_KBD, //DEBUG Toggle Keyboard Prints
|
||||
DBG_MOU, //DEBUG Toggle Mouse Prints
|
||||
MD_BOOT, //Restart into bootloader after hold timeout
|
||||
};
|
||||
|
||||
#define TG_NKRO MAGIC_TOGGLE_NKRO //Toggle 6KRO / NKRO mode
|
||||
@@ -21,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, TD_BSPC, KC_INS, KC_HOME, KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, TD_DEL, KC_END, KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD_COMM, TD_DOT, KC_SLSH, KC_RSPC, KC_UP, \
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, \
|
||||
KC_LCPO, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LOWER, KC_APP, KC_RCPC, KC_LEFT, KC_DOWN, KC_RGHT \
|
||||
),
|
||||
|
||||
@@ -39,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
|
||||
_______, RGB_RMOD,RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
|
||||
RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, MD_BOOT, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RESET, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
|
||||
RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, GAME, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||
@@ -62,8 +61,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
|
||||
{
|
||||
static uint16_t reset_timer;
|
||||
|
||||
switch (keycode) {
|
||||
case U_T_AUTO:
|
||||
if (record->event.pressed && MODS_SHIFT && MODS_CTRL)
|
||||
@@ -89,12 +86,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
|
||||
if (record->event.pressed)
|
||||
TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
|
||||
return false;
|
||||
case MD_BOOT:
|
||||
if (record->event.pressed)
|
||||
reset_timer = timer_read() + 500;
|
||||
else if (timer_expired(reset_timer))
|
||||
reset_keyboard();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
11
keyboards/mechmini/v2/keymaps/wsturgiss/config.h
Executable file
11
keyboards/mechmini/v2/keymaps/wsturgiss/config.h
Executable file
@@ -0,0 +1,11 @@
|
||||
/* tapdance */
|
||||
#define TAPPING_TERM 180
|
||||
|
||||
/* space cadet stuff */
|
||||
#define LSPO_KEY KC_9
|
||||
#define RSPC_KEY KC_0
|
||||
#define DISABLE_SPACE_CADET_ROLLOVER
|
||||
|
||||
/* leader stuff */
|
||||
#define LEADER_TIMEOUT 400
|
||||
#define LEADER_PER_KEY_TIMING 300
|
||||
106
keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c
Normal file
106
keyboards/mechmini/v2/keymaps/wsturgiss/keymap.c
Normal file
@@ -0,0 +1,106 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define base 0
|
||||
#define raise 1
|
||||
#define lower 2
|
||||
|
||||
//Tap Dance Declarations
|
||||
enum {
|
||||
TD_SEMI_QUOT = 0,
|
||||
TD_COMM_MINUS = 1,
|
||||
TD_DOT_EQUAL = 2,
|
||||
TD_SLASH_BACKSLASH = 3
|
||||
};
|
||||
|
||||
//Tap Dance Definitions
|
||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||
//Tap once for ;, twice for ' -not using this currently
|
||||
[TD_SEMI_QUOT] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_QUOT),
|
||||
//Tap once for , twice for -
|
||||
[TD_COMM_MINUS] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_MINUS),
|
||||
//Tap once for . twice for =
|
||||
[TD_DOT_EQUAL] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_EQUAL),
|
||||
//Tap once for / twice for '\'
|
||||
[TD_SLASH_BACKSLASH] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS)
|
||||
};
|
||||
|
||||
#define CTRL_ESC CTL_T(KC_ESC)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[base] = LAYOUT_2u_space_ortho(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
CTRL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD(1), TD(2), TD(3), KC_RSPC,
|
||||
KC_LCTL, KC_LEAD, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_VOLD, KC_MPLY, KC_VOLU, KC_GRV),
|
||||
|
||||
[raise] = LAYOUT_2u_space_ortho(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT, _______,
|
||||
_______, KC_HOME, KC_END, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MPRV, _______, KC_MNXT, EEP_RST),
|
||||
|
||||
[lower] = LAYOUT_2u_space_ortho(
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, KC_4, KC_5, KC_6, KC_KP_PLUS, _______,
|
||||
_______, RGB_SAI, RGB_SAD, RGB_HUI, RGB_HUD, _______, _______, KC_1, KC_2, KC_3, KC_KP_MINUS, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______)
|
||||
|
||||
|
||||
};
|
||||
|
||||
//Leader maps
|
||||
|
||||
|
||||
LEADER_EXTERNS();
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
LEADER_DICTIONARY() {
|
||||
leading = false;
|
||||
leader_end();
|
||||
|
||||
SEQ_ONE_KEY(KC_F) {
|
||||
// Anything you can do in a macro.
|
||||
SEND_STRING("QMK is awesome.");
|
||||
}
|
||||
//tableflip (LEADER - TF)
|
||||
SEQ_TWO_KEYS(KC_T, KC_F) {
|
||||
set_unicode_input_mode(UC_OSX);
|
||||
send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
|
||||
}
|
||||
//screencap (LEADER - SC)
|
||||
SEQ_TWO_KEYS(KC_S, KC_C) {
|
||||
SEND_STRING(SS_LGUI(SS_LSFT(SS_TAP(X_4))));
|
||||
}
|
||||
//screencap (LEADER - TM)
|
||||
SEQ_TWO_KEYS(KC_T, KC_M) {
|
||||
set_unicode_input_mode(UC_OSX);
|
||||
send_unicode_hex_string("2122");
|
||||
}
|
||||
/*
|
||||
SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
|
||||
SEND_STRING("https://start.duckduckgo.com"SS_TAP(X_ENTER));
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
//change colors and rgb modes on layer change
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
switch (biton32(state)) {
|
||||
case raise:
|
||||
rgblight_mode_noeeprom(1);
|
||||
rgblight_setrgb(0xc7, 0x00, 0xf4);
|
||||
break;
|
||||
case lower:
|
||||
rgblight_mode_noeeprom(1);
|
||||
rgblight_setrgb(0x00, 0xa3, 0x0d);
|
||||
break;
|
||||
default: // for any other layers, or the default layer
|
||||
rgblight_mode_noeeprom(5);
|
||||
rgblight_setrgb(0xFF, 0xB6, 0x00);
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
};
|
||||
|
||||
11
keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk
Executable file
11
keyboards/mechmini/v2/keymaps/wsturgiss/rules.mk
Executable file
@@ -0,0 +1,11 @@
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
AUDIO_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
UNICODE_ENABLE = yes
|
||||
LEADER_ENABLE = yes
|
||||
@@ -1,7 +1,7 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "konstantin.h"
|
||||
|
||||
static const HSV *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW };
|
||||
static const HSV *colors[] = { &godspeed_blue, &godspeed_yellow };
|
||||
static const size_t cnum = sizeof colors / sizeof *colors;
|
||||
static size_t cidx = 0;
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
BOOTMAGIC_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
UNICODEMAP_ENABLE = yes
|
||||
|
||||
BACKLIGHT_ENABLE = no
|
||||
BACKLIGHT_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = no
|
||||
COMMAND_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
EXTRAKEY_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
SPACE_CADET_ENABLE = no
|
||||
TAP_DANCE_ENABLE = yes
|
||||
UNICODEMAP_ENABLE = yes
|
||||
|
||||
@@ -30,7 +30,7 @@ uint8_t last_led;
|
||||
uint8_t last_osm;
|
||||
#endif
|
||||
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT_orthodox_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
@@ -121,6 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
)
|
||||
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
void matrix_init_keymap(void) {
|
||||
#ifndef CONVERT_TO_PROTON_C
|
||||
|
||||
@@ -36,6 +36,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
@@ -138,3 +138,14 @@
|
||||
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
|
||||
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
|
||||
#define TAPPING_TOGGLE 1
|
||||
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#define MOUSEKEY_TIME_TO_MAX 60
|
||||
#define MOUSEKEY_MAX_SPEED 7
|
||||
#define MOUSEKEY_WHEEL_DELAY 0
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
# Jarred's Planck Layout
|
||||
|
||||
Check out [user space readme](../../../../users/jarred/readme.md) for more info
|
||||
|
||||
# Build
|
||||
|
||||
```
|
||||
make planck/rev4:jarred:dfu
|
||||
```
|
||||
162
keyboards/planck/keymaps/skank/keymap.c
Normal file
162
keyboards/planck/keymaps/skank/keymap.c
Normal file
@@ -0,0 +1,162 @@
|
||||
/* Copyright 2019 Khader Syed
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum skank_layers {
|
||||
_QWERTY,
|
||||
_COLEMAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum skank_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Ctrl | Alt | GUI | |Lower | Enter|Space |Raise | / | Left | Down |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_ortho_4x12(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_GESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_BSLS,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_ENT, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
/* Colemak
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | |Lower | Enter|Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT_ortho_4x12(
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||
KC_GESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_BSLS,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_ENT, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + |Pg Up |Pg Dn | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT_ortho_4x12(
|
||||
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_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_PGUP, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | { | } | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 | _ | + | Home | End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT_ortho_4x12(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_UNDS, KC_PLUS, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | | |Aud on|Audoff|Qwerty|Colemk| | | | | Reset|
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, AU_ON, AU_OFF, QWERTY, COLEMAK, _______, _______, _______, _______, RESET,
|
||||
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
8
keyboards/planck/keymaps/skank/readme.md
Normal file
8
keyboards/planck/keymaps/skank/readme.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# My planck layout
|
||||
|
||||
These are my changes:
|
||||
|
||||
- add a colemak layout
|
||||
- keep it clean
|
||||
- add option to enable mouse keys
|
||||
- and just enable some sound
|
||||
2
keyboards/planck/keymaps/skank/rules.mk
Normal file
2
keyboards/planck/keymaps/skank/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
|
||||
83
keyboards/projectkb/alice/info.json
Normal file
83
keyboards/projectkb/alice/info.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"keyboard_name": "Alice",
|
||||
"url": "https://store.projectkeyboard.com/",
|
||||
"maintainer": "qmk",
|
||||
"width": 19.75,
|
||||
"height": 5.25,
|
||||
"layouts": {
|
||||
"LAYOUT_default": {
|
||||
"layout": [
|
||||
{"label":"Esc", "x":0.5, "y":0},
|
||||
{"label":"`", "x":1.75, "y":0.25},
|
||||
{"label":"1", "x":2.75, "y":0.25},
|
||||
{"label":"2", "x":3.75, "y":0},
|
||||
{"label":"3", "x":4.75, "y":0.25},
|
||||
{"label":"4", "x":5.75, "y":0.25},
|
||||
{"label":"5", "x":6.75, "y":0.25},
|
||||
{"label":"6", "x":7.75, "y":0.25},
|
||||
{"label":"7", "x":11, "y":0.25},
|
||||
{"label":"8", "x":12, "y":0.25},
|
||||
{"label":"9", "x":13, "y":0.25},
|
||||
{"label":"0", "x":14, "y":0.25},
|
||||
{"label":"-", "x":15, "y":0},
|
||||
{"label":"=", "x":16, "y":0.25},
|
||||
{"label":"Del", "x":17, "y":0.25},
|
||||
{"label":"Backspace", "x":18, "y":0.25},
|
||||
|
||||
{"label":"PgUp", "x":0.25, "y":1},
|
||||
{"label":"Tab", "x":1.5, "y":1.25, "w":1.5},
|
||||
{"label":"Q", "x":3, "y":1.25},
|
||||
{"label":"W", "x":4.25, "y":1.25},
|
||||
{"label":"E", "x":5.25, "y":1.25},
|
||||
{"label":"R", "x":6.25, "y":1.25},
|
||||
{"label":"T", "x":7.25, "y":1.25},
|
||||
{"label":"Y", "x":10.5, "y":1.25},
|
||||
{"label":"U", "x":11.5, "y":1.25},
|
||||
{"label":"I", "x":12.5, "y":1.25},
|
||||
{"label":"O", "x":13.5, "y":1.25},
|
||||
{"label":"P", "x":14.75, "y":1.25},
|
||||
{"label":"{", "x":15.75, "y":1.25},
|
||||
{"label":"}", "x":16.75, "y":1.25},
|
||||
{"label":"|", "x":17.75, "y":1.25, "w":1.5},
|
||||
|
||||
{"label":"PgDn", "x":0, "y":2},
|
||||
{"label":"Caps Lock", "x":1.5, "y":2.25, "w":1.75},
|
||||
{"label":"A", "x":3.25, "y":2.25},
|
||||
{"label":"S", "x":4.5, "y":2.25},
|
||||
{"label":"D", "x":5.5, "y":2.25},
|
||||
{"label":"F", "x":6.5, "y":2.25},
|
||||
{"label":"G", "x":7.5, "y":2.25},
|
||||
{"label":"H", "x":10.75, "y":2.25},
|
||||
{"label":"J", "x":11.75, "y":2.25},
|
||||
{"label":"K", "x":12.75, "y":2.25},
|
||||
{"label":"L", "x":13.75, "y":2.25},
|
||||
{"label":":", "x":15.25, "y":2.25},
|
||||
{"label":"\"", "x":16.25, "y":2.25},
|
||||
{"label":"Enter", "x":17.25, "y":2.25, "w":2.25},
|
||||
|
||||
{"label":"Shift", "x":1.5, "y":3.25, "w":2.25},
|
||||
{"label":"Z", "x":3.75, "y":3.25},
|
||||
{"label":"X", "x":5, "y":3.25},
|
||||
{"label":"C", "x":6, "y":3.25},
|
||||
{"label":"V", "x":7, "y":3.25},
|
||||
{"label":"B", "x":8, "y":3.25},
|
||||
{"label":"Fn", "x":10.25, "y":3.25},
|
||||
{"label":"N", "x":11.25, "y":3.25},
|
||||
{"label":"M", "x":12.25, "y":3.25},
|
||||
{"label":"<", "x":13.25, "y":3.25},
|
||||
{"label":">", "x":15, "y":3.25},
|
||||
{"label":"?", "x":16, "y":3.25},
|
||||
{"label":"Shift", "x":17, "y":3.25, "w":1.75},
|
||||
{"label":"Fn", "x":18.75, "y":3.25},
|
||||
|
||||
{"label":"Ctrl", "x":1.5, "y":4.25, "w":1.5},
|
||||
{"label":"Alt", "x":5, "y":4.25, "w":1.5},
|
||||
{"label":"Space", "x":6.5, "y":4.25, "w":2},
|
||||
{"label":"Menu", "x":8.5, "y":4.25},
|
||||
{"label":"Space", "x":10.25, "y":4.25, "w":2.25},
|
||||
{"label":"Alt", "x":12.5, "y":4.25, "w":1.5},
|
||||
{"label":"Ctrl", "x":18, "y":4.25, "w":1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -168,11 +168,11 @@ static const unsigned char font[] PROGMEM = {
|
||||
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
|
||||
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
|
||||
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
|
||||
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
|
||||
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
|
||||
0x00, 0x00, 0x00, 0xE0, 0xEC, 0xDF,
|
||||
0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xF0, 0xF4, 0xEC, 0xDE,
|
||||
0xDE, 0xBE, 0x3E, 0x3E, 0x3F, 0x3F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F,
|
||||
0x3F, 0x3E, 0x3E, 0xBE, 0xDE, 0xDE,
|
||||
0xEC, 0xF4, 0xF0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7F, 0x80, 0x80,
|
||||
0x80, 0x70, 0x0F, 0x00, 0x00, 0x80,
|
||||
0x7F, 0x00, 0x00, 0x7F, 0x80, 0x80,
|
||||
@@ -200,11 +200,11 @@ static const unsigned char font[] PROGMEM = {
|
||||
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
|
||||
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
|
||||
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
|
||||
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
|
||||
0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
|
||||
0x40, 0x7C, 0x3F, 0x3F, 0x23, 0x01,
|
||||
0x23, 0x3F, 0x37, 0x6C, 0x40, 0x00,
|
||||
0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF,
|
||||
0xFF, 0xFF, 0xFC, 0xE0, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||
0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -233,8 +233,8 @@ static const unsigned char font[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F,
|
||||
0xFE, 0xFC, 0x00, 0xFC, 0xFE, 0x7F,
|
||||
0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
@@ -35,16 +35,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define MATRIX_COLS 7
|
||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
|
||||
|
||||
// Encoder support
|
||||
#define ENCODERS_PAD_A { D2 }
|
||||
#define ENCODERS_PAD_B { D6 }
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* ws2812 RGB LED */
|
||||
#define RGB_DI_PIN B3
|
||||
|
||||
#ifdef IOS_DEVICE_ENABLE
|
||||
#define RGBLIGHT_LIMIT_VAL 40
|
||||
#elif RGBLIGHT_FULL_POWER
|
||||
|
||||
@@ -1,38 +1,15 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
# Overridden build options from rev1
|
||||
|
||||
# RGB Options
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
|
||||
# Misc
|
||||
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
|
||||
|
||||
|
||||
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = yes # LED animations
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
|
||||
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
|
||||
# Do not edit past here
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||
|
||||
@@ -1,38 +1,14 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
# Overridden build options from rev1
|
||||
|
||||
# Debug Options
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
|
||||
|
||||
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = yes # LED animations
|
||||
LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
|
||||
OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
|
||||
# Do not edit past here
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
|
||||
@@ -5,13 +5,6 @@
|
||||
#include "split_util.h"
|
||||
#endif
|
||||
|
||||
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
|
||||
@@ -23,22 +16,18 @@ enum layer_number {
|
||||
_ADJ
|
||||
};
|
||||
|
||||
// Keycode defines for layers
|
||||
#define QWERTY DF(_QWERTY)
|
||||
#define COLEMAK DF(_COLEMAK)
|
||||
#define FN MO(_FN)
|
||||
#define ADJ MO(_ADJ)
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
FN,
|
||||
ADJ,
|
||||
BACKLIT,
|
||||
RGBRST
|
||||
RGBRST = SAFE_RANGE,
|
||||
RGB_MENU
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define FN_ESC LT(_FN, KC_ESC)
|
||||
#define FN_ESC LT(_FN, KC_ESC)
|
||||
#define FN_CAPS LT(_FN, KC_CAPS)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
@@ -50,9 +39,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | S | D | F | G | ( | | ) | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shift |
|
||||
* |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
|
||||
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||
* | Space| DEL | | Enter| Space|
|
||||
* `-------------' `-------------'
|
||||
@@ -74,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | R | S | T | G | ( | | ) | K | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Shift |
|
||||
* |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||
@@ -83,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT( \
|
||||
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
|
||||
FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_LPRN, KC_RPRN, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LCBR, KC_RCBR, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
|
||||
FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LPRN, KC_RPRN, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, \
|
||||
KC_SPC, KC_DEL, KC_ENT, KC_SPC \
|
||||
),
|
||||
@@ -107,8 +96,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
*/
|
||||
[_FN] = LAYOUT( \
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
|
||||
_______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
|
||||
_______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_SLCK, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_NLCK, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, \
|
||||
_______, _______, _______, _______ \
|
||||
@@ -134,120 +123,184 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
|
||||
_______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
|
||||
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
|
||||
_______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, RGB_SPI, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
|
||||
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
|
||||
_______, _______, _______, _______ \
|
||||
)
|
||||
};
|
||||
|
||||
// For RGBRST Keycode
|
||||
#if defined(RGB_MATRIX_ENABLE)
|
||||
void rgb_matrix_increase_flags(void)
|
||||
{
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
|
||||
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_UNDERGLOW: {
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
default: {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_enable_noeeprom();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void rgb_matrix_decrease_flags(void)
|
||||
{
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case LED_FLAG_UNDERGLOW: {
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
}
|
||||
break;
|
||||
default: {
|
||||
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||
rgb_matrix_enable_noeeprom();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// define variables for reactive RGB
|
||||
bool TOG_STATUS = false;
|
||||
int RGB_current_mode;
|
||||
#ifdef RGB_OLED_MENU
|
||||
uint8_t rgb_encoder_state = 4;
|
||||
|
||||
typedef void (*rgb_matrix_f)(void);
|
||||
|
||||
const rgb_matrix_f rgb_matrix_functions[6][2] = {
|
||||
{ rgb_matrix_increase_hue, rgb_matrix_decrease_hue },
|
||||
{ rgb_matrix_increase_sat, rgb_matrix_decrease_sat },
|
||||
{ rgb_matrix_increase_val, rgb_matrix_decrease_val },
|
||||
{ rgb_matrix_increase_speed, rgb_matrix_decrease_speed },
|
||||
{ rgb_matrix_step, rgb_matrix_step_reverse },
|
||||
{ rgb_matrix_increase_flags, rgb_matrix_decrease_flags }
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
|
||||
static pin_t encoders_pad_a[] = ENCODERS_PAD_A;
|
||||
#define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a)/sizeof(pin_t))
|
||||
|
||||
const uint16_t PROGMEM encoders[][NUMBER_OF_ENCODERS * 2][2] = {
|
||||
[_QWERTY] = ENCODER_LAYOUT( \
|
||||
KC_VOLU, KC_VOLD,
|
||||
KC_VOLU, KC_VOLD
|
||||
),
|
||||
[_COLEMAK] = ENCODER_LAYOUT( \
|
||||
_______, _______,
|
||||
_______, _______
|
||||
),
|
||||
[_FN] = ENCODER_LAYOUT( \
|
||||
_______, _______,
|
||||
_______, _______
|
||||
),
|
||||
[_ADJ] = ENCODER_LAYOUT( \
|
||||
_______, _______,
|
||||
_______, _______
|
||||
)
|
||||
};
|
||||
|
||||
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* First encoder */
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
} else if (index == 1) { /* Second encoder*/
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
if (!is_keyboard_master())
|
||||
return;
|
||||
|
||||
#ifdef RGB_OLED_MENU
|
||||
if (index == RGB_OLED_MENU) {
|
||||
(*rgb_matrix_functions[rgb_encoder_state][clockwise])();
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
uint8_t layer = biton32(layer_state);
|
||||
uint16_t keycode = encoders[layer][index][clockwise];
|
||||
while (keycode == KC_TRANSPARENT && layer > 0)
|
||||
{
|
||||
layer--;
|
||||
if ((layer_state & (1 << layer)) != 0)
|
||||
keycode = encoders[layer][index][clockwise];
|
||||
}
|
||||
if (keycode != KC_TRANSPARENT)
|
||||
tap_code16(keycode);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// Setting ADJ layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode);
|
||||
#endif
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
//uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
|
||||
|
||||
static uint16_t reset_timer;
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case COLEMAK:
|
||||
if(record->event.pressed) {
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case FN:
|
||||
if (record->event.pressed) {
|
||||
//not sure how to have keyboard check mode and set it to a variable, so my work around
|
||||
//uses another variable that would be set to true after the first time a reactive key is pressed.
|
||||
if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
||||
} else {
|
||||
TOG_STATUS = !TOG_STATUS;
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(15);
|
||||
#endif
|
||||
}
|
||||
layer_on(_FN);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
layer_off(_FN);
|
||||
TOG_STATUS = false;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJ:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJ);
|
||||
} else {
|
||||
layer_off(_ADJ);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
//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 RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
#elif defined(RGB_MATRIX_ENABLE)
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgb_matrix_default();
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
case RESET:
|
||||
if (record->event.pressed) {
|
||||
reset_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(reset_timer) >= 500) {
|
||||
reset_keyboard();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
#if defined(RGB_MATRIX_ENABLE) && defined(KEYBOARD_rgbkb_sol_rev2)
|
||||
case RGB_TOG:
|
||||
if (record->event.pressed) {
|
||||
rgb_matrix_increase_flags();
|
||||
}
|
||||
return false;
|
||||
#endif
|
||||
case RGB_MENU:
|
||||
#ifdef RGB_OLED_MENU
|
||||
if (record->event.pressed) {
|
||||
if (get_mods() & MOD_MASK_SHIFT) {
|
||||
rgb_encoder_state = (rgb_encoder_state - 1);
|
||||
if (rgb_encoder_state > 5) {
|
||||
rgb_encoder_state = 5;
|
||||
}
|
||||
} else {
|
||||
rgb_encoder_state = (rgb_encoder_state + 1) % 6;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
RGB_current_mode = rgblight_config.mode;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// OLED Driver Logic
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
if (!has_usb())
|
||||
return OLED_ROTATION_180; // flip 180 for offhand
|
||||
if (is_keyboard_master())
|
||||
return OLED_ROTATION_90;
|
||||
return rotation;
|
||||
}
|
||||
|
||||
@@ -255,62 +308,64 @@ static void render_logo(void) {
|
||||
static const char PROGMEM sol_logo[] = {
|
||||
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
|
||||
|
||||
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
|
||||
};
|
||||
oled_write_P(sol_logo, false);
|
||||
}
|
||||
|
||||
//assign the right code to your layers for OLED display
|
||||
#define L_BASE 0
|
||||
#define L_FN (1<<_FN)
|
||||
#define L_ADJ (1<<_ADJ)
|
||||
#define L_ADJ_TRI (L_ADJ|L_FN)
|
||||
|
||||
static void render_status(void) {
|
||||
// Render to mode icon
|
||||
static const char PROGMEM mode_logo[4][4] = {
|
||||
{0x95,0x96,0x0a,0},
|
||||
{0xb5,0xb6,0x0a,0},
|
||||
{0x97,0x98,0x0a,0},
|
||||
{0xb7,0xb8,0x0a,0} };
|
||||
static const char PROGMEM sol_icon[] = {
|
||||
0x9b,0x9c,0x9d,0x9e,0x9f,
|
||||
0xbb,0xbc,0xbd,0xbe,0xbf,
|
||||
0xdb,0xdc,0xdd,0xde,0xdf,0
|
||||
};
|
||||
oled_write_P(sol_icon, false);
|
||||
|
||||
if (keymap_config.swap_lalt_lgui != false) {
|
||||
oled_write_P(mode_logo[0], false);
|
||||
oled_write_P(mode_logo[1], false);
|
||||
} else {
|
||||
oled_write_P(mode_logo[2], false);
|
||||
oled_write_P(mode_logo[3], false);
|
||||
}
|
||||
|
||||
// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
switch (layer_state) {
|
||||
case L_BASE:
|
||||
oled_write_P(PSTR("Default\n"), false);
|
||||
// Define layers here
|
||||
oled_write_P(PSTR("Layer"), false);
|
||||
uint8_t layer = layer_state ? biton(layer_state) : biton32(default_layer_state);
|
||||
switch (layer) {
|
||||
case _QWERTY:
|
||||
oled_write_P(PSTR("BASE "), false);
|
||||
break;
|
||||
case L_FN:
|
||||
oled_write_P(PSTR("FN \n"), false);
|
||||
case _COLEMAK:
|
||||
oled_write_P(PSTR("CLMK "), false);
|
||||
break;
|
||||
case L_ADJ:
|
||||
case L_ADJ_TRI:
|
||||
oled_write_P(PSTR("ADJ \n"), false);
|
||||
case _FN:
|
||||
oled_write_P(PSTR("FN "), false);
|
||||
break;
|
||||
case _ADJ:
|
||||
oled_write_P(PSTR("ADJ "), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_P(PSTR("UNDEF \n"), false);
|
||||
oled_write_P(PSTR("UNDEF"), false);
|
||||
}
|
||||
|
||||
// Host Keyboard LED Status
|
||||
uint8_t led_usb_state = host_keyboard_leds();
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR("NUMLOCK ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPS ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR("SCLK ") : PSTR(" "), false);
|
||||
uint8_t led_state = host_keyboard_leds();
|
||||
oled_write_P(PSTR("-----"), false);
|
||||
oled_write_P(IS_LED_ON(led_state, USB_LED_NUM_LOCK) ? PSTR("NUMLK") : PSTR(" "), false);
|
||||
oled_write_P(IS_LED_ON(led_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLK") : PSTR(" "), false);
|
||||
oled_write_P(IS_LED_ON(led_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLK") : PSTR(" "), false);
|
||||
|
||||
#ifdef RGB_OLED_MENU
|
||||
static char buffer[31] = { 0 };
|
||||
snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d e%3d ", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v, rgb_matrix_config.speed, rgb_matrix_config.mode, rgb_matrix_get_flags());
|
||||
buffer[4 + rgb_encoder_state * 5] = '<';
|
||||
|
||||
oled_write_P(PSTR("-----"), false);
|
||||
oled_write(buffer, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void oled_task_user(void) {
|
||||
if (is_keyboard_master())
|
||||
if (is_keyboard_master()) {
|
||||
render_status();
|
||||
else
|
||||
} else {
|
||||
render_logo();
|
||||
oled_scroll_left();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | S | D | F | G | ( | | ) | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shift |
|
||||
* |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||
@@ -27,7 +27,7 @@
|
||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||
* |FN(CAPS)| A | R | S | T | G | ( | | ) | K | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Shift |
|
||||
* |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||
|
||||
@@ -1,38 +1,16 @@
|
||||
# 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
|
||||
# Default keymap does not have any overridden options from the rev1 / rev2 rules.mk files.
|
||||
# Example:
|
||||
# if you wanted to disable EXTRAKEY_ENABLE, you would copy the line from the rev1/rules.mk file
|
||||
# and paste it in to this file, changing the yes to no. Like so:
|
||||
# EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
# To keep things clean and tidy, as well as make upgrades easier, only place overrides from the defaults in this file.
|
||||
|
||||
|
||||
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = yes # LED animations
|
||||
LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
|
||||
OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
|
||||
# Do not edit past here
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
|
||||
@@ -1,38 +1,21 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
# Overridden build options from rev1 & rev2
|
||||
|
||||
# Debug Options
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
|
||||
# RGB Options
|
||||
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
|
||||
|
||||
# Userspace implements their own LTO
|
||||
LINK_TIME_OPTIMIZATION_ENABLE = no
|
||||
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
|
||||
OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
|
||||
# Do not edit past here
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
|
||||
31
keyboards/rgbkb/sol/keymaps/xulkal/config.h
Normal file
31
keyboards/rgbkb/sol/keymaps/xulkal/config.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
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
|
||||
|
||||
// Xulkal custom stuff
|
||||
#if KEYBOARD_rgbkb_sol_rev2
|
||||
#define OLED_90ROTATION
|
||||
#define RGB_MATRIX_TOG_LAYERS
|
||||
#define RGB_MATRIX_HUE_STEP 8
|
||||
#define RGB_MATRIX_SAT_STEP 8
|
||||
#define RGB_MATRIX_VAL_STEP 8
|
||||
#define RGB_MATRIX_SPD_STEP 8
|
||||
#endif
|
||||
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Sft[ | Z | X | C | V | B | RGB | |RGBRST| N | M | , | . | / | Sft] |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Ctl- | Win | LOWER| RAISE| Alt | Space|RGBRMOD| |RGBMOD| Space| Left | Up | Down | Right| Ctl= |
|
||||
* | Ctl- | Win | LOWER| RAISE| Alt | Space| ENC1 | | ENC2 | Space| Left | Up | Down | Right| Ctl= |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||
* | Space| DEL | | Enter| Space|
|
||||
* `-------------' `-------------'
|
||||
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_________________QWERTY_L2_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R2_________________, \
|
||||
_________________QWERTY_L3_________________, KC_GRV, KC_QUOT, _________________QWERTY_R3_________________, \
|
||||
_________________QWERTY_L4_________________, RGB_TOG, RGBRST, _________________QWERTY_R4_________________, \
|
||||
_________________QWERTY_L5_________________, RGB_RMOD, RGB_MOD, _________________QWERTY_R5_________________, \
|
||||
_________________QWERTY_L5_________________, KC_ENC1, KC_ENC2, _________________QWERTY_R5_________________, \
|
||||
KC_SPC, TD_DEL, KC_ENT, KC_SPC \
|
||||
),
|
||||
|
||||
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
___________________GAME_L2_________________, KC_LBRC, KC_RBRC, ___________________GAME_R2_________________, \
|
||||
___________________GAME_L3_________________, KC_GRV, KC_QUOT, ___________________GAME_R3_________________, \
|
||||
___________________GAME_L4_________________, RGB_TOG, RGBRST, ___________________GAME_R4_________________, \
|
||||
___________________GAME_L5_________________, RGB_RMOD, RGB_MOD, ___________________GAME_R5_________________, \
|
||||
___________________GAME_L5_________________, KC_ENC1, KC_ENC2, ___________________GAME_R5_________________, \
|
||||
KC_SPC, KC_DEL, KC_ENT, KC_SPC \
|
||||
),
|
||||
#endif
|
||||
|
||||
@@ -1,37 +1,25 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
|
||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
|
||||
ENCODER_ENABLE = no # Enable rotary encoder (+90)
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
# Overridden build options from rev1 & rev2
|
||||
|
||||
# RGB Options
|
||||
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
|
||||
FULLHAND_ENABLE = yes # Enables the additional 24 Full Hand LEDs
|
||||
|
||||
# Misc
|
||||
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
|
||||
|
||||
# Not using the encoder for rev1
|
||||
ifeq ($(strip $(KEYBOARD)), rgbkb/sol/rev1)
|
||||
ENCODER_ENABLE = no
|
||||
RGB_OLED_MENU = no
|
||||
else
|
||||
ENCODER_ENABLE = yes
|
||||
RGB_OLED_MENU = 0
|
||||
endif
|
||||
|
||||
# Do not edit past here
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
|
||||
@@ -26,6 +26,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define PRODUCT Sol
|
||||
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
|
||||
|
||||
/* ws2812 RGB LED */
|
||||
#define RGB_DI_PIN B3
|
||||
|
||||
#ifdef LED_MIRRORED
|
||||
#define RGBLED_NUM 35
|
||||
#else
|
||||
@@ -34,3 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||
|
||||
#define RGB_MATRIX_CENTER { 112, 35 }
|
||||
|
||||
// Encoder support
|
||||
#define ENCODERS_PAD_A { D2 }
|
||||
#define ENCODERS_PAD_B { D6 }
|
||||
|
||||
19
keyboards/rgbkb/sol/rev1/post_rules.mk
Normal file
19
keyboards/rgbkb/sol/rev1/post_rules.mk
Normal file
@@ -0,0 +1,19 @@
|
||||
# As long as the users rules.mk has include $(KEYBOARD)/post_rules.mk this will be run after to properly setup any keyboard features and defines
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_FRAMEBUFFER)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
@@ -2,18 +2,18 @@
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
led_config_t g_led_config = { {
|
||||
{ 0, 1, 2, 3, 4, 5, 6 },
|
||||
{ 7, 8, 9, 10, 11, 12, 13 },
|
||||
{ 14, 15, 16, 17, 18, 19, 20 },
|
||||
{ 21, 22, 23, 24, 25, 26, 27 },
|
||||
{ 28, 29, 30, 31, 32, 33, 34 },
|
||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
|
||||
{ 35, 36, 37, 38, 39, 40, 41 },
|
||||
{ 42, 43, 44, 45, 46, 47, 48 },
|
||||
{ 49, 50, 51, 52, 53, 54, 55 },
|
||||
{ 56, 57, 58, 59, 60, 61, 62 },
|
||||
{ 63, 64, 65, 66, 67, 68, 68 },
|
||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
|
||||
{ 0, 1, 2, 3, 4, 5, 6 },
|
||||
{ 7, 8, 9, 10, 11, 12, 13 },
|
||||
{ 14, 15, 16, 17, 18, 19, 20 },
|
||||
{ 21, 22, 23, 24, 25, 26, 27 },
|
||||
{ 28, 29, 30, 31, 32, 33, 34 },
|
||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
|
||||
{ 35, 36, 37, 38, 39, 40, 41 },
|
||||
{ 42, 43, 44, 45, 46, 47, 48 },
|
||||
{ 49, 50, 51, 52, 53, 54, 55 },
|
||||
{ 56, 57, 58, 59, 60, 61, 62 },
|
||||
{ 63, 64, 65, 66, 67, 68, 68 },
|
||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
|
||||
}, {
|
||||
// Left Hand Mapped Left to Right
|
||||
{ 0, 0 }, { 21, 0 }, { 38, 0 }, { 56, 0 }, { 73, 0 }, { 91, 0 }, { 112, 0 },
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# RGBKB Sol Rev1 Defaults
|
||||
|
||||
# Keycode Options
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
UNICODE_ENABLE = no # Unicode keycodes
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
|
||||
# Debug Options
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
|
||||
# RGB Options
|
||||
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = yes # LED animations
|
||||
LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
|
||||
RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
|
||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects.
|
||||
RGB_MATRIX_FRAMEBUFFER_EFFECTS = no # Enable frame buffer effects like the typing heatmap.
|
||||
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness for RGBLIGHT or RGB_MATRIX. Otherwise, limited to a safe level for a normal USB-A port
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
|
||||
# Misc
|
||||
OLED_DRIVER_ENABLE = no # Enable the OLED Driver
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
|
||||
61
keyboards/rgbkb/sol/rev2/config.h
Normal file
61
keyboards/rgbkb/sol/rev2/config.h
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
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
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x3060
|
||||
#define DEVICE_VER 0x0002
|
||||
#define MANUFACTURER RGBKB
|
||||
#define PRODUCT Sol
|
||||
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
|
||||
|
||||
/* ws2812 RGB LED */
|
||||
#define RGB_DI_PIN B7
|
||||
|
||||
#define BACKLIGHT_LEDS 124
|
||||
|
||||
#ifdef FULLHAND_ENABLE
|
||||
#define FULLHAND_LEDS 24
|
||||
#else
|
||||
#define FULLHAND_LEDS 0
|
||||
#endif
|
||||
|
||||
// Underglow / DIY Tent Glow are parallel to the top row leds, no separate define
|
||||
|
||||
#ifdef LED_MIRRORED
|
||||
#define RGBLED_NUM ((BACKLIGHT_LEDS + FULLHAND_LEDS) / 2)
|
||||
#else
|
||||
#define RGBLED_NUM (BACKLIGHT_LEDS + FULLHAND_LEDS)
|
||||
#endif
|
||||
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||
|
||||
#define RGB_MATRIX_CENTER { 112, 37 }
|
||||
|
||||
// Encoder support
|
||||
#ifndef EXTRA_ENCODERS_ENABLE
|
||||
#define ENCODERS_PAD_A { D2 }
|
||||
#define ENCODERS_PAD_B { D6 }
|
||||
#else
|
||||
#ifdef OLED_DRIVER_ENABLE
|
||||
#error Extra encoders cannot be enabled at the same time as the OLED Driver as they use the same pins.
|
||||
#endif
|
||||
#define ENCODERS_PAD_A { D2, D1, B0 }
|
||||
#define ENCODERS_PAD_B { D6, B1, D0 }
|
||||
#endif
|
||||
87
keyboards/rgbkb/sol/rev2/info.json
Normal file
87
keyboards/rgbkb/sol/rev2/info.json
Normal file
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"keyboard_name": "Sol",
|
||||
"url": "",
|
||||
"maintainer": "Legonut",
|
||||
"width": 17,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"L00", "x":0, "y":0, "w":1.5},
|
||||
{"label":"L01", "x":1.5, "y":0},
|
||||
{"label":"L02", "x":2.5, "y":0},
|
||||
{"label":"L03", "x":3.5, "y":0},
|
||||
{"label":"L04", "x":4.5, "y":0},
|
||||
{"label":"L05", "x":5.5, "y":0},
|
||||
{"label":"L06", "x":6.75, "y":0},
|
||||
{"label":"R06", "x":9.25, "y":0},
|
||||
{"label":"R00", "x":10.5, "y":0},
|
||||
{"label":"R01", "x":11.5, "y":0},
|
||||
{"label":"R02", "x":12.5, "y":0},
|
||||
{"label":"R03", "x":13.5, "y":0},
|
||||
{"label":"R04", "x":14.5, "y":0},
|
||||
{"label":"R05", "x":15.5, "y":0, "w":1.5},
|
||||
{"label":"L10", "x":0, "y":1, "w":1.5},
|
||||
{"label":"L11", "x":1.5, "y":1},
|
||||
{"label":"L12", "x":2.5, "y":1},
|
||||
{"label":"L13", "x":3.5, "y":1},
|
||||
{"label":"L14", "x":4.5, "y":1},
|
||||
{"label":"L15", "x":5.5, "y":1},
|
||||
{"label":"L16", "x":6.75, "y":1},
|
||||
{"label":"R16", "x":9.25, "y":1},
|
||||
{"label":"R10", "x":10.5, "y":1},
|
||||
{"label":"R11", "x":11.5, "y":1},
|
||||
{"label":"R12", "x":12.5, "y":1},
|
||||
{"label":"R13", "x":13.5, "y":1},
|
||||
{"label":"R14", "x":14.5, "y":1},
|
||||
{"label":"R15", "x":15.5, "y":1, "w":1.5},
|
||||
{"label":"L20", "x":0, "y":2, "w":1.5},
|
||||
{"label":"L21", "x":1.5, "y":2},
|
||||
{"label":"L22", "x":2.5, "y":2},
|
||||
{"label":"L23", "x":3.5, "y":2},
|
||||
{"label":"L24", "x":4.5, "y":2},
|
||||
{"label":"L25", "x":5.5, "y":2},
|
||||
{"label":"L26", "x":6.75, "y":2},
|
||||
{"label":"R26", "x":9.25, "y":2},
|
||||
{"label":"R20", "x":10.5, "y":2},
|
||||
{"label":"R21", "x":11.5, "y":2},
|
||||
{"label":"R22", "x":12.5, "y":2},
|
||||
{"label":"R23", "x":13.5, "y":2},
|
||||
{"label":"R24", "x":14.5, "y":2},
|
||||
{"label":"R25", "x":15.5, "y":2, "w":1.5},
|
||||
{"label":"L30", "x":0, "y":3, "w":1.5},
|
||||
{"label":"L31", "x":1.5, "y":3},
|
||||
{"label":"L32", "x":2.5, "y":3},
|
||||
{"label":"L33", "x":3.5, "y":3},
|
||||
{"label":"L34", "x":4.5, "y":3},
|
||||
{"label":"L35", "x":5.5, "y":3},
|
||||
{"label":"L36", "x":6.75, "y":3},
|
||||
{"label":"R36", "x":9.25, "y":3},
|
||||
{"label":"R30", "x":10.5, "y":3},
|
||||
{"label":"R31", "x":11.5, "y":3},
|
||||
{"label":"R32", "x":12.5, "y":3},
|
||||
{"label":"R33", "x":13.5, "y":3},
|
||||
{"label":"R34", "x":14.5, "y":3},
|
||||
{"label":"R35", "x":15.5, "y":3, "w":1.5},
|
||||
{"label":"L40", "x":0, "y":4, "w":1.5},
|
||||
{"label":"L41", "x":1.5, "y":4},
|
||||
{"label":"L42", "x":2.5, "y":4},
|
||||
{"label":"L43", "x":3.5, "y":4},
|
||||
{"label":"L44", "x":4.5, "y":4},
|
||||
{"label":"L45", "x":6, "y":4.5},
|
||||
{"label":"L46", "x":7, "y":4.5},
|
||||
{"label":"R46", "x":9, "y":4.5},
|
||||
{"label":"R40", "x":10, "y":4.5},
|
||||
{"label":"R41", "x":11.5, "y":4},
|
||||
{"label":"R42", "x":12.5, "y":4},
|
||||
{"label":"R43", "x":13.5, "y":4},
|
||||
{"label":"R44", "x":14.5, "y":4},
|
||||
{"label":"R45", "x":15.5, "y":4, "w":1.5},
|
||||
{"label":"L55", "x":6, "y":5.5},
|
||||
{"label":"L56", "x":7, "y":5.5},
|
||||
{"label":"R56", "x":9, "y":5.5},
|
||||
{"label":"R50", "x":10, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
37
keyboards/rgbkb/sol/rev2/post_rules.mk
Normal file
37
keyboards/rgbkb/sol/rev2/post_rules.mk
Normal file
@@ -0,0 +1,37 @@
|
||||
# As long as the users rules.mk has include $(KEYBOARD)/post_rules.mk this will be run after to properly setup any keyboard features and defines
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
|
||||
OPT_DEFS += -DRGBLIGHT_FULL_POWER
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_FRAMEBUFFER)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MIRRORED)), yes)
|
||||
OPT_DEFS += -DLED_MIRRORED
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(FULLHAND_ENABLE)), yes)
|
||||
OPT_DEFS += -DFULLHAND_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(EXTRA_ENCODERS_ENABLE)), yes)
|
||||
OPT_DEFS += -DEXTRA_ENCODERS_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||
ifeq ($(strip $(ENCODER_ENABLE)), yes)
|
||||
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
|
||||
ifneq ($(strip $(RGB_OLED_MENU)), no)
|
||||
OPT_DEFS += -DRGB_OLED_MENU=$(strip $(RGB_OLED_MENU))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
89
keyboards/rgbkb/sol/rev2/rev2.c
Normal file
89
keyboards/rgbkb/sol/rev2/rev2.c
Normal file
@@ -0,0 +1,89 @@
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
led_config_t g_led_config = { {
|
||||
{ 0, 1, 2, 3, 4, 5, 6 },
|
||||
{ 7, 8, 9, 10, 11, 12, 13 },
|
||||
{ 14, 15, 16, 17, 18, 19, 20 },
|
||||
{ 21, 22, 23, 24, 25, 26, 27 },
|
||||
{ 28, 29, 30, 31, 32, 33, 34 },
|
||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
|
||||
// Need to shift Right hand indexes if full hand LEDs are enabled
|
||||
#define LO (FULLHAND_LEDS / 2)
|
||||
{ LO+62, LO+63, LO+64, LO+65, LO+66, LO+67, LO+68 },
|
||||
{ LO+69, LO+70, LO+71, LO+72, LO+73, LO+74, LO+75 },
|
||||
{ LO+76, LO+77, LO+78, LO+79, LO+80, LO+81, LO+82 },
|
||||
{ LO+83, LO+84, LO+85, LO+86, LO+87, LO+88, LO+89 },
|
||||
{ LO+90, LO+91, LO+92, LO+93, LO+94, LO+95, LO+95 },
|
||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, LO+95, LO+95 }
|
||||
#undef LO
|
||||
}, {
|
||||
// Left Hand Mapped Left to Right
|
||||
{ 11, 14 }, { 28, 14 }, { 42, 14 }, { 56, 14 }, { 70, 14 }, { 84, 14 }, { 102, 14 },
|
||||
{ 11, 28 }, { 28, 28 }, { 42, 28 }, { 56, 28 }, { 70, 28 }, { 84, 28 }, { 98, 25 },
|
||||
{ 11, 42 }, { 28, 42 }, { 42, 42 }, { 56, 42 }, { 70, 42 }, { 84, 42 }, { 98, 39 },
|
||||
{ 11, 56 }, { 28, 56 }, { 42, 56 }, { 56, 56 }, { 70, 56 }, { 84, 56 }, { 98, 53 },
|
||||
{ 11, 70 }, { 28, 70 }, { 42, 70 }, { 56, 70 }, { 70, 70 }, { 83, 87 }, { 93, 97 },
|
||||
// Edge Light Left
|
||||
{ 0, 66 }, { 0, 52 }, { 0, 38 }, { 0, 24 }, { 0, 10 }, { 31, 0 }, { 38, 0 },
|
||||
{ 46, 0 }, { 54, 0 }, { 61, 0 }, { 69, 0 }, { 76, 0 }, { 84, 0 }, { 109, 11 },
|
||||
{ 109, 24 }, { 109, 39 }, { 109, 53 }, { 110, 73 }, { 112, 85 }, { 106, 95 }, { 95, 98 },
|
||||
{ 83, 91 }, { 71, 84 }, { 58, 77 }, { 42, 74 }, { 28, 74 }, { 14, 74 },
|
||||
// Full Hand Left
|
||||
#ifdef FULLHAND_ENABLE
|
||||
{ 2, 88 }, { 2, 103 }, { 2, 117 }, { 2, 132 }, { 10, 145 }, { 25, 145 }, { 39, 145 },
|
||||
{ 54, 145 }, { 69, 145 }, { 79, 136 }, { 87, 124 }, { 94, 111 },
|
||||
#endif
|
||||
// Left Hand Mapped Right to Left
|
||||
{ 213, 14 }, { 196, 14 }, { 182, 14 }, { 168, 14 }, { 154, 14 }, { 140, 14 }, { 122, 14 },
|
||||
{ 213, 28 }, { 196, 28 }, { 182, 28 }, { 168, 28 }, { 154, 28 }, { 140, 28 }, { 126, 25 },
|
||||
{ 213, 42 }, { 196, 42 }, { 182, 42 }, { 168, 42 }, { 154, 42 }, { 140, 42 }, { 126, 39 },
|
||||
{ 213, 56 }, { 196, 56 }, { 182, 56 }, { 168, 56 }, { 154, 56 }, { 140, 56 }, { 126, 53 },
|
||||
{ 213, 70 }, { 196, 70 }, { 182, 70 }, { 168, 70 }, { 154, 70 }, { 141, 87 }, { 131, 97 },
|
||||
// Edge Light Right
|
||||
{ 224, 66 }, { 224, 52 }, { 224, 38 }, { 224, 24 }, { 224, 10 }, { 193, 0 }, { 186, 0 },
|
||||
{ 178, 0 }, { 170, 0 }, { 163, 0 }, { 155, 0 }, { 148, 0 }, { 140, 0 }, { 115, 11 },
|
||||
{ 115, 24 }, { 115, 39 }, { 115, 53 }, { 114, 73 }, { 112, 85 }, { 118, 95 }, { 129, 98 },
|
||||
{ 141, 91 }, { 153, 84 }, { 166, 77 }, { 182, 74 }, { 196, 74 }, { 210, 74 }
|
||||
// Full Hand Right
|
||||
#ifdef FULLHAND_ENABLE
|
||||
,{ 222, 88 }, { 222, 103 }, { 222, 117 }, { 222, 132 }, { 214, 145 }, { 199, 145 }, { 185, 145 },
|
||||
{ 170, 145 }, { 155, 145 }, { 145, 136 }, { 137, 124 }, { 130, 111 }
|
||||
#endif
|
||||
}, {
|
||||
// Left Hand Mapped Left to Right
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 1, 1, 1, 1, 1, 1,
|
||||
// Edge Light Left
|
||||
2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2,
|
||||
// Full Hand Left
|
||||
#ifdef FULLHAND_ENABLE
|
||||
2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2,
|
||||
#endif
|
||||
// Left Hand Mapped Right to Left
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 1,
|
||||
1, 1, 1, 1, 1, 1, 1,
|
||||
// Edge Light Right
|
||||
2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2
|
||||
// Full Hand Right
|
||||
#ifdef FULLHAND_ENABLE
|
||||
,2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2
|
||||
#endif
|
||||
} };
|
||||
|
||||
#endif
|
||||
|
||||
1
keyboards/rgbkb/sol/rev2/rev2.h
Normal file
1
keyboards/rgbkb/sol/rev2/rev2.h
Normal file
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
35
keyboards/rgbkb/sol/rev2/rules.mk
Normal file
35
keyboards/rgbkb/sol/rev2/rules.mk
Normal file
@@ -0,0 +1,35 @@
|
||||
# RGBKB Sol Rev2 Defaults
|
||||
|
||||
# Keycode Options
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
UNICODE_ENABLE = no # Unicode keycodes
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
|
||||
# Debug Options
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
|
||||
# RGB Options
|
||||
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||
|
||||
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
|
||||
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects.
|
||||
RGB_MATRIX_FRAMEBUFFER_EFFECTS = no # Enable frame buffer effects like the typing heatmap.
|
||||
|
||||
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness for RGBLIGHT or RGB_MATRIX. Otherwise, limited to a safe level for a normal USB-A port
|
||||
FULLHAND_ENABLE = no # Enables the additional 24 Full Hand LEDs
|
||||
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
|
||||
|
||||
# Misc
|
||||
OLED_DRIVER_ENABLE = no # Enable the OLED Driver
|
||||
EXTRA_ENCODERS_ENABLE = no # Enables 3 encoders per side (up from 1, not compatible with OLED_DRIVER_ENABLE)
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
LINK_TIME_OPTIMIZATION_ENABLE = yes # Enable Link Time Optimizations greatly reducing firmware size by disabling the old Macros and Functions features
|
||||
|
||||
# Special RGB Matrix, OLED, & Encoder Control Menu!
|
||||
RGB_OLED_MENU = no # Enabled by setting this to the encoder index (0-5) you wish to use to control the menu.
|
||||
# Use the RGB_MENU keycode in the keymap for the encoder to advance the menu to the next option.
|
||||
@@ -2,41 +2,15 @@
|
||||
MCU = atmega32u4
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
#
|
||||
# This will be an integer division of F_USB below, as it is sourced by
|
||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||
# does not *change* the processor frequency - it should merely be updated to
|
||||
# reflect the processor speed set externally so that the code can use accurate
|
||||
# software delays.
|
||||
F_CPU = 16000000
|
||||
|
||||
#
|
||||
# LUFA specific
|
||||
#
|
||||
# Target architecture (see library "Board Types" documentation).
|
||||
ARCH = AVR8
|
||||
|
||||
# Input clock frequency.
|
||||
# This will define a symbol, F_USB, in all source code files equal to the
|
||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||
# at the end, this will be done automatically to create a 32-bit value in your
|
||||
# source code.
|
||||
#
|
||||
# If no clock division is performed on the input clock inside the AVR (via the
|
||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||
F_USB = $(F_CPU)
|
||||
|
||||
# Bootloader
|
||||
# This definition is optional, and if your keyboard supports multiple bootloaders of
|
||||
# different sizes, comment this out, and the correct address will be loaded
|
||||
# automatically (+60). See bootloader.mk for all options.
|
||||
BOOTLOADER = qmk-dfu
|
||||
|
||||
# Interrupt driven control endpoint task(+60)
|
||||
@@ -48,18 +22,4 @@ OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
|
||||
SPLIT_KEYBOARD = yes
|
||||
ENCODER_ENABLE = yes
|
||||
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
|
||||
DEFAULT_FOLDER = rgbkb/sol/rev1
|
||||
DEFAULT_FOLDER = rgbkb/sol/rev2
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#include "quantum.h"
|
||||
#ifdef KEYBOARD_rgbkb_sol_rev1
|
||||
#include "rev1.h"
|
||||
#else
|
||||
#include "rev2.h"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -29,6 +31,32 @@
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R50, R56 } \
|
||||
}
|
||||
|
||||
#define ENCODER_LAYOUT( \
|
||||
E10, E11, \
|
||||
E20, E21 \
|
||||
) \
|
||||
{ \
|
||||
{ E10, E11 }, \
|
||||
{ E20, E21 } \
|
||||
}
|
||||
|
||||
#define EXTRA_ENCODER_LAYOUT( \
|
||||
E10, E11, \
|
||||
E20, E21, \
|
||||
E30, E31, \
|
||||
E40, E41, \
|
||||
E50, E51, \
|
||||
E60, E61 \
|
||||
) \
|
||||
{ \
|
||||
{ E10, E11 }, \
|
||||
{ E20, E21 }, \
|
||||
{ E30, E31 }, \
|
||||
{ E40, E41 }, \
|
||||
{ E50, E51 }, \
|
||||
{ E60, E61 } \
|
||||
}
|
||||
|
||||
#define KC________ KC_TRNS
|
||||
#define KC_RGB_MOD RGB_MOD
|
||||
#define KC_FN FN
|
||||
|
||||
@@ -36,6 +36,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define NO_BACKLIGHT_CLOCK
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
|
||||
27
keyboards/tanuki/keymaps/tucznak/config.h
Normal file
27
keyboards/tanuki/keymaps/tucznak/config.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#undef MANUFACTURER
|
||||
#undef PRODUCT
|
||||
#undef DESCRIPTION
|
||||
|
||||
#define MANUFACTURER Potato Inc.
|
||||
#define PRODUCT Trash Panda
|
||||
#define DESCRIPTION Qt3.14 smolkeeb
|
||||
|
||||
/* for bootloader */
|
||||
#define QMK_ESC_OUTPUT B2
|
||||
#define QMK_ESC_INPUT D0
|
||||
#define QMK_LED B0
|
||||
|
||||
/* turn off RGB when computer sleeps */
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define RGBLIGHT_SLEEP
|
||||
#endif
|
||||
|
||||
/* send tap key if no layer key was used even after tap delay */
|
||||
#ifdef TAPPING_TERM
|
||||
#undef TAPPING_TERM
|
||||
#endif
|
||||
#define TAPPING_TERM 250
|
||||
#define RETRO_TAPPING
|
||||
#define TAPPING_TOGGLE 2
|
||||
116
keyboards/tanuki/keymaps/tucznak/keymap.c
Normal file
116
keyboards/tanuki/keymaps/tucznak/keymap.c
Normal file
@@ -0,0 +1,116 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
_BASE,
|
||||
_DN,
|
||||
_UP,
|
||||
_NAV,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Base layer (0)
|
||||
* ,------------------------------------------------------------------------.
|
||||
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
|
||||
* | Tab | A | S | D | F | G | H | J | K | L | ů | Nav |
|
||||
* `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
|
||||
* | Shift | Z | X | C | V | B | N | M | , | . |Enter |
|
||||
* `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
|
||||
* | Ctrl | GUI |LAlt | Space | SpaceUp |AltGr| Down |
|
||||
* `--------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TT(_NAV),
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(_UP,KC_SPC), KC_RALT, MO(_DN)
|
||||
),
|
||||
|
||||
/* Down layer (1)
|
||||
* function keys and numbers
|
||||
* ,------------------------------------------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
|
||||
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
|
||||
* `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
|
||||
* | |NumLk| | | + | - | * | / | , | . | |
|
||||
* `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
|
||||
* | Fn | | | C+A+D | C+A+I | | |
|
||||
* `--------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_DN] = LAYOUT(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, _______,
|
||||
_______, KC_NLCK, _______, _______, KC_PPLS, KC_PMNS, KC_PAST, KC_PSLS, KC_COMM, KC_DOT, _______,
|
||||
MO(_FN), _______, _______, LCA(KC_DEL), LCA(KC_INS), _______, _______
|
||||
),
|
||||
|
||||
/* Up layer (2)
|
||||
* national and special characters
|
||||
* ,------------------------------------------------------------------------.
|
||||
* | +1 | ě2 | š3 | č4 | ř5 | ž6 | ý7 | á8 | í9 | é0 | ´ | ˇ |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
|
||||
* | ;° | | | | | | ( | ) | § | ! | / | ú | |
|
||||
* `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
|
||||
* | | | | \ | % | = | ¨ | ' | - | _ | |
|
||||
* `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
|
||||
* | | | | | | | |
|
||||
* `--------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_UP] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, LSFT(KC_EQL),
|
||||
KC_GRV, _______, _______, _______, LSFT(KC_NUBS), LSFT(KC_RBRC), KC_RBRC, KC_QUOT, LSFT(KC_QUOT), LSFT(KC_LBRC), KC_LBRC, _______,
|
||||
_______, _______, _______, KC_NUBS, LSFT(KC_MINS), KC_MINS, KC_BSLS, LSFT(KC_BSLS), KC_SLSH, LSFT(KC_SLSH), _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Navigation layer (3)
|
||||
* arrows, nav cluster
|
||||
* ,------------------------------------------------------------------------.
|
||||
* | | | | | |Home |PgUp | | | Up | Ins | Del |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
|
||||
* | | | | | | End |PgDn | |Left |Down |Right| |
|
||||
* `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
|
||||
* | |Caps |PrtSc|ScrLk|Pause| | | | | | |
|
||||
* `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
|
||||
* | | | | | | | Menu |
|
||||
* `--------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_NAV] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, KC_UP, KC_INS, KC_DEL,
|
||||
_______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
|
||||
_______, KC_CAPS, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_APP
|
||||
),
|
||||
|
||||
/* Function layer (4)
|
||||
* keyboard and system control
|
||||
* ,------------------------------------------------------------------------.
|
||||
* |Reset| | | | | | |Play |Prev |Next |Stop | |
|
||||
* |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------|
|
||||
* |Sleep | VLK |Mod+ |Hue+ |Sat+ |Val+ | | |Vol- |Vol+ |Mute | |
|
||||
* `------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----'
|
||||
* | | TOG |Mod- |Hue- |Sat- |Val- | | | | | |
|
||||
* `-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------'
|
||||
* | | | | | | | |
|
||||
* `--------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_FN] = LAYOUT(
|
||||
RESET, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, _______,
|
||||
KC_SLEP, VLK_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______,
|
||||
_______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
bool process_record_user (uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
8
keyboards/tanuki/keymaps/tucznak/readme.md
Normal file
8
keyboards/tanuki/keymaps/tucznak/readme.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# TuCZnak's modified layout
|
||||
|
||||
This layout is optimized for Czech national QWERTZ keymap.
|
||||
It includes separated layers for:
|
||||
- F-keys and numbers
|
||||
- national and special characters
|
||||
- navigation cluster
|
||||
- keyboard config and media control
|
||||
19
keyboards/tanuki/keymaps/tucznak/rules.mk
Normal file
19
keyboards/tanuki/keymaps/tucznak/rules.mk
Normal file
@@ -0,0 +1,19 @@
|
||||
# screw Caterina
|
||||
BOOTLOADER = qmk-dfu
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE =yes # Enable keyboard underlight functionality (+4870)
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
TAP_DANCE_ENABLE = no
|
||||
38
keyboards/tgr/jane/config.h
Normal file
38
keyboards/tgr/jane/config.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define VENDOR_ID 0x20A0
|
||||
#define PRODUCT_ID 0x422D
|
||||
#define MANUFACTURER TGR
|
||||
#define PRODUCT Jane
|
||||
|
||||
#define MATRIX_ROWS 8
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
// 0 1 2 3 4 5 6 7 8 9 A B C D E
|
||||
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
|
||||
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define BACKLIGHT_LEVELS 1
|
||||
20
keyboards/tgr/jane/info.json
Normal file
20
keyboards/tgr/jane/info.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"keyboard_name": "TGR Jane v2",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"width": 18.25,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5}, {"x":2.25, "y":5.5}, {"x":3.25, "y":5.5, "w":1.25}, {"x":4.5, "y":5.5, "w":1.25}, {"x":5.75, "y":5.5, "w":1.25}, {"x":7, "y":5.5, "w":1.25}, {"x":8.25, "y":5.5, "w":1.25}, {"x":9.5, "y":5.5, "w":1.25}, {"x":10.75, "y":5.5}, {"x":11.75, "y":5.5}, {"x":12.75, "y":5.5}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
|
||||
},
|
||||
|
||||
"LAYOUT_tkl_ansi": {
|
||||
"layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
|
||||
},
|
||||
|
||||
"LAYOUT_tkl_iso": {
|
||||
"layout": [{"x":0, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
|
||||
}
|
||||
}
|
||||
}
|
||||
88
keyboards/tgr/jane/jane.c
Normal file
88
keyboards/tgr/jane/jane.c
Normal file
@@ -0,0 +1,88 @@
|
||||
/* Copyright 2019 MechMerlin
|
||||
*
|
||||
* 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 "i2c_master.h"
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#include "rgblight.h"
|
||||
extern rgblight_config_t rgblight_config;
|
||||
|
||||
void rgblight_set(void) {
|
||||
if (!rgblight_config.enable) {
|
||||
for (uint8_t i = 0; i < RGBLED_NUM; i++) {
|
||||
led[i].r = 0;
|
||||
led[i].g = 0;
|
||||
led[i].b = 0;
|
||||
}
|
||||
}
|
||||
|
||||
i2c_init();
|
||||
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
|
||||
}
|
||||
#endif
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (rgblight_config.enable) {
|
||||
i2c_init();
|
||||
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
|
||||
}
|
||||
#endif
|
||||
// call user level keymaps, if any
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_task();
|
||||
#endif
|
||||
matrix_scan_user();
|
||||
/* Nothing else for now. */
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
void backlight_init_ports(void) {
|
||||
// initialize pins D0, D1, D4 and D6 as output
|
||||
setPinOutput(D0);
|
||||
setPinOutput(D1);
|
||||
setPinOutput(D4);
|
||||
setPinOutput(D6);
|
||||
|
||||
// turn backlight LEDs on
|
||||
writePinHigh(D0);
|
||||
writePinHigh(D1);
|
||||
writePinHigh(D4);
|
||||
writePinHigh(D6);
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level) {
|
||||
if (level == 0) {
|
||||
// turn backlight LEDs off
|
||||
writePinLow(D0);
|
||||
writePinLow(D1);
|
||||
writePinLow(D4);
|
||||
writePinLow(D6);
|
||||
} else {
|
||||
// turn backlight LEDs on
|
||||
writePinHigh(D0);
|
||||
writePinHigh(D1);
|
||||
writePinHigh(D4);
|
||||
writePinHigh(D6);
|
||||
}
|
||||
}
|
||||
77
keyboards/tgr/jane/jane.h
Normal file
77
keyboards/tgr/jane/jane.h
Normal file
@@ -0,0 +1,77 @@
|
||||
/* Copyright 2019 MechMerlin
|
||||
*
|
||||
* 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
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
// This a shortcut to help you visually see your layout.
|
||||
// The first section contains all of the arguments
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
|
||||
#define LAYOUT_all( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k6B, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k6C, k6D, k6E, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k2E, \
|
||||
k50, k51, k52, k53, k54, k55, k57, k58, k59, k5A, k5B, k5C, k5D, k5E, k3E, k4E \
|
||||
){ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E }, \
|
||||
{ k50, k51, k52, k53, k54, k55, KC_NO, k57, k58, k59, k5A, k5B, k5C, k5D, k5E }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6B, k6C, k6D, k6E }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
|
||||
}
|
||||
|
||||
|
||||
#define LAYOUT_tkl_ansi( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k6B, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
|
||||
k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k2E, \
|
||||
k50, k51, k52, k55, k58, k59, k5A, k5D, k5E, k3E, k4E \
|
||||
){ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \
|
||||
{ k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, KC_NO, k4E }, \
|
||||
{ k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, k5D, k5E }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6B, k6C, k6D, k6E }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
|
||||
}
|
||||
|
||||
#define LAYOUT_tkl_iso( \
|
||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k6B, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k7C, k7D, k7E, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k2E, \
|
||||
k50, k51, k52, k55, k58, k59, k5A, k5D, k5E, k3E, k4E \
|
||||
){ \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, KC_NO, k2E }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, KC_NO, k4E }, \
|
||||
{ k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, k5D, k5E }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6B, k6C, k6D, k6E }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
|
||||
}
|
||||
27
keyboards/tgr/jane/keymaps/default/keymap.c
Normal file
27
keyboards/tgr/jane/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Copyright 2019 MechMerlin
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi(\
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, \
|
||||
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT) \
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user