Merge remote-tracking branch 'upstream/master'
commit
9240f27ba9
|
@ -26,4 +26,3 @@ ENV keymap=default
|
||||||
|
|
||||||
VOLUME /qmk
|
VOLUME /qmk
|
||||||
WORKDIR /qmk
|
WORKDIR /qmk
|
||||||
CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}
|
|
||||||
|
|
21
Makefile
21
Makefile
|
@ -485,6 +485,7 @@ $(SUBPROJECTS): %: %-allkm
|
||||||
|
|
||||||
# Let's match everything, we handle all the rule parsing ourselves
|
# Let's match everything, we handle all the rule parsing ourselves
|
||||||
.PHONY: %
|
.PHONY: %
|
||||||
|
ifndef SKIP_GIT
|
||||||
%:
|
%:
|
||||||
# Check if we have the CMP tool installed
|
# Check if we have the CMP tool installed
|
||||||
cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
|
cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
|
||||||
|
@ -507,6 +508,22 @@ $(SUBPROJECTS): %: %-allkm
|
||||||
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
|
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
|
||||||
$(foreach TEST,$(TESTS),$(RUN_TEST))
|
$(foreach TEST,$(TESTS),$(RUN_TEST))
|
||||||
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
|
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
|
||||||
|
else
|
||||||
|
%:
|
||||||
|
# Check if we have the CMP tool installed
|
||||||
|
cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
|
||||||
|
rm -f $(ERROR_FILE) > /dev/null 2>&1
|
||||||
|
$(eval $(call PARSE_RULE,$@))
|
||||||
|
$(eval $(call SET_SILENT_MODE))
|
||||||
|
# Run all the commands in the same shell, notice the + at the first line
|
||||||
|
# it has to be there to allow parallel execution of the submake
|
||||||
|
# This always tries to compile everything, even if error occurs in the middle
|
||||||
|
# But we return the error code at the end, to trigger travis failures
|
||||||
|
$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))
|
||||||
|
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
|
||||||
|
$(foreach TEST,$(TESTS),$(RUN_TEST))
|
||||||
|
if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi;
|
||||||
|
endif
|
||||||
|
|
||||||
# All should compile everything
|
# All should compile everything
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
|
@ -526,7 +543,11 @@ test: test-all
|
||||||
test-clean: test-all-clean
|
test-clean: test-all-clean
|
||||||
|
|
||||||
# Generate the version.h file
|
# Generate the version.h file
|
||||||
|
ifndef SKIP_GIT
|
||||||
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
|
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
|
||||||
|
else
|
||||||
|
GIT_VERSION := NA
|
||||||
|
endif
|
||||||
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
|
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
|
||||||
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
|
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
|
||||||
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
|
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
|
||||||
|
|
|
@ -131,6 +131,14 @@ ifndef CUSTOM_MATRIX
|
||||||
SRC += $(QUANTUM_DIR)/matrix.c
|
SRC += $(QUANTUM_DIR)/matrix.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
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
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
ifeq ($(strip $(MIDI_ENABLE)), yes)
|
||||||
OPT_DEFS += -DMIDI_ENABLE
|
OPT_DEFS += -DMIDI_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
||||||
|
@ -174,12 +182,26 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
|
||||||
endif
|
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 $(SERIAL_LINK_ENABLE)), yes)
|
ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
|
||||||
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
|
SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
|
||||||
OPT_DEFS += $(SERIAL_DEFS)
|
OPT_DEFS += $(SERIAL_DEFS)
|
||||||
VAPTH += $(SERIAL_PATH)
|
VAPTH += $(SERIAL_PATH)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(strip $(VARIABLE_TRACE)),)
|
||||||
|
SRC += $(QUANTUM_DIR)/variable_trace.c
|
||||||
|
OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
|
||||||
|
ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
|
||||||
|
OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Optimize size but this may cause error "relocation truncated to fit"
|
# Optimize size but this may cause error "relocation truncated to fit"
|
||||||
#EXTRALDFLAGS = -Wl,--relax
|
#EXTRALDFLAGS = -Wl,--relax
|
||||||
|
|
||||||
|
@ -191,6 +213,7 @@ endif
|
||||||
VPATH += $(KEYBOARD_PATH)
|
VPATH += $(KEYBOARD_PATH)
|
||||||
VPATH += $(COMMON_VPATH)
|
VPATH += $(COMMON_VPATH)
|
||||||
|
|
||||||
|
include $(TMK_PATH)/protocol.mk
|
||||||
|
|
||||||
include $(TMK_PATH)/common.mk
|
include $(TMK_PATH)/common.mk
|
||||||
SRC += $(TMK_COMMON_SRC)
|
SRC += $(TMK_COMMON_SRC)
|
||||||
|
|
|
@ -23,4 +23,5 @@ COMMON_VPATH += $(QUANTUM_PATH)
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
|
COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/audio
|
COMMON_VPATH += $(QUANTUM_PATH)/audio
|
||||||
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
|
COMMON_VPATH += $(QUANTUM_PATH)/process_keycode
|
||||||
|
COMMON_VPATH += $(QUANTUM_PATH)/api
|
||||||
COMMON_VPATH += $(SERIAL_PATH)
|
COMMON_VPATH += $(SERIAL_PATH)
|
|
@ -84,7 +84,7 @@ KC_PAUSE KC_PAUS 48 Keyboard Pause1
|
||||||
KC_INSERT KC_INS 49 Keyboard Insert1
|
KC_INSERT KC_INS 49 Keyboard Insert1
|
||||||
KC_HOME 4A Keyboard Home1
|
KC_HOME 4A Keyboard Home1
|
||||||
KC_PGUP 4B Keyboard PageUp1
|
KC_PGUP 4B Keyboard PageUp1
|
||||||
KC_DELETE KC_DELETE 4C Keyboard Delete Forward
|
KC_DELETE KC_DEL 4C Keyboard Delete Forward
|
||||||
KC_END 4D Keyboard End1
|
KC_END 4D Keyboard End1
|
||||||
KC_PGDOWN KC_PGDN 4E Keyboard PageDown1
|
KC_PGDOWN KC_PGDN 4E Keyboard PageDown1
|
||||||
KC_RIGHT KC_RGHT 4F Keyboard RightArrow1
|
KC_RIGHT KC_RGHT 4F Keyboard RightArrow1
|
||||||
|
|
|
@ -67,7 +67,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define RGB_DI_PIN E2
|
#define RGB_DI_PIN E2
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 8 // Number of LEDs
|
#define RGBLED_NUM 8 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
ifndef MAKEFILE_INCLUDED
|
||||||
|
include ../../Makefile
|
||||||
|
endif
|
|
@ -0,0 +1 @@
|
||||||
|
#include "atreus62.h"
|
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef ATREUS62_H
|
||||||
|
#define ATREUS62_H
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
void promicro_bootloader_jmp(bool program);
|
||||||
|
|
||||||
|
// This a shortcut to help you visually see your layout.
|
||||||
|
// The first section contains all of the arguements
|
||||||
|
// The second converts the arguments into a two-dimensional array
|
||||||
|
#define KEYMAP( \
|
||||||
|
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \
|
||||||
|
{ k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \
|
||||||
|
{ k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \
|
||||||
|
{ k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \
|
||||||
|
{ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,83 @@
|
||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <wakojun@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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CONFIG_H
|
||||||
|
#define CONFIG_H
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x6062
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Profet
|
||||||
|
#define PRODUCT Atreus62
|
||||||
|
#define DESCRIPTION q.m.k. keyboard firmware for Atreus62
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 5
|
||||||
|
#define MATRIX_COLS 13
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS { D2, D3, D1, D0, D4 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7, C6 }
|
||||||
|
|
||||||
|
#define CATERINA_BOOTLOADER
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION ROW2COL
|
||||||
|
|
||||||
|
/* 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 DEBOUNCING_DELAY 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
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,71 @@
|
||||||
|
// this is the style you want to emulate.
|
||||||
|
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||||
|
|
||||||
|
#include "atreus62.h"
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
#define _DEFAULT 0
|
||||||
|
#define _NAV 1
|
||||||
|
#define _RESET 2
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_DEFAULT] = { /* qwerty */
|
||||||
|
{ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS },
|
||||||
|
{ KC_BSLS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC },
|
||||||
|
{ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, 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_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LBRC },
|
||||||
|
{ KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(_NAV),KC_BSPC, KC_ENT, KC_SPC, KC_EQL, KC_MINS, KC_QUOT, KC_ENT, KC_RGUI }
|
||||||
|
},
|
||||||
|
|
||||||
|
[_NAV] = {
|
||||||
|
{ TO(_DEFAULT), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 },
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS },
|
||||||
|
{ TO(_RESET), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
|
||||||
|
},
|
||||||
|
|
||||||
|
[_RESET] = {
|
||||||
|
{ TO(_DEFAULT), KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO },
|
||||||
|
{ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO },
|
||||||
|
{ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO },
|
||||||
|
{ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO },
|
||||||
|
{ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , RESET }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[_TRNS] = {
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
|
||||||
|
{ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch (id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
|
@ -0,0 +1,362 @@
|
||||||
|
/*
|
||||||
|
pins_arduino.h - Pin definition functions for Arduino
|
||||||
|
Part of Arduino - http://www.arduino.cc/
|
||||||
|
|
||||||
|
Copyright (c) 2007 David A. Mellis
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General
|
||||||
|
Public License along with this library; if not, write to the
|
||||||
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||||
|
Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef Pins_Arduino_h
|
||||||
|
#define Pins_Arduino_h
|
||||||
|
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
|
||||||
|
// Workaround for wrong definitions in "iom32u4.h".
|
||||||
|
// This should be fixed in the AVR toolchain.
|
||||||
|
#undef UHCON
|
||||||
|
#undef UHINT
|
||||||
|
#undef UHIEN
|
||||||
|
#undef UHADDR
|
||||||
|
#undef UHFNUM
|
||||||
|
#undef UHFNUML
|
||||||
|
#undef UHFNUMH
|
||||||
|
#undef UHFLEN
|
||||||
|
#undef UPINRQX
|
||||||
|
#undef UPINTX
|
||||||
|
#undef UPNUM
|
||||||
|
#undef UPRST
|
||||||
|
#undef UPCONX
|
||||||
|
#undef UPCFG0X
|
||||||
|
#undef UPCFG1X
|
||||||
|
#undef UPSTAX
|
||||||
|
#undef UPCFG2X
|
||||||
|
#undef UPIENX
|
||||||
|
#undef UPDATX
|
||||||
|
#undef TCCR2A
|
||||||
|
#undef WGM20
|
||||||
|
#undef WGM21
|
||||||
|
#undef COM2B0
|
||||||
|
#undef COM2B1
|
||||||
|
#undef COM2A0
|
||||||
|
#undef COM2A1
|
||||||
|
#undef TCCR2B
|
||||||
|
#undef CS20
|
||||||
|
#undef CS21
|
||||||
|
#undef CS22
|
||||||
|
#undef WGM22
|
||||||
|
#undef FOC2B
|
||||||
|
#undef FOC2A
|
||||||
|
#undef TCNT2
|
||||||
|
#undef TCNT2_0
|
||||||
|
#undef TCNT2_1
|
||||||
|
#undef TCNT2_2
|
||||||
|
#undef TCNT2_3
|
||||||
|
#undef TCNT2_4
|
||||||
|
#undef TCNT2_5
|
||||||
|
#undef TCNT2_6
|
||||||
|
#undef TCNT2_7
|
||||||
|
#undef OCR2A
|
||||||
|
#undef OCR2_0
|
||||||
|
#undef OCR2_1
|
||||||
|
#undef OCR2_2
|
||||||
|
#undef OCR2_3
|
||||||
|
#undef OCR2_4
|
||||||
|
#undef OCR2_5
|
||||||
|
#undef OCR2_6
|
||||||
|
#undef OCR2_7
|
||||||
|
#undef OCR2B
|
||||||
|
#undef OCR2_0
|
||||||
|
#undef OCR2_1
|
||||||
|
#undef OCR2_2
|
||||||
|
#undef OCR2_3
|
||||||
|
#undef OCR2_4
|
||||||
|
#undef OCR2_5
|
||||||
|
#undef OCR2_6
|
||||||
|
#undef OCR2_7
|
||||||
|
|
||||||
|
#define NUM_DIGITAL_PINS 30
|
||||||
|
#define NUM_ANALOG_INPUTS 12
|
||||||
|
|
||||||
|
#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0)
|
||||||
|
#define TXLED0 PORTD |= (1<<5)
|
||||||
|
#define TXLED1 PORTD &= ~(1<<5)
|
||||||
|
#define RXLED0 PORTB |= (1<<0)
|
||||||
|
#define RXLED1 PORTB &= ~(1<<0)
|
||||||
|
|
||||||
|
static const uint8_t SDA = 2;
|
||||||
|
static const uint8_t SCL = 3;
|
||||||
|
#define LED_BUILTIN 13
|
||||||
|
|
||||||
|
// Map SPI port to 'new' pins D14..D17
|
||||||
|
static const uint8_t SS = 17;
|
||||||
|
static const uint8_t MOSI = 16;
|
||||||
|
static const uint8_t MISO = 14;
|
||||||
|
static const uint8_t SCK = 15;
|
||||||
|
|
||||||
|
// Mapping of analog pins as digital I/O
|
||||||
|
// A6-A11 share with digital pins
|
||||||
|
static const uint8_t ADC0 = 18;
|
||||||
|
static const uint8_t ADC1 = 19;
|
||||||
|
static const uint8_t ADC2 = 20;
|
||||||
|
static const uint8_t ADC3 = 21;
|
||||||
|
static const uint8_t ADC4 = 22;
|
||||||
|
static const uint8_t ADC5 = 23;
|
||||||
|
static const uint8_t ADC6 = 24; // D4
|
||||||
|
static const uint8_t ADC7 = 25; // D6
|
||||||
|
static const uint8_t ADC8 = 26; // D8
|
||||||
|
static const uint8_t ADC9 = 27; // D9
|
||||||
|
static const uint8_t ADC10 = 28; // D10
|
||||||
|
static const uint8_t ADC11 = 29; // D12
|
||||||
|
|
||||||
|
#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0))
|
||||||
|
#define digitalPinToPCICRbit(p) 0
|
||||||
|
#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0))
|
||||||
|
#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4))))))
|
||||||
|
|
||||||
|
// __AVR_ATmega32U4__ has an unusual mapping of pins to channels
|
||||||
|
extern const uint8_t PROGMEM analog_pin_to_channel_PGM[];
|
||||||
|
#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) )
|
||||||
|
|
||||||
|
#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT)))))
|
||||||
|
|
||||||
|
#ifdef ARDUINO_MAIN
|
||||||
|
|
||||||
|
// On the Arduino board, digital pins are also used
|
||||||
|
// for the analog output (software PWM). Analog input
|
||||||
|
// pins are a separate set.
|
||||||
|
|
||||||
|
// ATMEL ATMEGA32U4 / ARDUINO LEONARDO
|
||||||
|
//
|
||||||
|
// D0 PD2 RXD1/INT2
|
||||||
|
// D1 PD3 TXD1/INT3
|
||||||
|
// D2 PD1 SDA SDA/INT1
|
||||||
|
// D3# PD0 PWM8/SCL OC0B/SCL/INT0
|
||||||
|
// D4 A6 PD4 ADC8
|
||||||
|
// D5# PC6 ??? OC3A/#OC4A
|
||||||
|
// D6# A7 PD7 FastPWM #OC4D/ADC10
|
||||||
|
// D7 PE6 INT6/AIN0
|
||||||
|
//
|
||||||
|
// D8 A8 PB4 ADC11/PCINT4
|
||||||
|
// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5
|
||||||
|
// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6
|
||||||
|
// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7
|
||||||
|
// D12 A11 PD6 T1/#OC4D/ADC9
|
||||||
|
// D13# PC7 PWM10 CLK0/OC4A
|
||||||
|
//
|
||||||
|
// A0 D18 PF7 ADC7
|
||||||
|
// A1 D19 PF6 ADC6
|
||||||
|
// A2 D20 PF5 ADC5
|
||||||
|
// A3 D21 PF4 ADC4
|
||||||
|
// A4 D22 PF1 ADC1
|
||||||
|
// A5 D23 PF0 ADC0
|
||||||
|
//
|
||||||
|
// New pins D14..D17 to map SPI port to digital pins
|
||||||
|
//
|
||||||
|
// MISO D14 PB3 MISO,PCINT3
|
||||||
|
// SCK D15 PB1 SCK,PCINT1
|
||||||
|
// MOSI D16 PB2 MOSI,PCINT2
|
||||||
|
// SS D17 PB0 RXLED,SS/PCINT0
|
||||||
|
//
|
||||||
|
// Connected LEDs on board for TX and RX
|
||||||
|
// TXLED D24 PD5 XCK1
|
||||||
|
// RXLED D17 PB0
|
||||||
|
// HWB PE2 HWB
|
||||||
|
|
||||||
|
// these arrays map port names (e.g. port B) to the
|
||||||
|
// appropriate addresses for various functions (e.g. reading
|
||||||
|
// and writing)
|
||||||
|
const uint16_t PROGMEM port_to_mode_PGM[] = {
|
||||||
|
NOT_A_PORT,
|
||||||
|
NOT_A_PORT,
|
||||||
|
(uint16_t) &DDRB,
|
||||||
|
(uint16_t) &DDRC,
|
||||||
|
(uint16_t) &DDRD,
|
||||||
|
(uint16_t) &DDRE,
|
||||||
|
(uint16_t) &DDRF,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM port_to_output_PGM[] = {
|
||||||
|
NOT_A_PORT,
|
||||||
|
NOT_A_PORT,
|
||||||
|
(uint16_t) &PORTB,
|
||||||
|
(uint16_t) &PORTC,
|
||||||
|
(uint16_t) &PORTD,
|
||||||
|
(uint16_t) &PORTE,
|
||||||
|
(uint16_t) &PORTF,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM port_to_input_PGM[] = {
|
||||||
|
NOT_A_PORT,
|
||||||
|
NOT_A_PORT,
|
||||||
|
(uint16_t) &PINB,
|
||||||
|
(uint16_t) &PINC,
|
||||||
|
(uint16_t) &PIND,
|
||||||
|
(uint16_t) &PINE,
|
||||||
|
(uint16_t) &PINF,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
|
||||||
|
PD, // D0 - PD2
|
||||||
|
PD, // D1 - PD3
|
||||||
|
PD, // D2 - PD1
|
||||||
|
PD, // D3 - PD0
|
||||||
|
PD, // D4 - PD4
|
||||||
|
PC, // D5 - PC6
|
||||||
|
PD, // D6 - PD7
|
||||||
|
PE, // D7 - PE6
|
||||||
|
|
||||||
|
PB, // D8 - PB4
|
||||||
|
PB, // D9 - PB5
|
||||||
|
PB, // D10 - PB6
|
||||||
|
PB, // D11 - PB7
|
||||||
|
PD, // D12 - PD6
|
||||||
|
PC, // D13 - PC7
|
||||||
|
|
||||||
|
PB, // D14 - MISO - PB3
|
||||||
|
PB, // D15 - SCK - PB1
|
||||||
|
PB, // D16 - MOSI - PB2
|
||||||
|
PB, // D17 - SS - PB0
|
||||||
|
|
||||||
|
PF, // D18 - A0 - PF7
|
||||||
|
PF, // D19 - A1 - PF6
|
||||||
|
PF, // D20 - A2 - PF5
|
||||||
|
PF, // D21 - A3 - PF4
|
||||||
|
PF, // D22 - A4 - PF1
|
||||||
|
PF, // D23 - A5 - PF0
|
||||||
|
|
||||||
|
PD, // D24 - PD5
|
||||||
|
PD, // D25 / D6 - A7 - PD7
|
||||||
|
PB, // D26 / D8 - A8 - PB4
|
||||||
|
PB, // D27 / D9 - A9 - PB5
|
||||||
|
PB, // D28 / D10 - A10 - PB6
|
||||||
|
PD, // D29 / D12 - A11 - PD6
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
|
||||||
|
_BV(2), // D0 - PD2
|
||||||
|
_BV(3), // D1 - PD3
|
||||||
|
_BV(1), // D2 - PD1
|
||||||
|
_BV(0), // D3 - PD0
|
||||||
|
_BV(4), // D4 - PD4
|
||||||
|
_BV(6), // D5 - PC6
|
||||||
|
_BV(7), // D6 - PD7
|
||||||
|
_BV(6), // D7 - PE6
|
||||||
|
|
||||||
|
_BV(4), // D8 - PB4
|
||||||
|
_BV(5), // D9 - PB5
|
||||||
|
_BV(6), // D10 - PB6
|
||||||
|
_BV(7), // D11 - PB7
|
||||||
|
_BV(6), // D12 - PD6
|
||||||
|
_BV(7), // D13 - PC7
|
||||||
|
|
||||||
|
_BV(3), // D14 - MISO - PB3
|
||||||
|
_BV(1), // D15 - SCK - PB1
|
||||||
|
_BV(2), // D16 - MOSI - PB2
|
||||||
|
_BV(0), // D17 - SS - PB0
|
||||||
|
|
||||||
|
_BV(7), // D18 - A0 - PF7
|
||||||
|
_BV(6), // D19 - A1 - PF6
|
||||||
|
_BV(5), // D20 - A2 - PF5
|
||||||
|
_BV(4), // D21 - A3 - PF4
|
||||||
|
_BV(1), // D22 - A4 - PF1
|
||||||
|
_BV(0), // D23 - A5 - PF0
|
||||||
|
|
||||||
|
_BV(5), // D24 - PD5
|
||||||
|
_BV(7), // D25 / D6 - A7 - PD7
|
||||||
|
_BV(4), // D26 / D8 - A8 - PB4
|
||||||
|
_BV(5), // D27 / D9 - A9 - PB5
|
||||||
|
_BV(6), // D28 / D10 - A10 - PB6
|
||||||
|
_BV(6), // D29 / D12 - A11 - PD6
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
TIMER0B, /* 3 */
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
TIMER3A, /* 5 */
|
||||||
|
TIMER4D, /* 6 */
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
TIMER1A, /* 9 */
|
||||||
|
TIMER1B, /* 10 */
|
||||||
|
TIMER0A, /* 11 */
|
||||||
|
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
TIMER4A, /* 13 */
|
||||||
|
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
NOT_ON_TIMER,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM analog_pin_to_channel_PGM[] = {
|
||||||
|
7, // A0 PF7 ADC7
|
||||||
|
6, // A1 PF6 ADC6
|
||||||
|
5, // A2 PF5 ADC5
|
||||||
|
4, // A3 PF4 ADC4
|
||||||
|
1, // A4 PF1 ADC1
|
||||||
|
0, // A5 PF0 ADC0
|
||||||
|
8, // A6 D4 PD4 ADC8
|
||||||
|
10, // A7 D6 PD7 ADC10
|
||||||
|
11, // A8 D8 PB4 ADC11
|
||||||
|
12, // A9 D9 PB5 ADC12
|
||||||
|
13, // A10 D10 PB6 ADC13
|
||||||
|
9 // A11 D12 PD6 ADC9
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* ARDUINO_MAIN */
|
||||||
|
|
||||||
|
// These serial port names are intended to allow libraries and architecture-neutral
|
||||||
|
// sketches to automatically default to the correct port name for a particular type
|
||||||
|
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
|
||||||
|
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
|
||||||
|
//
|
||||||
|
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
|
||||||
|
//
|
||||||
|
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
|
||||||
|
//
|
||||||
|
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
|
||||||
|
//
|
||||||
|
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
|
||||||
|
//
|
||||||
|
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
|
||||||
|
// pins are NOT connected to anything by default.
|
||||||
|
#define SERIAL_PORT_MONITOR Serial
|
||||||
|
#define SERIAL_PORT_USBVIRTUAL Serial
|
||||||
|
#define SERIAL_PORT_HARDWARE Serial1
|
||||||
|
#define SERIAL_PORT_HARDWARE_OPEN Serial1
|
||||||
|
|
||||||
|
#endif /* Pins_Arduino_h */
|
|
@ -0,0 +1,10 @@
|
||||||
|
atreus62 keyboard firmware
|
||||||
|
======================
|
||||||
|
|
||||||
|
This firmware is for the atreus62 keyboard.
|
||||||
|
|
||||||
|
This version utilizes a Pro Micro for its controller and has a 62 key layout.
|
||||||
|
|
||||||
|
https://github.com/profet23/atreus62
|
||||||
|
|
||||||
|
TODO: More information
|
|
@ -0,0 +1,66 @@
|
||||||
|
|
||||||
|
# MCU name
|
||||||
|
#MCU = at90usb1287
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
# Boot Section Size in *bytes*
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
#BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||||
|
#MIDI_ENABLE ?= no # MIDI controls
|
||||||
|
UNICODE_ENABLE ?= yes # Unicode
|
||||||
|
#BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
|
@ -26,7 +26,7 @@
|
||||||
/* Underlight configuration
|
/* Underlight configuration
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN B2
|
#define RGB_DI_PIN B2
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 14 // Number of LEDs
|
#define RGBLED_NUM 14 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
/* Underlight configuration
|
/* Underlight configuration
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN D7
|
#define RGB_DI_PIN D7
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 14 // Number of LEDs
|
#define RGBLED_NUM 14 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -140,7 +140,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
/* Underlight configuration
|
/* Underlight configuration
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN E6
|
#define RGB_DI_PIN E6
|
||||||
//#define RGBLIGHT_TIMER
|
//#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 4 // Number of LEDs
|
#define RGBLED_NUM 4 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include "../../config.h"
|
#include "../../config.h"
|
||||||
|
|
||||||
// place overrides here
|
// place overrides here
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
|
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 2
|
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 2
|
||||||
|
|
|
@ -70,7 +70,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
/* Underlight configuration
|
/* Underlight configuration
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN F6
|
#define RGB_DI_PIN F6
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 4 // Number of LEDs
|
#define RGBLED_NUM 4 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
|
#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
|
||||||
#define KEYBOARDS_ERGODOX_CONFIG_H_
|
#define KEYBOARDS_ERGODOX_CONFIG_H_
|
||||||
|
|
||||||
#define MOUSEKEY_DELAY 100
|
|
||||||
#define MOUSEKEY_INTERVAL 20
|
#define MOUSEKEY_INTERVAL 20
|
||||||
#define MOUSEKEY_MAX_SPEED 3
|
#define MOUSEKEY_DELAY 0
|
||||||
#define MOUSEKEY_TIME_TO_MAX 10
|
#define MOUSEKEY_TIME_TO_MAX 5
|
||||||
|
#define MOUSEKEY_MAX_SPEED 2
|
||||||
|
#define MOUSEKEY_WHEEL_DELAY 0
|
||||||
|
|
||||||
#define TAPPING_TOGGLE 1
|
#define TAPPING_TOGGLE 1
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
RGBLIGHT_ENABLE ?= yes
|
||||||
|
MIDI_ENABLE ?= yes
|
||||||
|
|
||||||
ifndef MAKEFILE_INCLUDED
|
ifndef MAKEFILE_INCLUDED
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
endif
|
endif
|
|
@ -21,6 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
/* USB Device descriptor parameter */
|
/* USB Device descriptor parameter */
|
||||||
#define VENDOR_ID 0xFEED
|
#define VENDOR_ID 0xFEED
|
||||||
#define PRODUCT_ID 0x1307
|
#define PRODUCT_ID 0x1307
|
||||||
|
@ -39,6 +41,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define LED_BRIGHTNESS_LO 15
|
#define LED_BRIGHTNESS_LO 15
|
||||||
#define LED_BRIGHTNESS_HI 255
|
#define LED_BRIGHTNESS_HI 255
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN D7
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 15 // Number of LEDs
|
||||||
|
#define RGBLIGHT_HUE_STEP 12
|
||||||
|
#define RGBLIGHT_SAT_STEP 255
|
||||||
|
#define RGBLIGHT_VAL_STEP 12
|
||||||
|
|
||||||
|
#define RGB_MIDI
|
||||||
|
#define RGBW_BB_TWI
|
||||||
|
|
||||||
|
|
||||||
/* Set 0 if debouncing isn't needed */
|
/* Set 0 if debouncing isn't needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
|
@ -16,10 +16,10 @@ void matrix_init_kb(void) {
|
||||||
// unused pins - C7, D4, D5, D7, E6
|
// unused pins - C7, D4, D5, D7, E6
|
||||||
// set as input with internal pull-ip enabled
|
// set as input with internal pull-ip enabled
|
||||||
DDRC &= ~(1<<7);
|
DDRC &= ~(1<<7);
|
||||||
DDRD &= ~(1<<7 | 1<<5 | 1<<4);
|
DDRD &= ~(1<<5 | 1<<4);
|
||||||
DDRE &= ~(1<<6);
|
DDRE &= ~(1<<6);
|
||||||
PORTC |= (1<<7);
|
PORTC |= (1<<7);
|
||||||
PORTD |= (1<<7 | 1<<5 | 1<<4);
|
PORTD |= (1<<5 | 1<<4);
|
||||||
PORTE |= (1<<6);
|
PORTE |= (1<<6);
|
||||||
|
|
||||||
ergodox_blink_all_leds();
|
ergodox_blink_all_leds();
|
||||||
|
@ -51,6 +51,10 @@ uint8_t init_mcp23018(void) {
|
||||||
mcp23018_status = 0x20;
|
mcp23018_status = 0x20;
|
||||||
|
|
||||||
// I2C subsystem
|
// I2C subsystem
|
||||||
|
|
||||||
|
uint8_t sreg_prev;
|
||||||
|
sreg_prev=SREG;
|
||||||
|
cli();
|
||||||
if (i2c_initialized == 0) {
|
if (i2c_initialized == 0) {
|
||||||
i2c_init(); // on pins D(1,0)
|
i2c_init(); // on pins D(1,0)
|
||||||
i2c_initialized++;
|
i2c_initialized++;
|
||||||
|
@ -79,6 +83,8 @@ uint8_t init_mcp23018(void) {
|
||||||
out:
|
out:
|
||||||
i2c_stop();
|
i2c_stop();
|
||||||
|
|
||||||
|
SREG=sreg_prev;
|
||||||
|
|
||||||
return mcp23018_status;
|
return mcp23018_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ void matrix_init(void)
|
||||||
matrix_scan_count = 0;
|
matrix_scan_count = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
matrix_init_kb();
|
matrix_init_quantum();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
||||||
#
|
#
|
||||||
|
|
||||||
SLEEP_LED_ENABLE = no
|
SLEEP_LED_ENABLE = no
|
||||||
|
API_SYSEX_ENABLE ?= yes
|
||||||
|
RGBLIGHT_ENABLE ?= yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|
|
@ -38,7 +38,6 @@ void init_serial_link_hal(void) {
|
||||||
// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced
|
// Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced
|
||||||
// Which will reduce the brightness range
|
// Which will reduce the brightness range
|
||||||
#define PRESCALAR_DEFINE 0
|
#define PRESCALAR_DEFINE 0
|
||||||
#ifdef VISUALIZER_ENABLE
|
|
||||||
void lcd_backlight_hal_init(void) {
|
void lcd_backlight_hal_init(void) {
|
||||||
// Setup Backlight
|
// Setup Backlight
|
||||||
SIM->SCGC6 |= SIM_SCGC6_FTM0;
|
SIM->SCGC6 |= SIM_SCGC6_FTM0;
|
||||||
|
@ -76,7 +75,6 @@ void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) {
|
||||||
CHANNEL_GREEN.CnV = g;
|
CHANNEL_GREEN.CnV = g;
|
||||||
CHANNEL_BLUE.CnV = b;
|
CHANNEL_BLUE.CnV = b;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
__attribute__ ((weak))
|
__attribute__ ((weak))
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
|
@ -92,6 +90,10 @@ void matrix_init_kb(void) {
|
||||||
// runs once when the firmware starts up
|
// runs once when the firmware starts up
|
||||||
|
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
|
// The backlight always has to be initialized, otherwise it will stay lit
|
||||||
|
#ifndef VISUALIZER_ENABLE
|
||||||
|
lcd_backlight_hal_init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
void matrix_scan_kb(void) {
|
||||||
|
|
|
@ -21,29 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
void led_set(uint8_t usb_led) {
|
void led_set(uint8_t usb_led) {
|
||||||
// The LCD backlight functionality conflicts with this simple
|
//TODO: Add led emulation if there's no customized visualization
|
||||||
// red backlight
|
|
||||||
#if !defined(LCD_BACKLIGHT_ENABLE) && defined(STATUS_LED_ENABLE)
|
|
||||||
// PTC1: LCD Backlight Red(0:on/1:off)
|
|
||||||
GPIOC->PDDR |= (1<<1);
|
|
||||||
PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
|
||||||
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
|
||||||
GPIOC->PCOR |= (1<<1);
|
|
||||||
} else {
|
|
||||||
GPIOC->PSOR |= (1<<1);
|
|
||||||
}
|
|
||||||
#elif !defined(LCD_BACKLIGHT_ENABLE)
|
|
||||||
(void)usb_led;
|
(void)usb_led;
|
||||||
GPIOC->PDDR |= (1<<1);
|
|
||||||
PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
|
||||||
GPIOC->PSOR |= (1<<1);
|
|
||||||
GPIOC->PDDR |= (1<<2);
|
|
||||||
PORTC->PCR[2] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
|
||||||
GPIOC->PSOR |= (1<<2);
|
|
||||||
GPIOC->PDDR |= (1<<3);
|
|
||||||
PORTC->PCR[3] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1);
|
|
||||||
GPIOC->PSOR |= (1<<3);
|
|
||||||
#else
|
|
||||||
(void)usb_led;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,8 @@ VISUALIZER_ENABLE ?= no #temporarily disabled to make everything compile
|
||||||
LCD_ENABLE ?= yes
|
LCD_ENABLE ?= yes
|
||||||
LED_ENABLE ?= yes
|
LED_ENABLE ?= yes
|
||||||
LCD_BACKLIGHT_ENABLE ?= yes
|
LCD_BACKLIGHT_ENABLE ?= yes
|
||||||
|
MIDI_ENABLE = no
|
||||||
|
RGBLIGHT_ENABLE = no
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Having a file like this allows you to override Makefile definitions
|
||||||
|
# for your own particular keymap
|
||||||
|
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
Binary file not shown.
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
|
@ -1,21 +1,23 @@
|
||||||
#include "ergodox.h"
|
#include "ergodox.h"
|
||||||
#include "debug.h"
|
|
||||||
#include "action_layer.h"
|
|
||||||
#include "keymap_bepo.h"
|
#include "keymap_bepo.h"
|
||||||
|
#include "keymap_french.h"
|
||||||
|
|
||||||
#define BASE 0 // default layer
|
// keymaps
|
||||||
#define QWER 1 // qwerty compat layer
|
#define BEPO 0 // default layer, for bepo compatible systems
|
||||||
#define SQWER 2 // shifted qwerty compat layer
|
#define QW_B 1 // bepo to qwerty base compat layer, for qwerty systems
|
||||||
#define AQWER 3 // alted qwerty compat layer
|
#define QW_A 2 // bepo with altgr key to qwerty compat layer
|
||||||
#define FNAV 4 // function / navigation keys
|
#define QW_S 3 // bepo with shift key to qwerty compat layer
|
||||||
#define NUM 5 // numeric keypad keys
|
#define AZ_B 4 // bepo to azerty base compat layer, for azerty systems
|
||||||
#define MSE 6 // mouse keys
|
#define AZ_A 5 // bepo with altgr key to azerty compat layer
|
||||||
|
#define AZ_S 6 // bepo with shift key to azerty compat layer
|
||||||
|
#define FNAV 7 // function / navigation / mouse layer
|
||||||
|
#define NUMK 8 // numeric keypad layer
|
||||||
|
|
||||||
#define KP_00 0
|
// macros
|
||||||
#define CA_Fx 1
|
#define KP_00 0 // keypad "double 0"
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap 0: Base layer
|
/* Keymap 0: default layer
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
||||||
|
@ -26,22 +28,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
||||||
* | E_CIRC |A_GRAV| Y | X | . | K | | | | ' | Q | G | H | F | C_CEDIL|
|
* | E_CIRC |A_GRAV| Y | X | . | K | | | | ' | Q | G | H | F | C_CEDIL|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
* |QWERTY| |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
* | | | L_Num| | CA_Fx| | |
|
* | | |L_NumK| |L_NumK| | |
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
* | Space|LShift|------| |------|RShift|Enter |
|
||||||
* | | |L_FNav| |L_FNav| | |
|
* | | |L_FNav| |L_FNav| | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[BASE] = KEYMAP(
|
[BEPO] = KEYMAP(
|
||||||
// Left hand
|
// Left hand
|
||||||
BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL,
|
BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL,
|
||||||
BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC,
|
BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC,
|
||||||
BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA,
|
BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA,
|
||||||
BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB,
|
BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB,
|
||||||
TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT,
|
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
||||||
KC_ESC, MO(MSE),
|
DF(BEPO), DF(QW_B),
|
||||||
MO(NUM),
|
MO(NUMK),
|
||||||
KC_SPC, KC_LSHIFT, MO(FNAV),
|
KC_SPC, KC_LSHIFT, MO(FNAV),
|
||||||
// Right hand
|
// Right hand
|
||||||
KC_SLCK, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL,
|
KC_SLCK, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL,
|
||||||
|
@ -49,10 +51,10 @@ TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT,
|
||||||
BP_C, BP_T, BP_S, BP_R, BP_N, BP_M,
|
BP_C, BP_T, BP_S, BP_R, BP_N, BP_M,
|
||||||
KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED,
|
KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED,
|
||||||
BP_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
BP_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
||||||
KC_NO, KC_INS,
|
DF(AZ_B), DF(BEPO),
|
||||||
M(CA_Fx),
|
MO(NUMK),
|
||||||
MO(FNAV), KC_RSHIFT, KC_ENTER),
|
MO(FNAV), KC_RSHIFT, KC_ENTER),
|
||||||
/* Keymap 1: QWERTY system compatibility layer
|
/* Keymap 1: bepo to qwerty base compat layer
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
||||||
|
@ -63,33 +65,70 @@ MO(FNAV), KC_RSHIFT, KC_ENTER),
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
||||||
* | e | a | y | x | . | k | | | | ' | q | g | h | f | c |
|
* | e | a | y | x | . | k | | | | ' | q | g | h | f | c |
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
* | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
* | | | L_Num| | | | |
|
* | | |L_NumK| |L_NumK| | |
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
* | Space|LShift|------| |------|RShift|Enter |
|
||||||
* | | |L_FNav| |L_FNav| | |
|
* | | |L_FNav| |L_FNav| | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[QWER] = KEYMAP(
|
[QW_B] = KEYMAP(
|
||||||
// Left hand
|
// Left hand
|
||||||
KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL,
|
KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL,
|
||||||
KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC,
|
KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC,
|
||||||
KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA,
|
KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA,
|
||||||
KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB,
|
KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB,
|
||||||
KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT,
|
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
||||||
KC_ESC, MO(MSE),
|
KC_TRNS, KC_TRNS,
|
||||||
MO(NUM),
|
KC_TRNS,
|
||||||
KC_SPC, MO(SQWER), MO(FNAV),
|
KC_SPC, MO(QW_S), KC_TRNS,
|
||||||
// Right hand
|
// Right hand
|
||||||
KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL,
|
KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL,
|
||||||
KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
|
KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
|
||||||
KC_C, KC_T, KC_S, KC_R, KC_N, KC_M,
|
KC_C, KC_T, KC_S, KC_R, KC_N, KC_M,
|
||||||
KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C,
|
KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C,
|
||||||
MO(AQWER), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
MO(QW_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
||||||
KC_NO, KC_INS,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
MO(FNAV), MO(SQWER), KC_ENTER),
|
KC_TRNS, MO(QW_S), KC_ENTER),
|
||||||
/* Keymap 2: QWERTY shifted system compatibility layer
|
/* Keymap 2: bepo with altgr key to qwerty compat layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z |
|
||||||
|
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
||||||
|
* | w | a | u | i | € | , |------| |------| c | t | s | r | n | m |
|
||||||
|
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
||||||
|
* | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c |
|
||||||
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
|
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
||||||
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
|
* | | |L_NumK| |L_NumK| | |
|
||||||
|
* | _ |LShift|------| |------|RShift|Enter |
|
||||||
|
* | | |L_FNav| |L_FNav| | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[QW_A] = KEYMAP(
|
||||||
|
// Left hand
|
||||||
|
KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL,
|
||||||
|
KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC,
|
||||||
|
KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA,
|
||||||
|
KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB,
|
||||||
|
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_UNDS, MO(QW_S), KC_TRNS,
|
||||||
|
// Right hand
|
||||||
|
KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL,
|
||||||
|
KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
|
||||||
|
KC_C, KC_T, KC_S, KC_R, KC_N, KC_M,
|
||||||
|
KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C,
|
||||||
|
KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, MO(QW_S), KC_ENTER),
|
||||||
|
/* Keymap 3: bepo with shift key to qwerty compat layer
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | = |
|
* | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | = |
|
||||||
|
@ -100,20 +139,20 @@ MO(FNAV), MO(SQWER), KC_ENTER),
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
||||||
* | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C |
|
* | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C |
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
* | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
* | | | L_Num| | | | |
|
* | | |L_NumK| |L_NumK| | |
|
||||||
* | Space|LShift|------| |------|RShift|Enter |
|
* | Space|LShift|------| |------|RShift|Enter |
|
||||||
* | | |L_FNav| |L_FNav| | |
|
* | | |L_FNav| |L_FNav| | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[SQWER] = KEYMAP(
|
[QW_S] = KEYMAP(
|
||||||
// Left hand
|
// Left hand
|
||||||
KC_HASH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
|
KC_HASH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
|
||||||
KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS,
|
KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS,
|
||||||
S(KC_W), S(KC_A), S(KC_U), S(KC_I), S(KC_E), KC_SCOLON,
|
S(KC_W), S(KC_A), S(KC_U), S(KC_I), S(KC_E), KC_SCOLON,
|
||||||
S(KC_E), S(KC_A), S(KC_Y), S(KC_X), KC_COLON, S(KC_K), S(KC_TAB),
|
S(KC_E), S(KC_A), S(KC_Y), S(KC_X), KC_COLON, S(KC_K), S(KC_TAB),
|
||||||
KC_TRNS, KC_TRNS, S(KC_LGUI), S(KC_LCTL), S(KC_LALT),
|
S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT),
|
||||||
KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
@ -126,51 +165,125 @@ KC_TRNS, KC_TRNS, S(KC_LGUI), S(KC_LCTL), S(KC_LALT),
|
||||||
KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS),
|
KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
/* Keymap 3: QWERTY alted system compatibility layer
|
/* Keymap 4: bepo to azerty base compat layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | % | b |e_acut| p | o |e_grav|Backsp| |CapsLo| ^ | v | d | l | j | z |
|
||||||
|
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
||||||
|
* | w | a | u | i | e | , |------| |------| c | t | s | r | n | m |
|
||||||
|
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
||||||
|
* | e |a_grav| y | x | . | k | | | | ' | q | g | h | f | c_cedil|
|
||||||
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
|
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
||||||
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
|
* | | |L_NumK| |L_NumK| | |
|
||||||
|
* | Space|LShift|------| |------|RShift|Enter |
|
||||||
|
* | | |L_FNav| |L_FNav| | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[AZ_B] = KEYMAP(
|
||||||
|
// Left hand
|
||||||
|
FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LPRN, FR_RPRN, KC_DEL,
|
||||||
|
FR_PERC, KC_B, FR_EACU, KC_P, KC_O, FR_EGRV, KC_BSPC,
|
||||||
|
FR_W, FR_A, KC_U, KC_I, KC_E, FR_COMM,
|
||||||
|
KC_E, FR_AGRV, KC_Y, KC_X, FR_DOT, KC_K, KC_TAB,
|
||||||
|
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_SPC, MO(AZ_S), KC_TRNS,
|
||||||
|
// Right hand
|
||||||
|
KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL,
|
||||||
|
KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z,
|
||||||
|
KC_C, KC_T, KC_S, KC_R, KC_N, FR_M,
|
||||||
|
KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED,
|
||||||
|
MO(AZ_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, MO(AZ_S), KC_ENTER),
|
||||||
|
/* Keymap 5: bepo with altgr key to azerty compat layer
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = |
|
* | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z |
|
* | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z |
|
||||||
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
||||||
* | w | a | u | i | € | , |------| |------| c | t | s | r | n | m |
|
* | w | a |u_grav| trem | € | , |------| |------| c | t | s | r | n | m |
|
||||||
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
||||||
* | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c |
|
* | / | \ | { | } | . | ~ | | | | ' | q | g | h | f | c |
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
* | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
* | | | L_Num| | | | |
|
* | | |L_NumK| |L_NumK| | |
|
||||||
* | _ |LShift|------| |------|RShift|Enter |
|
* | _ |LShift|------| |------|RShift|Enter |
|
||||||
* | | |L_FNav| |L_FNav| | |
|
* | | |L_FNav| |L_FNav| | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[AQWER] = KEYMAP(
|
[AZ_A] = KEYMAP(
|
||||||
// Left hand
|
// Left hand
|
||||||
KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL,
|
FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LBRC, FR_RBRC, KC_DEL,
|
||||||
KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC,
|
FR_PERC, FR_PIPE, FR_EACU, FR_AMP, KC_O, FR_EGRV, KC_BSPC,
|
||||||
KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA,
|
FR_W, FR_A, FR_UGRV, S(KC_LBRC), FR_EURO, FR_COMM,
|
||||||
KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB,
|
FR_SLSH, FR_BSLS, FR_LCBR, FR_RCBR, FR_DOT, FR_TILD, KC_TAB,
|
||||||
KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT,
|
KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT,
|
||||||
KC_ESC, MO(MSE),
|
KC_TRNS, KC_TRNS,
|
||||||
MO(NUM),
|
|
||||||
KC_UNDS, MO(SQWER), MO(FNAV),
|
|
||||||
// Right hand
|
|
||||||
KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL,
|
|
||||||
KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
|
|
||||||
KC_C, KC_T, KC_S, KC_R, KC_N, KC_M,
|
|
||||||
KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C,
|
|
||||||
KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
|
||||||
KC_NO, KC_INS,
|
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
MO(FNAV), MO(SQWER), KC_ENTER),
|
FR_UNDS, MO(AZ_S), KC_TRNS,
|
||||||
/* Keymap 4: function / navigation layer
|
// Right hand
|
||||||
|
KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL,
|
||||||
|
KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z,
|
||||||
|
KC_C, KC_T, KC_S, KC_R, KC_N, FR_M,
|
||||||
|
KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED,
|
||||||
|
KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, MO(AZ_S), KC_ENTER),
|
||||||
|
/* Keymap 6: bepo with shift key to azerty compat layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | ° |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | ` | B | E | P | O | E |Backsp| |CapsLo| ! | V | D | L | J | Z |
|
||||||
|
* |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------|
|
||||||
|
* | W | A | U | I | E | ; |------| |------| C | T | S | R | N | M |
|
||||||
|
* |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------|
|
||||||
|
* | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C |
|
||||||
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
|
* |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause|
|
||||||
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
|
* | | |L_NumK| |L_NumK| | |
|
||||||
|
* | Space|LShift|------| |------|RShift|Enter |
|
||||||
|
* | | |L_FNav| |L_FNav| | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[AZ_S] = KEYMAP(
|
||||||
|
// Left hand
|
||||||
|
FR_HASH, FR_1, FR_2, FR_3, FR_4, FR_5, KC_TRNS,
|
||||||
|
FR_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS,
|
||||||
|
S(FR_W), S(FR_A), S(KC_U), S(KC_I), S(KC_E), FR_SCLN,
|
||||||
|
S(KC_E), S(FR_A), S(KC_Y), S(KC_X), FR_COLN, S(KC_K), S(KC_TAB),
|
||||||
|
S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT),
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// Right hand
|
||||||
|
KC_TRNS, FR_6, FR_7, FR_8, FR_9, FR_0, FR_OVRR,
|
||||||
|
KC_TRNS, FR_EXLM, S(KC_V), S(KC_D), S(KC_L), S(KC_J), S(FR_Z),
|
||||||
|
S(KC_C), S(KC_T), S(KC_S), S(KC_R), S(KC_N), S(FR_M),
|
||||||
|
KC_TRNS, FR_QUES, S(FR_Q), S(KC_G), S(KC_H), S(KC_F), S(KC_C),
|
||||||
|
S(KC_RALT), S(KC_RCTL), S(KC_RGUI), KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
/* Keymap 7: function / navigation / mouse layer
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | | F1 | F2 | F3 | F4 | F5 |VolMut| | | F6 | F7 | F8 | F9 | F10 | |
|
* | | F1 | F2 | F3 | F4 | F5 |VolMut| | | F6 | F7 | F8 | F9 | F10 | |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | | | | | |VolDwn| | | PgUp | Home | Up | End | F11 | |
|
* | | Next |LClick| Up |RClick| WhUp |VolDwn| | | PgUp | Home | Up | End | F11 | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | |------| |------| PgDn | Left | Down | Right| F12 | |
|
* | | Prev | Left | Down | Right|WhDown|------| |------| PgDn | Left | Down | Right| F12 | |
|
||||||
* |--------+------+------+------+------+------| VolUp| | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| VolUp| | |------+------+------+------+------+--------|
|
||||||
* | | Undo | Cut | Copy | Paste| | | | | | | | | | |
|
* | | Undo | Cut | Copy | Paste| | | | | | | | | | |
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
|
@ -184,12 +297,12 @@ MO(FNAV), MO(SQWER), KC_ENTER),
|
||||||
[FNAV] = KEYMAP(
|
[FNAV] = KEYMAP(
|
||||||
// Left hand
|
// Left hand
|
||||||
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MUTE,
|
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MUTE,
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU,
|
KC_NO, KC_MS_BTN5, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_VOLU,
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN,
|
||||||
KC_NO, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_NO, KC_VOLD,
|
KC_NO, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_NO, KC_VOLD,
|
||||||
KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_NO, KC_NO,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_NO,
|
KC_TRNS,
|
||||||
KC_NO, KC_TRNS, KC_TRNS,
|
KC_NO, KC_TRNS, KC_TRNS,
|
||||||
// Right hand
|
// Right hand
|
||||||
KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
|
KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
|
||||||
|
@ -197,91 +310,52 @@ KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F12, KC_NO,
|
KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F12, KC_NO,
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
|
||||||
KC_NO, KC_NO,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_NO),
|
KC_TRNS, KC_TRNS, KC_NO),
|
||||||
/* Keymap 5: numeric layer, sends keypad codes
|
/* Keymap 8: numeric keypad layer, sends keypad codes
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | | | | | | | | | | | + | - | / | * | |
|
* | | | | | | | | | | | NumLo| / | * | - | |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | | | | | | | | | | 7 | 8 | 9 | | |
|
* | | | | | | | | | | | 7 | 8 | 9 | + | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | |------| |------| | 4 | 5 | 6 | | |
|
* | | | | | | |------| |------| | 4 | 5 | 6 | + | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | | | | | | 1 | 2 | 3 | | |
|
* | | | | | | | | | | | 1 | 2 | 3 | Enter| |
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
||||||
* | | | | | | | | | | | | | 0 | 00 | . | | |
|
* | | | | | | | | | | | | | 0 | 00 | . | Enter| |
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
|
||||||
* | | | | | | | |
|
|
||||||
* | | |------| |------| | Enter|
|
|
||||||
* | | | | | | | |
|
|
||||||
* `--------------------' `--------------------'
|
|
||||||
*/
|
|
||||||
[NUM] = KEYMAP(
|
|
||||||
// Left hand
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_TRNS,
|
|
||||||
KC_NO, KC_TRNS, KC_NO,
|
|
||||||
// Right hand
|
|
||||||
KC_NO, KC_NO, KC_KP_PLUS, KC_KP_MINUS, KC_KP_SLASH, KC_KP_ASTERISK, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_KP_7, KC_KP_8, KC_KP_9, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_NO, KC_NO,
|
|
||||||
KC_KP_0, M(KP_00), KC_KP_COMMA, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO,
|
|
||||||
KC_NO,
|
|
||||||
KC_NO, KC_TRNS, KC_KP_ENTER),
|
|
||||||
/* Keymap 6: mouse layer
|
|
||||||
*
|
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | |LClick| Up |RClick| WhUp | |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | |------| |------| | Left | Down | Right|WhDown| |
|
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
||||||
* | | | | | | | | | | | | | | | |
|
|
||||||
* `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------'
|
|
||||||
* | | | | | | | | | | | | | | | | | |
|
|
||||||
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
* `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------'
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* | | |------| |------| | |
|
* | | |------| |------| | |
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[MSE] = KEYMAP(
|
[NUMK] = KEYMAP(
|
||||||
// Left hand
|
// Left hand
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_NO, KC_TRNS,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_NO,
|
KC_TRNS,
|
||||||
KC_NO, KC_TRNS, KC_NO,
|
KC_NO, KC_TRNS, KC_TRNS,
|
||||||
// Right hand
|
// Right hand
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_NO, KC_NUMLOCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_NO,
|
||||||
KC_NO, KC_NO, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_NO,
|
KC_NO, KC_NO, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_NO,
|
||||||
KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_NO,
|
KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_NO,
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_NO,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO,
|
KC_KP_0, M(KP_00), KC_KP_COMMA, KC_KP_ENTER, KC_NO,
|
||||||
KC_NO, KC_NO,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_NO,
|
KC_TRNS,
|
||||||
KC_NO, KC_TRNS, KC_NO)
|
KC_TRNS, KC_TRNS, KC_NO)
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
{
|
{
|
||||||
switch(id) {
|
switch(id) {
|
||||||
|
// keypad "double 0"
|
||||||
case KP_00:
|
case KP_00:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
return MACRO( T(KP_0), D(KP_0), END );
|
return MACRO( T(KP_0), D(KP_0), END );
|
||||||
|
@ -289,23 +363,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
return MACRO( U(KP_0), END );
|
return MACRO( U(KP_0), END );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CA_Fx:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
layer_on(FNAV);
|
|
||||||
return MACRO( D(LALT), D(LCTL), END );
|
|
||||||
} else {
|
|
||||||
layer_off(FNAV);
|
|
||||||
return MACRO( U(LCTL), U(LALT), END );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return MACRO_NONE;
|
return MACRO_NONE;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Runs just one time when the keyboard initializes.
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
};
|
|
||||||
|
|
||||||
// Runs constantly in the background, in a loop.
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
};
|
|
||||||
|
|
|
@ -23,12 +23,12 @@ La touche "Tab" est placée comme sur la TypeMatrix 2020.
|
||||||
|
|
||||||
Meilleure symétrie et accessibilité que la TypeMatrix 2030 : les touches "W" et "%" ont dû être déplacées du côté gauche en raison du nombre de touches de l'ErgoDox, mais l'auriculaire droit ne gère maintenant que deux colonnes de touches au lieu de trois. La touche "Ê" redevient accessible sur la même rangée que les autres lettres, comme sur un clavier classique en disposition bépo. Les lettres, chiffres et symboles sont tous regroupés sur 4 lignes et 6 colonnes pour chaque main, et la première rangée de lettres à la main gauche conserve une identité visuelle "BÉPO".
|
Meilleure symétrie et accessibilité que la TypeMatrix 2030 : les touches "W" et "%" ont dû être déplacées du côté gauche en raison du nombre de touches de l'ErgoDox, mais l'auriculaire droit ne gère maintenant que deux colonnes de touches au lieu de trois. La touche "Ê" redevient accessible sur la même rangée que les autres lettres, comme sur un clavier classique en disposition bépo. Les lettres, chiffres et symboles sont tous regroupés sur 4 lignes et 6 colonnes pour chaque main, et la première rangée de lettres à la main gauche conserve une identité visuelle "BÉPO".
|
||||||
|
|
||||||
Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long).
|
Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite et d'effectuer des actions souris avec uniquement la main gauche. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long).
|
||||||
|
|
||||||
Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0".
|
Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0".
|
||||||
|
|
||||||
L'appui sur une touche permet de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle.
|
Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour des accès BIOS ou console en QWERTY.
|
||||||
|
|
||||||
TODO : couche de compatibilité pour utiliser la disposition BÉPO sur un système configuré pour un clavier AZERTY.
|
Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier AZERTY. Cette compatibilité n'est pas parfaite (pas de gestion des caractères non présents sur le clavier AZERTY, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour faire du bureau à distance vers un système Windows sans BEPO.
|
||||||
|
|
||||||
> Olivier Smedts <olivier@gid0.org>
|
> Olivier Smedts <olivier@gid0.org>
|
||||||
|
|
|
@ -7,7 +7,12 @@
|
||||||
#define SYMB 1 // symbols
|
#define SYMB 1 // symbols
|
||||||
#define MDIA 2 // media keys
|
#define MDIA 2 // media keys
|
||||||
|
|
||||||
#define EPRM M(1) // Macro 1: Reset EEPROM
|
enum custom_keycodes {
|
||||||
|
PLACEHOLDER = SAFE_RANGE, // can always be here
|
||||||
|
EPRM,
|
||||||
|
VRSN,
|
||||||
|
RGB_SLD
|
||||||
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap 0: Basic layer
|
/* Keymap 0: Basic layer
|
||||||
|
@ -17,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
|
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
|
* | BkSp | A | S | D | F | G |------| |------| H |J/Alt | K | L |; / L2|' / Cmd |
|
||||||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||||
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
@ -46,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
// right hand
|
// right hand
|
||||||
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
|
KC_H, ALT_T(KC_J), KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
|
||||||
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
|
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
|
||||||
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
|
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
|
||||||
KC_LALT, CTL_T(KC_ESC),
|
KC_LALT, CTL_T(KC_ESC),
|
||||||
|
@ -55,45 +60,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
),
|
),
|
||||||
/* Keymap 1: Symbol Layer
|
/* Keymap 1: Symbol Layer
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,---------------------------------------------------. ,--------------------------------------------------.
|
||||||
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
|
||||||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | EPRM | | | | | | | . | 0 | = | |
|
* | EPRM | | | | | | | . | 0 | = | |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `-----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | | |
|
* |Animat| | |Toggle|Solid |
|
||||||
* ,------|------|------| |------+------+------.
|
* ,------|------|------| |------+------+------.
|
||||||
* | | | | | | | |
|
* |Bright|Bright| | | |Hue- |Hue+ |
|
||||||
* | | |------| |------| | |
|
* |ness- |ness+ |------| |------| | |
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
// SYMBOLS
|
// SYMBOLS
|
||||||
[SYMB] = KEYMAP(
|
[SYMB] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
||||||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
||||||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
||||||
EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS,
|
RGB_MOD,KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
RGB_VAD,RGB_VAI,KC_TRNS,
|
||||||
// right hand
|
// right hand
|
||||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
||||||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
||||||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
||||||
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
|
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,
|
RGB_TOG, RGB_SLD,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, RGB_HUD, RGB_HUI
|
||||||
),
|
),
|
||||||
/* Keymap 2: Media and mouse keys
|
/* Keymap 2: Media and mouse keys
|
||||||
*
|
*
|
||||||
|
@ -160,6 +165,33 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
return MACRO_NONE;
|
return MACRO_NONE;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
// dynamically generate these.
|
||||||
|
case EPRM:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
eeconfig_init();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case VRSN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RGB_SLD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_mode(1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Runs just one time when the keyboard initializes.
|
// Runs just one time when the keyboard initializes.
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
|
||||||
|
/******************************************************************************************
|
||||||
|
* DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/)
|
||||||
|
* Layer 1: auxiliary keys
|
||||||
|
* Layer 2: full qwerty layout
|
||||||
|
*****************************************************************************************/
|
||||||
|
|
||||||
|
// LAYERS
|
||||||
|
#define BASE 0 // dvorak layout (default)
|
||||||
|
#define AUX 1 // auxiliary keys
|
||||||
|
|
||||||
|
// MACROS
|
||||||
|
/* #define OBRACE 0 // key { or shift */
|
||||||
|
/* #define CBRACE 1 // key } or shift */
|
||||||
|
/* #define OBRACK 2 // key [ or left alt */
|
||||||
|
/* #define CBRACK 3 // key ] or left alt */
|
||||||
|
/* #define CAPS 4 // caps lock */
|
||||||
|
|
||||||
|
// LEDS
|
||||||
|
#define USB_LED_NUM_LOCK 0
|
||||||
|
#define USB_LED_CAPS_LOCK 1
|
||||||
|
#define USB_LED_SCROLL_LOCK 2
|
||||||
|
#define USB_LED_COMPOSE 3
|
||||||
|
#define USB_LED_KANA 4
|
||||||
|
|
||||||
|
// TIMERS
|
||||||
|
#define KEY_TAP_FAST 85
|
||||||
|
#define KEY_TAP_SLOW 95
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap 0: Base layer
|
||||||
|
* Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = / + |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | ~ |" / ' |, / < |. / > | P | Y | [ | | ] | F | G | C | H | L | / / ? |
|
||||||
|
* |--------+------+------+------+------+------| { | | } |------+------+------+------+------+--------|
|
||||||
|
* | Tab | A | O | E |U/LSft| I/L1 |------| |------| D/L1|R/RSft| T | N | S | - / _ |
|
||||||
|
* |--------+------+------+------+------+------| LGUI | | LGUI |------+------+------+------+------+--------|
|
||||||
|
* | {/LSft |; / : | Q | J | K | X | | | | B | M | W | V | Z | }/RSft |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | ~L1 | | ~L1 | | | \ / || |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | HOME | END | | LEFT | RIGHT|
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | BSPC | DEL | PGUP | | UP | SPACE |RETURN|
|
||||||
|
* | / | / |------| |------| / | / |
|
||||||
|
* | LCTL | LALT |PGDWN | | DOWN | LALT | LCTL |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
[BASE] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
|
||||||
|
KC_TILD, KC_QUOTE, KC_COMM,KC_DOT, KC_P, KC_Y, KC_LBRACKET,
|
||||||
|
KC_TAB, KC_A, KC_O, KC_E, SFT_T(KC_U), LT(AUX, KC_I),
|
||||||
|
SFT_T(KC_LBRC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LGUI,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, MO(AUX),
|
||||||
|
KC_HOME, KC_END,
|
||||||
|
KC_PGUP,
|
||||||
|
CTL_T(KC_BSPC), ALT_T(KC_DEL), KC_PGDN,
|
||||||
|
// right hand
|
||||||
|
KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
|
||||||
|
KC_RBRACKET, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH,
|
||||||
|
LT(AUX, KC_D), SFT_T(KC_H), KC_T, KC_N, KC_S, KC_MINUS,
|
||||||
|
KC_LGUI, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_RBRC),
|
||||||
|
MO(AUX), KC_NO, KC_NO, KC_BSLASH, KC_NO,
|
||||||
|
KC_LEFT, KC_RIGHT,
|
||||||
|
KC_UP,
|
||||||
|
KC_DOWN, ALT_T(KC_ENT), CTL_T(KC_SPC)
|
||||||
|
),
|
||||||
|
/* Keymap 1: Aux layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | VolUp | | | | | | SLEEP | PWR | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | VolDn | F1 | F2 | F3 | F4 | | | | | | 7 | 8 | 9 | * | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | F5 | F6 | F7 | F8 | TRANS|------| |------|TRANS | 4 | 5 | 6 | + | |
|
||||||
|
* |--------+------+------+------+------+------| | |PSCR |------+------+------+------+------+--------|
|
||||||
|
* | TRANS | F9 | F10 | F11 | F12 | | | | | | 1 | 2 | 3 | / | TRANS |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS| | TRANS| . | 0 | = | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | TRANS| TRANS| | TRANS| TRANS|
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | TRANS| | TRANS| | |
|
||||||
|
* |TRANS |TRANS |------| |------| TRANS| TRANS|
|
||||||
|
* | | | TRANS| | TRANS| | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[AUX] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP,
|
||||||
|
KC_VOLD, KC_F1, KC_F2, KC_F3, KC_F4, KC_NO, KC_NO,
|
||||||
|
KC_NO , KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS,
|
||||||
|
KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||||
|
LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), KC_TRNS,
|
||||||
|
KC_TRNS , KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_PWR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_PAST, KC_NO,
|
||||||
|
KC_TRNS, KC_4, KC_5, KC_6, KC_PPLS, KC_NO,
|
||||||
|
KC_PSCR, KC_NO, KC_1, KC_2, KC_3, KC_PSLS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_DOT, KC_0, KC_PEQL, KC_NO,
|
||||||
|
KC_TRNS , KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(AUX) // FN1 - Momentary Layer 1 (Aux)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
|
||||||
|
ergodox_board_led_off();
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
switch (layer) {
|
||||||
|
case 1:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// none
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
# Ergodox Dvorak Layout with emacs binding in mind
|
||||||
|
* Control & Alt key on the thumbs (activated if pressed with another key).
|
||||||
|
* In the same way, "U" and "R" are the shift modifier if pressed with another key.
|
||||||
|
* "I" and "D" set the layer 1 for the auxiliary keys if pressed with another key.
|
||||||
|
* Software layout set to english.
|
||||||
|
|
||||||
|
## Keymap Layers
|
||||||
|
- L0: dvorak with some customizations (see layout below)
|
||||||
|
- L1: auxiliary keys (includes function keys, numpad...)
|
||||||
|
|
||||||
|
|
||||||
|
### Keymap 0: Base layer
|
||||||
|
Keys with double values (like U/LSft) correspond to the 'tapped' key and the 'held' key, respectively
|
||||||
|
|
||||||
|
<pre><code>
|
||||||
|
|
||||||
|
,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
| | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = |
|
||||||
|
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
| ~ | ' | , | . | P | Y | [ | | ] | F | G | C | H | L | / |
|
||||||
|
|--------+------+------+------+------+------| { | | } |------+------+------+------+------+--------|
|
||||||
|
| Tab | A | O | E |U/LSft| I/L1 |------| |------| D/L1|R/RSft| T | N | S | - |
|
||||||
|
|--------+------+------+------+------+------| LGUI | | LGUI |------+------+------+------+------+--------|
|
||||||
|
| {/LSft | ; | Q | J | K | X | | | | B | M | W | V | Z | }/RSft |
|
||||||
|
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
| | | | | ~L1 | | ~L1 | | | \ | |
|
||||||
|
`----------------------------------' `----------------------------------'
|
||||||
|
,-------------. ,-------------.
|
||||||
|
| HOME | END | | LEFT | RIGHT|
|
||||||
|
,------|------|------| |------+--------+------.
|
||||||
|
| BSPC | DEL | PGUP | | UP | SPACE |RETURN|
|
||||||
|
| / | / |------| |------| / | / |
|
||||||
|
| LCTL | LALT |PGDWN | | DOWN | LALT | LCTL |
|
||||||
|
`--------------------' `----------------------'
|
||||||
|
|
||||||
|
</pre></code>
|
||||||
|
|
||||||
|
### Keymap 1: Aux layer
|
||||||
|
|
||||||
|
<pre><code>
|
||||||
|
|
||||||
|
,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
| VolUp | | | | | | SLEEP | PWR | | | | | | |
|
||||||
|
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
| VolDn | F1 | F2 | F3 | F4 | | | | | | 7 | 8 | 9 | * | |
|
||||||
|
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
| | F5 | F6 | F7 | F8 | TRANS|------| |------|TRANS | 4 | 5 | 6 | + | |
|
||||||
|
|--------+------+------+------+------+------| | |PSCR |------+------+------+------+------+--------|
|
||||||
|
| TRANS | F9 | F10 | F11 | F12 | | | | | | 1 | 2 | 3 | / | TRANS |
|
||||||
|
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
|CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS| | TRANS| . | 0 | = | |
|
||||||
|
`----------------------------------' `----------------------------------'
|
||||||
|
,-------------. ,-------------.
|
||||||
|
| TRANS| TRANS| | TRANS| TRANS|
|
||||||
|
,------|------|------| |------+------+------.
|
||||||
|
| | | TRANS| | TRANS| | |
|
||||||
|
|TRANS |TRANS |------| |------| TRANS| TRANS|
|
||||||
|
| | | TRANS| | TRANS| | |
|
||||||
|
`--------------------' `--------------------'
|
||||||
|
|
||||||
|
</pre></code>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Generation of .hex file
|
||||||
|
> In the "qmk_firmware/keyboards/ergodox" directory.
|
||||||
|
|
||||||
|
> Execute "make dvorak_emacs". Then the hex file "ergodox_ez_dvorak_emacs.hex" is in the root directory : "qmk_firmware".
|
||||||
|
|
||||||
|
> Flash with `teensy_loader` binary
|
|
@ -0,0 +1,14 @@
|
||||||
|
Dvorak support, plover support, gaming support
|
||||||
|
|
||||||
|
I'm used to the Kinesis, so originally I was just going to patch up
|
||||||
|
the thumb keys to be more familiar. But the ergodox is really well
|
||||||
|
suited to NKRO support in Plover, so I added a layer for that, and
|
||||||
|
then I remembered that dvorak can be really annoying for video
|
||||||
|
games (try to reach WASD), so I added a layer for that.
|
||||||
|
|
||||||
|
The result is probably a bit idiosyncratic, but it works for me.
|
||||||
|
|
||||||
|
(I also don't have any press/hold distinction keys, because that
|
||||||
|
confuses my fuzzy little brain.)
|
||||||
|
|
||||||
|
Contributed by seebs (seebs@seebs.net)
|
|
@ -0,0 +1,230 @@
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
|
||||||
|
#define BASE 0 // default layer
|
||||||
|
#define SYMB 1 // symbols
|
||||||
|
#define PLVR 2 // media keys
|
||||||
|
#define QWRT 3 // qwerty layer for gaming
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap 0: Basic layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | = | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | \ |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | Tab | ' | , | . | P | Y | L1 | | L2 | F | G | C | R | L | / |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | LGui | A | O | E | U | I |------| |------| D | H | T | N | S | - |
|
||||||
|
* |--------+------+------+------+------+------| Esc | | L3 |------+------+------+------+------+--------|
|
||||||
|
* | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | RShift |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* |Lalt | Grv | | Left | Right| | Up | Down | [ | ] | RAlt |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,---------------.
|
||||||
|
* | LCtrl| Alt | | LGui | RCtrl |
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | Home | | PgUp | | |
|
||||||
|
* |Backsp|Delete|------| |------| Enter |Space |
|
||||||
|
* | ace| | End | | PgDn | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
||||||
|
// Otherwise, it needs KC_*
|
||||||
|
[BASE] = KEYMAP( // layer 0 : default
|
||||||
|
// left hand
|
||||||
|
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(SYMB),
|
||||||
|
KC_LGUI, KC_A, KC_O, KC_E, KC_U, KC_I,
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_ESC,
|
||||||
|
KC_LALT, KC_GRV, KC_ESC, KC_LEFT,KC_RGHT,
|
||||||
|
KC_LCTL, KC_LALT,
|
||||||
|
KC_HOME,
|
||||||
|
KC_BSPC,KC_DEL,KC_END,
|
||||||
|
// right hand
|
||||||
|
KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
|
||||||
|
TG(PLVR), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
|
||||||
|
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
|
||||||
|
TG(QWRT),KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
|
||||||
|
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_RALT,
|
||||||
|
KC_LGUI, KC_RCTL,
|
||||||
|
KC_PGUP,
|
||||||
|
KC_PGDN,KC_ENT, KC_SPC
|
||||||
|
),
|
||||||
|
/* Keymap 1: Symbol Layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | ! | @ | { | } | | | | | | Up | KP7 | KP8 | KP9 | KP* | F12 |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | # | $ | ( | ) | ` |------| |------| Down | KP4 | KP5 | KP6 | KP+ | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | % | ^ | [ | ] | ~ | | | | & | KP1 | KP2 | KP3 | KP/ | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | KP. | KP0 | KP= | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// SYMBOLS
|
||||||
|
[SYMB] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
|
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
||||||
|
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
||||||
|
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
|
KC_TRNS, KC_UP, KC_P7, KC_P8, KC_P9, KC_PAST, KC_F12,
|
||||||
|
KC_DOWN, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_AMPR, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_PDOT, KC_P0, KC_PEQL, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
/* Keymap 2: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | 1 | 2 | 3 | 4 | 5 | | | L2 | 6 | 7 | 8 | 9 | 0 | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | q | w | e | r | t |------| |------| y | u | i | o | p | [ |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | a | s | d | f | g | | | | h | j | k | l | ; | ' |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | c | v |------| |------| n | m |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
[PLVR] = KEYMAP( // layout: layer 2: Steno for Plover
|
||||||
|
// left hand
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
|
||||||
|
KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T,
|
||||||
|
KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_FN4, KC_NO,
|
||||||
|
KC_NO,
|
||||||
|
KC_C, KC_V, KC_NO,
|
||||||
|
// right hand
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||||
|
TG(2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||||
|
KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
|
||||||
|
KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_NO, KC_N, KC_M
|
||||||
|
),
|
||||||
|
/* Keymap 3: qwerty-ish
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | = | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | - |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | LGui | A | S | D | F | G |------| |------| H | J | K | L | ; | LGui |
|
||||||
|
* |--------+------+------+------+------+------| Spc | | L3 |------+------+------+------+------+--------|
|
||||||
|
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | Lalt | Grv | '" | Left | Right| | Up | Down | [ | ] | RAlt |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,---------------.
|
||||||
|
* | LCtrl| LAlt | | LGui | RCtrl |
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | Home | | PgUp | | |
|
||||||
|
* |Backsp|Delete|------| |------| Enter |Space |
|
||||||
|
* | ace| | End | | PgDn | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
[QWRT] = KEYMAP( // layer 3: qwerty for gaming
|
||||||
|
// left hand
|
||||||
|
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
|
||||||
|
KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPACE,
|
||||||
|
KC_LALT, KC_GRV, KC_QUOT, KC_LEFT,KC_RGHT,
|
||||||
|
KC_LCTL, KC_LALT,
|
||||||
|
KC_HOME,
|
||||||
|
KC_BSPC,KC_DEL,KC_END,
|
||||||
|
// right hand
|
||||||
|
KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
TG(QWRT), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_RALT,
|
||||||
|
KC_LGUI, KC_RCTL,
|
||||||
|
KC_PGUP,
|
||||||
|
KC_PGDN,KC_ENT, KC_SPC
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
|
||||||
|
ergodox_board_led_off();
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
switch (layer) {
|
||||||
|
// TODO: Make this relevant to the ErgoDox EZ.
|
||||||
|
case 1:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// none
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
RGBLIGHT_ENABLE ?= yes
|
||||||
|
MIDI_ENABLE ?= yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
|
|
|
@ -9,4 +9,5 @@
|
||||||
#undef LEADER_TIMEOUT
|
#undef LEADER_TIMEOUT
|
||||||
#define LEADER_TIMEOUT 300
|
#define LEADER_TIMEOUT 300
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7,6 +7,12 @@
|
||||||
#define SYMB 1 // symbols
|
#define SYMB 1 // symbols
|
||||||
#define MDIA 2 // media keys
|
#define MDIA 2 // media keys
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
PLACEHOLDER = SAFE_RANGE, // can always be here
|
||||||
|
RGB_FF00BB // always start with RGB_
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* Keymap 0: Basic layer
|
/* Keymap 0: Basic layer
|
||||||
*
|
*
|
||||||
|
@ -65,33 +71,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* | | | |NxtTab|PrvTab| | | | | | |
|
* | | | |NxtTab|PrvTab| | | | | | |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | | |
|
* | | | |TOG |
|
||||||
* ,------|------|------| |------+------+------.
|
* ,------|------|------| |------+------+------.
|
||||||
* | | | | | | | |
|
* |VAI |VAD |HUI | |SAI | |MOD |
|
||||||
* | | |------| |------| | |
|
* | | |------| |------| | |
|
||||||
* | | | | | | | |
|
* | | |HUD | |SAD | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
// SYMBOLS
|
// SYMBOLS
|
||||||
[SYMB] = KEYMAP(
|
[SYMB] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
RGB_FF00BB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5,
|
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5,
|
||||||
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN),
|
KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN),
|
||||||
KC_TRNS,KC_TRNS,
|
KC_TRNS,KC_TRNS,
|
||||||
KC_TRNS,
|
RGB_HUI,
|
||||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
RGB_VAI,RGB_VAD,RGB_HUD,
|
||||||
// right hand
|
// right hand
|
||||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
|
||||||
KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS,
|
KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS,
|
||||||
KC_TRNS, KC_PIPE, KC_AT, KC_EQL, KC_PERC, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_PIPE, KC_AT, KC_EQL, KC_PERC, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,
|
RGB_TOG, KC_TRNS,
|
||||||
KC_TRNS,
|
RGB_SAI,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
RGB_SAD, KC_TRNS, RGB_MOD
|
||||||
),
|
),
|
||||||
/* Keymap 2: Media and mouse keys
|
/* Keymap 2: Media and mouse keys
|
||||||
*
|
*
|
||||||
|
@ -152,6 +158,24 @@ void matrix_init_user(void) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
// dynamically generate these.
|
||||||
|
case RGB_FF00BB:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_enable();
|
||||||
|
rgblight_mode(1);
|
||||||
|
rgblight_setrgb(0xff,0x00,0xbb);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
LEADER_EXTERNS();
|
LEADER_EXTERNS();
|
||||||
|
|
||||||
// Runs constantly in the background, in a loop.
|
// Runs constantly in the background, in a loop.
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
|
|
@ -0,0 +1,183 @@
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
#define BASE 0 // default layer
|
||||||
|
#define SYMB 1 // symbols
|
||||||
|
#define MDIA 2 // media keys
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap 0: Basic layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | + | 1 | 2 | 3 | 4 | 5 | rclk | | lclk | 6 | 7 | 8 | 9 | 0 | - |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | = | Q | W | E | R |cmd/T |shift | |shift |cmd/Y | U | I | O | P | \ |
|
||||||
|
* |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
|
||||||
|
* | " | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' |
|
||||||
|
* |--------+------+------+------+------+------| ctrl | | ctrl |------+------+------+------+------+--------|
|
||||||
|
* | { | Z | X | C | V | B | [ | | ] | N | M | , | . | / | } |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | _ | ` | $ | Left | Right| | Up | Down | : | * | ! |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | < | | | | & | > |
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | # | | @ | | |
|
||||||
|
* | Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
* | |ace | % | | ESC | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
||||||
|
// Otherwise, it needs KC_*
|
||||||
|
[BASE] = KEYMAP( // layer 0 : default
|
||||||
|
// left hand
|
||||||
|
KC_PLUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_BTN2,
|
||||||
|
KC_EQL, KC_Q, KC_W, KC_E, KC_R, GUI_T(KC_T), KC_LSPO,
|
||||||
|
KC_DQUO, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
|
KC_LCBR, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_LBRC),
|
||||||
|
KC_UNDS, KC_GRV, KC_DLR, KC_LEFT,KC_RGHT,
|
||||||
|
KC_LABK, KC_PIPE,
|
||||||
|
KC_HASH,
|
||||||
|
KC_SPC, KC_BSPC,KC_PERC,
|
||||||
|
// right hand
|
||||||
|
KC_BTN1, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
KC_RSPC, GUI_T(KC_Y), KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), KC_QUOT,
|
||||||
|
CTL_T(KC_RBRC), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RCBR,
|
||||||
|
KC_UP, KC_DOWN,KC_COLN,KC_ASTR, KC_EXLM,
|
||||||
|
KC_AMPR, KC_RABK,
|
||||||
|
KC_AT,
|
||||||
|
KC_ESC, KC_TAB, KC_ENT
|
||||||
|
),
|
||||||
|
/* Keymap 1: Symbol Layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------.
|
||||||
|
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | . | 0 | = | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// SYMBOLS
|
||||||
|
[SYMB] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
|
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
||||||
|
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
||||||
|
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
|
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
||||||
|
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
/* Keymap 2: Media and mouse keys
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | | | MsUp | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | Prev | Next | | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | |Brwser|
|
||||||
|
* | | |------| |------| |Back |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// MEDIA AND MOUSE
|
||||||
|
[MDIA] = KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
|
||||||
|
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_WBAK
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
|
||||||
|
ergodox_board_led_off();
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
switch (layer) {
|
||||||
|
// TODO: Make this relevant to the ErgoDox EZ.
|
||||||
|
case 1:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// none
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Galson keymap
|
||||||
|
|
||||||
|
|
||||||
|
Sep 26, 2016.
|
||||||
|
|
||||||
|
This is an ergonomic layout for programming for those with typing-related injuries. Key features:
|
||||||
|
|
||||||
|
- As many symbol keys as possible are accessible without shifting. These should be accessed by moving the entire hand and pressing with a strong finger.
|
||||||
|
- Arrow keys and left and right mouse clicks for mouse-free navigation when combined with head mouse or eyetracker.
|
||||||
|
- Modifier keys are dual role and relocated to positions convenient for the index finger.
|
||||||
|
- Positions are more convenient when the keyboard is vertically mounted (as it should be!)
|
|
@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
* |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||||
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | ~L1 | Alt |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
* | ~L1 | Alt |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
|
@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS,
|
||||||
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
|
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
||||||
MO(SYMB), KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
|
MO(SYMB), KC_LALT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
|
||||||
|
|
||||||
ALT_T(KC_APP), KC_HOME,
|
ALT_T(KC_APP), KC_HOME,
|
||||||
|
@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
KC_EQL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
|
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, MO(SYMB),
|
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, MO(SYMB),
|
||||||
|
|
||||||
KC_PGUP, CTL_T(KC_ESC),
|
KC_PGUP, CTL_T(KC_ESC),
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
RGBLIGHT_ENABLE ?= yes
|
||||||
|
MIDI_ENABLE ?= yes
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN D7
|
||||||
|
#define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLED_NUM 15 // Number of LEDs
|
||||||
|
#define RGBLIGHT_HUE_STEP 12
|
||||||
|
#define RGBLIGHT_SAT_STEP 255
|
||||||
|
#define RGBLIGHT_VAL_STEP 12
|
||||||
|
|
||||||
|
#define RGB_MIDI
|
||||||
|
#define RGBW_BB_TWI
|
||||||
|
|
||||||
|
#endif
|
|
@ -19,14 +19,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_HOME,
|
KC_HOME,
|
||||||
KC_SPC,KC_SPC,KC_END,
|
KC_SPC,KC_SPC,KC_END,
|
||||||
// right hand
|
// right hand
|
||||||
KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
|
KC_NO, M(1), KC_7, KC_8, KC_9, KC_0, KC_NO,
|
||||||
KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
KC_NO, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_P, KC_BSPC,
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_SCLN, KC_QUOT,
|
||||||
KC_NO, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_ENT,
|
KC_NO, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_ENT,
|
||||||
MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,
|
MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,
|
||||||
KC_NO, KC_NO,
|
RGB_TOG, RGB_HUI,
|
||||||
KC_PGUP,
|
RGB_MOD,
|
||||||
KC_PGDN, KC_SPC,KC_SPC
|
M(2), KC_SPC,KC_SPC
|
||||||
),
|
),
|
||||||
[SYMB] = KEYMAP(
|
[SYMB] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
|
@ -84,6 +84,16 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
unregister_code(KC_RSFT);
|
unregister_code(KC_RSFT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 1:
|
||||||
|
if (record->event.pressed) { // For resetting EEPROM
|
||||||
|
eeconfig_init();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (record->event.pressed) { // For resetting EEPROM
|
||||||
|
api_send_unicode(0x0CA0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return MACRO_NONE;
|
return MACRO_NONE;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "version.h"
|
||||||
|
#include "keymap_fr_ch.h"
|
||||||
|
#include "keymap_french.h"
|
||||||
|
#include "keymap_german.h"
|
||||||
|
#include "keymap_german_ch.h"
|
||||||
|
#include "keymap_nordic.h"
|
||||||
|
#include "keymap_norwegian.h"
|
||||||
|
#include "keymap_spanish.h"
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
|
||||||
|
[0] = KEYMAP(NO_LESS,KC_1,KC_2,KC_3,KC_4,KC_5,KC_BSPACE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,SFT_T(NO_APOS),CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,SFT_T(KC_EQUAL),MO(1),CTL_T(KC_GRAVE),KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_CAPSLOCK,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_6,KC_7,KC_8,KC_9,KC_0,NO_PLUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,NO_AM,KC_H,KC_J,KC_K,KC_L,LT(2,NO_OSLH),NO_AE,SFT_T(KC_RBRC),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SFT_T(NO_APOS),KC_DOWN,KC_UP,NO_LPRN,NO_RPRN,MO(1),NO_QUOT,CTL_T(KC_ESCAPE),NO_APOS,KC_LALT,KC_LGUI,KC_ENTER),
|
||||||
|
|
||||||
|
[1] = KEYMAP(M(0),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_TRANSPARENT,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_7,KC_8,KC_9,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_4,KC_5,KC_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_0,KC_1,KC_2,KC_3,NO_LBRC,NO_RBRC,KC_LSHIFT,KC_COMMA,KC_DOT,LSFT(NO_LBRC),LSFT(NO_RBRC),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LALT,KC_LGUI,KC_ENTER),
|
||||||
|
|
||||||
|
[2] = KEYMAP(KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LALT,KC_LGUI,KC_MS_BTN1,KC_MS_BTN2,KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_SPACE,KC_LGUI,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_ESCAPE,KC_MS_WH_UP,KC_MS_WH_DOWN,KC_MS_ACCEL0,KC_MS_ACCEL1),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(1)
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
|
||||||
|
ergodox_board_led_off();
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
switch (layer) {
|
||||||
|
case 1:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
|
@ -0,0 +1,151 @@
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
enum custom_keycodes {
|
||||||
|
PLACEHOLDER = SAFE_RANGE, // can always be here
|
||||||
|
RGB_FF0000,
|
||||||
|
RGB_00FF00,
|
||||||
|
RGB_0000FF,
|
||||||
|
RGB_FFFFFF,
|
||||||
|
RGB_TOGGLE,
|
||||||
|
LED1,
|
||||||
|
LED2,
|
||||||
|
LED3
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[0] = KEYMAP(
|
||||||
|
RGB_TOGGLE, RGB_FF0000, RGB_00FF00, RGB_0000FF, RGB_FFFFFF, KC_5, KC_LPRN,
|
||||||
|
KC_GRAVE, KC_A, KC_B, KC_C, KC_D, KC_E, KC_EXLM,
|
||||||
|
KC_HASH, KC_J, KC_K, KC_L, KC_M, KC_N,
|
||||||
|
KC_AMPR, KC_T, KC_U, KC_V, KC_W, KC_X, KC_DLR,
|
||||||
|
KC_PIPE, KC_R, KC_PLUS, KC_LCBR, KC_RCBR,
|
||||||
|
|
||||||
|
KC_F, KC_G,
|
||||||
|
KC_H,
|
||||||
|
KC_P, KC_O, KC_I,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// RIGHT HAND
|
||||||
|
KC_RPRN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
KC_AT, KC_F, KC_G, KC_H, KC_I, KC_COLN, KC_BSLS,
|
||||||
|
KC_O, KC_P, KC_Q, KC_R, KC_S, KC_QUOT,
|
||||||
|
LSFT(KC_COMM), KC_Y, KC_Z, KC_COMM, KC_DOT, KC_SLSH, KC_ASTR,
|
||||||
|
KC_A, KC_B, KC_C, KC_D, KC_PIPE,
|
||||||
|
|
||||||
|
LED1, KC_E,
|
||||||
|
LED2,
|
||||||
|
LED3, KC_J, KC_K
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(1)
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool status_led1_on = false, status_led2_on = false, status_led3_on = false;
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
// dynamically generate these.
|
||||||
|
case RGB_FF0000:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
EZ_RGB(0xff0000);
|
||||||
|
register_code(KC_1); unregister_code(KC_1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RGB_00FF00:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
EZ_RGB(0x00ff00);
|
||||||
|
register_code(KC_2); unregister_code(KC_2);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RGB_0000FF:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
EZ_RGB(0x0000ff);
|
||||||
|
register_code(KC_3); unregister_code(KC_3);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RGB_FFFFFF:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
EZ_RGB(0xffffff);
|
||||||
|
register_code(KC_4); unregister_code(KC_4);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case RGB_TOGGLE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_toggle();
|
||||||
|
register_code(KC_EQL); unregister_code(KC_EQL);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case LED1:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if(status_led1_on) {
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
status_led1_on = false;
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
status_led1_on = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case LED2:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if(status_led2_on) {
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
status_led2_on = false;
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
status_led2_on = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case LED3:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if(status_led3_on) {
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
status_led3_on = false;
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
status_led3_on = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Robot test layout
|
||||||
|
|
||||||
|
Use this layout if you like to pretend you're [Norman](https://www.youtube.com/watch?v=-sbxFBay-tg), the ErgoDox EZ manufacturing robot.
|
||||||
|
|
||||||
|
It's really meant just for internal use, but we're posting it on GitHub anyway, because hurray to open source. :)
|
|
@ -1,14 +1,3 @@
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
|
||||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ
|
|
||||||
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
|
||||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
|
||||||
MIDI_ENABLE = no # MIDI controls
|
|
||||||
UNICODE_ENABLE = yes # Unicode
|
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_LGUI, KC_GRV, KC_BSLS, KC_LEFT, KC_RGHT,
|
KC_LGUI, KC_GRV, KC_BSLS, KC_LEFT, KC_RGHT,
|
||||||
KC_LCTL, KC_LALT,
|
KC_LCTL, KC_LALT,
|
||||||
KC_HOME,
|
KC_HOME,
|
||||||
KC_SPC, KC_BSPC, KC_END,
|
KC_BSPC, KC_DEL, KC_END,
|
||||||
// right hand
|
// right hand
|
||||||
MO(FN2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
MO(FN2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC,
|
KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
# sethbc's Ergodox EZ keymap
|
# sethbc's Ergodox EZ keymap
|
||||||
|
|
||||||
Largely based on the Ergodox Infinity default keymap
|
Largely based on the Ergodox Infinity default keymap, but layer locking has been
|
||||||
|
removed in favor of momentary layer activation
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
AUDIO_ENABLE:=no
|
||||||
|
BACKLIGHT_ENABLE:=no
|
||||||
|
BLUETOOTH_ENABLE:=no
|
||||||
|
BOOTMAGIC_ENABLE:=no
|
||||||
|
COMMAND_ENABLE:=no
|
||||||
|
CONSOLE_ENABLE:=no
|
||||||
|
EXTRAKEY_ENABLE:=yes
|
||||||
|
MIDI_ENABLE:=no
|
||||||
|
MOUSEKEY_ENABLE:=yes
|
||||||
|
NKRO_ENABLE:=no
|
||||||
|
RGBLIGHT_ENABLE:=no
|
||||||
|
SLEEP_LED_ENABLE:=no
|
||||||
|
TAP_DANCE_ENABLE:=yes
|
||||||
|
UNICODEMAP_ENABLE:=no
|
||||||
|
UNICODE_ENABLE:=no
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
|
@ -0,0 +1,13 @@
|
||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
#ifndef NO_DEBUG
|
||||||
|
#define NO_DEBUG
|
||||||
|
#endif
|
||||||
|
#ifndef NO_PRINT
|
||||||
|
#define NO_PRINT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,179 @@
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
BASE = 0, // Default layer
|
||||||
|
ARROWS = 1, // Arrows and Fx keys layer
|
||||||
|
MOUSE = 2, // Mouse movement and buttons layer
|
||||||
|
PARENS = 3, // Parenthesis easy access layer
|
||||||
|
|
||||||
|
TD_L = 0, // Tap dance index for left shift
|
||||||
|
TD_R = 1 // Tap dance index for right shift
|
||||||
|
};
|
||||||
|
|
||||||
|
// See the videck.png image for a visualization of the layout.
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[BASE] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME,
|
||||||
|
KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_END,
|
||||||
|
MO(PARENS), KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
|
TD(TD_L), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC,
|
||||||
|
KC_LCTL, KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE,
|
||||||
|
KC_ESC, KC_LGUI,
|
||||||
|
TG(MOUSE),
|
||||||
|
KC_SPC, KC_TAB, TG(ARROWS),
|
||||||
|
// right hand
|
||||||
|
KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||||
|
KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_R),
|
||||||
|
KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL,
|
||||||
|
KC_APP, KC_ESC,
|
||||||
|
KC_INS,
|
||||||
|
KC_SLCK, KC_ENT, KC_SPC
|
||||||
|
),
|
||||||
|
[ARROWS] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_NO,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
|
||||||
|
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[MOUSE] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_BTN3, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_BTN1, KC_BTN2, KC_NO,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[PARENS] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_NO,
|
||||||
|
KC_TRNS, KC_TRNS, KC_NO,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc);
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint16_t kc1;
|
||||||
|
uint16_t kc2;
|
||||||
|
videck_tap_dance_trigger_t trigger;
|
||||||
|
} videck_tap_dance_tuple_t;
|
||||||
|
|
||||||
|
static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
|
||||||
|
|
||||||
|
if (state->count == 1) {
|
||||||
|
register_code16 (tuple->kc1);
|
||||||
|
} else if (state->count == 2) {
|
||||||
|
register_code16 (tuple->kc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data;
|
||||||
|
|
||||||
|
if (state->count == 1) {
|
||||||
|
unregister_code16 (tuple->kc1);
|
||||||
|
} else if (state->count == 2) {
|
||||||
|
unregister_code16 (tuple->kc2);
|
||||||
|
tuple->trigger(tuple->kc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool caps_lock_is_on;
|
||||||
|
|
||||||
|
// Toggles caps lock status.
|
||||||
|
static void videck_caps_trigger (const uint16_t kc) {
|
||||||
|
caps_lock_is_on ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \
|
||||||
|
.fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \
|
||||||
|
.user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }), \
|
||||||
|
}
|
||||||
|
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger),
|
||||||
|
[TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger)
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
ergodox_led_all_set(LED_BRIGHTNESS_LO);
|
||||||
|
caps_lock_is_on = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void indicate_using_led(const uint8_t led, const bool enabled) {
|
||||||
|
if (enabled) {
|
||||||
|
ergodox_right_led_on(led);
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_off(led);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void indicate_caps_lock_state(const bool enabled) {
|
||||||
|
indicate_using_led(1, enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void indicate_arrows_layer_state(const bool enabled) {
|
||||||
|
indicate_using_led(2, enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void indicate_mouse_layer_state(const bool enabled) {
|
||||||
|
indicate_using_led(3, enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
// Check if we have shift locked.
|
||||||
|
indicate_caps_lock_state(caps_lock_is_on);
|
||||||
|
indicate_arrows_layer_state(IS_LAYER_ON(ARROWS));
|
||||||
|
indicate_mouse_layer_state(IS_LAYER_ON(MOUSE));
|
||||||
|
};
|
|
@ -0,0 +1,24 @@
|
||||||
|
ViDeck keymap for ErgoDox
|
||||||
|
=========================
|
||||||
|
|
||||||
|
This is a QWERTY layout based on the US layout, where Vi functionality has been
|
||||||
|
especially considered.
|
||||||
|
|
||||||
|
# Features
|
||||||
|
* Mouse movements using the Vi movement keys.
|
||||||
|
* Vi movement keys doubling as arrow keys.
|
||||||
|
* Shift lock using double tap.
|
||||||
|
* A coder's modifier key for easy input of parenthesis.
|
||||||
|
* Acess to the escape key using either thumb.
|
||||||
|
* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch
|
||||||
|
to a non-US layout once in a while in X).
|
||||||
|
|
||||||
|
# Missing keys
|
||||||
|
* Caps Lock (shift lock is used instead).
|
||||||
|
* Pause/Break.
|
||||||
|
* Print Screen.
|
||||||
|
|
||||||
|
# LEDs
|
||||||
|
* Shift lock is indicated using first LED.
|
||||||
|
* Arrow keys layer is indicated using second LED.
|
||||||
|
* Mouse keys layer is indicated using third LED.
|
|
@ -0,0 +1,443 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"backcolor": "#333333",
|
||||||
|
"background": {
|
||||||
|
"name": "PBT Black",
|
||||||
|
"style": "background-image: url('/bg/plastic/pbt-black.png');"
|
||||||
|
},
|
||||||
|
"switchMount": "cherry",
|
||||||
|
"switchBrand": "gateron",
|
||||||
|
"switchType": "KS-3-Red"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#323232",
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"#\n3\n\nF3",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"*\n8\n\nF8"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"@\n2\n\nF2",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"$\n4\n\nF4",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"&\n7\n\nF7",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454"
|
||||||
|
},
|
||||||
|
"(\n9\n\nF9"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"%\n5\n\nF5",
|
||||||
|
{
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"home",
|
||||||
|
{
|
||||||
|
"x": 4.5
|
||||||
|
},
|
||||||
|
"pgup",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"^\n6\n\nF6"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"~\n`",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8"
|
||||||
|
},
|
||||||
|
"!\n1\n\nF1",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
")\n0\n\nF10",
|
||||||
|
{
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"_\n-\n\nF11"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"E",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"I"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"W",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"R",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"U",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
"O\n\n\n\n\n\n\n\n\n{"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"T",
|
||||||
|
{
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"end",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"pgdn",
|
||||||
|
"Y"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"+\n=",
|
||||||
|
"Q",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
"P\n\n\n\n\n\n\n\n\n}",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n#ac97d8",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"|\n\\\n\nF12"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"D",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8"
|
||||||
|
},
|
||||||
|
"K\n\n<i class='fa fa-caret-up'></i>\n<i class='kb kb-Arrows-Up'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"S",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"n": true
|
||||||
|
},
|
||||||
|
"F",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8",
|
||||||
|
"n": true
|
||||||
|
},
|
||||||
|
"J\n\n<i class='fa fa-caret-down'></i>\n<i class='kb kb-Arrows-Down'></i>",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
"L\n\n<i class='fa fa-caret-right'></i>\n<i class='kb kb-Arrows-Right'></i>\n\n\n\n\n\n("
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"G",
|
||||||
|
{
|
||||||
|
"x": 6.5,
|
||||||
|
"t": "#ffffff\n\n#5eb1e7\n#ac97d8"
|
||||||
|
},
|
||||||
|
"H\n\n<i class='fa fa-caret-left'></i>\n<i class='kb kb-Arrows-Left'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"t": "#f8d615",
|
||||||
|
"a": 6,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"( ) [ ] { }",
|
||||||
|
{
|
||||||
|
"t": "#ffffff",
|
||||||
|
"a": 4
|
||||||
|
},
|
||||||
|
"A",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615"
|
||||||
|
},
|
||||||
|
":\n;\n\n\n\n\n\nÖ\n\n)",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n#60605b",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\"\n'\n\n\n\n\n\nÄ"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.625,
|
||||||
|
"x": 6.5,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Unicode-DeleteRight-Big'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 3.5
|
||||||
|
},
|
||||||
|
"C",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"<\n,"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"X",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"V",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"M",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615"
|
||||||
|
},
|
||||||
|
">\n.\n\n\n\n\n\n\n\n["
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"B",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"N"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"t": "#ffffff\n\n#f67f00",
|
||||||
|
"a": 6,
|
||||||
|
"fa": [
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"⇑\n\n2-tap<br/>locks",
|
||||||
|
{
|
||||||
|
"t": "#ffffff",
|
||||||
|
"a": 4,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"Z",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"?\n/\n\n\n\n\n\n\n\n]",
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n#f67f00",
|
||||||
|
"a": 6,
|
||||||
|
"f": 3,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"⇑\n\n2-tap<br/>locks"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"a": 4
|
||||||
|
},
|
||||||
|
"\n<i class='kb kb-Multimedia-Volume-Up-2'></i>",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"}\n]"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"\n<i class='kb kb-Multimedia-Volume-Down-1'></i>",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"\n<i class='kb kb-Multimedia-Mute-1'></i>",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n#60605b",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"{\n[\n\n\n\n\n\nÅ",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"+\n="
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 0.5,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"ctrl",
|
||||||
|
{
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"alt",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"altgr",
|
||||||
|
{
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"ctrl"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": 30,
|
||||||
|
"rx": 6.5,
|
||||||
|
"ry": 4.25,
|
||||||
|
"y": -1,
|
||||||
|
"x": 1,
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"esc\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>M",
|
||||||
|
{
|
||||||
|
"t": "#ffffff",
|
||||||
|
"f": 7
|
||||||
|
},
|
||||||
|
"<i class='kb kb-logo-linux-tux'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7",
|
||||||
|
"f": 3,
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"space\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>L",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Tab-1'></i>\n\n\n\n\n\n\n\n\n\n<i class='fa fa-mouse-pointer'></i>R",
|
||||||
|
{
|
||||||
|
"t": "#5eb1e7"
|
||||||
|
},
|
||||||
|
"<i class='fa fa-mouse-pointer'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"t": "#ac97d8"
|
||||||
|
},
|
||||||
|
"<i class='fa fa-arrows'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": -30,
|
||||||
|
"rx": 13,
|
||||||
|
"y": -1,
|
||||||
|
"x": -3,
|
||||||
|
"t": "#ffffff"
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Hamburger-Menu'></i>",
|
||||||
|
"esc"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"ins",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Return-2'></i>",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"space"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"scroll<br/>lock"
|
||||||
|
]
|
||||||
|
]
|
Binary file not shown.
After Width: | Height: | Size: 104 KiB |
|
@ -24,6 +24,5 @@ COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||||
CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ
|
CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ
|
||||||
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
|
||||||
UNICODE_ENABLE ?= yes # Unicode
|
UNICODE_ENABLE ?= yes # Unicode
|
||||||
ONEHAND_ENABLE ?= yes # Allow swapping hands of keyboard
|
ONEHAND_ENABLE ?= yes # Allow swapping hands of keyboard
|
||||||
|
|
|
@ -35,40 +35,41 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); }
|
||||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||||
K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
|
K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
|
||||||
) { \
|
) { \
|
||||||
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D }, \
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||||
{ KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \
|
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||||
{ KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ANSI valiant. No extra keys for ISO */
|
/* ANSI variant. No extra keys for ISO */
|
||||||
#define KEYMAP_ANSI( \
|
#define KEYMAP_ANSI( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
|
||||||
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
||||||
) KEYMAP( \
|
) { \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
|
||||||
K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D }, \
|
||||||
K40, K41, K42, K45, NO, K4A, K4B, K4C, K4D \
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \
|
||||||
)
|
}
|
||||||
|
|
||||||
|
/* HHKB Variant */
|
||||||
#define KEYMAP_HHKB( \
|
#define KEYMAP_HHKB( \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
|
||||||
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
|
K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \
|
||||||
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
||||||
) KEYMAP( \
|
) { \
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \
|
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
|
||||||
K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
{ K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||||
K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
|
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \
|
||||||
)
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,25 +4,25 @@
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* 0: qwerty */
|
/* 0: qwerty */
|
||||||
KEYMAP(
|
KEYMAP(
|
||||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, \
|
KC_ESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_GRV,\
|
||||||
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,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_BSPC,\
|
||||||
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \
|
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_NO,KC_ENT,\
|
||||||
LSFT,FN1, Z, X, C, V, B, N, M, COMM,DOT, SLSH,FN0, RSFT, \
|
KC_LSFT,F(1),KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,F(0),KC_RSFT,\
|
||||||
LCTL,LGUI,LALT, SPC, BSLS,RALT,RGUI,APP, RCTL),
|
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_BSLS,KC_RALT,KC_RGUI,KC_APP,KC_RCTL),
|
||||||
/* 1: fn */
|
/* 1: fn */
|
||||||
KEYMAP(
|
KEYMAP(
|
||||||
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \
|
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_TRNS,\
|
||||||
TRNS,TRNS,UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
|
||||||
TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS),
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
|
||||||
/* 2: arrows */
|
/* 2: arrows */
|
||||||
KEYMAP(
|
KEYMAP(
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,\
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,LEFT,DOWN,RGHT),
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT),
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|
|
@ -182,7 +182,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define ws2812_pin PF4
|
#define ws2812_pin PF4
|
||||||
*/
|
*/
|
||||||
#define RGB_DI_PIN F4
|
#define RGB_DI_PIN F4
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 8 // Number of LEDs
|
#define RGBLED_NUM 8 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
|
|
@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/*
|
/*
|
||||||
* Base layer, pretty standard ANSI layout.
|
* Base layer, pretty standard ANSI layout.
|
||||||
* ,-----------------------------------------------------------.
|
* ,-----------------------------------------------------------.
|
||||||
* |FN12| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
|
* |F(12)| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
|
||||||
* |-----------------------------------------------------------|
|
* |-----------------------------------------------------------|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
|
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|
|
||||||
* |-----------------------------------------------------------|
|
* |-----------------------------------------------------------|
|
||||||
|
@ -22,11 +22,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* `-----------------------------------------------------------'
|
* `-----------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_BL] = KEYMAP(
|
[_BL] = KEYMAP(
|
||||||
FN12,1,2,3,4,5,6,7,8,9,0,MINS,EQL,BSPC, \
|
F(12),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, \
|
||||||
TAB,Q,W,E,R,T,Y,U,I,O,P,LBRC,RBRC,BSLS, \
|
KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, \
|
||||||
FN2,A,S,D,F,G,H,J,K,L,SCLN,QUOT,NO,ENT, \
|
F(2),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT, \
|
||||||
LSFT,NO,Z,X,C,V,B,N,M,COMM,DOT,SLSH,NO,RSFT, \
|
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_NO,KC_RSFT, \
|
||||||
LCTL,LGUI,LALT, SPC, NO,RALT,FN0,APP, RCTL),
|
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,F(0),KC_APP,KC_RCTL),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Locking arrow keys to WASD for when you need dedicated arrow keys
|
* Locking arrow keys to WASD for when you need dedicated arrow keys
|
||||||
|
@ -43,11 +43,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* `-----------------------------------------------------------'
|
* `-----------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_AL] = KEYMAP(
|
[_AL] = KEYMAP(
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,UP,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS),
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -65,11 +65,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* `-------------------------------------------------------------'
|
* `-------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_FL] = KEYMAP(
|
[_FL] = KEYMAP(
|
||||||
GRAVE,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12, DELETE, \
|
KC_GRAVE,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_DELETE, \
|
||||||
TRNS,FN1,TRNS,TRNS,TRNS,TRNS,CALC,PGUP,UP,PGDN,PSCR,SLCK,PAUS,TRNS, \
|
KC_TRNS,F(1),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_CALC,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, \
|
||||||
TRNS,MUTE,_VOLDOWN,_VOLUP,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_MUTE,KC__VOLDOWN,KC__VOLUP,KC_TRNS,KC_TRNS,KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_INS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,FN3,TRNS,TRNS,TRNS,TRNS,END,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,F(3),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_END,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS),
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Locking layer for controlling the underglow.
|
* Locking layer for controlling the underglow.
|
||||||
|
@ -87,11 +87,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* `-----------------------------------------------------------'
|
* `-----------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_UL] = KEYMAP(
|
[_UL] = KEYMAP(
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,FN4,FN5,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,TRNS,FN6,FN7,FN8,FN9,FN10,FN11,TRNS,TRNS,TRNS,TRNS,TRNS, \
|
KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
|
||||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS),
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
|
||||||
};
|
};
|
||||||
|
|
||||||
enum function_id {
|
enum function_id {
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
|
@ -0,0 +1,76 @@
|
||||||
|
#include "gh60.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
|
||||||
|
#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* 0: qwerty */
|
||||||
|
KEYMAP_HHKB(
|
||||||
|
F(0),KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSLS,KC_GRV,\
|
||||||
|
KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSPC,\
|
||||||
|
KC_LCTL,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,F(1),\
|
||||||
|
KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_RGUI,KC_RALT,KC_APP,KC_RCTL),
|
||||||
|
/* 1: fn */
|
||||||
|
KEYMAP_HHKB(
|
||||||
|
KC_GRV,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_TRNS,KC_TRNS,\
|
||||||
|
KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,\
|
||||||
|
KC_TRNS,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RIGHT,KC_PENT,\
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END,KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS,\
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
|
||||||
|
};
|
||||||
|
|
||||||
|
enum function_id {
|
||||||
|
SHIFT_ESC,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[0] = ACTION_FUNCTION(SHIFT_ESC),
|
||||||
|
[1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
static uint8_t shift_esc_shift_mask;
|
||||||
|
switch (id) {
|
||||||
|
case SHIFT_ESC:
|
||||||
|
shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (shift_esc_shift_mask) {
|
||||||
|
add_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
add_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (shift_esc_shift_mask) {
|
||||||
|
del_key(KC_GRV);
|
||||||
|
send_keyboard_report();
|
||||||
|
} else {
|
||||||
|
del_key(KC_ESC);
|
||||||
|
send_keyboard_report();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
/* ws2812 RGB LED */
|
/* ws2812 RGB LED */
|
||||||
#define RGB_DI_PIN D5
|
#define RGB_DI_PIN D5
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 13 // Number of LEDs
|
#define RGBLED_NUM 13 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
ifndef MAKEFILE_INCLUDED
|
||||||
|
include ../../../Makefile
|
||||||
|
endif
|
|
@ -0,0 +1,162 @@
|
||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <wakojun@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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CONFIG_H
|
||||||
|
#define CONFIG_H
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x6660
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Priyadi
|
||||||
|
#define PRODUCT Promethium Keyboard
|
||||||
|
#define DESCRIPTION Promethium Keyboard
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 6
|
||||||
|
|
||||||
|
/* default pin-out */
|
||||||
|
#define MATRIX_COL_PINS { B6, B7, D6, C7, F6, F7 }
|
||||||
|
#define MATRIX_ROW_PINS { D7, C6, D0, D1, F5, F4, F1, F0 }
|
||||||
|
#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* 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 DEBOUNCING_DELAY 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
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* PS/2 mouse */
|
||||||
|
#ifdef PS2_USE_BUSYWAIT
|
||||||
|
# define PS2_CLOCK_PORT PORTD
|
||||||
|
# define PS2_CLOCK_PIN PIND
|
||||||
|
# define PS2_CLOCK_DDR DDRD
|
||||||
|
# define PS2_CLOCK_BIT 1
|
||||||
|
# define PS2_DATA_PORT PORTD
|
||||||
|
# define PS2_DATA_PIN PIND
|
||||||
|
# define PS2_DATA_DDR DDRD
|
||||||
|
# define PS2_DATA_BIT 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* PS/2 mouse interrupt version */
|
||||||
|
#ifdef PS2_USE_INT
|
||||||
|
/* uses INT1 for clock line(ATMega32U4) */
|
||||||
|
#define PS2_CLOCK_PORT PORTD
|
||||||
|
#define PS2_CLOCK_PIN PIND
|
||||||
|
#define PS2_CLOCK_DDR DDRD
|
||||||
|
#define PS2_CLOCK_BIT 3
|
||||||
|
#define PS2_DATA_PORT PORTD
|
||||||
|
#define PS2_DATA_PIN PIND
|
||||||
|
#define PS2_DATA_DDR DDRD
|
||||||
|
#define PS2_DATA_BIT 2
|
||||||
|
|
||||||
|
#define PS2_INT_INIT() do { \
|
||||||
|
EICRA |= ((1<<ISC31) | \
|
||||||
|
(0<<ISC30)); \
|
||||||
|
} while (0)
|
||||||
|
#define PS2_INT_ON() do { \
|
||||||
|
EIMSK |= (1<<INT3); \
|
||||||
|
} while (0)
|
||||||
|
#define PS2_INT_OFF() do { \
|
||||||
|
EIMSK &= ~(1<<INT3); \
|
||||||
|
} while (0)
|
||||||
|
#define PS2_INT_VECT INT3_vect
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* PS/2 mouse USART version */
|
||||||
|
#ifdef PS2_USE_USART
|
||||||
|
/* XCK for clock line and RXD for data line */
|
||||||
|
#define PS2_CLOCK_PORT PORTD
|
||||||
|
#define PS2_CLOCK_PIN PIND
|
||||||
|
#define PS2_CLOCK_DDR DDRD
|
||||||
|
#define PS2_CLOCK_BIT 5
|
||||||
|
#define PS2_DATA_PORT PORTD
|
||||||
|
#define PS2_DATA_PIN PIND
|
||||||
|
#define PS2_DATA_DDR DDRD
|
||||||
|
#define PS2_DATA_BIT 2
|
||||||
|
|
||||||
|
/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */
|
||||||
|
/* set DDR of CLOCK as input to be slave */
|
||||||
|
#define PS2_USART_INIT() do { \
|
||||||
|
PS2_CLOCK_DDR &= ~(1<<PS2_CLOCK_BIT); \
|
||||||
|
PS2_DATA_DDR &= ~(1<<PS2_DATA_BIT); \
|
||||||
|
UCSR1C = ((1 << UMSEL10) | \
|
||||||
|
(3 << UPM10) | \
|
||||||
|
(0 << USBS1) | \
|
||||||
|
(3 << UCSZ10) | \
|
||||||
|
(0 << UCPOL1)); \
|
||||||
|
UCSR1A = 0; \
|
||||||
|
UBRR1H = 0; \
|
||||||
|
UBRR1L = 0; \
|
||||||
|
} while (0)
|
||||||
|
#define PS2_USART_RX_INT_ON() do { \
|
||||||
|
UCSR1B = ((1 << RXCIE1) | \
|
||||||
|
(1 << RXEN1)); \
|
||||||
|
} while (0)
|
||||||
|
#define PS2_USART_RX_POLL_ON() do { \
|
||||||
|
UCSR1B = (1 << RXEN1); \
|
||||||
|
} while (0)
|
||||||
|
#define PS2_USART_OFF() do { \
|
||||||
|
UCSR1C = 0; \
|
||||||
|
UCSR1B &= ~((1 << RXEN1) | \
|
||||||
|
(1 << TXEN1)); \
|
||||||
|
} while (0)
|
||||||
|
#define PS2_USART_RX_READY (UCSR1A & (1<<RXC1))
|
||||||
|
#define PS2_USART_RX_DATA UDR1
|
||||||
|
#define PS2_USART_ERROR (UCSR1A & ((1<<FE1) | (1<<DOR1) | (1<<UPE1)))
|
||||||
|
#define PS2_USART_RX_VECT USART1_RX_vect
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
UNICODEMAP_ENABLE = yes
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
PS2_MOUSE_ENABLE = yes
|
||||||
|
PS2_USE_INT = yes
|
||||||
|
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../../Makefile
|
||||||
|
endif
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef CONFIG_USER_H
|
||||||
|
#define CONFIG_USER_H
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
/* bootmagic salt key */
|
||||||
|
#define BOOTMAGIC_KEY_SALT KC_ESC
|
||||||
|
|
||||||
|
/* skip bootmagic and eeconfig */
|
||||||
|
#define BOOTMAGIC_KEY_SKIP KC_SPACE
|
||||||
|
|
||||||
|
#define PREVENT_STUCK_MODIFIERS
|
||||||
|
|
||||||
|
#define RGB_DI_PIN B5
|
||||||
|
#define RGBSPS_NUM 57
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
avrdude -p m32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:../../../../../.build/handwired_promethium_priyadi.hex
|
|
@ -0,0 +1,841 @@
|
||||||
|
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||||
|
// this is the style you want to emulate.
|
||||||
|
|
||||||
|
#include "promethium.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
#include "audio.h"
|
||||||
|
#include "musical_notes.h"
|
||||||
|
#endif
|
||||||
|
#include "eeconfig.h"
|
||||||
|
#include "process_unicode.h"
|
||||||
|
#include "quantum.h"
|
||||||
|
#include "rgbsps.h"
|
||||||
|
#include "ps2_mouse.h"
|
||||||
|
#include "ps2.h"
|
||||||
|
#define COUNT(x) (sizeof (x) / sizeof (*(x)))
|
||||||
|
|
||||||
|
// #define RGBLED_NUM 5
|
||||||
|
// struct cRGB led[RGBLED_NUM];
|
||||||
|
|
||||||
|
|
||||||
|
extern keymap_config_t keymap_config;
|
||||||
|
|
||||||
|
enum layers {
|
||||||
|
_QWERTY,
|
||||||
|
_COLEMAK,
|
||||||
|
_WORKMAN,
|
||||||
|
_PUNC,
|
||||||
|
_NUM,
|
||||||
|
_FUNC,
|
||||||
|
_EMOJI,
|
||||||
|
_GUI,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum planck_keycodes {
|
||||||
|
// layouts
|
||||||
|
QWERTY = SAFE_RANGE,
|
||||||
|
COLEMAK,
|
||||||
|
WORKMAN,
|
||||||
|
|
||||||
|
// layer switchers
|
||||||
|
PUNC,
|
||||||
|
NUM,
|
||||||
|
FUNC,
|
||||||
|
EMOJI,
|
||||||
|
GUI,
|
||||||
|
|
||||||
|
// os switchers
|
||||||
|
LINUX,
|
||||||
|
WIN,
|
||||||
|
OSX,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Fillers to make layering clearer
|
||||||
|
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define XXXXXXX KC_NO
|
||||||
|
|
||||||
|
// unicode map
|
||||||
|
|
||||||
|
enum unicode_name {
|
||||||
|
GRIN, // grinning face 😊
|
||||||
|
TJOY, // tears of joy 😂
|
||||||
|
SMILE, // grining face with smiling eyes 😁
|
||||||
|
HEART, // heart ❤
|
||||||
|
EYERT, // smiling face with heart shaped eyes 😍
|
||||||
|
CRY, // crying face 😭
|
||||||
|
SMEYE, // smiling face with smiling eyes 😊
|
||||||
|
UNAMU, // unamused 😒
|
||||||
|
KISS, // kiss 😘
|
||||||
|
HART2, // two hearts 💕
|
||||||
|
WEARY, // weary 😩
|
||||||
|
OKHND, // ok hand sign 👌
|
||||||
|
PENSV, // pensive 😔
|
||||||
|
SMIRK, // smirk 😏
|
||||||
|
RECYC, // recycle ♻
|
||||||
|
WINK, // wink 😉
|
||||||
|
THMUP, // thumb up 👍
|
||||||
|
THMDN, // thumb down 👎
|
||||||
|
PRAY, // pray 🙏
|
||||||
|
PHEW, // relieved 😌
|
||||||
|
MUSIC, // musical notes
|
||||||
|
FLUSH, // flushed 😳
|
||||||
|
CELEB, // celebration 🙌
|
||||||
|
CRY2, // crying face 😢
|
||||||
|
COOL, // smile with sunglasses 😎
|
||||||
|
NOEVS, // see no evil
|
||||||
|
NOEVH, // hear no evil
|
||||||
|
NOEVK, // speak no evil
|
||||||
|
POO, // pile of poo
|
||||||
|
EYES, // eyes
|
||||||
|
VIC, // victory hand
|
||||||
|
BHART, // broken heart
|
||||||
|
SLEEP, // sleeping face
|
||||||
|
SMIL2, // smiling face with open mouth & sweat
|
||||||
|
HUNRD, // 100
|
||||||
|
CONFU, // confused
|
||||||
|
TONGU, // face with tongue & winking eye
|
||||||
|
DISAP, // disappointed
|
||||||
|
YUMMY, // face savoring delicious food
|
||||||
|
CLAP, // hand clapping
|
||||||
|
FEAR, // face screaming in fear
|
||||||
|
HORNS, // smiling face with horns
|
||||||
|
HALO, // smiling face with halo
|
||||||
|
BYE, // waving hand
|
||||||
|
SUN, // sun
|
||||||
|
MOON, // moon
|
||||||
|
SKULL, // skull
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint32_t PROGMEM unicode_map[] = {
|
||||||
|
[GRIN] = 0x1F600,
|
||||||
|
[TJOY] = 0x1F602,
|
||||||
|
[SMILE] = 0x1F601,
|
||||||
|
[HEART] = 0x2764,
|
||||||
|
[EYERT] = 0x1f60d,
|
||||||
|
[CRY] = 0x1f62d,
|
||||||
|
[SMEYE] = 0x1F60A,
|
||||||
|
[UNAMU] = 0x1F612,
|
||||||
|
[KISS] = 0x1F618,
|
||||||
|
[HART2] = 0x1F495,
|
||||||
|
[WEARY] = 0x1F629,
|
||||||
|
[OKHND] = 0x1F44C,
|
||||||
|
[PENSV] = 0x1F614,
|
||||||
|
[SMIRK] = 0x1F60F,
|
||||||
|
[RECYC] = 0x267B,
|
||||||
|
[WINK] = 0x1F609,
|
||||||
|
[THMUP] = 0x1F44D,
|
||||||
|
[THMDN] = 0x1F44E,
|
||||||
|
[PRAY] = 0x1F64F,
|
||||||
|
[PHEW] = 0x1F60C,
|
||||||
|
[MUSIC] = 0x1F3B6,
|
||||||
|
[FLUSH] = 0x1F633,
|
||||||
|
[CELEB] = 0x1F64C,
|
||||||
|
[CRY2] = 0x1F622,
|
||||||
|
[COOL] = 0x1F60E,
|
||||||
|
[NOEVS] = 0x1F648,
|
||||||
|
[NOEVH] = 0x1F649,
|
||||||
|
[NOEVK] = 0x1F64A,
|
||||||
|
[POO] = 0x1F4A9,
|
||||||
|
[EYES] = 0x1F440,
|
||||||
|
[VIC] = 0x270C,
|
||||||
|
[BHART] = 0x1F494,
|
||||||
|
[SLEEP] = 0x1F634,
|
||||||
|
[SMIL2] = 0x1F605,
|
||||||
|
[HUNRD] = 0x1F4AF,
|
||||||
|
[CONFU] = 0x1F615,
|
||||||
|
[TONGU] = 0x1F61C,
|
||||||
|
[DISAP] = 0x1F61E,
|
||||||
|
[YUMMY] = 0x1F60B,
|
||||||
|
[CLAP] = 0x1F44F,
|
||||||
|
[FEAR] = 0x1F631,
|
||||||
|
[HORNS] = 0x1F608,
|
||||||
|
[HALO] = 0x1F607,
|
||||||
|
[BYE] = 0x1F44B,
|
||||||
|
[SUN] = 0x2600,
|
||||||
|
[MOON] = 0x1F314,
|
||||||
|
[SKULL] = 0x1F480,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// hybrid shift - =
|
||||||
|
// #undef KC_LSFT
|
||||||
|
// #define KC_LSFT MT(MOD_LSFT, KC_MINS)
|
||||||
|
// #undef KC_RSFT
|
||||||
|
// #define KC_RSFT MT(MOD_LSFT, KC_EQL)
|
||||||
|
|
||||||
|
|
||||||
|
// hybrid right-gui & scroll lock (mapped to Compose in OS)
|
||||||
|
#undef KC_RCTL
|
||||||
|
#define KC_RCTL MT(MOD_LCTL, KC_SLCK)
|
||||||
|
|
||||||
|
// RGBSPS
|
||||||
|
|
||||||
|
const uint8_t PROGMEM LED_ALNUM[] = {
|
||||||
|
LED_Z,
|
||||||
|
LED_A,
|
||||||
|
LED_Q,
|
||||||
|
LED_W,
|
||||||
|
LED_S,
|
||||||
|
LED_X,
|
||||||
|
LED_C,
|
||||||
|
LED_D,
|
||||||
|
LED_E,
|
||||||
|
LED_R,
|
||||||
|
LED_F,
|
||||||
|
LED_V,
|
||||||
|
LED_B,
|
||||||
|
LED_G,
|
||||||
|
LED_T,
|
||||||
|
LED_N,
|
||||||
|
LED_HH,
|
||||||
|
LED_Y,
|
||||||
|
LED_U,
|
||||||
|
LED_J,
|
||||||
|
LED_M,
|
||||||
|
LED_COMM,
|
||||||
|
LED_K,
|
||||||
|
LED_I,
|
||||||
|
LED_O,
|
||||||
|
LED_L,
|
||||||
|
LED_DOT,
|
||||||
|
LED_SLSH,
|
||||||
|
LED_SCLN,
|
||||||
|
LED_P,
|
||||||
|
LED_LSPC,
|
||||||
|
LED_RSPC
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM LED_MODS[] = {
|
||||||
|
LED_TAB,
|
||||||
|
LED_ESC,
|
||||||
|
LED_LSFT,
|
||||||
|
LED_LCTL,
|
||||||
|
LED_LGUI,
|
||||||
|
LED_LALT,
|
||||||
|
LED_RALT,
|
||||||
|
LED_RGUI,
|
||||||
|
LED_BKSP,
|
||||||
|
LED_ENT,
|
||||||
|
LED_RSFT,
|
||||||
|
LED_RCTL
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM LED_FN[] = {
|
||||||
|
LED_PUNC,
|
||||||
|
LED_NUM,
|
||||||
|
LED_FUNC,
|
||||||
|
LED_EMOJI
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM LED_INDICATORS[] = {
|
||||||
|
LED_IND_EMOJI,
|
||||||
|
LED_IND_NUM,
|
||||||
|
LED_IND_FUNC,
|
||||||
|
LED_IND_BATTERY,
|
||||||
|
LED_IND_USB,
|
||||||
|
LED_IND_BLUETOOTH,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t PROGMEM LED_TRACKPOINT[] = {
|
||||||
|
LED_TRACKPOINT1,
|
||||||
|
LED_TRACKPOINT2,
|
||||||
|
LED_TRACKPOINT3,
|
||||||
|
};
|
||||||
|
|
||||||
|
void led_reset(void) {
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 6, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_layer_normal(void) {
|
||||||
|
rgbsps_set(LED_IND_FUNC, 0, 0, 0);
|
||||||
|
rgbsps_set(LED_IND_NUM, 0, 0, 0);
|
||||||
|
rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
|
||||||
|
|
||||||
|
led_reset();
|
||||||
|
|
||||||
|
rgbsps_send();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_layer_func(void) {
|
||||||
|
rgbsps_set(LED_IND_FUNC, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_IND_NUM, 0, 0, 0);
|
||||||
|
rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
|
||||||
|
|
||||||
|
led_reset();
|
||||||
|
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
rgbsps_set(LED_I, 15, 0, 15);
|
||||||
|
rgbsps_set(LED_J, 15, 0, 15);
|
||||||
|
rgbsps_set(LED_K, 15, 0, 15);
|
||||||
|
rgbsps_set(LED_L, 15, 0, 15);
|
||||||
|
|
||||||
|
rgbsps_set(LED_U, 15, 0, 0);
|
||||||
|
rgbsps_set(LED_O, 15, 0, 0);
|
||||||
|
rgbsps_set(LED_COMM, 15, 0, 0);
|
||||||
|
rgbsps_set(LED_DOT, 15, 0, 0);
|
||||||
|
rgbsps_set(LED_SCLN, 15, 0, 0);
|
||||||
|
rgbsps_set(LED_P, 15, 0, 0);
|
||||||
|
|
||||||
|
rgbsps_set(LED_Q, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_W, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_E, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_R, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_A, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_S, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_D, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_F, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_Z, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_X, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_C, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_V, 0, 15, 0);
|
||||||
|
|
||||||
|
rgbsps_send();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_layer_punc(void) {
|
||||||
|
rgbsps_set(LED_IND_FUNC, 0, 15, 0);
|
||||||
|
rgbsps_set(LED_IND_NUM, 0, 0, 15);
|
||||||
|
rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
|
||||||
|
|
||||||
|
led_reset();
|
||||||
|
|
||||||
|
rgbsps_send();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_layer_num(void) {
|
||||||
|
rgbsps_set(LED_IND_FUNC, 0, 0, 0);
|
||||||
|
rgbsps_set(LED_IND_NUM, 0, 0, 15);
|
||||||
|
rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
|
||||||
|
|
||||||
|
led_reset();
|
||||||
|
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
rgbsps_set(LED_U, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_I, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_O, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_J, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_K, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_L, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_M, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_COMM, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_DOT, 0, 5, 15);
|
||||||
|
rgbsps_set(LED_FUNC, 0, 5, 15);
|
||||||
|
|
||||||
|
rgbsps_set(LED_EMOJI, 0, 10, 15);
|
||||||
|
rgbsps_set(LED_RALT, 0, 10, 15);
|
||||||
|
|
||||||
|
rgbsps_set(LED_Q, 0, 10, 15);
|
||||||
|
rgbsps_set(LED_W, 0, 10, 15);
|
||||||
|
rgbsps_set(LED_E, 0, 10, 15);
|
||||||
|
rgbsps_set(LED_R, 0, 10, 15);
|
||||||
|
rgbsps_set(LED_T, 0, 10, 15);
|
||||||
|
rgbsps_set(LED_Y, 0, 10, 15);
|
||||||
|
rgbsps_set(LED_P, 0, 10, 15);
|
||||||
|
|
||||||
|
rgbsps_set(LED_A, 0, 15, 15);
|
||||||
|
rgbsps_set(LED_S, 0, 15, 15);
|
||||||
|
rgbsps_set(LED_D, 0, 15, 15);
|
||||||
|
rgbsps_set(LED_F, 0, 15, 15);
|
||||||
|
rgbsps_set(LED_Z, 0, 15, 15);
|
||||||
|
rgbsps_set(LED_X, 0, 15, 15);
|
||||||
|
rgbsps_set(LED_C, 0, 15, 15);
|
||||||
|
rgbsps_set(LED_V, 0, 15, 15);
|
||||||
|
|
||||||
|
rgbsps_send();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_layer_emoji(void) {
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 15, 0);
|
||||||
|
}
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_MODS); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 15, 0);
|
||||||
|
}
|
||||||
|
for(uint8_t i = 0; i < COUNT(LED_FN); i++) {
|
||||||
|
rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
rgbsps_set(LED_IND_FUNC, 0, 0, 0);
|
||||||
|
rgbsps_set(LED_IND_NUM, 0, 0, 0);
|
||||||
|
rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
|
||||||
|
|
||||||
|
rgbsps_set(LED_PUNC, 15, 15, 15);
|
||||||
|
rgbsps_set(LED_EMOJI, 15, 15, 15);
|
||||||
|
|
||||||
|
rgbsps_send();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_layer_gui(void) {
|
||||||
|
rgbsps_set(LED_IND_FUNC, 15, 10, 15);
|
||||||
|
rgbsps_set(LED_IND_NUM, 15, 10, 15);
|
||||||
|
rgbsps_set(LED_IND_EMOJI, 15, 10, 15);
|
||||||
|
rgbsps_send();
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_init(void) {
|
||||||
|
// turn off all
|
||||||
|
rgbsps_turnoff();
|
||||||
|
|
||||||
|
// set trackpoint color
|
||||||
|
rgbsps_set(LED_TRACKPOINT1, 15, 0, 0);
|
||||||
|
rgbsps_set(LED_TRACKPOINT2, 0, 0, 15);
|
||||||
|
rgbsps_set(LED_TRACKPOINT3, 15, 0, 0);
|
||||||
|
|
||||||
|
// // hardcode indicator for now
|
||||||
|
rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15);
|
||||||
|
rgbsps_set(LED_IND_USB, 15, 15, 15);
|
||||||
|
rgbsps_set(LED_IND_BATTERY, 0, 15, 0);
|
||||||
|
|
||||||
|
led_layer_normal();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// keymaps
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | D | F | G | H | J | K | L | ; |Enter |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = KEYMAP(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT ,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Colemak
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | R | S | T | D | H | N | E | I | O |Enter |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_COLEMAK] = KEYMAP(
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT ,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Workman
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | H | T | G | Y | N | E | O | I |Enter |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | M | C | V | K | K | , | . | / |Shift |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_WORKMAN] = KEYMAP(
|
||||||
|
KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC,
|
||||||
|
KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT ,
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||||
|
KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Punc
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | \ | - | = | < | > | ( | ) | ' | | |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | | | | _ | + | { | } | [ | ] | " | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_PUNC] = KEYMAP(
|
||||||
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV ,
|
||||||
|
XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS, KC_EQL, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_QUOT, XXXXXXX, XXXXXXX,
|
||||||
|
XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_DQUO, XXXXXXX, XXXXXXX,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Num
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | @ | A | B | C | ( | ) | 4 | 5 | 6 | : |Enter |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | & | # | D | E | F | [ | ] | 1 | 2 | 3 | / | * |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | x | | | 0 | , | . | + | - |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_NUM] = KEYMAP(
|
||||||
|
KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
KC_ESC, KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_COLN, KC_ENT,
|
||||||
|
KC_AMPR, KC_HASH, S(KC_D), S(KC_E), S(KC_F), KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, KC_SLSH, KC_ASTR,
|
||||||
|
_______, _______, _______, KC_X, _______, KC_SPC, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_MINS
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Func
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | F1 | F2 | F3 | F4 | | | PgUp | Up | PgDn | PgUp | Del |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | Ins |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | | F9 | F10 | F11 | F12 | | | | Home | End | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_FUNC] = KEYMAP(
|
||||||
|
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
|
||||||
|
XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,KC_PSCREEN,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS,
|
||||||
|
_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Emoji
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_EMOJI] = KEYMAP(
|
||||||
|
X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
|
||||||
|
X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
|
||||||
|
X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
|
||||||
|
X(POO), X(EYES),X(HUNRD), _______,X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK)
|
||||||
|
),
|
||||||
|
|
||||||
|
/* GUI
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* |Linux | | Vol- | Mute | Vol+ | | | D- | | D+ | |Qwerty|
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Win | | Prev | Play | Next | | | | | | |Colmak|
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | OSX | | | | | BL- | BL+ | | | | |Workmn|
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_GUI] = KEYMAP(
|
||||||
|
_______, LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5),LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0), _______,
|
||||||
|
LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,_______, QWERTY,
|
||||||
|
WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, COLEMAK,
|
||||||
|
OSX, _______, _______, _______, _______, BL_DEC, BL_INC, _______, _______, RGB_VAI, RGB_VAD, WORKMAN
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float tone_startup[][2] = SONG(STARTUP_SOUND);
|
||||||
|
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||||
|
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||||
|
float tone_workman[][2] = SONG(DVORAK_SOUND);
|
||||||
|
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
|
||||||
|
float tone_linux[][2] = SONG(CAPS_LOCK_ON_SOUND);
|
||||||
|
float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND);
|
||||||
|
float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND);
|
||||||
|
float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void persistant_default_layer_set(uint16_t default_layer) {
|
||||||
|
eeconfig_update_default_layer(default_layer);
|
||||||
|
default_layer_set(default_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
// faux clicky
|
||||||
|
if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
switch (keycode) {
|
||||||
|
case QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_QWERTY);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_COLEMAK);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case WORKMAN:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_workman, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_WORKMAN);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
case PUNC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_PUNC);
|
||||||
|
update_tri_layer(_PUNC, _EMOJI, _GUI);
|
||||||
|
if (IS_LAYER_ON(_GUI)) {
|
||||||
|
led_layer_gui();
|
||||||
|
} else {
|
||||||
|
led_layer_punc();;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
layer_off(_PUNC);
|
||||||
|
update_tri_layer(_PUNC, _EMOJI, _GUI);
|
||||||
|
if (IS_LAYER_ON(_EMOJI)) {
|
||||||
|
led_layer_emoji();
|
||||||
|
} else {
|
||||||
|
led_layer_normal();;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case EMOJI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_EMOJI);
|
||||||
|
update_tri_layer(_PUNC, _EMOJI, _GUI);
|
||||||
|
if (IS_LAYER_ON(_GUI)) {
|
||||||
|
led_layer_gui();
|
||||||
|
} else {
|
||||||
|
led_layer_emoji();;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
layer_off(_EMOJI);
|
||||||
|
update_tri_layer(_PUNC, _EMOJI, _GUI);
|
||||||
|
if (IS_LAYER_ON(_PUNC)) {
|
||||||
|
led_layer_punc();
|
||||||
|
} else {
|
||||||
|
led_layer_normal();;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case NUM:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_NUM);
|
||||||
|
led_layer_num();
|
||||||
|
} else {
|
||||||
|
layer_off(_NUM);
|
||||||
|
led_layer_normal();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case FUNC:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_FUNC);
|
||||||
|
led_layer_func();
|
||||||
|
} else {
|
||||||
|
layer_off(_FUNC);
|
||||||
|
led_layer_normal();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case LINUX:
|
||||||
|
set_unicode_input_mode(UC_LNX);
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_linux, false, 0);
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case WIN:
|
||||||
|
set_unicode_input_mode(UC_WINC);
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_windows, false, 0);
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
case OSX:
|
||||||
|
set_unicode_input_mode(UC_OSX);
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_osx, false, 0);
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
startup_user();
|
||||||
|
#endif
|
||||||
|
set_unicode_input_mode(UC_LNX);
|
||||||
|
led_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
// void init_rgblight(void) {
|
||||||
|
// for (uint8_t i = 0; i < RGBLED_NUM; i++) {
|
||||||
|
// led[i].r = 255;
|
||||||
|
// led[i].g = 85;
|
||||||
|
// led[i].b = 0;
|
||||||
|
// }
|
||||||
|
// ws2812_setleds(led, RGBLED_NUM);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
|
||||||
|
void startup_user()
|
||||||
|
{
|
||||||
|
_delay_ms(20); // gets rid of tick
|
||||||
|
PLAY_NOTE_ARRAY(tone_startup, false, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void shutdown_user()
|
||||||
|
{
|
||||||
|
PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
|
||||||
|
_delay_ms(150);
|
||||||
|
stop_all_notes();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void ps2_mouse_init_user() {
|
||||||
|
// set TrackPoint sensitivity
|
||||||
|
PS2_MOUSE_SEND(0xE2, "set trackpoint sensitivity: 0xE2");
|
||||||
|
PS2_MOUSE_SEND(0x81, "set trackpoint sensitivity: 0x81");
|
||||||
|
PS2_MOUSE_SEND(0x4A, "set trackpoint sensitivity: 0x4A");
|
||||||
|
PS2_MOUSE_SEND(0x60, "set trackpoint sensitivity: 0x60");
|
||||||
|
|
||||||
|
// set TrackPoint speed
|
||||||
|
// (transfer function upper plateau speed)
|
||||||
|
PS2_MOUSE_SEND(0xE2, "set trackpoint speed: 0xE2");
|
||||||
|
PS2_MOUSE_SEND(0x81, "set trackpoint speed: 0x81");
|
||||||
|
PS2_MOUSE_SEND(0x60, "set trackpoint speed: 0x60");
|
||||||
|
PS2_MOUSE_SEND(0x90, "set trackpoint speed: 0x90");
|
||||||
|
|
||||||
|
// set TrackPoint Negative Inertia factor
|
||||||
|
PS2_MOUSE_SEND(0xE2, "set negative inertia factor: 0xE2");
|
||||||
|
PS2_MOUSE_SEND(0x81, "set negative inertia factor: 0x81");
|
||||||
|
PS2_MOUSE_SEND(0x4D, "set negative inertia factor: 0x4D");
|
||||||
|
PS2_MOUSE_SEND(0x03, "set negative inertia factor: 0x03");
|
||||||
|
|
||||||
|
// disable up threshold (click)
|
||||||
|
PS2_MOUSE_SEND(0xE2, "set disable up threshold: 0xE2");
|
||||||
|
PS2_MOUSE_SEND(0x47, "set disable up threshold: 0x47");
|
||||||
|
PS2_MOUSE_SEND(0x2C, "set disable up threshold: 0x2C");
|
||||||
|
PS2_MOUSE_SEND(0x01, "set disable up threshold: 0x01");
|
||||||
|
|
||||||
|
// enable TrackPoint Press to Select (PtS)
|
||||||
|
// print("ps2_mouse_init: send 0xE2: ");
|
||||||
|
// rcv = ps2_host_send(0xE2);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// print("ps2_mouse_init: send 0x47: ");
|
||||||
|
// rcv = ps2_host_send(0x47);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// print("ps2_mouse_init: send 0x2C: ");
|
||||||
|
// rcv = ps2_host_send(0x2C);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// print("ps2_mouse_init: send 0x00: ");
|
||||||
|
// rcv = ps2_host_send(0x00);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
|
||||||
|
// set TrackPoint Press to Select threshold
|
||||||
|
// print("ps2_mouse_init: send 0xE2: ");
|
||||||
|
// rcv = ps2_host_send(0xE2);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// print("ps2_mouse_init: send 0x81: ");
|
||||||
|
// rcv = ps2_host_send(0x81);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// print("ps2_mouse_init: send 0x5C: ");
|
||||||
|
// rcv = ps2_host_send(0x5C);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// // default PtS threshold is 0x08
|
||||||
|
// print("ps2_mouse_init: send 0x04: ");
|
||||||
|
// rcv = ps2_host_send(0x04);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
|
||||||
|
// set TrackPoint Press to Select time constant (zTc)
|
||||||
|
// print("ps2_mouse_init: send 0xE2: ");
|
||||||
|
// rcv = ps2_host_send(0xE2);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// print("ps2_mouse_init: send 0x81: ");
|
||||||
|
// rcv = ps2_host_send(0x81);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// print("ps2_mouse_init: send 0x5E: ");
|
||||||
|
// rcv = ps2_host_send(0x5E);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// // default zTc is 0x26
|
||||||
|
// print("ps2_mouse_init: send 0x45: ");
|
||||||
|
// rcv = ps2_host_send(0x45);
|
||||||
|
// phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
|
||||||
|
/*
|
||||||
|
// set TrackPoint Press to Select Jenks Curvature (jkcur)
|
||||||
|
print("ps2_mouse_init: send 0xE2: ");
|
||||||
|
rcv = ps2_host_send(0xE2);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
print("ps2_mouse_init: send 0x81: ");
|
||||||
|
rcv = ps2_host_send(0x81);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
print("ps2_mouse_init: send 0x5D: ");
|
||||||
|
rcv = ps2_host_send(0x5D);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// default jkcur is 0x87
|
||||||
|
print("ps2_mouse_init: send 0x87: ");
|
||||||
|
rcv = ps2_host_send(0x87);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
// set TrackPoint Minimum Drag (mindrag)
|
||||||
|
print("ps2_mouse_init: send 0xE2: ");
|
||||||
|
rcv = ps2_host_send(0xE2);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
print("ps2_mouse_init: send 0x81: ");
|
||||||
|
rcv = ps2_host_send(0x81);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
print("ps2_mouse_init: send 0x59: ");
|
||||||
|
rcv = ps2_host_send(0x59);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
// default PtS mindrag is 0x14
|
||||||
|
print("ps2_mouse_init: send 0x14: ");
|
||||||
|
rcv = ps2_host_send(0x14);
|
||||||
|
phex(rcv); phex(ps2_error); print("\n");
|
||||||
|
*/
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
# How to add your own keymap
|
||||||
|
|
||||||
|
Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
|
||||||
|
|
||||||
|
_[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
|
||||||
|
|
||||||
|
\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
|
||||||
|
|
||||||
|
and contain the following files:
|
||||||
|
|
||||||
|
* `keymap.c`
|
||||||
|
* `readme.md` *recommended*
|
||||||
|
* `config.h` *optional*, found automatically when compiling
|
||||||
|
* `Makefile` *optional*, found automatically when compling
|
||||||
|
|
||||||
|
When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
|
||||||
|
|
||||||
|
* **folder_name** description
|
||||||
|
|
||||||
|
# List of Promethium keymaps
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "promethium.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
|
@ -0,0 +1,101 @@
|
||||||
|
#ifndef PROMETHIUM_H
|
||||||
|
#define PROMETHIUM_H
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define PS2_INIT_DELAY 2000
|
||||||
|
|
||||||
|
#define KEYMAP( \
|
||||||
|
k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
|
||||||
|
k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
|
||||||
|
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
|
||||||
|
k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{k11, k12, k13, k14, k15, k16}, \
|
||||||
|
{k21, k22, k23, k24, k25, k26}, \
|
||||||
|
{k31, k32, k33, k34, k35, k36}, \
|
||||||
|
{k41, k42, k43, k44, k45, k46}, \
|
||||||
|
{k17, k18, k19, k1a, k1b, k1c}, \
|
||||||
|
{k27, k28, k29, k2a, k2b, k2c}, \
|
||||||
|
{k37, k38, k39, k3a, k3b, k3c}, \
|
||||||
|
{k47, k48, k49, k4a, k4b, k4c} \
|
||||||
|
}
|
||||||
|
|
||||||
|
enum led_sequence {
|
||||||
|
LED_IND_BLUETOOTH,
|
||||||
|
LED_IND_USB,
|
||||||
|
LED_IND_BATTERY,
|
||||||
|
|
||||||
|
LED_IND_FUNC,
|
||||||
|
LED_IND_NUM,
|
||||||
|
LED_IND_EMOJI,
|
||||||
|
|
||||||
|
LED_BKSP,
|
||||||
|
LED_ENT,
|
||||||
|
LED_RSFT,
|
||||||
|
LED_RCTL,
|
||||||
|
|
||||||
|
LED_RGUI,
|
||||||
|
LED_SLSH,
|
||||||
|
LED_SCLN,
|
||||||
|
LED_P,
|
||||||
|
|
||||||
|
LED_O,
|
||||||
|
LED_L,
|
||||||
|
LED_DOT,
|
||||||
|
LED_RALT,
|
||||||
|
|
||||||
|
LED_EMOJI,
|
||||||
|
LED_COMM,
|
||||||
|
LED_K,
|
||||||
|
LED_I,
|
||||||
|
|
||||||
|
LED_U,
|
||||||
|
LED_J,
|
||||||
|
LED_M,
|
||||||
|
LED_FUNC,
|
||||||
|
|
||||||
|
LED_RSPC,
|
||||||
|
LED_N,
|
||||||
|
LED_HH,
|
||||||
|
LED_Y,
|
||||||
|
|
||||||
|
LED_TRACKPOINT3,
|
||||||
|
LED_TRACKPOINT2,
|
||||||
|
LED_TRACKPOINT1,
|
||||||
|
|
||||||
|
LED_LSPC,
|
||||||
|
LED_B,
|
||||||
|
LED_G,
|
||||||
|
LED_T,
|
||||||
|
|
||||||
|
LED_R,
|
||||||
|
LED_F,
|
||||||
|
LED_V,
|
||||||
|
LED_NUM,
|
||||||
|
|
||||||
|
LED_PUNC,
|
||||||
|
LED_C,
|
||||||
|
LED_D,
|
||||||
|
LED_E,
|
||||||
|
|
||||||
|
LED_W,
|
||||||
|
LED_S,
|
||||||
|
LED_X,
|
||||||
|
LED_LALT,
|
||||||
|
|
||||||
|
LED_LGUI,
|
||||||
|
LED_Z,
|
||||||
|
LED_A,
|
||||||
|
LED_Q,
|
||||||
|
|
||||||
|
LED_TAB,
|
||||||
|
LED_ESC,
|
||||||
|
LED_LSFT,
|
||||||
|
LED_LCTL,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
Promethium Keyboard Firmware
|
||||||
|
============================
|
||||||
|
A handwired Planck based keyboard using the Adafruit Feather 32u4 Bluefruit LE controller.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* Single piece split form factor
|
||||||
|
* Columnar stagger
|
||||||
|
* Trackpoint
|
||||||
|
* Bluetooth LE *TBD*
|
||||||
|
* Battery
|
||||||
|
* Per switch RGB LED
|
||||||
|
* Proximity sensor for energy conservation *TBD*
|
|
@ -0,0 +1,24 @@
|
||||||
|
#include "light_ws2812.h"
|
||||||
|
#include "rgbsps.h"
|
||||||
|
|
||||||
|
struct cRGB led[RGBSPS_NUM];
|
||||||
|
|
||||||
|
void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) {
|
||||||
|
led[index].r = r;
|
||||||
|
led[index].g = g;
|
||||||
|
led[index].b = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b) {
|
||||||
|
for (uint16_t i = 0; i < RGBSPS_NUM; i++) {
|
||||||
|
rgbsps_set(i, r, g, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgbsps_turnoff(void) {
|
||||||
|
rgbsps_setall(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rgbsps_send(void) {
|
||||||
|
ws2812_setleds(led, RGBSPS_NUM);
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b);
|
||||||
|
void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b);
|
||||||
|
void rgbsps_turnoff(void);
|
||||||
|
void rgbsps_send(void);
|
|
@ -0,0 +1,74 @@
|
||||||
|
|
||||||
|
# MCU name
|
||||||
|
#MCU = at90usb1287
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 8000000
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
# Boot Section Size in *bytes*
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE ?= no # MIDI controls
|
||||||
|
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||||
|
UNICODE_ENABLE ?= no # Unicode
|
||||||
|
UNICODEMAP_ENABLE ?= yes
|
||||||
|
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
PS2_MOUSE_ENABLE ?= yes
|
||||||
|
PS2_USE_INT ?= yes
|
||||||
|
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
SRC += $(QUANTUM_DIR)/light_ws2812.c
|
||||||
|
SRC += rgbsps.c
|
|
@ -0,0 +1 @@
|
||||||
|
OPT_DEFS += -DHHKB_JP
|
|
@ -0,0 +1,86 @@
|
||||||
|
###Keymaps with both Dvorak layout and QWER layout for HHKB JP.
|
||||||
|
|
||||||
|
1. The default layout is Dvorak.
|
||||||
|
2. Use `Tog` to toggle between Dvorak and QWER
|
||||||
|
3. Holding `NewCmd`, the original `LftCmd`, will activate the `NewCmd` layer which means `NewCmd+key` is the same as `Cmd+key` in normal QWER layout.<sup>[1](#cmdTab)</sup>
|
||||||
|
- For example, no matter you are in Dvorak layout or QWER layout, you can use `Cmd+s` to save a currently editing file.
|
||||||
|
4. `Symb` makes type symbols easier
|
||||||
|
- for example: `Symb+a` is `!`.
|
||||||
|
5. `Spc+key` equals to `Shft+key` while using `Spc` alone will yield a space as usual.
|
||||||
|
6. There's an extra `Tab` in the last line.
|
||||||
|
|
||||||
|
```
|
||||||
|
Layer DVOR:
|
||||||
|
,-----------------------------------------------------------.
|
||||||
|
|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| |Bsp|
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
|Tab | '| ,| .| P| Y| F| G| C| R| L| /| =| |
|
||||||
|
|------------------------------------------------------` Ent|
|
||||||
|
|Ctrl | A| O| E| U| I| D| H| T| N| S| -| \| |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
|Shft | ;| Q| J| K| X| B| M| W| V| Z| | Up| |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
|FN| `| Alt|NewCmd|Symb| Spc |Symb|Tab|RCmd|Tog|Lft|Dwn|Rgh|
|
||||||
|
`-----------------------------------------------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Layer QWER:
|
||||||
|
,-----------------------------------------------------------.
|
||||||
|
|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =| |Bsp|
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| |
|
||||||
|
|------------------------------------------------------` Ent|
|
||||||
|
|Ctrl | A| S| D| F| G| H| J| K| L| ;| '| \| |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
|Shft | Z| X| C| V| B| N| M| ,| .| /| | Up| |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
|FN| `| Alt|NewCmd|Symb| Spc |Symb|Tab|Cmd|Tog|Lft|Dwn|Rgh|
|
||||||
|
`-----------------------------------------------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Layer Symb:
|
||||||
|
,-----------------------------------------------------------.
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| | | | [| ]| | | {| }| | | | | |
|
||||||
|
|------------------------------------------------------` |
|
||||||
|
| | !| @| #| $| %| ^| &| *| (| )| '| \| |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| | | | | | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| | | | | | | | | | | | | |
|
||||||
|
`-----------------------------------------------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Layer FUNC: HHKB mode (HHKB Fn)
|
||||||
|
,-----------------------------------------------------------.
|
||||||
|
|Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
|Caps | | | | | | | |Psc|Slk|Pus|Up | | |
|
||||||
|
|------------------------------------------------------` |
|
||||||
|
| |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| | | | | | | +| -|End|PgD|Dow| | | |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| || | | | | | | | | || | | |
|
||||||
|
`-----------------------------------------------------------'
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Empty Layer:
|
||||||
|
,-----------------------------------------------------------.
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| | | | | | | | | | | | | | |
|
||||||
|
|------------------------------------------------------` |
|
||||||
|
| | | | | | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| | | | | | | | | | | | | | |
|
||||||
|
|-----------------------------------------------------------|
|
||||||
|
| | | | | | | | | | | | | |
|
||||||
|
`-----------------------------------------------------------'
|
||||||
|
```
|
||||||
|
<a name="cmdTab">1</a>: `NewCmd + Tab` does not work, you can use `RCmd+Tab` to switch among applications.
|
|
@ -0,0 +1,60 @@
|
||||||
|
#include "hhkb.h"
|
||||||
|
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
|
||||||
|
enum {
|
||||||
|
DVOR,
|
||||||
|
QWER,
|
||||||
|
NEW_CMD,
|
||||||
|
SYMB,
|
||||||
|
FUNC
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[DVOR] = KEYMAP_JP(
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_JYEN, KC_BSPC,
|
||||||
|
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL,
|
||||||
|
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_BSLS, KC_ENT,
|
||||||
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RO, KC_UP, KC_RSFT,
|
||||||
|
MO(FUNC), KC_ZKHK, KC_LALT, MO(NEW_CMD), MO(SYMB), MT(MOD_LSFT, KC_SPC), MO(SYMB), KC_TAB, KC_RGUI, TG(QWER), KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
[QWER] = KEYMAP_JP(
|
||||||
|
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_JYEN, 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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_RO, KC_UP, KC_RSFT,
|
||||||
|
MO(FUNC), KC_ZKHK, KC_LALT, MO(NEW_CMD), MO(SYMB), MT(MOD_LSFT, KC_SPC), MO(SYMB), KC_TAB, KC_RGUI, _______, KC_LEFT, KC_DOWN, KC_RGHT
|
||||||
|
),
|
||||||
|
|
||||||
|
[NEW_CMD] = KEYMAP_JP(
|
||||||
|
_______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), _______, _______, _______, LGUI(KC_BSPC),
|
||||||
|
_______, LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC),
|
||||||
|
_______, LGUI(KC_A), LGUI(KC_S), LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), _______, _______, _______, _______,
|
||||||
|
LGUI(KC_LSFT), LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, LGUI(KC_SPC), _______, _______, _______, _______, LGUI(KC_LEFT), LGUI(KC_DOWN), LGUI(KC_RGHT)
|
||||||
|
),
|
||||||
|
|
||||||
|
[SYMB] = KEYMAP_JP(
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, LSFT(KC_LBRC), LSFT(KC_RBRC), _______, _______,_______, _______,
|
||||||
|
_______, LSFT(KC_1),LSFT(KC_2),LSFT(KC_3),LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
),
|
||||||
|
|
||||||
|
[FUNC] = KEYMAP_JP(
|
||||||
|
KC_PWR, 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_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______,
|
||||||
|
_______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) {
|
||||||
|
return MACRO_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|
||||||
|
};
|
|
@ -48,7 +48,7 @@
|
||||||
* @details Frequency of the system timer that drives the system ticks. This
|
* @details Frequency of the system timer that drives the system ticks. This
|
||||||
* setting also defines the system tick time unit.
|
* setting also defines the system tick time unit.
|
||||||
*/
|
*/
|
||||||
#define CH_CFG_ST_FREQUENCY 1000
|
#define CH_CFG_ST_FREQUENCY 100000
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Time delta constant for the tick-less mode.
|
* @brief Time delta constant for the tick-less mode.
|
||||||
|
|
|
@ -96,7 +96,12 @@ uint8_t matrix_scan(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wait_us(1); // need wait to settle pin state
|
// need wait to settle pin state
|
||||||
|
// if you wait too short, or have a too high update rate
|
||||||
|
// the keyboard might freeze, or there might not be enough
|
||||||
|
// processing power to update the LCD screen properly.
|
||||||
|
// 20us, or two ticks at 100000Hz seems to be OK
|
||||||
|
wait_us(20);
|
||||||
|
|
||||||
// read col data
|
// read col data
|
||||||
data = (palReadPort(GPIOD)>>1);
|
data = (palReadPort(GPIOD)>>1);
|
||||||
|
|
|
@ -70,7 +70,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
)
|
)
|
||||||
|
|
||||||
#define RGB_DI_PIN D3
|
#define RGB_DI_PIN D3
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 12 // Number of LEDs
|
#define RGBLED_NUM 12 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
|
|
@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------------------------------------+
|
||||||
* | | | | | | | | Psc | | | | | |
|
* | | | | | | | | Psc | | | | | |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------------------------------------+
|
||||||
* | | Led | Led-| Led+| | Mute| Vol+| Vol-| | | | Play | |
|
* | | Led | Led+| Led-| | Mute| Vol+| Vol-| | | | Play | |
|
||||||
* |-----------------------------------------------------------------------------------------+
|
* |-----------------------------------------------------------------------------------------+
|
||||||
* | | | | | | Prev | Stop | Next |
|
* | | | | | | Prev | Stop | Next |
|
||||||
* `-----------------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------------'
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
/* WS2812B RGB Underglow LED */
|
/* WS2812B RGB Underglow LED */
|
||||||
#define RGB_DI_PIN F5 // Based on wiring depicted in ws2812_wiring.jpg
|
#define RGB_DI_PIN F5 // Based on wiring depicted in ws2812_wiring.jpg
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case.
|
#define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case.
|
||||||
#define RGBLIGHT_HUE_STEP 8
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
#define RGBLIGHT_SAT_STEP 8
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
|
|
@ -28,29 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define PRODUCT Lets Split
|
#define PRODUCT Lets Split
|
||||||
#define DESCRIPTION A split keyboard for the cheap makers
|
#define DESCRIPTION A split keyboard for the cheap makers
|
||||||
|
|
||||||
/* key matrix size */
|
|
||||||
// Rows are doubled-up
|
|
||||||
#define MATRIX_ROWS 8
|
|
||||||
#define MATRIX_COLS 6
|
|
||||||
|
|
||||||
// wiring of each half
|
|
||||||
#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
|
|
||||||
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
|
|
||||||
|
|
||||||
#define CATERINA_BOOTLOADER
|
|
||||||
|
|
||||||
// #define USE_I2C
|
|
||||||
|
|
||||||
// Use serial if not using I2C
|
|
||||||
#ifndef USE_I2C
|
|
||||||
# define USE_SERIAL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// #define EE_HANDS
|
|
||||||
|
|
||||||
#define I2C_MASTER_LEFT
|
|
||||||
// #define I2C_MASTER_RIGHT
|
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW or ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
@ -73,19 +50,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
/* ws2812 RGB LED */
|
|
||||||
#define RGB_DI_PIN D4
|
|
||||||
#define RGBLIGHT_TIMER
|
|
||||||
#define RGBLED_NUM 8 // Number of LEDs
|
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
|
||||||
#define RGBLIGHT_VAL_STEP 17
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Feature disable options
|
|
||||||
* These options are also useful to firmware size reduction.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* disable debug print */
|
/* disable debug print */
|
||||||
//#define NO_DEBUG
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
@ -99,4 +63,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
//#define NO_ACTION_MACRO
|
//#define NO_ACTION_MACRO
|
||||||
//#define NO_ACTION_FUNCTION
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
#ifdef SUBPROJECT_rev1
|
||||||
|
#include "rev1/config.h"
|
||||||
|
#endif
|
||||||
|
#ifdef SUBPROJECT_rev2
|
||||||
|
#include "rev2/config.h"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 860 KiB |
|
@ -42,10 +42,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* `-----------------------------------------------------------------------------------'
|
* `-----------------------------------------------------------------------------------'
|
||||||
*/
|
*/
|
||||||
[_QWERTY] = KEYMAP( \
|
[_QWERTY] = KEYMAP( \
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
|
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
|
||||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
|
||||||
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
KC_LCTL, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, MT(MOD_LSFT, KC_SPC), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Colemak
|
/* Colemak
|
||||||
|
@ -83,41 +83,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
|
||||||
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||||
),
|
),
|
||||||
|
[3] = KEYMAP( \
|
||||||
/* Lower
|
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_LOWER] = KEYMAP( \
|
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
|
|
||||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
|
||||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
_______, _______, _______, _______, _______, KC_BSPC, MT(MOD_LSFT, KC_BSPC), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
||||||
),
|
),
|
||||||
|
[4] = KEYMAP( \
|
||||||
/* Raise
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
|
||||||
* ,-----------------------------------------------------------------------------------.
|
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
|
||||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
|
||||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
|
|
||||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
|
||||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
|
||||||
* `-----------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_RAISE] = KEYMAP( \
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
|
|
||||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
|
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
|
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
_______, _______, _______, _______, _______, KC_ENT, MT(MOD_LSFT, KC_ENT), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Adjust (Lower + Raise)
|
/* Adjust (Lower + Raise)
|
||||||
|
@ -134,11 +110,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_ADJUST] = KEYMAP( \
|
[_ADJUST] = KEYMAP( \
|
||||||
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
|
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
|
||||||
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
|
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
_______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
|
|
|
@ -75,7 +75,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
/* ws2812 RGB LED */
|
/* ws2812 RGB LED */
|
||||||
#define RGB_DI_PIN D4
|
#define RGB_DI_PIN D4
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 8 // Number of LEDs
|
#define RGBLED_NUM 8 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -75,7 +75,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
/* ws2812 RGB LED */
|
/* ws2812 RGB LED */
|
||||||
#define RGB_DI_PIN D4
|
#define RGB_DI_PIN D4
|
||||||
#define RGBLIGHT_TIMER
|
#define RGBLIGHT_ANIMATIONS
|
||||||
#define RGBLED_NUM 8 // Number of LEDs
|
#define RGBLED_NUM 8 // Number of LEDs
|
||||||
#define RGBLIGHT_HUE_STEP 10
|
#define RGBLIGHT_HUE_STEP 10
|
||||||
#define RGBLIGHT_SAT_STEP 17
|
#define RGBLIGHT_SAT_STEP 17
|
||||||
|
|
|
@ -1,32 +1 @@
|
||||||
#include "lets_split.h"
|
#include "lets_split.h"
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
float tone_startup[][2] = SONG(STARTUP_SOUND);
|
|
||||||
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
_delay_ms(20); // gets rid of tick
|
|
||||||
PLAY_NOTE_ARRAY(tone_startup, false, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// // green led on
|
|
||||||
// DDRD |= (1<<5);
|
|
||||||
// PORTD &= ~(1<<5);
|
|
||||||
|
|
||||||
// // orange led on
|
|
||||||
// DDRB |= (1<<0);
|
|
||||||
// PORTB &= ~(1<<0);
|
|
||||||
|
|
||||||
matrix_init_user();
|
|
||||||
};
|
|
||||||
|
|
||||||
void shutdown_user(void) {
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
|
|
||||||
_delay_ms(150);
|
|
||||||
stop_all_notes();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,25 +1,13 @@
|
||||||
#ifndef LETS_SPLIT_H
|
#ifndef LETS_SPLIT_H
|
||||||
#define LETS_SPLIT_H
|
#define LETS_SPLIT_H
|
||||||
|
|
||||||
|
#ifdef SUBPROJECT_rev1
|
||||||
|
#include "rev1.h"
|
||||||
|
#endif
|
||||||
|
#ifdef SUBPROJECT_rev2
|
||||||
|
#include "rev2.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
void promicro_bootloader_jmp(bool program);
|
|
||||||
|
|
||||||
#define KEYMAP( \
|
|
||||||
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 } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -0,0 +1,3 @@
|
||||||
|
ifndef MAKEFILE_INCLUDED
|
||||||
|
include ../../Makefile
|
||||||
|
endif
|
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
Copyright 2012 Jun Wako <wakojun@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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CONFIG_H
|
||||||
|
#define CONFIG_H
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x3060
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Wootpatoot
|
||||||
|
#define PRODUCT Lets Split
|
||||||
|
#define PRODUCT Lets Split v1
|
||||||
|
#define DESCRIPTION A split keyboard for the cheap makers
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 6
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
|
||||||
|
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
|
||||||
|
|
||||||
|
#define CATERINA_BOOTLOADER
|
||||||
|
|
||||||
|
// #define USE_I2C
|
||||||
|
// Use serial if not using I2C
|
||||||
|
#ifndef USE_I2C
|
||||||
|
# define USE_SERIAL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// #define EE_HANDS
|
||||||
|
|
||||||
|
#define I2C_MASTER_LEFT
|
||||||
|
// #define I2C_MASTER_RIGHT
|
||||||
|
|
||||||
|
/* 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 DEBOUNCING_DELAY 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
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,32 @@
|
||||||
|
#include "lets_split.h"
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float tone_startup[][2] = SONG(STARTUP_SOUND);
|
||||||
|
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
_delay_ms(20); // gets rid of tick
|
||||||
|
PLAY_NOTE_ARRAY(tone_startup, false, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// // green led on
|
||||||
|
// DDRD |= (1<<5);
|
||||||
|
// PORTD &= ~(1<<5);
|
||||||
|
|
||||||
|
// // orange led on
|
||||||
|
// DDRB |= (1<<0);
|
||||||
|
// PORTB &= ~(1<<0);
|
||||||
|
|
||||||
|
matrix_init_user();
|
||||||
|
};
|
||||||
|
|
||||||
|
void shutdown_user(void) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
|
||||||
|
_delay_ms(150);
|
||||||
|
stop_all_notes();
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef REV1_H
|
||||||
|
#define REV1_H
|
||||||
|
|
||||||
|
#include "../lets_split.h"
|
||||||
|
|
||||||
|
//void promicro_bootloader_jmp(bool program);
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
//void promicro_bootloader_jmp(bool program);
|
||||||
|
|
||||||
|
#define KEYMAP( \
|
||||||
|
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 } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue