Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a012113d63 | ||
|
|
c691396ae5 | ||
|
|
860f6d65b8 | ||
|
|
85d2d4fee5 | ||
|
|
a57c9648e9 | ||
|
|
e9755521ab | ||
|
|
bbecd276d2 | ||
|
|
4d4b845cf5 |
No files matched your search
@@ -67,7 +67,7 @@ $(eval $(call NEXT_PATH_ELEMENT))
|
|||||||
# It's really a very simple if else chain, if you squint enough,
|
# It's really a very simple if else chain, if you squint enough,
|
||||||
# but the makefile syntax makes it very verbose.
|
# but the makefile syntax makes it very verbose.
|
||||||
# If we are in a subfolder of keyboards
|
# If we are in a subfolder of keyboards
|
||||||
#
|
#
|
||||||
# *** No longer needed **
|
# *** No longer needed **
|
||||||
#
|
#
|
||||||
# ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
|
# ifeq ($(CURRENT_PATH_ELEMENT),keyboards)
|
||||||
@@ -307,11 +307,6 @@ define PARSE_KEYBOARD
|
|||||||
KEYBOARD_FOLDER_PATH_3 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_2)))
|
KEYBOARD_FOLDER_PATH_3 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_2)))
|
||||||
KEYBOARD_FOLDER_PATH_4 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_3)))
|
KEYBOARD_FOLDER_PATH_4 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_3)))
|
||||||
KEYBOARD_FOLDER_PATH_5 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_4)))
|
KEYBOARD_FOLDER_PATH_5 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_4)))
|
||||||
KEYBOARD_FOLDER_1 := $$(notdir $$(KEYBOARD_FOLDER_PATH_1))
|
|
||||||
KEYBOARD_FOLDER_2 := $$(notdir $$(KEYBOARD_FOLDER_PATH_2))
|
|
||||||
KEYBOARD_FOLDER_3 := $$(notdir $$(KEYBOARD_FOLDER_PATH_3))
|
|
||||||
KEYBOARD_FOLDER_4 := $$(notdir $$(KEYBOARD_FOLDER_PATH_4))
|
|
||||||
KEYBOARD_FOLDER_5 := $$(notdir $$(KEYBOARD_FOLDER_PATH_5))
|
|
||||||
|
|
||||||
KEYMAPS :=
|
KEYMAPS :=
|
||||||
# get a list of all keymaps
|
# get a list of all keymaps
|
||||||
@@ -325,35 +320,35 @@ define PARSE_KEYBOARD
|
|||||||
$$(KEYBOARD_FOLDER_3) $$(KEYBOARD_FOLDER_4) $$(KEYBOARD_FOLDER_5), $$(KEYMAPS)))
|
$$(KEYBOARD_FOLDER_3) $$(KEYBOARD_FOLDER_4) $$(KEYBOARD_FOLDER_5), $$(KEYMAPS)))
|
||||||
|
|
||||||
KEYBOARD_LAYOUTS :=
|
KEYBOARD_LAYOUTS :=
|
||||||
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_5)/rules.mk)","")
|
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)","")
|
||||||
LAYOUTS :=
|
LAYOUTS :=
|
||||||
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_5)/rules.mk)
|
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)
|
||||||
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
||||||
endif
|
endif
|
||||||
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_4)/rules.mk)","")
|
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)","")
|
||||||
LAYOUTS :=
|
LAYOUTS :=
|
||||||
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_4)/rules.mk)
|
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)
|
||||||
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
||||||
endif
|
endif
|
||||||
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_3)/rules.mk)","")
|
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)","")
|
||||||
LAYOUTS :=
|
LAYOUTS :=
|
||||||
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_3)/rules.mk)
|
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)
|
||||||
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
||||||
endif
|
endif
|
||||||
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_2)/rules.mk)","")
|
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)","")
|
||||||
LAYOUTS :=
|
LAYOUTS :=
|
||||||
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_2)/rules.mk)
|
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)
|
||||||
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
||||||
endif
|
endif
|
||||||
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_1)/rules.mk)","")
|
ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)","")
|
||||||
LAYOUTS :=
|
LAYOUTS :=
|
||||||
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_1)/rules.mk)
|
$$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)
|
||||||
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LAYOUT_KEYMAPS :=
|
LAYOUT_KEYMAPS :=
|
||||||
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
|
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
|
||||||
|
|
||||||
KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
|
KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
|
||||||
|
|
||||||
# if the rule after removing the start of it is empty (we haven't specified a kemap or target)
|
# if the rule after removing the start of it is empty (we haven't specified a kemap or target)
|
||||||
|
|||||||
@@ -31,6 +31,20 @@ The reason for this, is that `<name>.h` won't be added in time to add settings (
|
|||||||
|
|
||||||
So you should use the `config.h` for QMK settings, and the `<name>.h` file for user or keymap specific settings.
|
So you should use the `config.h` for QMK settings, and the `<name>.h` file for user or keymap specific settings.
|
||||||
|
|
||||||
|
`/users/<name>/rules.mk` will be included in the build _after_ the `rules.mk` from your keymap. This allows you to have features in your userspace `rules.mk` that depend on individual QMK features that may or may not be available on a specific keyboard. For example, if you have RGB control features shared between all your keyboards that support RGB lighting, you can `define RGB_ENABLE` in your keymap `rules.mk` and then check for the variable in your userspace `rules.mk` like this:
|
||||||
|
```make
|
||||||
|
ifdef RGB_ENABLE
|
||||||
|
# Include my fancy rgb functions source here
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
Because of this, any time you turn on QMK features in your `users/<name>/rules.mk`, you should conditionally enable them only if the flag isn't already defined, like this:
|
||||||
|
```make
|
||||||
|
ifndef TAP_DANCE_ENABLE
|
||||||
|
TAP_DANCE_ENABLE = yes
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
This will ensure that you can explicitly turn off features for an individual keymap.
|
||||||
|
|
||||||
## Readme
|
## Readme
|
||||||
|
|
||||||
Please include authorship (your name, github username, email), and optionally [a license that's GPL compatible](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses).
|
Please include authorship (your name, github username, email), and optionally [a license that's GPL compatible](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses).
|
||||||
@@ -122,4 +136,4 @@ By default the userspace used will be the same as the keymap name. In some situa
|
|||||||
|
|
||||||
```
|
```
|
||||||
USER_NAME := mylayout
|
USER_NAME := mylayout
|
||||||
```
|
```
|
||||||
@@ -114,4 +114,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define USB_MAX_POWER_CONSUMPTION 100
|
#define USB_MAX_POWER_CONSUMPTION 100
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MOUSEKEY_ENABLE
|
||||||
|
#undef MOUSEKEY_INTERVAL
|
||||||
|
#define MOUSEKEY_INTERVAL 0
|
||||||
|
|
||||||
|
#undef MOUSEKEY_TIME_TO_MAX
|
||||||
|
#define MOUSEKEY_TIME_TO_MAX 150
|
||||||
|
|
||||||
|
#undef MOUSEKEY_MAX_SPEED
|
||||||
|
#define MOUSEKEY_MAX_SPEED 3
|
||||||
|
|
||||||
|
#undef MOUSEKEY_MOVE_DELTA
|
||||||
|
#define MOUSEKEY_MOVE_DELTA 5
|
||||||
|
|
||||||
|
#undef MOUSEKEY_DELAY
|
||||||
|
#define MOUSEKEY_DELAY 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_USER_H */
|
#endif /* CONFIG_USER_H */
|
||||||
@@ -159,9 +159,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
/* Raise JIS Normal
|
/* Raise JIS Normal
|
||||||
* ,-----------------------------------------. ,-----------------------------------------.
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | | Home |PageUp|
|
* | | | | | | | | F12 | | | | Home |PageUp|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | | End |PageDn|
|
* | | | | | | | | | | | | End |PageDn|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
@@ -171,8 +171,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-------------------------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_RAISE] = LAYOUT( \
|
[_RAISE] = 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_F1 , KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
|
||||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, \
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F12 , XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGUP, \
|
||||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END, KC_PGDN, \
|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END, KC_PGDN, \
|
||||||
_______, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, \
|
_______, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, \
|
||||||
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R \
|
_______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R \
|
||||||
@@ -180,9 +180,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
|
|
||||||
/* Raise JIS Exchange L and R
|
/* Raise JIS Exchange L and R
|
||||||
* ,-----------------------------------------. ,-----------------------------------------.
|
* ,-----------------------------------------. ,-----------------------------------------.
|
||||||
* | F7 | F8 | F9 | F10 | F11 | F12 | | F1 | F2 | F3 | F4 | F5 | F6 |
|
* | F6 | F7 | F8 | F9 | F10 | F11 | | | F1 | F2 | F3 | F4 | F5 |
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | | | |
|
* | F12 | | | | | | | | | | | | |
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
* | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | |
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
@@ -192,8 +192,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* `-------------------------------------------------------------------------------------------------'
|
* `-------------------------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_RAI_E] = LAYOUT( \
|
[_RAI_E] = LAYOUT( \
|
||||||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
|
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, KC_F1 , KC_F2, KC_F3, KC_F4, KC_F5, \
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, _______, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, \
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, _______, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||||
_______, _______, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX \
|
_______, _______, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX \
|
||||||
@@ -221,194 +221,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
#elif HELIX_ROWS == 4
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
// Do it yourself :)
|
|
||||||
};
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error "undefined keymaps"
|
#error "undefined keymaps"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
char keylog[20] = {};
|
||||||
|
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', ' ', '-', ' ', '@', ' ', ' ',
|
||||||
|
' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '};
|
||||||
|
|
||||||
|
inline void set_keylog(uint16_t keycode, keyrecord_t *record)
|
||||||
|
{
|
||||||
|
char name = ' ';
|
||||||
|
uint8_t leds = host_keyboard_leds();
|
||||||
|
|
||||||
|
if (keycode < 60)
|
||||||
|
{
|
||||||
|
name = code_to_name[keycode];
|
||||||
|
}
|
||||||
|
|
||||||
|
// update keylog
|
||||||
|
snprintf(keylog, sizeof(keylog), "\n%dx%d %2x %c %c %c %c",
|
||||||
|
record->event.key.row,
|
||||||
|
record->event.key.col,
|
||||||
|
keycode,
|
||||||
|
name,
|
||||||
|
(leds & (1<<USB_LED_NUM_LOCK)) ? 'N' : ' ',
|
||||||
|
(leds & (1<<USB_LED_CAPS_LOCK)) ? 'C' : ' ',
|
||||||
|
(leds & (1<<USB_LED_SCROLL_LOCK)) ? 'S' : ' '
|
||||||
|
);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||||
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
|
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
|
||||||
#endif
|
|
||||||
|
|
||||||
// define variables for reactive RGB
|
|
||||||
bool TOG_STATUS = false;
|
|
||||||
int RGB_current_mode;
|
|
||||||
|
|
||||||
void persistent_default_layer_set(uint16_t default_layer) {
|
|
||||||
eeconfig_update_default_layer(default_layer);
|
|
||||||
default_layer_set(default_layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ADJUST_MACRO_ENABLE
|
|
||||||
// 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)) {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
rgblight_mode(RGB_current_mode);
|
|
||||||
#endif
|
|
||||||
layer_on(layer3);
|
|
||||||
} else {
|
|
||||||
layer_off(layer3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void toggle_lower_raise_layer(bool pressed, uint16_t dist_layer, uint16_t lower_layer, uint16_t raise_layer) {
|
|
||||||
if (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
|
|
||||||
TOG_STATUS = !TOG_STATUS;
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (dist_layer == _LOWER || dist_layer == _LOW_E) {
|
|
||||||
rgblight_mode(16);
|
|
||||||
} else {
|
|
||||||
rgblight_mode(15);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
layer_on(dist_layer);
|
|
||||||
#ifdef ADJUST_MACRO_ENABLE
|
|
||||||
update_tri_layer_RGB(lower_layer, raise_layer, _ADJUST);
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
|
||||||
#endif
|
|
||||||
TOG_STATUS = false;
|
|
||||||
layer_off(dist_layer);
|
|
||||||
#ifdef ADJUST_MACRO_ENABLE
|
|
||||||
update_tri_layer_RGB(lower_layer, raise_layer, _ADJUST);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case BASE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_SONG(tone_qwerty);
|
|
||||||
#endif
|
|
||||||
persistent_default_layer_set(1UL<<_BASE);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case BAS_E:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_SONG(tone_qwerty);
|
|
||||||
#endif
|
|
||||||
persistent_default_layer_set(1UL<<_BAS_E);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case LOWER:
|
|
||||||
toggle_lower_raise_layer(record->event.pressed, _LOWER, _LOWER, _RAISE);
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case LOW_E:
|
|
||||||
toggle_lower_raise_layer(record->event.pressed, _LOW_E, _LOW_E, _RAI_E);
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RAISE:
|
|
||||||
toggle_lower_raise_layer(record->event.pressed, _RAISE, _LOWER, _RAISE);
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RAI_E:
|
|
||||||
toggle_lower_raise_layer(record->event.pressed, _RAI_E, _LOW_E, _RAI_E);
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case ADJUST:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
rgblight_mode(14);
|
|
||||||
#endif
|
|
||||||
layer_on(_ADJUST);
|
|
||||||
} else {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
rgblight_mode(RGB_current_mode);
|
|
||||||
#endif
|
|
||||||
layer_off(_ADJUST);
|
|
||||||
}
|
|
||||||
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 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;
|
|
||||||
break;
|
|
||||||
case EISU:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (keymap_config.swap_lalt_lgui==false) {
|
|
||||||
register_code(KC_LANG2);
|
|
||||||
} else {
|
|
||||||
SEND_STRING(SS_LALT("`"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_LANG2);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
#ifdef KANA_ENABLE
|
|
||||||
case KANA:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if(keymap_config.swap_lalt_lgui==false){
|
|
||||||
register_code(KC_LANG1);
|
|
||||||
}else{
|
|
||||||
SEND_STRING(SS_LALT("`"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_LANG1);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
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;
|
|
||||||
// return process_layer_control(keycode, record, false) ? process_layer_control(keycode, record, true) : true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
startup_user();
|
|
||||||
#endif
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
RGB_current_mode = rgblight_config.mode;
|
|
||||||
#endif
|
|
||||||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
|
||||||
#ifdef SSD1306OLED
|
|
||||||
TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
|
|
||||||
iota_gfx_init(!has_usb()); // turns on the display
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
|
|
||||||
void startup_user()
|
void startup_user()
|
||||||
{
|
{
|
||||||
@@ -431,8 +283,168 @@ void music_scale_user(void)
|
|||||||
PLAY_SONG(music_scale);
|
PLAY_SONG(music_scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
float tone_qwerty;
|
||||||
|
float music_scale;
|
||||||
|
#define PLAY_SONG(tone)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// define variables for reactive RGB
|
||||||
|
int RGB_current_mode;
|
||||||
|
#ifdef ADJUST_MACRO_ENABLE
|
||||||
|
// 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)) {
|
||||||
|
RGBLIGHT(RGB_current_mode);
|
||||||
|
layer_on(layer3);
|
||||||
|
} else {
|
||||||
|
layer_off(layer3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#define ADJUST_MACRO(layer1, layer2, layer3) update_tri_layer_RGB(layer1, layer2, layer3)
|
||||||
|
#else
|
||||||
|
#define ADJUST_MACRO(layer1, layer2, layer3)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
#define RGBLIGHT(mode) rgblight_mode(mode)
|
||||||
|
#else
|
||||||
|
#define RGBLIGHT(mode)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
inline void persistent_default_layer_set(uint16_t default_layer) {
|
||||||
|
eeconfig_update_default_layer(default_layer);
|
||||||
|
default_layer_set(default_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TOG_STATUS = false;
|
||||||
|
|
||||||
|
void toggle_lower_raise_layer(bool pressed, uint16_t dist_layer, uint16_t lower_layer, uint16_t raise_layer) {
|
||||||
|
if (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
|
||||||
|
TOG_STATUS = !TOG_STATUS;
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_mode((dist_layer == _LOWER || dist_layer == _LOW_E) ? 16 : 15);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_on(dist_layer);
|
||||||
|
ADJUST_MACRO(lower_layer, raise_layer, _ADJUST);
|
||||||
|
} else {
|
||||||
|
RGBLIGHT(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
|
||||||
|
TOG_STATUS = false;
|
||||||
|
layer_off(dist_layer);
|
||||||
|
ADJUST_MACRO(lower_layer, raise_layer, _ADJUST);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
if (record->event.pressed) {
|
||||||
|
set_keylog(keycode, record);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case BASE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
PLAY_SONG(tone_qwerty);
|
||||||
|
persistent_default_layer_set(1UL<<_BASE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case BAS_E:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
PLAY_SONG(tone_qwerty);
|
||||||
|
persistent_default_layer_set(1UL<<_BAS_E);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LOWER:
|
||||||
|
toggle_lower_raise_layer(record->event.pressed, _LOWER, _LOWER, _RAISE);
|
||||||
|
break;
|
||||||
|
case LOW_E:
|
||||||
|
toggle_lower_raise_layer(record->event.pressed, _LOW_E, _LOW_E, _RAI_E);
|
||||||
|
break;
|
||||||
|
case RAISE:
|
||||||
|
toggle_lower_raise_layer(record->event.pressed, _RAISE, _LOWER, _RAISE);
|
||||||
|
break;
|
||||||
|
case RAI_E:
|
||||||
|
toggle_lower_raise_layer(record->event.pressed, _RAI_E, _LOW_E, _RAI_E);
|
||||||
|
break;
|
||||||
|
case ADJUST:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
RGBLIGHT(14);
|
||||||
|
layer_on(_ADJUST);
|
||||||
|
} else {
|
||||||
|
RGBLIGHT(RGB_current_mode);
|
||||||
|
layer_off(_ADJUST);
|
||||||
|
}
|
||||||
|
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 RGB_MOD:
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_mode(RGB_current_mode);
|
||||||
|
rgblight_step();
|
||||||
|
RGB_current_mode = rgblight_config.mode;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
case EISU:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (keymap_config.swap_lalt_lgui==false) {
|
||||||
|
register_code(KC_LANG2);
|
||||||
|
} else {
|
||||||
|
SEND_STRING(SS_LALT("`"));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_LANG2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#ifdef KANA_ENABLE
|
||||||
|
case KANA:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if(keymap_config.swap_lalt_lgui==false){
|
||||||
|
register_code(KC_LANG1);
|
||||||
|
}else{
|
||||||
|
SEND_STRING(SS_LALT("`"));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_LANG1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case RGBRST:
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
if (record->event.pressed) {
|
||||||
|
eeconfig_update_rgblight_default();
|
||||||
|
rgblight_enable();
|
||||||
|
RGB_current_mode = rgblight_config.mode;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
startup_user();
|
||||||
|
#endif
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
RGB_current_mode = rgblight_config.mode;
|
||||||
|
#endif
|
||||||
|
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
|
||||||
|
#ifdef SSD1306OLED
|
||||||
|
TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
|
||||||
|
iota_gfx_init(!has_usb()); // turns on the display
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||||
#ifdef SSD1306OLED
|
#ifdef SSD1306OLED
|
||||||
@@ -441,7 +453,7 @@ void matrix_scan_user(void) {
|
|||||||
iota_gfx_task(); // this is what updates the display continuously
|
iota_gfx_task(); // this is what updates the display continuously
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_update(struct CharacterMatrix *dest,
|
inline void matrix_update(struct CharacterMatrix *dest,
|
||||||
const struct CharacterMatrix *source) {
|
const struct CharacterMatrix *source) {
|
||||||
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||||
memcpy(dest->display, source->display, sizeof(dest->display));
|
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||||
@@ -459,76 +471,62 @@ void matrix_update(struct CharacterMatrix *dest,
|
|||||||
#define L_RAI_E (1<<_RAI_E)
|
#define L_RAI_E (1<<_RAI_E)
|
||||||
#define L_ADJUST_TRIE (L_ADJUST|L_RAI_E|L_LOW_E)
|
#define L_ADJUST_TRIE (L_ADJUST|L_RAI_E|L_LOW_E)
|
||||||
|
|
||||||
static void render_logo(struct CharacterMatrix *matrix) {
|
const char helix_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};
|
||||||
|
inline void render_logo(struct CharacterMatrix *matrix) {
|
||||||
|
|
||||||
static char logo[]={
|
matrix_write(matrix, helix_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};
|
|
||||||
matrix_write(matrix, logo);
|
|
||||||
//matrix_write_P(&matrix, PSTR(" Split keyboard kit"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char mac_win_logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
|
||||||
|
inline void render_status(struct CharacterMatrix *matrix) {
|
||||||
void render_status(struct CharacterMatrix *matrix) {
|
|
||||||
|
|
||||||
// Render to mode icon
|
// Render to mode icon
|
||||||
static char logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
|
|
||||||
if(keymap_config.swap_lalt_lgui==false){
|
if(keymap_config.swap_lalt_lgui==false){
|
||||||
matrix_write(matrix, logo[0][0]);
|
matrix_write(matrix, mac_win_logo[0][0]);
|
||||||
matrix_write_P(matrix, PSTR("\n"));
|
matrix_write_P(matrix, PSTR("\n"));
|
||||||
matrix_write(matrix, logo[0][1]);
|
matrix_write(matrix, mac_win_logo[0][1]);
|
||||||
} else {
|
} else {
|
||||||
matrix_write(matrix, logo[1][0]);
|
matrix_write(matrix, mac_win_logo[1][0]);
|
||||||
matrix_write_P(matrix, PSTR("\n"));
|
matrix_write_P(matrix, PSTR("\n"));
|
||||||
matrix_write(matrix, logo[1][1]);
|
matrix_write(matrix, mac_win_logo[1][1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
// 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
|
||||||
char buf[16];
|
char buf[20];
|
||||||
matrix_write_P(matrix, PSTR("\nLayer: "));
|
matrix_write_P(matrix, PSTR("\nLayer: "));
|
||||||
switch (layer_state) {
|
switch (layer_state) {
|
||||||
case L_BASE:
|
case L_BASE:
|
||||||
if (default_layer_state == (1UL<<_BAS_E)) {
|
matrix_write_P(matrix, default_layer_state == (1UL<<_BAS_E) ? PSTR("BaseEx") : PSTR("Base"));
|
||||||
matrix_write_P(matrix, PSTR("Base_Ex"));
|
break;
|
||||||
} else {
|
case L_RAISE:
|
||||||
matrix_write_P(matrix, PSTR("Base"));
|
matrix_write_P(matrix, PSTR("Raise"));
|
||||||
}
|
break;
|
||||||
break;
|
case L_RAI_E:
|
||||||
case L_RAISE:
|
matrix_write_P(matrix, PSTR("RaiseEx"));
|
||||||
matrix_write_P(matrix, PSTR("Raise"));
|
break;
|
||||||
break;
|
case L_LOWER:
|
||||||
case L_RAI_E:
|
matrix_write_P(matrix, PSTR("Lower"));
|
||||||
matrix_write_P(matrix, PSTR("Raise_Ex"));
|
break;
|
||||||
break;
|
case L_LOW_E:
|
||||||
case L_LOWER:
|
matrix_write_P(matrix, PSTR("LowerEx"));
|
||||||
matrix_write_P(matrix, PSTR("Lower"));
|
break;
|
||||||
break;
|
case L_ADJUST:
|
||||||
case L_LOW_E:
|
case L_ADJUST_TRI:
|
||||||
matrix_write_P(matrix, PSTR("Lower_Ex"));
|
case L_ADJUST_TRIE:
|
||||||
break;
|
matrix_write_P(matrix, PSTR("Adjust"));
|
||||||
case L_ADJUST:
|
break;
|
||||||
case L_ADJUST_TRI:
|
default:
|
||||||
case L_ADJUST_TRIE:
|
snprintf(buf, sizeof(buf), "%d", (short)layer_state);
|
||||||
matrix_write_P(matrix, PSTR("Adjust"));
|
matrix_write(matrix, buf);
|
||||||
break;
|
}
|
||||||
default:
|
|
||||||
snprintf(buf, sizeof(buf), "Undef-%d", (short)layer_state);
|
|
||||||
matrix_write(matrix, buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Host Keyboard LED Status
|
matrix_write(matrix, keylog);
|
||||||
char led[32];
|
|
||||||
snprintf(led, sizeof(led), "\n%s %s %s",
|
|
||||||
(host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ",
|
|
||||||
(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
|
|
||||||
(host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
|
|
||||||
matrix_write(matrix, led);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void iota_gfx_task_user(void) {
|
void iota_gfx_task_user(void) {
|
||||||
struct CharacterMatrix matrix;
|
struct CharacterMatrix matrix;
|
||||||
|
|
||||||
|
|||||||
@@ -61,9 +61,9 @@ Raise Layer
|
|||||||
|
|
||||||
```
|
```
|
||||||
,-----------------------------------------. ,-----------------------------------------.
|
,-----------------------------------------. ,-----------------------------------------.
|
||||||
| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
| | | | | | | | | | | | Home |PageUp|
|
| | | | | | | | F12 | | | | Home |PageUp|
|
||||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
| | | | | | | | | | | | End |PageDn|
|
| | | | | | | | | | | | End |PageDn|
|
||||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
@@ -113,9 +113,9 @@ Raise Layer
|
|||||||
|
|
||||||
```
|
```
|
||||||
,-----------------------------------------.,-----------------------------------------.
|
,-----------------------------------------.,-----------------------------------------.
|
||||||
| F1 | F2 | F3 | F4 | F5 | F6 || F7 | F8 | F9 | F10 | F11 | F12 |
|
| | F1 | F2 | F3 | F4 | F5 || F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||||
| | | | | | || | | | | | |
|
| | | | | | || F12 | | | | | |
|
||||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||||
| | | | | | || | | | | | |
|
| | | | | | || | | | | | |
|
||||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||||
|
|||||||
@@ -67,9 +67,9 @@ Raiseレイヤー
|
|||||||
|
|
||||||
```
|
```
|
||||||
,-----------------------------------------. ,-----------------------------------------.
|
,-----------------------------------------. ,-----------------------------------------.
|
||||||
| F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
| | | | | | | | | | | | Home |PageUp|
|
| | | | | | | | F12 | | | | Home |PageUp|
|
||||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||||
| | | | | | | | | | | | End |PageDn|
|
| | | | | | | | | | | | End |PageDn|
|
||||||
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
@@ -129,9 +129,9 @@ Raiseレイヤー
|
|||||||
|
|
||||||
```
|
```
|
||||||
,-----------------------------------------.,-----------------------------------------.
|
,-----------------------------------------.,-----------------------------------------.
|
||||||
| F1 | F2 | F3 | F4 | F5 | F6 || F7 | F8 | F9 | F10 | F11 | F12 |
|
| | F1 | F2 | F3 | F4 | F5 || F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||||
| | | | | | || | | | | | |
|
| | | | | | || F12 | | | | | |
|
||||||
|------+------+------+------+------+------||------+------+------+------+------+------|
|
|------+------+------+------+------+------||------+------+------+------+------+------|
|
||||||
| | | | | | || | | | | | |
|
| | | | | | || | | | | | |
|
||||||
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
,------+------+------+------+------+------+------||------+------+------+------+------+------+------.
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
// To let configuration know this is of type EH, which will force I2C irregardless of user config
|
// To let configuration know this is of type EH, which will force I2C irregardless of user config
|
||||||
#define EH
|
#define EH
|
||||||
|
// The 'EH' only uses I2C
|
||||||
|
#define USE_I2C
|
||||||
|
|
||||||
#include "config_common.h"
|
#include "config_common.h"
|
||||||
|
|
||||||
|
|||||||
+74
-11
@@ -3,18 +3,81 @@
|
|||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#define LAYOUT( \
|
// readability
|
||||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
|
#define ____ KC_NO
|
||||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
|
|
||||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
|
/*
|
||||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
|
* LAYOUT OPTIONS
|
||||||
K400, K401, K402, K406, K410, K411, K412, K413, K414, K415 \
|
*
|
||||||
|
* Not all of these options are supported by the plates offered during the
|
||||||
|
* October 2017 group buy, but all of them are supported by the PCB.
|
||||||
|
*
|
||||||
|
* See the pull request for more information:
|
||||||
|
* https://github.com/qmk/qmk_firmware/pull/3426
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Backspace
|
||||||
|
* - Split Backspace = K013 and K014
|
||||||
|
* - 2u Backspace = K014, delete K013
|
||||||
|
*
|
||||||
|
* Enter
|
||||||
|
* - ANSI Enter = K214, delete K212 (KC_NUHS)
|
||||||
|
* - ISO Enter = K214, delete K114 (ANSI Backslash)
|
||||||
|
*
|
||||||
|
* Left Shift
|
||||||
|
* - ANSI 2.25u: K300, delete K301 (KC_NUBS)
|
||||||
|
* - ISO 1.25u: K300, K301 is KC_NUBS
|
||||||
|
*
|
||||||
|
* Right Shift:
|
||||||
|
* - Full 2.75u = K313, delete K312 and K314
|
||||||
|
* - Split 1.75u + 1u = K312 and K314, delete K313
|
||||||
|
*
|
||||||
|
* Right Ctrl
|
||||||
|
* - K412 in the default keymap, but not supported with the plates offered
|
||||||
|
* during the October 2017 group buy.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define LAYOUT_all( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
|
||||||
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
|
||||||
|
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
|
||||||
|
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, \
|
||||||
|
K400, K401, K402, K406, K410, K411, K412, K413, K414, K415 \
|
||||||
) { \
|
) { \
|
||||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
|
||||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, K114, K115 }, \
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, ____, K114, K115 }, \
|
||||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO, K214, K215 }, \
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214, K215 }, \
|
||||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315 }, \
|
||||||
{ K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
|
{ K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413, K414, K415 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_iso( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
|
||||||
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K115, \
|
||||||
|
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, K215, \
|
||||||
|
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, \
|
||||||
|
K400, K401, K402, K406, K410, K411, K413, K414, K415 \
|
||||||
|
) { \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, ____, K014, K015 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, ____, ____, K115 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214, K215 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, K314, K315 }, \
|
||||||
|
{ K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, ____, K413, K414, K415 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LAYOUT_ansi( \
|
||||||
|
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, \
|
||||||
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
|
||||||
|
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K214, K215, \
|
||||||
|
K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, K315, \
|
||||||
|
K400, K401, K402, K406, K410, K411, K413, K414, K415 \
|
||||||
|
) { \
|
||||||
|
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, ____, K014, K015 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, ____, K114, K115 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, ____, ____, K214, K215 }, \
|
||||||
|
{ K300, ____, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____, K314, K315 }, \
|
||||||
|
{ K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, ____, K413, K414, K415 } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -2,12 +2,20 @@
|
|||||||
"keyboard_name": "Noxary 268",
|
"keyboard_name": "Noxary 268",
|
||||||
"url": "https://www.instagram.com/noxaryco/",
|
"url": "https://www.instagram.com/noxaryco/",
|
||||||
"maintainer": "QMK Community",
|
"maintainer": "QMK Community",
|
||||||
"bootloader": "DFU",
|
|
||||||
"width": 16,
|
"width": 16,
|
||||||
"height": 5,
|
"height": 5,
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT": {
|
"LAYOUT_all": {
|
||||||
"layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"\\", "x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
|
"key_count": 72,
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"- _", "x":11, "y":0}, {"label":"= +", "x":12, "y":0}, {"label":"Back Space", "x":13, "y":0}, {"label":"Back Space", "x":14, "y":0}, {"label":"` ~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"[ {", "x":11.5, "y":1}, {"label":"] }", "x":12.5, "y":1}, {"label":"\\ |", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":"; :", "x":10.75, "y":2}, {"label":"' \"", "x":11.75, "y":2}, {"label":"# ~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Page Up", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"\\ |", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":", <", "x":9.25, "y":3}, {"label":". >", "x":10.25, "y":3}, {"label":"/ ?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3}, {"label":"Shift", "x":13.25, "y":3, "w":0.75}, {"label":"Up", "x":14, "y":3}, {"label":"Page Down", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}]
|
||||||
|
},
|
||||||
|
"LAYOUT_iso": {
|
||||||
|
"key_count": 68,
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"£", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
|
||||||
|
},
|
||||||
|
"LAYOUT_ansi": {
|
||||||
|
"key_count": 67,
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"~", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Delete", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"GUI", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Fn", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Helpful defines
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
|
||||||
|
// 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 _BL 0
|
||||||
|
#define _FL1 1
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* _BL: Base Layer (Default)
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BSpc| Grv|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Del|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '| Enter|PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space | Alt| Fn|▓|Lef|Dow|Rght|
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_BL] = LAYOUT_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_GRV,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* _FL1: Function Layer 1
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| PScr| |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | |RST| | | | | | | | | | Ins|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | | | | | | | | | | |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | | | | | |Bl-|Bl+| |Mute |Vol+| End|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | BL_Toggle | | |▓| |Vol-| |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_FL1] = LAYOUT_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_PSCR, _______,
|
||||||
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_VOLU, KC_END,
|
||||||
|
_______, _______, _______, BL_TOGG, _______, _______, _______, KC_VOLD, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
|
DDRB |= (1 << 6);
|
||||||
|
PORTB |= (1 << 6);
|
||||||
|
} else {
|
||||||
|
DDRB &= ~(1 << 6);
|
||||||
|
PORTB &= ~(1 << 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_KANA)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# ansi
|
||||||
|
|
||||||
|
A sample keymap for the Noxary 268 in ANSI.
|
||||||
|
|
||||||
|
[Key Layout](http://www.keyboard-layout-editor.com/##@@=Esc&=!%0A1&=/@%0A2&=#%0A3&=$%0A4&=%25%0A5&=%5E%0A6&=/&%0A7&=*%0A8&=(%0A9&=)%0A0&=/_%0A-&=+%0A/=&_w:2;&=Backspace&=~%0A%60;&@_w:1.5;&=Tab&=Q&=W&=E&=R&=T&=Y&=U&=I&=O&=P&=%7B%0A%5B&=%7D%0A%5D&_w:1.5;&=%7C%0A%5C&=Delete;&@_w:1.75;&=Caps%20Lock&=A&=S&=D&=F&=G&=H&=J&=K&=L&=/:%0A/;&=%22%0A%27&_w:2.25;&=Enter&=PgUp;&@_w:2.25;&=Shift&=Z&=X&=C&=V&=B&=N&=M&=%3C%0A,&=%3E%0A.&=?%0A//&_w:1.75;&=Shift&=%E2%86%91&=PgDn;&@_w:1.25;&=Ctrl&_w:1.25;&=GUI&_w:1.25;&=Alt&_a:7&w:6.25;&=&_a:4&w:1.25;&=Alt&_w:1.25;&=Fn&_x:0.5;&=%E2%86%90&=%E2%86%93&=%E2%86%92)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "268.h"
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
// Helpful defines
|
// Helpful defines
|
||||||
#define _______ KC_TRNS
|
#define _______ KC_TRNS
|
||||||
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* |Ctrl|Win |Alt | Space |Alt|Mo(1)|Ctrl|Lef|Dow|Rght|
|
* |Ctrl|Win |Alt | Space |Alt|Mo(1)|Ctrl|Lef|Dow|Rght|
|
||||||
* `----------------------------------------------------------------'
|
* `----------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_BL] = LAYOUT(
|
[_BL] = LAYOUT_all(
|
||||||
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_BSLS, KC_BSPC, KC_GRV,
|
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_BSLS, KC_BSPC, KC_GRV,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
|
||||||
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | BL_Toggle | | | | |Vol-| |
|
* | | | | BL_Toggle | | | | |Vol-| |
|
||||||
* `----------------------------------------------------------------'
|
* `----------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FL1] = LAYOUT(
|
[_FL1] = LAYOUT_all(
|
||||||
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_PSCR, _______,
|
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_PSCR, _______,
|
||||||
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | |
|
* | | | | | | | | | | |
|
||||||
* `----------------------------------------------------------------'
|
* `----------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FL2] = LAYOUT(
|
[_FL2] = LAYOUT_all(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
|||||||
@@ -0,0 +1,103 @@
|
|||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
// Helpful defines
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
|
||||||
|
// 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 _BL 0
|
||||||
|
#define _FL1 1
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* _BL: Base Layer (Default)
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| BSpc| Grv|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Enter| Del|
|
||||||
|
* |------------------------------------------------------. |----|
|
||||||
|
* |Caps | A| S| D| F| G| H| J| K| L| ;| '| #| |PgUp|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Sft | \| Z| X| C| V| B| N| M| ,| .| /|Shift | Up|PgDn|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* |Ctrl|Win |Alt | Space | Alt| Fn|▓|Lef|Dow|Rght|
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_BL] = LAYOUT_iso(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* _FL1: Function Layer 1
|
||||||
|
* ,----------------------------------------------------------------.
|
||||||
|
* | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| PScr| |
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | |RST| | | | | | | | | | Ins|
|
||||||
|
* |------------------------------------------------------. |----|
|
||||||
|
* | | | | | | | | | | | | | | |Home|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | | | | | | |Bl-|Bl+| |Mute |Vol+| End|
|
||||||
|
* |----------------------------------------------------------------|
|
||||||
|
* | | | | BL_Toggle | | |▓| |Vol-| |
|
||||||
|
* `----------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_FL1] = LAYOUT_iso(
|
||||||
|
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_PSCR, _______,
|
||||||
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_VOLU, KC_END,
|
||||||
|
_______, _______, _______, BL_TOGG, _______, _______, _______, KC_VOLD, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
|
||||||
|
DDRB |= (1 << 6);
|
||||||
|
PORTB |= (1 << 6);
|
||||||
|
} else {
|
||||||
|
DDRB &= ~(1 << 6);
|
||||||
|
PORTB &= ~(1 << 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_COMPOSE)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usb_led & (1 << USB_LED_KANA)) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# iso
|
||||||
|
|
||||||
|
A sample keymap for the Noxary 268 in ISO.
|
||||||
|
|
||||||
|
[Key Layout](http://www.keyboard-layout-editor.com/##@@=Esc&=!%0A1&=%22%0A2&=/£/;%0A3&=$%0A4&=%25%0A5&=%5E%0A6&=/&%0A7&=*%0A8&=(%0A9&=)%0A0&=/_%0A-&=+%0A/=&_w:2;&=Backspace&=~%0A%60;&@_w:1.5;&=Tab&=Q&=W&=E&=R&=T&=Y&=U&=I&=O&=P&=%7B%0A%5B&=%7D%0A%5D&_x:0.25&w:1.25&h:2&w2:1.5&h2:1&x2:-0.25;&=Enter&=Delete;&@_w:1.75;&=Caps%20Lock&=A&=S&=D&=F&=G&=H&=J&=K&=L&=/:%0A/;&=/@%0A%27&=~%0A#&_x:1.25;&=PgUp;&@_w:1.25;&=Shift&=%7C%0A%5C&=Z&=X&=C&=V&=B&=N&=M&=%3C%0A,&=%3E%0A.&=?%0A//&_w:1.75;&=Shift&=%E2%86%91&=PgDn;&@_w:1.25;&=Ctrl&_w:1.25;&=GUI&_w:1.25;&=Alt&_a:7&w:6.25;&=&_a:4&w:1.25;&=Alt&_w:1.25;&=Fn&_x:0.5;&=%E2%86%90&=%E2%86%93&=%E2%86%92)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "268.h"
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
// Helpful defines
|
// Helpful defines
|
||||||
#define _______ KC_TRNS
|
#define _______ KC_TRNS
|
||||||
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* |Ctrl|Win |Alt | Space |Win|Ctrl|Ctrl|Lef |Dow|Rght|
|
* |Ctrl|Win |Alt | Space |Win|Ctrl|Ctrl|Lef |Dow|Rght|
|
||||||
* `----------------------------------------------------------------'
|
* `----------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_BL] = LAYOUT(
|
[_BL] = LAYOUT_all(
|
||||||
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_BSLS, KC_GRV, KC_DEL,
|
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_BSLS, KC_GRV, KC_DEL,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
|
||||||
@@ -44,8 +44,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | BL_Toggle | | | | |Vol-| |
|
* | | | | BL_Toggle | | | | |Vol-| |
|
||||||
* `----------------------------------------------------------------'
|
* `----------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FL1] = LAYOUT(
|
[_FL1] = LAYOUT_all(
|
||||||
_______, 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_INS,
|
_______, 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_INS,
|
||||||
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
_______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_MUTE, KC_VOLU, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_MUTE, KC_VOLU, _______,
|
||||||
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | | | | |
|
* | | | | | | | | | | |
|
||||||
* `----------------------------------------------------------------'
|
* `----------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FL2] = LAYOUT(
|
[_FL2] = LAYOUT_all(
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ All files related to firmware of Noxary Keyboards designed by Rozakiin.
|
|||||||
|
|
||||||
### Keyboards
|
### Keyboards
|
||||||
|
|
||||||
1. 268. Original repo [here](https://github.com/Rozakiin/Noxary_Firmware). Imported by kind [permission](https://github.com/Rozakiin/Noxary_Firmware/issues/1) of @rozakiin
|
- [268](./268/): Original repo [here](https://github.com/Rozakiin/Noxary_Firmware). Imported by kind [permission](https://github.com/Rozakiin/Noxary_Firmware/issues/1) of @rozakiin
|
||||||
@@ -1,29 +1,36 @@
|
|||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
#define MY_LESC LT(1, KC_ESC)
|
#define MY_ESC LT(1, KC_ESC)
|
||||||
#define MY_RENT LT(1, KC_ENT)
|
#define MY_ENT LT(1, KC_ENT)
|
||||||
#define MY_LCA TD(TD_LCA)
|
#define MY_APP LT(2, KC_APP)
|
||||||
#define MY_RCA TD(TD_RCA)
|
|
||||||
#define MY_LGA TD(TD_LGA)
|
#define MY_LCA TD(TD_LCTL_ALT)
|
||||||
#define MY_RGA TD(TD_RGA)
|
#define MY_RCA TD(TD_RCTL_ALT)
|
||||||
#define MY_APP TD(TD_APP_HYPR)
|
#define MY_LGA TD(TD_LGUI_ALT)
|
||||||
|
#define MY_RGA TD(TD_RGUI_ALT)
|
||||||
|
#define MY_LCG TD(TD_LCTL_GUI)
|
||||||
|
#define MY_RCG TD(TD_RCTL_GUI)
|
||||||
|
#define MY_LSH TD(TD_LSFT_HPR)
|
||||||
|
#define MY_RSH TD(TD_RSFT_HPR)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
TD_LCA,
|
TD_LCTL_ALT,
|
||||||
TD_RCA,
|
TD_RCTL_ALT,
|
||||||
TD_LGA,
|
TD_LGUI_ALT,
|
||||||
TD_RGA,
|
TD_RGUI_ALT,
|
||||||
TD_APP_HYPR
|
TD_LCTL_GUI,
|
||||||
|
TD_RCTL_GUI,
|
||||||
|
TD_LSFT_HPR,
|
||||||
|
TD_RSFT_HPR
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
LAYOUT_60_ansi(
|
LAYOUT_60_ansi(
|
||||||
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_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_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_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,
|
||||||
MY_LESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MY_RENT,
|
MY_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MY_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,
|
MY_LSH, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MY_RSH,
|
||||||
MY_LGA, KC_LALT, MY_LCA, KC_SPC, MY_RCA, KC_RALT, MY_APP, MY_RGA),
|
MY_LGA, MY_LCG, MY_LCA, KC_SPC, MY_RCA, MY_RCG, MY_APP, MY_RGA),
|
||||||
|
|
||||||
LAYOUT_60_ansi(
|
LAYOUT_60_ansi(
|
||||||
KC_TRNS, 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_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,
|
||||||
@@ -31,6 +38,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
|
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, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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),
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -66,7 +80,8 @@ int cur_dance(qk_tap_dance_state_t *state) {
|
|||||||
return UNKNOWN_TAP;
|
return UNKNOWN_TAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define my_dance_combo(N, K1, K2) \
|
#define my_dance_combo(N, K0, REGFN, UNREGFN) my_dance_combo_expanded(N, K0, REGFN, UNREGFN)
|
||||||
|
#define my_dance_combo_expanded(N, K0, REGFN, UNREGFN) \
|
||||||
static tap N ## _state = { \
|
static tap N ## _state = { \
|
||||||
.is_press_action = true, \
|
.is_press_action = true, \
|
||||||
.state = 0 \
|
.state = 0 \
|
||||||
@@ -75,45 +90,57 @@ static tap N ## _state = { \
|
|||||||
void N ## _finished(qk_tap_dance_state_t *state, void *user_data) { \
|
void N ## _finished(qk_tap_dance_state_t *state, void *user_data) { \
|
||||||
N ## _state.state = cur_dance(state); \
|
N ## _state.state = cur_dance(state); \
|
||||||
switch (N ## _state.state) { \
|
switch (N ## _state.state) { \
|
||||||
case SINGLE_TAP: \
|
case SINGLE_TAP: case SINGLE_HOLD: \
|
||||||
case SINGLE_HOLD: \
|
register_code(K0); \
|
||||||
register_code(K1); \
|
|
||||||
break; \
|
break; \
|
||||||
case DOUBLE_TAP: \
|
case DOUBLE_TAP: case DOUBLE_SINGLE_TAP: case DOUBLE_HOLD: \
|
||||||
case DOUBLE_SINGLE_TAP: \
|
register_code(K0); \
|
||||||
case DOUBLE_HOLD: \
|
REGFN; \
|
||||||
register_code(K1); \
|
|
||||||
register_code(K2); \
|
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
void N ## _reset(qk_tap_dance_state_t *state, void *user_data) { \
|
void N ## _reset(qk_tap_dance_state_t *state, void *user_data) { \
|
||||||
switch (N ## _state.state) { \
|
switch (N ## _state.state) { \
|
||||||
case SINGLE_TAP: \
|
case SINGLE_TAP: case SINGLE_HOLD: \
|
||||||
case SINGLE_HOLD: \
|
unregister_code(K0); \
|
||||||
unregister_code(K1); \
|
|
||||||
break; \
|
break; \
|
||||||
case DOUBLE_TAP: \
|
case DOUBLE_TAP: case DOUBLE_SINGLE_TAP: case DOUBLE_HOLD: \
|
||||||
case DOUBLE_SINGLE_TAP: \
|
UNREGFN; \
|
||||||
case DOUBLE_HOLD: \
|
unregister_code(K0); \
|
||||||
unregister_code(K2); \
|
|
||||||
unregister_code(K1); \
|
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
N ## _state.state = 0; \
|
N ## _state.state = 0; \
|
||||||
}
|
}
|
||||||
|
|
||||||
my_dance_combo(lca, KC_LCTL, KC_LALT)
|
#define my_dance_reg_code_1(K1) register_code(K1)
|
||||||
my_dance_combo(rca, KC_RCTL, KC_RALT)
|
#define my_dance_unreg_code_1(K1) unregister_code(K1)
|
||||||
my_dance_combo(lga, KC_LGUI, KC_LALT)
|
#define my_dance_combo_1(N, K0, K1) \
|
||||||
my_dance_combo(rga, KC_RGUI, KC_RALT)
|
my_dance_combo(N, K0, my_dance_reg_code_1(K1), my_dance_unreg_code_1(K1))
|
||||||
|
|
||||||
|
#define my_dance_reg_code_3(K1, K2, K3) \
|
||||||
|
do { register_code(K1); register_code(K2); register_code(K3); } while (0)
|
||||||
|
#define my_dance_unreg_code_3(K1, K2, K3) \
|
||||||
|
do { unregister_code(K3); unregister_code(K2); unregister_code(K1); } while (0)
|
||||||
|
#define my_dance_combo_3(N, K0, K1, K2, K3) \
|
||||||
|
my_dance_combo(N, K0, my_dance_reg_code_3(K1, K2, K3), my_dance_unreg_code_3(K1, K2, K3))
|
||||||
|
|
||||||
|
my_dance_combo_1(lca, KC_LCTL, KC_LALT)
|
||||||
|
my_dance_combo_1(rca, KC_RCTL, KC_RALT)
|
||||||
|
my_dance_combo_1(lga, KC_LGUI, KC_LALT)
|
||||||
|
my_dance_combo_1(rga, KC_RGUI, KC_RALT)
|
||||||
|
my_dance_combo_1(lcg, KC_LCTL, KC_LGUI)
|
||||||
|
my_dance_combo_1(rcg, KC_RCTL, KC_RGUI)
|
||||||
|
my_dance_combo_3(lsh, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI)
|
||||||
|
my_dance_combo_3(rsh, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI)
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
[TD_LCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lca_finished, lca_reset),
|
[TD_LCTL_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lca_finished, lca_reset),
|
||||||
[TD_RCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rca_finished, rca_reset),
|
[TD_RCTL_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rca_finished, rca_reset),
|
||||||
[TD_LGA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lga_finished, lga_reset),
|
[TD_LGUI_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lga_finished, lga_reset),
|
||||||
[TD_RGA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rga_finished, rga_reset),
|
[TD_RGUI_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rga_finished, rga_reset),
|
||||||
|
[TD_LCTL_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lcg_finished, lcg_reset),
|
||||||
[TD_APP_HYPR] = ACTION_TAP_DANCE_DOUBLE(KC_APP, KC_HYPR)
|
[TD_RCTL_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rcg_finished, rcg_reset),
|
||||||
|
[TD_LSFT_HPR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lsh_finished, lsh_reset),
|
||||||
|
[TD_RSFT_HPR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rsh_finished, rsh_reset)
|
||||||
};
|
};
|
||||||
@@ -1,4 +1,13 @@
|
|||||||
# Satan GH60 ANSI Layout that uses tap dance
|
# Satan GH60 ANSI Layout that uses tap dance
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- Enter and Esc keys activate layer Fn1 when held, and work as usual when tapped.
|
||||||
|
- Menu key activates layer Fn2 when held, and works as usual when tapped.
|
||||||
|
- For the next keys a first key is used when held, and a second one is used when tapped 2 times:
|
||||||
|
- Shift and Hyper;
|
||||||
|
- Win and Win+Alt;
|
||||||
|
- Ctrl and Ctrl+Alt;
|
||||||
|
- Alt and Win+Ctrl.
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ Make example for this keyboard (after setting up your build environment):
|
|||||||
|
|
||||||
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
|
||||||
|
|
||||||
## Flashing Instructions
|
## Flashing Instructions (Win)
|
||||||
|
|
||||||
*Read all the instructions, there are a few warnings of things to avoid doing to avoid bricking your Tada68. __It is much too easy to do!__*
|
*Read all the instructions, there are a few warnings of things to avoid doing to avoid bricking your Tada68. __It is much too easy to do!__*
|
||||||
|
|
||||||
@@ -29,3 +29,30 @@ $ make tada68:default:flashbin
|
|||||||
4) Delete `FLASH.BIN` from the TADA drive and copy `tada68_default.bin` that was generated at the root of the qmk directory into the TADA drive.
|
4) Delete `FLASH.BIN` from the TADA drive and copy `tada68_default.bin` that was generated at the root of the qmk directory into the TADA drive.
|
||||||
|
|
||||||
5) *Do not eject the USB device.* Hit ESC on the keyboard. The lights will stop flashing and your firmware is loaded!
|
5) *Do not eject the USB device.* Hit ESC on the keyboard. The lights will stop flashing and your firmware is loaded!
|
||||||
|
|
||||||
|
## Flashing Instructions (Mac)
|
||||||
|
|
||||||
|
*When flashing the keyboard from a Mac, you must delete some files that are automatically created by the operating system in order to prevent bricking your keyboard. Original information from /u/pawlwall from https://www.reddit.com/r/MechanicalKeyboards/comments/520cov/using_an_originative_tada86_on_a_mac/*
|
||||||
|
|
||||||
|
1) from the `qmk_firmware\` directory run:
|
||||||
|
```
|
||||||
|
$ make tada68:default:flashbin
|
||||||
|
```
|
||||||
|
|
||||||
|
2) Connect your keyboard to your Mac, hit the reset button on the bottom of the TADA, the lights will start flashing.
|
||||||
|
|
||||||
|
3) You'll see a new drive on your computer called TADA68. Backup the original factory `FLASH.BIN` file that's inside it.
|
||||||
|
|
||||||
|
4) Open the terminal and cd to the folder where the keyboard has been mounted
|
||||||
|
|
||||||
|
`cd /Volumes/TADA68\ /`
|
||||||
|
|
||||||
|
5) Copy over your new firmware to the keyboard
|
||||||
|
|
||||||
|
`cp -r <path to your qmk_firmware folder>/FLASH.bin .`
|
||||||
|
|
||||||
|
6) Remove files that MacOS automatically created which interfere with the keyboard
|
||||||
|
|
||||||
|
`rm -fr .Trashes/ .fseventsd/ ._.Trashes ._FLASH.bin`
|
||||||
|
|
||||||
|
7) Eject the USB device or hit ESC on the keyboard. The lights will stop flashing and your firmware is loaded!
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/* Copyright 2018 Carlos Filoteo
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
// place overrides here
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
/* Copyright 2018 Carlos Filoteo
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
#ifdef LED_ENABLE
|
||||||
|
#include "protocol/serial.h"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "keymap_norwegian.h"
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define LT3_TAB LT(3, KC_TAB)
|
||||||
|
#define MT_RSFT_ENT MT(MOD_RSFT, KC_ENT)
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
LED_TOG = SAFE_RANGE,
|
||||||
|
LED_CHG
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Base Layer - L0
|
||||||
|
* ,-------------------------------------------------------------------------.
|
||||||
|
* | Esc | Q | W | E | R | T | Y | U | I | O | P |Bspace |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* |Tab/L3| A | S | D | F | G | H | J | K | L | ' |Ent/RS|
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | Shift | Z | X | C | V | B | N | M | , | . | Up | L4 |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | Ctrl| Gui | L4 | Alt | L2 | Space | L1 | Ctrl| Left| Down|Right|
|
||||||
|
* `-------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
LAYOUT( /* Base - L0 */
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
LT3_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_APOS, MT_RSFT_ENT,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MO(4),
|
||||||
|
KC_LCTL, KC_LGUI, MO(4), KC_LALT, MO(2), KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
/* FN Layer 1
|
||||||
|
* ,-------------------------------------------------------------------------.
|
||||||
|
* | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Delete|
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | | | | | | | + | = | * | / |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | | | | | | | - | _ | PgUp| |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | |Capsl| | | | | Home| PgDn| End |
|
||||||
|
* `-------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
LAYOUT( /* Right modifier - L1 */
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, NO_PLUS, NO_EQL, NO_ASTR, NO_SLSH,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, NO_MINS, NO_UNDS, KC_PGUP, _______,
|
||||||
|
_______, _______, _______, KC_CAPS, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||||
|
),
|
||||||
|
|
||||||
|
/* FN Layer 2
|
||||||
|
* ,-------------------------------------------------------------------------.
|
||||||
|
* | § | ! | " | # | ¤ | % | & | / | = | + | \ | Delete|
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | ? | { | [ | ( | ) | ] | } | F10 | F11 | F12 |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | PgUp| |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | |Capsl| | | | | Home| PgDn| End |
|
||||||
|
* `-------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
LAYOUT( /* Left modifier - L2 */
|
||||||
|
NO_SECT, KC_EXCLAIM, NO_QUO2, KC_HASH, NO_BULT, KC_PERCENT, NO_AMPR, NO_SLSH, NO_EQL, NO_PLUS, NO_BSLS, KC_DELETE,
|
||||||
|
_______, _______, NO_QUES, NO_LCBR, NO_LBRC, NO_LPRN, NO_RPRN, NO_RBRC, NO_RCBR, KC_F10, KC_F11, KC_F12,
|
||||||
|
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_PGUP, _______,
|
||||||
|
_______, _______, _______, KC_CAPS, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||||
|
),
|
||||||
|
|
||||||
|
/* FN Layer 3
|
||||||
|
* ,-------------------------------------------------------------------------.
|
||||||
|
* | Esc | Calc|Webhm| Comp|Webrf| | | | | |PrtSc| |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | | | | | |VolDn|VolUp| | | |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | |LEDtg|LEDch| | |RESET| | Mute| |MouB1|MousU|MouB2|
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | | | | | | |MousL|MousD|MousR|
|
||||||
|
* `-------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
LAYOUT( /* Hold Tab down - L3 */
|
||||||
|
KC_ESC, KC_CALC, KC_WHOM, KC_MYCM, KC_WREF, _______, _______, _______, _______, _______, KC_PSCR, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, _______, _______, _______,
|
||||||
|
_______, LED_TOG, LED_CHG, _______, _______, RESET, _______, KC_MUTE, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
|
||||||
|
),
|
||||||
|
|
||||||
|
/* FN Layer 4
|
||||||
|
* ,-------------------------------------------------------------------------.
|
||||||
|
* | | | @ | £ | $ | ~ | | ¨ | ´ | ` | Å | |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | | € | | | | | ^ | Ø | Æ | |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | < | | | | | | µ | | | | |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | | | | | | | | L5 | | | |
|
||||||
|
* `-------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
LAYOUT( /* Norsk - L4 */
|
||||||
|
_______, _______, NO_AT, NO_PND, NO_DLR, NO_TILD, _______, NO_QUOT, NO_ACUT, NO_GRV, NO_AA, _______,
|
||||||
|
_______, _______, _______, NO_EURO, _______, _______, _______, _______, NO_CIRC, NO_OSLH, NO_AE, _______,
|
||||||
|
_______, NO_LESS, _______, _______, _______, _______, _______, NO_MU, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, TO(5), _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* GAMING Layer (toggle on and off)
|
||||||
|
* ,-------------------------------------------------------------------------.
|
||||||
|
* | Esc | Q | W | E | R | T | Y | F1 | F2 | F3 | F4 |Bspace |
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | Tab | A | S | D | F | G | H | F5 | F6 | F7 | F8 | Enter|
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | Shift | 1 | 2 | 3 | 4 | 5 | 6 | F9 | F10 | F11 | Up |TOGGL|
|
||||||
|
* |-------------------------------------------------------------------------+
|
||||||
|
* | Ctrl| Z | X | C | B | Space | M | V |Left |Down |Right|
|
||||||
|
* `-------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
LAYOUT( /* GAMING, toggled on and off - L5 */
|
||||||
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC,
|
||||||
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_F5, KC_F6, KC_F7, KC_F8, KC_ENT,
|
||||||
|
KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_UP, TO(0),
|
||||||
|
KC_LCTL, KC_Z, KC_X, KC_C, KC_B, KC_SPC, KC_M, KC_V, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
//LED keymap functions
|
||||||
|
#ifdef LED_ENABLE
|
||||||
|
void led_chmode(void) {
|
||||||
|
serial_send(101);
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_toggle(void) {
|
||||||
|
serial_send(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
switch(keycode) {
|
||||||
|
case LED_TOG:
|
||||||
|
#ifdef LED_ENABLE
|
||||||
|
led_toggle();
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
case LED_CHG:
|
||||||
|
#ifdef LED_ENABLE
|
||||||
|
led_chmode();
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# UT47 Nordic keymap
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[KLE - Nordic layout](http://www.keyboard-layout-editor.com/##@_name=UT47%20-%20Nordic%20layout&author=neonSpork%3B&@_a:7%3B&=Esc&=Q&=W&=E&=R&=T&=Y&=U&=I&=O&=P&_w:1.5%3B&=Backspace%3B&@_c=%23c75656&a:4&w:1.25%3B&=%0A%0A%0AL3%0A%0A%0A%0A%0A%0ATab&_c=%23cccccc&a:7%3B&=A&=S&=D&=F&=G&=H&=J&=K&=L&='&_a:4&w:1.25%3B&=Enter%0A%0A%0ARShift%3B&@_a:7&w:1.5%3B&=LShift&=Z&=X&=C&=V&=B&=N&=M&=,&=.&=%2F&uarr%2F%3B&_c=%23bb45c4%3B&=L4%3B&@_c=%23cccccc%3B&=LCtrl&=LGUI&_c=%23bb45c4%3B&=L4&_c=%23cccccc%3B&=LAlt&_c=%2333aaff&w:1.25%3B&=L2&_c=%23cccccc&w:2%3B&=Space&_c=%23f5b047&w:1.25%3B&=L1&_c=%23cccccc%3B&=RCtrl&=%2F&larr%2F%3B&=%2F&darr%2F%3B&=%2F&rarr%2F%3B%3B&@_y:0.25&c=%23f5b047%3B&=%7C&=1&=2&=3&=4&=5&=6&=7&=8&=9&=0&_w:1.5%3B&=Delete%3B&@_w:1.25%3B&=&=&=&=&=&=&=&=&=+&=%2F=&=*&_w:1.25%3B&=%5C%3B&@_w:1.5%3B&=&=&=&=&=&=&=&=&=-&=%2F_&=PgUp&=%3B&@=&=&=&=Caps&_w:1.25%3B&=&_w:2%3B&=&_w:1.25%3B&=&=&=Home&=PgDn&=End%3B&@_y:0.25&c=%2333aaff%3B&=%C2%A7&=!&=%22&=%23&=%C2%A4&=%25&=%2F&&=%2F%2F&=%2F=&=+&=%5C&_w:1.5%3B&=Delete%3B&@_w:1.25%3B&=&=&=%3F&=%7B&=%5B&=(&=)&=%5D&=%7D&=F10&=F11&_w:1.25%3B&=F12%3B&@_w:1.5%3B&=&=F1&=F2&=F3&=F4&=F5&=F6&=F7&=F8&=F9&=PgUp&=%3B&@=&=&=&=Caps&_w:1.25%3B&=&_w:2%3B&=&_w:1.25%3B&=&=&=Home&=PgDn&=End%3B&@_y:0.25&c=%23c75656%3B&=Esc&=Calc&_a:5%3B&=www%0A%0A%0A%0A%0A%0Ahome&=My%0A%0A%0A%0A%0A%0AComp&=www%0A%0A%0A%0A%0A%0ARefresh&_a:7%3B&=&=&=&=&=&=PrtScr&_w:1.5%3B&=%3B&@_w:1.25%3B&=&=&=&=&=&=&=&=VolDn&=VolUp&=&=&_w:1.25%3B&=%3B&@_w:1.5%3B&=&=LEDtg&=LEDch&=&=&=RESET&=&=Mute&=&_a:5%3B&=Mouse%0AClick%0A%0A%0A%0A%0ALeft&=Mouse%0A%0A%0A%0A%0A%0AUp&=Mouse%0AClick%0A%0A%0A%0A%0ARight%3B&@_a:7%3B&=&=&=&=&_w:1.25%3B&=&_w:2%3B&=&_w:1.25%3B&=&=&_a:5%3B&=Mouse%0A%0A%0A%0A%0A%0ALeft&=Mouse%0A%0A%0A%0A%0A%0ADown&=Mouse%0A%0A%0A%0A%0A%0ARight%3B&@_y:0.25&c=%23bb45c4&a:7%3B&=&=&=%2F@&=%C2%A3&=$&=~&=&=%C2%A8&=%C2%B4&=%60&=%C3%85&_w:1.5%3B&=%3B&@_w:1.25%3B&=&=&=&=%E2%82%AC&=&=&=&=&=%5E&=%C3%98&=%C3%86&_w:1.25%3B&=%3B&@_w:1.5%3B&=&=%3C&=&=&=&=&=&=%C2%B5&=&=&=&=%3B&@=&=&=&=&_w:1.25%3B&=&_w:2%3B&=&_w:1.25%3B&=&_c=%2345b564&a:5%3B&=L5%0A%0A%0A%0A%0A%0AON&_c=%23bb45c4&a:7%3B&=&=&=%3B&@_y:0.25&c=%2345b564%3B&=Esc&=Q&=W&=E&=R&=T&=Y&=F1&=F2&=F3&=F4&_w:1.5%3B&=Backspace%3B&@_w:1.25%3B&=Tab&=A&=S&=D&=F&=G&=H&=F5&=F6&=F7&=F8&_w:1.25%3B&=Enter%3B&@_w:1.5%3B&=Shift&=1&=2&=3&=4&=5&=6&=F9&=F10&=F11&=%2F&uarr%2F%3B&_c=%23cccccc&a:5%3B&=L5%0A%0A%0A%0A%0A%0AOFF%3B&@_c=%2345b564&a:7%3B&=LCtrl&=Z&=X&=C&_w:1.25%3B&=B&_w:2%3B&=Space&_w:1.25%3B&=M&=V&=%2F&larr%2F%3B&=%2F&darr%2F%3B&=%2F&rarr%2F)
|
||||||
|
|
||||||
|
Chose to modify the layout to include dedicated arrows on the bottom right. Layers 1-4 are modifiers, layer 5 is a toggle on gaming mode. Tab is dual function: Tap for Tab and hold for L3. So is enter: tap for Enter and hold for Right shift.
|
||||||
|
|
||||||
|
### Nordic characters
|
||||||
|
On its own modifier layer, accessed from left (between left GUI and ALT) or right (above Right arrow)
|
||||||
|
|
||||||
|
### Gaming layer
|
||||||
|
Toggled on/off, accessed via the Nordic layer.
|
||||||
|
|
||||||
|
Toggle on: <kbd>L4</kbd>+<kbd>RCtrl</kbd>
|
||||||
|
|
||||||
|
Toggle off: <kbd>L4</kbd> (above <kbd>→</kbd>)
|
||||||
|
|
||||||
|
### LED Controls
|
||||||
|
|
||||||
|
Use <kbd>TAB</kbd>+<kbd>Z</kbd> to cycle through brightness (8 steps)
|
||||||
|
|
||||||
|
Use <kbd>TAB</kbd>+<kbd>X</kbd> to cycle through the following LED modes:
|
||||||
|
|
||||||
|
- solid
|
||||||
|
- breathing
|
||||||
|
- random
|
||||||
|
- rain
|
||||||
|
- reactive
|
||||||
|
- poptang
|
||||||
|
- off
|
||||||
@@ -286,6 +286,16 @@ int serial_transaction(void) {
|
|||||||
for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
||||||
matrix[slaveOffset+i] = serial_slave_buffer[i];
|
matrix[slaveOffset+i] = serial_slave_buffer[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
// Code to send RGB over serial goes here (not implemented yet)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
// Write backlight level for slave to read
|
||||||
|
serial_master_buffer[SERIAL_BACKLIT_START] = backlight_config.enable ? backlight_config.level : 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -14,6 +14,9 @@
|
|||||||
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
|
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
|
||||||
#define SERIAL_MASTER_BUFFER_LENGTH 1
|
#define SERIAL_MASTER_BUFFER_LENGTH 1
|
||||||
|
|
||||||
|
// Address location defines
|
||||||
|
#define SERIAL_BACKLIT_START 0x00
|
||||||
|
|
||||||
// Buffers for master - slave communication
|
// Buffers for master - slave communication
|
||||||
extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
|
extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
|
||||||
extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
|
extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
|
||||||
|
|||||||
@@ -101,35 +101,44 @@ void keyboard_slave_loop(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
matrix_slave_scan();
|
// Matrix Slave Scan
|
||||||
|
matrix_slave_scan();
|
||||||
// read backlight info
|
|
||||||
|
// Read Backlight Info
|
||||||
#ifdef BACKLIGHT_ENABLE
|
#ifdef BACKLIGHT_ENABLE
|
||||||
if (BACKLIT_DIRTY) {
|
if (BACKLIT_DIRTY) {
|
||||||
backlight_set(i2c_slave_buffer[I2C_BACKLIT_START]);
|
#ifdef USE_I2C
|
||||||
|
backlight_set(i2c_slave_buffer[I2C_BACKLIT_START]);
|
||||||
|
#else // USE_SERIAL
|
||||||
|
backlight_set(serial_master_buffer[SERIAL_BACKLIT_START]);
|
||||||
|
#endif
|
||||||
BACKLIT_DIRTY = false;
|
BACKLIT_DIRTY = false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
// Read RGB Info
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#ifdef RGBLIGHT_ENABLE
|
||||||
if (RGB_DIRTY) {
|
#ifdef USE_I2C
|
||||||
cli();
|
if (RGB_DIRTY) {
|
||||||
uint32_t dword;
|
// Disable interupts (RGB data is big)
|
||||||
|
cli();
|
||||||
/*dword = i2c_slave_buffer[I2C_RGB_START + 3];
|
// Create new DWORD for RGB data
|
||||||
dword = (dword << 8) + i2c_slave_buffer[I2C_RGB_START + 2];
|
uint32_t dword;
|
||||||
dword = (dword << 8) + i2c_slave_buffer[I2C_RGB_START + 1];
|
|
||||||
dword = (dword << 8) + i2c_slave_buffer[I2C_RGB_START];*/
|
// Fill the new DWORD with the data that was sent over
|
||||||
|
uint8_t *dword_dat = (uint8_t *)(&dword);
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
uint8_t *dword_dat = (uint8_t *)(&dword);
|
dword_dat[i] = i2c_slave_buffer[I2C_RGB_START+i];
|
||||||
for (int i = 0; i < 4; i++) {
|
}
|
||||||
dword_dat[i] = i2c_slave_buffer[I2C_RGB_START+i];
|
|
||||||
|
// Update the RGB now with the new data and set RGB_DIRTY to false
|
||||||
|
rgblight_update_dword(dword);
|
||||||
|
RGB_DIRTY = false;
|
||||||
|
// Re-enable interupts now that RGB is set
|
||||||
|
sei();
|
||||||
}
|
}
|
||||||
|
#else // USE_SERIAL
|
||||||
rgblight_update_dword(dword);
|
// Add serial implementation for RGB here
|
||||||
RGB_DIRTY = false;
|
#endif
|
||||||
sei();
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user