mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
46 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ceaae30f5 | ||
|
|
5075a1d9e4 | ||
|
|
3587e20e70 | ||
|
|
963bba1fc3 | ||
|
|
571a589cfa | ||
|
|
3c2d5599b9 | ||
|
|
3b05f25221 | ||
|
|
e05e671871 | ||
|
|
2d5b492550 | ||
|
|
ad8774d6fa | ||
|
|
297aad6ebd | ||
|
|
8f69983c58 | ||
|
|
b779078c60 | ||
|
|
b936048b0b | ||
|
|
7e0dc5376f | ||
|
|
6d1af63842 | ||
|
|
6c4a744a1b | ||
|
|
f7722ef9ca | ||
|
|
76cb2b1160 | ||
|
|
5117dff6a2 | ||
|
|
e5d34fd084 | ||
|
|
bfb2f8e0a8 | ||
|
|
d8f3c28a37 | ||
|
|
eef0cb2f90 | ||
|
|
63e4ad13c8 | ||
|
|
f9e67338a4 | ||
|
|
5f9f62fb8c | ||
|
|
147bc6ec43 | ||
|
|
bea62add55 | ||
|
|
d511e52c1f | ||
|
|
789e199450 | ||
|
|
a747c1c3de | ||
|
|
a521fc2b6c | ||
|
|
8651eef298 | ||
|
|
f4799481cd | ||
|
|
675b153525 | ||
|
|
5df2424651 | ||
|
|
f9c53ca71a | ||
|
|
0d189582c1 | ||
|
|
c6b667623a | ||
|
|
d96380e654 | ||
|
|
7e80686f1e | ||
|
|
e967471c4f | ||
|
|
eca3f9d935 | ||
|
|
44c62117ee | ||
|
|
f235822fba |
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@@ -11,6 +11,7 @@
|
||||
"files.associations": {
|
||||
"*.h": "c",
|
||||
"*.c": "c",
|
||||
"*.inc": "c",
|
||||
"*.cpp": "cpp",
|
||||
"*.hpp": "cpp",
|
||||
"xstddef": "c",
|
||||
|
||||
@@ -231,44 +231,19 @@ endif
|
||||
# We can assume a ChibiOS target When MCU_FAMILY is defined since it's
|
||||
# not used for LUFA
|
||||
ifdef MCU_FAMILY
|
||||
FIRMWARE_FORMAT?=bin
|
||||
PLATFORM=CHIBIOS
|
||||
PLATFORM_KEY=chibios
|
||||
FIRMWARE_FORMAT?=bin
|
||||
else ifdef ARM_ATSAM
|
||||
PLATFORM=ARM_ATSAM
|
||||
PLATFORM_KEY=arm_atsam
|
||||
FIRMWARE_FORMAT=bin
|
||||
else
|
||||
PLATFORM=AVR
|
||||
PLATFORM_KEY=avr
|
||||
FIRMWARE_FORMAT?=hex
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM),CHIBIOS)
|
||||
include $(TMK_PATH)/chibios.mk
|
||||
OPT_OS = chibios
|
||||
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h
|
||||
else ifneq ("$(wildcard $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h)","")
|
||||
OPT_DEFS += -include $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h
|
||||
endif
|
||||
endif
|
||||
|
||||
# Find all of the config.h files and add them to our CONFIG_H define.
|
||||
CONFIG_H :=
|
||||
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
|
||||
@@ -304,11 +279,6 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_config.h)","")
|
||||
POST_CONFIG_H += $(KEYBOARD_PATH_5)/post_config.h
|
||||
endif
|
||||
|
||||
# Save the defines and includes here, so we don't include any keymap specific ones
|
||||
PROJECT_DEFS := $(OPT_DEFS)
|
||||
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
|
||||
PROJECT_CONFIG := $(CONFIG_H)
|
||||
|
||||
# Userspace setup and definitions
|
||||
ifeq ("$(USER_NAME)","")
|
||||
USER_NAME := $(KEYMAP)
|
||||
@@ -354,23 +324,17 @@ SRC += $(TMK_COMMON_SRC)
|
||||
OPT_DEFS += $(TMK_COMMON_DEFS)
|
||||
EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS)
|
||||
|
||||
ifeq ($(PLATFORM),AVR)
|
||||
ifeq ($(strip $(PROTOCOL)), VUSB)
|
||||
include $(TMK_PATH)/protocol/vusb.mk
|
||||
include $(TMK_PATH)/$(PLATFORM_KEY).mk
|
||||
ifneq ($(strip $(PROTOCOL)),)
|
||||
include $(TMK_PATH)/protocol/$(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]')).mk
|
||||
else
|
||||
include $(TMK_PATH)/protocol/lufa.mk
|
||||
endif
|
||||
include $(TMK_PATH)/avr.mk
|
||||
include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM),ARM_ATSAM)
|
||||
include $(TMK_PATH)/arm_atsam.mk
|
||||
include $(TMK_PATH)/protocol/arm_atsam.mk
|
||||
endif
|
||||
|
||||
ifeq ($(PLATFORM),CHIBIOS)
|
||||
include $(TMK_PATH)/protocol/chibios.mk
|
||||
endif
|
||||
# TODO: remove this bodge?
|
||||
PROJECT_DEFS := $(OPT_DEFS)
|
||||
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
|
||||
PROJECT_CONFIG := $(CONFIG_H)
|
||||
|
||||
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
|
||||
VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer
|
||||
|
||||
@@ -41,6 +41,7 @@ all: elf
|
||||
|
||||
VPATH += $(COMMON_VPATH)
|
||||
PLATFORM:=TEST
|
||||
PLATFORM_KEY:=test
|
||||
|
||||
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
|
||||
include tests/$(TEST)/rules.mk
|
||||
|
||||
@@ -13,52 +13,42 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
SERIAL_DIR := $(QUANTUM_DIR)/serial_link
|
||||
SERIAL_PATH := $(QUANTUM_PATH)/serial_link
|
||||
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
|
||||
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
|
||||
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
|
||||
COMMON_VPATH += $(SERIAL_PATH)
|
||||
|
||||
QUANTUM_SRC += \
|
||||
$(QUANTUM_DIR)/quantum.c \
|
||||
$(QUANTUM_DIR)/keymap_common.c \
|
||||
$(QUANTUM_DIR)/keycode_config.c
|
||||
|
||||
ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
|
||||
OPT_DEFS += -DAPI_SYSEX_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/api/api_sysex.c
|
||||
OPT_DEFS += -DAPI_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/api.c
|
||||
MIDI_ENABLE=yes
|
||||
SRC += $(QUANTUM_DIR)/api/api_sysex.c
|
||||
SRC += $(QUANTUM_DIR)/api.c
|
||||
endif
|
||||
|
||||
MUSIC_ENABLE := 0
|
||||
|
||||
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
||||
OPT_DEFS += -DAUDIO_ENABLE
|
||||
MUSIC_ENABLE := 1
|
||||
MUSIC_ENABLE = yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
|
||||
ifeq ($(PLATFORM),AVR)
|
||||
SRC += $(QUANTUM_DIR)/audio/audio.c
|
||||
else
|
||||
SRC += $(QUANTUM_DIR)/audio/audio_arm.c
|
||||
endif
|
||||
SRC += $(QUANTUM_DIR)/audio/audio_$(PLATFORM_KEY).c
|
||||
SRC += $(QUANTUM_DIR)/audio/voices.c
|
||||
SRC += $(QUANTUM_DIR)/audio/luts.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
||||
OPT_DEFS += -DMIDI_ENABLE
|
||||
MUSIC_ENABLE := 1
|
||||
MUSIC_ENABLE = yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
||||
endif
|
||||
|
||||
ifeq ($(MUSIC_ENABLE), 1)
|
||||
MUSIC_ENABLE ?= no
|
||||
ifeq ($(MUSIC_ENABLE), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(COMBO_ENABLE)), yes)
|
||||
OPT_DEFS += -DCOMBO_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(STENO_ENABLE)), yes)
|
||||
OPT_DEFS += -DSTENO_ENABLE
|
||||
VIRTSER_ENABLE ?= yes
|
||||
@@ -80,28 +70,6 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/pointing_device.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(UCIS_ENABLE)), yes)
|
||||
OPT_DEFS += -DUCIS_ENABLE
|
||||
UNICODE_COMMON := yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
|
||||
OPT_DEFS += -DUNICODEMAP_ENABLE
|
||||
UNICODE_COMMON := yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(UNICODE_ENABLE)), yes)
|
||||
OPT_DEFS += -DUNICODE_ENABLE
|
||||
UNICODE_COMMON := yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(UNICODE_COMMON)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
|
||||
endif
|
||||
|
||||
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c
|
||||
EEPROM_DRIVER ?= vendor
|
||||
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
|
||||
@@ -249,31 +217,18 @@ ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||
OPT_DEFS += -DTAP_DANCE_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
|
||||
OPT_DEFS += -DKEY_LOCK_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(PRINTING_ENABLE)), yes)
|
||||
OPT_DEFS += -DPRINTING_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
|
||||
SRC += $(TMK_DIR)/protocol/serial_uart.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
|
||||
OPT_DEFS += -DAUTO_SHIFT_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
|
||||
ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
|
||||
OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
|
||||
SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
|
||||
SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
|
||||
SERIAL_DEFS += -DSERIAL_LINK_ENABLE
|
||||
COMMON_VPATH += $(SERIAL_PATH)
|
||||
|
||||
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
|
||||
OPT_DEFS += $(SERIAL_DEFS)
|
||||
VAPTH += $(SERIAL_PATH)
|
||||
@@ -315,11 +270,7 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
|
||||
else
|
||||
SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c
|
||||
ifeq ($(strip $(BACKLIGHT_DRIVER)), pwm)
|
||||
ifeq ($(PLATFORM),AVR)
|
||||
SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c
|
||||
else
|
||||
SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c
|
||||
endif
|
||||
SRC += $(QUANTUM_DIR)/backlight/backlight_$(PLATFORM_KEY).c
|
||||
else
|
||||
SRC += $(QUANTUM_DIR)/backlight/backlight_$(strip $(BACKLIGHT_DRIVER)).c
|
||||
endif
|
||||
@@ -371,34 +322,16 @@ ifeq ($(strip $(USB_HID_ENABLE)), yes)
|
||||
include $(TMK_DIR)/protocol/usb_hid.mk
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(WPM_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/wpm.c
|
||||
OPT_DEFS += -DWPM_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(ENCODER_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/encoder.c
|
||||
OPT_DEFS += -DENCODER_ENABLE
|
||||
endif
|
||||
|
||||
HAPTIC_ENABLE ?= no
|
||||
ifneq ($(strip $(HAPTIC_ENABLE)),no)
|
||||
COMMON_VPATH += $(DRIVER_PATH)/haptic
|
||||
SRC += haptic.c
|
||||
OPT_DEFS += -DHAPTIC_ENABLE
|
||||
endif
|
||||
|
||||
ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
|
||||
SRC += DRV2605L.c
|
||||
QUANTUM_LIB_SRC += i2c_master.c
|
||||
OPT_DEFS += -DDRV2605L
|
||||
endif
|
||||
|
||||
ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
|
||||
SRC += solenoid.c
|
||||
OPT_DEFS += -DSOLENOID_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(HD44780_ENABLE)), yes)
|
||||
SRC += drivers/avr/hd44780.c
|
||||
OPT_DEFS += -DHD44780_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
|
||||
OPT_DEFS += -DVELOCIKEY_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/velocikey.c
|
||||
@@ -417,26 +350,11 @@ ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/dynamic_keymap.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LEADER_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
|
||||
OPT_DEFS += -DLEADER_ENABLE
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/dip_switch.c
|
||||
OPT_DEFS += -DDIP_SWITCH_ENABLE
|
||||
OPT_DEFS += -DDIP_SWITCH_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/dip_switch.c
|
||||
endif
|
||||
|
||||
include $(DRIVER_PATH)/qwiic/qwiic.mk
|
||||
|
||||
QUANTUM_SRC:= \
|
||||
$(QUANTUM_DIR)/quantum.c \
|
||||
$(QUANTUM_DIR)/keymap_common.c \
|
||||
$(QUANTUM_DIR)/keycode_config.c
|
||||
|
||||
|
||||
|
||||
VALID_CUSTOM_MATRIX_TYPES:= yes lite no
|
||||
|
||||
CUSTOM_MATRIX ?= no
|
||||
@@ -494,6 +412,29 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
||||
COMMON_VPATH += $(QUANTUM_PATH)/split_common
|
||||
endif
|
||||
|
||||
HAPTIC_ENABLE ?= no
|
||||
ifneq ($(strip $(HAPTIC_ENABLE)),no)
|
||||
COMMON_VPATH += $(DRIVER_PATH)/haptic
|
||||
SRC += haptic.c
|
||||
OPT_DEFS += -DHAPTIC_ENABLE
|
||||
endif
|
||||
|
||||
ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
|
||||
SRC += DRV2605L.c
|
||||
QUANTUM_LIB_SRC += i2c_master.c
|
||||
OPT_DEFS += -DDRV2605L
|
||||
endif
|
||||
|
||||
ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
|
||||
SRC += solenoid.c
|
||||
OPT_DEFS += -DSOLENOID_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(HD44780_ENABLE)), yes)
|
||||
SRC += drivers/avr/hd44780.c
|
||||
OPT_DEFS += -DHD44780_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||
OPT_DEFS += -DOLED_DRIVER_ENABLE
|
||||
COMMON_VPATH += $(DRIVER_PATH)/oled
|
||||
@@ -501,10 +442,34 @@ ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
|
||||
SRC += oled_driver.c
|
||||
endif
|
||||
|
||||
include $(DRIVER_PATH)/qwiic/qwiic.mk
|
||||
|
||||
ifeq ($(strip $(UCIS_ENABLE)), yes)
|
||||
OPT_DEFS += -DUCIS_ENABLE
|
||||
UNICODE_COMMON := yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
|
||||
OPT_DEFS += -DUNICODEMAP_ENABLE
|
||||
UNICODE_COMMON := yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(UNICODE_ENABLE)), yes)
|
||||
OPT_DEFS += -DUNICODE_ENABLE
|
||||
UNICODE_COMMON := yes
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(UNICODE_COMMON)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
|
||||
endif
|
||||
|
||||
SPACE_CADET_ENABLE ?= yes
|
||||
ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
|
||||
OPT_DEFS += -DSPACE_CADET_ENABLE
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
|
||||
OPT_DEFS += -DSPACE_CADET_ENABLE
|
||||
endif
|
||||
|
||||
MAGIC_ENABLE ?= yes
|
||||
@@ -523,3 +488,31 @@ ifeq ($(strip $(DYNAMIC_MACRO_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c
|
||||
OPT_DEFS += -DDYNAMIC_MACRO_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(COMBO_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
|
||||
OPT_DEFS += -DCOMBO_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
||||
OPT_DEFS += -DTAP_DANCE_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
|
||||
OPT_DEFS += -DKEY_LOCK_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LEADER_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
|
||||
OPT_DEFS += -DLEADER_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
|
||||
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
|
||||
OPT_DEFS += -DAUTO_SHIFT_ENABLE
|
||||
ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
|
||||
OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
* Simple Keycodes
|
||||
* [Full List](keycodes.md)
|
||||
* [Basic Keycodes](keycodes_basic.md)
|
||||
* [Layer Switching](feature_advanced_keycodes.md)
|
||||
* [Modifier Keys](feature_advanced_keycodes.md)
|
||||
* [Quantum Keycodes](quantum_keycodes.md)
|
||||
|
||||
* Advanced Keycodes
|
||||
@@ -71,6 +71,7 @@
|
||||
* [Combos](feature_combo.md)
|
||||
* [Debounce API](feature_debounce_type.md)
|
||||
* [Key Lock](feature_key_lock.md)
|
||||
* [Layers](feature_layers.md)
|
||||
* [One Shot Keys](one_shot_keys.md)
|
||||
* [Pointing Device](feature_pointing_device.md)
|
||||
* [Swap Hands](feature_swap_hands.md)
|
||||
@@ -79,6 +80,7 @@
|
||||
* [Terminal](feature_terminal.md)
|
||||
* [Unicode](feature_unicode.md)
|
||||
* [Userspace](feature_userspace.md)
|
||||
* [WPM Calculation](feature_wpm.md)
|
||||
|
||||
* Hardware Features
|
||||
* Displays
|
||||
|
||||
@@ -1,46 +1,3 @@
|
||||
# Switching and Toggling Layers :id=switching-and-toggling-layers
|
||||
|
||||
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. For a detailed explanation of layers, see [Keymap Overview](keymap.md#keymap-and-layers). When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.
|
||||
|
||||
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions.md#programming-the-behavior-of-any-keycode).)
|
||||
* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
|
||||
* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15 and the left modifiers: `MOD_LCTL`, `MOD_LSFT`, `MOD_LALT`, `MOD_LGUI` (note the use of `MOD_` constants instead of `KC_`). These modifiers can be combined using bitwise OR, e.g. `LM(_RAISE, MOD_LCTL | MOD_LALT)`.
|
||||
* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped. Only supports layers 0-15.
|
||||
* `OSL(layer)` - momentarily activates *layer* until the next key is pressed. See [One Shot Keys](one_shot_keys.md) for details and additional functionality.
|
||||
* `TG(layer)` - toggles *layer*, activating it if it's inactive and vice versa
|
||||
* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
|
||||
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps.
|
||||
|
||||
## Caveats
|
||||
|
||||
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Modifiers specified as part of a Layer Tap or Mod Tap's keycode will be ignored. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
|
||||
|
||||
Additionally, if at least one right-handed modifier is specified in a Mod Tap or Layer Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two.
|
||||
|
||||
# Working with Layers
|
||||
|
||||
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
|
||||
|
||||
## Beginners
|
||||
|
||||
If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:
|
||||
|
||||
* Setup layer 0 as your default, "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.). It's important to set this as the lowest layer since it will typically have most or all of the keyboard's keys defined, so would block other layers from having any effect if it were above them (i.e., had a higher layer number).
|
||||
* Arrange your layers in a "tree" layout, with layer 0 as the root. Do not try to enter the same layer from more than one other layer.
|
||||
* In a layer's keymap, only reference higher-numbered layers. Because layers are processed from the highest-numbered (topmost) active layer down, modifying the state of lower layers can be tricky and error-prone.
|
||||
|
||||
## Intermediate Users
|
||||
|
||||
Sometimes you need more than one base layer. For example, if you want to switch between QWERTY and Dvorak, switch between layouts for different countries, or switch your layout for different videogames. Your base layers should always be the lowest numbered layers. When you have multiple base layers you should always treat them as mutually exclusive. When one base layer is on the others are off.
|
||||
|
||||
## Advanced Users
|
||||
|
||||
Once you have a good feel for how layers work and what you can do, you can get more creative. The rules listed in the beginner section will help you be successful by avoiding some of the tricker details but they can be constraining, especially for ultra-compact keyboard users. Understanding how layers work will allow you to use them in more advanced ways.
|
||||
|
||||
Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to `KC_TRNS`. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than `KC_TRNS`, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem.
|
||||
|
||||
Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h).
|
||||
|
||||
# Modifier Keys :id=modifier-keys
|
||||
|
||||
These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then `kc` will be sent. On release, the keyup event for `kc`, then the modifier will be sent.
|
||||
@@ -63,10 +20,14 @@ These allow you to combine a modifier with a keycode. When pressed, the keydown
|
||||
|
||||
You can also chain them, for example `LCTL(LALT(KC_DEL))` makes a key that sends Control+Alt+Delete with a single keypress.
|
||||
|
||||
# Legacy Content
|
||||
# Legacy Content :id=legacy-content
|
||||
|
||||
This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.
|
||||
|
||||
## Layers :id=switching-and-toggling-layers
|
||||
|
||||
* [Layers](feature_layers.md)
|
||||
|
||||
## Mod-Tap :id=mod-tap
|
||||
|
||||
* [Mod-Tap](mod_tap.md)
|
||||
|
||||
@@ -123,7 +123,7 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
|
||||
|
||||
# Bootmagic Lite :id=bootmagic-lite
|
||||
|
||||
In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
|
||||
In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
|
||||
|
||||
To enable this version of Bootmagic, you need to enable it in your `rules.mk` with:
|
||||
|
||||
@@ -131,7 +131,7 @@ To enable this version of Bootmagic, you need to enable it in your `rules.mk` wi
|
||||
BOOTMAGIC_ENABLE = lite
|
||||
```
|
||||
|
||||
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
|
||||
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
|
||||
|
||||
```c
|
||||
#define BOOTMAGIC_LITE_ROW 0
|
||||
@@ -144,9 +144,20 @@ And to trigger the bootloader, you hold this key down when plugging the keyboard
|
||||
|
||||
!> Using bootmagic lite will **always reset** the EEPROM, so you will lose any settings that have been saved.
|
||||
|
||||
## Split Keyboards
|
||||
|
||||
When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. This To do so, add these entries to your `config.h` file:
|
||||
|
||||
```c
|
||||
#define BOOTMAGIC_LITE_ROW_RIGHT 4
|
||||
#define BOOTMAGIC_LITE_COLUMN_RIGHT 1
|
||||
```
|
||||
|
||||
By default, these values are not set.
|
||||
|
||||
## Advanced Bootmagic Lite
|
||||
|
||||
The `bootmagic_lite` function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.
|
||||
The `bootmagic_lite` function is defined weakly, so that you can replace this in your code, if you need. A great example of this is the Zeal60 boards that have some additional handling needed.
|
||||
|
||||
To replace the function, all you need to do is add something like this to your code:
|
||||
|
||||
@@ -163,4 +174,4 @@ void bootmagic_lite(void) {
|
||||
}
|
||||
```
|
||||
|
||||
You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.
|
||||
You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.
|
||||
|
||||
94
docs/feature_layers.md
Normal file
94
docs/feature_layers.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# Layers :id=layers
|
||||
|
||||
One of the most powerful and well used features of QMK Firmware is the ability to use layers. For most people, this amounts to a function key that allows for different keys, much like what you would see on a laptop or tablet keyboard.
|
||||
|
||||
For a detailed explanation of how the layer stack works, checkout [Keymap Overview](keymap.md#keymap-and-layers).
|
||||
|
||||
## Switching and Toggling Layers :id=switching-and-toggling-layers
|
||||
|
||||
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.
|
||||
|
||||
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions.md#programming-the-behavior-of-any-keycode).)
|
||||
* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
|
||||
* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15 and the left modifiers: `MOD_LCTL`, `MOD_LSFT`, `MOD_LALT`, `MOD_LGUI` (note the use of `MOD_` constants instead of `KC_`). These modifiers can be combined using bitwise OR, e.g. `LM(_RAISE, MOD_LCTL | MOD_LALT)`.
|
||||
* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped. Only supports layers 0-15.
|
||||
* `OSL(layer)` - momentarily activates *layer* until the next key is pressed. See [One Shot Keys](one_shot_keys.md) for details and additional functionality.
|
||||
* `TG(layer)` - toggles *layer*, activating it if it's inactive and vice versa
|
||||
* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
|
||||
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps.
|
||||
|
||||
### Caveats :id=caveats
|
||||
|
||||
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-16, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only.
|
||||
|
||||
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
|
||||
|
||||
Additionally, if at least one right-handed modifier is specified in a Mod Tap or Layer Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two.
|
||||
|
||||
## Working with Layers :id=working-with-layers
|
||||
|
||||
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
|
||||
|
||||
### Beginners :id=beginners
|
||||
|
||||
If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:
|
||||
|
||||
* Setup layer 0 as your default, "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.). It's important to set this as the lowest layer since it will typically have most or all of the keyboard's keys defined, so would block other layers from having any effect if it were above them (i.e., had a higher layer number).
|
||||
* Arrange your layers in a "tree" layout, with layer 0 as the root. Do not try to enter the same layer from more than one other layer.
|
||||
* In a layer's keymap, only reference higher-numbered layers. Because layers are processed from the highest-numbered (topmost) active layer down, modifying the state of lower layers can be tricky and error-prone.
|
||||
|
||||
### Intermediate Users :id=intermediate-users
|
||||
|
||||
Sometimes you need more than one base layer. For example, if you want to switch between QWERTY and Dvorak, switch between layouts for different countries, or switch your layout for different videogames. Your base layers should always be the lowest numbered layers. When you have multiple base layers you should always treat them as mutually exclusive. When one base layer is on the others are off.
|
||||
|
||||
### Advanced Users :id=advanced-users
|
||||
|
||||
Once you have a good feel for how layers work and what you can do, you can get more creative. The rules listed in the beginner section will help you be successful by avoiding some of the tricker details but they can be constraining, especially for ultra-compact keyboard users. Understanding how layers work will allow you to use them in more advanced ways.
|
||||
|
||||
Layers stack on top of each other in numerical order. When determining what a keypress does, QMK scans the layers from the top down, stopping when it reaches the first active layer that is not set to `KC_TRNS`. As a result if you activate a layer that is numerically lower than your current layer, and your current layer (or another layer that is active and higher than your target layer) has something other than `KC_TRNS`, that is the key that will be sent, not the key on the layer you just activated. This is the cause of most people's "why doesn't my layer get switched" problem.
|
||||
|
||||
Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h).
|
||||
|
||||
## Functions :id=functions
|
||||
|
||||
There are a number of functions (and variables) related to how you can use or manipulate the layers.
|
||||
|
||||
|Function |Description |
|
||||
|----------------------------------------------|---------------------------------------------------------------------------------------------------------|
|
||||
| `layer_state_set(layer_mask)` | Directly sets the layer state (recommended, do not use unless you know what you are doing). |
|
||||
| `layer_clear()` | Clears all layers (turns them all off). |
|
||||
| `layer_move(layer)` | Turns specified layer on, and all other layers off. |
|
||||
| `layer_on(layer)` | Turns specified layer on, leaves all other layers in existing state. |
|
||||
| `layer_off(layer)` | Turns specified layer off, leaves all other layers in existing state. |
|
||||
| `layer_invert(layer)` | Interverts/toggles the state of the specified layer |
|
||||
| `layer_or(layer_mask)` | Turns on layers based on matching bits between specifed layer and existing layer state. |
|
||||
| `layer_and(layer_mask)` | Turns on layers based on matching enabled bits between specifed layer and existing layer state. |
|
||||
| `layer_xor(layer_mask)` | Turns on layers based on non-matching bits between specifed layer and existing layer state. |
|
||||
| `layer_debug(layer_mask)` | Prints out the current bit mask and highest active layer to debugger console. |
|
||||
| `default_layer_set(layer_mask)` | Directly sets the default layer state (recommended, do not use unless you know what you are doing). |
|
||||
| `default_layer_or(layer_mask)` | Turns on layers based on matching bits between specifed layer and existing default layer state. |
|
||||
| `default_layer_and(layer_mask)` | Turns on layers based on matching enabled bits between specifed layer and existing default layer state. |
|
||||
| `default_layer_xor(layer_mask)` | Turns on layers based on non-matching bits between specifed layer and existing default layer state. |
|
||||
| `default_layer_debug(layer_mask)` | Prints out the current bit mask and highest active default layer to debugger console. |
|
||||
| [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) | Sets the default layer and writes it to persistent memory (EEPROM). |
|
||||
| [`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) | Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off). |
|
||||
| [`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) | Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. |
|
||||
|
||||
|
||||
In additional to the functions that you can call, there are a number of callback functions that get called every time the layer changes. This passed the layer state to the function, which can be read or modified.
|
||||
|
||||
|Callbacks |Description |
|
||||
|-----------------------------------------------------|----------------------------------------------------------------------------------------|
|
||||
| `layer_state_set_kb(layer_state_t state)` | Callback for layer functions, for keyboard. |
|
||||
| `layer_state_set_user(layer_state_t state)` | Callback for layer functions, for users. |
|
||||
| `default_layer_state_set_kb(layer_state_t state)` | Callback for default layer functions, for keyboard. Called on keyboard initialization. |
|
||||
| `default_layer_state_set_user(layer_state_t state)` | Callback for default layer functions, for users. Called on keyboard initialization. |
|
||||
|
||||
?> For additional details on how you can use these callbacks, check out the [Layer Change Code](custom_quantum_functions.md#layer-change-code) document.
|
||||
|
||||
|Check functions |Description |
|
||||
|-------------------------------------------|------------------------------------------------------------------------------|
|
||||
| `layer_state_cmp(cmp_layer_state, layer)` | This checks the `cmp_layer_state` to see if the specific `layer` is enabled. This is meant for use with the layer callbacks. |
|
||||
| `layer_state_is(layer)` | This checks the layer state to see if the specific `layer` is enabled. (calls `layer_state_cmp` for the global layer state). |
|
||||
|
||||
!> There is `IS_LAYER_ON(layer)` as well, however the `layer_state_cmp` function has some additional handling to ensure that on layer 0 that it returns the correct value. Otherwise, if you check to see if layer 0 is on, you may get an incorrect value returned.
|
||||
@@ -74,9 +74,9 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
|
||||
|
||||
## Strict Key Processing
|
||||
|
||||
By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](mod_tap.md) and [`Layer Tap`](feature_advanced_keycodes.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users.
|
||||
By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](mod_tap.md) and [`Layer Tap`](feature_layers.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users.
|
||||
|
||||
While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by added `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This well then disable the filtering, and you'll need to specify the whole keycode.
|
||||
While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by added `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This will then disable the filtering, and you'll need to specify the whole keycode.
|
||||
|
||||
## Customization
|
||||
|
||||
|
||||
@@ -88,6 +88,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
};
|
||||
```
|
||||
|
||||
### Advanced Macros
|
||||
|
||||
In addition to the `process_record_user()` function, is the `post_process_record_user()` function. This runs after `process_record` and can be used to do things after a keystroke has been sent. This is useful if you want to have a key pressed before and released after a normal key, for instance.
|
||||
|
||||
In this example, we modify most normal keypresses so that `F22` is pressed before the keystroke is normally sent, and release it __only after__ it's been released.
|
||||
|
||||
```c
|
||||
static uint8_t f22_tracker;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_A ... KC_F21: //notice how it skips over F22
|
||||
case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_F22); //this means to send F22 down
|
||||
f22_tracker++;
|
||||
register_code(keycode);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_A ... KC_F21: //notice how it skips over F22
|
||||
case KC_F23 ... KC_EXSEL: //exsel is the last one before the modifier keys
|
||||
if (!record->event.pressed) {
|
||||
f22_tracker--;
|
||||
if (!f22_tracker) {
|
||||
unregister_code(KC_F22); //this means to send F22 up
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### TAP, DOWN and UP
|
||||
|
||||
You may want to use keys in your macros that you can't write down, such as `Ctrl` or `Home`.
|
||||
|
||||
@@ -396,18 +396,88 @@ The EEPROM for it is currently shared with the RGBLIGHT system (it's generally a
|
||||
|
||||
Where `28` is an unused index from `eeconfig.h`.
|
||||
|
||||
## Suspended state :id=suspended-state
|
||||
## Functions :id=functions
|
||||
|
||||
To use the suspend feature, add this to your `<keyboard>.c`:
|
||||
### Direct Operation :id=direct-operation
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_set_color_all(r, g, b)` |Set all of the LEDs to the given RGB value, where `r`/`g`/`b` are between 0 and 255 (not written to EEPROM) |
|
||||
|`rgb_matrix_set_color(index, r, g, b)` |Set a single LED to the given RGB value, where `r`/`g`/`b` are between 0 and 255, and `index` is between 0 and `DRIVER_LED_TOTAL` (not written to EEPROM) |
|
||||
|
||||
### Disable/Enable Effects :id=disable-enable-effects
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_toggle()` |Toggle effect range LEDs between on and off |
|
||||
|`rgb_matrix_toggle_noeeprom()` |Toggle effect range LEDs between on and off (not written to EEPROM) |
|
||||
|`rgb_matrix_enable()` |Turn effect range LEDs on, based on their previous state |
|
||||
|`rgb_matrix_enable_noeeprom()` |Turn effect range LEDs on, based on their previous state (not written to EEPROM) |
|
||||
|`rgb_matrix_disable()` |Turn effect range LEDs off |
|
||||
|`rgb_matrix_disable_noeeprom()` |Turn effect range LEDs off (not written to EEPROM) |
|
||||
|
||||
### Change Effect Mode :id=change-effect-mode
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_mode(mode)` |Set the mode, if RGB animations are enabled |
|
||||
|`rgb_matrix_mode_noeeprom(mode)` |Set the mode, if RGB animations are enabled (not written to EEPROM) |
|
||||
|`rgb_matrix_step()` |Change the mode to the next RGB animation in the list of enabled RGB animations |
|
||||
|`rgb_matrix_step_reverse()` |Change the mode to the previous RGB animation in the list of enabled RGB animations |
|
||||
|`rgb_matrix_increase_speed()` |Increases the speed of the animations |
|
||||
|`rgb_matrix_decrease_speed()` |Decreases the speed of the animations |
|
||||
|
||||
### Change Color :id=change-color
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_increase_hue()` |Increase the hue for effect range LEDs. This wraps around at maximum hue |
|
||||
|`rgb_matrix_decrease_hue()` |Decrease the hue for effect range LEDs. This wraps around at minimum hue |
|
||||
|`rgb_matrix_increase_sat()` |Increase the saturation for effect range LEDs. This wraps around at maximum saturation |
|
||||
|`rgb_matrix_decrease_sat()` |Decrease the saturation for effect range LEDs. This wraps around at minimum saturation |
|
||||
|`rgb_matrix_increase_val()` |Increase the value for effect range LEDs. This wraps around at maximum value |
|
||||
|`rgb_matrix_decrease_val()` |Decrease the value for effect range LEDs. This wraps around at minimum value |
|
||||
|`rgb_matrix_sethsv(h, s, v)` |Set LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 |
|
||||
|`rgb_matrix_sethsv_noeeprom(h, s, v)` |Set LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 (not written to EEPROM) |
|
||||
|
||||
### Query Current Status :id=query-current-status
|
||||
|Function |Description |
|
||||
|-----------------------|-----------------|
|
||||
|`rgb_matrix_get_mode()` |Get current mode |
|
||||
|`rgb_matrix_get_hue()` |Get current hue |
|
||||
|`rgb_matrix_get_sat()` |Get current sat |
|
||||
|`rgb_matrix_get_val()` |Get current val |
|
||||
|
||||
## Callbacks :id=callbacks
|
||||
|
||||
### Indicators :id=indicators
|
||||
|
||||
If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `rgb_matrix_indicators_kb` or `rgb_matrix_indicators_user` function for that:
|
||||
```c
|
||||
void rgb_matrix_indicators_kb(void) {
|
||||
rgb_matrix_set_color(index, red, green, blue);
|
||||
}
|
||||
```
|
||||
|
||||
### Suspended state :id=suspended-state
|
||||
To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
|
||||
|
||||
Additionally add this to your `<keyboard>.c`:
|
||||
|
||||
```c
|
||||
void suspend_power_down_kb(void)
|
||||
{
|
||||
void suspend_power_down_kb(void) {
|
||||
rgb_matrix_set_suspend_state(true);
|
||||
suspend_power_down_user();
|
||||
}
|
||||
|
||||
void suspend_wakeup_init_kb(void) {
|
||||
rgb_matrix_set_suspend_state(false);
|
||||
suspend_wakeup_init_user();
|
||||
}
|
||||
```
|
||||
or add this to your `keymap.c`:
|
||||
```c
|
||||
void suspend_power_down_user(void) {
|
||||
rgb_matrix_set_suspend_state(true);
|
||||
}
|
||||
|
||||
void suspend_wakeup_init_kb(void)
|
||||
{
|
||||
void suspend_wakeup_init_user(void) {
|
||||
rgb_matrix_set_suspend_state(false);
|
||||
}
|
||||
```
|
||||
|
||||
@@ -175,23 +175,23 @@ const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
|
||||
## Lighting Layers
|
||||
|
||||
By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make
|
||||
it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.
|
||||
it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.
|
||||
|
||||
To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
|
||||
|
||||
```c
|
||||
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
|
||||
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{6, 4, HSV_RED}, // Light 4 LEDs, starting with LED 6
|
||||
{12, 4, HSV_RED} // Light 4 LEDs, starting with LED 12
|
||||
{6, 4, HSV_RED}, // Light 4 LEDs, starting with LED 6
|
||||
{12, 4, HSV_RED} // Light 4 LEDs, starting with LED 12
|
||||
);
|
||||
// Light LEDs 9 & 10 in cyan when keyboard layer 1 is active
|
||||
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{9, 2, HSV_CYAN}
|
||||
{9, 2, HSV_CYAN}
|
||||
);
|
||||
// Light LEDs 11 & 12 in purple when keyboard layer 2 is active
|
||||
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{11, 2, HSV_PURPLE},
|
||||
{11, 2, HSV_PURPLE}
|
||||
);
|
||||
// etc..
|
||||
```
|
||||
@@ -201,14 +201,14 @@ We combine these layers into an array using the `RGBLIGHT_LAYERS_LIST` macro, an
|
||||
```c
|
||||
// Now define the array of layers. Later layers take precedence
|
||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||
my_capslock_layer,
|
||||
my_layer1_layer, // Overrides caps lock layer
|
||||
my_layer2_layer // Overrides other layers
|
||||
my_capslock_layer,
|
||||
my_layer1_layer, // Overrides caps lock layer
|
||||
my_layer2_layer // Overrides other layers
|
||||
);
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
// Enable the LED layers
|
||||
rgblight_layers = my_rgb_layers;
|
||||
// Enable the LED layers
|
||||
rgblight_layers = my_rgb_layers;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -216,15 +216,15 @@ Finally, we enable and disable the lighting layers whenever the state of the key
|
||||
|
||||
```c
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
// Both layers will light up if both kb layers are active
|
||||
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
|
||||
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
|
||||
return state;
|
||||
// Both layers will light up if both kb layers are active
|
||||
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
|
||||
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
|
||||
return state;
|
||||
}
|
||||
|
||||
bool led_update_user(led_t led_state) {
|
||||
rgblight_set_layer_state(0, led_state.caps_lock);
|
||||
return true;
|
||||
rgblight_set_layer_state(0, led_state.caps_lock);
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
25
docs/feature_wpm.md
Normal file
25
docs/feature_wpm.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Word Per Minute (WPM) Calculcation
|
||||
|
||||
The WPM feature uses time between keystrokes to compute a rolling average words
|
||||
per minute rate and makes this available for various uses.
|
||||
|
||||
Enable the WPM system by adding this to your `rules.mk`:
|
||||
|
||||
WPM_ENABLE = yes
|
||||
|
||||
For split keyboards using soft serial, the computed WPM
|
||||
score will be available on the master AND slave half.
|
||||
|
||||
## Public Functions
|
||||
|
||||
`uint8_t get_current_wpm(void);`
|
||||
This function returns the current WPM as an unsigned integer.
|
||||
|
||||
|
||||
## Customized keys for WPM calc
|
||||
|
||||
By default, the WPM score only includes letters, numbers, space and some
|
||||
punctuation. If you want to change the set of characters considered as part of
|
||||
the WPM calculation, you can implement `wpm_keycode_user(uint16_t keycode)`
|
||||
and return true for any characters you would like included in the calculation,
|
||||
or false to not count that particular keycode.
|
||||
@@ -1,8 +1,8 @@
|
||||
# Quantum Mechanical Keyboard Firmware
|
||||
|
||||
<!---
|
||||
original document: eae21eed7:docs/README.md
|
||||
git diff eae21eed7 HEAD -- docs/README.md | cat
|
||||
original document: 0.8.58:docs/README.md
|
||||
git diff 0.8.58 HEAD -- docs/README.md | cat
|
||||
-->
|
||||
|
||||
[](https://github.com/qmk/qmk_firmware/tags)
|
||||
@@ -12,26 +12,37 @@
|
||||
[](https://github.com/qmk/qmk_firmware/pulse/monthly)
|
||||
[](https://github.com/qmk/qmk_firmware/)
|
||||
|
||||
## QMK ファームウェアとは何か?
|
||||
## QMK ファームウェアとは何でしょうか?
|
||||
|
||||
QMK (*Quantum Mechanical Keyboard*)は QMK ファームウェア、QMK ツールボックス、qmk.fm およびそれらのドキュメントを保守するオープンソースコミュニティです。QMK ファームウェアは[tmk\_keyboard](http://github.com/tmk/tmk_keyboard) を元にしたキーボードファームウェアで、Atmel AVR コントローラ、より具体的には [OLKB 製品](http://olkb.com)、[ErgoDox EZ](http://www.ergodox-ez.com) キーボードおよび [Clueboard 製品](http://clueboard.co/) のための幾つかの便利な機能を持ちます。また、ChibiOS を使って ARM チップに移植されています。これを使ってあなたの作った手配線のキーボードあるいはカスタムキーボード PCB で作ったキーボードを動かすことができます。
|
||||
QMK (*Quantum Mechanical Keyboard*)は、コンピュータ入力デバイスの開発を中心としたオープンソースコミュニティです。コミュニティには、キーボード、マウス、MIDI デバイスなど、全ての種類の入力デバイスが含まれます。協力者の中心グループは、[QMK ファームウェア](https://github.com/qmk/qmk_firmware)、[QMK Configurator](https://config.qmk.fm)、[QMK ツールボックス](https://github.com/qmk/qmk_toolbox)、[qmk.fm](https://qmk.fm)、そして、このドキュメントを、あなたのようなコミュニティメンバーの助けを借りて保守しています。
|
||||
|
||||
## 入手方法
|
||||
## 始めましょう
|
||||
|
||||
QMK のキーマップ、キーボード、機能に貢献をする予定がある場合、最も簡単なのは、[Github を介してリポジトリをフォークし](https://github.com/qmk/qmk_firmware#fork-destination-box)、リポジトリをあなたの開発環境にクローンして変更を加え、それらをプッシュし、[プルリクエスト](https://github.com/qmk/qmk_firmware/pulls)を開くことです。
|
||||
QMK は初めてですか?始めるには2つの方法があります:
|
||||
|
||||
それ以外の場合は、`git clone https://github.com/qmk/qmk_firmware` を介して直接クローンすることができます。zip または tar ファイルをダウンロードしないでください。コンパイルするためのサブモジュールをダウンロードするために git リポジトリが必要です。
|
||||
* 基本: [QMK Configurator](https://config.qmk.fm)
|
||||
* ドロップダウンからあなたのキーボードを選択し、キーボードをプログラムします。
|
||||
* 見ることができる [紹介ビデオ](https://www.youtube.com/watch?v=-imgglzDMdY) があります。
|
||||
* 読むことができる概要 [ドキュメント](ja/newbs_building_firmware_configurator.md) があります。
|
||||
* 発展: [ソースを使用します](ja/newbs.md)
|
||||
* より強力ですが、使うのはより困難です。
|
||||
|
||||
## コンパイル方法
|
||||
## 自分用にアレンジします
|
||||
|
||||
コンパイルをする前に、AVR または ARM 開発のための[環境をインストール](ja/getting_started_build_tools.md)する必要があります。それが完了したら、`make` コマンドを使用して、以下の表記でキーボードとキーマップをビルドします。
|
||||
QMK には、探求すべき多くの[機能](ja/features.md)と、深く知るためのリファレンスドキュメントがたくさんあります。ほとんどの機能は[キーマップ](ja/keymap.md)を変更し、[キーコード](ja/keycodes.md)を変更することで活用されます。
|
||||
|
||||
make planck/rev4:default
|
||||
## 手助けが必要ですか?
|
||||
|
||||
これは、`planck` の `rev4` リビジョンを `default` キーマップでビルドします。全てのキーボードにリビジョン(サブプロジェクトまたはフォルダとも呼ばれます)があるわけではありません。その場合は省略されます:
|
||||
[サポートページ](ja/support.md) をチェックして、QMK の使い方について手助けを得る方法を確認してください。
|
||||
|
||||
make preonic:default
|
||||
## 貢献する
|
||||
|
||||
## カスタマイズ方法
|
||||
QMK コミュニティに貢献する方法はたくさんあります。始める最も簡単な方法は、それを使って友人に QMK という単語を広めることです。
|
||||
|
||||
QMK には、探求すべき多くの[機能](ja/features.md)と、深堀りするための[リファレンス ドキュメント](http://docs.qmk.fm)がたくさんあります。ほとんどの機能は[キーマップ](ja/keymap.md)を変更し、[キーコード](ja/keycodes.md)を変更することで活用されます。
|
||||
* フォーラムやチャットルームで人々を支援します:
|
||||
* [/r/olkb](https://www.reddit.com/r/olkb/)
|
||||
* [Discord サーバ](https://discord.gg/Uq7gcHh)
|
||||
* 下にある「Edit This Page」をクリックしてドキュメントに貢献します
|
||||
* [ドキュメントをあなたの言語に翻訳します](ja/translating.md)
|
||||
* [バグを報告します](https://github.com/qmk/qmk_firmware/issues/new/choose)
|
||||
* [プルリクエストを開きます](ja/contributing.md)
|
||||
|
||||
@@ -1,130 +1,162 @@
|
||||
* [完全な初心者のガイド](ja/newbs.md)
|
||||
* [はじめに](ja/newbs_getting_started.md)
|
||||
* [初めてのファームウェアの構築](ja/newbs_building_firmware.md)
|
||||
* [ファームウェアのフラッシュ](ja/newbs_flashing.md)
|
||||
* [テストとデバッグ](ja/newbs_testing_debugging.md)
|
||||
* [QMK における Git 運用作法](ja/newbs_git_best_practices.md)
|
||||
* [あなたのフォークの master ブランチ](ja/newbs_git_using_your_master_branch.md)
|
||||
* [マージの競合の解決](ja/newbs_git_resolving_merge_conflicts.md)
|
||||
* [同期のとれていない git ブランチの再同期](ja/newbs_git_resynchronize_a_branch.md)
|
||||
* [学習リソース](ja/newbs_learn_more_resources.md)
|
||||
* チュートリアル
|
||||
* [入門](ja/newbs.md)
|
||||
* [セットアップ](ja/newbs_getting_started.md)
|
||||
* [初めてのファームウェアの構築](ja/newbs_building_firmware.md)
|
||||
* [ファームウェアのフラッシュ](ja/newbs_flashing.md)
|
||||
* [テストとデバッグ](ja/newbs_testing_debugging.md)
|
||||
* [手助けを得る/サポート](ja/support.md)
|
||||
* [他のリソース](ja/newbs_learn_more_resources.md)
|
||||
|
||||
* [QMKの基本](ja/README.md)
|
||||
* [QMK の導入](ja/getting_started_introduction.md)
|
||||
* [QMK CLI](ja/cli.md)
|
||||
* [QMK CLI 設定](ja/cli_configuration.md)
|
||||
* [QMK への貢献](ja/contributing.md)
|
||||
* [Github の使い方](ja/getting_started_github.md)
|
||||
* [ヘルプ](ja/getting_started_getting_help.md)
|
||||
* FAQ
|
||||
* [一般的な FAQ](ja/faq_general.md)
|
||||
* [QMK のビルド/コンパイル](ja/faq_build.md)
|
||||
* [QMK のデバッグ/トラブルシューティング](ja/faq_debug.md)
|
||||
* [キーマップ FAQ](ja/faq_keymap.md)
|
||||
* [用語](ja/reference_glossary.md)
|
||||
|
||||
* [破壊的な変更](ja/breaking_changes.md)
|
||||
* [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md)
|
||||
* [2019年8月30日](ja/ChangeLog/20190830.md)
|
||||
* Configurator
|
||||
* [概要](ja/newbs_building_firmware_configurator.md)
|
||||
* [ステップ・バイ・ステップ](ja/configurator_step_by_step.md)
|
||||
* [トラブルシューティング](ja/configurator_troubleshooting.md)
|
||||
* QMK API
|
||||
* [概要](ja/api_overview.md)
|
||||
* [API ドキュメント](ja/api_docs.md)
|
||||
* [キーボードサポート](ja/reference_configurator_support.md)
|
||||
|
||||
* [FAQ](ja/faq.md)
|
||||
* [一般的な FAQ](ja/faq_general.md)
|
||||
* [QMK のビルド/コンパイル](ja/faq_build.md)
|
||||
* [QMK のデバッグ/トラブルシューティング](ja/faq_debug.md)
|
||||
* [キーマップ](ja/faq_keymap.md)
|
||||
* [Zadig を使ったドライバのインストール](ja/driver_installation_zadig.md)
|
||||
* CLI
|
||||
* [概要](ja/cli.md)
|
||||
* [設定](ja/cli_configuration.md)
|
||||
* [コマンド](ja/cli_commands.md)
|
||||
|
||||
* 詳細なガイド
|
||||
* [ビルドツールのインストール](ja/getting_started_build_tools.md)
|
||||
* [Vagrant のガイド](ja/getting_started_vagrant.md)
|
||||
* [ビルド/コンパイルの説明](ja/getting_started_make_guide.md)
|
||||
* [ファームウェアのフラッシュ](ja/flashing.md)
|
||||
* [機能のカスタマイズ](ja/custom_quantum_functions.md)
|
||||
* [キーマップの概要](ja/keymap.md)
|
||||
* QMK を使う
|
||||
* ガイド
|
||||
* [機能のカスタマイズ](ja/custom_quantum_functions.md)
|
||||
* [Zadig を使ったドライバのインストール](ja/driver_installation_zadig.md)
|
||||
* [キーマップの概要](ja/keymap.md)
|
||||
* [Vagrant のガイド](ja/getting_started_vagrant.md)
|
||||
* 書き込み
|
||||
* [書き込み](ja/flashing.md)
|
||||
* [ATmega32A の書き込み (ps2avrgb)](ja/flashing_bootloadhid.md)
|
||||
* IDE
|
||||
* [Eclipse で QMK を使用](ja/other_eclipse.md)
|
||||
* [VSCode で QMK を使用](ja/other_vscode.md)
|
||||
* Git のベストプラクティス
|
||||
* [入門](ja/newbs_git_best_practices.md)
|
||||
* [フォーク](ja/newbs_git_using_your_master_branch.md)
|
||||
* [マージの競合の解決](ja/newbs_git_resolving_merge_conflicts.md)
|
||||
* [ブランチの修正](ja/newbs_git_resynchronize_a_branch.md)
|
||||
* キーボードを作る
|
||||
* [Hand Wiring ガイド](ja/hand_wire.md)
|
||||
* [ISP 書き込みガイド](ja/isp_flashing_guide.md)
|
||||
|
||||
* [ハードウェア](ja/hardware.md)
|
||||
* [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
|
||||
* [AVR プロセッサ](ja/hardware_avr.md)
|
||||
* [ドライバ](ja/hardware_drivers.md)
|
||||
* 単純なキーコード
|
||||
* [完全なリスト](ja/keycodes.md)
|
||||
* [基本的なキーコード](ja/keycodes_basic.md)
|
||||
* [修飾キー](ja/feature_advanced_keycodes.md)
|
||||
* [Quantum キーコード](ja/quantum_keycodes.md)
|
||||
|
||||
* リファレンス
|
||||
* [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md)
|
||||
* [設定オプション](ja/config_options.md)
|
||||
* [キーコード](ja/keycodes.md)
|
||||
* [コーディング規約 - C](ja/coding_conventions_c.md)
|
||||
* [コーディング規約 - Python](ja/coding_conventions_python.md)
|
||||
* [ドキュメント ベストプラクティス](ja/documentation_best_practices.md)
|
||||
* [ドキュメント テンプレート](ja/documentation_templates.md)
|
||||
* [用語](ja/reference_glossary.md)
|
||||
* [ユニットテスト](ja/unit_testing.md)
|
||||
* [便利な関数](ja/ref_functions.md)
|
||||
* [Configurator サポート](ja/reference_configurator_support.md)
|
||||
* [info.json 形式](ja/reference_info_json.md)
|
||||
* [Python CLI 開発](ja/cli_development.md)
|
||||
* 高度なキーコード
|
||||
* [コマンド](ja/feature_command.md)
|
||||
* [動的マクロ](ja/feature_dynamic_macros.md)
|
||||
* [グレイブ エスケープ](ja/feature_grave_esc.md)
|
||||
* [リーダーキー](ja/feature_leader_key.md)
|
||||
* [モッドタップ](ja/mod_tap.md)
|
||||
* [マクロ](ja/feature_macros.md)
|
||||
* [マウスキー](ja/feature_mouse_keys.md)
|
||||
* [Space Cadet Shift](ja/feature_space_cadet.md)
|
||||
* [US ANSI シフトキー](ja/keycodes_us_ansi_shifted.md)
|
||||
|
||||
* [機能](ja/features.md)
|
||||
* [基本的なキーコード](ja/keycodes_basic.md)
|
||||
* [US ANSI シフトキー](ja/keycodes_us_ansi_shifted.md)
|
||||
* [Quantum キーコード](ja/quantum_keycodes.md)
|
||||
* [Advanced キーコード](ja/feature_advanced_keycodes.md)
|
||||
* [オーディオ](ja/feature_audio.md)
|
||||
* [自動シフト](ja/feature_auto_shift.md)
|
||||
* [バックライト](ja/feature_backlight.md)
|
||||
* [ブルートゥース](ja/feature_bluetooth.md)
|
||||
* [ブートマジック](ja/feature_bootmagic.md)
|
||||
* [コンボ](ja/feature_combo.md)
|
||||
* [コマンド](ja/feature_command.md)
|
||||
* [デバウンス API](ja/feature_debounce_type.md)
|
||||
* [DIP スイッチ](ja/feature_dip_switch.md)
|
||||
* [動的マクロ](ja/feature_dynamic_macros.md)
|
||||
* [エンコーダ](ja/feature_encoders.md)
|
||||
* [グレイブ エスケープ](ja/feature_grave_esc.md)
|
||||
* [触覚フィードバック](ja/feature_haptic_feedback.md)
|
||||
* [HD44780 LCD コントローラ](ja/feature_hd44780.md)
|
||||
* [キーロック](ja/feature_key_lock.md)
|
||||
* [レイアウト](ja/feature_layouts.md)
|
||||
* [リーダー キー](ja/feature_leader_key.md)
|
||||
* [LED マトリックス](ja/feature_led_matrix.md)
|
||||
* [マクロ](ja/feature_macros.md)
|
||||
* [マウスキー](ja/feature_mouse_keys.md)
|
||||
* [OLED ドライバ](ja/feature_oled_driver.md)
|
||||
* [One Shot Keys](ja/one_shot_keys.md)
|
||||
* [ポインティング デバイス](ja/feature_pointing_device.md)
|
||||
* [PS/2 マウス](ja/feature_ps2_mouse.md)
|
||||
* [RGB ライト](ja/feature_rgblight.md)
|
||||
* [RGB マトリックス](ja/feature_rgb_matrix.md)
|
||||
* [Space Cadet](ja/feature_space_cadet.md)
|
||||
* [分割キーボード](ja/feature_split_keyboard.md)
|
||||
* [Stenography](ja/feature_stenography.md)
|
||||
* [Swap Hands](ja/feature_swap_hands.md)
|
||||
* [タップ ダンス](ja/feature_tap_dance.md)
|
||||
* [ターミナル](ja/feature_terminal.md)
|
||||
* [感熱式プリンタ](ja/feature_thermal_printer.md)
|
||||
* [ユニコード](ja/feature_unicode.md)
|
||||
* [ユーザスペース](ja/feature_userspace.md)
|
||||
* [Velocikey](ja/feature_velocikey.md)
|
||||
* ソフトウェア機能
|
||||
* [自動シフト](ja/feature_auto_shift.md)
|
||||
* [コンボ](ja/feature_combo.md)
|
||||
* [デバウンス API](ja/feature_debounce_type.md)
|
||||
* [キーロック](ja/feature_key_lock.md)
|
||||
* [レイヤー](ja/feature_layers.md)
|
||||
* [One Shot Keys](ja/one_shot_keys.md)
|
||||
* [ポインティング デバイス](ja/feature_pointing_device.md)
|
||||
* [Swap Hands](ja/feature_swap_hands.md)
|
||||
* [タップダンス](ja/feature_tap_dance.md)
|
||||
* [タップホールド設定](ja/tap_hold.md)
|
||||
* [ターミナル](ja/feature_terminal.md)
|
||||
* [ユニコード](ja/feature_unicode.md)
|
||||
* [ユーザスペース](ja/feature_userspace.md)
|
||||
* [WPM 計算](ja/feature_wpm.md)
|
||||
|
||||
* メーカーおよびモッダーのために
|
||||
* [Hand Wiring ガイド](ja/hand_wire.md)
|
||||
* [ISP 書き込みガイド](ja/isp_flashing_guide.md)
|
||||
* [ARM デバッグ ガイド](ja/arm_debugging.md)
|
||||
* [ADC ドライバ](ja/adc_driver.md)
|
||||
* [I2C ドライバ](ja/i2c_driver.md)
|
||||
* [WS2812 ドライバ](ja/ws2812_driver.md)
|
||||
* [EEPROM ドライバ](ja/eeprom_driver.md)
|
||||
* [GPIO コントロール](ja/internals_gpio_control.md)
|
||||
* [カスタムマトリックス](ja/custom_matrix.md)
|
||||
* [Proton C 規約](ja/proton_c_conversion.md)
|
||||
* ハードウェア機能
|
||||
* 表示
|
||||
* [HD44780 LCD コントローラ](ja/feature_hd44780.md)
|
||||
* [OLED ドライバ](ja/feature_oled_driver.md)
|
||||
* 電飾
|
||||
* [バックライト](ja/feature_backlight.md)
|
||||
* [LED マトリックス](ja/feature_led_matrix.md)
|
||||
* [RGB ライト](ja/feature_rgblight.md)
|
||||
* [RGB マトリックス](ja/feature_rgb_matrix.md)
|
||||
* [オーディオ](ja/feature_audio.md)
|
||||
* [Bluetooth](ja/feature_bluetooth.md)
|
||||
* [ブートマジック](ja/feature_bootmagic.md)
|
||||
* [カスタムマトリックス](ja/custom_matrix.md)
|
||||
* [DIP スイッチ](ja/feature_dip_switch.md)
|
||||
* [エンコーダ](ja/feature_encoders.md)
|
||||
* [触覚フィードバック](ja/feature_haptic_feedback.md)
|
||||
* [Proton C 規約](ja/proton_c_conversion.md)
|
||||
* [PS/2 マウス](ja/feature_ps2_mouse.md)
|
||||
* [分割キーボード](ja/feature_split_keyboard.md)
|
||||
* [Stenography](ja/feature_stenography.md)
|
||||
* [感熱式プリンタ](ja/feature_thermal_printer.md)
|
||||
* [Velocikey](ja/feature_velocikey.md)
|
||||
|
||||
* より深く知るために
|
||||
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
|
||||
* [QMK の理解](ja/understanding_qmk.md)
|
||||
* QMK の開発
|
||||
* 破壊的な変更
|
||||
* [概要](ja/breaking_changes.md)
|
||||
* [プルリクエストにフラグが付けられた](ja/breaking_changes_instructions.md)
|
||||
* 履歴
|
||||
* [2020年2月29日](ja/ChangeLog/20200229.md)
|
||||
* [2019年8月30日](ja/ChangeLog/20190830.md)
|
||||
|
||||
* 他の話題
|
||||
* [Eclipse で QMK を使用](ja/other_eclipse.md)
|
||||
* [VSCode で QMK を使用](ja/other_vscode.md)
|
||||
* [サポート](ja/getting_started_getting_help.md)
|
||||
* [翻訳を追加する方法](ja/translating.md)
|
||||
* C 開発
|
||||
* [ARM デバッグ ガイド](ja/arm_debugging.md)
|
||||
* [AVR プロセッサ](ja/hardware_avr.md)
|
||||
* [コーディング規約](ja/coding_conventions_c.md)
|
||||
* [互換性のあるマイクロコントローラ](ja/compatible_microcontrollers.md)
|
||||
* [ドライバ](ja/hardware_drivers.md)
|
||||
* [ADC ドライバ](ja/adc_driver.md)
|
||||
* [I2C ドライバ](ja/i2c_driver.md)
|
||||
* [WS2812 ドライバ](ja/ws2812_driver.md)
|
||||
* [EEPROM ドライバ](ja/eeprom_driver.md)
|
||||
* [GPIO コントロール](ja/internals_gpio_control.md)
|
||||
* [キーボード ガイドライン](ja/hardware_keyboard_guidelines.md)
|
||||
|
||||
* QMK の内部詳細(作成中)
|
||||
* [定義](ja/internals_defines.md)
|
||||
* [Input Callback Reg](ja/internals_input_callback_reg.md)
|
||||
* [Midi ドライバ](ja/internals_midi_device.md)
|
||||
* [Midi デバイスのセットアップ手順](ja/internals_midi_device_setup_process.md)
|
||||
* [Midi ユーティリティ](ja/internals_midi_util.md)
|
||||
* [Send Functions](ja/internals_send_functions.md)
|
||||
* [Sysex Tools](ja/internals_sysex_tools.md)
|
||||
* Python 開発
|
||||
* [コーディング規約](ja/coding_conventions_python.md)
|
||||
* [QMK CLI 開発](ja/cli_development.md)
|
||||
|
||||
* Configurator 開発
|
||||
* QMK API
|
||||
* [開発環境](ja/api_development_environment.md)
|
||||
* [アーキテクチャの概要](ja/api_development_overview.md)
|
||||
|
||||
* QMK Reference
|
||||
* [QMK への貢献](ja/contributing.md)
|
||||
* [QMK ドキュメントの翻訳](ja/translating.md)
|
||||
* [設定オプション](ja/config_options.md)
|
||||
* [Make ドキュメント](ja/getting_started_make_guide.md)
|
||||
* [ドキュメント ベストプラクティス](ja/documentation_best_practices.md)
|
||||
* [ドキュメント テンプレート](ja/documentation_templates.md)
|
||||
* [コミュニティレイアウト](ja/feature_layouts.md)
|
||||
* [ユニットテスト](ja/unit_testing.md)
|
||||
* [便利な関数](ja/ref_functions.md)
|
||||
* [info.json 形式](ja/reference_info_json.md)
|
||||
|
||||
* より深く知るために
|
||||
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
|
||||
* [マトリックスがどのように動作するか](ja/how_a_matrix_works.md)
|
||||
* [QMK を理解する](ja/understanding_qmk.md)
|
||||
|
||||
* QMK の内部詳細(作成中)
|
||||
* [定義](ja/internals_defines.md)
|
||||
* [Input Callback Reg](ja/internals_input_callback_reg.md)
|
||||
* [Midi デバイス](ja/internals_midi_device.md)
|
||||
* [Midi デバイスのセットアップ手順](ja/internals_midi_device_setup_process.md)
|
||||
* [Midi ユーティリティ](ja/internals_midi_util.md)
|
||||
* [Send Functions](ja/internals_send_functions.md)
|
||||
* [Sysex Tools](ja/internals_sysex_tools.md)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Eclipse を使った ARM デバッグ
|
||||
|
||||
<!---
|
||||
original document: eae21eed7:docs/arm_debugging.md
|
||||
git diff eae21eed7 HEAD -- docs/arm_debugging.md | cat
|
||||
original document: 0.8.58:docs/arm_debugging.md
|
||||
git diff 0.8.58 HEAD -- docs/arm_debugging.md | cat
|
||||
-->
|
||||
|
||||
このページでは、SWD アダプタとオープンソース/フリーツールを使って ARM MCU をデバッグするためのセットアップ方法について説明します。このガイドでは、GNU MCU Eclipse IDE for C/C++ Developers および OpenOCD を必要な依存関係と一緒にインストールします。
|
||||
@@ -60,7 +60,7 @@ Java は Eclipse で必要とされるため、[ここ](https://www.oracle.com/t
|
||||
|
||||
Eclipse に QMK をビルドしようとするデバイスを教える必要があります。QMK フォルダを右クリック -> Properties -> C/C++ Build -> Settings を選択します。Devices タブを選択し、Devices の下から MCU の適切な種類を選択します。私の例では、STM32F303CC です。
|
||||
|
||||
この間に、Build コマンドもセットアップしましょう。C/C++ Build を選択し、Behavior タブを選択します。build コマンドのところで、`all` を必要な make コマンドに置き換えます。例えば、rev6 Planck の default キーマップの場合、これは `planck/rev6:default` になります。Apply and Close を選択します。
|
||||
この間に、Build コマンドもセットアップしましょう。C/C++ Build を選択し、Behavior タブを選択します。Build コマンドのところで、`all` を必要な make コマンドに置き換えます。例えば、rev6 Planck の default キーマップの場合、これは `planck/rev6:default` になります。Apply and Close を選択します。
|
||||
|
||||
## ビルド
|
||||
|
||||
@@ -70,13 +70,13 @@ Eclipse に QMK をビルドしようとするデバイスを教える必要が
|
||||
|
||||
### デバッガの接続
|
||||
|
||||
ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成される Single Wire Debug (SWD) プロトコルを使います。MCU を 完全に操作するには、この2本のワイヤとグラウンドを接続するだけで十分です。ここでは、キーボードは USB を介して電力が供給されると想定しています。手動でリセットボタンを使えるため、RESET 信号は必要ありません。より高度なセットアップのために printf と scanf をホストに非同期にパイプする SWO 信号を使用できますが、私たちのセットアップでは無視します。
|
||||
ARM MCU は、クロック信号(SWCLK) とデータ信号(SWDIO) で構成される Single Wire Debug (SWD) プロトコルを使います。MCU を完全に操作するには、この2本のワイヤとグラウンドを接続するだけで十分です。ここでは、キーボードは USB を介して電力が供給されると想定しています。手動でリセットボタンを使えるため、RESET 信号は必要ありません。より高度なセットアップのために printf と scanf をホストに非同期にパイプする SWO 信号を使用できますが、私たちのセットアップでは無視します。
|
||||
|
||||
注意: SWCLK と SWDIO ピンがキーボードのマトリックスで使われていないことを確認してください。もし使われている場合は、一時的に他のピンに切り替えることができます。
|
||||
|
||||
### デバッガの設定
|
||||
|
||||
QMK フォルダを右クリックし、Debug As -> Debug Configurations... を選択します。ここで、GDB OpenOCD Debugging をダブルクリックします。Debugger タブを選択し、MCU に必要な設定を入力します。これを見つけるにはいじったりググったりする必要があるかもしれません。STM32F3 用のデフォルトスクリプトは stm32f3discovery.cfg と呼ばれます。OpenOCD に伝えるには、Config options で `-f board/stm32f3discovery.cfg` と入力します。
|
||||
QMK フォルダを右クリックし、Debug As -> Debug Configurations... を選択します。ここで、GDB OpenOCD Debugging をダブルクリックします。Debugger タブを選択し、MCU に必要な設定を入力します。これを見つけるにはいじったりググったりする必要があるかもしれません。STM32F3 用のデフォルトスクリプトは `stm32f3discovery.cfg` と呼ばれます。OpenOCD に伝えるには、Config options で `-f board/stm32f3discovery.cfg` と入力します。
|
||||
|
||||
注意: 私の場合、この設定スクリプトはリセット操作を無効にするために編集が必要です。スクリプトの場所は、通常はパス `openocd/version/.content/scripts/board` の下の実際の実行可能フィールドの中で見つかります。ここで、私は `reset_config srst_only` を `reset_config none` に編集しました。
|
||||
|
||||
@@ -86,7 +86,7 @@ Apply and Close を選択します。
|
||||
|
||||
キーボードをリセットしてください。
|
||||
|
||||
虫アイコンをクリックし、もし全てうまく行けば Debug パースペクティブに移動します。ここでは、main 関数の最初でプログラムカウンタが停止するので、Play ボタンを押します。全てのデバッガのほとんどの機能は ARM MCU で動作しますが、正確な詳細については google があなたのお友達です!
|
||||
虫アイコンをクリックし、もし全てうまく行けば Debug パースペクティブに移動します。ここでは、main 関数の最初でプログラムカウンタが停止し、Play ボタンが押されるのを待ちます。全てのデバッガのほとんどの機能は Arm MCU で動作しますが、正確な詳細については Google があなたのお友達です!
|
||||
|
||||
|
||||
ハッピーデバッギング!
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# 貢献方法
|
||||
|
||||
<!---
|
||||
original document: d47809575:docs/contributing.md
|
||||
git diff d47809575 HEAD -- docs/contributing.md | cat
|
||||
original document: 0.8.62:docs/contributing.md
|
||||
git diff 0.8.62 HEAD -- docs/contributing.md | cat
|
||||
-->
|
||||
|
||||
👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍
|
||||
@@ -106,7 +106,7 @@ enum my_keycodes {
|
||||
};
|
||||
```
|
||||
|
||||
### ドキュメントのプレビュー
|
||||
### ドキュメントのプレビュー :id=previewing-the-documentation
|
||||
|
||||
開発環境をセットアップした場合は、プルリクエストを開く前に以下のコマンドを `qmk_firmware/` フォルダから実行することで、あなたの変更をプレビューすることができます:
|
||||
|
||||
@@ -122,7 +122,7 @@ enum my_keycodes {
|
||||
|
||||
ほとんどの初めての QMK 貢献者は、個人のキーマップから始めます。キーマップの標準はかなりカジュアルなものにしようとしています(キーマップは結局のところ作成者の性格を反映しています)が、他の人があなたのキーマップを簡単に見つけて学ぶことができるように、これらのガイドラインに従うようにお願いします。
|
||||
|
||||
* [the template](documentation_templates.md) を使って `readme.md` を書きます。
|
||||
* [テンプレート](documentation_templates.md) を使って `readme.md` を書きます。
|
||||
* 全てのキーマップの PR は squash されるため、コミットがどのように squash されるかを気にする場合は、自分で行う必要があります。
|
||||
* キーマップの PR に機能をまとめないでください。最初に機能をサブミットし、次にキーマップのための2つ目の PR をサブミットします。
|
||||
* `Makefile` をキーマップフォルダに含めないでください(もう使われていません)。
|
||||
@@ -134,7 +134,7 @@ enum my_keycodes {
|
||||
|
||||
また以下のガイドラインに従うことをお願いします:
|
||||
|
||||
* [the template](ja/documentation_templates.md) を使って `readme.md` を書きます。
|
||||
* [テンプレート](ja/documentation_templates.md) を使って `readme.md` を書きます。
|
||||
* コミットの数を適切に保ってください。そうでなければあなたの PR を squash します。
|
||||
* コア機能を新しいキーボードにまとめないでください。最初に機能をサブミットし、次にキーボード用に別の PR をサブミットしてください。
|
||||
* `.c`/`.h` ファイルにすぐ上の親フォルダに従って名前を付けます。例えば、`/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# キーボードの挙動をカスタマイズする方法
|
||||
|
||||
<!---
|
||||
original document: 7494490d6:docs/custom_quantum_functions.md
|
||||
git diff 7494490d6 HEAD -- docs/custom_quantum_functions.md | cat
|
||||
original document: 0.8.62:docs/custom_quantum_functions.md
|
||||
git diff 0.8.62 HEAD -- docs/custom_quantum_functions.md | cat
|
||||
-->
|
||||
|
||||
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
|
||||
@@ -39,7 +39,7 @@ enum my_keycodes {
|
||||
};
|
||||
```
|
||||
|
||||
## 任意のキーコードの挙動のプログラミング
|
||||
## 任意のキーコードの挙動のプログラミング :id=programming-the-behavior-of-any-keycode
|
||||
|
||||
既存のキーの挙動を上書きしたい場合、あるいは新しいキーについて挙動を定義する場合、`process_record_kb()` および `process_record_user()` 関数を使うべきです。これらは実際のキーイベントが処理される前のキー処理中に QMK によって呼び出されます。これらの関数が `true` を返す場合、QMK はキーコードを通常通りに処理します。これは、キーを置き換えるのではなく、キーの機能を拡張するのに便利です。これらの関数が `false` を返す場合、QMK は通常のキー処理をスキップし、必要なキーのアップまたはダウンイベントを送信するのかはユーザ次第です。
|
||||
|
||||
@@ -316,7 +316,7 @@ void suspend_wakeup_init_user(void) {
|
||||
* キーボード/リビジョン : `void suspend_power_down_kb(void)` および `void suspend_wakeup_init_user(void)`
|
||||
* キーマップ: `void suspend_power_down_kb(void)` および `void suspend_wakeup_init_user(void)`
|
||||
|
||||
# レイヤー切り替えコード
|
||||
# レイヤー切り替えコード :id=layer-change-code
|
||||
|
||||
これはレイヤーが切り替えられるたびにコードを実行します。レイヤー表示あるいはカスタムレイヤー処理に役立ちます。
|
||||
|
||||
@@ -491,14 +491,24 @@ void eeconfig_init_user(void) { // EEPROM がリセットされます!
|
||||
|
||||
# カスタムタッピング期間
|
||||
|
||||
デフォルトでは、タッピング期間はグローバルに設定されていて、キーでは設定することができません。ほとんどのユーザにとって、これは全然問題ありません。しかし、場合によっては、`LT` キーとは異なるタイムアウトによって、デュアルファンクションキーが大幅に改善されます。なぜなら、一部のキーは他のキーよりも押し続けやすいためです。それぞれにカスタムキーコードを使う代わりに、キーごとに設定可能な `TAPPING_TERM` を使用できます。
|
||||
デフォルトでは、タッピング期間と(`IGNORE_MOD_TAP_INTERRUPT` のような)関連オプションはグローバルに設定されていて、キーでは設定することができません。ほとんどのユーザにとって、これは全然問題ありません。しかし、場合によっては、`LT` キーとは異なるタイムアウトによって、デュアルファンクションキーが大幅に改善されます。なぜなら、一部のキーは他のキーよりも押し続けやすいためです。それぞれにカスタムキーコードを使う代わりに、キーごとに設定可能なタイムアウトの挙動を設定できます。
|
||||
|
||||
この機能を有効にするには、最初に `config.h` に `#define TAPPING_TERM_PER_KEY` を追加する必要があります。
|
||||
キーごとのタイムアウトの挙動を制御するための2つの設定可能なオプションがあります:
|
||||
|
||||
- `TAPPING_TERM_PER_KEY`
|
||||
- `IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
|
||||
|
||||
必要な機能ごとに、`config.h` に `#define` 行を追加する必要があります。
|
||||
|
||||
```
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
|
||||
```
|
||||
|
||||
|
||||
## `get_tapping_term` の実装例
|
||||
|
||||
キーコードに基づいて `TAPPING TERM` を変更するには、次のようなものを `keymap.c` ファイルに追加します:
|
||||
キーコードに基づいて `TAPPING_TERM` を変更するには、次のようなものを `keymap.c` ファイルに追加します:
|
||||
|
||||
```c
|
||||
uint16_t get_tapping_term(uint16_t keycode) {
|
||||
@@ -513,6 +523,21 @@ uint16_t get_tapping_term(uint16_t keycode) {
|
||||
}
|
||||
```
|
||||
|
||||
### `get_tapping_term` 関数のドキュメント
|
||||
## `get_ignore_mod_tap_interrupt` の実装例
|
||||
|
||||
キーコードに基づいて `IGNORE_MOD_TAP_INTERRUPT` の値を変更するには、次のようなものを `keymap.c` ファイルに追加します:
|
||||
|
||||
```c
|
||||
bool get_ignore_mod_tap_interrupt(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
case SFT_T(KC_SPC):
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## `get_tapping_term` / `get_ignore_mod_tap_interrupt` 関数のドキュメント
|
||||
|
||||
ここにある他の多くの関数とは異なり、quantum あるいはキーボードレベルの関数を持つ必要はありません (または理由さえありません)。ここではユーザレベルの関数だけが有用なため、そのようにマークする必要はありません。
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# 書き込みの手順とブートローダ情報
|
||||
|
||||
<!---
|
||||
original document: 7494490d6:docs/flashing.md
|
||||
git diff 7494490d6 HEAD -- docs/flashing.md | cat
|
||||
original document: 0.8.62:docs/flashing.md
|
||||
git diff 0.8.62 HEAD -- docs/flashing.md | cat
|
||||
-->
|
||||
|
||||
キーボードが使用するブートローダにはかなり多くの種類があり、ほぼ全てが異なる書き込みの方法を使います。幸いなことに、[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) のようなプロジェクトは、あまり深く考える必要無しに様々なタイプと互換性を持つことを目指していますが、この文章では様々なタイプのブートローダとそれらを書き込むために利用可能な方法について説明します。
|
||||
|
||||
`rules.mk` の `BOOTLOADER` 変数で選択されたブートローダがある場合、QMK は .hex ファイルがデバイスに書き込むのに適切なサイズかどうかを自動的に計算し、合計サイズをバイト単位で(最大値とともに)出力します。この処理を手動で実行するには、`check-size` を付けてコンパイルします。例えば、`make planck/rev4:default:check-size`。
|
||||
`rules.mk` の `BOOTLOADER` 変数で選択されたブートローダがある場合、QMK は .hex ファイルがデバイスに書き込むのに適切なサイズかどうかを自動的に計算し、合計サイズをバイト単位で(最大値とともに)出力します。
|
||||
|
||||
## DFU
|
||||
|
||||
@@ -105,7 +105,7 @@ BOOTLOADER = caterina
|
||||
make <keyboard>:<keymap>:avrdude
|
||||
|
||||
|
||||
#### Caterina コマンド
|
||||
### Caterina コマンド
|
||||
|
||||
ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# キーマップの概要
|
||||
|
||||
<!---
|
||||
original document: 7494490d6:docs/keymap.md
|
||||
git diff 7494490d6 HEAD -- docs/keymap.md | cat
|
||||
original document: 0.8.62:docs/keymap.md
|
||||
git diff 0.8.62 HEAD -- docs/keymap.md | cat
|
||||
-->
|
||||
|
||||
QMK のキーマップは C のソースファイルの中で定義されます。そのデータ構造は配列の配列です。外側はレイヤーを要素とする配列で、レイヤーはキーを要素とする配列。ほとんどのキーボードは `LAYOUT()` マクロを定義して、この配列の配列を作成しやすくしています。
|
||||
|
||||
|
||||
## キーマップとレイヤー
|
||||
## キーマップとレイヤー :id=keymap-and-layers
|
||||
QMKでは、**`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`**は、**アクションコード**を保持している **16 bit** データの中でキーマップ情報の複数の**レイヤー**を保持します。最大で**32個のレイヤー**を定義することができます。
|
||||
|
||||
普通のキー定義の場合、**アクションコード**の上位8ビットは全て0で、下位8ビットは**キーコード**としてキーによって生成された USB HID usage コードを保持します。
|
||||
@@ -32,7 +32,8 @@ QMKでは、**`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`**は
|
||||
|
||||
TMK の歴史的経緯から、キーマップに保存されたアクションコードは、一部のドキュメントではキーコードと呼ばれる場合があります。
|
||||
|
||||
### キーマップレイヤーステータス
|
||||
### キーマップレイヤーステータス :id=keymap-layer-status
|
||||
|
||||
キーマップレイヤーの状態は、2つの32ビットパラメータによって決定されます。
|
||||
|
||||
* **`default_layer_state`** は、常に有効で参照される基本キーマップレイヤー (0-31) を示します (デフォルトレイヤー)。
|
||||
|
||||
@@ -326,7 +326,7 @@ See also: [Key Lock](feature_key_lock.md)
|
||||
|
||||
## Layer Switching :id=layer-switching
|
||||
|
||||
See also: [Layer Switching](feature_advanced_keycodes.md#switching-and-toggling-layers)
|
||||
See also: [Layer Switching](feature_layers.md#switching-and-toggling-layers)
|
||||
|
||||
|Key |Description |
|
||||
|----------------|----------------------------------------------------------------------------------|
|
||||
|
||||
@@ -42,9 +42,13 @@ We've tried to make QMK as easy to set up as possible. You only have to prepare
|
||||
You will need to install MSYS2, Git, and the QMK CLI.
|
||||
|
||||
* Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org).
|
||||
* Close any open MSYS2 terminals and open a new MSYS2 MinGW 64-bit terminal.
|
||||
* Close any open MSYS2 terminals and open a new MSYS2 MinGW 64-bit terminal. NOTE: This is **not** the same as the MSYS terminal that opens when installation is completed.
|
||||
|
||||
After opening a new MSYS2 MinGW 64-bit terminal run these commands:
|
||||
After opening a new MSYS2 MinGW 64-bit terminal, make sure `pacman` is up to date with:
|
||||
|
||||
pacman -Syu
|
||||
|
||||
You may be asked to close and reopen the window. Do this and keep running the above command until it says `there is nothing to do`. Then run the following:
|
||||
|
||||
pacman -S git python3-pip
|
||||
python3 -m pip install qmk
|
||||
|
||||
@@ -162,6 +162,15 @@ The `process_record()` function itself is deceptively simple, but hidden within
|
||||
|
||||
At any step during this chain of events a function (such as `process_record_kb()`) can `return false` to halt all further processing.
|
||||
|
||||
After this is called, `post_process_record()` is called, which can be used to handle additional cleanup that needs to be run after the keycode is normally handled.
|
||||
|
||||
* [`void post_process_record(keyrecord_t *record)`]()
|
||||
* [`void post_process_record_quantum(keyrecord_t *record)`]()
|
||||
* [Map this record to a keycode]()
|
||||
* [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
|
||||
* [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
|
||||
* [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
|
||||
|
||||
<!--
|
||||
#### Mouse Handling
|
||||
|
||||
|
||||
@@ -1 +1,33 @@
|
||||
# Dummy rules.mk, rev0 uses parent rules.mk as is
|
||||
# MCU name
|
||||
MCU = atmega32u2
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
|
||||
@@ -1 +1,33 @@
|
||||
# Dummy rules.mk, rev1 uses parent rules.mk as is
|
||||
# MCU name
|
||||
MCU = atmega32u2
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
|
||||
57
keyboards/claw44/rev1/info.json
Normal file
57
keyboards/claw44/rev1/info.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"keyboard_name": "Claw44 rev1",
|
||||
"url": "",
|
||||
"maintainer": "yfuku",
|
||||
"width": 17.5,
|
||||
"height": 4.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"L00", "x":0, "y":1.18},
|
||||
{"label":"L01", "x":1, "y":1.03},
|
||||
{"label":"L02", "x":2, "y":0.35},
|
||||
{"label":"L03", "x":3, "y":0},
|
||||
{"label":"L04", "x":4, "y":0.05},
|
||||
{"label":"L05", "x":5, "y":0.10},
|
||||
{"label":"R00", "x":11.5, "y":0.10},
|
||||
{"label":"R01", "x":12.5, "y":0.05},
|
||||
{"label":"R02", "x":13.5, "y":0},
|
||||
{"label":"R03", "x":14.5, "y":0.35},
|
||||
{"label":"R04", "x":15.5, "y":1.08},
|
||||
{"label":"R05", "x":16.5, "y":1.18},
|
||||
{"label":"L10", "x":0, "y":2.18},
|
||||
{"label":"L11", "x":1, "y":2.03},
|
||||
{"label":"L12", "x":2, "y":1.35},
|
||||
{"label":"L13", "x":3, "y":1},
|
||||
{"label":"L14", "x":4, "y":1.05},
|
||||
{"label":"L15", "x":5, "y":1.10},
|
||||
{"label":"R10", "x":11.5, "y":1.10},
|
||||
{"label":"R11", "x":12.5, "y":1.05},
|
||||
{"label":"R12", "x":13.5, "y":1},
|
||||
{"label":"R13", "x":14.5, "y":1.35},
|
||||
{"label":"R14", "x":15.5, "y":2.03},
|
||||
{"label":"R15", "x":16.5, "y":2.18},
|
||||
{"label":"L20", "x":0, "y":3.18},
|
||||
{"label":"L21", "x":1, "y":3.03},
|
||||
{"label":"L22", "x":2, "y":2.35},
|
||||
{"label":"L23", "x":3, "y":2},
|
||||
{"label":"L24", "x":4, "y":2.05},
|
||||
{"label":"L25", "x":5, "y":2.10},
|
||||
{"label":"R20", "x":11.5, "y":2.10},
|
||||
{"label":"R21", "x":12.5, "y":2.05},
|
||||
{"label":"R22", "x":13.5, "y":2},
|
||||
{"label":"R23", "x":14.5, "y":2.35},
|
||||
{"label":"R24", "x":15.5, "y":3.03},
|
||||
{"label":"R25", "x":16.5, "y":3.18},
|
||||
{"label":"L30", "x":4, "y":3.05},
|
||||
{"label":"L31", "x":5, "y":3.10},
|
||||
{"label":"L32", "x":6, "y":3.20, "w":1.25},
|
||||
{"label":"L33", "x":7.25, "y":3.50},
|
||||
{"label":"R30", "x":9.25, "y":3.50},
|
||||
{"label":"R31", "x":10.25, "y":3.20, "w":1.25},
|
||||
{"label":"R32", "x":11.5, "y":3.10},
|
||||
{"label":"R33", "x":12.5, "y":3.05}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -125,6 +125,70 @@
|
||||
{ k50, ___, k52, ___ } \
|
||||
}
|
||||
|
||||
|
||||
/* 6x4 numpad with split Plus and 0 keys
|
||||
* ,-------------------.
|
||||
* | 00 | 01 | 02 | 03 |
|
||||
* |----|----|----|----|
|
||||
* | 10 | 11 | 12 | 13 |
|
||||
* |----|----|----|----|
|
||||
* | 20 | 21 | 22 | 23 |
|
||||
* |----|----|----|----|
|
||||
* | 30 | 31 | 32 | 33 |
|
||||
* |----|----|----|----|
|
||||
* | 40 | 41 | 42 | |
|
||||
* |----|----|----| 43 |
|
||||
* | 50 | 51 | 52 | |
|
||||
* `-------------------'
|
||||
*/
|
||||
#define LAYOUT_numpad_6x4_split_plus_zero( \
|
||||
k00, k01, k02, k03, \
|
||||
k10, k11, k12, k13, \
|
||||
k20, k21, k22, k23, \
|
||||
k30, k31, k32, k33, \
|
||||
k40, k41, k42, \
|
||||
k50, k51, k52, k43 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03 }, \
|
||||
{ k10, k11, k12, k13 }, \
|
||||
{ k20, k21, k22, k23 }, \
|
||||
{ k30, k31, k32, k33 }, \
|
||||
{ k40, k41, k42, k43 }, \
|
||||
{ k50, k51, k52, ___ } \
|
||||
}
|
||||
|
||||
/* 6x4 numpad with split 0 key
|
||||
* ,-------------------.
|
||||
* | 00 | 01 | 02 | 03 |
|
||||
* |----|----|----|----|
|
||||
* | 10 | 11 | 12 | 13 |
|
||||
* |----|----|----|----|
|
||||
* | 20 | 21 | 22 | |
|
||||
* |----|----|----| 23 |
|
||||
* | 30 | 31 | 32 | |
|
||||
* |----|----|----|----|
|
||||
* | 40 | 41 | 42 | |
|
||||
* |----|----|----| 43 |
|
||||
* | 50 | 51 | 52 | |
|
||||
* `-------------------'
|
||||
*/
|
||||
#define LAYOUT_numpad_6x4_split_zero( \
|
||||
k00, k01, k02, k03, \
|
||||
k10, k11, k12, k13, \
|
||||
k20, k21, k22, \
|
||||
k30, k31, k32, k23, \
|
||||
k40, k41, k42, \
|
||||
k50, k51, k52, k43 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03 }, \
|
||||
{ k10, k11, k12, k13 }, \
|
||||
{ k20, k21, k22, k23 }, \
|
||||
{ k30, k31, k32, ___ }, \
|
||||
{ k40, k41, k42, k43 }, \
|
||||
{ k50, k51, k52, ___ } \
|
||||
}
|
||||
// Add backwards compatibility for existing keymaps
|
||||
#define cospad_bl_led_on backlight_enable
|
||||
#define cospad_bl_led_off backlight_disable
|
||||
|
||||
@@ -102,6 +102,71 @@
|
||||
{"x":2, "y":5},
|
||||
{"x":3, "y":5}
|
||||
]
|
||||
}
|
||||
},
|
||||
"LAYOUT_numpad_6x4_split_plus_zero": {
|
||||
"key_count": 23,
|
||||
"layout": [
|
||||
{"x":0, "y":0},
|
||||
{"x":1, "y":0},
|
||||
{"x":2, "y":0},
|
||||
{"x":3, "y":0},
|
||||
|
||||
{"x":0, "y":1},
|
||||
{"x":1, "y":1},
|
||||
{"x":2, "y":1},
|
||||
{"x":3, "y":1},
|
||||
|
||||
{"x":0, "y":2},
|
||||
{"x":1, "y":2},
|
||||
{"x":2, "y":2},
|
||||
{"x":3, "y":2},
|
||||
|
||||
{"x":0, "y":3},
|
||||
{"x":1, "y":3},
|
||||
{"x":2, "y":3},
|
||||
{"x":3, "y":3},
|
||||
|
||||
{"x":0, "y":4},
|
||||
{"x":1, "y":4},
|
||||
{"x":2, "y":4},
|
||||
|
||||
{"x":0, "y":5},
|
||||
{"x":1, "y":5},
|
||||
{"x":2, "y":5},
|
||||
{"x":3, "y":4, "h":2}
|
||||
]
|
||||
},
|
||||
"LAYOUT_numpad_6x4_split_zero": {
|
||||
"key_count": 22,
|
||||
"layout": [
|
||||
{"x":0, "y":0},
|
||||
{"x":1, "y":0},
|
||||
{"x":2, "y":0},
|
||||
{"x":3, "y":0},
|
||||
|
||||
{"x":0, "y":1},
|
||||
{"x":1, "y":1},
|
||||
{"x":2, "y":1},
|
||||
{"x":3, "y":1},
|
||||
|
||||
{"x":0, "y":2},
|
||||
{"x":1, "y":2},
|
||||
{"x":2, "y":2},
|
||||
|
||||
{"x":0, "y":3},
|
||||
{"x":1, "y":3},
|
||||
{"x":2, "y":3},
|
||||
{"x":3, "y":2, "h":2},
|
||||
|
||||
{"x":0, "y":4},
|
||||
{"x":1, "y":4},
|
||||
{"x":2, "y":4},
|
||||
|
||||
{"x":0, "y":5},
|
||||
{"x":1, "y":5},
|
||||
{"x":2, "y":5},
|
||||
{"x":3, "y":4, "h":2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
81
keyboards/cospad/keymaps/split_plus_and_zero/keymap.c
Normal file
81
keyboards/cospad/keymaps/split_plus_and_zero/keymap.c
Normal file
@@ -0,0 +1,81 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
/*
|
||||
* This keymap is based on the default keymap for the cospad.
|
||||
* It was adapted for the split Plus and split 0 layout focusing on the "00" key.
|
||||
*/
|
||||
|
||||
enum custom_keycodes {
|
||||
DBL_ZRO = SAFE_RANGE,
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case DBL_ZRO:
|
||||
if (record->event.pressed) {
|
||||
// when keycode DBL_ZRO is pressed
|
||||
SEND_STRING("00");
|
||||
} else {
|
||||
// when keycode DBL_ZRO is released
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_BL,
|
||||
_FL
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------.
|
||||
* |Esc |TAB | FN | BS |
|
||||
* |----|----|----|----|
|
||||
* | NL | / | * | - |
|
||||
* |----|----|----|----|
|
||||
* | 7 | 8 | 9 | ~ |
|
||||
* |----|----|----|----|
|
||||
* | 4 | 5 | 6 | + |
|
||||
* |----|----|----|----|
|
||||
* | 1 | 2 | 3 | |
|
||||
* |----|----|----| En |
|
||||
* | 0 | 00 | . | |
|
||||
* `-------------------'
|
||||
*/
|
||||
[_BL] = LAYOUT_numpad_6x4_split_plus_zero(
|
||||
KC_ESC, KC_TAB, MO(_FL), KC_BSPC,
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_P7, KC_P8, KC_P9, KC_TILD,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3,
|
||||
KC_P0, DBL_ZRO, KC_PDOT, KC_PENT
|
||||
),
|
||||
|
||||
/* Keymap _FL: Function Layer
|
||||
* ,-------------------.
|
||||
* |RGBT| | | |
|
||||
* |----|----|----|----|
|
||||
* |RGBM|RGBP|BTOG| |
|
||||
* |----|----|----|----|
|
||||
* |HUD |HUI |BON | |
|
||||
* |----|----|----|----|
|
||||
* |SAD |SAI |BOFF| |
|
||||
* |----|----|----|----|
|
||||
* |VAD |VAS |BSTP| |
|
||||
* |----|----|----| |
|
||||
* | | |RST | |
|
||||
* `-------------------'
|
||||
*/
|
||||
[_FL] = LAYOUT_numpad_6x4_split_plus_zero(
|
||||
RGB_TOG, _______, _______, _______,
|
||||
RGB_MOD, RGB_M_P, BL_TOGG, _______,
|
||||
RGB_HUD, RGB_HUI, BL_ON, _______,
|
||||
RGB_SAD, RGB_SAI, BL_OFF, _______,
|
||||
RGB_VAD, RGB_VAI, BL_STEP,
|
||||
_______, _______, RESET, _______
|
||||
)
|
||||
};
|
||||
81
keyboards/cospad/keymaps/split_zero/keymap.c
Normal file
81
keyboards/cospad/keymaps/split_zero/keymap.c
Normal file
@@ -0,0 +1,81 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
/*
|
||||
* This keymap is based on the default keymap for the cospad.
|
||||
* It was adapted for the split 0 layout focusing on the "00" key.
|
||||
*/
|
||||
|
||||
enum custom_keycodes {
|
||||
DBL_ZRO = SAFE_RANGE,
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case DBL_ZRO:
|
||||
if (record->event.pressed) {
|
||||
// when keycode DBL_ZRO is pressed
|
||||
SEND_STRING("00");
|
||||
} else {
|
||||
// when keycode DBL_ZRO is released
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_BL,
|
||||
_FL
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap _BL: (Base Layer) Default Layer
|
||||
* ,-------------------.
|
||||
* |Esc |TAB | FN | BS |
|
||||
* |----|----|----|----|
|
||||
* | NL | / | * | - |
|
||||
* |----|----|----|----|
|
||||
* | 7 | 8 | 9 | |
|
||||
* |----|----|----| + |
|
||||
* | 4 | 5 | 6 | |
|
||||
* |----|----|----|----|
|
||||
* | 1 | 2 | 3 | |
|
||||
* |----|----|----| En |
|
||||
* | 0 | 00 | . | |
|
||||
* `-------------------'
|
||||
*/
|
||||
[_BL] = LAYOUT_numpad_6x4_split_zero(
|
||||
KC_ESC, KC_TAB, MO(_FL), KC_BSPC,
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_P7, KC_P8, KC_P9,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3,
|
||||
KC_P0, DBL_ZRO, KC_PDOT, KC_PENT
|
||||
),
|
||||
|
||||
/* Keymap _FL: Function Layer
|
||||
* ,-------------------.
|
||||
* |RGBT| | | |
|
||||
* |----|----|----|----|
|
||||
* |RGBM|RGBP|BTOG| |
|
||||
* |----|----|----|----|
|
||||
* |HUD |HUI |BON | |
|
||||
* |----|----|----| |
|
||||
* |SAD |SAI |BOFF| |
|
||||
* |----|----|----|----|
|
||||
* |VAD |VAS |BSTP| |
|
||||
* |----|----|----| |
|
||||
* | | |RST | |
|
||||
* `-------------------'
|
||||
*/
|
||||
[_FL] = LAYOUT_numpad_6x4_split_zero(
|
||||
RGB_TOG, _______, _______, _______,
|
||||
RGB_MOD, RGB_M_P, BL_TOGG, _______,
|
||||
RGB_HUD, RGB_HUI, BL_ON,
|
||||
RGB_SAD, RGB_SAI, BL_OFF, _______,
|
||||
RGB_VAD, RGB_VAI, BL_STEP,
|
||||
_______, _______, RESET, _______
|
||||
)
|
||||
};
|
||||
36
keyboards/ergodash/rev1/keymaps/shadowprogr/config.h
Normal file
36
keyboards/ergodash/rev1/keymaps/shadowprogr/config.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
/* Use I2C or Serial, not both */
|
||||
|
||||
#define USE_SERIAL
|
||||
// #define USE_I2C
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
#define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
// #define EE_HANDS
|
||||
|
||||
#define LEADER_PER_KEY_TIMING
|
||||
#define LEADER_TIMEOUT 250
|
||||
199
keyboards/ergodash/rev1/keymaps/shadowprogr/keymap.c
Normal file
199
keyboards/ergodash/rev1/keymaps/shadowprogr/keymap.c
Normal file
@@ -0,0 +1,199 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
enum layers {
|
||||
_WINDOWS,
|
||||
_LINUX,
|
||||
_NUMPAD,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
WINDOWS = SAFE_RANGE,
|
||||
LINUX,
|
||||
NUMPAD,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST
|
||||
};
|
||||
|
||||
#define CTL_ENT MT(MOD_RCTL, KC_PENT)
|
||||
#define NUMPAD MO(_NUMPAD)
|
||||
#define SHELL LCA(KC_T)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Windows Qwerty
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| F5 | RAlt | RGui |Ctl/Ent|
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
*/
|
||||
[_WINDOWS] = LAYOUT( \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MINS, KC_EQL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, NUMPAD, KC_SPC, LOWER, KC_ENT, KC_ENT, RAISE, KC_BSPC, KC_F5, KC_RALT, KC_RGUI, CTL_ENT \
|
||||
),
|
||||
|
||||
/* Linux Qwerty
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| Shell | RAlt | RGui |Ctl/Ent|
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
*/
|
||||
[_LINUX] = LAYOUT( \
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MINS, KC_EQL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, NUMPAD, KC_SPC, LOWER, KC_ENT, KC_ENT, RAISE, KC_BSPC, SHELL, KC_RALT, KC_RGUI, CTL_ENT \
|
||||
),
|
||||
|
||||
/* Numpad
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|NumLock| / | * | - |XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 7 | 8 | 9 | |XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ + +-------|
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 4 | 5 | 6 | |XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 1 | 2 | 3 | |XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ Enter +-------|
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX|Numpad |||||||||XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX||||||||| 0 | . | | Enter |
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
*/
|
||||
[_NUMPAD] = LAYOUT( \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_BSPC, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, NUMPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_0, KC_PDOT, KC_PENT, KC_PENT \
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
* | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | | | | ( | { | [ | | | | ] | } | ) | | | |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | | | | | |PageUp | | | | | | | | | |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | |VolDown| VolUp | | |PageDwn| | | | | | | | | |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
*/
|
||||
[_LOWER] = LAYOUT( \
|
||||
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
|
||||
_______, _______, _______, KC_LPRN, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, KC_RPRN, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||
KC_CAPS, KC_VOLD, KC_VOLU, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, \
|
||||
_______, _______, _______, _______, _______, LOWER, _______, _______, RAISE, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
* | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | | | | ( | { | [ | | | | ] | } | ) | | | |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | | | | | | | End | | | Left | Down | Up | Right | | |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
*/
|
||||
[_RAISE] = LAYOUT( \
|
||||
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
|
||||
_______, _______, _______, KC_LPRN, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, KC_RPRN, _______, _______, _______, \
|
||||
_______, _______, _______, _______, _______, _______, KC_END, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
|
||||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, KC_CAPS, \
|
||||
_______, _______, _______, _______, _______, LOWER, _______, _______, RAISE, _______, _______, _______, _______, _______ \
|
||||
),
|
||||
|
||||
/* Adjust
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
* |XXXXXXX|Windows| Linux |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX| Cycle |On/Off |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|On/Off | Cycle |XXXXXXX|XXXXXXX|XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* | Reset |XXXXXXX|XXXXXXX|Breathe| Inc |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue inc|Sat inc| Inc |XXXXXXX|XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| Dec |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue dec|Sat dec| Dec |XXXXXXX|XXXXXXX|
|
||||
* |-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
* |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX| Lower |XXXXXXX|||||||||XXXXXXX| Raise |XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
|
||||
* .---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
*/
|
||||
[_ADJUST] = LAYOUT( \
|
||||
XXXXXXX, WINDOWS, LINUX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, BL_STEP, BL_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, \
|
||||
RESET, XXXXXXX, XXXXXXX, BL_BRTG, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, \
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
|
||||
)
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case WINDOWS:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_WINDOWS);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LINUX:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_LINUX);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case LOWER:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case RAISE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
layer_off(_RAISE);
|
||||
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
89
keyboards/ergodash/rev1/keymaps/shadowprogr/readme.md
Normal file
89
keyboards/ergodash/rev1/keymaps/shadowprogr/readme.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# ShadowProgr's layout for ErgoDash
|
||||
|
||||
There are 2 different QWERTY base layers for use with Windows and Linux OSes. Beside those 2 there are also a numpad layer and 3 modifier layers (lower, raise and adjust).
|
||||
|
||||
## Layouts
|
||||
### Windows
|
||||
```
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| F5 | RAlt | RGui |Ctl/Ent|
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
```
|
||||
### Linux
|
||||
```
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 |BSpace |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| Esc | A | S | D | F | G | Home | | Del | H | J | K | L | : | ' |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| Shift | Z | X | C | V | B | - | | = | N | M | , | . | / | Shift |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| LCtrl | LGUI | LAlt |Numpad ||||||||| Space | Lower | Enter ||||||||| Enter | Raise |BSpace ||||||||| Shell | RAlt | RGui |Ctl/Ent|
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
```
|
||||
### Numpad
|
||||
```
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|NumLock| / | * | - |XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 7 | 8 | 9 | |XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ + +-------|
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 4 | 5 | 6 | |XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX| 1 | 2 | 3 | |XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+ Enter +-------|
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX|Numpad |||||||||XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX||||||||| 0 | . | | Enter |
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
```
|
||||
### Lower
|
||||
```
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| | | | ( | { | [ | | | | ] | } | ) | | | |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| | | | | |PageUp | | | | | | | | | |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| |VolDown| VolUp | | |PageDwn| | | | | | | | | |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
```
|
||||
### Raise
|
||||
```
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
| F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| | | | ( | { | [ | | | | ] | } | ) | | | |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| | | | | | | End | | | Left | Down | Up | Right | | |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| | | | | | | | | | | | | | | |
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| | | | ||||||||| | Lower | ||||||||| | Raise | ||||||||| | | | |
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
```
|
||||
### Adjust
|
||||
```
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
|XXXXXXX|Windows| Linux |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX| Cycle |On/Off |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|On/Off | Cycle |XXXXXXX|XXXXXXX|XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
| Reset |XXXXXXX|XXXXXXX|Breathe| Inc |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue inc|Sat inc| Inc |XXXXXXX|XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX| Dec |XXXXXXX|XXXXXXX| |XXXXXXX|XXXXXXX|Hue dec|Sat dec| Dec |XXXXXXX|XXXXXXX|
|
||||
|-------+-------+-------+-------+-------+-------+-------+-----------------------+-------+-------+-------+-------+-------+-------+-------|
|
||||
|XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|||||||||XXXXXXX| Lower |XXXXXXX|||||||||XXXXXXX| Raise |XXXXXXX|||||||||XXXXXXX|XXXXXXX|XXXXXXX|XXXXXXX|
|
||||
.---------------------------------------------------------------------------------------------------------------------------------------.
|
||||
```
|
||||
3
keyboards/ergodash/rev1/keymaps/shadowprogr/rules.mk
Normal file
3
keyboards/ergodash/rev1/keymaps/shadowprogr/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
BACKLIGHT_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
AUDIO_ENABLE = no
|
||||
@@ -1,84 +1,371 @@
|
||||
{
|
||||
"keyboard_name": "lodestone",
|
||||
"url": "https://prototypist.net/",
|
||||
"url": "https://prototypist.net/",
|
||||
"maintainer": "Flexerm",
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"width": 16,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
||||
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
||||
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
||||
{"label":"K2D (F0,B6)", "x":13.75, "y":2, "w":1.25},
|
||||
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
||||
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
||||
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
"layout": [
|
||||
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
||||
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
||||
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
||||
{"label":"K2D (F0,B6)", "x":13.75, "y":2, "w":1.25},
|
||||
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
||||
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
||||
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_blocker": {
|
||||
"layout": [
|
||||
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||
{"label":"K0D (B3,B6)", "x":13, "y":0, "w":2},
|
||||
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||
{"label":"K2D (F0,B6)", "x":12.75, "y":2, "w":2.25},
|
||||
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":2.25},
|
||||
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_blocker_split_bs": {
|
||||
"layout": [
|
||||
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
||||
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
||||
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||
{"label":"K1D (B7,B6)", "x":13.5, "y":1, "w":1.5},
|
||||
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||
{"label":"K2D (F0,B6)", "x":12.75, "y":2, "w":2.25},
|
||||
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":2.25},
|
||||
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_iso_blocker": {
|
||||
"layout": [
|
||||
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||
{"label":"K0D (B3,B6)", "x":13, "y":0, "w":2},
|
||||
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
||||
{"label":"K2D (F0,B6)", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
||||
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
||||
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_iso_blocker_split_bs": {
|
||||
"layout": [
|
||||
{"label":"K00 (B3,B2)", "x":0, "y":0},
|
||||
{"label":"K01 (B3,F5)", "x":1, "y":0},
|
||||
{"label":"K02 (B3,F6)", "x":2, "y":0},
|
||||
{"label":"K03 (B3,D0)", "x":3, "y":0},
|
||||
{"label":"K04 (B3,D1)", "x":4, "y":0},
|
||||
{"label":"K05 (B3,D2)", "x":5, "y":0},
|
||||
{"label":"K06 (B3,D3)", "x":6, "y":0},
|
||||
{"label":"K07 (B3,D5)", "x":7, "y":0},
|
||||
{"label":"K08 (B3,D4)", "x":8, "y":0},
|
||||
{"label":"K09 (B3,D6)", "x":9, "y":0},
|
||||
{"label":"K0A (B3,D7)", "x":10, "y":0},
|
||||
{"label":"K0B (B3,B4)", "x":11, "y":0},
|
||||
{"label":"K0C (B3,B5)", "x":12, "y":0},
|
||||
{"label":"K0D (B3,B6)", "x":13, "y":0},
|
||||
{"label":"K0E (B3,C6)", "x":14, "y":0},
|
||||
{"label":"K0F (B3,C7)", "x":15, "y":0},
|
||||
{"label":"K10 (B7,B2)", "x":0, "y":1, "w":1.5},
|
||||
{"label":"K11 (B7,F5)", "x":1.5, "y":1},
|
||||
{"label":"K12 (B7,F6)", "x":2.5, "y":1},
|
||||
{"label":"K13 (B7,D0)", "x":3.5, "y":1},
|
||||
{"label":"K14 (B7,D1)", "x":4.5, "y":1},
|
||||
{"label":"K15 (B7,D2)", "x":5.5, "y":1},
|
||||
{"label":"K16 (B7,D3)", "x":6.5, "y":1},
|
||||
{"label":"K17 (B7,D5)", "x":7.5, "y":1},
|
||||
{"label":"K18 (B7,D4)", "x":8.5, "y":1},
|
||||
{"label":"K19 (B7,D6)", "x":9.5, "y":1},
|
||||
{"label":"K1A (B7,D7)", "x":10.5, "y":1},
|
||||
{"label":"K1B (B7,B4)", "x":11.5, "y":1},
|
||||
{"label":"K1C (B7,B5)", "x":12.5, "y":1},
|
||||
{"label":"K1F (B7,C7)", "x":15, "y":1},
|
||||
{"label":"K20 (F0,B2)", "x":0, "y":2, "w":1.75},
|
||||
{"label":"K21 (F0,F5)", "x":1.75, "y":2},
|
||||
{"label":"K22 (F0,F6)", "x":2.75, "y":2},
|
||||
{"label":"K23 (F0,D0)", "x":3.75, "y":2},
|
||||
{"label":"K24 (F0,D1)", "x":4.75, "y":2},
|
||||
{"label":"K25 (F0,D2)", "x":5.75, "y":2},
|
||||
{"label":"K26 (F0,D3)", "x":6.75, "y":2},
|
||||
{"label":"K27 (F0,D5)", "x":7.75, "y":2},
|
||||
{"label":"K28 (F0,D4)", "x":8.75, "y":2},
|
||||
{"label":"K29 (F0,D6)", "x":9.75, "y":2},
|
||||
{"label":"K2A (F0,D7)", "x":10.75, "y":2},
|
||||
{"label":"K2B (F0,B4)", "x":11.75, "y":2},
|
||||
{"label":"K2C (F0,B5)", "x":12.75, "y":2},
|
||||
{"label":"K2D (F0,B6)", "x":13.75, "y":1, "w":1.25, "h":2},
|
||||
{"label":"K2F (F0,C7)", "x":15, "y":2},
|
||||
{"label":"K30 (F1,B2)", "x":0, "y":3, "w":1.25},
|
||||
{"label":"K31 (F1,F5)", "x":1.25, "y":3},
|
||||
{"label":"K32 (F1,F6)", "x":2.25, "y":3},
|
||||
{"label":"K33 (F1,D0)", "x":3.25, "y":3},
|
||||
{"label":"K34 (F1,D1)", "x":4.25, "y":3},
|
||||
{"label":"K35 (F1,D2)", "x":5.25, "y":3},
|
||||
{"label":"K36 (F1,D3)", "x":6.25, "y":3},
|
||||
{"label":"K37 (F1,D5)", "x":7.25, "y":3},
|
||||
{"label":"K38 (F1,D4)", "x":8.25, "y":3},
|
||||
{"label":"K39 (F1,D6)", "x":9.25, "y":3},
|
||||
{"label":"K3A (F1,D7)", "x":10.25, "y":3},
|
||||
{"label":"K3B (F1,B4)", "x":11.25, "y":3},
|
||||
{"label":"K3C (F1,B5)", "x":12.25, "y":3, "w":1.75},
|
||||
{"label":"K3E (F1,C6)", "x":14, "y":3},
|
||||
{"label":"K3F (F1,C7)", "x":15, "y":3},
|
||||
{"label":"K40 (F4,B2)", "x":0, "y":4, "w":1.225},
|
||||
{"label":"K41 (F4,F5)", "x":1.25, "y":4, "w":1.25},
|
||||
{"label":"K42 (F4,F6)", "x":2.5, "y":4, "w":1.25},
|
||||
{"label":"K46 (F4,D3)", "x":3.75, "y":4, "w":6.25},
|
||||
{"label":"K4A (F4,D7)", "x":10, "y":4, "w":1.25},
|
||||
{"label":"K4B (F4,B4)", "x":11.25, "y":4, "w":1.25},
|
||||
{"label":"K4D (F4,B6)", "x":13, "y":4},
|
||||
{"label":"K4E (F4,C6)", "x":14, "y":4},
|
||||
{"label":"K4F (F4,C7)", "x":15, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
20
keyboards/flx/lodestone/keymaps/default_ansi/keymap.c
Normal file
20
keyboards/flx/lodestone/keymaps/default_ansi/keymap.c
Normal file
@@ -0,0 +1,20 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// Default layer
|
||||
[0] = LAYOUT_65_ansi_blocker_split_bs(
|
||||
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_BSPC, KC_HOME,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_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_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
// Fn1 Layer
|
||||
[1] = LAYOUT_65_ansi_blocker_split_bs(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS,
|
||||
KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
1
keyboards/flx/lodestone/keymaps/default_ansi/readme.md
Normal file
1
keyboards/flx/lodestone/keymaps/default_ansi/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# The default ANSI keymap for Lodestone
|
||||
20
keyboards/flx/lodestone/keymaps/default_iso/keymap.c
Normal file
20
keyboards/flx/lodestone/keymaps/default_iso/keymap.c
Normal file
@@ -0,0 +1,20 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// Default layer
|
||||
[0] = LAYOUT_65_iso_blocker_split_bs(
|
||||
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_BSPC, KC_HOME,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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_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_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
// Fn1 Layer
|
||||
[1] = LAYOUT_65_iso_blocker_split_bs(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_TRNS,
|
||||
KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, 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_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
1
keyboards/flx/lodestone/keymaps/default_iso/readme.md
Normal file
1
keyboards/flx/lodestone/keymaps/default_iso/readme.md
Normal file
@@ -0,0 +1 @@
|
||||
# The default ISO keymap for Lodestone
|
||||
@@ -35,3 +35,59 @@
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_ansi_blocker( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
|
||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, ___, K2F }, \
|
||||
{ K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_ansi_blocker_split_bs( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
|
||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, ___, K2F }, \
|
||||
{ K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_iso_blocker( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, ___, K1F }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||
}
|
||||
|
||||
#define LAYOUT_65_iso_blocker_split_bs( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1F, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
|
||||
K40, K41, K42, K46, K4A, K4B, K4D, K4E, K4F \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, ___, K1F }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___, K3E, K3F }, \
|
||||
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
|
||||
}
|
||||
|
||||
@@ -31,3 +31,5 @@ AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
LTO_ENABLE = yes
|
||||
|
||||
LAYOUTS = 65_ansi_blocker 65_iso_blocker
|
||||
|
||||
@@ -20,11 +20,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x0000
|
||||
#define VENDOR_ID 0x464C // "FL"
|
||||
#define PRODUCT_ID 0x0001
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Fox Lab
|
||||
#define PRODUCT Leaf60 Hotswap
|
||||
#define PRODUCT Leaf 60 Hotswap
|
||||
#define DESCRIPTION A custom hotswap 60% keyboard
|
||||
|
||||
/* key matrix size */
|
||||
|
||||
48
keyboards/foxlab/leaf60/hotswap/keymaps/via/keymap.c
Normal file
48
keyboards/foxlab/leaf60/hotswap/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Copyright 2019 Fox Lab
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
LAYOUT_60_tsangan_hhkb(
|
||||
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_GRV, 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_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RCTL),
|
||||
|
||||
LAYOUT_60_tsangan_hhkb(
|
||||
RESET, 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_TRNS,
|
||||
KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, 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_tsangan_hhkb(
|
||||
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, 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_tsangan_hhkb(
|
||||
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, 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)
|
||||
|
||||
};
|
||||
1
keyboards/foxlab/leaf60/hotswap/keymaps/via/rules.mk
Normal file
1
keyboards/foxlab/leaf60/hotswap/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
@@ -20,11 +20,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x0000
|
||||
#define VENDOR_ID 0x464C // "FL"
|
||||
#define PRODUCT_ID 0x0002
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Fox Lab
|
||||
#define PRODUCT Leaf60 Universal
|
||||
#define PRODUCT Leaf 60 Universal
|
||||
#define DESCRIPTION A custom 60% keyboard
|
||||
|
||||
/* key matrix size */
|
||||
|
||||
48
keyboards/foxlab/leaf60/universal/keymaps/via/keymap.c
Normal file
48
keyboards/foxlab/leaf60/universal/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Copyright 2019 Fox Lab
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
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_GRV, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL),
|
||||
|
||||
LAYOUT_all(
|
||||
RESET, 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_TRNS,
|
||||
KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
|
||||
LAYOUT_all(
|
||||
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, 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_all(
|
||||
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, 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)
|
||||
|
||||
};
|
||||
1
keyboards/foxlab/leaf60/universal/keymaps/via/rules.mk
Normal file
1
keyboards/foxlab/leaf60/universal/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
@@ -27,3 +27,5 @@
|
||||
#define BACKLIGHT_PWM_CHANNEL 1
|
||||
|
||||
#define RGB_DI_PIN A1
|
||||
|
||||
#define ADC_PIN A0
|
||||
|
||||
@@ -27,3 +27,5 @@
|
||||
#define BACKLIGHT_PWM_CHANNEL 1
|
||||
|
||||
#define RGB_DI_PIN A1
|
||||
|
||||
#define ADC_PIN A0
|
||||
|
||||
@@ -27,3 +27,5 @@
|
||||
#define BACKLIGHT_PWM_CHANNEL 1
|
||||
|
||||
#define RGB_DI_PIN A1
|
||||
|
||||
#define ADC_PIN A0
|
||||
|
||||
@@ -21,3 +21,9 @@
|
||||
#define MATRIX_COL_PINS { F4 }
|
||||
#define MATRIX_ROW_PINS { F5 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define BACKLIGHT_PIN B6
|
||||
|
||||
#define RGB_DI_PIN F6
|
||||
|
||||
#define ADC_PIN F6
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#pragma once
|
||||
@@ -2,10 +2,6 @@
|
||||
#include "analog.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef ADC_PIN
|
||||
# define ADC_PIN A0
|
||||
#endif
|
||||
|
||||
enum custom_keycodes {
|
||||
ADC_SAMPLE = SAFE_RANGE,
|
||||
};
|
||||
|
||||
@@ -21,3 +21,9 @@
|
||||
#define MATRIX_COL_PINS { F4 }
|
||||
#define MATRIX_ROW_PINS { F5 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define BACKLIGHT_PIN B6
|
||||
|
||||
#define RGB_DI_PIN F6
|
||||
|
||||
#define ADC_PIN F6
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define MATRIX_COL_PINS { A3 }
|
||||
#define MATRIX_ROW_PINS { A2 }
|
||||
#define MATRIX_COL_PINS { A2 }
|
||||
#define MATRIX_ROW_PINS { A1 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define BACKLIGHT_PIN B8
|
||||
@@ -27,4 +27,6 @@
|
||||
#define BACKLIGHT_PWM_CHANNEL 3
|
||||
#define BACKLIGHT_PAL_MODE 2
|
||||
|
||||
#define RGB_DI_PIN A1
|
||||
#define RGB_DI_PIN A0
|
||||
|
||||
#define ADC_PIN A0
|
||||
|
||||
@@ -28,3 +28,5 @@
|
||||
#define BACKLIGHT_PAL_MODE 0
|
||||
|
||||
#define RGB_DI_PIN B15
|
||||
|
||||
#define ADC_PIN A0
|
||||
|
||||
@@ -21,3 +21,9 @@
|
||||
#define MATRIX_COL_PINS { F4 }
|
||||
#define MATRIX_ROW_PINS { F5 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define BACKLIGHT_PIN B6
|
||||
|
||||
#define RGB_DI_PIN F6
|
||||
|
||||
#define ADC_PIN F6
|
||||
|
||||
@@ -18,6 +18,12 @@
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define MATRIX_COL_PINS { B2 }
|
||||
#define MATRIX_ROW_PINS { B1 }
|
||||
#define MATRIX_COL_PINS { F4 }
|
||||
#define MATRIX_ROW_PINS { F5 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
#define BACKLIGHT_PIN B6
|
||||
|
||||
#define RGB_DI_PIN F6
|
||||
|
||||
#define ADC_PIN F6
|
||||
|
||||
@@ -30,4 +30,4 @@ SRC = keyboards/wilba_tech/wt_main.c \
|
||||
keyboards/wilba_tech/wt_rgb_backlight.c \
|
||||
drivers/issi/is31fl3733.c \
|
||||
quantum/color.c \
|
||||
drivers/arm/i2c_master.c
|
||||
drivers/chibios/i2c_master.c
|
||||
|
||||
@@ -28,4 +28,4 @@ SRC = keyboards/wilba_tech/wt_main.c \
|
||||
keyboards/wilba_tech/wt_rgb_backlight.c \
|
||||
drivers/issi/is31fl3733.c \
|
||||
quantum/color.c \
|
||||
drivers/arm/i2c_master.c
|
||||
drivers/chibios/i2c_master.c
|
||||
|
||||
@@ -30,4 +30,4 @@ SRC = keyboards/wilba_tech/wt_main.c \
|
||||
keyboards/wilba_tech/wt_rgb_backlight.c \
|
||||
drivers/issi/is31fl3733.c \
|
||||
quantum/color.c \
|
||||
drivers/arm/i2c_master.c
|
||||
drivers/chibios/i2c_master.c
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
{"label":"E", "x":3.75, "y":1},
|
||||
{"label":"R", "x":4.75, "y":1},
|
||||
{"label":"T", "x":5.75, "y":1},
|
||||
{"label":"GUI", "x":0, "y":2},
|
||||
{"label":"Alt", "x":1, "y":2},
|
||||
{"label":"Ctrl-C", "x":0, "y":2},
|
||||
{"label":"Ctrl-V", "x":1, "y":2},
|
||||
{"label":"A", "x":2, "y":2},
|
||||
{"label":"S", "x":3, "y":2},
|
||||
{"label":"D", "x":4, "y":2},
|
||||
|
||||
@@ -6,20 +6,26 @@
|
||||
// entirely and just use numbers.
|
||||
#define _QWERTY 0
|
||||
#define _SYMB 1
|
||||
#define _LIGHT 2
|
||||
|
||||
// Shortcut to make keymap more readable
|
||||
#define SYM_L MO(_SYMB)
|
||||
#define KC_ALEN LALT_T(KC_ENT)
|
||||
#define ES_LIGH LT(_LIGHT, KC_ESC)
|
||||
|
||||
#define CT_COPY LCTL(KC_C)
|
||||
#define CT_PASTE LCTL(KC_V)
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = LAYOUT(
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
|
||||
ES_LIGH ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
|
||||
//└────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
|
||||
//┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
|
||||
KC_LGUI ,KC_ALEN ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
|
||||
CT_COPY ,CT_PASTE,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
|
||||
KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,
|
||||
//├────────┼────────┘ └────────┴────────┼────────┼────────┐
|
||||
@@ -35,10 +41,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
|
||||
_______ ,_______ ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_LBRC ,KC_RBRC ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
|
||||
_______ ,KC_BSPC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,
|
||||
_______ ,KC_BSPC ,KC_DEL ,KC_LPRN ,KC_RPRN ,
|
||||
//├────────┼────────┘ └────────┴────────┼────────┼────────┐
|
||||
_______ ,_______ ,_______
|
||||
//└────────┘ └────────┴────────┘
|
||||
),
|
||||
|
||||
[_LIGHT] = LAYOUT(
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
_______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,
|
||||
//└────────┼────────┼────────┼────────┼────────┼────────┤
|
||||
RGB_M_P ,RGB_M_SW,RGB_M_X ,RGB_M_B ,RGB_VAD ,
|
||||
//┌────────┼────────┼────────┼────────┼────────┼────────┼────────┐
|
||||
_______ ,_______ ,RGB_M_SN,RGB_M_G ,RGB_M_R ,RGB_M_K ,RGB_M_T ,
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐
|
||||
_______ ,RGB_M_T ,XXXXXXX ,RGB_VAI ,RGB_VAD ,
|
||||
//├────────┼────────┘ └────────┴────────┼────────┼────────┐
|
||||
_______ ,RGB_MOD ,RGB_TOG
|
||||
//└────────┘ └────────┴────────┘
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
void keyboard_post_init_user(void) {
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -19,5 +19,8 @@
|
||||
#ifdef KEYBOARD_kudox_game_rev1
|
||||
#include "rev1.h"
|
||||
#endif
|
||||
#ifdef KEYBOARD_kudox_game_rev2
|
||||
#include "rev2.h"
|
||||
#endif
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
@@ -9,18 +9,18 @@
|
||||
</p>
|
||||
|
||||
- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
|
||||
- Hardware Supported: Kudox Game PCB rev1.0 w/ Pro Micro
|
||||
- Hardware Supported: Kudox Game PCB rev1.0 rev2.0 w/ Pro Micro
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
```sh
|
||||
make kudox_game/rev1:default
|
||||
make kudox_game/rev2:default
|
||||
```
|
||||
|
||||
Example of flashing this keyboard:
|
||||
|
||||
```sh
|
||||
make kudox_game/rev1:default:avrdude
|
||||
make kudox_game/rev2:default:avrdude
|
||||
```
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
91
keyboards/kudox_game/rev2/config.h
Normal file
91
keyboards/kudox_game/rev2/config.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
Copyright 2019 Kumao Kobo <kumaokobo@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x9696
|
||||
#define DEVICE_VER 0x0200
|
||||
#define MANUFACTURER Kumao Kobo
|
||||
#define PRODUCT The Kudox Game Keyboard
|
||||
#define DESCRIPTION Custom keyboard for playing game
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 7
|
||||
|
||||
// wiring of each half
|
||||
#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
|
||||
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
|
||||
// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5} //uncomment this line and comment line above if you need to reverse left-to-right key order
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* serial.c configuration for split keyboard */
|
||||
#define SOFT_SERIAL_PIN D0
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* ws2812 RGB LED */
|
||||
#define RGB_DI_PIN D3
|
||||
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 7 // Number of LEDs
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
// #define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
// #define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#define MOUSEKEY_TIME_TO_MAX 60
|
||||
#define MOUSEKEY_MAX_SPEED 7
|
||||
#define MOUSEKEY_WHEEL_DELAY 0
|
||||
1
keyboards/kudox_game/rev2/rev2.c
Normal file
1
keyboards/kudox_game/rev2/rev2.c
Normal file
@@ -0,0 +1 @@
|
||||
#include "kudox_game.h"
|
||||
20
keyboards/kudox_game/rev2/rev2.h
Normal file
20
keyboards/kudox_game/rev2/rev2.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#include "../kudox_game.h"
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
k00, k01, k02, k03, k04, k05, \
|
||||
k11, k12, k13, k14, k15, \
|
||||
k20, k21, k22, k23, k24, k25, k26, \
|
||||
k30, k31, k34, k35, k36, \
|
||||
k40, k45, k46 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, KC_NO }, \
|
||||
{ KC_NO, k11, k12, k13, k14, k15, KC_NO }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26 }, \
|
||||
{ k30, k31, KC_NO, KC_NO, k34, k35, k36 }, \
|
||||
{ k40, KC_NO, KC_NO, KC_NO, KC_NO, k45, k46 } \
|
||||
}
|
||||
1
keyboards/kudox_game/rev2/rules.mk
Normal file
1
keyboards/kudox_game/rev2/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
RGBLIGHT_ENABLE = yes
|
||||
@@ -31,4 +31,4 @@ AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
|
||||
|
||||
DEFAULT_FOLDER = kudox_game/rev1
|
||||
DEFAULT_FOLDER = kudox_game/rev2
|
||||
|
||||
6
keyboards/minidox/keymaps/bepo/config.h
Normal file
6
keyboards/minidox/keymaps/bepo/config.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#define USE_SERIAL
|
||||
|
||||
#define EE_HANDS
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
109
keyboards/minidox/keymaps/bepo/keymap.c
Normal file
109
keyboards/minidox/keymaps/bepo/keymap.c
Normal file
@@ -0,0 +1,109 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_bepo.h"
|
||||
|
||||
enum layers {
|
||||
_BEPO,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
#define TABLO LT(_LOWER, KC_TAB)
|
||||
#define ENTRA LT(_RAISE, KC_ENTER)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* BEPO
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | B | W | P | O | ’ | | ^ | V | D | L | J |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | A | U | I | E | , | | C | T | S | R | N |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | Z/GUI| Y/Alt| X/Ctl| ./Sft| K | | M | Q/Sft| G/Ctl| H/Alt| F/GUI|
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,------.------.------. ,------,------.------.
|
||||
* | Del | Tab | | | |Enter |Escape|
|
||||
* | | LOWER| Space| |BckSpc|RAISE | |
|
||||
* `------'------| | | |------'------'
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_BEPO] = LAYOUT(
|
||||
BP_B, BP_W, BP_P, BP_O, BP_APOS, BP_DCRC, BP_V , BP_D, BP_L, BP_J,
|
||||
BP_A, BP_U, BP_I, BP_E, BP_COMMA, BP_C, BP_T, BP_S, BP_R, BP_N,
|
||||
LGUI_T(BP_Z), ALT_T(BP_Y), CTL_T(BP_X), SFT_T(BP_DOT), BP_K, BP_M, SFT_T(BP_Q), CTL_T(BP_G), ALT_T(BP_H), LGUI_T(BP_F),
|
||||
KC_DEL, TABLO, KC_SPC, KC_BSPC, ENTRA , KC_ESC
|
||||
),
|
||||
|
||||
/* Lower.
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | | | É | & | œ | È | | PgUp | Home | Up | End |ScrlUp|
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | æ | Ù | ¨ | € | $ | | PgDn | Left | Down | Right|ScrlDn|
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | À | Alt | Ctl | Shift| Ç | | | Shift| Ctl | Alt | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,------,------,------. ,------,------,------.
|
||||
* | | | | | | | |
|
||||
* `------'------| | | |------'------'
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
ALGR(BP_B), BP_E_ACUTE, ALGR(BP_P), ALGR(BP_O), BP_E_GRAVE, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_MS_WH_UP,
|
||||
ALGR(BP_A), ALGR(BP_U), ALGR(BP_I), ALGR(BP_E), BP_DOLLAR, KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MS_WH_DOWN,
|
||||
BP_AGRV, KC_LALT, KC_LCTL, KC_LSFT, BP_CCED, _______, KC_LSFT, KC_LCTL, KC_LALT, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Raise
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | " | < | > | ( | ) | | @ | + | - | / | * |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | ` | { | } | [ | ] | | ~ | = | % | \ | # |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | | | Alt | Ctl | Shift| ' | | | Shift| Ctl | Alt | & |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,------,------,------. ,------,------,------.
|
||||
* | | | | | | | |
|
||||
* `------'------| _ | | |------'------'
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
BP_DQOT, ALGR(BP_LGIL), ALGR(BP_RGIL), BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR,
|
||||
S(BP_PERCENT), ALGR(BP_Y), ALGR(BP_X), ALGR(BP_LPRN), ALGR(BP_RPRN), ALGR(BP_K), BP_EQUAL, BP_PERCENT, ALGR(BP_A_GRAVE), S(BP_DOLLAR),
|
||||
ALGR(BP_B), KC_LALT, KC_LCTL, KC_LSFT, ALGR(BP_COMM), _______, KC_LSFT, KC_LCTL, KC_LALT, ALGR(BP_P),
|
||||
_______, _______, ALGR(KC_SPC), _______, _______, _______
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* (GUI, ALT, Ctrl, Shft ONLY on left-hand home row)
|
||||
*
|
||||
* ,----------------------------------. ,----------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
||||
* |------+------+------+------+------| |------+------+------+------+------|
|
||||
* | F11 | Alt | Ctl | Shift| | | | Shift| Ctl | Alt | F12 |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,------,------,------. ,------,------,------.
|
||||
* | | | | | | | |
|
||||
* `------'------| | | |------'------'
|
||||
* | | | |
|
||||
* `------' `------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
S(BP_DQOT), S(BP_LGIL), S(BP_RGIL), S(BP_LPRN), S(BP_RPRN), S(BP_AT), S(BP_PLUS), S(BP_MINUS), S(BP_SLASH), S(BP_ASTR),
|
||||
KC_F11, KC_LALT, KC_LCTL, KC_LSFT, _______, _______, KC_LSFT, KC_LCTL, KC_LALT, KC_F12 ,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
31
keyboards/minidox/keymaps/bepo/readme.md
Normal file
31
keyboards/minidox/keymaps/bepo/readme.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# MiniDox Bepo
|
||||
|
||||
As the minidox has a restricted number of keys as compared to regular keyboards, some adjustments were made.
|
||||
These adjustments allow for improved ergonomics when typing English and programming languages (in particular javascript).
|
||||
|
||||
>Keys have been grouped and rearranged to meet the needs of principals programming usages. Most used groups are placed at the opposite of thumb layout-activation key, not to seek the same hand too much:
|
||||
1. **Arrows/Navigation:** most used with `2.` after standard characters. To navigate comfortably during a long time, the group is placed at the opposite of the thumb-activated layout key.
|
||||
2. **Programming blocks characters:** most used with `1.` after standard characters. *Group placed at the opposite of the thumb-activated layout key*.
|
||||
3. **Operators:** less used than navigation. *Same side of the thumb-activated layout key*.
|
||||
4. **French special characters:** to keep basic characters on main layout and because they are less used in programming and english, french special characters have been moved to a specific layout, counter to Bepo's original main layout. *Same side of the thumb-activated layout key.*
|
||||
|
||||
*Here is a list of other ergonomic choices :*
|
||||
|
||||
- `Alt` both sides (instead of `AltGr`), as special characters are now handled by layouts, and to comfortably get all shortcuts with both hands (e.g. `alt/tab`...).
|
||||
- Numbers on home row, and Function keys on corresponding upper row.
|
||||
- Greater/less-than-sign in place of `«` `»`, for easier programming, and because the majority of OS and softwares replace `"` with `«` `»`.
|
||||
- Mirror `&` and `|` on little finger, lower row, raise layout (`raiser + &` on little finger is more handy than `raiser + &` on index finger).
|
||||
- `’/?` in place of `È` to keep `M` on the right hand side.
|
||||
- Better reachability for `W` `Z` `~` `backtick`...
|
||||
|
||||
## Firmware :
|
||||
[Recent bepo firmware](https://bepo.fr/wiki/Accueil) `1.1rc2` switched generic apostrophe and typographic one.
|
||||
As the majority of OS and softwares replace **`'`** with **`’`**, I personnaly do prefer 2008 bepo firmware which keeps generic apostrophe on main layout. In fact, the apostrophe get replaced in text editors, but not in the IDEs while programming.
|
||||
Or you also can [switch them by following those instructions.](https://bepo.fr/wiki/Apostrophe)
|
||||
|
||||
## Layout :
|
||||

|
||||
|
||||
#### N.B.
|
||||
I have been using and fine tuned this layout for about a year, and I really enjoy it. 🙂
|
||||
|
||||
@@ -30,4 +30,4 @@ SRC = keyboards/wilba_tech/wt_main.c \
|
||||
keyboards/wilba_tech/wt_rgb_backlight.c \
|
||||
drivers/issi/is31fl3733.c \
|
||||
quantum/color.c \
|
||||
drivers/arm/i2c_master.c
|
||||
drivers/chibios/i2c_master.c
|
||||
|
||||
@@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
/* Encoders */
|
||||
#define ENCODERS_PAD_A { F4, F6 }
|
||||
#define ENCODERS_PAD_B { F5, F7 }
|
||||
#define ENCODER_RESOLUTION 2
|
||||
// if you want to reverse encoder direction
|
||||
// #define ENCODER_DIRECTION_FLIP
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
@@ -116,55 +116,55 @@ void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// Zoom
|
||||
tap_code16(!clockwise ? G(KC_EQL) : G(KC_MINS));
|
||||
tap_code16(!clockwise ? G(KC_MINS) : G(KC_EQL));
|
||||
} else {
|
||||
// Fn Layer
|
||||
// rotate canvas
|
||||
tap_code(!clockwise ? KC_QUOT : KC_MINS);
|
||||
tap_code(!clockwise ? KC_MINS : KC_QUOT);
|
||||
}
|
||||
break;
|
||||
case MAC_PS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// Zoom
|
||||
tap_code16(!clockwise ? G(KC_EQL) : G(KC_MINS));
|
||||
tap_code16(!clockwise ? G(KC_MINS) : G(KC_EQL));
|
||||
} else {
|
||||
// Fn Layer
|
||||
// undo / redo
|
||||
tap_code16(!clockwise ? S(G(KC_Z)) : G(KC_Z));
|
||||
tap_code16(!clockwise ? G(KC_Z) : S(G(KC_Z)));
|
||||
}
|
||||
break;
|
||||
case WIN_CS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// Zoom
|
||||
tap_code16(!clockwise ? C(KC_EQL) : C(KC_MINS));
|
||||
tap_code16(!clockwise ? C(KC_MINS) : C(KC_EQL));
|
||||
} else {
|
||||
// Fn Layer
|
||||
// rotate canvas
|
||||
tap_code(!clockwise ? KC_QUOT : KC_MINS);
|
||||
tap_code(!clockwise ? KC_MINS : KC_QUOT);
|
||||
}
|
||||
break;
|
||||
case WIN_PS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// Zoom
|
||||
tap_code16(!clockwise ? C(KC_SCLN) : C(KC_MINS));
|
||||
tap_code16(!clockwise ? C(KC_MINS) : C(KC_SCLN));
|
||||
} else {
|
||||
// Fn Layer
|
||||
// undo / redo
|
||||
tap_code16(!clockwise ? C(S(KC_Z)) : C(KC_Z));
|
||||
tap_code16(!clockwise ? C(KC_Z) : C(S(KC_Z)));
|
||||
}
|
||||
break;
|
||||
case IOS_CS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// Zoom
|
||||
tap_code16(!clockwise ? G(KC_SCLN) : G(KC_MINS));
|
||||
tap_code16(!clockwise ? G(KC_MINS) : G(KC_SCLN));
|
||||
} else {
|
||||
// Fn Layer
|
||||
// rotate canvas
|
||||
tap_code(!clockwise ? KC_EQL : KC_MINS);
|
||||
tap_code(!clockwise ? KC_MINS : KC_EQL);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -176,55 +176,55 @@ void encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// size of brush
|
||||
tap_code(!clockwise ? KC_RBRC : KC_LBRC);
|
||||
tap_code(!clockwise ? KC_LBRC : KC_RBRC);
|
||||
} else {
|
||||
// Fn Layer
|
||||
// opacity of brush
|
||||
tap_code16(!clockwise ? G(KC_RBRC) : G(KC_LBRC));
|
||||
tap_code16(!clockwise ? G(KC_LBRC) : G(KC_RBRC));
|
||||
}
|
||||
break;
|
||||
case MAC_PS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// size of brush
|
||||
tap_code(!clockwise ? KC_RBRC : KC_LBRC);
|
||||
tap_code(!clockwise ? KC_LBRC : KC_RBRC);
|
||||
} else {
|
||||
// Fn Layer
|
||||
// opacity of brush
|
||||
tap_code16(!clockwise ? KC_RCBR : KC_LCBR);
|
||||
tap_code16(!clockwise ? KC_LCBR : KC_RCBR);
|
||||
}
|
||||
break;
|
||||
case WIN_CS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// rotate canvas
|
||||
tap_code(!clockwise ? KC_RBRC : KC_LBRC);
|
||||
tap_code(!clockwise ? KC_LBRC : KC_RBRC);
|
||||
} else {
|
||||
// Fn Layer
|
||||
// opacity of brush
|
||||
tap_code16(!clockwise ? C(KC_RBRC) : C(KC_LBRC));
|
||||
tap_code16(!clockwise ? C(KC_LBRC) : C(KC_RBRC));
|
||||
}
|
||||
break;
|
||||
case WIN_PS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// rotate canvas
|
||||
tap_code(!clockwise ? KC_RBRC : KC_LBRC);
|
||||
tap_code(!clockwise ? KC_LBRC : KC_RBRC);
|
||||
} else {
|
||||
// Fn Layer
|
||||
// opacity of brush
|
||||
tap_code16(!clockwise ? KC_RCBR : KC_LCBR);
|
||||
tap_code16(!clockwise ? KC_LCBR : KC_RCBR);
|
||||
}
|
||||
break;
|
||||
case IOS_CS_1:
|
||||
if (currentLayer % 2 == 0) {
|
||||
// default layer
|
||||
// size of brush
|
||||
tap_code(!clockwise ? KC_BSLS : KC_RBRC);
|
||||
tap_code(!clockwise ? KC_RBRC : KC_BSLS);
|
||||
} else {
|
||||
// Fn Layer
|
||||
// opacity of brush
|
||||
tap_code16(!clockwise ? G(KC_BSLS) : G(KC_RBRC));
|
||||
tap_code16(!clockwise ? G(KC_RBRC) : G(KC_BSLS));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -6,7 +6,7 @@ A left hand device with rotary encoder, for artists.
|
||||
|
||||
* Keyboard Maintainer: [niltea](https://github.com/niltea)
|
||||
* Hardware Supported: Palette1202
|
||||
* Hardware Availability: [Pixiv Booth](https://booth.pm/)
|
||||
* Hardware Availability: [Pixiv Booth](https://niltea.booth.pm/)
|
||||
* [PCB & Case](https://github.com/niltea/Palette1202)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
239
keyboards/switchplate/southpaw_65/config.h
Normal file
239
keyboards/switchplate/southpaw_65/config.h
Normal file
@@ -0,0 +1,239 @@
|
||||
/* Copyright 2019
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x4084
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Switchplate Peripherals
|
||||
#define PRODUCT Southpaw Extended 65%
|
||||
#define DESCRIPTION A Left Hand Number Pad 65% Keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 19
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
//#define MATRIX_ROW_PINS { D0, D5 }
|
||||
//#define MATRIX_COL_PINS { F1, F0, B0 }
|
||||
//#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW, ROW2COL */
|
||||
//#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define BACKLIGHT_PIN B5
|
||||
#define BACKLIGHT_LEVELS 10
|
||||
// #define BACKLIGHT_BREATHING
|
||||
|
||||
#define RGB_DI_PIN C7
|
||||
#define RGBLED_NUM 9
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
// #ifdef RGB_DI_PIN
|
||||
// #define RGBLIGHT_HUE_STEP 8
|
||||
// #define RGBLIGHT_SAT_STEP 8
|
||||
// #define RGBLIGHT_VAL_STEP 8
|
||||
// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||
// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||
// /*== all animations enable ==*/
|
||||
// #define RGBLIGHT_ANIMATIONS
|
||||
// /*== or choose animations ==*/
|
||||
// #define RGBLIGHT_EFFECT_BREATHING
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
// #define RGBLIGHT_EFFECT_SNAKE
|
||||
// #define RGBLIGHT_EFFECT_KNIGHT
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
// #endif
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
|
||||
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
|
||||
*/
|
||||
// #define GRAVE_ESC_CTRL_OVERRIDE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Magic Key Options
|
||||
*
|
||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||
* the keyboard. They are best used in combination with the HID Listen program,
|
||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||
*
|
||||
* The options below allow the magic key functionality to be changed. This is
|
||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||
*
|
||||
*/
|
||||
|
||||
/* key combination for magic key command */
|
||||
/* defined by default; to change, uncomment and set to the combination you want */
|
||||
// #define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))
|
||||
|
||||
/* control how magic key switches layers */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||
|
||||
/* override magic key keymap */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||
//#define MAGIC_KEY_HELP1 H
|
||||
//#define MAGIC_KEY_HELP2 SLASH
|
||||
//#define MAGIC_KEY_DEBUG D
|
||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||
//#define MAGIC_KEY_DEBUG_KBD K
|
||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||
//#define MAGIC_KEY_VERSION V
|
||||
//#define MAGIC_KEY_STATUS S
|
||||
//#define MAGIC_KEY_CONSOLE C
|
||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
||||
//#define MAGIC_KEY_LAYER0 0
|
||||
//#define MAGIC_KEY_LAYER1 1
|
||||
//#define MAGIC_KEY_LAYER2 2
|
||||
//#define MAGIC_KEY_LAYER3 3
|
||||
//#define MAGIC_KEY_LAYER4 4
|
||||
//#define MAGIC_KEY_LAYER5 5
|
||||
//#define MAGIC_KEY_LAYER6 6
|
||||
//#define MAGIC_KEY_LAYER7 7
|
||||
//#define MAGIC_KEY_LAYER8 8
|
||||
//#define MAGIC_KEY_LAYER9 9
|
||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
||||
//#define MAGIC_KEY_LOCK CAPS
|
||||
//#define MAGIC_KEY_EEPROM E
|
||||
//#define MAGIC_KEY_NKRO N
|
||||
//#define MAGIC_KEY_SLEEP_LED Z
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
/*
|
||||
* MIDI options
|
||||
*/
|
||||
|
||||
/* Prevent use of disabled MIDI features in the keymap */
|
||||
//#define MIDI_ENABLE_STRICT 1
|
||||
|
||||
/* enable basic MIDI features:
|
||||
- MIDI notes can be sent when in Music mode is on
|
||||
*/
|
||||
//#define MIDI_BASIC
|
||||
|
||||
/* enable advanced MIDI features:
|
||||
- MIDI notes can be added to the keymap
|
||||
- Octave shift and transpose
|
||||
- Virtual sustain, portamento, and modulation wheel
|
||||
- etc.
|
||||
*/
|
||||
//#define MIDI_ADVANCED
|
||||
|
||||
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
|
||||
//#define MIDI_TONE_KEYCODE_OCTAVES 1
|
||||
|
||||
/*
|
||||
* HD44780 LCD Display Configuration
|
||||
*/
|
||||
/*
|
||||
#define LCD_LINES 2 //< number of visible lines of the display
|
||||
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
|
||||
|
||||
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
|
||||
|
||||
#if LCD_IO_MODE
|
||||
#define LCD_PORT PORTB //< port for the LCD lines
|
||||
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
|
||||
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
|
||||
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
|
||||
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
|
||||
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
|
||||
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
|
||||
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
|
||||
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
|
||||
#define LCD_RS_PORT LCD_PORT //< port for RS line
|
||||
#define LCD_RS_PIN 3 //< pin for RS line
|
||||
#define LCD_RW_PORT LCD_PORT //< port for RW line
|
||||
#define LCD_RW_PIN 2 //< pin for RW line
|
||||
#define LCD_E_PORT LCD_PORT //< port for Enable line
|
||||
#define LCD_E_PIN 1 //< pin for Enable line
|
||||
#endif
|
||||
*/
|
||||
|
||||
/* Bootmagic Lite key configuration */
|
||||
// #define BOOTMAGIC_LITE_ROW 0
|
||||
// #define BOOTMAGIC_LITE_COLUMN 0
|
||||
141
keyboards/switchplate/southpaw_65/dev.md
Normal file
141
keyboards/switchplate/southpaw_65/dev.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# Southpaw Extended 65%
|
||||
|
||||
Development docs covering the following:
|
||||
- Kimera core
|
||||
- RGB
|
||||
- Backlight
|
||||
|
||||
## Kimera core
|
||||

|
||||
|
||||
What little available info that was available for the qmk port
|
||||
- atmega32u4 16Mhz
|
||||
- board seems to have a 6Mhz crystal
|
||||
- 2x PCA9555 I2C IO expander
|
||||
|
||||
Links:
|
||||
- [Schematic, BOM, Gerbers](/kairyu/kimera/blob/master/kimera_core)
|
||||
- [Original firmware](https://github.com/kairyu/tmk_keyboard_custom/tree/master/keyboard/kimera)
|
||||
|
||||
```c
|
||||
/*
|
||||
Kimera_core_v1.0 Components
|
||||
|
||||
U1 (atmega32u4)
|
||||
,----------------.
|
||||
TX --| TX0(PD3) RAW |--
|
||||
RX --| RX1(PD2) GND |--
|
||||
--| GND RESET |-- RST
|
||||
--| GND VCC |--
|
||||
SDA --| 2(PD1) (PF4)A3 |--
|
||||
SCL --| 3(PD0) (PF5)A2 |--
|
||||
(INT) --| 4(PD4) (PF6)A1 |--
|
||||
--| 5(PC6) (PF7)A0 |--
|
||||
--| 6(PD7) (PB1)15 |-- SCK
|
||||
LED2 --| 7(PE6) (PB3)14 |-- MISO
|
||||
LED1 --| 8(PB4) (PB2)16 |-- MOSI
|
||||
LED3 --| 9(PB5) (PB6)10 |-- LED4
|
||||
`----------------'
|
||||
|
||||
IC1 (PCA9555) IC2 (PCA9555)
|
||||
,----------. ,----------.
|
||||
SDA --| SDA P00 |-- P1 SDA --| SDA P00 |-- P17
|
||||
SCL --| SCL P01 |-- P2 SCL --| SCL P01 |-- P18
|
||||
INT --| INT P02 |-- P3 INT --| INT P02 |-- P19
|
||||
| P03 |-- P4 | P03 |-- P20
|
||||
GND --| A0 P04 |-- P5 VCC --| A0 P04 |-- P21
|
||||
SJ1 --| A1 P05 |-- P6 SJ1 --| A1 P05 |-- P22
|
||||
SJ2 --| A2 P06 |-- P7 SJ2 --| A2 P06 |-- P23
|
||||
| P07 |-- P8 | P07 |-- P24
|
||||
| | | |
|
||||
| P10 |-- P9 | P10 |-- P25
|
||||
| P11 |-- P10 | P11 |-- P26
|
||||
| P12 |-- P11 | P12 |-- P27
|
||||
| P13 |-- P12 | P13 |-- P28
|
||||
| P14 |-- P13 | P14 |-- P29
|
||||
| P15 |-- P14 | P15 |-- P30
|
||||
| P16 |-- P15 | P16 |-- P31
|
||||
| P17 |-- P16 | P17 |-- P32
|
||||
`----------' `----------'
|
||||
*/
|
||||
|
||||
```
|
||||
|
||||
### Bootloader
|
||||
Default bootloader is `atmel-dfu`.
|
||||
Reboot to bootloader via magnetic switch next to icsp header.
|
||||
Flash using regular dfu methods.
|
||||
|
||||
### Southpaw Extended 65 pin mappings
|
||||
Taken from [kimera-config.json](https://github.com/kairyu/tkg/blob/master/keyboard/config/kimera-config.json)
|
||||
|
||||
"row_mapping": [ 2, 3, 4, 5, 6 ],
|
||||
"col_mapping": [ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 ],
|
||||
|
||||
# RGB
|
||||
- PIN C7
|
||||
- Number of RGB LED 7
|
||||
|
||||
# Backlight
|
||||
- PIN B5
|
||||
|
||||
# Capslock
|
||||
- PIN B6
|
||||
|
||||
# Numlock
|
||||
- PIN C6
|
||||
|
||||
## Assumptions
|
||||
### Pin/Port mappings
|
||||
- All cols are on the same IC
|
||||
- All rows are on the same IC and port
|
||||
- Pins mapped sequentially
|
||||
- Each port only does row or column not a mixture of both
|
||||
- No need to have complex port config
|
||||
-
|
||||
|
||||
| ROW index | Kimera Pin | PCA9555 |
|
||||
| ----------|------------|-------------------|
|
||||
| 0 | 2 | IC1 Port 0 pin 1 |
|
||||
| 1 | 3 | IC1 Port 0 pin 2 |
|
||||
| 2 | 4 | IC1 Port 0 pin 3 |
|
||||
| 3 | 5 | IC1 Port 0 pin 4 |
|
||||
| 4 | 6 | IC1 Port 0 pin 5 |
|
||||
|
||||
- Safe enough to assume `row_index == pin`
|
||||
|
||||
|
||||
| COL index | Kimera Pin | PCA9555 |
|
||||
| ----------|------------|-------------------|
|
||||
| 0 | 13 | IC1 Port 1 pin 4 |
|
||||
| 1 | 14 | IC1 Port 1 pin 5 |
|
||||
| 2 | 15 | IC1 Port 1 pin 6 |
|
||||
| 3 | 16 | IC1 Port 1 pin 7 |
|
||||
| 4 | 17 | IC2 Port 0 pin 0 |
|
||||
| 5 | 18 | IC2 Port 0 pin 1 |
|
||||
| 6 | 19 | IC2 Port 0 pin 2 |
|
||||
| 7 | 20 | IC2 Port 0 pin 3 |
|
||||
| 8 | 21 | IC2 Port 0 pin 4 |
|
||||
| 9 | 22 | IC2 Port 0 pin 5 |
|
||||
| 10 | 23 | IC2 Port 0 pin 6 |
|
||||
| 11 | 24 | IC2 Port 0 pin 7 |
|
||||
| 12 | 25 | IC2 Port 1 pin 0 |
|
||||
| 13 | 26 | IC2 Port 1 pin 1 |
|
||||
| 14 | 27 | IC2 Port 1 pin 2 |
|
||||
| 15 | 28 | IC2 Port 1 pin 3 |
|
||||
| 16 | 29 | IC2 Port 1 pin 4 |
|
||||
| 17 | 30 | IC2 Port 1 pin 5 |
|
||||
| 18 | 31 | IC2 Port 1 pin 6 |
|
||||
|
||||
- Need to read both ICs and corresponding port to compile the correct column data
|
||||
- All pins are mapped sequentially
|
||||
- maps to the usual practice of reading matrix columns
|
||||
- Needs uint32_t to read 19 columns of data
|
||||
|
||||
## Notes
|
||||
[pca9555 datasheet](https://www.ti.com/lit/ds/symlink/pca9555.pdf)
|
||||
|
||||
- Other Kimera based boards with non sequential pin mappings, pins mapped across ICs, or mixed row/col configs will need more complicated `pin -> i2c_addr,port,pin` logic as well as rather more complex pin functions.
|
||||
|
||||
## Return to stock firmware
|
||||
To return back to stock TMK firmware, use [programming guide provided by Reconsiderit](https://geekhack.org/index.php?topic=92344.msg2625784#msg2625784)
|
||||
21
keyboards/switchplate/southpaw_65/info.json
Normal file
21
keyboards/switchplate/southpaw_65/info.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"keyboard_name": "Southpaw Extended 65%",
|
||||
"url": "https://geekhack.org/index.php?topic=92344.0",
|
||||
"maintainer": "qmk",
|
||||
"width": 20,
|
||||
"height": 5,
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"key_count": 91,
|
||||
"layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "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}, {"label":")", "x":14, "y":0}, {"label":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0}, {"label":"Backspace", "x":18, "y":0}, {"label":"Home", "x":19, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"|", "x":17.5, "y":1, "w":1.5}, {"label":"End", "x":19, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"~", "x":16.75, "y":2}, {"label":"Enter", "x":17.75, "y":2, "w":1.25}, {"label":"Page Up", "x":19, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Num Enter", "x":3, "y":3}, {"label":"LShift", "x":4, "y":3, "w":1.25}, {"label":"|", "x":5.25, "y":3}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"RShift", "x":16.25, "y":3, "w":1.75}, {"label":"Up", "x":18, "y":3}, {"label":"Page Down", "x":19, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"0", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Num Enter", "x":3, "y":4}, {"label":"LCtrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"LAlt", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":6.25}, {"label":"RAlt", "x":14, "y":4}, {"label":"RCtrl", "x":15, "y":4}, {"label":"Fn0", "x":16, "y":4}, {"label":"Left", "x":17, "y":4}, {"label":"Down", "x":18, "y":4}, {"label":"Right", "x":19, "y":4}]
|
||||
},
|
||||
"LAYOUT_ansi": {
|
||||
"key_count": 85,
|
||||
"layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "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}, {"label":")", "x":14, "y":0}, {"label":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0, "w":2}, {"label":"Home", "x":19, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"|", "x":17.5, "y":1, "w":1.5}, {"label":"End", "x":19, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"Enter", "x":16.75, "y":2, "w":2.25}, {"label":"Page Up", "x":19, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Num Enter", "x":3, "y":3, "h":2}, {"label":"LShift", "x":4, "y":3, "w":2.25}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"RShift", "x":16.25, "y":3, "w":1.75}, {"label":"Up", "x":18, "y":3}, {"label":"Page Down", "x":19, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"LCtrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"LAlt", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":6.25}, {"label":"RAlt", "x":14, "y":4}, {"label":"RCtrl", "x":15, "y":4}, {"label":"Fn0", "x":16, "y":4}, {"label":"Left", "x":17, "y":4}, {"label":"Down", "x":18, "y":4}, {"label":"Right", "x":19, "y":4}]
|
||||
},
|
||||
"LAYOUT_iso": {
|
||||
"key_count": 86,
|
||||
"layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "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}, {"label":")", "x":14, "y":0}, {"label":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0, "w":2}, {"label":"Home", "x":19, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"End", "x":19, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"~", "x":16.75, "y":2}, {"label":"Enter", "x":17.75, "y":1, "w":1.25, "h":2}, {"label":"Page Up", "x":19, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Num Enter", "x":3, "y":3, "h":2}, {"label":"LShift", "x":4, "y":3, "w":1.25}, {"label":"|", "x":5.25, "y":3}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"RShift", "x":16.25, "y":3, "w":1.75}, {"label":"Up", "x":18, "y":3}, {"label":"Page Down", "x":19, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"LCtrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"LAlt", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":6.25}, {"label":"RAlt", "x":14, "y":4}, {"label":"RCtrl", "x":15, "y":4}, {"label":"Fn0", "x":16, "y":4}, {"label":"Left", "x":17, "y":4}, {"label":"Down", "x":18, "y":4}, {"label":"Right", "x":19, "y":4}]
|
||||
}
|
||||
}
|
||||
}
|
||||
31
keyboards/switchplate/southpaw_65/keymaps/default/keymap.c
Normal file
31
keyboards/switchplate/southpaw_65/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,31 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
/* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 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_BSPC, KC_HOME,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴─────────┼─────────┤ */
|
||||
KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬───────────┼─────────┤ */
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
/* └─────────┴─────────┴─────────┴─────────┴───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
||||
),
|
||||
|
||||
[1] = 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_DEL, KC_DEL, KC_INS,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴─────────┼─────────┤ */
|
||||
_______, _______, _______, _______, RESET, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬───────────┼─────────┤ */
|
||||
_______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┼─────────┤ */
|
||||
_______, _______, _______, _______, KC_LSFT, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, KC_RSFT, _______, _______,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┼─────────┤ */
|
||||
_______, _______, _______, _______, KC_LCTL, _______, KC_LALT, _______, KC_RALT, KC_RCTL, KC_TRNS, _______, _______, _______
|
||||
/* └─────────┴─────────┴─────────┴─────────┴───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
||||
),
|
||||
};
|
||||
@@ -0,0 +1,31 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ansi(
|
||||
/* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 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_HOME,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┼─────────┤ */
|
||||
KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
|
||||
/* ├─────────┼─────────┼─────────┤ ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──────────────├─────────┤ */
|
||||
KC_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
/* └───────────────────┴─────────┴─────────┴───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
||||
),
|
||||
|
||||
[1] = 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_DEL, KC_INS,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┼─────────┤ */
|
||||
_______, _______, _______, _______, RESET, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
/* ├─────────┼─────────┼─────────┤ ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──────────────├─────────┤ */
|
||||
_______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, EEP_RST, _______,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────────────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───────────┬─────────┼─────────┤ */
|
||||
_______, _______, _______, _______, KC_LSFT, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, KC_RSFT, _______, _______,
|
||||
/* ├─────────┴─────────┬─────────┤ ├───────────┬─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┼─────────┤ */
|
||||
_______, _______, KC_LCTL, _______, KC_LALT, _______, KC_RALT, KC_RCTL, KC_TRNS, _______, _______, _______
|
||||
/* └───────────────────┴─────────┴─────────┴───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
||||
),
|
||||
};
|
||||
@@ -0,0 +1,32 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_iso(
|
||||
/* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬───────────────────┬─────────┐ */
|
||||
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 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_HOME,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┼─────────┤ */
|
||||
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGUP,
|
||||
/* ├─────────┼─────────┼─────────┤ ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ├─────────┤ */
|
||||
KC_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_END,
|
||||
/* ├─────────┴─────────┼─────────┤ ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┼─────────┤ */
|
||||
KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
/* └───────────────────┴─────────┴─────────┴───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
||||
),
|
||||
|
||||
[1] = 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_DEL, KC_INS,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┼─────────┤ */
|
||||
_______, _______, _______, _______, RESET, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
/* ├─────────┼─────────┼─────────┤ ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ├─────────┤ */
|
||||
_______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______,
|
||||
/* ├─────────┼─────────┼─────────┼─────────┼───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┼─────────┤ */
|
||||
_______, _______, _______, _______, KC_LSFT, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, KC_RSFT, _______, _______,
|
||||
/* ├─────────┴─────────┼─────────┤ ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┼─────────┤ */
|
||||
_______, _______, KC_LCTL, _______, KC_LALT, _______, KC_RALT, KC_RCTL, KC_TRNS, _______, _______, _______
|
||||
/* └───────────────────┴─────────┴─────────┴───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
||||
)
|
||||
};
|
||||
95
keyboards/switchplate/southpaw_65/matrix.c
Normal file
95
keyboards/switchplate/southpaw_65/matrix.c
Normal file
@@ -0,0 +1,95 @@
|
||||
/* Copyright 2019
|
||||
*
|
||||
* 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 <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <avr/io.h>
|
||||
#include <string.h>
|
||||
#include "matrix.h"
|
||||
#include "pca9555.h"
|
||||
#include "quantum.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
// PCA9555 slave addresses
|
||||
#define IC1 0x20
|
||||
#define IC2 0x21
|
||||
|
||||
//_____Utility funcs___________________________________________________________
|
||||
|
||||
static void init_pins(void) {
|
||||
// init all rows - IC1 port0 input
|
||||
pca9555_set_config(IC1, PCA9555_PORT0, ALL_INPUT); // same as initial state
|
||||
|
||||
// init all cols high - IC2 all input
|
||||
pca9555_set_config(IC1, PCA9555_PORT1, ALL_INPUT); // same as initial state
|
||||
pca9555_set_config(IC2, PCA9555_PORT0, ALL_INPUT); // same as initial state
|
||||
pca9555_set_config(IC2, PCA9555_PORT1, ALL_INPUT); // same as initial state
|
||||
|
||||
pca9555_set_output(IC1, PCA9555_PORT0, ALL_LOW);
|
||||
}
|
||||
|
||||
static void select_row(uint8_t row) {
|
||||
// For the Southpaw Ext 65% pins 1-6 are used for the rows
|
||||
uint8_t pin = row;
|
||||
uint8_t mask = 2 << pin;
|
||||
|
||||
pca9555_set_config(IC1, PCA9555_PORT0, ALL_INPUT & (~mask));
|
||||
}
|
||||
|
||||
static uint32_t read_cols(void) {
|
||||
//Read column inputs. Pins 13-31 are used. Split across both ICs but they are sequential
|
||||
uint32_t state_1 = pca9555_readPins(IC1, PCA9555_PORT1);
|
||||
uint32_t state_2 = pca9555_readPins(IC2, PCA9555_PORT0);
|
||||
uint32_t state_3 = pca9555_readPins(IC2, PCA9555_PORT1);
|
||||
|
||||
uint32_t state = (((state_3 & 0b01111111) << 12) | (state_2 << 4) | ((state_1 & 0b11110000) >> 4));
|
||||
return ~state;
|
||||
}
|
||||
|
||||
static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
|
||||
// Store last value of row prior to reading
|
||||
matrix_row_t last_row_value = current_matrix[current_row];
|
||||
|
||||
// Clear data in matrix row
|
||||
current_matrix[current_row] = 0;
|
||||
|
||||
// Select row and wait for row selection to stabilize
|
||||
select_row(current_row);
|
||||
// Skip the wait_us(30); as i2c is slow enough to debounce the io changes
|
||||
|
||||
current_matrix[current_row] = read_cols();
|
||||
|
||||
// No need to Unselect row as the next `select_row` will blank everything
|
||||
|
||||
return (last_row_value != current_matrix[current_row]);
|
||||
}
|
||||
|
||||
//_____CUSTOM MATRIX IMPLEMENTATION____________________________________________________
|
||||
|
||||
void matrix_init_custom(void) {
|
||||
pca9555_init(IC1);
|
||||
pca9555_init(IC2);
|
||||
|
||||
init_pins();
|
||||
}
|
||||
|
||||
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
|
||||
bool changed = false;
|
||||
for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
|
||||
changed |= read_cols_on_row(current_matrix, current_row);
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
23
keyboards/switchplate/southpaw_65/readme.md
Normal file
23
keyboards/switchplate/southpaw_65/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Southpaw Extended 65%
|
||||
|
||||

|
||||
|
||||
Left Hand Number Pad Keyboard with 85 Keys & RGB LED Underglow
|
||||
- Designed by Reconsiderit
|
||||
- Up to 91 keys
|
||||
- iso and ansi support
|
||||
- Uses Kimera core
|
||||
|
||||
* Keyboard Maintainer: QMK Community
|
||||
* Hardware Supported: Southpaw Extended 65%
|
||||
* Hardware Availability: [Geekhack GB Thread](https://geekhack.org/index.php?topic=92344.0)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make switchplate/southpaw_65:default_ansi
|
||||
|
||||
Install examples:
|
||||
|
||||
make switchplate/southpaw_65:default_ansi:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
41
keyboards/switchplate/southpaw_65/rules.mk
Normal file
41
keyboards/switchplate/southpaw_65/rules.mk
Normal file
@@ -0,0 +1,41 @@
|
||||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
# Teensy halfkay
|
||||
# Pro Micro caterina
|
||||
# Atmel DFU atmel-dfu
|
||||
# LUFA DFU lufa-dfu
|
||||
# QMK DFU qmk-dfu
|
||||
# ATmega32A bootloadHID
|
||||
# ATmega328P USBasp
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
|
||||
LTO_ENABLE = yes
|
||||
|
||||
# custom matrix setup
|
||||
CUSTOM_MATRIX = lite
|
||||
|
||||
VPATH += drivers/gpio
|
||||
SRC += pca9555.c matrix.c
|
||||
QUANTUM_LIB_SRC += i2c_master.c
|
||||
30
keyboards/switchplate/southpaw_65/southpaw_65.c
Normal file
30
keyboards/switchplate/southpaw_65/southpaw_65.c
Normal file
@@ -0,0 +1,30 @@
|
||||
/* Copyright 2019
|
||||
*
|
||||
* 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 "southpaw_65.h"
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
setPinOutput(B6);
|
||||
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
writePin(B6, !led_state.caps_lock);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
69
keyboards/switchplate/southpaw_65/southpaw_65.h
Normal file
69
keyboards/switchplate/southpaw_65/southpaw_65.h
Normal file
@@ -0,0 +1,69 @@
|
||||
/* Copyright 2019
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
#define ____ KC_NO
|
||||
|
||||
/* This a shortcut to help you visually see your layout.
|
||||
*
|
||||
* The first section contains all of the arguments representing the physical
|
||||
* layout of the board and position of the keys.
|
||||
*
|
||||
* The second converts the arguments into a two-dimensional array which
|
||||
* represents the switch matrix.
|
||||
*/
|
||||
#define LAYOUT_all( \
|
||||
K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K514, K119, \
|
||||
K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219, \
|
||||
K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319, \
|
||||
K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419, \
|
||||
K501, K502, K503, K504, K505, K506, K507, K510, K515, K516, K513, K517, K518, K519 \
|
||||
) { \
|
||||
{ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \
|
||||
{ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
|
||||
{ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319 }, \
|
||||
{ K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419 }, \
|
||||
{ K501, K502, K503, K504, K505, K506, K507, ____, ____, K510, ____, ____, K513, K514, K515, K516, K517, K518, K519 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_ansi( \
|
||||
K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, \
|
||||
K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219, \
|
||||
K301, K302, K303, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K318, K319, \
|
||||
K401, K402, K403, K404, K405, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419, \
|
||||
K501, K503, K505, K506, K507, K510, K515, K516, K513, K517, K518, K519 \
|
||||
) { \
|
||||
{ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \
|
||||
{ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
|
||||
{ K301, K302, K303, ____, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, ____, K318, K319 }, \
|
||||
{ K401, K402, K403, K404, K405, ____, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419 }, \
|
||||
{ K501, ____, K503, ____, K505, K506, K507, ____, ____, K510, ____, ____, K513, ____, K515, K516, K517, K518, K519 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_iso( \
|
||||
K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, \
|
||||
K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K219, \
|
||||
K301, K302, K303, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319, \
|
||||
K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419, \
|
||||
K501, K503, K505, K506, K507, K510, K515, K516, K513, K517, K518, K519 \
|
||||
) { \
|
||||
{ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \
|
||||
{ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, ____, K219 }, \
|
||||
{ K301, K302, K303, ____, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, K319 }, \
|
||||
{ K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, K418, K419 }, \
|
||||
{ K501, ____, K503, ____, K505, K506, K507, ____, ____, K510, ____, ____, K513, ____, K515, K516, K517, K518, K519 } \
|
||||
}
|
||||
@@ -49,7 +49,7 @@
|
||||
#else
|
||||
#include "ch.h"
|
||||
#include "hal.h"
|
||||
#include "drivers/arm/i2c_master.h"
|
||||
#include "drivers/chibios/i2c_master.h"
|
||||
#endif
|
||||
|
||||
#if defined(RGB_BACKLIGHT_DAWN60)
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
K00, K01, K02, K03, K04, K05, K20, K21, K22, K23, K24, K25, \
|
||||
K40, K41, K42, K43, K44, K45, K60, K61, K62, K63, K64, K65, \
|
||||
K10, K11, K12, K13, K14, K15, K30, K31, K32, K33, K34, K35, \
|
||||
K50, K51, K52, K53, K54, K55, K70, K71, K72, K73, K74, K75 \
|
||||
K00, K01, K02, K03, K04, K05, K40, K41, K42, K43, K44, K45,\
|
||||
K10, K11, K12, K13, K14, K15, K50, K51, K52, K53, K54, K55,\
|
||||
K20, K21, K22, K23, K24, K25, K60, K61, K62, K63, K64, K65,\
|
||||
K30, K31, K32, K33, K34, K35, K70, K71, K72, K73, K74, K75 \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05 }, \
|
||||
{ K10, K11, K12, K13, K14, K15 }, \
|
||||
{ K20, K21, K22, K23, K24, K25 }, \
|
||||
{ K30, K31, K32, K33, K34, K35 }, \
|
||||
{ K40, K41, K42, K43, K44, K45 }, \
|
||||
{ K50, K51, K52, K53, K54, K55 }, \
|
||||
{ K60, K61, K62, K63, K64, K65 }, \
|
||||
{ K70, K71, K72, K73, K74, K75 } \
|
||||
{ K00, K01, K02, K03, K04, K05 }, \
|
||||
{ K10, K11, K12, K13, K14, K15 }, \
|
||||
{ K20, K21, K22, K23, K24, K25 }, \
|
||||
{ K30, K31, K32, K33, K34, K35 }, \
|
||||
{ K40, K41, K42, K43, K44, K45 }, \
|
||||
{ K50, K51, K52, K53, K54, K55 }, \
|
||||
{ K60, K61, K62, K63, K64, K65 }, \
|
||||
{ K70, K71, K72, K73, K74, K75 } \
|
||||
}
|
||||
|
||||
|
||||
31
keyboards/xelus/snap96/config.h
Normal file
31
keyboards/xelus/snap96/config.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
// USB Device descriptor parameter
|
||||
#define VENDOR_ID 0x5845 // XE
|
||||
#define PRODUCT_ID 0x5396 // Snap96
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Xelus
|
||||
#define PRODUCT Snap96
|
||||
#define DESCRIPTION Snap96
|
||||
|
||||
// key matrix size
|
||||
#define MATRIX_ROWS 12
|
||||
#define MATRIX_COLS 10
|
||||
|
||||
// key matrix pins
|
||||
#define MATRIX_ROW_PINS { B2, B1, B0, C7, F6, F7, B3, D1, D2, D7, B6, C6 }
|
||||
#define MATRIX_COL_PINS { E6, D5, B7, D0, F5, D3, B4, B5, D4, D6 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
// COL2ROW or ROW2COL
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
// Set 0 if debouncing isn't needed
|
||||
#define DEBOUNCE 5
|
||||
|
||||
// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
// Locking resynchronize hack
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
22
keyboards/xelus/snap96/keymaps/default/keymap.c
Normal file
22
keyboards/xelus/snap96/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,22 @@
|
||||
// Default layout for Snap96
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_PSCR, KC_SLCK, KC_HOME, KC_END,
|
||||
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_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
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_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user