diff --git a/Dockerfile b/Dockerfile index 744ded85797..88da06f02a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,7 @@ FROM debian:jessie MAINTAINER Erik Dasque -RUN apt-get update -RUN apt-get install --no-install-recommends -y build-essential \ +RUN apt-get update && apt-get install --no-install-recommends -y build-essential \ gcc \ unzip \ wget \ @@ -15,10 +14,8 @@ RUN apt-get install --no-install-recommends -y build-essential \ gcc-arm-none-eabi \ binutils-arm-none-eabi \ libnewlib-arm-none-eabi \ - git - -RUN apt-get clean -RUN rm -rf /var/lib/apt/lists/* + git \ + && rm -rf /var/lib/apt/lists/* ENV keyboard=ergodox ENV subproject=ez diff --git a/Makefile b/Makefile index 9d9c9629d54..6a93692bf69 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,8 @@ override SILENT := false ON_ERROR := error_occurred=1 +BREAK_ON_ERRORS = no + STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) ROOT_DIR := $(dir $(ROOT_MAKEFILE)) @@ -462,20 +464,25 @@ endef include $(ROOT_DIR)/message.mk +ifeq ($(strip $(BREAK_ON_ERRORS)), yes) +HANDLE_ERROR = exit 1 +else +HANDLE_ERROR = echo $$error_occurred > $(ERROR_FILE) +endif + # The empty line is important here, as it will force a new shell to be created for each command # Otherwise the command line will become too long with a lot of keyboards and keymaps define RUN_COMMAND +error_occurred=0;\ $(COMMAND_$(SILENT_MODE)_$(COMMAND))\ -if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi; +if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi; endef define RUN_TEST +error_occurred=0;\ $($(TEST)_COMMAND)\ -if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi; - +if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi; endef # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps @@ -527,14 +534,22 @@ test: test-all .PHONY: test-clean test-clean: test-all-clean +ifdef SKIP_VERSION +SKIP_GIT := yes +endif + # 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") else GIT_VERSION := NA endif +ifndef SKIP_VERSION 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_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) +else +BUILD_DATE := NA +endif include $(ROOT_DIR)/testlist.mk diff --git a/build_keyboard.mk b/build_keyboard.mk index 9da8277db94..9fa8c312632 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -176,22 +176,26 @@ endif ifeq ($(strip $(UCIS_ENABLE)), yes) OPT_DEFS += -DUCIS_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c + UNICODE_COMMON = yes SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c endif ifeq ($(strip $(UNICODEMAP_ENABLE)), yes) OPT_DEFS += -DUNICODEMAP_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c + UNICODE_COMMON = yes SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c endif ifeq ($(strip $(UNICODE_ENABLE)), yes) OPT_DEFS += -DUNICODE_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c + UNICODE_COMMON = yes SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c endif +ifeq ($(strip $(UNICODE_COMMON)), yes) + SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c +endif + ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) OPT_DEFS += -DRGBLIGHT_ENABLE SRC += $(QUANTUM_DIR)/light_ws2812.c diff --git a/keyboards/M10A/M10A.c b/keyboards/M10A/M10A.c new file mode 100644 index 00000000000..9a3bd15e1a0 --- /dev/null +++ b/keyboards/M10A/M10A.c @@ -0,0 +1,5 @@ +#include "M10A.h" + +void matrix_init_kb(void) { + matrix_init_user(); +} \ No newline at end of file diff --git a/keyboards/M10A/M10A.h b/keyboards/M10A/M10A.h new file mode 100644 index 00000000000..6ec334fb3c2 --- /dev/null +++ b/keyboards/M10A/M10A.h @@ -0,0 +1,19 @@ +#ifndef M10A_H +#define M10A_H + +#include "quantum.h" + +#define M10A( \ + k00, k01, k02, \ + k10, k11, k12, \ + k20, k21, k22, \ + k30, k31, k32 \ +) \ +{ \ + { k00, k01, k02 }, \ + { k10, k11, k12 }, \ + { k20, k21, k22 }, \ + { k30, k31, k32 } \ +} + +#endif diff --git a/keyboards/s60-x/Makefile b/keyboards/M10A/Makefile similarity index 100% rename from keyboards/s60-x/Makefile rename to keyboards/M10A/Makefile diff --git a/keyboards/M10A/config.h b/keyboards/M10A/config.h new file mode 100644 index 00000000000..f052ab62974 --- /dev/null +++ b/keyboards/M10A/config.h @@ -0,0 +1,82 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x0007 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Machine Industries +#define PRODUCT M10-A +#define DESCRIPTION RAMA x Machine Industries M10-A + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 3 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { B6, F7, F6, D6 } +#define MATRIX_COL_PINS { F5, F1, F0 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 6 + +/* 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 diff --git a/keyboards/M10A/keymaps/default/Makefile b/keyboards/M10A/keymaps/default/Makefile new file mode 100644 index 00000000000..457a3d01d4a --- /dev/null +++ b/keyboards/M10A/keymaps/default/Makefile @@ -0,0 +1,3 @@ +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/M10A/keymaps/default/keymap.c b/keyboards/M10A/keymaps/default/keymap.c new file mode 100644 index 00000000000..75abeb5b75a --- /dev/null +++ b/keyboards/M10A/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +// 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 "M10A.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum layers { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, + _LAYER4, + _LAYER5, + _LAYER6, + _LAYER7, + _LAYER8, + _LAYER9 +}; + +// // Fillers to make layering more clear +// #define _______ KC_TRNS +// #define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER1] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER2] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER3] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER4] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER5] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER6] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER7] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER8] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}}, + [_LAYER9] = {{KC_A, KC_B, KC_C}, {KC_D, KC_E, KC_F}, {KC_G, KC_H, KC_I}, {KC_NO, KC_NO, KC_J}} +}; + +void matrix_init_user(void) { + #ifdef BACKLIGHT_ENABLE + backlight_level(0); + #endif +} diff --git a/keyboards/M10A/rules.mk b/keyboards/M10A/rules.mk new file mode 100644 index 00000000000..f5a785dbcc3 --- /dev/null +++ b/keyboards/M10A/rules.mk @@ -0,0 +1,68 @@ +# 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 ?= 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 ?= yes # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= yes # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. +API_SYSEX_ENABLE = 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 diff --git a/keyboards/amj60/amj60.h b/keyboards/amj60/amj60.h index a0cb4733107..c508e479ca6 100644 --- a/keyboards/amj60/amj60.h +++ b/keyboards/amj60/amj60.h @@ -147,6 +147,21 @@ {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ } +#define KEYMAP_MAX( \ + 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, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ + k40, k41, k42, k45, k4a, k4b, k4c, k4d \ +) \ +{ \ + {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}, \ + {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ + {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ + {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ +} + void matrix_init_user(void); void matrix_scan_user(void); diff --git a/keyboards/amj60/keymaps/maximized/keymap.c b/keyboards/amj60/keymaps/maximized/keymap.c new file mode 100644 index 00000000000..d2a4be59f33 --- /dev/null +++ b/keyboards/amj60/keymaps/maximized/keymap.c @@ -0,0 +1,61 @@ +// 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 "amj60.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 _DEF 0 +#define _SPC 1 + +// dual-role shortcuts +#define SPACEDUAL LT(_SPC, KC_SPACE) + + +// increase readability +#define _______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _DEF: Default Layer + * ,-----------------------------------------------------------. + * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ~ | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| bspc| + * |-----------------------------------------------------------| + * |Caps | A| S| D| F| G| H| J| K| L| ;| '| Return | + * |-----------------------------------------------------------| + * |Sft | Fn0| Z| X| C| V| B| N| M| ,| .| /| Sft |Fn2| + * |-----------------------------------------------------------| + * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| + * `-----------------------------------------------------------' + */ + [_DEF] = KEYMAP_MAX( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, F(0), 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, SPACEDUAL, KC_RGUI, KC_RALT, KC_RCTL, F(2)), + + /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) + * ,-----------------------------------------------------------. + * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | | + * |-----------------------------------------------------------| + * | |Paus| Up| [ | ] | | | | ( | ) | | | | Del | + * |-----------------------------------------------------------| + * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | + * |-----------------------------------------------------------| + * | | | | | < | > | |M0 | | | | | Vol+ | | + * |-----------------------------------------------------------| + * | | | | |Alt |Prev|Vol-|Next| + * `-----------------------------------------------------------' + */ + [_SPC] = KEYMAP_MAX( + KC_PSCR, 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_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_MPLY, \ + _______, _______, _______, _______, _______, _______, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ + _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), + +}; diff --git a/keyboards/amjpad/amjpad.h b/keyboards/amjpad/amjpad.h index b9b4d3686a0..ffba1c9b949 100644 --- a/keyboards/amjpad/amjpad.h +++ b/keyboards/amjpad/amjpad.h @@ -39,7 +39,22 @@ {k40, k41, k42, k43}, \ {k50, XXX, k52, XXX} \ } - +#define MAXKEYMAP( \ + k00, k01, k02, k03, \ + k10, k11, k12, k13, \ + k20, k21, k22, k23, \ + k30, k31, k32, k33, \ + k40, k41, k42, k43, \ + k50, k51, k52, k53\ +) \ +{ \ + {k00, k01, k02, k03}, \ + {k10, k11, k12, k13}, \ + {k20, k21, k22, k23}, \ + {k30, k31, k32, k33}, \ + {k40, k41, k42, k43}, \ + {k50, k51, k52, k53} \ +} void matrix_init_user(void); void matrix_scan_user(void); diff --git a/keyboards/amjpad/keymaps/max/keymap.c b/keyboards/amjpad/keymaps/max/keymap.c new file mode 100644 index 00000000000..926a494a907 --- /dev/null +++ b/keyboards/amjpad/keymaps/max/keymap.c @@ -0,0 +1,102 @@ +#include "amjpad.h" + +#ifdef RGBLIGHT_ENABLE +#include "rgblight.h" +#endif + +// Used for SHIFT_ESC +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 + +#define _______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-------------------. + * |Esc |Setp| - | = | + * |----|----|----|----| + * | F1 | F2 | F3 | F4 | + * |----|----|----|----| + * | 7 | 8 | 9 | - | + * |----|----|----|----| + * | 4 | 5 | 6 | LF | + * |----|----|----|----| + * | 1 | 2 | 3 | \ | + * |----|----|----|----| + * |Left|Down| Up |Rght| + * `-------------------' + */ + +[_BL] = MAXKEYMAP( + + KC_ESC, KC_TAB, KC_MINS,KC_EQL, \ + KC_F1, KC_F2, KC_F3, KC_F4, \ + KC_P7, KC_P8, KC_P9, KC_PMNS, \ + KC_P4, KC_P5, KC_P6, KC_PENT, \ + KC_P1, KC_P2, KC_P3, KC_BSLS, \ + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT), + + /* Keymap _FL: Function Layer + * ,-------------------. + * |Esc |TAB |BS | = | + * |----|----|----|----| + * | NL | / | * | - | + * |----|----|----|----| + * | 7 | 8 | 9 | | + * |----|----|----|RST | + * | 4 | 5 | 6 | | + * |----|----|----|----| + * | 1 | 2 | 3 | | + * |----|----|----| En | + * | 0 |./FN| | + * `-------------------' + */ +[_FL] = MAXKEYMAP( + + KC_ESC,KC_TAB,KC_BSPC,KC_PEQL, \ + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ + KC_P7, KC_P8, KC_P9, RESET, \ + KC_P4, KC_P5, KC_P6, KC_PENT, \ + KC_P1, KC_P2, KC_P3, KC_PENT, \ + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT), +}; + +enum function_id { + SHIFT_ESC, +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(SHIFT_ESC), +}; + +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; + } +} diff --git a/keyboards/amjpad/keymaps/ortho_left/keymap.c b/keyboards/amjpad/keymaps/ortho_left/keymap.c new file mode 100644 index 00000000000..d3e4d9944b6 --- /dev/null +++ b/keyboards/amjpad/keymaps/ortho_left/keymap.c @@ -0,0 +1,65 @@ +#include "amjpad.h" + +#ifdef RGBLIGHT_ENABLE +#include "rgblight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 + +#define _______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-------------------. + * | T | G | B |Spac| + * |----|----|----|----| + * | R | F | V | Fn | + * |----|----|----|----| + * | E | D | C | OS | + * |----|----|----|----| + * | W | S | X | Alt| + * |----|----|----|----| + * | Q | A | Z | Ctl| + * |----|----|----|----| + * | Esc| Tab|Shft| Fn2| + * `-------------------' + */ + +[_BL] = MAXKEYMAP( + + KC_T, KC_G, KC_B, KC_SPACE,\ + KC_R, KC_F, KC_V, MO(1), \ + KC_E, KC_D, KC_C, KC_LGUI, \ + KC_W, KC_S, KC_X, KC_LALT, \ + KC_Q, KC_A, KC_Z, KC_LCTL, \ + KC_TAB, KC_ESC, KC_LSHIFT, MO(1)), + + /* Keymap _FL: Function Layer + * ,-------------------. + * | 5 | F5 | F11|Spac| + * |----|----|----|----| + * | 4 | F4 | F10| | + * |----|----|----|----| + * | 3 | F3 | F9 | OS | + * |----|----|----|----| + * | 2 | F2 | F8 | Alt| + * |----|----|----|----| + * | 1 | F1 | F7 | Ctl| + * |----|----|----|----| + * | ` | Del|Shft| | + * `-------------------' + */ +[_FL] = MAXKEYMAP( + + KC_5, KC_F5, KC_F11, _______, \ + KC_4, KC_F4, KC_F10, _______, \ + KC_3, KC_F3, KC_F9, _______, \ + KC_2, KC_F2, KC_F8, _______, \ + KC_1, KC_F1, KC_F7, _______, \ + KC_GRV,KC_DEL, _______, _______), +}; diff --git a/keyboards/amjpad/keymaps/ortho_right/keymap.c b/keyboards/amjpad/keymaps/ortho_right/keymap.c new file mode 100644 index 00000000000..33e599abdc0 --- /dev/null +++ b/keyboards/amjpad/keymaps/ortho_right/keymap.c @@ -0,0 +1,65 @@ +#include "amjpad.h" + +#ifdef RGBLIGHT_ENABLE +#include "rgblight.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 + +#define _______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-------------------. + * |Spac| N | H | Y | + * |----|----|----|----| + * | Fn | M | J | U | + * |----|----|----|----| + * |Left| , | K | I | + * |----|----|----|----| + * |Down| . | L | O | + * |----|----|----|----| + * | Up | / | ; | P | + * |----|----|----|----| + * |Rght| Ret| " |Bspc| + * `-------------------' + */ + +[_BL] = MAXKEYMAP( + + KC_SPACE, KC_N, KC_H, KC_Y, \ + MO(1), KC_M, KC_J, KC_U, \ + KC_LEFT, KC_COMM, KC_K, KC_I, \ + KC_DOWN, KC_DOT, KC_L, KC_O, \ + KC_UP, KC_SLASH, KC_SCLN, KC_P, \ + KC_RIGHT, KC_ENT, KC_QUOT, KC_BSPC), + + /* Keymap _FL: Function Layer + * ,-------------------. + * |Esc | F12| F6 | 6 | + * |----|----|----|----| + * | NL | M | - | 7 | + * |----|----|----|----| + * |Left| , | = | 8 | + * |----|----|----|----| + * |Down| . | [ | 9 | + * |----|----|----|----| + * | Up | / | ] | 0 | + * |----|----|----|----| + * |Rght| Ret| \ | Del| + * `-------------------' + */ +[_FL] = MAXKEYMAP( + + _______, KC_F12, KC_F6, KC_6, \ + _______, _______, KC_MINS, KC_7, \ + _______, _______, KC_EQL, KC_8, \ + _______, _______, KC_LBRC, KC_9, \ + _______, _______, KC_RBRC, KC_0, \ + _______, _______, KC_BSLS, KC_DEL), +}; diff --git a/keyboards/clueboard/keymaps/serubin/Makefile b/keyboards/clueboard/keymaps/serubin/Makefile new file mode 100644 index 00000000000..ba997f86967 --- /dev/null +++ b/keyboards/clueboard/keymaps/serubin/Makefile @@ -0,0 +1,4 @@ + +MOUSEKEY_ENABLE = yes +EXTRAKEY_ENABLE = yes + diff --git a/keyboards/clueboard/keymaps/serubin/keymap.c b/keyboards/clueboard/keymaps/serubin/keymap.c new file mode 100644 index 00000000000..18446eb31d7 --- /dev/null +++ b/keyboards/clueboard/keymaps/serubin/keymap.c @@ -0,0 +1,103 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _ME 2 +#define _CL 3 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = KEYMAP( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ + F(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RGUI, MO(_FL), MO(_ME), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + 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_DEL, KC_HOME, \ + _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, KC_PSCR, KC_END, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______, _______, _______,_______, _______, _______, MO(_FL), MO(_ME), KC_HOME, KC_PGDN, KC_END), + +/* Keymap _FL: Function Layer + */ +[_ME] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, \ + _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, KC_VOLD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______ , _______, _______, \ + _______, _______, _______, _______, _______,_______, _______, _______, MO(_FL), MO(_ME), KC_MPRV, KC_MPLY, KC_MNXT), + + + /* Keymap _CL: Control layer + */ +[_CL] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, MO(_FL), _______, RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(0), // Calls action_function() + [1] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC), +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t mods_pressed; + static bool mod_flag; + + switch (id) { + case 0: + /* Handle the combined Grave/Esc key + */ + mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed + + if (record->event.pressed) { + /* The key is being pressed. + */ + if (mods_pressed) { + mod_flag = true; + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mod_flag) { + mod_flag = false; + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + case 1: + if(record->event.pressed) { + del_key(KC_ESC); + } + break; + } +} diff --git a/keyboards/clueboard/keymaps/serubin/layout-base.png b/keyboards/clueboard/keymaps/serubin/layout-base.png new file mode 100644 index 00000000000..8dcdc064355 Binary files /dev/null and b/keyboards/clueboard/keymaps/serubin/layout-base.png differ diff --git a/keyboards/clueboard/keymaps/serubin/layout-fn.png b/keyboards/clueboard/keymaps/serubin/layout-fn.png new file mode 100644 index 00000000000..3cff46a726e Binary files /dev/null and b/keyboards/clueboard/keymaps/serubin/layout-fn.png differ diff --git a/keyboards/clueboard/keymaps/serubin/layout-media.png b/keyboards/clueboard/keymaps/serubin/layout-media.png new file mode 100644 index 00000000000..753cb64fac7 Binary files /dev/null and b/keyboards/clueboard/keymaps/serubin/layout-media.png differ diff --git a/keyboards/clueboard/keymaps/serubin/readme.md b/keyboards/clueboard/keymaps/serubin/readme.md new file mode 100644 index 00000000000..e39adbb1692 --- /dev/null +++ b/keyboards/clueboard/keymaps/serubin/readme.md @@ -0,0 +1,23 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +# Serubin's Clueboard Layout + +This is the layout based on the clueboard default, modified for development on Mac, PC, and Windows. This layout also handles media and volume keys on all the previously listed platforms. Most importantly, Capslock has been replaced by a dual function Esc/Ctrl key. This is particularly handy for use in Vim. + +#### Base Layer +![Base Layout Image](layout-base.png) + +#### Fn Layer +![Fn Layout Image](layout-fn.png) + +#### Media Layer +![Media Layer Image](layout-media.png) + + diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c index c4fae036982..fdec37a5401 100644 --- a/keyboards/clueboard/keymaps/shift_fn/keymap.c +++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c @@ -19,8 +19,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ - KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), + MO(_FL), KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), /* Keymap _FL: Function Layer */ @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { S(KC_TAB), S(KC_Q), S(KC_W),S(KC_E),S(KC_R),S(KC_T), S(KC_Y), S(KC_U),S(KC_I),S(KC_O), S(KC_P), S(KC_LBRC),S(KC_RBRC),S(KC_BSLS), S(KC_PGDN), \ S(KC_LCTL),S(KC_A), MO(_CL),S(KC_D),S(KC_F),S(KC_G), S(KC_H), S(KC_J),S(KC_K),S(KC_L), S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT), \ MO(_FL), S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V), S(KC_B), S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO), KC_RSFT, KC_PGUP, \ - KC_LCTL, KC_LALT, KC_LGUI,MO(_FL), S(KC_SPC),S(KC_SPC), MO(_FL), KC_RGUI, KC_RALT, KC_RCTL, KC_HOME, KC_PGDN, KC_END), + KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, S(KC_SPC),S(KC_SPC), KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_HOME, KC_PGDN, KC_END), /* Keymap _CL: Control layer */ diff --git a/keyboards/clueboard/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c index 077d214facc..df7757a9222 100644 --- a/keyboards/clueboard/keymaps/skully/keymap.c +++ b/keyboards/clueboard/keymaps/skully/keymap.c @@ -16,33 +16,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: Base Layer (Default Layer) */ [_BL] = KEYMAP( - F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ - KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ - KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ - KC_LCTL,KC_LALT,KC_LGUI,MO(_FL), KC_SPC, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + MO(_FL), KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), /* Keymap _FL: Function Layer */ [_FL] = KEYMAP( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,KC_DEL, BL_STEP, \ - _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______, _______, \ - _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_PGUP, \ - _______,_______,_______,MO(_FL), _______,_______, MO(_FL),_______,_______,MO(_FL),KC_HOME,KC_PGDN,KC_END), + S(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, S(KC_GRV), KC_DEL, BL_STEP, \ + S(KC_TAB), S(KC_Q), S(KC_W),S(KC_E),S(KC_R),S(KC_T), S(KC_Y), S(KC_U),S(KC_I),S(KC_O), S(KC_P), S(KC_LBRC),S(KC_RBRC),S(KC_BSLS), S(KC_PGDN), \ + S(KC_LCTL),S(KC_A), MO(_CL),S(KC_D),S(KC_F),S(KC_G), S(KC_H), S(KC_J),S(KC_K),S(KC_L), S(KC_SCLN),S(KC_QUOT),S(KC_NUHS),S(KC_ENT), \ + MO(_FL), S(KC_NUBS),S(KC_Z),S(KC_X),S(KC_C),S(KC_V), S(KC_B), S(KC_N),S(KC_M),S(KC_COMM),S(KC_DOT), S(KC_SLSH),S(KC_RO), KC_RSFT, KC_PGUP, \ + KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, S(KC_SPC),S(KC_SPC), KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_HOME, KC_PGDN, KC_END), /* Keymap _CL: Control layer */ [_CL] = KEYMAP( - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \ - _______,_______,_______,_______, _______,_______, _______,_______,_______,MO(_FL),_______, _______, _______), + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD,RGB_SAD,RGB_HUI), }; +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_FUNCTION(0), + [0] = ACTION_FUNCTION(0), // Calls action_function() }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h index e8c17e6e336..9650ffb4405 100644 --- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h +++ b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/board_ST7565.h @@ -75,7 +75,7 @@ static GFXINLINE void init_board(GDisplay *g) { palSetPad(ST7565_GPIOPORT, ST7565_RST_PIN); palSetPadModeRaw(MOSI, ST7565_SPI_MODE); palSetPadModeRaw(SLCK, ST7565_SPI_MODE); - palSetPadModeRaw(SS, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadModeNamed(SS, PAL_MODE_OUTPUT_PUSHPULL); spiInit(); spiStart(&SPID1, &spi1config); diff --git a/keyboards/ergodox/infinity/matrix.c b/keyboards/ergodox/infinity/matrix.c index 1fda904849a..3364f8c905d 100644 --- a/keyboards/ergodox/infinity/matrix.c +++ b/keyboards/ergodox/infinity/matrix.c @@ -24,6 +24,7 @@ along with this program. If not, see . #include "print.h" #include "debug.h" #include "matrix.h" +#include "serial_link/system/serial_link.h" /* diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c index ae4fd444d15..d299d02c34a 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c @@ -311,12 +311,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case SWITCH_NDS: if (record->event.pressed) { - return MACRO( D(LSFT), T(F11), U(LSFT), W(500), D(LALT), T(TAB), U(LALT), END); + return MACRO( D(LSFT), T(F11), U(LSFT), W(255), D(LALT), T(TAB), U(LALT), END); } break; case OPEN_CLOSE_PAREN: if (record->event.pressed) { - return MACRO( D(LSFT), T(LPRN), T(RPRN), U(LSFT), T(LEFT), END); + return MACRO( D(LSFT), T(9), T(0), U(LSFT), T(LEFT), END); } break; case OPEN_CLOSE_BRACKET: @@ -326,7 +326,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case OPEN_CLOSE_CURLY: if (record->event.pressed) { - return MACRO( D(LSFT), T(LCBR), T(RCBR), U(LSFT), T(LEFT), END); + return MACRO( D(LSFT), T(LBRC), T(RBRC), U(LSFT), T(LEFT), END); } break; case OPEN_CLOSE_SINGLE_QUOTE: diff --git a/keyboards/ergodox/keymaps/ordinary/keymap.c b/keyboards/ergodox/keymaps/ordinary/keymap.c index 1dfdf7e6241..ac84df57014 100644 --- a/keyboards/ergodox/keymaps/ordinary/keymap.c +++ b/keyboards/ergodox/keymaps/ordinary/keymap.c @@ -392,7 +392,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case NotEq: if (record->event.pressed) { - return MACRO( I(10), D(LSFT), T(EXLM), U(LSFT), T(EQL), END ); // != + return MACRO( I(10), D(LSFT), T(1), U(LSFT), T(EQL), END ); // != } break; diff --git a/keyboards/ergodox/keymaps/siroken3/default.png b/keyboards/ergodox/keymaps/siroken3/default.png new file mode 100644 index 00000000000..6575f7b5e37 Binary files /dev/null and b/keyboards/ergodox/keymaps/siroken3/default.png differ diff --git a/keyboards/ergodox/keymaps/siroken3/default_firmware_v1.2-2.png b/keyboards/ergodox/keymaps/siroken3/default_firmware_v1.2-2.png new file mode 100644 index 00000000000..e3c321cc09f Binary files /dev/null and b/keyboards/ergodox/keymaps/siroken3/default_firmware_v1.2-2.png differ diff --git a/keyboards/ergodox/keymaps/siroken3/default_highres.png b/keyboards/ergodox/keymaps/siroken3/default_highres.png new file mode 100644 index 00000000000..7d9f045f43a Binary files /dev/null and b/keyboards/ergodox/keymaps/siroken3/default_highres.png differ diff --git a/keyboards/ergodox/keymaps/siroken3/keymap.c b/keyboards/ergodox/keymaps/siroken3/keymap.c new file mode 100644 index 00000000000..258f122b48c --- /dev/null +++ b/keyboards/ergodox/keymaps/siroken3/keymap.c @@ -0,0 +1,187 @@ +// Netable differences vs. the default firmware for the ErgoDox EZ: +// 1. The Cmd key is now on the right side, making Cmd+Space easier. +// 2. The media keys work on OSX (But not on Windows). +#include "ergodox.h" +#include "debug.h" +#include "action_layer.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 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | LCtl | A | S | D | F | G |------| |------| H | J | K | L |; / L2| LGui | + * |--------+------+------+------+------+------| BkSp | | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | BkSp | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|LANG1 |------| |------|LANG2 |Enter | + * | /LGui| | 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_LEFT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_BSPC, + LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + KC_BSPC, KC_LGUI, + KC_HOME, + MT(MOD_LGUI, KC_SPC),KC_LANG1,KC_END, + // right hand + 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, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),KC_LGUI, + 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_LALT, CTL_T(KC_ESC), + KC_PGUP, + KC_PGDN,KC_LANG2, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | 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 + 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_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) { + 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; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/keymaps/siroken3/readme.md b/keyboards/ergodox/keymaps/siroken3/readme.md new file mode 100644 index 00000000000..979ce0f5b8f --- /dev/null +++ b/keyboards/ergodox/keymaps/siroken3/readme.md @@ -0,0 +1,15 @@ +# ErgoDox EZ Default Configuration + +## Changelog + +* Dec 2016: + * Added LED keys + * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now. +* Sep 22, 2016: + * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM. +* Feb 2, 2016 (V1.1): + * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). + +This is what we ship with out of the factory. :) The image says it all: + +![Default](default_firmware_v1.2-2.png) diff --git a/keyboards/ergodox/keymaps/yoruian/keymap.c b/keyboards/ergodox/keymaps/yoruian/keymap.c index d3635ddf3f6..41dfda3c6df 100644 --- a/keyboards/ergodox/keymaps/yoruian/keymap.c +++ b/keyboards/ergodox/keymaps/yoruian/keymap.c @@ -17,7 +17,7 @@ #include "yoruian.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP\ +[0] = KEYMAP_YORUIAN\ (9, 7, 5, 3, 1, GRV, MINS, EQL, LBRC, 0, 2, 4, 6, 8, ES, RBRC, Y, O, R, BSLS, P3, P3, J, V, D, F, W, Q, LC, U, I, A, N, SCLN, M, H, T, S, C, RC, @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { BSPC, RALT, P2, TAB, NO, NO, E, LSFT, NO, NO, ENT, SPC), -[1] = KEYMAP\ +[1] = KEYMAP_YORUIAN\ (TR, TR, TR, TR, TR, TR, TR, TR, TR, F5, F6, F7, F8, F9, TR, TR, TR, TR, TR, TR, TR, TR, TR, F1, F2, F3, F4, FT, TR, TR, TR, TR, TR, TR, PAUS, LEFT, DOWN, UP, RGHT, FE, diff --git a/keyboards/ergodox/keymaps/yoruian/yoruian.h b/keyboards/ergodox/keymaps/yoruian/yoruian.h index 1adcb7fd3fe..b5aaf74b1a6 100644 --- a/keyboards/ergodox/keymaps/yoruian/yoruian.h +++ b/keyboards/ergodox/keymaps/yoruian/yoruian.h @@ -18,36 +18,32 @@ #include "debug.h" #include "action_layer.h" -#undef KEYMAP -#define KEYMAP\ -( \ - /* Spacial positions. */ \ - 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, \ - k20, k21, k22, k23, k24, k25, k28, k29, k2A, k2B, k2C, k2D, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \ - k40, k41, k42, k43, k44, k49, k4A, k4B, k4C, k4D, \ - k55, k56, k57, k58, \ - k54, k59, \ - k53, k52, k51, k5C, k5B, k5A) \ - \ - /* Matrix positions. */ \ - { \ - { KC_##k00, KC_##k10, KC_##k20, KC_##k30, KC_##k40, KC_NO }, \ - { KC_##k01, KC_##k11, KC_##k21, KC_##k31, KC_##k41, KC_##k51 }, \ - { KC_##k02, KC_##k12, KC_##k22, KC_##k32, KC_##k42, KC_##k52 }, \ - { KC_##k03, KC_##k13, KC_##k23, KC_##k33, KC_##k43, KC_##k53 }, \ - { KC_##k04, KC_##k14, KC_##k24, KC_##k34, KC_##k44, KC_##k54 }, \ - { KC_##k05, KC_##k15, KC_##k25, KC_##k35, KC_NO, KC_##k55 }, \ - { KC_##k06, KC_##k16, KC_NO, KC_##k36, KC_NO, KC_##k56 }, \ - { KC_##k07, KC_##k17, KC_NO, KC_##k37, KC_NO, KC_##k57 }, \ - { KC_##k08, KC_##k18, KC_##k28, KC_##k38, KC_NO, KC_##k58 }, \ - { KC_##k09, KC_##k19, KC_##k29, KC_##k39, KC_##k49, KC_##k59 }, \ - { KC_##k0A, KC_##k1A, KC_##k2A, KC_##k3A, KC_##k4A, KC_##k5A }, \ - { KC_##k0B, KC_##k1B, KC_##k2B, KC_##k3B, KC_##k4B, KC_##k5B }, \ - { KC_##k0C, KC_##k1C, KC_##k2C, KC_##k3C, KC_##k4C, KC_##k5C }, \ - { KC_##k0D, KC_##k1D, KC_##k2D, KC_##k3D, KC_##k4D, KC_NO } \ - } +#define KEYMAP_YORUIAN( \ + /* Spacial positions. */ \ + 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, \ + k20, k21, k22, k23, k24, k25, k28, k29, k2A, k2B, k2C, k2D, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \ + k40, k41, k42, k43, k44, k49, k4A, k4B, k4C, k4D, \ + k55, k56, k57, k58, \ + k54, k59, \ + k53, k52, k51, k5C, k5B, k5A) \ + KEYMAP(KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, \ + KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, \ + KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, \ + KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, \ + KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, \ + KC_##k55, KC_##k56, \ + KC_##k54, \ + KC_##k53, KC_##k52, KC_##k51, \ + KC_##k07, KC_##k08, KC_##k09, KC_##k0A, KC_##k0B, KC_##k0C, KC_##k0D, \ + KC_##k17, KC_##k18, KC_##k19, KC_##k1A, KC_##k1B, KC_##k1C, KC_##k1D, \ + KC_##k28, KC_##k29, KC_##k2A, KC_##k2B, KC_##k2C, KC_##k2D, \ + KC_##k37, KC_##k38, KC_##k39, KC_##k3A, KC_##k3B, KC_##k3C, KC_##k3D, \ + KC_##k49, KC_##k4A, KC_##k4B, KC_##k4C, KC_##k4D, \ + KC_##k57, KC_##k58, \ + KC_##k59, \ + KC_##k5C, KC_##k5B, KC_##k5A) #define KC_ES KC_ESC #define KC_LC KC_LCTL diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c index 05dffdb643b..cde7f63b95b 100644 --- a/keyboards/frosty_flake/matrix.c +++ b/keyboards/frosty_flake/matrix.c @@ -115,6 +115,7 @@ inline matrix_row_t matrix_get_row(uint8_t row) { } void matrix_print(void) { +#ifndef NO_PRINT print("\nr\\c ABCDEFGHIJKLMNOPQR\n"); for (uint8_t row = 0; row < MATRIX_ROWS; row++) { matrix_row_t matrix_row = matrix_get_row(row); @@ -125,6 +126,7 @@ void matrix_print(void) { } print("\n"); } +#endif } uint8_t matrix_key_count(void) { @@ -132,4 +134,4 @@ uint8_t matrix_key_count(void) { for (uint8_t row = 0; row < MATRIX_ROWS; row++) count += bitpop32(matrix[row]); return count; -} \ No newline at end of file +} diff --git a/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.c b/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.c deleted file mode 100644 index 4c735a6c29f..00000000000 --- a/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.c +++ /dev/null @@ -1 +0,0 @@ -#include "MS-sculpt-mobile.h" diff --git a/keyboards/handwired/MS_sculpt_mobile/MS_sculpt_mobile.c b/keyboards/handwired/MS_sculpt_mobile/MS_sculpt_mobile.c new file mode 100644 index 00000000000..64982fb62df --- /dev/null +++ b/keyboards/handwired/MS_sculpt_mobile/MS_sculpt_mobile.c @@ -0,0 +1 @@ +#include "MS_sculpt_mobile.h" diff --git a/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.h b/keyboards/handwired/MS_sculpt_mobile/MS_sculpt_mobile.h similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.h rename to keyboards/handwired/MS_sculpt_mobile/MS_sculpt_mobile.h diff --git a/keyboards/handwired/MS-sculpt-mobile/Makefile b/keyboards/handwired/MS_sculpt_mobile/Makefile similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/Makefile rename to keyboards/handwired/MS_sculpt_mobile/Makefile diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS_sculpt_mobile/babblePaste.c similarity index 99% rename from keyboards/handwired/MS-sculpt-mobile/babblePaste.c rename to keyboards/handwired/MS_sculpt_mobile/babblePaste.c index 3a9b86997d5..22394cc7d2d 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c +++ b/keyboards/handwired/MS_sculpt_mobile/babblePaste.c @@ -7,7 +7,8 @@ Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c */ -#include "babblePaste.h" +#include "../MS_sculpt_mobile/babblePaste.h" + #include "action_macro.h" #ifdef USE_BABLPASTE @@ -27,7 +28,7 @@ macro_t* switch_babble_mode( uint8_t id) { // And else statements have problems, see https://gcc.gnu.org/onlinedocs/gcc-3.0.1/cpp_3.html#SEC15 #define BABLM(ent, macro...) \ if ( ent == shortcut ) \ - { action_macro_play( MACRO(macro)); return MACRO_NONE; } + { action_macro_play( MACRO(macro)); return MACRO_NONE; } /* this function runs the appropriate babblepaste macro, given @@ -456,4 +457,4 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { } -#endif \ No newline at end of file +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS_sculpt_mobile/babblePaste.h similarity index 99% rename from keyboards/handwired/MS-sculpt-mobile/babblePaste.h rename to keyboards/handwired/MS_sculpt_mobile/babblePaste.h index 3067c854deb..cedd7d92bac 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h +++ b/keyboards/handwired/MS_sculpt_mobile/babblePaste.h @@ -9,9 +9,9 @@ and jeebak & algernon's keymap */ #ifndef _babblePaste_h_included__ #define _babblePaste_h_included__ +#include "../MS_sculpt_mobile/config.h" #include "action_layer.h" #include "quantum_keycodes.h" -#include "config.h" #ifdef USE_BABLPASTE diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt b/keyboards/handwired/MS_sculpt_mobile/babblePaste.txt similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/babblePaste.txt rename to keyboards/handwired/MS_sculpt_mobile/babblePaste.txt diff --git a/keyboards/handwired/MS-sculpt-mobile/config.h b/keyboards/handwired/MS_sculpt_mobile/config.h similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/config.h rename to keyboards/handwired/MS_sculpt_mobile/config.h diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile b/keyboards/handwired/MS_sculpt_mobile/keymaps/default/Makefile similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile rename to keyboards/handwired/MS_sculpt_mobile/keymaps/default/Makefile diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h b/keyboards/handwired/MS_sculpt_mobile/keymaps/default/config.h similarity index 62% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h rename to keyboards/handwired/MS_sculpt_mobile/keymaps/default/config.h index 8893d122e04..4f3a425b7e8 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h +++ b/keyboards/handwired/MS_sculpt_mobile/keymaps/default/config.h @@ -1,7 +1,7 @@ #ifndef CONFIG_USER_H #define CONFIG_USER_H -#include "../../config.h" +#include "../../../MS_sculpt_mobile/config.h" // place overrides here diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c b/keyboards/handwired/MS_sculpt_mobile/keymaps/default/keymap.c similarity index 98% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c rename to keyboards/handwired/MS_sculpt_mobile/keymaps/default/keymap.c index ab09dcdd1ce..a8802c99a41 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c +++ b/keyboards/handwired/MS_sculpt_mobile/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -#include "MS-sculpt-mobile.h" +#include "../../MS_sculpt_mobile.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md b/keyboards/handwired/MS_sculpt_mobile/keymaps/default/readme.md similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md rename to keyboards/handwired/MS_sculpt_mobile/keymaps/default/readme.md diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile b/keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/Makefile similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile rename to keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/Makefile diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/config.h similarity index 93% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h rename to keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/config.h index 8cf4202cda2..5c04f647c30 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h +++ b/keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/config.h @@ -1,7 +1,7 @@ #ifndef CONFIG_USER_H #define CONFIG_USER_H -#include "../../config.h" +#include "../../../MS_sculpt_mobile/config.h" #define USE_BABLPASTE diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/keymap.c similarity index 99% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c rename to keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/keymap.c index 395a9fb4706..c9a8ccdb69c 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/keymap.c @@ -1,7 +1,7 @@ -#include "MS-sculpt-mobile.h" +#include "../../../MS_sculpt_mobile/babblePaste.h" +#include "../../MS_sculpt_mobile.h" #include "action_layer.h" #include "action_util.h" -#include "babblePaste.h" #ifdef AUDIO_ENABLE #include "audio.h" diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md b/keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/readme.md similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md rename to keyboards/handwired/MS_sculpt_mobile/keymaps/milestogo/readme.md diff --git a/keyboards/handwired/MS-sculpt-mobile/readme.md b/keyboards/handwired/MS_sculpt_mobile/readme.md similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/readme.md rename to keyboards/handwired/MS_sculpt_mobile/readme.md diff --git a/keyboards/handwired/MS-sculpt-mobile/rules.mk b/keyboards/handwired/MS_sculpt_mobile/rules.mk similarity index 100% rename from keyboards/handwired/MS-sculpt-mobile/rules.mk rename to keyboards/handwired/MS_sculpt_mobile/rules.mk diff --git a/keyboards/handwired/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c index 415405ec233..77cf942c3a2 100644 --- a/keyboards/handwired/atreus50/keymaps/default/keymap.c +++ b/keyboards/handwired/atreus50/keymaps/default/keymap.c @@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //,----+----+----+----+----+----. ,----+----+----+----+----+----. TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, //|----+----+----+----+----+----| |----+----+----+----+----+----| - X0 , A , O , E , U , I , D , H , R , N , S ,SLSH, + X0 , A , O , E , U , I , D , H , T , N , S ,SLSH, //|----+----+----+----+----+----| |----+----+----+----+----+----| LSFT,SCLN, Q , J , K , X , B , M , W , V , Z , X4 , //|----+----+----+----+----+----|----+----|----+----+----+----+----+----| diff --git a/keyboards/handwired/promethium/color.h b/keyboards/handwired/promethium/color.h new file mode 100644 index 00000000000..077242d5f17 --- /dev/null +++ b/keyboards/handwired/promethium/color.h @@ -0,0 +1,15 @@ +#define COLOR_BLANK 0, 0, 0 + +#define COLOR_BLACK 0, 0, 0 +#define COLOR_WHITE 15,15,15 +#define COLOR_GRAY 7, 7, 7 + +#define COLOR_RED 15, 0, 0 +#define COLOR_GREEN 0,15, 0 +#define COLOR_BLUE 0, 0,15 + +#define COLOR_YELLOW 15,15, 0 +#define COLOR_MAGENTA 15, 0,15 +#define COLOR_CYAN 0,15,15 + +#define COLOR_ORANGE 15, 5, 0 \ No newline at end of file diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index 24f02993fb3..efb9ebdd74f 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -35,12 +35,13 @@ along with this program. If not, see . #define DESCRIPTION /* key matrix size */ -#define MATRIX_ROWS 8 #define MATRIX_COLS 6 +#define MATRIX_ROWS 9 /* 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 MATRIX_COL_PINS { F4, F1, F0, D6, D0, D1 } +#define MATRIX_ROW_PINS { F5, F6, F7 } +#define TRACKPOINT_PINS { B7, B6, D7 } #define UNUSED_PINS /* @@ -152,17 +153,20 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#define PS2_INIT_DELAY 2000 +#define PS2_MOUSE_INIT_DELAY 2000 #define BATTERY_PIN 9 #define BATTERY_POLL 30000 #define MAX_VOLTAGE 4.2 #define MIN_VOLTAGE 3.2 +#define ___ KC_NO + #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, 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, \ + tp1, tp2, tp3 \ ) \ { \ {k11, k12, k13, k14, k15, k16}, \ @@ -172,25 +176,36 @@ along with this program. If not, see . {k17, k18, k19, k1a, k1b, k1c}, \ {k27, k28, k29, k2a, k2b, k2c}, \ {k37, k38, k39, k3a, k3b, k3c}, \ - {k47, k48, k49, k4a, k4b, k4c} \ + {k47, k48, k49, k4a, k4b, k4c}, \ + {tp1, tp2, tp3, ___, ___, ___} \ } #ifndef __ASSEMBLER__ // assembler doesn't like enum in .h file enum led_sequence { + LED_IND_LINUX, + LED_IND_APPLE, + LED_IND_WINDOWS, + LED_IND_QWERTY, + LED_IND_ALT, + LED_IND_AUDIO, LED_IND_BLUETOOTH, LED_IND_USB, - LED_IND_BATTERY, + LED_IND_BATTERY, + LED_IND_CAPSLOCK, + LED_IND_GUI, LED_IND_FUN, LED_IND_NUM, + LED_IND_PUNC, LED_IND_EMOJI, + LED_IND_GREEK, LED_BKSP, LED_ENT, LED_RSFT, LED_RCTL, - LED_RGUI, + LED_RALT, LED_SLSH, LED_SCLN, LED_P, @@ -198,9 +213,9 @@ enum led_sequence { LED_O, LED_L, LED_DOT, - LED_RALT, + LED_RGUI, - LED_EMOJI, + LED_GREEK, LED_COMM, LED_K, LED_I, @@ -219,35 +234,35 @@ enum led_sequence { LED_TRACKPOINT2, LED_TRACKPOINT1, - LED_LSPC, - LED_B, - LED_G, LED_T, + LED_G, + LED_B, + LED_LSPC, - LED_R, - LED_F, - LED_V, LED_NUM, + LED_V, + LED_F, + LED_R, - LED_PUNC, - LED_C, - LED_D, LED_E, - - LED_W, - LED_S, - LED_X, - LED_LALT, + LED_D, + LED_C, + LED_EMPTY, LED_LGUI, - LED_Z, - LED_A, - LED_Q, + LED_X, + LED_S, + LED_W, + + LED_Q, + LED_A, + LED_Z, + LED_LALT, - LED_TAB, - LED_ESC, - LED_LSFT, LED_LCTL, + LED_LSFT, + LED_ESC, + LED_TAB, LED_TOTAL }; @@ -261,7 +276,7 @@ enum led_sequence { # define PS2_CLOCK_PORT PORTD # define PS2_CLOCK_PIN PIND # define PS2_CLOCK_DDR DDRD -# define PS2_CLOCK_BIT 1 +# define PS2_CLOCK_BIT 3 # define PS2_DATA_PORT PORTD # define PS2_DATA_PIN PIND # define PS2_DATA_DDR DDRD diff --git a/keyboards/handwired/promethium/keymaps/priyadi/Makefile b/keyboards/handwired/promethium/keymaps/priyadi/Makefile index 46fdfa01183..bd1a06734c3 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/Makefile +++ b/keyboards/handwired/promethium/keymaps/priyadi/Makefile @@ -19,6 +19,8 @@ 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 +FAUXCLICKY_ENABLE = yes +BLUETOOTH = AdafruitBLE # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/handwired/promethium/keymaps/priyadi/README.md b/keyboards/handwired/promethium/keymaps/priyadi/README.md index ddeaed939e2..48824b9f73b 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/README.md +++ b/keyboards/handwired/promethium/keymaps/priyadi/README.md @@ -37,8 +37,8 @@ On Promethium, USB or Bluetooth output is detected on startup. If USB is connect SYS-W, SYS-L, SYS-M switch Unicode input method. SYS-Q, SYS-D, SYS-C, SYS-K, SYS-N switch to QWERTY, DVORAK, Colemak, Workman and Norman, respectively. -On Planck, SYS-A (mnemonic: audio) toggles faux clicky: use buzzer to emit clicks on key presses and releases. +SYS-A (mnemonic: audio) toggles faux clicky: use buzzer to emit clicks on key presses and releases. -On Promethium there are 6 indicator LEDs, and under switch LEDs on each switches, including Trackpoint buttons. Totaling 57 LEDs. Output is limited to 0xF for each LEDs to conserve power. SYS-G (mnemonic: glow) toggles various backlighting modes. +On Promethium there are 16 indicator LEDs, and under switch LEDs on each switches, including Trackpoint buttons. Totaling 67 LEDs. Output is limited to 0xF for each LEDs to conserve power. SYS-G (mnemonic: glow) toggles various backlighting modes. On Promethium, there's a LED to indicate battery level. Hue indicates level: green is full, red is empty. \ No newline at end of file diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h index 3f5dd5817d1..fa86e224794 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/config.h +++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h @@ -14,6 +14,7 @@ #define PREVENT_STUCK_MODIFIERS #define RGBSPS_ENABLE +#define RGBSPS_DEMO_ENABLE #define UNICODE_TYPE_DELAY 0 diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index cf7c67339d4..d562c7bbf81 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -31,6 +31,7 @@ along with this program. If not, see . #include "quantum.h" #ifdef RGBSPS_ENABLE #include "rgbsps.h" +#include "rgbtheme.h" #endif #ifdef PS2_MOUSE_ENABLE #include "ps2_mouse.h" @@ -38,6 +39,19 @@ along with this program. If not, see . #endif #ifdef FAUXCLICKY_ENABLE #include "fauxclicky.h" +#ifdef RGBSPS_ENABLE +#undef FAUXCLICKY_OFF +#define FAUXCLICKY_OFF do { \ + fauxclicky_enabled = false; \ + rgbsps_set(LED_AUDIO, COLOR_BLANK); \ + fauxclicky_stop(); \ +} while (0) +#undef FAUXCLICKY_ON +#define FAUXCLICKY_ON do { \ + fauxclicky_enabled = true; \ + rgbsps_set(LED_AUDIO, THEME_COLOR_AUDIO); \ +} while (0) +#endif #endif #include "outputselect.h" #include "led.h" @@ -128,9 +142,10 @@ enum planck_keycodes { #ifndef FAUXCLICKY_ENABLE FC_TOG, #endif -#ifndef ADAFRUIT_BLE_ENABLE - OUT_BLE, +#ifndef MODULE_ADAFRUIT_BLE + OUT_BT, #endif + RGBDEMO, KEYCODE_END }; @@ -421,19 +436,30 @@ const uint8_t PROGMEM LED_MODS[] = { }; const uint8_t PROGMEM LED_FN[] = { - LED_PUNC, + LED_EMPTY, LED_NUM, LED_FUN, - LED_EMOJI + LED_GREEK }; const uint8_t PROGMEM LED_INDICATORS[] = { - LED_IND_EMOJI, - LED_IND_NUM, - LED_IND_FUN, - LED_IND_BATTERY, - LED_IND_USB, + LED_IND_LINUX, + LED_IND_APPLE, + LED_IND_WINDOWS, + LED_IND_QWERTY, + LED_IND_ALT, + LED_IND_AUDIO, LED_IND_BLUETOOTH, + LED_IND_USB, + + LED_IND_BATTERY, + LED_IND_CAPSLOCK, + LED_IND_GUI, + LED_IND_FUN, + LED_IND_NUM, + LED_IND_PUNC, + LED_IND_EMOJI, + LED_IND_GREEK, }; const uint8_t PROGMEM LED_TRACKPOINT[] = { @@ -444,16 +470,37 @@ const uint8_t PROGMEM LED_TRACKPOINT[] = { void led_turnoff_keys(void) { for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { - rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 0, 0, 0); + rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), COLOR_BLACK); } for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { - rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 0, 0); + rgbsps_set(pgm_read_byte(&LED_MODS[i]), COLOR_BLACK); } for(uint8_t i = 0; i < COUNT(LED_FN); i++) { - rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 0); + rgbsps_set(pgm_read_byte(&LED_FN[i]), COLOR_BLACK); } } +#ifdef RGBSPS_DEMO_ENABLE +void led_demo(void) { + rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX); + rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE); + rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS); + rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY); + rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT); + rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO); + rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH); + rgbsps_set(LED_IND_USB, THEME_COLOR_USB); + rgbsps_set(LED_IND_CAPSLOCK, THEME_COLOR_CAPSLOCK); + rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI); + rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN); + rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM); + rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC); + rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK); + rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI); + rgbsps_send(); +} +#endif + void led_reset(void) { switch (glow_mode) { case GLOW_NONE: @@ -462,39 +509,55 @@ void led_reset(void) { case GLOW_MIN: led_turnoff_keys(); for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { - rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 8, 8, 8); + rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW1_HOME); } - rgbsps_set(LED_F, 15, 0, 0); - rgbsps_set(LED_J, 15, 0, 0); + rgbsps_set(LED_F, THEME_COLOR_GLOW1_HOMING); + rgbsps_set(LED_J, THEME_COLOR_GLOW1_HOMING); break; case GLOW_FULL: for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { - rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 8, 8, 8); + rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), THEME_COLOR_GLOW2_ALPHA); } for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { - rgbsps_set(pgm_read_byte(&LED_MODS[i]), 0, 15, 0); + rgbsps_set(pgm_read_byte(&LED_MODS[i]), THEME_COLOR_GLOW2_MODS); } for(uint8_t i = 0; i < COUNT(LED_FN); i++) { - rgbsps_set(pgm_read_byte(&LED_FN[i]), 0, 0, 15); + rgbsps_set(pgm_read_byte(&LED_FN[i]), THEME_COLOR_GLOW2_FN); } for(uint8_t i = 0; i < COUNT(LED_HOMING); i++) { - rgbsps_set(pgm_read_byte(&LED_HOMING[i]), 15, 0, 0); + rgbsps_set(pgm_read_byte(&LED_HOMING[i]), THEME_COLOR_GLOW2_HOME); } - rgbsps_set(LED_F, 15, 15, 0); - rgbsps_set(LED_J, 15, 15, 0); + rgbsps_set(LED_F, THEME_COLOR_GLOW2_HOMING); + rgbsps_set(LED_J, THEME_COLOR_GLOW2_HOMING); break; } } +void led_set_default_layer_indicator(void) { + uint8_t default_layer = biton32(default_layer_state); + if (default_layer == _QWERTY) { + rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY); + rgbsps_set(LED_IND_ALT, COLOR_BLANK); + } else { + rgbsps_set(LED_IND_QWERTY, COLOR_BLANK); + rgbsps_set(LED_IND_ALT, THEME_COLOR_ALT); + } + rgbsps_send(); + return; +} + void led_set_layer_indicator(void) { static uint8_t oldlayer = 255; - rgbsps_set(LED_IND_FUN, 0, 0, 0); - // rgbsps_set(LED_IND_NUM, 0, 0, 0); - rgbsps_set(LED_IND_EMOJI, 0, 0, 0); - led_reset(); + rgbsps_set(LED_IND_GUI, COLOR_BLANK); + rgbsps_set(LED_IND_FUN, COLOR_BLANK); + rgbsps_set(LED_IND_NUM, COLOR_BLANK); + rgbsps_set(LED_IND_PUNC, COLOR_BLANK); + rgbsps_set(LED_IND_GREEK, COLOR_BLANK); + rgbsps_set(LED_IND_EMOJI, COLOR_BLANK); + uint8_t layer = biton32(layer_state); if (oldlayer == layer) { return; @@ -508,39 +571,72 @@ void led_set_layer_indicator(void) { } switch(layer) { - case _FUN: - rgbsps_set(LED_IND_FUN, 15, 0, 0); + case _GUI: + rgbsps_set(LED_IND_GUI, THEME_COLOR_GUI); + break; + case _FUN: + rgbsps_set(LED_IND_FUN, THEME_COLOR_FUN); + break; + case _NUM: + rgbsps_set(LED_IND_NUM, THEME_COLOR_NUM); + break; + case _PUNC: + rgbsps_set(LED_IND_PUNC, THEME_COLOR_PUNC); + break; + case _GREEKL: + case _GREEKU: + rgbsps_set(LED_IND_GREEK, THEME_COLOR_GREEK); break; - // case _NUM: - // rgbsps_set(LED_IND_NUM, 0, 0, 15); - // break; case _EMOJI: - rgbsps_set(LED_IND_EMOJI, 15, 15, 0); + rgbsps_set(LED_IND_EMOJI, THEME_COLOR_EMOJI); break; default: - rgbsps_set(LED_IND_FUN, 3, 3, 3); - // rgbsps_set(LED_IND_NUM, 3, 3, 3); - rgbsps_set(LED_IND_EMOJI, 3, 3, 3); + rgbsps_set(LED_IND_GUI, THEME_COLOR_OTHERLAYER); + rgbsps_set(LED_IND_FUN, THEME_COLOR_OTHERLAYER); + rgbsps_set(LED_IND_NUM, THEME_COLOR_OTHERLAYER); + rgbsps_set(LED_IND_PUNC, THEME_COLOR_OTHERLAYER); + rgbsps_set(LED_IND_GREEK, THEME_COLOR_OTHERLAYER); + rgbsps_set(LED_IND_EMOJI, THEME_COLOR_OTHERLAYER); } rgbsps_send(); } +void led_set_unicode_input_mode(void) { + rgbsps_set(LED_IND_LINUX, COLOR_BLANK); + rgbsps_set(LED_IND_APPLE, COLOR_BLANK); + rgbsps_set(LED_IND_WINDOWS, COLOR_BLANK); + + switch (get_unicode_input_mode()) { + case UC_LNX: + rgbsps_set(LED_IND_LINUX, THEME_COLOR_LINUX); + break; + case UC_OSX: + rgbsps_set(LED_IND_APPLE, THEME_COLOR_APPLE); + break; + case UC_WIN: + case UC_WINC: + rgbsps_set(LED_IND_WINDOWS, THEME_COLOR_WINDOWS); + break; + } + rgbsps_send(); +} + void led_set_output_ble(void) { - rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 15); - rgbsps_set(LED_IND_USB, 0, 0, 0); + rgbsps_set(LED_IND_BLUETOOTH, THEME_COLOR_BLUETOOTH); + rgbsps_set(LED_IND_USB, COLOR_BLANK); rgbsps_send(); } void led_set_output_usb(void) { - rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); - rgbsps_set(LED_IND_USB, 15, 15, 15); + rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK); + rgbsps_set(LED_IND_USB, THEME_COLOR_USB); rgbsps_send(); } void led_set_output_none(void) { - rgbsps_set(LED_IND_BLUETOOTH, 0, 0, 0); - rgbsps_set(LED_IND_USB, 0, 0, 0); + rgbsps_set(LED_IND_BLUETOOTH, COLOR_BLANK); + rgbsps_set(LED_IND_USB, COLOR_BLANK); rgbsps_send(); } @@ -549,10 +645,30 @@ void led_init(void) { 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); + rgbsps_set(LED_TRACKPOINT1, THEME_COLOR_TP1); + rgbsps_set(LED_TRACKPOINT2, THEME_COLOR_TP2); + rgbsps_set(LED_TRACKPOINT3, THEME_COLOR_TP3); + + // unicode input mode + led_set_unicode_input_mode(); + + // layer indicator + led_set_layer_indicator(); + led_set_default_layer_indicator(); + + // clicky +#ifdef FAUXCLICKY_ENABLE + if (fauxclicky_enabled) { + rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO); + } else { + rgbsps_set(LED_IND_AUDIO, COLOR_BLANK); + } +#endif + + rgbsps_send(); } + + #endif // RGBSPS_ENABLE // keymaps @@ -574,7 +690,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_QUOT, KC_ENT , KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, C_RALT, KC_RCTL + KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, C_RALT, KC_RCTL, + _______, _______, _______ ), /* Dvorak @@ -593,7 +710,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______, _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______, _______, KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), #endif @@ -614,7 +732,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______, _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), #endif @@ -635,7 +754,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______, _______, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, _______, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), #endif @@ -656,7 +776,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______, _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______, _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), #endif @@ -675,7 +796,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______, KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______, KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COLN, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COLN, _______, + _______, _______, _______ ), /* Num @@ -690,10 +812,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_NUM] = KEYMAP( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), _______, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_1, KC_2, KC_3, S(KC_D), _______, KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______, - KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), _______, - _______, _______, KC_X, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_COLN, _______ + KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_7, KC_8, KC_9, S(KC_F), _______, + _______, _______, KC_X, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_COLN, _______, + _______, _______, _______ ), /* Func @@ -711,7 +834,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL, KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), /* Uppercase Greek @@ -729,7 +853,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______, _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______, _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), /* Lowercase Greek @@ -747,7 +872,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______, _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______, _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), /* Empty @@ -765,7 +891,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ ), /* Emoji @@ -783,7 +910,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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) + X(POO), X(EYES), X(HUNRD),_______, X(SKULL),X(HORNS), X(HALO), X(FEAR),_______,X(YUMMY),X(DISAP),X(NOEVK), + _______, _______, _______ ), /* GUI @@ -801,7 +929,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX, KC_ESC, XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC, KC_SPC, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______ ), /* Sys @@ -816,10 +945,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_SYS] = KEYMAP( - XXXXXXX, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + DEBUG, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO, XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BLE, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ + XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, + _______, _______, _______ ), @@ -828,6 +958,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { void persistant_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(default_layer); +#ifdef RGBSPS_ENABLE + led_set_default_layer_indicator(); +#endif } #ifdef DOUBLESPACE_LAYER_ENABLE @@ -1072,14 +1205,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // OS switchers case LINUX: set_unicode_input_mode(UC_LNX); +#ifdef RGBSPS_ENABLE + led_set_unicode_input_mode(); +#endif return false; break; case WIN: set_unicode_input_mode(UC_WINC); +#ifdef RGBSPS_ENABLE + led_set_unicode_input_mode(); +#endif return false; break; case OSX: set_unicode_input_mode(UC_OSX); +#ifdef RGBSPS_ENABLE + led_set_unicode_input_mode(); +#endif return false; break; @@ -1101,20 +1243,35 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // faux clicky indicator #ifdef FAUXCLICKY_ENABLE case FC_TOG: +#ifdef RGBSPS_ENABLE + if (fauxclicky_enabled) { + rgbsps_set(LED_IND_AUDIO, THEME_COLOR_AUDIO); + } else { + rgbsps_set(LED_IND_AUDIO, COLOR_BLANK); + } + rgbsps_send(); +#endif return true; break; #endif + +#ifdef RGBSPS_DEMO_ENABLE + case RGBDEMO: + led_demo(); + return false; + break; +#endif } return true; } void set_output_user(uint8_t output) { -#ifdef ADAFRUIT_BLE_ENABLE +#ifdef MODULE_ADAFRUIT_BLE switch(output) { case OUTPUT_USB: led_set_output_usb(); break; - case OUTPUT_ADAFRUIT_BLE: + case OUTPUT_BLUETOOTH: led_set_output_ble(); break; default: @@ -1133,12 +1290,12 @@ void matrix_init_user() { #endif // auto detect output on init -#ifdef ADAFRUIT_BLE_ENABLE +#ifdef MODULE_ADAFRUIT_BLE uint8_t output = auto_detect_output(); if (output == OUTPUT_USB) { set_output(OUTPUT_USB); } else { - set_output(OUTPUT_ADAFRUIT_BLE); + set_output(OUTPUT_BLUETOOTH); } #endif } @@ -1164,9 +1321,9 @@ void turn_off_capslock() { bool new_capslock = usb_led & (1<. +*/ +#include +#include +#if defined(__AVR__) +#include +#endif +#include "wait.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "timer.h" + + +/* Set 0 if debouncing isn't needed */ + +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 +#endif + +#if (DEBOUNCING_DELAY > 0) + static uint16_t debouncing_time; + static bool debouncing = false; +#endif + +#if (MATRIX_COLS <= 8) +# define print_matrix_header() print("\nr/c 01234567\n") +# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop(matrix[i]) +# define ROW_SHIFTER ((uint8_t)1) +#elif (MATRIX_COLS <= 16) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop16(matrix[i]) +# define ROW_SHIFTER ((uint16_t)1) +#elif (MATRIX_COLS <= 32) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop32(matrix[i]) +# define ROW_SHIFTER ((uint32_t)1) +#endif + +#ifdef MATRIX_MASKED + extern const matrix_row_t matrix_mask[]; +#endif + +static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +static const uint8_t tp_pins[3] = TRACKPOINT_PINS; + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static void init_cols(void); +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row); +static void unselect_rows(void); +static void select_row(uint8_t row); +static void unselect_row(uint8_t row); + +__attribute__ ((weak)) +void matrix_init_quantum(void) { + matrix_init_kb(); +} + +__attribute__ ((weak)) +void matrix_scan_quantum(void) { + matrix_scan_kb(); +} + +__attribute__ ((weak)) +void matrix_init_kb(void) { + matrix_init_user(); +} + +__attribute__ ((weak)) +void matrix_scan_kb(void) { + matrix_scan_user(); +} + +__attribute__ ((weak)) +void matrix_init_user(void) { +} + +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +inline +uint8_t matrix_rows(void) { + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) { + return MATRIX_COLS; +} + +void matrix_init(void) { + + // To use PORTF disable JTAG with writing JTD bit twice within four cycles. + #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__)) + MCUCR |= _BV(JTD); + MCUCR |= _BV(JTD); + #endif + + // initialize row and col + unselect_rows(); + init_cols(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + matrix_debouncing[i] = 0; + } + + matrix_init_quantum(); +} + +uint8_t matrix_scan(void) +{ + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { +# if (DEBOUNCING_DELAY > 0) + bool matrix_changed = read_cols_on_row(matrix_debouncing, current_row); + + if (matrix_changed) { + debouncing = true; + debouncing_time = timer_read(); + } + +# else + read_cols_on_row(matrix, current_row); +# endif + + } + +# if (DEBOUNCING_DELAY > 0) + if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) { + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = matrix_debouncing[i]; + } + debouncing = false; + } +# endif + + matrix_scan_quantum(); + return 1; +} + +bool matrix_is_modified(void) +{ +#if (DEBOUNCING_DELAY > 0) + if (debouncing) return false; +#endif + return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) + +{ + return (matrix[row] & ((matrix_row_t)1> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI + } + + // rows + DDRF |= ROW_MASK; + PORTF &= ~ROW_MASK; + + // trackpoint + for(uint8_t x = 0; x < 3; x++) { + uint8_t pin = tp_pins[x]; + _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI + } +} + +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) + { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Clear data in matrix row + current_matrix[current_row] = 0; + + // special case for trackpoint + if (current_row == 8) { + for(uint8_t tp_index = 0; tp_index < 3; tp_index++) { + + // Select the TP pin to read (active low) + uint8_t pin = tp_pins[tp_index]; + uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << tp_index); + } + return (last_row_value != current_matrix[current_row]); + } + + // Select row and wait for row selecton to stabilize + select_row(current_row); + _delay_us(5); // without this wait it won't read stable value. + // wait_us(50); + + // For each col... + for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + + // Select the col pin to read (active low) + uint8_t pin = col_pins[col_index]; + uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +static void select_row(uint8_t row) +{ + PORTF = row_bit[row] | (PORTF & ~ROW_MASK); +} + +static void unselect_row(uint8_t row) +{ +} + +static void unselect_rows(void) +{ +} + diff --git a/keyboards/handwired/promethium/promethium.c b/keyboards/handwired/promethium/promethium.c index 4943f8c9fc6..3cc0f5a8c82 100644 --- a/keyboards/handwired/promethium/promethium.c +++ b/keyboards/handwired/promethium/promethium.c @@ -2,6 +2,11 @@ #include "analog.h" #include "timer.h" #include "matrix.h" +#include "musical_notes.h" + +float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_A4, 0.0625); +float fauxclicky_released_note[2] = MUSICAL_NOTE(_A4, 0.0625); +float fauxclicky_beep_note[2] = MUSICAL_NOTE(_C6, 0.25); // cubic fit {3.3, 0}, {3.5, 2.9}, {3.6, 5}, {3.7, 8.6}, {3.8, 36}, {3.9, 62}, {4.0, 73}, {4.05, 83}, {4.1, 89}, {4.15, 94}, {4.2, 100} diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index e75cf4dde43..a6dd43b8592 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -65,12 +65,14 @@ 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 -ADAFRUIT_BLE_ENABLE ?= yes API_SYSEX_ENABLE ?= no +CUSTOM_MATRIX ?= yes +BLUETOOTH ?= AdafruitBLE # 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 -SRC += $(QUANTUM_DIR)/analog.c \ No newline at end of file +SRC += $(QUANTUM_DIR)/analog.c +SRC += matrix.c diff --git a/keyboards/hhkb/keymaps/cinaeco/Makefile b/keyboards/hhkb/keymaps/cinaeco/Makefile new file mode 100644 index 00000000000..05b724051ec --- /dev/null +++ b/keyboards/hhkb/keymaps/cinaeco/Makefile @@ -0,0 +1,23 @@ +# cinaeco's HHKB firmware + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +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. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/hhkb/keymaps/cinaeco/README.md b/keyboards/hhkb/keymaps/cinaeco/README.md new file mode 100644 index 00000000000..c1c48e60937 --- /dev/null +++ b/keyboards/hhkb/keymaps/cinaeco/README.md @@ -0,0 +1,23 @@ +# QMK Keyboard Firmware for HHKB + +## Modifications + +### HHKB Fn Layer + +Added some Media keys. + +### Utility Layer (SpaceFN) + +Hold `Space` for: + +- Vi-style direction keys. +- WASD-style mouse keys. +- Dynamic macro playback on `1` and `2`. +- Qwerty/Colemak/Dvorak layout selection on `-`, `=` and `\ ` + +### Dynamic Macros + +Hold `q` and press: + +- `1` or `2` to record macro 1 or 2. +- `s` to stop recording. diff --git a/keyboards/hhkb/keymaps/cinaeco/config.h b/keyboards/hhkb/keymaps/cinaeco/config.h new file mode 100644 index 00000000000..c7b4c784c08 --- /dev/null +++ b/keyboards/hhkb/keymaps/cinaeco/config.h @@ -0,0 +1,20 @@ +#ifndef CONFIG_CINAECO_H +#define CONFIG_CINAECO_H + +#include "../../config.h" + +#undef MANUFACTURER +#undef PRODUCT +#undef DESCRIPTION +#define MANUFACTURER QMK +#define PRODUCT HHKB QMK cinaeco +#define DESCRIPTION HHKB on QMK Firmware with cinaeco keymap + +// Increase "Tap" detection window. Avoid missing 'q' or 'z' when typing slowly. +#undef TAPPING_TERM +#define TAPPING_TERM 230 + +// Uncomment to enable NKRO by default. May cause issues with KVM switches. +//#define FORCE_NKRO + +#endif diff --git a/keyboards/hhkb/keymaps/cinaeco/keymap.c b/keyboards/hhkb/keymaps/cinaeco/keymap.c new file mode 100644 index 00000000000..0b204600d15 --- /dev/null +++ b/keyboards/hhkb/keymaps/cinaeco/keymap.c @@ -0,0 +1,186 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * cinaeco's HHKB Layout + */ +#include "hhkb.h" + +// Layers. +#define QWER 0 +#define COLE 1 +#define DVOR 2 +#define HHKB 3 +#define UTIL 4 +#define MREC 5 + +// Easier-to-read Layer Arrays. +#define ____ KC_TRNS + +enum hhkb_keycodes { + DYNAMIC_MACRO_RANGE = SAFE_RANGE, +}; + +#include "dynamic_macro.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + /* QWER Layer: Qwerty Default + * + * ,--------------------------------------------------------------. + * |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| + * |--------------------------------------------------------------| + * |Tab |Q/MREC| W| E| R| T| Y| U| I| O| P| [| ]|Backs| + * |--------------------------------------------------------------| + * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Ent/Ctrl| + * |--------------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| + * `--------------------------------------------------------------' + * |Alt|Gui | Space/UTIL |Gui |Alt| + * `-------------------------------------------' + * + */ + + [QWER] = KEYMAP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, LT(MREC, 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, CTL_T(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, MO(HHKB), \ + KC_LALT, KC_LGUI, LT(UTIL, KC_SPC), KC_RGUI, KC_RALT), + + + /* COLE Layer: Colemak + * + * ,--------------------------------------------------------------. + * |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| + * |--------------------------------------------------------------| + * |Tab |Q/MREC| W| F| P| G| J| L| U| Y| ;| [| ]|Backs| + * |--------------------------------------------------------------| + * |Ctrl | A| R| S| T| D| H| N| E| I| O| '|Ent/Ctrl| + * |--------------------------------------------------------------| + * |Shift | Z| X| C| V| K| B| M| ,| .| /|Shift |Fn0| + * `--------------------------------------------------------------' + * |Alt|Gui | Space/UTIL |Gui |Alt| + * `-------------------------------------------' + * + */ + + [COLE] = KEYMAP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_TAB, LT(MREC, KC_Q), KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, CTL_T(KC_ENT), \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_K, KC_B, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB), \ + KC_LALT, KC_LGUI, LT(UTIL, KC_SPC), KC_RGUI, KC_RALT), + + + /* DVOR Layer: Dvorak + * + * ,--------------------------------------------------------------. + * |Esc| 1 | 2| 3| 4| 5| 6| 7| 8| 9| 0| [| ]| \| `| + * |--------------------------------------------------------------| + * |Tab |'/MREC| ,| .| P| Y| F| G| C| R| L| /| =|Backs| + * |--------------------------------------------------------------| + * |Ctrl | A| O| E| U| I| D| H| T| N| S| -|Ent/Ctrl| + * |--------------------------------------------------------------| + * |Shift | ;| Q| J| K| X| B| M| W| V| Z|Shift |Fn0| + * `--------------------------------------------------------------' + * |Alt|Gui | Space/UTIL |Gui |Alt| + * `-------------------------------------------' + * + */ + + [DVOR] = KEYMAP( + 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_BSLS, KC_GRV, \ + KC_TAB, LT(MREC, 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_BSPC, \ + KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, CTL_T(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_RSFT, MO(HHKB), \ + KC_LALT, KC_LGUI, LT(UTIL, KC_SPC), KC_RGUI, KC_RALT), + + + /* HHKB Layer: HHKB mode (HHKB Fn) + * + * ,-----------------------------------------------------------. + * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| + * |-----------------------------------------------------------| + * |Caps |PLA|PRV|NXT| | | | |Psc|Slk|Pus|Up | |Backs| + * |-----------------------------------------------------------| + * | |VoD|VoU|Mut|Ejc| | *| /|Hom|PgU|Lef|Rig|Enter | + * |-----------------------------------------------------------| + * | | | | | | | +| -|End|PgD|Dow| | | + * `-----------------------------------------------------------' + * | | | |STOP | | + * `-------------------------------------------' + */ + + [HHKB] = KEYMAP( + 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_MPLY, KC_MPRV, KC_MNXT, ____, ____, ____, ____, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ____, KC_BSPC, \ + ____, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, ____, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + ____, ____, ____, ____, ____, ____, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, ____, ____, \ + ____, ____, ____, KC_MSTP, ____), + + + /* UTIL Layer: Extra utilities + * + * ,-------------------------------------------------------------. + * |DFU|PLY1|PLY2| | | | | | | | |QWE|COL|DVO|DBG| + * |-------------------------------------------------------------| + * | |MLB |M-Up|MRB|MwU| |Hom|PgD|PgU|End| | | | | + * |-------------------------------------------------------------| + * | |M-Lt|M-Dn|M-R|MwD| |LEF|DOW|UP |RIG| | | | + * |-------------------------------------------------------------| + * | | | | | |SPC| | | | | | | | + * `-------------------------------------------------------------' + * | | | | | | + * `-------------------------------------------' + * + */ + + [UTIL] = KEYMAP( + RESET, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, ____, ____, ____, ____, ____, ____, ____, ____, DF(QWER), DF(COLE), DF(DVOR), DEBUG, \ + ____, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, ____, KC_HOME, KC_PGDN, KC_PGUP, KC_END, ____, ____, ____, ____, \ + ____, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, ____, ____, ____, \ + ____, ____, ____, ____, ____, KC_SPC, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____), + + + /* MREC Layer: Record macros with `q` + * + * ,-------------------------------------------------------------. + * | |REC1|REC2| | | | | | | | | | | | | + * |-------------------------------------------------------------| + * | | | | | | | | | | | | | | | + * |-------------------------------------------------------------| + * | | |RSTP| | | | | | | | | | | + * |-------------------------------------------------------------| + * | | | | | | | | | | | | | | + * `-------------------------------------------------------------' + * | | | | | | + * `-------------------------------------------' + * + */ + + [MREC] = KEYMAP( + ____, DYN_REC_START1, DYN_REC_START2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, DYN_REC_STOP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____) + +}; + + + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + return MACRO_NONE; +}; + +// For Dynamic Macros. +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_dynamic_macro(keycode, record)) { + return false; + } + return true; +} diff --git a/keyboards/hhkb/keymaps/smt/keymap.c b/keyboards/hhkb/keymaps/smt/keymap.c new file mode 100644 index 00000000000..a7ea54de80a --- /dev/null +++ b/keyboards/hhkb/keymaps/smt/keymap.c @@ -0,0 +1,176 @@ +/* -*- eval: (turn-on-orgtbl); -*- + * default HHKB Layout + */ +#include "hhkb.h" + +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _HHKB 3 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + HHKB +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +// Custom macros +#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl +#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift +#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Layer QWERTY: Qwerty Layer + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + + |------+------+-----------------------+------+------| + | LAlt | LGUI | ******* Space ******* | RGUI | RAlt | + |------+------+-----------------------+------+------| + */ + + [_QWERTY] = KEYMAP( // Qwerty layer + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, MEH_GRV, \ + HPR_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, \ + CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, SFT_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, MO(_HHKB), \ + KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer COLEMAK: Colemak Layer + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Tab | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | Backs | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Cont | A | R | S | T | D | H | N | E | I | O | ' | Ent | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Shift | Z | X | C | V | B | K | M | , | . | / | Shift | Fn | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + + |------+------+-----------------------+------+------| + | LAlt | LGUI | ******* Space ******* | RGUI | RAlt | + |------+------+-----------------------+------+------| + */ + + [_COLEMAK] = KEYMAP( // Colemak layer + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, MEH_GRV, \ + HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSPC, \ + CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, SFT_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, MO(_HHKB), \ + KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer DVORAK: Dvorak Layer + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [ | ] | \ | ` | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Tab | ' | , | . | P | Y | F | G | C | R | L | / | = | Backs | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Cont | A | O | E | U | I | D | H | T | N | S | - | Ent | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + | Shift | ; | Q | J | K | X | B | M | W | V | Z | Shift | Fn | | | + |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---| + + |------+------+-----------------------+------+------| + | LAlt | LGUI | ******* Space ******* | RGUI | RAlt | + |------+------+-----------------------+------+------| + */ + + [_DVORAK] = KEYMAP( // Dvorak layer + 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_BSLS, MEH_GRV, \ + HPR_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_BSPC, \ + CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, SFT_ENT, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, MO(_HHKB), \ + KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT), + + + + /* Layer HHKB: HHKB mode (HHKB Fn) + |------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-------+-------+-----| + | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + |------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-------+-------+-----| + | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | | + |------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-------+-------+-----| + | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | | + |------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-------+-------+-----| + | | | Qwt | Cmk | Dvk | | + | - | End | PgD | Dow | | | | | + |------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-------+-------+-----| + + |------+------+----------------------+------+------+ + | **** | **** | ******************** | **** | **** | + |------+------+----------------------+------+------+ + + */ + + [_HHKB] = KEYMAP( + 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_BSPC, \ + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \ + _______, _______, _______, _______, _______)}; + + +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; +}; + +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) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + } + return true; +} diff --git a/keyboards/hhkb/rules.mk b/keyboards/hhkb/rules.mk index a46271f0234..e4190039f7e 100644 --- a/keyboards/hhkb/rules.mk +++ b/keyboards/hhkb/rules.mk @@ -53,7 +53,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT #OPT_DEFS += -DBOOTLOADER_SIZE=4096 # as per original hasu settings -OPT_DEFS += -DBOOTLOADER_SIZE=512 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. diff --git a/keyboards/kitten_paw/keymaps/ickerwx/config.h b/keyboards/kitten_paw/keymaps/ickerwx/config.h index 04a2d253c79..142aba89094 100644 --- a/keyboards/kitten_paw/keymaps/ickerwx/config.h +++ b/keyboards/kitten_paw/keymaps/ickerwx/config.h @@ -22,7 +22,7 @@ #undef MOUSEKEY_WHEEL_MAX_SPEED #define MOUSEKEY_WHEEL_MAX_SPEED 3 #undef MOUSEKEY_WHEEL_TIME_TO_MAX -#define MOUSEKEY_WHEEL_TIME_TO_MAX 1000 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 255 #undef ONESHOT_TIMEOUT #define ONESHOT_TIMEOUT 500 #undef TAPPING_TOGGLE diff --git a/keyboards/kitten_paw/keymaps/ickerwx/keymap.c b/keyboards/kitten_paw/keymaps/ickerwx/keymap.c index 9a00c80dc81..9dffbb272c0 100644 --- a/keyboards/kitten_paw/keymaps/ickerwx/keymap.c +++ b/keyboards/kitten_paw/keymaps/ickerwx/keymap.c @@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,S(NUBS),_______,_______,_______,_______,_______,_______,_______,KC_NUBS,S(NUBS),S(MINS), _______, _______, _______,_______,_______,_______, \ _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______, _______,_______), /* Layer 3: media layer */ - [MEDIA] = KEYMAP(\ + [MEDIA] = KEYMAP(\ KC_PWR,KC_SLEP,KC_WAKE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX, \ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_MPRV,KC_MPLY,KC_MNXT, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, \ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_VOLD,KC_MUTE,KC_VOLU, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, \ diff --git a/keyboards/mitosis/Makefile b/keyboards/mitosis/Makefile new file mode 100644 index 00000000000..4e2a6f00fd8 --- /dev/null +++ b/keyboards/mitosis/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/mitosis/config.h b/keyboards/mitosis/config.h new file mode 100644 index 00000000000..cb6378ab4cd --- /dev/null +++ b/keyboards/mitosis/config.h @@ -0,0 +1,87 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER unknown +#define PRODUCT Mitosis +#define DESCRIPTION q.m.k. keyboard firmware for Mitosis + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 10 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +//#define BACKLIGHT_LEVELS 3 + +#define ONESHOT_TIMEOUT 500 + + +/* 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. + */ + +#define PREVENT_STUCK_MODIFIERS + +/* 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 + +//UART settings for communication with the RF microcontroller +#define SERIAL_UART_BAUD 1000000 +#define SERIAL_UART_DATA UDR1 +#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1) +#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1)) +#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) +#define SERIAL_UART_INIT() do { \ + /* baud rate */ \ + UBRR1L = SERIAL_UART_UBRR; \ + /* baud rate */ \ + UBRR1H = SERIAL_UART_UBRR >> 8; \ + /* enable TX and RX */ \ + UCSR1B = _BV(TXEN1) | _BV(RXEN1); \ + /* 8-bit data */ \ + UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \ + } while(0) + +#endif diff --git a/keyboards/mitosis/keymaps/default/keymap.c b/keyboards/mitosis/keymaps/default/keymap.c new file mode 100644 index 00000000000..320d33db680 --- /dev/null +++ b/keyboards/mitosis/keymaps/default/keymap.c @@ -0,0 +1,221 @@ +// 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 "mitosis.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. +enum mitosis_layers +{ + _MALT, + _SHIFTED, + _FUNCTION, + _FUNCSHIFT +}; + +enum mitosis_keycodes +{ + FNKEY = SAFE_RANGE, + SHIFT +}; + + +// Macro definitions for readability +enum mitosis_macros +{ + VOLU, + VOLD, + ESCM +}; + +#define LONGPRESS_DELAY 150 +#define LAYER_TOGGLE_DELAY 300 + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_MALT] = { /* Malt Layout, customised for reduced columns (ex: quote and shift locations) */ + {KC_Q, KC_P, KC_Y, KC_C, KC_B, KC_V, KC_M, KC_U, KC_Z, KC_L }, + {KC_A, KC_N, KC_I, KC_S, KC_F, KC_D, KC_T, KC_H, KC_O, KC_R }, + {KC_COMM, KC_DOT, KC_J, KC_G, KC_SLSH, KC_SCLN, KC_W, KC_K, KC_QUOT, KC_X }, + {XXXXXXX, M(VOLU), M(ESCM), KC_TAB, KC_LCTL, KC_LALT, KC_ENT, KC_DEL, KC_PGUP, XXXXXXX }, + {XXXXXXX, M(VOLD), KC_LGUI, KC_E, FNKEY, SHIFT, KC_SPC, KC_BSPC, KC_PGDN, XXXXXXX } +}, + + +[_SHIFTED] = { /* Shifted Layer, layered so that tri_layer can be used, or selectively + able to modify individual key's shifted behaviour */ + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX }, + {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX } +}, + + + +[_FUNCTION] = { /* Function Layer, primary alternative layer featuring numpad on right hand, + cursor keys on left hand, and all symbols*/ + {KC_AMPR, KC_PERC, KC_UP, KC_CIRC, KC_PIPE, KC_LBRC, KC_7, KC_8, KC_9, KC_MINS }, + {KC_AT, KC_LEFT, KC_DOWN, KC_RGHT, KC_HASH, KC_LPRN, KC_4, KC_5, KC_6, KC_PLUS }, + {KC_ASTR, KC_UNDS, KC_EXLM, KC_DLR, KC_BSLS, KC_LCBR, KC_1, KC_2, KC_3, KC_ENT }, + {XXXXXXX, KC_HOME, KC_GRV, KC_PWR, _______, _______, KC_EQL, KC_TILD, KC_DOT, XXXXXXX }, + {XXXXXXX, KC_END, _______, _______, _______, _______, KC_0, _______, KC_PSCR, XXXXXXX } +}, + + +[_FUNCSHIFT] = { /* Function Shifted Layer, secondary alternative layer with closing brackets, + and F-keys under their numpad equivalents*/ + {_______, _______, _______, _______, _______, KC_RBRC, KC_F7, KC_F8, KC_F9, KC_F10 }, + {_______, _______, _______, _______, _______, KC_RPRN, KC_F4, KC_F5, KC_F6, KC_F11 }, + {_______, _______, _______, _______, _______, KC_RCBR, KC_F1, KC_F2, KC_F3, KC_F12 }, + {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX }, + {XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX } +} + +}; + + +const uint16_t PROGMEM fn_actions[] = { + +}; + +static uint16_t key_timer; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + + //switch multiplexing for media, short tap for volume up, long press for play/pause + case VOLU: + if (record->event.pressed) { + key_timer = timer_read(); // if the key is being pressed, we start the timer. + } else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). + if (timer_elapsed(key_timer) > LONGPRESS_DELAY) { // LONGPRESS_DELAY being 150ms, the threshhold we pick for counting something as a tap. + return MACRO(T(MPLY), END); + } else { + return MACRO(T(VOLU), END); + } + } + break; + + //switch multiplexing for media, short tap for volume down, long press for next track + case VOLD: + if (record->event.pressed) { + key_timer = timer_read(); + } else { + if (timer_elapsed(key_timer) > LONGPRESS_DELAY) { + return MACRO(T(MNXT), END); + } else { + return MACRO(T(VOLD), END); + } + } + break; + + //switch multiplexing for escape, short tap for escape, long press for context menu + case ESCM: + if (record->event.pressed) { + key_timer = timer_read(); + } else { + if (timer_elapsed(key_timer) > LONGPRESS_DELAY) { + return MACRO(T(APP), END); + } else { + return MACRO(T(ESC), END); + } + } + break; + + break; + } + return MACRO_NONE; +}; + +static bool singular_key = false; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + uint8_t layer; + layer = biton32(layer_state); // get the current layer + + //custom layer handling for tri_layer, + switch (keycode) { + case FNKEY: + if (record->event.pressed) { + key_timer = timer_read(); + singular_key = true; + layer_on(_FUNCTION); + } else { + if (timer_elapsed(key_timer) < LAYER_TOGGLE_DELAY || !singular_key) { + layer_off(_FUNCTION); + } + } + update_tri_layer(_FUNCTION, _SHIFTED, _FUNCSHIFT); + return false; + break; + //SHIFT is handled as LSHIFT in the general case + case SHIFT: + if (record->event.pressed) { + key_timer = timer_read(); + singular_key = true; + layer_on(_SHIFTED); + register_code(KC_LSFT); + } else { + if (timer_elapsed(key_timer) < LAYER_TOGGLE_DELAY || !singular_key) { + layer_off(_SHIFTED); + unregister_code(KC_LSFT); + } + } + update_tri_layer(_FUNCTION, _SHIFTED, _FUNCSHIFT); + return false; + break; + + //If any other key was pressed during the layer mod hold period, + //then the layer mod was used momentarily, and should block latching + default: + singular_key = false; + break; + } + + //FUNCSHIFT has been shifted by the SHIFT handling, some keys need to be excluded + if (layer == _FUNCSHIFT) { + //F1-F12 should be sent as unshifted keycodes, + //and ] needs to be unshifted or it is sent as } + if ( (keycode >= KC_F1 && keycode <= KC_F12) + || keycode == KC_RBRC ) { + if (record->event.pressed) { + unregister_mods(MOD_LSFT); + } else { + register_mods(MOD_LSFT); + } + } + } + + return true; +}; + +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + switch (layer) { + case _MALT: + set_led_off; + break; + case _FUNCTION: + set_led_blue; + break; + case _SHIFTED: + set_led_red; + break; + case _FUNCSHIFT: + set_led_green; + break; + default: + break; + } +}; + diff --git a/keyboards/mitosis/matrix.c b/keyboards/mitosis/matrix.c new file mode 100644 index 00000000000..0d046339ea4 --- /dev/null +++ b/keyboards/mitosis/matrix.c @@ -0,0 +1,164 @@ +/* +Copyright 2012 Jun Wako +Copyright 2014 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include +#include +#if defined(__AVR__) +#include +#endif +#include "wait.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "timer.h" + +#if (MATRIX_COLS <= 8) +# define print_matrix_header() print("\nr/c 01234567\n") +# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop(matrix[i]) +# define ROW_SHIFTER ((uint8_t)1) +#elif (MATRIX_COLS <= 16) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop16(matrix[i]) +# define ROW_SHIFTER ((uint16_t)1) +#elif (MATRIX_COLS <= 32) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop32(matrix[i]) +# define ROW_SHIFTER ((uint32_t)1) +#endif + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; + +__attribute__ ((weak)) +void matrix_init_quantum(void) { + matrix_init_kb(); +} + +__attribute__ ((weak)) +void matrix_scan_quantum(void) { + matrix_scan_kb(); +} + +__attribute__ ((weak)) +void matrix_init_kb(void) { + matrix_init_user(); +} + +__attribute__ ((weak)) +void matrix_scan_kb(void) { + matrix_scan_user(); +} + +__attribute__ ((weak)) +void matrix_init_user(void) { +} + +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +inline +uint8_t matrix_rows(void) { + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) { + return MATRIX_COLS; +} + +void matrix_init(void) { + + matrix_init_quantum(); +} + +uint8_t matrix_scan(void) +{ + SERIAL_UART_INIT(); + + uint32_t timeout = 0; + + //the s character requests the RF slave to send the matrix + SERIAL_UART_DATA = 's'; + + //trust the external keystates entirely, erase the last data + uint8_t uart_data[11] = {0}; + + //there are 10 bytes corresponding to 10 columns, and an end byte + for (uint8_t i = 0; i < 11; i++) { + //wait for the serial data, timeout if it's been too long + //this only happened in testing with a loose wire, but does no + //harm to leave it in here + while(!SERIAL_UART_RXD_PRESENT){ + timeout++; + if (timeout > 10000){ + break; + } + } + uart_data[i] = SERIAL_UART_DATA; + } + + //check for the end packet, the key state bytes use the LSBs, so 0xE0 + //will only show up here if the correct bytes were recieved + if (uart_data[10] == 0xE0) + { + //shifting and transferring the keystates to the QMK matrix variable + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = (uint16_t) uart_data[i*2] | (uint16_t) uart_data[i*2+1] << 5; + } + } + + + matrix_scan_quantum(); + return 1; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & ((matrix_row_t)1 + +#define red_led_off PORTF |= (1<<5) +#define red_led_on PORTF &= ~(1<<5) +#define blu_led_off PORTF |= (1<<4) +#define blu_led_on PORTF &= ~(1<<4) +#define grn_led_off PORTD |= (1<<1) +#define grn_led_on PORTD &= ~(1<<1) + +#define set_led_off red_led_off; grn_led_off; blu_led_off +#define set_led_red red_led_on; grn_led_off; blu_led_off +#define set_led_blue red_led_off; grn_led_off; blu_led_on +#define set_led_green red_led_off; grn_led_on; blu_led_off +#define set_led_yellow red_led_on; grn_led_on; blu_led_off +#define set_led_magenta red_led_on; grn_led_off; blu_led_on +#define set_led_cyan red_led_off; grn_led_on; blu_led_on +#define set_led_white red_led_on; grn_led_on; blu_led_on + +/* +#define LED_B 5 +#define LED_R 6 +#define LED_G 7 + +#define all_leds_off PORTF &= ~(1<.c` and see keymap document (you can find in top readme.md) and existent keymap files. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|] +``` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/mitosis/rules.mk b/keyboards/mitosis/rules.mk new file mode 100644 index 00000000000..4e4eba82bc8 --- /dev/null +++ b/keyboards/mitosis/rules.mk @@ -0,0 +1,81 @@ + +OPT_DEFS += -DMITOSIS_PROMICRO +OPT_DEFS += -DCATERINA_BOOTLOADER +MITOSIS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \ + avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) + +# # project specific files +SRC = matrix.c + + +# 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 +# comment out to disable the options. +# +#BOOTMAGIC_ENABLE = yes # 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 +CUSTOM_MATRIX ?= yes # Remote matrix from the wireless bridge +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID + +USB ?= /dev/ttyACM0 + +upload: build + $(MITOSIS_UPLOAD_COMMAND) diff --git a/keyboards/planck/keymaps/lae3/Makefile b/keyboards/planck/keymaps/lae3/Makefile new file mode 100644 index 00000000000..595803e322f --- /dev/null +++ b/keyboards/planck/keymaps/lae3/Makefile @@ -0,0 +1,23 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = 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 = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +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. + +# 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 diff --git a/keyboards/planck/keymaps/lae3/config.h b/keyboards/planck/keymaps/lae3/config.h new file mode 100644 index 00000000000..a28634e696d --- /dev/null +++ b/keyboards/planck/keymaps/lae3/config.h @@ -0,0 +1,8 @@ +#ifndef LAE3_KEYMAP_H +#define LAE3_KEYMAP_H + +#include "../../config.h" + +#define PREVENT_STUCK_MODIFIERS + +#endif diff --git a/keyboards/planck/keymaps/lae3/keymap.c b/keyboards/planck/keymaps/lae3/keymap.c new file mode 100644 index 00000000000..4127a3ae131 --- /dev/null +++ b/keyboards/planck/keymaps/lae3/keymap.c @@ -0,0 +1,262 @@ +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE +#include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum planck_layers { + _QWERTY, + _ARROW, + _NUMPAD, + _MOVEMENT, + _LOWER, + _RAISE, + _ADJUST +}; + +#define _MV _MOVEMENT + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + ARROW, + NUMPAD, + LOWER, + RAISE, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define KC_MUP KC_MS_UP +#define KC_MDN KC_MS_DOWN +#define KC_MLFT KC_MS_LEFT +#define KC_MRGT KC_MS_RIGHT +#define KC_MB1 KC_MS_BTN1 +#define KC_MB2 KC_MS_BTN2 +#define KC_MB3 KC_MS_BTN3 +#define KC_MB4 KC_MS_BTN4 +#define KC_MB5 KC_MS_BTN5 +#define KC_MWUP KC_MS_WH_UP +#define KC_MWDN KC_MS_WH_DOWN + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | A | S | D | F | G | H | J | K | L | ; |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Shift | Z | X | C | V | B | N | M | , | . | / |Shift | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl | GUI | Alt | Move |Lower | Space |Raise | Move | Alt | GUI | Ctrl | + * `-----------------------------------------------------------------------------------' + */ + [_QWERTY] = { + {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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, MO(_MV), LOWER, KC_SPC, KC_SPC, RAISE, MO(_MV), KC_RALT, KC_RGUI, KC_RCTL} + }, + + /* Arrow + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | Up | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | Left | Down | Right| + * `-----------------------------------------------------------------------------------' + */ + [_ARROW] = { + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT} + }, + + /* Numpad + * ,-----------------------------------------------------------------------------------. + * | | | | | | |NumLck| 7 | 8 | 9 | / | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | |Enter | 4 | 5 | 6 | * | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | 3 | 2 | 1 | - | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | 0 | . | + | | + * `-----------------------------------------------------------------------------------' + */ + [_NUMPAD] = { + {_______, _______, _______, _______, _______, _______, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_PSLS, _______}, + {_______, _______, _______, _______, _______, _______, KC_PENT, KC_P4, KC_P5, KC_P6, KC_PAST, _______}, + {_______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PPLS, _______} + }, + + /* Movement + * ,-----------------------------------------------------------------------------------. + * | |MsBut2|Ms Up |MsBut1|MsWhUp| | Home | PgDn | PgUp | End | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Ms Lft|Ms Dn |Ms Rgt|MsWhDn| | Left | Down | Up | Right| | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_MOVEMENT] = { + {_______, KC_MB2, KC_MUP, KC_MB1, KC_MWUP, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______}, + {_______, KC_MLFT, KC_MDN, KC_MRGT, KC_MWDN, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + }, + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | - | = | Del | End | PgDn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Caps | 6 | 7 | 8 | 9 | 0 | [ | ] | \ | ' | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F1 | F2 | F3 | F4 | | | F5 | F6 | F7 | F8 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_DEL, KC_END, KC_PGDN, _______}, + {KC_CAPS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSLS, KC_QUOT, XXXXXXX, _______}, + {_______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + }, + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | _ | + | Ins | Home | PgUp | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Caps | ^ | & | * | ( | ) | { | } | | | " | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_INS, KC_HOME, KC_PGUP, _______}, + {KC_CAPS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, KC_PIPE, KC_DQUO, XXXXXXX, _______}, + {_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + }, + + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * |Reset | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Bcklgt| Mute |Vol Dn|Vol Up| | |Qwerty|Arrow |Numpad| | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = { + {RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, BL_STEP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, QWERTY, ARROW, NUMPAD, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + } + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) +{ + switch (keycode) { + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + } else { + layer_off(_LOWER); + } + update_tri_layer(_LOWER, _RAISE, _ADJUST); + return false; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + } else { + layer_off(_RAISE); + } + update_tri_layer(_LOWER, _RAISE, _ADJUST); + return false; + case QWERTY: + if (record->event.pressed) { + layer_off(_ARROW); + layer_off(_NUMPAD); + } + return false; + case ARROW: + if (record->event.pressed) { + layer_off(_NUMPAD); + layer_on(_ARROW); + } + return false; + case NUMPAD: + if (record->event.pressed) { + layer_off(_ARROW); + layer_on(_NUMPAD); + } + return false; + } + return true; +} + +void matrix_init_user(void) +{ +#ifdef AUDIO_ENABLE + startup_user(); +#endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(100); // 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(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/lae3/readme.md b/keyboards/planck/keymaps/lae3/readme.md new file mode 100644 index 00000000000..57a2f38ddc7 --- /dev/null +++ b/keyboards/planck/keymaps/lae3/readme.md @@ -0,0 +1,111 @@ +# Lae3 +_Keymap based around mode-switching for extended functionality_ + +## Base Layout + + β”Œ-----------------------------------------------------------------------------------┐ + | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Tab | A | S | D | F | G | H | J | K | L | ; |Enter | + |------+------+------+------+------+------+------+------+------+------+------+------| + |Shift | Z | X | C | V | B | N | M | , | . | / |Shift | + |------+------+------+------+------+-------------+------+------+------+------+------| + | Ctrl | GUI | Alt | Move |Lower | Space |Raise | Move | Alt | GUI | Ctrl | + β””-----------------------------------------------------------------------------------β”˜ + +This is more similar to a standard keyboard layout than the standard planck +layout, but I have found that this is better for programming, especially for +editor shortcuts. + +## Lower Layer + + β”Œ-----------------------------------------------------------------------------------┐ + | ` | 1 | 2 | 3 | 4 | 5 | - | = | Del | End | PgDn | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Caps | 6 | 7 | 8 | 9 | 0 | [ | ] | \ | ' | | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | F1 | F2 | F3 | F4 | | | F5 | F6 | F7 | F8 | | + |------+------+------+------+------+-------------+------+------+------+------+------| + | | | | | | | | | | | | + β””-----------------------------------------------------------------------------------β”˜ + +All the numbers are on one hand so that they can all be easily accessed when +playing games. The punctuation was placed in a way that is as similar as +possible the qwerty punctuation layout on a standard keyboard. + +## Raise Layer + + β”Œ-----------------------------------------------------------------------------------┐ + | ~ | ! | @ | # | $ | % | _ | + | Ins | Home | PgUp | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | Caps | ^ | & | * | ( | ) | { | } | | | " | | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | F9 | F10 | F11 | F12 | | | | | | | | + |------+------+------+------+------+-------------+------+------+------+------+------| + | | | | | | | | | | | | + β””-----------------------------------------------------------------------------------β”˜ + +This layer with the exception of the function and control keys is effectively +the lower layer in combination with the shift key, like on the standard planck +layout. + +## Movement Layer + + β”Œ-----------------------------------------------------------------------------------┐ + | |MsBut2|Ms Up |MsBut1|MsWhUp| | Home | PgDn | PgUp | End | | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | |Ms Lft|Ms Dn |Ms Rgt|MsWhDn| | Left | Down | Up | Right| | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | | | | | | | | | | | | + |------+------+------+------+------+-------------+------+------+------+------+------| + | | | | | | | | | | | | + β””-----------------------------------------------------------------------------------β”˜ + +Layer for simplifying movement. + +## Meta Layer + + β”Œ-----------------------------------------------------------------------------------┐ + |Reset | | | | | | | | | | | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | |Bcklgt| Mute |Vol Dn|Vol Up| | |Qwerty|Arrow |Numpad| | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | | | | | | | | | | | | + |------+------+------+------+------+-------------+------+------+------+------+------| + | | | | | | | | | | | | + β””-----------------------------------------------------------------------------------β”˜ + +This Layer is activated when pressing both the Lower and Raise keys. The Arrow +and Numpad keys each activate a layer between the base layer and the Movement +layer. The Qwerty key disables both of the layers leaving just the base layer +active. + +## Arrow Layer + + β”Œ-----------------------------------------------------------------------------------┐ + | | | | | | | | | | | | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | | | | | | | | | | | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | | | | | | | | | | Up | | + |------+------+------+------+------+-------------+------+------+------+------+------| + | | | | | | | | | Left | Down | Right| + β””-----------------------------------------------------------------------------------β”˜ + +Replaces the bottom right of the keyboard with arrow keys for games like The +Binding of Isaac. + +## Numpad Layer + + β”Œ-----------------------------------------------------------------------------------┐ + | | | | | | |NumLck| 7 | 8 | 9 | / | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | | | | | |Enter | 4 | 5 | 6 | * | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | | | | | | | 3 | 2 | 1 | - | | + |------+------+------+------+------+-------------+------+------+------+------+------| + | | | | | | | | 0 | . | + | | + β””-----------------------------------------------------------------------------------β”˜ + +Replaces the majority of the right side of the keyboard with a numpad because +why not? diff --git a/keyboards/planck/keymaps/lucas/keymap.c b/keyboards/planck/keymaps/lucas/keymap.c index 2208780b182..491cd1d07d5 100644 --- a/keyboards/planck/keymaps/lucas/keymap.c +++ b/keyboards/planck/keymaps/lucas/keymap.c @@ -153,12 +153,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 1: // M(1) if (record->event.pressed) { unregister_code(KC_LSFT); - register_code(DE_MORE); + register_code(DE_LESS); } else { - unregister_code(DE_MORE); + unregister_code(DE_LESS); } break; } return MACRO_NONE; -}; \ No newline at end of file +}; diff --git a/keyboards/planck/keymaps/priyadi/config.h b/keyboards/planck/keymaps/priyadi/config.h index 82e4a25c606..adc1c69aa55 100644 --- a/keyboards/planck/keymaps/priyadi/config.h +++ b/keyboards/planck/keymaps/priyadi/config.h @@ -27,7 +27,8 @@ 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 \ + k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, \ + tp1, tp2, tp3 \ ) \ { \ {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c}, \ diff --git a/keyboards/planck/keymaps/vifon/keymap.c b/keyboards/planck/keymaps/vifon/keymap.c index ee0c0ac3661..ecd5c2cc445 100644 --- a/keyboards/planck/keymaps/vifon/keymap.c +++ b/keyboards/planck/keymaps/vifon/keymap.c @@ -107,7 +107,8 @@ const uint16_t PROGMEM fn_actions[] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { static uint16_t key_timer; - if (!process_record_dynamic_macro(keycode, record)) { + uint16_t macro_kc = (keycode == MO(_DYN) ? DYN_REC_STOP : keycode); + if (!process_record_dynamic_macro(macro_kc, record)) { return false; } diff --git a/keyboards/preonic/keymaps/CMD-Preonic/keymap.c b/keyboards/preonic/keymaps/CMD-Preonic/keymap.c index 5d217e26152..a500a364941 100644 --- a/keyboards/preonic/keymaps/CMD-Preonic/keymap.c +++ b/keyboards/preonic/keymaps/CMD-Preonic/keymap.c @@ -212,10 +212,10 @@ const uint16_t PROGMEM fn_actions[] = { #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(14)/12.0), 20}, - {440.0*pow(2.0,(26)/12.0), 8}, - {440.0*pow(2.0,(18)/12.0), 20}, - {440.0*pow(2.0,(26)/12.0), 8} + MUSICAL_NOTE(_B5, 20), + MUSICAL_NOTE(_B6, 8), + MUSICAL_NOTE(_DS6, 20), + MUSICAL_NOTE(_B6, 8), }; float tone_qwerty[][2] = SONG(QWERTY_SOUND); @@ -323,7 +323,7 @@ void matrix_init_user(void) { #ifdef AUDIO_ENABLE -void play_goodbye_tone() +void play_goodbye_tone(void) { PLAY_NOTE_ARRAY(goodbye, false, 0); _delay_ms(150); diff --git a/keyboards/ps2avrGB/keymaps/default/keymap.c b/keyboards/ps2avrGB/keymaps/default/keymap.c index 5c66cde596a..3e4cebc81e0 100644 --- a/keyboards/ps2avrGB/keymaps/default/keymap.c +++ b/keyboards/ps2avrGB/keymaps/default/keymap.c @@ -18,14 +18,14 @@ along with this program. If not, see . #include "ps2avrGB.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - KEYMAP( \ - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,HOME,END, \ - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, DEL, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, INS, \ - CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, PGUP,\ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, UP, PGDN,\ - LCTL,LALT,LGUI, SPC, RGUI,RALT,RCTL,LEFT,DOWN,RGHT \ - ), + KC_KEYMAP( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,HOME,END, + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSPC, DEL, + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, INS, + CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, PGUP, + LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, UP, PGDN, + LCTL,LALT,LGUI, SPC, RGUI,RALT,RCTL,LEFT,DOWN,RGHT + ) }; const uint16_t PROGMEM fn_actions[] = { diff --git a/keyboards/ps2avrGB/ps2avrGB.h b/keyboards/ps2avrGB/ps2avrGB.h index 6432e3be9ce..813f31f804f 100644 --- a/keyboards/ps2avrGB/ps2avrGB.h +++ b/keyboards/ps2avrGB/ps2avrGB.h @@ -22,6 +22,24 @@ along with this program. If not, see . #include "action.h" #define KEYMAP( \ + K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \ + K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \ + K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \ + K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, KE0, \ + K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, K86, K77, \ + K00, K10, K20, K56, K57, KB0, KC0, K66, K76, K96 \ +){ \ + { K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB0, KC0, KD0, KE0 }, \ + { K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC_NO, KD1, KE1 }, \ + { K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, KC_NO, KC_NO, KA2, KB2, KC_NO, KD2, KE2 }, \ + { K03, K13, K23, K33, K43, K53, KC_NO, KC_NO, KC_NO, KC_NO, KA3, KB3, KC3, KD3, KC_NO }, \ + { K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \ + { K05, KC_NO, K25, K35, K45, K55, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB5, KC5, KD5, KE5 }, \ + { K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6, KE6 }, \ + { K07, K17, K27, K37, K47, K57, K67, K77, KC_NO, KC_NO, KA7, KB7, KC7, KD7, KE7 } \ +} + +#define KC_KEYMAP( \ K05, K25, K35, K45, K55, K06, KA6, KA7, K07, KB5, KC5, KD5, KE5, KD1, KE1, KE2, \ K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, KD0, \ K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, K67, \ diff --git a/keyboards/s60-x/config.h b/keyboards/s60-x/config.h deleted file mode 100644 index ac7951c247d..00000000000 --- a/keyboards/s60-x/config.h +++ /dev/null @@ -1,164 +0,0 @@ -/* -Copyright 2012 Jun Wako -Copyright 2016 Julien Pecqueur -Copyright 2016 Felix Uhl - -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Massdrop -#define PRODUCT S60-X -#define DESCRIPTION q.m.k. keyboard firmware for S60-X - -/* key matrix size */ -#define MATRIX_ROWS 5 -#define MATRIX_COLS 15 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 } -#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F1 } -#define UNUSED_PINS { F0 } - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -#define NO_ACTION_ONESHOT -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/s60-x/s60-x_precompiled.zip b/keyboards/s60-x/s60-x_precompiled.zip deleted file mode 100644 index 00d99ca8a15..00000000000 Binary files a/keyboards/s60-x/s60-x_precompiled.zip and /dev/null differ diff --git a/keyboards/s60_x/Makefile b/keyboards/s60_x/Makefile new file mode 100644 index 00000000000..879e493a21d --- /dev/null +++ b/keyboards/s60_x/Makefile @@ -0,0 +1,5 @@ +SUBPROJECT_DEFAULT = default + +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/s60_x/config.h b/keyboards/s60_x/config.h new file mode 100644 index 00000000000..8b97b3c814c --- /dev/null +++ b/keyboards/s60_x/config.h @@ -0,0 +1,59 @@ +/* +Copyright 2012 Jun Wako +Copyright 2016 Julien Pecqueur +Copyright 2016 Felix Uhl + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Massdrop + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* number of backlight levels */ +#define BACKLIGHT_PIN B7 +#ifdef BACKLIGHT_PIN +#define BACKLIGHT_LEVELS 3 +#endif + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#ifdef SUBPROJECT_default + #include "default/config.h" +#endif +#ifdef SUBPROJECT_rgb + #include "rgb/config.h" +#endif + +#endif diff --git a/keyboards/s60_x/default/Makefile b/keyboards/s60_x/default/Makefile new file mode 100644 index 00000000000..191c6bb664d --- /dev/null +++ b/keyboards/s60_x/default/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/s60_x/default/config.h b/keyboards/s60_x/default/config.h new file mode 100644 index 00000000000..436c6fa8b64 --- /dev/null +++ b/keyboards/s60_x/default/config.h @@ -0,0 +1,25 @@ +#ifndef DEFAULT_CONFIG_H +#define DEFAULT_CONFIG_H + +#include "../config.h" + +#define PRODUCT S60-X +#define DESCRIPTION q.m.k. keyboard firmware for S60-X + +#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F1 } +#define UNUSED_PINS { F0 } + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/s60-x/s60-x.c b/keyboards/s60_x/default/default.c similarity index 96% rename from keyboards/s60-x/s60-x.c rename to keyboards/s60_x/default/default.c index 417358140cb..253f5495c20 100644 --- a/keyboards/s60-x/s60-x.c +++ b/keyboards/s60_x/default/default.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "default.h" void matrix_init_kb(void) { // put your keyboard start-up code here diff --git a/keyboards/s60-x/s60-x.h b/keyboards/s60_x/default/default.h similarity index 96% rename from keyboards/s60-x/s60-x.h rename to keyboards/s60_x/default/default.h index 29a2a27b22b..86233ef7e0d 100644 --- a/keyboards/s60-x/s60-x.h +++ b/keyboards/s60_x/default/default.h @@ -1,6 +1,6 @@ /* Copyright 2012,2013 Jun Wako -Copyright 2015 Vinνcius Nery Cordeiro +Copyright 2015 VinοΏ½cius Nery Cordeiro Copyright 2016 Felix Uhl This program is free software: you can redistribute it and/or modify @@ -17,14 +17,14 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef S60X_H -#define S60X_H +#ifndef DEFAULT_H +#define DEFAULT_H #include "quantum.h" #ifdef __INTELLISENSE__ #define PROGMEM -#include "config.h" +#include "../config.h" #endif /* S60-X keymap definition macro @@ -66,4 +66,4 @@ along with this program. If not, see . { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_NO, KC_##K46, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_NO } \ } -#endif +#endif \ No newline at end of file diff --git a/keyboards/s60_x/default/rules.mk b/keyboards/s60_x/default/rules.mk new file mode 100644 index 00000000000..aaa3764df63 --- /dev/null +++ b/keyboards/s60_x/default/rules.mk @@ -0,0 +1,9 @@ +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +NKRO_ENABLE ?= no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE ?= no + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/Makefile b/keyboards/s60_x/keymaps/ansi_qwertz/Makefile similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/Makefile rename to keyboards/s60_x/keymaps/ansi_qwertz/Makefile diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/config.h b/keyboards/s60_x/keymaps/ansi_qwertz/config.h similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/config.h rename to keyboards/s60_x/keymaps/ansi_qwertz/config.h diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.png diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International-Alternative.svg.2016_08_18_09_06_36.0.svg diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.png similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.png rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.png diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg b/keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.svg similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/KB_US-International.svg rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/KB_US-International.svg diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG b/keyboards/s60_x/keymaps/ansi_qwertz/docs/base_layer.PNG similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/base_layer.PNG rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/base_layer.PNG diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG b/keyboards/s60_x/keymaps/ansi_qwertz/docs/function_layer.PNG similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/function_layer.PNG rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/function_layer.PNG diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG b/keyboards/s60_x/keymaps/ansi_qwertz/docs/gaming_layer.PNG similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/docs/gaming_layer.PNG rename to keyboards/s60_x/keymaps/ansi_qwertz/docs/gaming_layer.PNG diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c b/keyboards/s60_x/keymaps/ansi_qwertz/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/ansi_qwertz/keymap.c rename to keyboards/s60_x/keymaps/ansi_qwertz/keymap.c index 317a245bef3..ebb3aece348 100644 --- a/keyboards/s60-x/keymaps/ansi_qwertz/keymap.c +++ b/keyboards/s60_x/keymaps/ansi_qwertz/keymap.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "s60-x.h" +#include "s60_x.h" //make keymap a little easier to read #define _______ KC_TRNS diff --git a/keyboards/s60-x/keymaps/ansi_qwertz/readme.md b/keyboards/s60_x/keymaps/ansi_qwertz/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/ansi_qwertz/readme.md rename to keyboards/s60_x/keymaps/ansi_qwertz/readme.md diff --git a/keyboards/s60-x/keymaps/custom/keymap.c b/keyboards/s60_x/keymaps/custom/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/custom/keymap.c rename to keyboards/s60_x/keymaps/custom/keymap.c index fb2a40b85e4..66eac333564 100644 --- a/keyboards/s60-x/keymaps/custom/keymap.c +++ b/keyboards/s60_x/keymaps/custom/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" /* Main layer: Test layout, using all keys. diff --git a/keyboards/s60-x/keymaps/custom/readme.md b/keyboards/s60_x/keymaps/custom/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/custom/readme.md rename to keyboards/s60_x/keymaps/custom/readme.md diff --git a/keyboards/s60_x/keymaps/dbroqua/keymap.c b/keyboards/s60_x/keymaps/dbroqua/keymap.c new file mode 100644 index 00000000000..8d1887e75a2 --- /dev/null +++ b/keyboards/s60_x/keymaps/dbroqua/keymap.c @@ -0,0 +1,205 @@ +#include "s60_x.h" + +#define _DEFAULT 0 +#define _FN 1 +#define _SFX 2 + +// Fillers to make layering more clear +#define ______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty gui/alt/space/alt/gui + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | FN | + * |-----------------------------------------------------------------------------------------+ + * |LGUI | LAlt | Space | RAlt |RGUI | + * `-----------------------------------------------------------------' + */ + [_DEFAULT] = KEYMAP( /* Basic QWERTY */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ + KC_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, MO(_FN), \ + ______, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, ______, ______ \ + ), + +/* FN Layer + * ,-----------------------------------------------------------------------------------------. + * | SFX | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------+ + * | CAPS | | | | | | | | Psc | Slck| Paus| Up | | | + * |-----------------------------------------------------------------------------------------+ + * | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left|Right| | + * |-----------------------------------------------------------------------------------------+ + * | | Prev| Play| Next| | | + | - | End |PgDn| Down| | | + * |-----------------------------------------------------------------------------------------+ + * | | | | Stop | | + * `-----------------------------------------------------------------' + */ + [_FN] = KEYMAP( /* Layer 1 */ + TG(_SFX),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_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT,______, ______, \ + ______, ______, KC_MPRV, KC_MPLY, KC_MNXT,______, ______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN,______, ______, ______, \ + ______, ______, ______, ______, KC_MSTP, ______, ______, ______ \ + ), + + +/* SFX Layer + * ,-----------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | BL- | BL+ | BL | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | RGBT| RGBM| | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | Hue+| Hue-| Sat+| Sat-| Val+| Val-| | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | + * `-----------------------------------------------------------------' + */ + [_SFX] = KEYMAP( + ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, BL_TOGG,BL_STEP,BL_DEC, BL_INC, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, F(0), F(1), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, F(2), F(3), F(4), F(5), F(6), F(7), ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, ______, ______, ______, ______, ______, ______ \ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + return MACRO_NONE; +} + +enum function_id { + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(RGBLED_TOGGLE), + [1] = ACTION_FUNCTION(RGBLED_STEP_MODE), + [2] = ACTION_FUNCTION(RGBLED_INCREASE_HUE), + [3] = ACTION_FUNCTION(RGBLED_DECREASE_HUE), + [4] = ACTION_FUNCTION(RGBLED_INCREASE_SAT), + [5] = ACTION_FUNCTION(RGBLED_DECREASE_SAT), + [6] = ACTION_FUNCTION(RGBLED_INCREASE_VAL), + [7] = ACTION_FUNCTION(RGBLED_DECREASE_VAL) +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + switch (id) { + case RGBLED_TOGGLE: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_toggle(); + #endif + } + break; + case RGBLED_INCREASE_HUE: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_increase_hue(); + #endif + } + break; + case RGBLED_DECREASE_HUE: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_decrease_hue(); + #endif + } + break; + case RGBLED_INCREASE_SAT: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_increase_sat(); + #endif + } + break; + case RGBLED_DECREASE_SAT: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_decrease_sat(); + #endif + } + break; + case RGBLED_INCREASE_VAL: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_increase_val(); + #endif + } + break; + case RGBLED_DECREASE_VAL: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_decrease_val(); + #endif + } + break; + case RGBLED_STEP_MODE: + if (record->event.pressed) { + #ifdef RGB_ENABLE + rgblight_step(); + #endif + } + break; + } +} + +void matrix_init_user(void) { +} + +void matrix_scan_user(void) { +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + + if (usb_led & (1 << USB_LED_NUM_LOCK)) { + + } else { + + } + + if (usb_led & (1 << USB_LED_CAPS_LOCK)) { + + } else { + + } + + if (usb_led & (1 << USB_LED_SCROLL_LOCK)) { + + } else { + + } + + if (usb_led & (1 << USB_LED_COMPOSE)) { + + } else { + + } + + if (usb_led & (1 << USB_LED_KANA)) { + + } else { + + } + +} \ No newline at end of file diff --git a/keyboards/s60-x/keymaps/default/keymap.c b/keyboards/s60_x/keymaps/default/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/default/keymap.c rename to keyboards/s60_x/keymaps/default/keymap.c index eb0c6b056ea..a616e79b34e 100644 --- a/keyboards/s60-x/keymaps/default/keymap.c +++ b/keyboards/s60_x/keymaps/default/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" /* 0: Main layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” diff --git a/keyboards/s60-x/keymaps/default/readme.md b/keyboards/s60_x/keymaps/default/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/default/readme.md rename to keyboards/s60_x/keymaps/default/readme.md diff --git a/keyboards/s60-x/keymaps/hasu/keymap.c b/keyboards/s60_x/keymaps/hasu/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/hasu/keymap.c rename to keyboards/s60_x/keymaps/hasu/keymap.c index cbeaae0281d..ac90dc6b205 100644 --- a/keyboards/s60-x/keymaps/hasu/keymap.c +++ b/keyboards/s60_x/keymaps/hasu/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" /* * Hasu diff --git a/keyboards/s60-x/keymaps/hasu/readme.md b/keyboards/s60_x/keymaps/hasu/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/hasu/readme.md rename to keyboards/s60_x/keymaps/hasu/readme.md diff --git a/keyboards/s60-x/keymaps/hhkb/keymap.c b/keyboards/s60_x/keymaps/hhkb/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/hhkb/keymap.c rename to keyboards/s60_x/keymaps/hhkb/keymap.c index 9afd1247f8a..dc1bfffc473 100644 --- a/keyboards/s60-x/keymaps/hhkb/keymap.c +++ b/keyboards/s60_x/keymaps/hhkb/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" /* * HHKB Layout diff --git a/keyboards/s60-x/keymaps/hhkb/readme.md b/keyboards/s60_x/keymaps/hhkb/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/hhkb/readme.md rename to keyboards/s60_x/keymaps/hhkb/readme.md diff --git a/keyboards/s60-x/keymaps/iso/keymap.c b/keyboards/s60_x/keymaps/iso/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/iso/keymap.c rename to keyboards/s60_x/keymaps/iso/keymap.c index 43a9c48b058..f6fc7417288 100644 --- a/keyboards/s60-x/keymaps/iso/keymap.c +++ b/keyboards/s60_x/keymaps/iso/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" /* 0: Main layer β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” diff --git a/keyboards/s60-x/keymaps/iso/readme.md b/keyboards/s60_x/keymaps/iso/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/iso/readme.md rename to keyboards/s60_x/keymaps/iso/readme.md diff --git a/keyboards/s60-x/keymaps/jpec/keymap.c b/keyboards/s60_x/keymaps/jpec/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/jpec/keymap.c rename to keyboards/s60_x/keymaps/jpec/keymap.c index c8fc1332884..21e77c10b2b 100644 --- a/keyboards/s60-x/keymaps/jpec/keymap.c +++ b/keyboards/s60_x/keymaps/jpec/keymap.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "s60-x.h" +#include "s60_x.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Layout 0: Default Layer diff --git a/keyboards/s60-x/keymaps/jpec/readme.md b/keyboards/s60_x/keymaps/jpec/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/jpec/readme.md rename to keyboards/s60_x/keymaps/jpec/readme.md diff --git a/keyboards/s60-x/keymaps/plain/keymap.c b/keyboards/s60_x/keymaps/plain/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/plain/keymap.c rename to keyboards/s60_x/keymaps/plain/keymap.c index 790ac88e73e..d5075a07b9a 100644 --- a/keyboards/s60-x/keymaps/plain/keymap.c +++ b/keyboards/s60_x/keymaps/plain/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" /* Main layer: β”Œβ”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β” diff --git a/keyboards/s60-x/keymaps/plain/readme.md b/keyboards/s60_x/keymaps/plain/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/plain/readme.md rename to keyboards/s60_x/keymaps/plain/readme.md diff --git a/keyboards/s60-x/keymaps/poker/keymap.c b/keyboards/s60_x/keymaps/poker/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/poker/keymap.c rename to keyboards/s60_x/keymaps/poker/keymap.c index 0a8691792a9..5b917704e40 100644 --- a/keyboards/s60-x/keymaps/poker/keymap.c +++ b/keyboards/s60_x/keymaps/poker/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty diff --git a/keyboards/s60-x/keymaps/poker/readme.md b/keyboards/s60_x/keymaps/poker/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/poker/readme.md rename to keyboards/s60_x/keymaps/poker/readme.md diff --git a/keyboards/s60-x/keymaps/poker_bit/keymap.c b/keyboards/s60_x/keymaps/poker_bit/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/poker_bit/keymap.c rename to keyboards/s60_x/keymaps/poker_bit/keymap.c index 7626038f426..1f7b1b633d9 100644 --- a/keyboards/s60-x/keymaps/poker_bit/keymap.c +++ b/keyboards/s60_x/keymaps/poker_bit/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" // Poker fix with toggle and bit operation // Fn + Esc = ` diff --git a/keyboards/s60-x/keymaps/poker_bit/readme.md b/keyboards/s60_x/keymaps/poker_bit/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/poker_bit/readme.md rename to keyboards/s60_x/keymaps/poker_bit/readme.md diff --git a/keyboards/s60-x/keymaps/poker_set/keymap.c b/keyboards/s60_x/keymaps/poker_set/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/poker_set/keymap.c rename to keyboards/s60_x/keymaps/poker_set/keymap.c index 09423e75b37..52eee53218d 100644 --- a/keyboards/s60-x/keymaps/poker_set/keymap.c +++ b/keyboards/s60_x/keymaps/poker_set/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" // Poker fix with set(state transition) // Fn + Esc = ` diff --git a/keyboards/s60-x/keymaps/poker_set/readme.md b/keyboards/s60_x/keymaps/poker_set/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/poker_set/readme.md rename to keyboards/s60_x/keymaps/poker_set/readme.md diff --git a/keyboards/s60-x/keymaps/spacefn/keymap.c b/keyboards/s60_x/keymaps/spacefn/keymap.c similarity index 99% rename from keyboards/s60-x/keymaps/spacefn/keymap.c rename to keyboards/s60_x/keymaps/spacefn/keymap.c index b6dc7ca7eb8..28369580ede 100644 --- a/keyboards/s60-x/keymaps/spacefn/keymap.c +++ b/keyboards/s60_x/keymaps/spacefn/keymap.c @@ -1,4 +1,4 @@ -#include "s60-x.h" +#include "s60_x.h" /* * SpaceFN diff --git a/keyboards/s60-x/keymaps/spacefn/readme.md b/keyboards/s60_x/keymaps/spacefn/readme.md similarity index 100% rename from keyboards/s60-x/keymaps/spacefn/readme.md rename to keyboards/s60_x/keymaps/spacefn/readme.md diff --git a/keyboards/s60-x/readme.md b/keyboards/s60_x/readme.md similarity index 99% rename from keyboards/s60-x/readme.md rename to keyboards/s60_x/readme.md index 408ad13ac2c..e30b2f76ce2 100644 --- a/keyboards/s60-x/readme.md +++ b/keyboards/s60_x/readme.md @@ -5,11 +5,6 @@ DIY compact keyboard designed by VinnyCordeiro for Sentraq. Most of the keymaps ## S60X Resources - [Massdrop page](https://www.massdrop.com/buy/sentraq-60-diy-keyboard-kit?mode=guest_open) -## Quickstart - -If you just want to test a few layouts, the archive [s60-x_precompiled.zip](s60-x_precompiled.zip) contains pre-compiled .hex-files for all available keymaps. Not all of them are tested. -You only need to flash them onto your keyboard, which is explained below, there's no need to setup a build environment. For a full list - ## Flashing your keyboard The recommended programs for flashing your keyboard are [Atmel FLIP](http://www.atmel.com/tools/FLIP.aspx) (Windows) and [dfu-programmer](http://dfu-programmer.sourceforge.net/) (Linux/Windows). diff --git a/keyboards/s60_x/rgb/Makefile b/keyboards/s60_x/rgb/Makefile new file mode 100644 index 00000000000..bd09e5885d0 --- /dev/null +++ b/keyboards/s60_x/rgb/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif diff --git a/keyboards/s60_x/rgb/config.h b/keyboards/s60_x/rgb/config.h new file mode 100644 index 00000000000..81efc87d54e --- /dev/null +++ b/keyboards/s60_x/rgb/config.h @@ -0,0 +1,32 @@ +#ifndef RBG_CONFIG_H +#define RBG_CONFIG_H + +#include "../config.h" + +#define PRODUCT S60-X-RGB +#define DESCRIPTION q.m.k. keyboard firmware for S60-X RGB + +/* key matrix pins */ +#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 } +#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 } +#define UNUSED_PINS + +/* 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 + +/* prevent stuck modifiers */ +#define PREVENT_STUCK_MODIFIERS + +#define RGB_DI_PIN F6 +#ifdef RGB_DI_PIN +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 10 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#endif + +#endif \ No newline at end of file diff --git a/keyboards/s60_x/rgb/rgb.c b/keyboards/s60_x/rgb/rgb.c new file mode 100644 index 00000000000..0117e14ae55 --- /dev/null +++ b/keyboards/s60_x/rgb/rgb.c @@ -0,0 +1 @@ +#include "rgb.h" diff --git a/keyboards/s60_x/rgb/rgb.h b/keyboards/s60_x/rgb/rgb.h new file mode 100644 index 00000000000..cb7a5f567ff --- /dev/null +++ b/keyboards/s60_x/rgb/rgb.h @@ -0,0 +1,37 @@ +#ifndef S60XRGB_H +#define S60XRGB_H + +#include "quantum.h" + +#define KEYMAP( \ + K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \ + K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ + K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ + K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \ + K400, K401, K402, K406, K410, K411, K412, K413 \ +) { \ + { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \ + { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO }, \ + { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \ + { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \ + { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, KC_NO } \ +} + +/*This special definition is used for S60-X keymaps that were ported from TMK + * QMK has a lot of keycodes that don't start with KC_, so using the regular KEYMAP macro is recommended + */ +#define LEGACY_KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ + K40, K41, K42, K46, 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, KC_##K0E }, \ + { 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, KC_NO }, \ + { 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, KC_NO }, \ + { 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, KC_##K3E }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_NO, KC_##K46, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_NO } \ +} + +#endif \ No newline at end of file diff --git a/keyboards/s60_x/rgb/rules.mk b/keyboards/s60_x/rgb/rules.mk new file mode 100644 index 00000000000..6953cc6d6d3 --- /dev/null +++ b/keyboards/s60_x/rgb/rules.mk @@ -0,0 +1,9 @@ +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE ?= yes # Enable RGB light + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/s60-x/rules.mk b/keyboards/s60_x/rules.mk similarity index 90% rename from keyboards/s60-x/rules.mk rename to keyboards/s60_x/rules.mk index 7ec93933a94..0c568efe95b 100644 --- a/keyboards/s60-x/rules.mk +++ b/keyboards/s60_x/rules.mk @@ -56,13 +56,9 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 BOOTMAGIC_ENABLE ?= yes # 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 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default MIDI_ENABLE ?= no # MIDI controls UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/s60_x/s60_x.c b/keyboards/s60_x/s60_x.c new file mode 100644 index 00000000000..595418bfacc --- /dev/null +++ b/keyboards/s60_x/s60_x.c @@ -0,0 +1 @@ +#include "s60_x.h" \ No newline at end of file diff --git a/keyboards/s60_x/s60_x.h b/keyboards/s60_x/s60_x.h new file mode 100644 index 00000000000..5bf8cfcefa1 --- /dev/null +++ b/keyboards/s60_x/s60_x.h @@ -0,0 +1,13 @@ +#ifndef S60X_H +#define S60X_H + +#ifdef SUBPROJECT_default + #include "default.h" +#endif +#ifdef SUBPROJECT_rgb + #include "rgb.h" +#endif + +#include "quantum.h" + +#endif diff --git a/keyboards/tv44/keymaps/xyverz/keymap.c b/keyboards/tv44/keymaps/xyverz/keymap.c index 00347b01906..3ff16de35f0 100644 --- a/keyboards/tv44/keymaps/xyverz/keymap.c +++ b/keyboards/tv44/keymaps/xyverz/keymap.c @@ -4,16 +4,23 @@ extern keymap_config_t keymap_config; -#define _DV 0 -#define _QW 1 -#define _CM 2 -#define _L1 3 -#define _L2 4 +enum planck_layers { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST +}; -// Macro name shortcuts -#define DVORAK M(_DV) -#define QWERTY M(_QW) -#define COLEMAK M(_CM) +enum planck_keycodes { + DVORAK = SAFE_RANGE, + QWERTY, + COLEMAK, + LOWER, + RAISE, + ADJUST +}; // Fillers to make layering more clear #define _______ KC_TRNS @@ -21,45 +28,47 @@ extern keymap_config_t keymap_config; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_DV] = { /* 0: Dvorak */ - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH }, - {MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, LT(_L2, KC_MINS)}, - {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT }, - {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_BSLS, KC_EQL, XXXXXXX, KC_ENT } + [_DVORAK] = { /* 0: Dvorak */ + {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_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT}, + {KC_LCTL, KC_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT } }, - [_QW] = { /* 1: Qwerty */ - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, - {MO(_L1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(_L2, 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_RSFT }, - {KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_SLSH, KC_MINS, XXXXXXX, KC_ENT } + [_QWERTY] = { /* 1: Qwerty */ + {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_QUOT}, + {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_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT } }, - [_CM] = { /* 2: Colemak */ - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC }, - {MO(_L1), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, LT(_L2, KC_QUOT)}, - {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_LALT, KC_LGUI, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_SLSH, KC_MINS, XXXXXXX, KC_ENT } + [_COLEMAK] = { /* 2: Colemak */ + {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_QUOT}, + {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_LALT, LOWER, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, RAISE, KC_LGUI, XXXXXXX, KC_ENT } }, - [_L1] = {/* 1: FN 1 */ - {KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, - {_______, KC_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_DOWN, KC_UP, KC_LEFT, KC_RGHT, _______ }, - {_______, _______, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_RSFT }, - {KC_ESC, KC_LGUI, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_EQL, _______, _______ } + [_LOWER] = {/* 1: FN 1 */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE}, + {_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______}, + {KC_LEFT, KC_RGHT, _______, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, _______, KC_UP, XXXXXXX, KC_DOWN} }, - [_L2] = { /* 2: FN 2 */ - {KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC }, - {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_HOME, KC_PGUP, KC_VOLU, _______ }, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_END, KC_PGDN, KC_VOLD, _______ }, - {QWERTY, DVORAK, COLEMAK, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PLUS, _______, _______ } + [_RAISE] = { /* 2: FN 2 */ + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS}, + {_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_CAPS, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______}, + {KC_LEFT, KC_RGHT, _______, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, _______, KC_UP, XXXXXXX, KC_DOWN} + }, + + [_ADJUST] = { + {KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12 }, + {_______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {KC_HOME, KC_END, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PGUP, XXXXXXX, KC_PGDN} } - -}; - -const uint16_t PROGMEM fn_actions[] = { - }; void persistant_default_layer_set(uint16_t default_layer) { @@ -67,26 +76,46 @@ void persistant_default_layer_set(uint16_t default_layer) { default_layer_set(default_layer); } -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case _DV: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_DV); - } - break; - case _QW: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_QW); - } - break; - case _CM: - if (record->event.pressed) { - persistant_default_layer_set(1UL<<_CM); - } - break; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_QWERTY); } - return MACRO_NONE; -}; - - + return false; + break; + case COLEMAK: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + } + return true; +} diff --git a/quantum/dynamic_macro.h b/quantum/dynamic_macro.h index 64093f293e3..9e7845c9928 100644 --- a/quantum/dynamic_macro.h +++ b/quantum/dynamic_macro.h @@ -40,6 +40,7 @@ enum dynamic_macro_keycodes { DYN_REC_START1 = DYNAMIC_MACRO_RANGE, DYN_REC_START2, + DYN_REC_STOP, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, }; @@ -96,24 +97,29 @@ void dynamic_macro_play( /** * Record a single key in a dynamic macro. * + * @param macro_buffer[in] The start of the used macro buffer. * @param macro_pointer[in,out] The current buffer position. - * @param macro_end2[in] The end of the other macro which shouldn't be overwritten. + * @param macro2_end[in] The last buffer element it is safe to use before overwriting the other macro. * @param direction[in] Either +1 or -1, which way to iterate the buffer. * @param record[in] The current keypress. */ void dynamic_macro_record_key( + keyrecord_t *macro_buffer, keyrecord_t **macro_pointer, - keyrecord_t *macro_end2, + keyrecord_t *macro2_end, int8_t direction, keyrecord_t *record) { - if (*macro_pointer + direction != macro_end2) { + /* If we've just started recording, ignore all the key releases. */ + if (!record->event.pressed && *macro_pointer == macro_buffer) { + return; + } + + if (*macro_pointer - direction != macro2_end) { **macro_pointer = *record; *macro_pointer += direction; } else { - /* Notify about the end of buffer. The blinks are paired - * because they should happen on both down and up events. */ - backlight_toggle(); + dynamic_macro_led_blink(); } } @@ -209,9 +215,8 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record) } else { /* A macro is being recorded right now. */ switch (keycode) { - case MO(_DYN): - /* Use the layer key used to access the macro recording as - * a stop button. */ + case DYN_REC_STOP: + /* Stop the macro recording. */ if (record->event.pressed) { /* Ignore the initial release * just after the recoding * starts. */ @@ -230,10 +235,10 @@ bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record) /* Store the key in the macro buffer and process it normally. */ switch (macro_id) { case 1: - dynamic_macro_record_key(¯o_pointer, r_macro_end, +1, record); + dynamic_macro_record_key(macro_buffer, ¯o_pointer, r_macro_end, +1, record); break; case 2: - dynamic_macro_record_key(¯o_pointer, macro_end, -1, record); + dynamic_macro_record_key(r_macro_buffer, ¯o_pointer, macro_end, -1, record); break; } return true; diff --git a/quantum/fauxclicky.c b/quantum/fauxclicky.c index 13273e7058e..c3341ca3326 100644 --- a/quantum/fauxclicky.c +++ b/quantum/fauxclicky.c @@ -20,13 +20,6 @@ along with this program. If not, see . #include #include -__attribute__ ((weak)) -float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_F3, 2); -__attribute__ ((weak)) -float fauxclicky_released_note[2] = MUSICAL_NOTE(_A3, 2); -__attribute__ ((weak)) -float fauxclicky_beep_note[2] = MUSICAL_NOTE(_C3, 2); - bool fauxclicky_enabled = true; uint16_t note_start = 0; bool note_playing = false; @@ -48,13 +41,13 @@ void fauxclicky_stop() note_playing = false; } -void fauxclicky_play(float note[2]) { +void fauxclicky_play(float note[]) { if (!fauxclicky_enabled) return; if (note_playing) fauxclicky_stop(); - FAUXCLICKY_TIMER_PERIOD = (uint16_t)(((float)F_CPU) / (note[0] * FAUXCLICKY_CPU_PRESCALER)); - FAUXCLICKY_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (note[0] * FAUXCLICKY_CPU_PRESCALER)) / 2); + FAUXCLICKY_TIMER_PERIOD = (uint16_t)(((float)F_CPU) / (note[0] * (float)FAUXCLICKY_CPU_PRESCALER)); + FAUXCLICKY_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (note[0] * (float)FAUXCLICKY_CPU_PRESCALER)) / (float)2); note_playing = true; - note_period = (note[1] / 16) * (60 / (float)FAUXCLICKY_TEMPO) * 100; // check this + note_period = (note[1] / (float)16) * ((float)60 / (float)FAUXCLICKY_TEMPO) * 1000; note_start = timer_read(); FAUXCLICKY_ENABLE_OUTPUT; } diff --git a/quantum/fauxclicky.h b/quantum/fauxclicky.h index 109bd0d83eb..1a8e188dd53 100644 --- a/quantum/fauxclicky.h +++ b/quantum/fauxclicky.h @@ -21,11 +21,11 @@ along with this program. If not, see . #include "stdbool.h" __attribute__ ((weak)) -float fauxclicky_pressed_note[2]; +float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_D4, 0.25); __attribute__ ((weak)) -float fauxclicky_released_note[2]; +float fauxclicky_released_note[2] = MUSICAL_NOTE(_C4, 0.125); __attribute__ ((weak)) -float fauxclicky_beep_note[2]; +float fauxclicky_beep_note[2] = MUSICAL_NOTE(_C4, 0.25); bool fauxclicky_enabled; @@ -73,11 +73,11 @@ bool fauxclicky_enabled; #endif #ifndef FAUXCLICKY_ENABLE_OUTPUT -#define FAUXCLICKY_ENABLE_OUTPUT TCCR3A |= _BV(COM3A1); +#define FAUXCLICKY_ENABLE_OUTPUT TCCR3A |= _BV(COM3A1) #endif #ifndef FAUXCLICKY_DISABLE_OUTPUT -#define FAUXCLICKY_DISABLE_OUTPUT TCCR3A &= ~(_BV(COM3A1) | _BV(COM3A0)); +#define FAUXCLICKY_DISABLE_OUTPUT TCCR3A &= ~(_BV(COM3A1) | _BV(COM3A0)) #endif #ifndef FAUXCLICKY_TIMER_PERIOD diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 6cf4f031fff..9dafc8b5165 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -179,5 +179,12 @@ uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) __attribute__ ((weak)) uint16_t keymap_function_id_to_action( uint16_t function_id ) { + // The compiler sees the empty (weak) fn_actions and generates a warning + // This function should not be called in that case, so the warning is too strict + // If this function is called however, the keymap should have overridden fn_actions, and then the compile + // is comparing against the wrong array + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Warray-bounds" return pgm_read_word(&fn_actions[function_id]); + #pragma GCC diagnostic pop } diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h index 8332e00af3b..67350d66022 100644 --- a/quantum/keymap_extras/keymap_german_ch.h +++ b/quantum/keymap_extras/keymap_german_ch.h @@ -33,6 +33,10 @@ #define CH_E KC_E #define CH_F KC_F #define CH_G KC_G +#ifdef CH_H +// The ChibiOS ch.h file defines this... +#undef CH_H +#endif #define CH_H KC_H #define CH_I KC_I #define CH_J KC_J diff --git a/quantum/process_keycode/process_printer.c b/quantum/process_keycode/process_printer.c index 807f7a0b91a..613af70183b 100644 --- a/quantum/process_keycode/process_printer.c +++ b/quantum/process_keycode/process_printer.c @@ -20,12 +20,12 @@ bool printing_enabled = false; uint8_t character_shift = 0; -void enabled_printing() { +void enable_printing(void) { printing_enabled = true; serial_init(); } -void disable_printing() { +void disable_printing(void) { printing_enabled = false; } @@ -41,9 +41,14 @@ void print_char(char c) { USB_Init(); } -void print_box_string(uint8_t text[]) { - uint8_t len = strlen(text); - uint8_t out[len * 3 + 8]; +void print_string(char c[]) { + for(uint8_t i = 0; i < strlen(c); i++) + print_char(c[i]); +} + +void print_box_string(const char text[]) { + size_t len = strlen(text); + char out[len * 3 + 8]; out[0] = 0xDA; for (uint8_t i = 0; i < len; i++) { out[i+1] = 0xC4; @@ -69,14 +74,9 @@ void print_box_string(uint8_t text[]) { print_string(out); } -void print_string(char c[]) { - for(uint8_t i = 0; i < strlen(c); i++) - print_char(c[i]); -} - bool process_printer(uint16_t keycode, keyrecord_t *record) { if (keycode == PRINT_ON) { - enabled_printing(); + enable_printing(); return false; } if (keycode == PRINT_OFF) { diff --git a/quantum/process_keycode/process_printer.h b/quantum/process_keycode/process_printer.h index aa494ac8a7f..71d3a4b56a6 100644 --- a/quantum/process_keycode/process_printer.h +++ b/quantum/process_keycode/process_printer.h @@ -21,4 +21,6 @@ #include "protocol/serial.h" +bool process_printer(uint16_t keycode, keyrecord_t *record); + #endif diff --git a/quantum/process_keycode/process_printer_bb.c b/quantum/process_keycode/process_printer_bb.c index 55d3b552b2f..3a00f169d8b 100644 --- a/quantum/process_keycode/process_printer_bb.c +++ b/quantum/process_keycode/process_printer_bb.c @@ -46,7 +46,7 @@ void serial_output(void) { } -void enabled_printing() { +void enable_printing() { printing_enabled = true; serial_output(); serial_high(); @@ -82,7 +82,7 @@ void print_string(char c[]) { bool process_printer(uint16_t keycode, keyrecord_t *record) { if (keycode == PRINT_ON) { - enabled_printing(); + enable_printing(); return false; } if (keycode == PRINT_OFF) { diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index 678a15234d9..fd008eca127 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -15,6 +15,7 @@ */ #include "process_unicode.h" #include "action_util.h" +#include "eeprom.h" static uint8_t first_flag = 0; diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c index 1dbdec3e714..84b5d673dd4 100644 --- a/quantum/process_keycode/process_unicode_common.c +++ b/quantum/process_keycode/process_unicode_common.c @@ -15,6 +15,7 @@ */ #include "process_unicode_common.h" +#include "eeprom.h" static uint8_t input_mode; uint8_t mods; diff --git a/quantum/visualizer/lcd_keyframes.c b/quantum/visualizer/lcd_keyframes.c index df11861ddc9..82e4184d2ca 100644 --- a/quantum/visualizer/lcd_keyframes.c +++ b/quantum/visualizer/lcd_keyframes.c @@ -125,8 +125,8 @@ static void get_led_state_string(char* output, visualizer_state_t* state) { pos += 5; } if (state->status.leds & (1u << USB_LED_KANA)) { - memcpy(output + pos, "KANA ", 5); - pos += 5; + memcpy(output + pos, "KANA", 4); + pos += 4; } output[pos] = 0; } diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index 5df539def51..ccecdb19293 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -89,9 +89,9 @@ DEBUG_HOST = localhost #============================================================================ # Autodecct teensy loader ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) - TEENSY_LOADER_CLI = teensy-loader-cli + TEENSY_LOADER_CLI ?= teensy-loader-cli else - TEENSY_LOADER_CLI = teensy_loader_cli + TEENSY_LOADER_CLI ?= teensy_loader_cli endif # Program the device. @@ -100,43 +100,47 @@ program: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep teensy: $(BUILD_DIR)/$(TARGET).hex $(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex + +BATCHISP ?= batchisp flip: $(BUILD_DIR)/$(TARGET).hex - batchisp -hardware usb -device $(MCU) -operation erase f - batchisp -hardware usb -device $(MCU) -operation loadbuffer $(BUILD_DIR)/$(TARGET).hex program - batchisp -hardware usb -device $(MCU) -operation start reset 0 + $(BATCHISP) -hardware usb -device $(MCU) -operation erase f + $(BATCHISP) -hardware usb -device $(MCU) -operation loadbuffer $(BUILD_DIR)/$(TARGET).hex program + $(BATCHISP) -hardware usb -device $(MCU) -operation start reset 0 + +DFU_PROGRAMMER ?= dfu-programmer dfu: $(BUILD_DIR)/$(TARGET).hex sizeafter - until dfu-programmer $(MCU) get bootloader-version; do\ + until $(DFU_PROGRAMMER) $(MCU) get bootloader-version; do\ echo "Error: Bootloader not found. Trying again in 5s." ;\ sleep 5 ;\ done -ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1))) - dfu-programmer $(MCU) erase --force +ifneq (, $(findstring 0.7, $(shell $(DFU_PROGRAMMER) --version 2>&1))) + $(DFU_PROGRAMMER) $(MCU) erase --force else - dfu-programmer $(MCU) erase + $(DFU_PROGRAMMER) $(MCU) erase endif - dfu-programmer $(MCU) flash $(BUILD_DIR)/$(TARGET).hex - dfu-programmer $(MCU) reset + $(DFU_PROGRAMMER) $(MCU) flash $(BUILD_DIR)/$(TARGET).hex + $(DFU_PROGRAMMER) $(MCU) reset dfu-start: - dfu-programmer $(MCU) reset - dfu-programmer $(MCU) start + $(DFU_PROGRAMMER) $(MCU) reset + $(DFU_PROGRAMMER) $(MCU) start flip-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep $(COPY) $(BUILD_DIR)/$(TARGET).eep $(BUILD_DIR)/$(TARGET)eep.hex - batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase - batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(BUILD_DIR)/$(TARGET)eep.hex program - batchisp -hardware usb -device $(MCU) -operation start reset 0 + $(BATCHISP) -hardware usb -device $(MCU) -operation memory EEPROM erase + $(BATCHISP) -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(BUILD_DIR)/$(TARGET)eep.hex program + $(BATCHISP) -hardware usb -device $(MCU) -operation start reset 0 $(REMOVE) $(BUILD_DIR)/$(TARGET)eep.hex dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1))) - dfu-programmer $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep + $(DFU_PROGRAMMER) $(MCU) flash --eeprom $(BUILD_DIR)/$(TARGET).eep else - dfu-programmer $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep + $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep endif - dfu-programmer $(MCU) reset + $(DFU_PROGRAMMER) $(MCU) reset # Convert hex to bin. flashbin: $(BUILD_DIR)/$(TARGET).hex diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index eb0c40138a2..2a8d32fb99d 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -151,5 +151,7 @@ endif # List any extra directories to look for libraries here. EXTRALIBDIRS = $(RULESPATH)/ld +DFU_UTIL ?= dfu-util + dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter - dfu-util $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin + $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 94de36918d2..4ba1cc251a7 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -140,7 +140,6 @@ void process_record(keyrecord_t *record) void process_action(keyrecord_t *record, action_t action) { - bool do_release_oneshot = false; keyevent_t event = record->event; #ifndef NO_ACTION_TAPPING uint8_t tap_count = record->tap.count; @@ -152,6 +151,7 @@ void process_action(keyrecord_t *record, action_t action) } #ifndef NO_ACTION_ONESHOT + bool do_release_oneshot = false; // notice we only clear the one shot layer if the pressed key is not a modifier. if (is_oneshot_layer_active() && event.pressed && !IS_MOD(action.key.code)) { clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 0c81e836121..1c7618ff51d 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -9,6 +9,7 @@ #include "suspend.h" #include "timer.h" #include "led.h" +#include "host.h" #ifdef PROTOCOL_LUFA #include "lufa.h" diff --git a/tmk_core/common/mousekey.h b/tmk_core/common/mousekey.h index 6eede06b442..9338d0af779 100644 --- a/tmk_core/common/mousekey.h +++ b/tmk_core/common/mousekey.h @@ -23,8 +23,17 @@ along with this program. If not, see . /* max value on report descriptor */ -#define MOUSEKEY_MOVE_MAX 127 -#define MOUSEKEY_WHEEL_MAX 127 +#ifndef MOUSEKEY_MOVE_MAX + #define MOUSEKEY_MOVE_MAX 127 +#elif MOUSEKEY_MOVE_MAX > 127 + #error MOUSEKEY_MOVE_MAX needs to be smaller than 127 +#endif + +#ifndef MOUSEKEY_WHEEL_MAX + #define MOUSEKEY_WHEEL_MAX 127 +#elif MOUSEKEY_WHEEL_MAX > 127 + #error MOUSEKEY_WHEEL_MAX needs to be smaller than 127 +#endif #ifndef MOUSEKEY_MOVE_DELTA #define MOUSEKEY_MOVE_DELTA 5 diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index e4c8aecb2cf..b7cb0a559aa 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -92,6 +92,9 @@ endif endif CFLAGS += -Wall CFLAGS += -Wstrict-prototypes +ifneq ($(strip $(ALLOW_WARNINGS)), yes) + CFLAGS += -Werror +endif #CFLAGS += -mshort-calls #CFLAGS += -fno-unit-at-a-time #CFLAGS += -Wundef @@ -115,6 +118,9 @@ CPPFLAGS += -O$(OPT) CPPFLAGS += -w CPPFLAGS += -Wall CPPFLAGS += -Wundef +ifneq ($(strip $(ALLOW_WARNINGS)), yes) + CPPFLAGS += -Werror +endif #CPPFLAGS += -mshort-calls #CPPFLAGS += -fno-unit-at-a-time #CPPFLAGS += -Wstrict-prototypes