Merge remote-tracking branch 'refs/remotes/qmk/master'
1
.gitignore
vendored
|
|
@ -1,5 +1,6 @@
|
||||||
.dep
|
.dep
|
||||||
*.o
|
*.o
|
||||||
|
*.bin
|
||||||
*.eep
|
*.eep
|
||||||
*.elf
|
*.elf
|
||||||
*.hex
|
*.hex
|
||||||
|
|
|
||||||
|
|
@ -30,3 +30,10 @@ addons:
|
||||||
- diffutils
|
- diffutils
|
||||||
after_success:
|
after_success:
|
||||||
bash util/travis_compiled_push.sh
|
bash util/travis_compiled_push.sh
|
||||||
|
notifications:
|
||||||
|
webhooks:
|
||||||
|
urls:
|
||||||
|
- https://webhooks.gitter.im/e/cca31de3d44b9adb617b
|
||||||
|
on_success: change # options: [always|never|change] default: always
|
||||||
|
on_failure: always # options: [always|never|change] default: always
|
||||||
|
on_start: never # options: [always|never|change] default: always
|
||||||
|
|
@ -23,9 +23,9 @@ ifdef master
|
||||||
MASTER = $(master)
|
MASTER = $(master)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MASTER),right)
|
ifeq ($(MASTER),right)
|
||||||
OPT_DEFS += -DMASTER_IS_ON_RIGHT
|
OPT_DEFS += -DMASTER_IS_ON_RIGHT
|
||||||
else
|
else
|
||||||
ifneq ($(MASTER),left)
|
ifneq ($(MASTER),left)
|
||||||
$(error MASTER does not have a valid value(left/right))
|
$(error MASTER does not have a valid value(left/right))
|
||||||
endif
|
endif
|
||||||
|
|
@ -38,7 +38,7 @@ KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c
|
||||||
|
|
||||||
ifneq ("$(wildcard $(KEYBOARD_C))","")
|
ifneq ("$(wildcard $(KEYBOARD_C))","")
|
||||||
include $(KEYBOARD_PATH)/rules.mk
|
include $(KEYBOARD_PATH)/rules.mk
|
||||||
else
|
else
|
||||||
$(error "$(KEYBOARD_C)" does not exist)
|
$(error "$(KEYBOARD_C)" does not exist)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
@ -49,7 +49,7 @@ ifneq ($(SUBPROJECT),)
|
||||||
ifneq ("$(wildcard $(SUBPROJECT_C))","")
|
ifneq ("$(wildcard $(SUBPROJECT_C))","")
|
||||||
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
|
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
|
||||||
include $(SUBPROJECT_PATH)/rules.mk
|
include $(SUBPROJECT_PATH)/rules.mk
|
||||||
else
|
else
|
||||||
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
|
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
@ -83,7 +83,7 @@ ifneq ($(SUBPROJECT),)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Save the defines and includes here, so we don't include any keymap specific ones
|
# Save the defines and includes here, so we don't include any keymap specific ones
|
||||||
PROJECT_DEFS := $(OPT_DEFS)
|
PROJECT_DEFS := $(OPT_DEFS)
|
||||||
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
|
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH)
|
||||||
PROJECT_CONFIG := $(CONFIG_H)
|
PROJECT_CONFIG := $(CONFIG_H)
|
||||||
|
|
@ -139,11 +139,27 @@ ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
|
||||||
MIDI_ENABLE=yes
|
MIDI_ENABLE=yes
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
MUSIC_ENABLE := 0
|
||||||
|
|
||||||
|
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DAUDIO_ENABLE
|
||||||
|
MUSIC_ENABLE := 1
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
|
||||||
|
SRC += $(QUANTUM_DIR)/audio/audio.c
|
||||||
|
SRC += $(QUANTUM_DIR)/audio/voices.c
|
||||||
|
SRC += $(QUANTUM_DIR)/audio/luts.c
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
||||||
OPT_DEFS += -DMIDI_ENABLE
|
OPT_DEFS += -DMIDI_ENABLE
|
||||||
|
MUSIC_ENABLE := 1
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(MUSIC_ENABLE), 1)
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(COMBO_ENABLE)), yes)
|
ifeq ($(strip $(COMBO_ENABLE)), yes)
|
||||||
OPT_DEFS += -DCOMBO_ENABLE
|
OPT_DEFS += -DCOMBO_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
|
||||||
|
|
@ -153,26 +169,26 @@ ifeq ($(strip $(VIRTSER_ENABLE)), yes)
|
||||||
OPT_DEFS += -DVIRTSER_ENABLE
|
OPT_DEFS += -DVIRTSER_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
|
||||||
OPT_DEFS += -DAUDIO_ENABLE
|
OPT_DEFS += -DFAUXCLICKY_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
SRC += $(QUANTUM_DIR)/fauxclicky.c
|
||||||
SRC += $(QUANTUM_DIR)/audio/audio.c
|
|
||||||
SRC += $(QUANTUM_DIR)/audio/voices.c
|
|
||||||
SRC += $(QUANTUM_DIR)/audio/luts.c
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(UCIS_ENABLE)), yes)
|
ifeq ($(strip $(UCIS_ENABLE)), yes)
|
||||||
OPT_DEFS += -DUCIS_ENABLE
|
OPT_DEFS += -DUCIS_ENABLE
|
||||||
UNICODE_ENABLE = yes
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
|
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
|
||||||
OPT_DEFS += -DUNICODEMAP_ENABLE
|
OPT_DEFS += -DUNICODEMAP_ENABLE
|
||||||
UNICODE_ENABLE = yes
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(UNICODE_ENABLE)), yes)
|
ifeq ($(strip $(UNICODE_ENABLE)), yes)
|
||||||
OPT_DEFS += -DUNICODE_ENABLE
|
OPT_DEFS += -DUNICODE_ENABLE
|
||||||
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
@ -242,7 +258,7 @@ endif
|
||||||
|
|
||||||
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
|
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
|
||||||
$(KEYMAP_OUTPUT)_SRC := $(SRC)
|
$(KEYMAP_OUTPUT)_SRC := $(SRC)
|
||||||
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
|
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
|
||||||
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
|
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
|
||||||
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
|
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
|
||||||
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC)
|
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC)
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,9 @@ Layer switching with tap key:
|
||||||
|
|
||||||
[dual_role]: http://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
|
[dual_role]: http://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys
|
||||||
|
|
||||||
|
When user hold a key after tap, it repeat the tapped key rather to hold a modifier key.
|
||||||
|
If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`.
|
||||||
|
See https://github.com/qmk/qmk_firmware/issues/889 for the detail.
|
||||||
|
|
||||||
### 4.2 Tap Toggle
|
### 4.2 Tap Toggle
|
||||||
This is a feature to assign both toggle layer and momentary switch layer action to just same one physical key. It works as momentary layer switch when holding a key but toggle switch with several taps.
|
This is a feature to assign both toggle layer and momentary switch layer action to just same one physical key. It works as momentary layer switch when holding a key but toggle switch with several taps.
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,34 @@ void promicro_bootloader_jmp(bool program);
|
||||||
// The first section contains all of the arguements
|
// The first section contains all of the arguements
|
||||||
// The second converts the arguments into a two-dimensional array
|
// The second converts the arguments into a two-dimensional array
|
||||||
#define KEYMAP( \
|
#define KEYMAP( \
|
||||||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
|
{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
|
{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
|
{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
{ k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \
|
{ k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \
|
||||||
{ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \
|
{ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
// Used to create a keymap using only KC_ prefixed keys.
|
||||||
|
#define KC_KEYMAP( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \
|
||||||
|
{ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \
|
||||||
|
{ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \
|
||||||
|
{ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k46, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \
|
||||||
|
{ KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
|
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
|
||||||
|
|
||||||
Mnemes Swedish Bonaza
|
Mnemes Swedish Bonanza
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout
|
My Layout in process, most of the code is shamelessly stolen from [algernons][algernon] excellent layout
|
||||||
|
|
@ -33,6 +33,8 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym
|
||||||
- `LEAD s l` : `λ`.
|
- `LEAD s l` : `λ`.
|
||||||
- `LEAD s s` : `¯\_(ツ)_/¯`
|
- `LEAD s s` : `¯\_(ツ)_/¯`
|
||||||
- `LEAD s f` : `凸(ツ)凸`
|
- `LEAD s f` : `凸(ツ)凸`
|
||||||
|
- `LEAD u l` : Set unicode input mode to linux.
|
||||||
|
- `LEAD s w` : Set unicode input mode to windows.
|
||||||
- `LEAD a *` : Application switching based on position in start menu. Very specific to my computer.
|
- `LEAD a *` : Application switching based on position in start menu. Very specific to my computer.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -42,7 +44,7 @@ It's for Windows (current work forces me to) and Swedish (matter of birth) so ym
|
||||||
|
|
||||||
Basic navigation on the right hand and modifiers close
|
Basic navigation on the right hand and modifiers close
|
||||||
by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
|
by for the left. The latter because I tend to use `ctrl+arrows` quite a lot.
|
||||||
|
|
||||||
## Sym layer
|
## Sym layer
|
||||||
|
|
||||||

|

|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#define ONESHOT_TIMEOUT 3000
|
#define ONESHOT_TIMEOUT 3000
|
||||||
#define TAPPING_TERM 200
|
#define TAPPING_TERM 200
|
||||||
#define PREVENT_STUCK_MODIFIERS
|
#define PREVENT_STUCK_MODIFIERS
|
||||||
|
#define FORCE_NKRO
|
||||||
#define LEADER_TIMEOUT 1000
|
#define LEADER_TIMEOUT 1000
|
||||||
|
|
||||||
#include "../../config.h"
|
#include "../../config.h"
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 448 KiB After Width: | Height: | Size: 446 KiB |
|
Before Width: | Height: | Size: 421 KiB After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 423 KiB After Width: | Height: | Size: 423 KiB |
|
|
@ -7,43 +7,47 @@
|
||||||
/*
|
/*
|
||||||
*WINDOWS SWEDISH
|
*WINDOWS SWEDISH
|
||||||
*/
|
*/
|
||||||
#define KN_HALF KC_GRV // 1/2
|
/*
|
||||||
#define KN_PLUS KC_MINS // +
|
*WINDOWS SWEDISH
|
||||||
#define KN_ACUT KC_EQL // ´
|
*/
|
||||||
#define KN_AO KC_LBRC // Å
|
#define KN_HALF KC_GRV // 1/2
|
||||||
#define KN_UMLA KC_RBRC // ¨
|
#define KN_PLUS KC_MINS // +
|
||||||
#define KN_OE KC_SCLN // Ö
|
#define KN_ACUT KC_EQL // ´
|
||||||
#define KN_AE KC_QUOT // Ä
|
#define KN_AO KC_LBRC // Å
|
||||||
#define KN_QUOT KC_NUHS // '
|
#define KN_UMLA KC_RBRC // ¨
|
||||||
#define KN_LABK KC_NUBS // <
|
#define KN_OE KC_SCLN // Ö
|
||||||
#define KN_MINS KC_SLSH // -
|
#define KN_AE KC_QUOT // Ä
|
||||||
#define KN_EXLM LSFT(KC_1) // !
|
#define KN_QUOT KC_NUHS // '
|
||||||
#define KN_DQT LSFT(KC_2) // "
|
#define KN_LABK KC_NUBS // <
|
||||||
#define KN_AT RALT(KC_2) // @
|
#define KN_MINS KC_SLSH // -
|
||||||
#define KN_HASH LSFT(KC_3) // #
|
#define KN_EXLM LSFT(KC_1) // !
|
||||||
#define KN_DLR RALT(KC_4) // $
|
#define KN_DQT LSFT(KC_2) // "
|
||||||
#define KN_PERC LSFT(KC_5) // %
|
#define KN_AT RALT(KC_2) // @
|
||||||
#define KN_AMPR LSFT(KC_6) // &
|
#define KN_HASH LSFT(KC_3) // #
|
||||||
#define KN_SLSH LSFT(KC_7) // /
|
#define KN_EUR LSFT(KC_4) // €
|
||||||
#define KN_LPRN LSFT(KC_8) // (
|
#define KN_DLR RALT(KC_4) // $
|
||||||
#define KN_RPRN LSFT(KC_9) // )
|
#define KN_PERC LSFT(KC_5) // %
|
||||||
#define KN_EQL LSFT(KC_0) // =
|
#define KN_AMPR LSFT(KC_6) // &
|
||||||
#define KN_UNDS LSFT(KN_MINS) // _
|
#define KN_SLSH LSFT(KC_7) // /
|
||||||
#define KN_QUES LSFT(KN_PLUS) // ?
|
#define KN_LPRN LSFT(KC_8) // (
|
||||||
#define KN_GRAV LSFT(KN_ACUT) // `
|
#define KN_RPRN LSFT(KC_9) // )
|
||||||
#define KN_LCBR RALT(KC_7) // {
|
#define KN_EQL LSFT(KC_0) // =
|
||||||
#define KN_RCBR RALT(KC_0) // }
|
#define KN_UNDS LSFT(KN_MINS) // _
|
||||||
#define KN_LBRC RALT(KC_8) // [
|
#define KN_QUES LSFT(KN_PLUS) // ?
|
||||||
#define KN_RBRC RALT(KC_9) // ]
|
#define KN_GRAV LSFT(KN_ACUT) // `
|
||||||
#define KN_RABK LSFT(KN_LABK) // <
|
#define KN_LCBR RALT(KC_7) // {
|
||||||
#define KN_COLN LSFT(KC_DOT) // :
|
#define KN_RCBR RALT(KC_0) // }
|
||||||
#define KN_SCLN LSFT(KC_COMM) // :
|
#define KN_LBRC RALT(KC_8) // [
|
||||||
#define KN_PIPE RALT(KN_LABK) // |
|
#define KN_RBRC RALT(KC_9) // ]
|
||||||
#define KN_QUES LSFT(KN_PLUS) // ?
|
#define KN_RABK LSFT(KN_LABK) // <
|
||||||
#define KN_CIRC LSFT(KN_UMLA) // ^
|
#define KN_COLN LSFT(KC_DOT) // :
|
||||||
#define KN_ASTR LSFT(KN_QUOT) // *
|
#define KN_SCLN LSFT(KC_COMM) // :
|
||||||
#define KN_TILD RALT(KN_UMLA) // ~
|
#define KN_PIPE RALT(KN_LABK) // |
|
||||||
#define KN_BSLS RALT(KN_PLUS) //
|
#define KN_QUES LSFT(KN_PLUS) // ?
|
||||||
|
#define KN_CIRC LSFT(KN_UMLA) // ^
|
||||||
|
#define KN_ASTR LSFT(KN_QUOT) // *
|
||||||
|
#define KN_TILD RALT(KN_UMLA) // ~
|
||||||
|
#define KN_BSLS RALT(KN_PLUS) //
|
||||||
|
|
||||||
#define OSM_LCTL OSM(MOD_LCTL)
|
#define OSM_LCTL OSM(MOD_LCTL)
|
||||||
#define OSM_LALT OSM(MOD_LALT)
|
#define OSM_LALT OSM(MOD_LALT)
|
||||||
|
|
@ -85,32 +89,26 @@ enum {
|
||||||
TD_EQ
|
TD_EQ
|
||||||
};
|
};
|
||||||
|
|
||||||
//Custom keycodes
|
|
||||||
enum {
|
|
||||||
PLACEHOLDER = SAFE_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
//State and timers
|
//State and timers
|
||||||
uint16_t kf_timers[12];
|
uint16_t kf_timers[12];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
[BASE] = {
|
[BASE] = {
|
||||||
|
|
||||||
{ M(KF_11) ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,KC_NO ,M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_12) },
|
{ M(KF_11) ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,KC_NO ,M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_12) },
|
||||||
{ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_NO ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KN_AO },
|
{ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_NO ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KN_AO },
|
||||||
{ OSM_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_NO ,KC_H ,KC_J ,KC_K ,KC_L ,KN_OE ,KN_AE },
|
{ OSM_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_NO ,KC_H ,KC_J ,KC_K ,KC_L ,KN_OE ,KN_AE },
|
||||||
{ OSM_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_DELT ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KN_MINS ,OSM_LSFT },
|
{ OSM_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_DELT ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KN_MINS ,OSM_LSFT },
|
||||||
{ MO(NAV) ,OSM_LCTL ,OSM_LALT ,KC_LGUI ,KC_SPC ,LT(SYM,KC_BSPC) ,KC_HYP ,LT(SYM,KC_ENT) ,KC_SPC ,KC_LEAD ,KC_LALT ,KC_LCTRL ,MO(NAV) }
|
{ MO(NAV) ,OSM_LCTL ,OSM_LALT ,KC_LGUI ,MO(SYM) ,KC_BSPC ,KC_ENT ,KC_SPC ,MO(SYM) ,KC_LEAD ,KC_LALT ,KC_LCTRL ,KC_HYP }
|
||||||
|
|
||||||
},
|
},
|
||||||
[NAV] = {
|
[NAV] = {
|
||||||
|
|
||||||
{ 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_NO ,KC_PGUP ,KC_HOME ,KC_UP ,KC_END ,KC_TRNS ,KC_TRNS },
|
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_NO ,KC_HOME ,KC_PGDN ,KC_PGUP ,KC_END ,KC_TRNS ,KC_TRNS },
|
||||||
{ KC_TRNS ,KC_LSFT ,KC_LCTL ,KC_LALT ,KC_L ,KC_TRNS ,KC_NO ,KC_PGDN ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_TRNS ,KC_TRNS },
|
{ KC_TRNS ,KC_LSFT ,KC_LCTL ,KC_LALT ,KC_L ,KC_TRNS ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT ,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_VOLD ,KC_VOLU }
|
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_VOLD ,KC_VOLU }
|
||||||
|
|
||||||
|
|
@ -119,8 +117,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TD(TD_EQ) ,KC_NO ,TD(TD_FUN) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
|
{ KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,TD(TD_EQ) ,KC_NO ,TD(TD_FUN) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS },
|
||||||
{ KC_TRNS ,KN_LABK ,KN_RABK ,KN_LCBR ,KN_RCBR ,KN_PLUS ,KC_NO ,KN_AT ,KN_DQT ,KN_QUOT ,KN_GRAV ,KN_SLSH ,KC_TRNS },
|
{ KC_TRNS ,KN_LABK ,KN_RABK ,KN_LCBR ,KN_RCBR ,KN_PLUS ,KC_NO ,KN_AT ,KN_DQT ,KN_QUOT ,KN_GRAV ,KN_SLSH ,KC_TRNS },
|
||||||
{ KC_TRNS ,KN_EXLM ,KN_EQL ,KN_LPRN ,KN_RPRN ,KN_MINS ,KC_NO ,KN_UNDS ,KN_SCLN ,KN_COLN ,KN_AMPR ,KN_PIPE ,KC_TRNS },
|
{ KC_TRNS ,KN_EXLM ,KN_EQL ,KN_LPRN ,KN_RPRN ,KN_MINS ,KC_NO ,KN_UNDS ,KN_CIRC ,KN_DLR ,KN_AMPR ,KN_PIPE ,KC_TRNS },
|
||||||
{ KC_TRNS ,KN_DLR ,KN_PERC ,KN_LBRC ,KN_RBRC ,KN_ASTR ,KC_TRNS ,KN_HASH ,KC_COMM ,KC_DOT ,KN_QUES ,KN_BSLS ,KC_TRNS },
|
{ KC_TRNS ,KN_EUR ,KN_PERC ,KN_LBRC ,KN_RBRC ,KN_ASTR ,KC_TRNS ,KN_HASH ,KN_SCLN ,KN_COLN ,KN_QUES ,KN_BSLS ,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 }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -302,6 +300,15 @@ void matrix_scan_user(void) {
|
||||||
register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI);
|
register_code (KC_LGUI); TAP_ONCE (KC_7); unregister_code (KC_LGUI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SEQ_TWO_KEYS (KC_U, KC_L) {
|
||||||
|
set_unicode_input_mode(UC_LNX);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SEQ_TWO_KEYS (KC_U, KC_W) {
|
||||||
|
set_unicode_input_mode(UC_WINC);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS (KC_S, KC_S) {
|
SEQ_TWO_KEYS (KC_S, KC_S) {
|
||||||
// ¯\_(ツ)_/¯
|
// ¯\_(ツ)_/¯
|
||||||
|
|
|
||||||
86
keyboards/clueboard/keymaps/caps_fn/keymap.c
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
#include "clueboard.h"
|
||||||
|
|
||||||
|
// Helpful defines
|
||||||
|
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
|
#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 _FL 1
|
||||||
|
#define _CL 2
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap _BL: Base Layer (Default Layer)
|
||||||
|
*/
|
||||||
|
[_BL] = KEYMAP(
|
||||||
|
F(0), 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_GRV, KC_BSPC, KC_PGUP, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Keymap _FL: Function Layer
|
||||||
|
*/
|
||||||
|
[_FL] = KEYMAP(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
|
||||||
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
|
||||||
|
_______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
||||||
|
|
||||||
|
/* Keymap _CL: Control layer
|
||||||
|
*/
|
||||||
|
[_CL] = KEYMAP(
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||||
|
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
||||||
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
|
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
|
||||||
|
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This is a list of user defined functions. F(N) corresponds to item N
|
||||||
|
of this list.
|
||||||
|
*/
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[0] = ACTION_FUNCTION(0), // Calls action_function()
|
||||||
|
};
|
||||||
|
|
||||||
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
static uint8_t mods_pressed;
|
||||||
|
static bool mod_flag;
|
||||||
|
|
||||||
|
switch (id) {
|
||||||
|
case 0:
|
||||||
|
/* Handle the combined Grave/Esc key
|
||||||
|
*/
|
||||||
|
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
|
||||||
|
|
||||||
|
if (record->event.pressed) {
|
||||||
|
/* The key is being pressed.
|
||||||
|
*/
|
||||||
|
if (mods_pressed) {
|
||||||
|
mod_flag = true;
|
||||||
|
add_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
add_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* The key is being released.
|
||||||
|
*/
|
||||||
|
if (mod_flag) {
|
||||||
|
mod_flag = false;
|
||||||
|
del_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
del_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
keyboards/clueboard/keymaps/caps_fn/layout.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
15
keyboards/clueboard/keymaps/caps_fn/readme.md
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
```
|
||||||
|
___ _____ _ _ _ __ __ _ __
|
||||||
|
|__ \ / ____| | | | | | / / / /(_) / /
|
||||||
|
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||||
|
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||||
|
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||||
|
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Caps Fn Layout
|
||||||
|
|
||||||
|
This is the default layout except that Caps Lock acts like Caps Lock when
|
||||||
|
tapped but Fn when held.
|
||||||
86
keyboards/clueboard/keymaps/colemak/keymap.c
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
#include "clueboard.h"
|
||||||
|
|
||||||
|
// Helpful defines
|
||||||
|
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
|
#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 _FL 1
|
||||||
|
#define _CL 2
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap _BL: Base Layer (Default Layer)
|
||||||
|
*/
|
||||||
|
[_BL] = KEYMAP(
|
||||||
|
F(0), 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_GRV, KC_BSPC, KC_PGUP, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
|
||||||
|
KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, \
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
|
||||||
|
KC_LCTL, MO(_FL), KC_LGUI,KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Keymap _FL: Function Layer
|
||||||
|
*/
|
||||||
|
[_FL] = KEYMAP(
|
||||||
|
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_CAPS, BL_STEP, \
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END, _______, _______, _______, _______, \
|
||||||
|
KC_DEL, _______, MO(_CL),_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, _______, _______, _______, \
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
|
||||||
|
_______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
||||||
|
|
||||||
|
/* Keymap _CL: Control layer
|
||||||
|
*/
|
||||||
|
[_CL] = KEYMAP(
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||||
|
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
||||||
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
|
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
|
||||||
|
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This is a list of user defined functions. F(N) corresponds to item N
|
||||||
|
of this list.
|
||||||
|
*/
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[0] = ACTION_FUNCTION(0), // Calls action_function()
|
||||||
|
};
|
||||||
|
|
||||||
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
static uint8_t mods_pressed;
|
||||||
|
static bool mod_flag;
|
||||||
|
|
||||||
|
switch (id) {
|
||||||
|
case 0:
|
||||||
|
/* Handle the combined Grave/Esc key
|
||||||
|
*/
|
||||||
|
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
|
||||||
|
|
||||||
|
if (record->event.pressed) {
|
||||||
|
/* The key is being pressed.
|
||||||
|
*/
|
||||||
|
if (mods_pressed) {
|
||||||
|
mod_flag = true;
|
||||||
|
add_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
add_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* The key is being released.
|
||||||
|
*/
|
||||||
|
if (mod_flag) {
|
||||||
|
mod_flag = false;
|
||||||
|
del_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
del_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
#include "clueboard.h"
|
#include "clueboard.h"
|
||||||
|
|
||||||
// Used for SHIFT_ESC
|
// Helpful defines
|
||||||
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
// 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.
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
|
@ -9,21 +10,10 @@
|
||||||
// entirely and just use numbers.
|
// entirely and just use numbers.
|
||||||
#define _BL 0
|
#define _BL 0
|
||||||
#define _FL 1
|
#define _FL 1
|
||||||
#define _RS 2
|
#define _CL 2
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap _BL: (Base Layer) Default Layer
|
/* Keymap _BL: Base Layer (Default Layer)
|
||||||
* ,--------------------------------------------------------------------------. ,----.
|
|
||||||
* |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP|
|
|
||||||
* |--------------------------------------------------------------------------| |----|
|
|
||||||
* | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN|
|
|
||||||
* |--------------------------------------------------------------------------| `----'
|
|
||||||
* |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent|
|
|
||||||
* |-----------------------------------------------------------------------------.
|
|
||||||
* |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP|
|
|
||||||
* |------------------------------------------------------------------------|----|----.
|
|
||||||
* | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT|
|
|
||||||
* `----------------------------------------------------------------------------------'
|
|
||||||
*/
|
*/
|
||||||
[_BL] = KEYMAP(
|
[_BL] = KEYMAP(
|
||||||
F(0), 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_GRV, KC_BSPC, KC_PGUP, \
|
F(0), 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_GRV, KC_BSPC, KC_PGUP, \
|
||||||
|
|
@ -33,61 +23,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
|
KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
/* Keymap _FL: Function Layer
|
/* Keymap _FL: Function Layer
|
||||||
* ,--------------------------------------------------------------------------. ,----.
|
|
||||||
* | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN|
|
|
||||||
* |--------------------------------------------------------------------------| |----|
|
|
||||||
* | | | | | | | | |PScr|SLck|Paus| | | | |BLDE|
|
|
||||||
* |--------------------------------------------------------------------------| `----'
|
|
||||||
* | | | _RS| | | | | | | | | | | |
|
|
||||||
* |-----------------------------------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | |PGUP|
|
|
||||||
* |------------------------------------------------------------------------|----|----.
|
|
||||||
* | | | | | | | | | | _FL|HOME|PGDN| END|
|
|
||||||
* `----------------------------------------------------------------------------------'
|
|
||||||
*/
|
*/
|
||||||
[_FL] = KEYMAP(
|
[_FL] = KEYMAP(
|
||||||
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_TRNS, KC_DEL, BL_STEP, \
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
_______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
|
||||||
KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
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_PGUP, \
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
_______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
||||||
|
|
||||||
/* Keymap _RS: Reset layer
|
/* Keymap _CL: Control layer
|
||||||
* ,--------------------------------------------------------------------------. ,----.
|
|
||||||
* | | | | | | | | | | | | | | | | | |
|
|
||||||
* |--------------------------------------------------------------------------| |----|
|
|
||||||
* | | | | |RESET| | | | | | | | | | | |
|
|
||||||
* |--------------------------------------------------------------------------| `----'
|
|
||||||
* | | | _RS| | | | | | | | | | | |
|
|
||||||
* |-----------------------------------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |------------------------------------------------------------------------|----|----.
|
|
||||||
* | | | | | | | | | | _FL| | | |
|
|
||||||
* `----------------------------------------------------------------------------------'
|
|
||||||
*/
|
*/
|
||||||
[_RS] = KEYMAP(
|
[_CL] = KEYMAP(
|
||||||
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, RGB_TOG, RGB_VAI, \
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||||
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, RGB_VAD, \
|
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
||||||
KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), RGB_SAI, \
|
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI),
|
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||||
};
|
|
||||||
|
|
||||||
enum function_id {
|
|
||||||
SHIFT_ESC,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* This is a list of user defined functions. F(N) corresponds to item N
|
||||||
|
of this list.
|
||||||
|
*/
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
[0] = ACTION_FUNCTION(SHIFT_ESC),
|
[0] = ACTION_FUNCTION(0), // Calls action_function()
|
||||||
};
|
};
|
||||||
|
|
||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
static uint8_t shift_esc_shift_mask;
|
static uint8_t mods_pressed;
|
||||||
|
static bool mod_flag;
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case SHIFT_ESC:
|
case 0:
|
||||||
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
/* Handle the combined Grave/Esc key
|
||||||
|
*/
|
||||||
|
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
|
||||||
|
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
if (shift_esc_shift_mask) {
|
/* The key is being pressed.
|
||||||
|
*/
|
||||||
|
if (mods_pressed) {
|
||||||
|
mod_flag = true;
|
||||||
add_key(KC_GRV);
|
add_key(KC_GRV);
|
||||||
send_keyboard_report();
|
send_keyboard_report();
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -95,7 +70,10 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
send_keyboard_report();
|
send_keyboard_report();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (shift_esc_shift_mask) {
|
/* The key is being released.
|
||||||
|
*/
|
||||||
|
if (mod_flag) {
|
||||||
|
mod_flag = false;
|
||||||
del_key(KC_GRV);
|
del_key(KC_GRV);
|
||||||
send_keyboard_report();
|
send_keyboard_report();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
BIN
keyboards/clueboard/keymaps/default/layout.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
17
keyboards/clueboard/keymaps/default/readme.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
```
|
||||||
|
___ _____ _ _ _ __ __ _ __
|
||||||
|
|__ \ / ____| | | | | | / / / /(_) / /
|
||||||
|
||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / /
|
||||||
|
|/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / /
|
||||||
|
|_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _
|
||||||
|
(_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Default Clueboard Layout
|
||||||
|
|
||||||
|
This is the default layout that comes flashed on every Clueboard. For the most
|
||||||
|
part it's a straightforward and easy to follow layout. The only unusual key is
|
||||||
|
the key in the upper left, which sends Escape normally, but Grave when any of
|
||||||
|
the Ctrl, Alt, or GUI modifiers are held down.
|
||||||
86
keyboards/clueboard/keymaps/mac_optimized/keymap.c
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
#include "clueboard.h"
|
||||||
|
|
||||||
|
// Helpful defines
|
||||||
|
#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
|
||||||
|
#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 _FL 1
|
||||||
|
#define _CL 2
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap _BL: Base Layer (Default Layer)
|
||||||
|
*/
|
||||||
|
[_BL] = KEYMAP(
|
||||||
|
F(0), 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_GRV, KC_BSPC, KC_PGUP, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
|
||||||
|
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||||
|
|
||||||
|
/* Keymap _FL: Function Layer
|
||||||
|
*/
|
||||||
|
[_FL] = KEYMAP(
|
||||||
|
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
|
||||||
|
_______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
|
||||||
|
|
||||||
|
/* Keymap _CL: Control layer
|
||||||
|
*/
|
||||||
|
[_CL] = KEYMAP(
|
||||||
|
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
|
||||||
|
_______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \
|
||||||
|
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
|
||||||
|
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \
|
||||||
|
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This is a list of user defined functions. F(N) corresponds to item N
|
||||||
|
of this list.
|
||||||
|
*/
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[0] = ACTION_FUNCTION(0), // Calls action_function()
|
||||||
|
};
|
||||||
|
|
||||||
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
static uint8_t mods_pressed;
|
||||||
|
static bool mod_flag;
|
||||||
|
|
||||||
|
switch (id) {
|
||||||
|
case 0:
|
||||||
|
/* Handle the combined Grave/Esc key
|
||||||
|
*/
|
||||||
|
mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed
|
||||||
|
|
||||||
|
if (record->event.pressed) {
|
||||||
|
/* The key is being pressed.
|
||||||
|
*/
|
||||||
|
if (mods_pressed) {
|
||||||
|
mod_flag = true;
|
||||||
|
add_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
add_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* The key is being released.
|
||||||
|
*/
|
||||||
|
if (mod_flag) {
|
||||||
|
mod_flag = false;
|
||||||
|
del_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
del_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
keyboards/clueboard/keymaps/mac_optimized/layout.png
Normal file
|
After Width: | Height: | Size: 105 KiB |