From 59bef40aab37f8dd4db61e601f2a0e9b5991e993 Mon Sep 17 00:00:00 2001 From: Zach Nielsen Date: Thu, 10 Nov 2016 12:14:54 -0800 Subject: [PATCH 001/183] Keep unicode's input_mode through a power cycle --- quantum/process_keycode/process_unicode.c | 6 ++++++ tmk_core/common/eeconfig.h | 1 + 2 files changed, 7 insertions(+) diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index cd3a610b..f42f2553 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -1,6 +1,7 @@ #include "process_unicode.h" static uint8_t input_mode; +static uint8_t first_flag = 0; __attribute__((weak)) uint16_t hex_to_keycode(uint8_t hex) @@ -17,6 +18,7 @@ uint16_t hex_to_keycode(uint8_t hex) void set_unicode_input_mode(uint8_t os_target) { input_mode = os_target; + eeprom_update_byte(EECONFIG_UNICODEMODE, os_target); } uint8_t get_unicode_input_mode(void) { @@ -75,6 +77,10 @@ void register_hex(uint16_t hex) { bool process_unicode(uint16_t keycode, keyrecord_t *record) { if (keycode > QK_UNICODE && record->event.pressed) { + if (first_flag == 0) { + set_unicode_input_mode(eeprom_read_byte(EECONFIG_UNICODEMODE)); + first_flag = 1; + } uint16_t unicode = keycode & 0x7FFF; unicode_input_start(); register_hex(unicode); diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h index d8caa346..280dc7ab 100644 --- a/tmk_core/common/eeconfig.h +++ b/tmk_core/common/eeconfig.h @@ -33,6 +33,7 @@ along with this program. If not, see . #define EECONFIG_BACKLIGHT (uint8_t *)6 #define EECONFIG_AUDIO (uint8_t *)7 #define EECONFIG_RGBLIGHT (uint32_t *)8 +#define EECONFIG_UNICODEMODE (uint8_t *)12 /* debug bit */ From c07ef5c6abd7875c19c4bcbe3bcaecd123862fd3 Mon Sep 17 00:00:00 2001 From: Zach Nielsen Date: Thu, 10 Nov 2016 12:26:56 -0800 Subject: [PATCH 002/183] Adding my (zach) keymaps for planck and preonic --- keyboards/planck/keymaps/zach/Makefile | 29 + keyboards/planck/keymaps/zach/config.h | 91 +++ keyboards/planck/keymaps/zach/keymap.c | 48 ++ .../keymaps/zach/zach_common_functions.c | 538 ++++++++++++++++++ keyboards/preonic/keymaps/zach/Makefile | 29 + keyboards/preonic/keymaps/zach/config.h | 95 ++++ keyboards/preonic/keymaps/zach/keymap.c | 54 ++ .../keymaps/zach/zach_common_functions.c | 538 ++++++++++++++++++ 8 files changed, 1422 insertions(+) create mode 100644 keyboards/planck/keymaps/zach/Makefile create mode 100644 keyboards/planck/keymaps/zach/config.h create mode 100644 keyboards/planck/keymaps/zach/keymap.c create mode 100644 keyboards/planck/keymaps/zach/zach_common_functions.c create mode 100644 keyboards/preonic/keymaps/zach/Makefile create mode 100644 keyboards/preonic/keymaps/zach/config.h create mode 100644 keyboards/preonic/keymaps/zach/keymap.c create mode 100644 keyboards/preonic/keymaps/zach/zach_common_functions.c diff --git a/keyboards/planck/keymaps/zach/Makefile b/keyboards/planck/keymaps/zach/Makefile new file mode 100644 index 00000000..b0009147 --- /dev/null +++ b/keyboards/planck/keymaps/zach/Makefile @@ -0,0 +1,29 @@ +# Zach Planck Makefile +# Max .hex size is about 28636 bytes + +# 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 +# +TAP_DANCE_ENABLE = yes # Enable TapDance functionality +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # 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 +USB_6KRO_ENABLE = no # 6key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +VARIABLE_TRACE = no # Debug changes to variable values +UNICODE_ENABLE = yes # Unicode +UNICODEMAP_ENABLE = yes # Enable extended 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/zach/config.h b/keyboards/planck/keymaps/zach/config.h new file mode 100644 index 00000000..1be80054 --- /dev/null +++ b/keyboards/planck/keymaps/zach/config.h @@ -0,0 +1,91 @@ +/* +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 MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Planck Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +//#define BACKLIGHT_BREATHING // LED breathing +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 5 + +/* 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 +#define PREVENT_STUCK_MODIFIERS +//#define DYNAMIC_MACRO_ENABLE // Enable if you need to use the macro functionality +//#define SPACE_CADET // Parenthesis on L/R shift + +#ifdef SUBPROJECT_rev3 + #include "rev3/config.h" +#endif +#ifdef SUBPROJECT_rev4 + #include "rev4/config.h" +#endif + +#endif diff --git a/keyboards/planck/keymaps/zach/keymap.c b/keyboards/planck/keymaps/zach/keymap.c new file mode 100644 index 00000000..d3cde5bb --- /dev/null +++ b/keyboards/planck/keymaps/zach/keymap.c @@ -0,0 +1,48 @@ +// Zach Nielsen Custom Planck Keyboard layout +#include "planck.h" +#define PLANCK_YES // This is the Planck +#include "zach_common_functions.c" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_COLEMAK] = { /* Base Layer */ + {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, KC_BSPC}, + {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT}, + {SHFT_CAP,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, + {CTRLB, TD(SUP), KC_LALT, KC_LCTL, TD(LOW), KC_SPC, KC_SPC, TD(RAI), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +[_SWCOLE] = { /* Software Colemak */ + {_______, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, KC_QUOT, _______}, + {_______, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, _______}, + {_______, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +[_RAISE] = { /* RAISE - Numpad and Unicode symbols */ + {KC_GRV, SUPA2, FACE, DISFACE, SHRUG, PLUMIN, IBANG, KC_7, KC_8, KC_9, KC_COLN, _______}, + {KC_DEL, DEGREE, MICRO, WOMEGA, OMEGA, PENGY, KC_ENT, KC_4, KC_5, KC_6, KC_SLSH, KC_ASTR}, + {_______, KC_COLN, TFLIP, LAROW, RAROW, DUCK, KC_SPC, KC_1, KC_2, KC_3, KC_MINS, KC_PLUS}, + {_______, KC_PIPE, TPUT, _______, _______, KC_TAB, KC_TAB, _______, KC_0, KC_0, KC_DOT, KC_EQL} +}, + +[_LOWER] = { /* LOWER - Symbols, Paging, CtrAltDel */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_QUES, KC_DQT, KC_DEL}, + {KC_DEL, KC_LBRC, KC_RBRC, KC_MINS, KC_UNDS, KC_HOME, KC_END, KC_LPRN, KC_RPRN, KC_SLSH, KC_SCLN, KC_PGUP}, + {CPYPST, XXXXXXX, C(KC_X), KC_LABK, KC_RABK, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_BSLS, KC_COLN, KC_PGDN}, + {_______, _______, _______, _______, _______, KC_TAB, KC_TAB, _______, _______, _______, _______, _______} +}, + +[_ADJUST] = { /* ADJUST - Macros, Layer Switching, Function Keys */ + {UNIWIN, Sil_Usr, Sil_Pas, PENGY, DUCK, KC_INS, KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX}, + {UNILIN, UltiU, UltiP, RANDIG, RANDIG, SWCOLE, COLEMAK, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX}, + {_______, CADKEY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX}, + {_______, _______, _______, _______, _______, RESET, RESET, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +[_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */ + {_______, TFLIP, XXXXXXX, FINGER, IBANG, roman7, XXXXXXX, XXXXXXX, ROMAN7, TappyL, TappyR, _______}, + {KC_DEL, TPUT, FACE, DISFACE, SHRUG, roman4, roman5, roman6, ROMAN4, ROMAN5, ROMAN6, _______}, + {XXXXXXX, PENIS, BOOBS, LAROW, RAROW, roman1, roman2, roman3, ROMAN1, ROMAN2, ROMAN3, XXXXXXX}, + {_______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, _______, _______, _______, _______} +} +}; diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c new file mode 100644 index 00000000..f01929f5 --- /dev/null +++ b/keyboards/planck/keymaps/zach/zach_common_functions.c @@ -0,0 +1,538 @@ +#ifndef ZACH_COMMON_FUNCTIONS +#define ZACH_COMMON_FUNCTIONS +#include "eeconfig.h" +#include "action_layer.h" +#include "keymap_colemak.h" +#include "extra_functions.c" +extern keymap_config_t keymap_config; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define C(n) RCTL(n) +#define CADKEY RCTL(RALT(KC_DEL)) + +void tap(uint16_t keycode){ + register_code(keycode); + unregister_code(keycode); +}; + +void persistant_default_layer_set(uint16_t default_layer){ + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +}; + +// Automatic number generation of important keywords +enum my_keycodes{ + // Layer numbers + _COLEMAK = 0, + _SWCOLE, + _RAISE, + _LOWER, + _ADJUST, + _UNICODES, + // These use process_record_user() + COLEMAK = SAFE_RANGE, + SWCOLE, + LOWER, + RAISE, + SHFT_CAP, + CTRLB, + CPYPST, + FACE, + UNIWIN, + UNILIN, + DISFACE, + TFLIP, + TPUT, + SHRUG, + PENIS, + BOOBS, + Sil_Pas, + Sil_Usr, + UltiU, + UltiP, + TappyR, + TappyL, + RANDIG, + FINGER, + // Tap_Dance nums + RAI = 0, + LOW, + SUP +}; + +#ifdef AUDIO_ENABLE +#include "audio.h" +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_swcole[][2] = SONG(QWERTY_SOUND); +float tone_capslock_on[][2] = SONG(CAPS_LOCK_ON_SOUND); +float tone_capslock_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); +float tone_ctrl_mod[][2] = SONG(COIN_SOUND); +float tone_copy[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND); +float uniwin[][2] = SONG(UNICODE_WINDOWS); +float unilin[][2] = SONG(UNICODE_LINUX); +#endif + +#ifdef TAP_DANCE_ENABLE +#define TAPPING_TERM 200 + +uint8_t Lstate = 0, Rstate = 0; +uint32_t Ltimer = 0, Rtimer = 0; +uint32_t Ltimes[3], Rtimes[4]; // Ratio of tap times should be about 1.335 (L/R) +void rhythm_parse(void){ + int L = Ltimes[0] + Ltimes[1] + Ltimes[2]; // Start to end time + int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3]; + if(abs(R-L) > 10){ + tap(KC_N); tap(KC_O); + return; + } else { + L = (L / 3)*100; // Average time per tap * 100 + R = (R / 4); + if(abs(abs(L/R)-133) > 1){ + tap(KC_N); tap(KC_O); + tap(KC_P); tap(KC_E); + return; + } else { + tap(KC_O); tap(KC_K); + return; + } + } +}; + +void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap + switch(state->count){ // Only turn the layer on once + case 1: + layer_off(_UNICODES); + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + break; + } +}; +void dance_raise_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release + switch(state->count){ + case 1: // Normal action. Turn off layers + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + layer_off(_UNICODES); + break; + } +}; +///////////////////////////////////////////////////////////////////// +void dance_lower_press(qk_tap_dance_state_t *state, void *user_data){// Called on tap + switch(state->count){ + case 1: // Turn on lower + layer_off(_UNICODES); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + break; + } +}; +void dance_lower_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release + switch(state->count){ + case 1: // Normal action. Turn off layers + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + layer_off(_UNICODES); + break; + case 2: // Turn on _UNICODES layer + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + layer_on(_UNICODES); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0); + #endif + break; + } +}; +///////////////////////////////////////////////////////////////////// +void dance_super_press(qk_tap_dance_state_t *state, void *user_data){ // Called on down + if(state->count == 1){ + register_code(KC_LGUI); + } +} +void dance_super_done(qk_tap_dance_state_t *state, void *user_data){ // Called on timeout + switch(state->count){ + case 2: + register_code(KC_LGUI); + tap(KC_L); + unregister_code(KC_LGUI); + break; + } +} +void dance_super_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on up + unregister_code(KC_LGUI); +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [RAI] = ACTION_TAP_DANCE_FN_ADVANCED(dance_raise_press, NULL, dance_raise_lift), + [LOW] = ACTION_TAP_DANCE_FN_ADVANCED(dance_lower_press, NULL, dance_lower_lift), + [SUP] = ACTION_TAP_DANCE_FN_ADVANCED(dance_super_press, dance_super_done, dance_super_lift) +}; +#endif + +#ifdef UNICODE_ENABLE +// Unicode shortcuts +#define IBANG UC(0x203D) +#define RAROW UC(0x2192) +#define LAROW UC(0x2190) +#define DEGREE UC(0x00B0) +#define OMEGA UC(0x03A9) +#define WOMEGA UC(0x03C9) +#define MICRO UC(0x00B5) +#define PLUMIN UC(0x00B1) +#define SUPA2 UC(0x00B2) +#define ROMAN1 UC(0x2160) +#define ROMAN2 UC(0x2161) +#define ROMAN3 UC(0x2162) +#define ROMAN4 UC(0x2163) +#define ROMAN5 UC(0x2164) +#define ROMAN6 UC(0x2165) +#define ROMAN7 UC(0x2166) +#define roman1 UC(0x2170) +#define roman2 UC(0x2171) +#define roman3 UC(0x2172) +#define roman4 UC(0x2173) +#define roman5 UC(0x2174) +#define roman6 UC(0x2175) +#define roman7 UC(0x2176) + +#ifdef UNICODEMAP_ENABLE // For Unicode characters larger than 0x8000. Send with X() +enum Ext_Unicode{ + PENGUIN = 0, + BOAR, + MONKEY, + DRAGON, + CHICK, + TUMBLER +}; +const uint32_t PROGMEM unicode_map[] = { + [PENGUIN] = 0x1F427, + [BOAR] = 0x1F417, + [MONKEY] = 0x1F412, + [DRAGON] = 0x1F409, + [CHICK] = 0x1F425, + [TUMBLER] = 0x1F943 +}; +#define PENGY X(PENGUIN) +#define BOARY X(BOAR) +#define MNKY X(MONKEY) +#define DRGN X(DRAGON) +#define DUCK X(CHICK) +#define TMBL X(TUMBLER) +#endif + +#endif + +static uint16_t key_timer; +static uint8_t caps_status = 0; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case COLEMAK: + if(record->event.pressed){ + persistant_default_layer_set(1UL<<_COLEMAK); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + } + return false; + break; + case SWCOLE: + if(record->event.pressed){ + persistant_default_layer_set(1UL<<_SWCOLE); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_swcole, false, 0); + #endif + } + return false; + break; + #ifndef TAP_DANCE_ENABLE + case RAISE: + if(record->event.pressed){ + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case 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; + #endif + case SHFT_CAP: + if(record->event.pressed){ + key_timer = timer_read(); // if the key is being pressed, we start the timer. + register_code(KC_LSHIFT); + } else { // this means the key was just released (tap or "held down") + if(timer_elapsed(key_timer) < 152){ // Time in ms, the threshold we pick for counting something as a tap. + tap(KC_CAPS); + if(caps_status == 0){ + caps_status = 1; + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_capslock_on, false, 0); + #endif + } else { + caps_status = 0; + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_capslock_off, false, 0); + #endif + } + } + unregister_code(KC_LSHIFT); + } + return false; + break; + case CTRLB: // Control-B on tap (bold) + if(record->event.pressed){ + key_timer = timer_read(); // if the key is being pressed, we start the timer. + register_code(KC_LCTL); + } else { // this means the key was just released (tap or "held down") + if (timer_elapsed(key_timer) < 152) { // Time in ms, the threshold we pick for counting something as a tap. + tap(KC_B); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0); + #endif + #ifdef BACKLIGHT_BREATHING + breathing_speed_set(2); + breathing_pulse(); + #endif + } + unregister_code(KC_LCTL); + } + return false; + break; + case CPYPST: // One key copy/paste + if(record->event.pressed){ + key_timer = timer_read(); + } else { + if (timer_elapsed(key_timer) > 152) { // Hold, copy + register_code(KC_LCTL); + tap(KC_C); + unregister_code(KC_LCTL); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_copy, false, 0); + #endif + } else { // Tap, paste + register_code(KC_LCTL); + tap(KC_V); + unregister_code(KC_LCTL); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_paste, false, 0); + #endif + } + } + return false; + break; + #ifdef UNICODE_ENABLE + case UNIWIN: + if(record->event.pressed){ + set_unicode_input_mode(UC_WIN); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(uniwin, false, 0); + #endif + } + return false; + break; + case UNILIN: + if(record->event.pressed){ + set_unicode_input_mode(UC_LNX); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(unilin, false, 0); + #endif + } + return false; + break; + case DISFACE: // ಠ_ಠ + if(record->event.pressed){ + process_unicode((0x0CA0|QK_UNICODE), record); // Eye + register_code(KC_RSFT); + tap(KC_MINS); + unregister_code(KC_RSFT); + process_unicode((0x0CA0|QK_UNICODE), record); // Eye + } + return false; + break; + case TFLIP: // (╯°□°)╯ ︵ ┻━┻ + if(record->event.pressed){ + register_code(KC_RSFT); + tap(KC_9); + unregister_code(KC_RSFT); + process_unicode((0x256F|QK_UNICODE), record); // Arm + process_unicode((0x00B0|QK_UNICODE), record); // Eye + process_unicode((0x25A1|QK_UNICODE), record); // Mouth + process_unicode((0x00B0|QK_UNICODE), record); // Eye + register_code(KC_RSFT); + tap(KC_0); + unregister_code(KC_RSFT); + process_unicode((0x256F|QK_UNICODE), record); // Arm + tap(KC_SPC); + process_unicode((0x0361|QK_UNICODE), record); // Flippy + tap(KC_SPC); + process_unicode((0x253B|QK_UNICODE), record); // Table + process_unicode((0x2501|QK_UNICODE), record); // Table + process_unicode((0x253B|QK_UNICODE), record); // Table + } + return false; + break; + case TPUT: // ┬──┬ ノ( ゜-゜ノ) + if(record->event.pressed){ + process_unicode((0x252C|QK_UNICODE), record); // Table + process_unicode((0x2500|QK_UNICODE), record); // Table + process_unicode((0x2500|QK_UNICODE), record); // Table + process_unicode((0x252C|QK_UNICODE), record); // Table + tap(KC_SPC); + process_unicode((0x30CE|QK_UNICODE), record); // Arm + register_code(KC_RSFT); + tap(KC_9); + unregister_code(KC_RSFT); + tap(KC_SPC); + process_unicode((0x309C|QK_UNICODE), record); // Eye + tap(KC_MINS); + process_unicode((0x309C|QK_UNICODE), record); // Eye + process_unicode((0x30CE|QK_UNICODE), record); // Arm + register_code(KC_RSFT); + tap(KC_0); + unregister_code(KC_RSFT); + } + return false; + break; + case SHRUG: // ¯\_(ツ)_/¯ + if(record->event.pressed){ + process_unicode((0x00AF|QK_UNICODE), record); // Hand + tap(KC_BSLS); // Arm + register_code(KC_RSFT); + tap(KC_UNDS); // Arm + tap(KC_LPRN); // Head + unregister_code(KC_RSFT); + process_unicode((0x30C4|QK_UNICODE), record); // Face + register_code(KC_RSFT); + tap(KC_RPRN); // Head + tap(KC_UNDS); // Arm + unregister_code(KC_RSFT); + tap(KC_SLSH); // Arm + process_unicode((0x00AF|QK_UNICODE), record); // Hand + } + return false; + break; + #endif + case FACE: // (o_O) + if(record->event.pressed){ + register_code(KC_RSFT); + tap(KC_LPRN); + unregister_code(KC_RSFT); + tap(KC_O); + register_code(KC_RSFT); + tap(KC_UNDS); + tap(KC_O); + tap(KC_RPRN); + unregister_code(KC_RSFT); + } + return false; + break; + #ifdef TAP_DANCE_ENABLE + case TappyR: + if(record->event.pressed){ + if(timer_elapsed32(Rtimer) > 1052){ + Rstate = 0; + } + switch(Rstate){ + case 0: + Rtimer = timer_read32(); + Rstate++; + break; + case 1: + Rtimes[0] = timer_elapsed32(Rtimer); + Rtimer = timer_read32(); + Rstate++; + break; + case 2: + Rtimes[1] = timer_elapsed32(Rtimer); + Rtimer = timer_read32(); + Rstate++; + break; + case 3: + Rtimes[2] = timer_elapsed32(Rtimer); + Rstate = 0; + break; + } + if(Rstate == 0 && Lstate == 0) rhythm_parse(); + } + return false; + break; + case TappyL: + if(record->event.pressed){ + if(timer_elapsed32(Ltimer) > 1052){ + Lstate = 0; + } + switch(Lstate){ + case 0: + Ltimer = timer_read32(); + Lstate++; + break; + case 1: + Ltimes[0] = timer_elapsed32(Ltimer); + Ltimer = timer_read32(); + Lstate++; + break; + case 2: + Ltimes[1] = timer_elapsed32(Ltimer); + Lstate = 0; + break; + } + if(Rstate == 0 && Lstate == 0) rhythm_parse(); + } + return false; + break; + #endif + #endif + case RANDIG: + if (record->event.pressed) { + tap_random_base64(); + } + return false; + break; + } + return true; +}; + +#ifdef AUDIO_ENABLE +void matrix_init_user(void){ // Run once at startup + #ifdef AUDIO_ENABLE + _delay_ms(50); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif +} + +void play_goodbye_tone(void){ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); +} + +void shutdown_user(){ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void){ // Run when the music layer is turned on + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void music_off_user(void){ // Run when music is turned off + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); +} +#endif + +#endif diff --git a/keyboards/preonic/keymaps/zach/Makefile b/keyboards/preonic/keymaps/zach/Makefile new file mode 100644 index 00000000..bd49d142 --- /dev/null +++ b/keyboards/preonic/keymaps/zach/Makefile @@ -0,0 +1,29 @@ +# Zach Preonic Makefile +# Max .hex size is about 28636 bytes + +# 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 +# +TAP_DANCE_ENABLE = yes # Enable TapDance functionality +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # 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 +USB_6KRO_ENABLE = no # 6key Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +VARIABLE_TRACE = no # Debug changes to variable values +UNICODE_ENABLE = yes # Unicode +UNICODEMAP_ENABLE = no # Enable extended 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/preonic/keymaps/zach/config.h b/keyboards/preonic/keymaps/zach/config.h new file mode 100644 index 00000000..59959524 --- /dev/null +++ b/keyboards/preonic/keymaps/zach/config.h @@ -0,0 +1,95 @@ +/* +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 0x6061 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Preonic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + + +#define BACKLIGHT_BREATHING // LED breathing +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 5 + +/* 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)) \ +) + +/* ws2812 RGB LED */ +//#define RGB_DI_PIN D1 +//#define RGBLIGHT_TIMER +//#define RGBLED_NUM 28 // Number of LEDs +//#define RGBLIGHT_HUE_STEP 10 +//#define RGBLIGHT_SAT_STEP 17 +//#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define NO_ACTION_MACRO +#define NO_ACTION_FUNCTION +#define PREVENT_STUCK_MODIFIERS +//#define DYNAMIC_MACRO_ENABLE // Enable if you need to use the macro functionality +//#define SPACE_CADET // Parenthesis on L/R shift + + +#endif diff --git a/keyboards/preonic/keymaps/zach/keymap.c b/keyboards/preonic/keymaps/zach/keymap.c new file mode 100644 index 00000000..423ca4b8 --- /dev/null +++ b/keyboards/preonic/keymaps/zach/keymap.c @@ -0,0 +1,54 @@ +// Zach Nielsen Custom Preonic Keyboard layout +#include "preonic.h" +#define PREONIC_YES // This is the Preonic +#include "zach_common_functions.c" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_COLEMAK] = { /* Base Layer */ + {KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, KC_ENT}, + {KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT}, + {SHFT_CAP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, + {CTRLB, TD(SUP), KC_LALT, KC_LCTL, TD(LOW), KC_SPC, KC_SPC, TD(RAI), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +[_SWCOLE] = { /* Software Colemak */ + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, KC_QUOT, _______}, + {_______, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, _______}, + {_______, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +[_RAISE] = { /* RAISE - Numpad and Unicode symbols */ + {KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {KC_GRV, SUPA2, FACE, DISFACE, SHRUG, PLUMIN, IBANG, KC_7, KC_8, KC_9, KC_COLN, _______}, + {KC_DEL, DEGREE, MICRO, WOMEGA, OMEGA, XXXXXXX, KC_ENT, KC_4, KC_5, KC_6, KC_SLSH, KC_ASTR}, + {_______, KC_COLN, TFLIP, LAROW, RAROW, XXXXXXX, KC_SPC, KC_1, KC_2, KC_3, KC_MINS, KC_PLUS}, + {_______, KC_PIPE, TPUT, _______, _______, KC_TAB, KC_TAB, _______, KC_0, KC_0, KC_DOT, KC_EQL} +}, + +[_LOWER] = { /* LOWER - Symbols, Paging, CtrAltDel */ + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_QUES, KC_DQT, KC_DEL}, + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_QUES, KC_DQT, KC_DEL}, + {KC_DEL, KC_LBRC, KC_RBRC, KC_MINS, KC_UNDS, KC_HOME, KC_END, KC_LPRN, KC_RPRN, KC_SLSH, KC_SCLN, KC_PGUP}, + {CPYPST, XXXXXXX, C(KC_X), KC_LABK, KC_RABK, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_BSLS, KC_COLN, KC_PGDN}, + {_______, _______, _______, _______, _______, KC_TAB, KC_TAB, _______, _______, _______, _______, _______} +}, + +[_ADJUST] = { /* ADJUST - Macros, Layer Switching, Function Keys */ + {UNIWIN, XXXXXXX, XXXXXXX, RANDIG, RANDIG, KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AU_TOG, MU_TOG}, + {UNILIN, SUPA2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX}, + {XXXXXXX, DEGREE, IBANG, LAROW, RAROW, SWCOLE, COLEMAK, KC_F5, KC_F6, KC_F7, KC_F8, BL_INC}, + {_______, CADKEY, MICRO, WOMEGA, OMEGA, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, BL_DEC}, + {_______, _______, _______, _______, _______, RESET, RESET, _______, XXXXXXX, MUV_DE, MUV_IN, BL_TOGG} +}, + +[_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */ + {_______, XXXXXXX, XXXXXXX, FINGER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, + {_______, TFLIP, XXXXXXX, XXXXXXX, IBANG, roman7, XXXXXXX, XXXXXXX, ROMAN7, XXXXXXX, XXXXXXX, _______}, + {KC_DEL, TPUT, FACE, DISFACE, SHRUG, roman4, roman5, roman6, ROMAN4, ROMAN5, ROMAN6, _______}, + {XXXXXXX, PENIS, BOOBS, LAROW, RAROW, roman1, roman2, roman3, ROMAN1, ROMAN2, ROMAN3, XXXXXXX}, + {_______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, _______, _______, _______, _______} +} +}; diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c new file mode 100644 index 00000000..f01929f5 --- /dev/null +++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c @@ -0,0 +1,538 @@ +#ifndef ZACH_COMMON_FUNCTIONS +#define ZACH_COMMON_FUNCTIONS +#include "eeconfig.h" +#include "action_layer.h" +#include "keymap_colemak.h" +#include "extra_functions.c" +extern keymap_config_t keymap_config; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO +#define C(n) RCTL(n) +#define CADKEY RCTL(RALT(KC_DEL)) + +void tap(uint16_t keycode){ + register_code(keycode); + unregister_code(keycode); +}; + +void persistant_default_layer_set(uint16_t default_layer){ + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +}; + +// Automatic number generation of important keywords +enum my_keycodes{ + // Layer numbers + _COLEMAK = 0, + _SWCOLE, + _RAISE, + _LOWER, + _ADJUST, + _UNICODES, + // These use process_record_user() + COLEMAK = SAFE_RANGE, + SWCOLE, + LOWER, + RAISE, + SHFT_CAP, + CTRLB, + CPYPST, + FACE, + UNIWIN, + UNILIN, + DISFACE, + TFLIP, + TPUT, + SHRUG, + PENIS, + BOOBS, + Sil_Pas, + Sil_Usr, + UltiU, + UltiP, + TappyR, + TappyL, + RANDIG, + FINGER, + // Tap_Dance nums + RAI = 0, + LOW, + SUP +}; + +#ifdef AUDIO_ENABLE +#include "audio.h" +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_swcole[][2] = SONG(QWERTY_SOUND); +float tone_capslock_on[][2] = SONG(CAPS_LOCK_ON_SOUND); +float tone_capslock_off[][2] = SONG(CAPS_LOCK_OFF_SOUND); +float tone_ctrl_mod[][2] = SONG(COIN_SOUND); +float tone_copy[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND); +float uniwin[][2] = SONG(UNICODE_WINDOWS); +float unilin[][2] = SONG(UNICODE_LINUX); +#endif + +#ifdef TAP_DANCE_ENABLE +#define TAPPING_TERM 200 + +uint8_t Lstate = 0, Rstate = 0; +uint32_t Ltimer = 0, Rtimer = 0; +uint32_t Ltimes[3], Rtimes[4]; // Ratio of tap times should be about 1.335 (L/R) +void rhythm_parse(void){ + int L = Ltimes[0] + Ltimes[1] + Ltimes[2]; // Start to end time + int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3]; + if(abs(R-L) > 10){ + tap(KC_N); tap(KC_O); + return; + } else { + L = (L / 3)*100; // Average time per tap * 100 + R = (R / 4); + if(abs(abs(L/R)-133) > 1){ + tap(KC_N); tap(KC_O); + tap(KC_P); tap(KC_E); + return; + } else { + tap(KC_O); tap(KC_K); + return; + } + } +}; + +void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap + switch(state->count){ // Only turn the layer on once + case 1: + layer_off(_UNICODES); + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + break; + } +}; +void dance_raise_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release + switch(state->count){ + case 1: // Normal action. Turn off layers + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + layer_off(_UNICODES); + break; + } +}; +///////////////////////////////////////////////////////////////////// +void dance_lower_press(qk_tap_dance_state_t *state, void *user_data){// Called on tap + switch(state->count){ + case 1: // Turn on lower + layer_off(_UNICODES); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + break; + } +}; +void dance_lower_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on release + switch(state->count){ + case 1: // Normal action. Turn off layers + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + layer_off(_UNICODES); + break; + case 2: // Turn on _UNICODES layer + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + layer_on(_UNICODES); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0); + #endif + break; + } +}; +///////////////////////////////////////////////////////////////////// +void dance_super_press(qk_tap_dance_state_t *state, void *user_data){ // Called on down + if(state->count == 1){ + register_code(KC_LGUI); + } +} +void dance_super_done(qk_tap_dance_state_t *state, void *user_data){ // Called on timeout + switch(state->count){ + case 2: + register_code(KC_LGUI); + tap(KC_L); + unregister_code(KC_LGUI); + break; + } +} +void dance_super_lift(qk_tap_dance_state_t *state, void *user_data){ // Called on up + unregister_code(KC_LGUI); +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [RAI] = ACTION_TAP_DANCE_FN_ADVANCED(dance_raise_press, NULL, dance_raise_lift), + [LOW] = ACTION_TAP_DANCE_FN_ADVANCED(dance_lower_press, NULL, dance_lower_lift), + [SUP] = ACTION_TAP_DANCE_FN_ADVANCED(dance_super_press, dance_super_done, dance_super_lift) +}; +#endif + +#ifdef UNICODE_ENABLE +// Unicode shortcuts +#define IBANG UC(0x203D) +#define RAROW UC(0x2192) +#define LAROW UC(0x2190) +#define DEGREE UC(0x00B0) +#define OMEGA UC(0x03A9) +#define WOMEGA UC(0x03C9) +#define MICRO UC(0x00B5) +#define PLUMIN UC(0x00B1) +#define SUPA2 UC(0x00B2) +#define ROMAN1 UC(0x2160) +#define ROMAN2 UC(0x2161) +#define ROMAN3 UC(0x2162) +#define ROMAN4 UC(0x2163) +#define ROMAN5 UC(0x2164) +#define ROMAN6 UC(0x2165) +#define ROMAN7 UC(0x2166) +#define roman1 UC(0x2170) +#define roman2 UC(0x2171) +#define roman3 UC(0x2172) +#define roman4 UC(0x2173) +#define roman5 UC(0x2174) +#define roman6 UC(0x2175) +#define roman7 UC(0x2176) + +#ifdef UNICODEMAP_ENABLE // For Unicode characters larger than 0x8000. Send with X() +enum Ext_Unicode{ + PENGUIN = 0, + BOAR, + MONKEY, + DRAGON, + CHICK, + TUMBLER +}; +const uint32_t PROGMEM unicode_map[] = { + [PENGUIN] = 0x1F427, + [BOAR] = 0x1F417, + [MONKEY] = 0x1F412, + [DRAGON] = 0x1F409, + [CHICK] = 0x1F425, + [TUMBLER] = 0x1F943 +}; +#define PENGY X(PENGUIN) +#define BOARY X(BOAR) +#define MNKY X(MONKEY) +#define DRGN X(DRAGON) +#define DUCK X(CHICK) +#define TMBL X(TUMBLER) +#endif + +#endif + +static uint16_t key_timer; +static uint8_t caps_status = 0; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case COLEMAK: + if(record->event.pressed){ + persistant_default_layer_set(1UL<<_COLEMAK); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + } + return false; + break; + case SWCOLE: + if(record->event.pressed){ + persistant_default_layer_set(1UL<<_SWCOLE); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_swcole, false, 0); + #endif + } + return false; + break; + #ifndef TAP_DANCE_ENABLE + case RAISE: + if(record->event.pressed){ + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case 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; + #endif + case SHFT_CAP: + if(record->event.pressed){ + key_timer = timer_read(); // if the key is being pressed, we start the timer. + register_code(KC_LSHIFT); + } else { // this means the key was just released (tap or "held down") + if(timer_elapsed(key_timer) < 152){ // Time in ms, the threshold we pick for counting something as a tap. + tap(KC_CAPS); + if(caps_status == 0){ + caps_status = 1; + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_capslock_on, false, 0); + #endif + } else { + caps_status = 0; + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_capslock_off, false, 0); + #endif + } + } + unregister_code(KC_LSHIFT); + } + return false; + break; + case CTRLB: // Control-B on tap (bold) + if(record->event.pressed){ + key_timer = timer_read(); // if the key is being pressed, we start the timer. + register_code(KC_LCTL); + } else { // this means the key was just released (tap or "held down") + if (timer_elapsed(key_timer) < 152) { // Time in ms, the threshold we pick for counting something as a tap. + tap(KC_B); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_ctrl_mod, false, 0); + #endif + #ifdef BACKLIGHT_BREATHING + breathing_speed_set(2); + breathing_pulse(); + #endif + } + unregister_code(KC_LCTL); + } + return false; + break; + case CPYPST: // One key copy/paste + if(record->event.pressed){ + key_timer = timer_read(); + } else { + if (timer_elapsed(key_timer) > 152) { // Hold, copy + register_code(KC_LCTL); + tap(KC_C); + unregister_code(KC_LCTL); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_copy, false, 0); + #endif + } else { // Tap, paste + register_code(KC_LCTL); + tap(KC_V); + unregister_code(KC_LCTL); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_paste, false, 0); + #endif + } + } + return false; + break; + #ifdef UNICODE_ENABLE + case UNIWIN: + if(record->event.pressed){ + set_unicode_input_mode(UC_WIN); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(uniwin, false, 0); + #endif + } + return false; + break; + case UNILIN: + if(record->event.pressed){ + set_unicode_input_mode(UC_LNX); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(unilin, false, 0); + #endif + } + return false; + break; + case DISFACE: // ಠ_ಠ + if(record->event.pressed){ + process_unicode((0x0CA0|QK_UNICODE), record); // Eye + register_code(KC_RSFT); + tap(KC_MINS); + unregister_code(KC_RSFT); + process_unicode((0x0CA0|QK_UNICODE), record); // Eye + } + return false; + break; + case TFLIP: // (╯°□°)╯ ︵ ┻━┻ + if(record->event.pressed){ + register_code(KC_RSFT); + tap(KC_9); + unregister_code(KC_RSFT); + process_unicode((0x256F|QK_UNICODE), record); // Arm + process_unicode((0x00B0|QK_UNICODE), record); // Eye + process_unicode((0x25A1|QK_UNICODE), record); // Mouth + process_unicode((0x00B0|QK_UNICODE), record); // Eye + register_code(KC_RSFT); + tap(KC_0); + unregister_code(KC_RSFT); + process_unicode((0x256F|QK_UNICODE), record); // Arm + tap(KC_SPC); + process_unicode((0x0361|QK_UNICODE), record); // Flippy + tap(KC_SPC); + process_unicode((0x253B|QK_UNICODE), record); // Table + process_unicode((0x2501|QK_UNICODE), record); // Table + process_unicode((0x253B|QK_UNICODE), record); // Table + } + return false; + break; + case TPUT: // ┬──┬ ノ( ゜-゜ノ) + if(record->event.pressed){ + process_unicode((0x252C|QK_UNICODE), record); // Table + process_unicode((0x2500|QK_UNICODE), record); // Table + process_unicode((0x2500|QK_UNICODE), record); // Table + process_unicode((0x252C|QK_UNICODE), record); // Table + tap(KC_SPC); + process_unicode((0x30CE|QK_UNICODE), record); // Arm + register_code(KC_RSFT); + tap(KC_9); + unregister_code(KC_RSFT); + tap(KC_SPC); + process_unicode((0x309C|QK_UNICODE), record); // Eye + tap(KC_MINS); + process_unicode((0x309C|QK_UNICODE), record); // Eye + process_unicode((0x30CE|QK_UNICODE), record); // Arm + register_code(KC_RSFT); + tap(KC_0); + unregister_code(KC_RSFT); + } + return false; + break; + case SHRUG: // ¯\_(ツ)_/¯ + if(record->event.pressed){ + process_unicode((0x00AF|QK_UNICODE), record); // Hand + tap(KC_BSLS); // Arm + register_code(KC_RSFT); + tap(KC_UNDS); // Arm + tap(KC_LPRN); // Head + unregister_code(KC_RSFT); + process_unicode((0x30C4|QK_UNICODE), record); // Face + register_code(KC_RSFT); + tap(KC_RPRN); // Head + tap(KC_UNDS); // Arm + unregister_code(KC_RSFT); + tap(KC_SLSH); // Arm + process_unicode((0x00AF|QK_UNICODE), record); // Hand + } + return false; + break; + #endif + case FACE: // (o_O) + if(record->event.pressed){ + register_code(KC_RSFT); + tap(KC_LPRN); + unregister_code(KC_RSFT); + tap(KC_O); + register_code(KC_RSFT); + tap(KC_UNDS); + tap(KC_O); + tap(KC_RPRN); + unregister_code(KC_RSFT); + } + return false; + break; + #ifdef TAP_DANCE_ENABLE + case TappyR: + if(record->event.pressed){ + if(timer_elapsed32(Rtimer) > 1052){ + Rstate = 0; + } + switch(Rstate){ + case 0: + Rtimer = timer_read32(); + Rstate++; + break; + case 1: + Rtimes[0] = timer_elapsed32(Rtimer); + Rtimer = timer_read32(); + Rstate++; + break; + case 2: + Rtimes[1] = timer_elapsed32(Rtimer); + Rtimer = timer_read32(); + Rstate++; + break; + case 3: + Rtimes[2] = timer_elapsed32(Rtimer); + Rstate = 0; + break; + } + if(Rstate == 0 && Lstate == 0) rhythm_parse(); + } + return false; + break; + case TappyL: + if(record->event.pressed){ + if(timer_elapsed32(Ltimer) > 1052){ + Lstate = 0; + } + switch(Lstate){ + case 0: + Ltimer = timer_read32(); + Lstate++; + break; + case 1: + Ltimes[0] = timer_elapsed32(Ltimer); + Ltimer = timer_read32(); + Lstate++; + break; + case 2: + Ltimes[1] = timer_elapsed32(Ltimer); + Lstate = 0; + break; + } + if(Rstate == 0 && Lstate == 0) rhythm_parse(); + } + return false; + break; + #endif + #endif + case RANDIG: + if (record->event.pressed) { + tap_random_base64(); + } + return false; + break; + } + return true; +}; + +#ifdef AUDIO_ENABLE +void matrix_init_user(void){ // Run once at startup + #ifdef AUDIO_ENABLE + _delay_ms(50); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif +} + +void play_goodbye_tone(void){ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); +} + +void shutdown_user(){ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void){ // Run when the music layer is turned on + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void music_off_user(void){ // Run when music is turned off + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); +} +#endif + +#endif From 4c0aa02b2e476a8f939586a0da2f28f2a44c83c3 Mon Sep 17 00:00:00 2001 From: Zach Nielsen Date: Thu, 10 Nov 2016 12:59:55 -0800 Subject: [PATCH 003/183] Missed some stuff. Added a song (stole it from reddit). --- keyboards/planck/keymaps/zach/Makefile | 2 +- keyboards/planck/keymaps/zach/config.h | 3 + .../keymaps/zach/zach_common_functions.c | 61 +------------------ keyboards/preonic/keymaps/zach/Makefile | 2 +- .../keymaps/zach/zach_common_functions.c | 61 +------------------ quantum/audio/song_list.h | 12 ++++ 6 files changed, 19 insertions(+), 122 deletions(-) diff --git a/keyboards/planck/keymaps/zach/Makefile b/keyboards/planck/keymaps/zach/Makefile index b0009147..977f1a90 100644 --- a/keyboards/planck/keymaps/zach/Makefile +++ b/keyboards/planck/keymaps/zach/Makefile @@ -16,7 +16,7 @@ USB_6KRO_ENABLE = no # 6key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 -VARIABLE_TRACE = no # Debug changes to variable values +#VARIABLE_TRACE = no # Debug changes to variable values UNICODE_ENABLE = yes # Unicode UNICODEMAP_ENABLE = yes # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/planck/keymaps/zach/config.h b/keyboards/planck/keymaps/zach/config.h index 1be80054..7deb9ebf 100644 --- a/keyboards/planck/keymaps/zach/config.h +++ b/keyboards/planck/keymaps/zach/config.h @@ -53,8 +53,10 @@ along with this program. If not, see . /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ //#define LOCKING_SUPPORT_ENABLE +#undef LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ //#define LOCKING_RESYNC_ENABLE +#undef LOCKING_RESYNC_ENABLE /* key combination for command */ #define IS_COMMAND() ( \ @@ -70,6 +72,7 @@ along with this program. If not, see . //#define NO_DEBUG /* disable print */ //#define NO_PRINT +#undef NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c index f01929f5..7d14dcf3 100644 --- a/keyboards/planck/keymaps/zach/zach_common_functions.c +++ b/keyboards/planck/keymaps/zach/zach_common_functions.c @@ -3,7 +3,6 @@ #include "eeconfig.h" #include "action_layer.h" #include "keymap_colemak.h" -#include "extra_functions.c" extern keymap_config_t keymap_config; // Fillers to make layering more clear @@ -249,7 +248,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - #ifndef TAP_DANCE_ENABLE case RAISE: if(record->event.pressed){ layer_on(_RAISE); @@ -270,7 +268,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - #endif case SHFT_CAP: if(record->event.pressed){ key_timer = timer_read(); // if the key is being pressed, we start the timer. @@ -441,62 +438,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - #ifdef TAP_DANCE_ENABLE - case TappyR: - if(record->event.pressed){ - if(timer_elapsed32(Rtimer) > 1052){ - Rstate = 0; - } - switch(Rstate){ - case 0: - Rtimer = timer_read32(); - Rstate++; - break; - case 1: - Rtimes[0] = timer_elapsed32(Rtimer); - Rtimer = timer_read32(); - Rstate++; - break; - case 2: - Rtimes[1] = timer_elapsed32(Rtimer); - Rtimer = timer_read32(); - Rstate++; - break; - case 3: - Rtimes[2] = timer_elapsed32(Rtimer); - Rstate = 0; - break; - } - if(Rstate == 0 && Lstate == 0) rhythm_parse(); - } - return false; - break; - case TappyL: - if(record->event.pressed){ - if(timer_elapsed32(Ltimer) > 1052){ - Lstate = 0; - } - switch(Lstate){ - case 0: - Ltimer = timer_read32(); - Lstate++; - break; - case 1: - Ltimes[0] = timer_elapsed32(Ltimer); - Ltimer = timer_read32(); - Lstate++; - break; - case 2: - Ltimes[1] = timer_elapsed32(Ltimer); - Lstate = 0; - break; - } - if(Rstate == 0 && Lstate == 0) rhythm_parse(); - } - return false; - break; - #endif - #endif case RANDIG: if (record->event.pressed) { tap_random_base64(); @@ -507,7 +448,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -#ifdef AUDIO_ENABLE void matrix_init_user(void){ // Run once at startup #ifdef AUDIO_ENABLE _delay_ms(50); // gets rid of tick @@ -515,6 +455,7 @@ void matrix_init_user(void){ // Run once at startup #endif } +#ifdef AUDIO_ENABLE void play_goodbye_tone(void){ PLAY_NOTE_ARRAY(tone_goodbye, false, 0); _delay_ms(150); diff --git a/keyboards/preonic/keymaps/zach/Makefile b/keyboards/preonic/keymaps/zach/Makefile index bd49d142..f0a84aba 100644 --- a/keyboards/preonic/keymaps/zach/Makefile +++ b/keyboards/preonic/keymaps/zach/Makefile @@ -16,7 +16,7 @@ USB_6KRO_ENABLE = no # 6key Rollover BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 -VARIABLE_TRACE = no # Debug changes to variable values +#VARIABLE_TRACE = no # Debug changes to variable values UNICODE_ENABLE = yes # Unicode UNICODEMAP_ENABLE = no # Enable extended unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c index f01929f5..7d14dcf3 100644 --- a/keyboards/preonic/keymaps/zach/zach_common_functions.c +++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c @@ -3,7 +3,6 @@ #include "eeconfig.h" #include "action_layer.h" #include "keymap_colemak.h" -#include "extra_functions.c" extern keymap_config_t keymap_config; // Fillers to make layering more clear @@ -249,7 +248,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - #ifndef TAP_DANCE_ENABLE case RAISE: if(record->event.pressed){ layer_on(_RAISE); @@ -270,7 +268,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - #endif case SHFT_CAP: if(record->event.pressed){ key_timer = timer_read(); // if the key is being pressed, we start the timer. @@ -441,62 +438,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; - #ifdef TAP_DANCE_ENABLE - case TappyR: - if(record->event.pressed){ - if(timer_elapsed32(Rtimer) > 1052){ - Rstate = 0; - } - switch(Rstate){ - case 0: - Rtimer = timer_read32(); - Rstate++; - break; - case 1: - Rtimes[0] = timer_elapsed32(Rtimer); - Rtimer = timer_read32(); - Rstate++; - break; - case 2: - Rtimes[1] = timer_elapsed32(Rtimer); - Rtimer = timer_read32(); - Rstate++; - break; - case 3: - Rtimes[2] = timer_elapsed32(Rtimer); - Rstate = 0; - break; - } - if(Rstate == 0 && Lstate == 0) rhythm_parse(); - } - return false; - break; - case TappyL: - if(record->event.pressed){ - if(timer_elapsed32(Ltimer) > 1052){ - Lstate = 0; - } - switch(Lstate){ - case 0: - Ltimer = timer_read32(); - Lstate++; - break; - case 1: - Ltimes[0] = timer_elapsed32(Ltimer); - Ltimer = timer_read32(); - Lstate++; - break; - case 2: - Ltimes[1] = timer_elapsed32(Ltimer); - Lstate = 0; - break; - } - if(Rstate == 0 && Lstate == 0) rhythm_parse(); - } - return false; - break; - #endif - #endif case RANDIG: if (record->event.pressed) { tap_random_base64(); @@ -507,7 +448,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; -#ifdef AUDIO_ENABLE void matrix_init_user(void){ // Run once at startup #ifdef AUDIO_ENABLE _delay_ms(50); // gets rid of tick @@ -515,6 +455,7 @@ void matrix_init_user(void){ // Run once at startup #endif } +#ifdef AUDIO_ENABLE void play_goodbye_tone(void){ PLAY_NOTE_ARRAY(tone_goodbye, false, 0); _delay_ms(150); diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h index 8022ca67..623f24f3 100644 --- a/quantum/audio/song_list.h +++ b/quantum/audio/song_list.h @@ -3,6 +3,10 @@ #ifndef SONG_LIST_H #define SONG_LIST_H +#define COIN_SOUND \ + E__NOTE(_A5 ),\ + HD_NOTE(_E6 ), + #define ODE_TO_JOY \ Q__NOTE(_E4), Q__NOTE(_E4), Q__NOTE(_F4), Q__NOTE(_G4), \ Q__NOTE(_G4), Q__NOTE(_F4), Q__NOTE(_E4), Q__NOTE(_D4), \ @@ -122,4 +126,12 @@ E__NOTE(_E5), \ E__NOTE(_D5), +#define UNICODE_WINDOWS \ + E__NOTE(_B5), \ + S__NOTE(_E6), + +#define UNICODE_LINUX \ + E__NOTE(_E6), \ + S__NOTE(_B5), + #endif From f388bb5bdacb39a5309ca7594940184bbf35e84b Mon Sep 17 00:00:00 2001 From: nielsenz Date: Thu, 10 Nov 2016 13:39:46 -0800 Subject: [PATCH 004/183] Removed some common functions from my keymap --- keyboards/planck/keymaps/zach/keymap.c | 8 ++++---- keyboards/planck/keymaps/zach/zach_common_functions.c | 9 --------- keyboards/preonic/keymaps/zach/keymap.c | 4 ++-- keyboards/preonic/keymaps/zach/zach_common_functions.c | 9 --------- 4 files changed, 6 insertions(+), 24 deletions(-) diff --git a/keyboards/planck/keymaps/zach/keymap.c b/keyboards/planck/keymaps/zach/keymap.c index d3cde5bb..710477df 100644 --- a/keyboards/planck/keymaps/zach/keymap.c +++ b/keyboards/planck/keymaps/zach/keymap.c @@ -33,16 +33,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, [_ADJUST] = { /* ADJUST - Macros, Layer Switching, Function Keys */ - {UNIWIN, Sil_Usr, Sil_Pas, PENGY, DUCK, KC_INS, KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX}, - {UNILIN, UltiU, UltiP, RANDIG, RANDIG, SWCOLE, COLEMAK, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX}, + {UNIWIN, XXXXXXX, XXXXXXX, PENGY, DUCK, KC_INS, KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX}, + {UNILIN, XXXXXXX, XXXXXXX, RANDIG, RANDIG, SWCOLE, COLEMAK, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX}, {_______, CADKEY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX}, {_______, _______, _______, _______, _______, RESET, RESET, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX} }, [_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */ - {_______, TFLIP, XXXXXXX, FINGER, IBANG, roman7, XXXXXXX, XXXXXXX, ROMAN7, TappyL, TappyR, _______}, + {_______, TFLIP, XXXXXXX, XXXXXXX, IBANG, roman7, XXXXXXX, XXXXXXX, ROMAN7, XXXXXXX, XXXXXXX, _______}, {KC_DEL, TPUT, FACE, DISFACE, SHRUG, roman4, roman5, roman6, ROMAN4, ROMAN5, ROMAN6, _______}, - {XXXXXXX, PENIS, BOOBS, LAROW, RAROW, roman1, roman2, roman3, ROMAN1, ROMAN2, ROMAN3, XXXXXXX}, + {XXXXXXX, XXXXXXX, XXXXXXX, LAROW, RAROW, roman1, roman2, roman3, ROMAN1, ROMAN2, ROMAN3, XXXXXXX}, {_______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, _______, _______, _______, _______} } }; diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c index 7d14dcf3..1f907e6c 100644 --- a/keyboards/planck/keymaps/zach/zach_common_functions.c +++ b/keyboards/planck/keymaps/zach/zach_common_functions.c @@ -45,16 +45,7 @@ enum my_keycodes{ TFLIP, TPUT, SHRUG, - PENIS, - BOOBS, - Sil_Pas, - Sil_Usr, - UltiU, - UltiP, - TappyR, - TappyL, RANDIG, - FINGER, // Tap_Dance nums RAI = 0, LOW, diff --git a/keyboards/preonic/keymaps/zach/keymap.c b/keyboards/preonic/keymaps/zach/keymap.c index 423ca4b8..6ce37840 100644 --- a/keyboards/preonic/keymaps/zach/keymap.c +++ b/keyboards/preonic/keymaps/zach/keymap.c @@ -45,10 +45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, [_UNICODES] = { /* UNICODES - Extra layer for unicode stuff */ - {_______, XXXXXXX, XXXXXXX, FINGER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, + {_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______}, {_______, TFLIP, XXXXXXX, XXXXXXX, IBANG, roman7, XXXXXXX, XXXXXXX, ROMAN7, XXXXXXX, XXXXXXX, _______}, {KC_DEL, TPUT, FACE, DISFACE, SHRUG, roman4, roman5, roman6, ROMAN4, ROMAN5, ROMAN6, _______}, - {XXXXXXX, PENIS, BOOBS, LAROW, RAROW, roman1, roman2, roman3, ROMAN1, ROMAN2, ROMAN3, XXXXXXX}, + {XXXXXXX, XXXXXXX, XXXXXXX, LAROW, RAROW, roman1, roman2, roman3, ROMAN1, ROMAN2, ROMAN3, XXXXXXX}, {_______, _______, _______, _______, _______, KC_SPC, KC_SPC, _______, _______, _______, _______, _______} } }; diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c index 7d14dcf3..1f907e6c 100644 --- a/keyboards/preonic/keymaps/zach/zach_common_functions.c +++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c @@ -45,16 +45,7 @@ enum my_keycodes{ TFLIP, TPUT, SHRUG, - PENIS, - BOOBS, - Sil_Pas, - Sil_Usr, - UltiU, - UltiP, - TappyR, - TappyL, RANDIG, - FINGER, // Tap_Dance nums RAI = 0, LOW, From 80c5ada3394c5ad8087df00ef878eb2cbcd87d70 Mon Sep 17 00:00:00 2001 From: Zach Nielsen Date: Thu, 10 Nov 2016 13:47:07 -0800 Subject: [PATCH 005/183] Missed removing a function --- .../keymaps/zach/zach_common_functions.c | 23 ------------------- .../keymaps/zach/zach_common_functions.c | 23 ------------------- 2 files changed, 46 deletions(-) diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c index 1f907e6c..b77f2b24 100644 --- a/keyboards/planck/keymaps/zach/zach_common_functions.c +++ b/keyboards/planck/keymaps/zach/zach_common_functions.c @@ -70,29 +70,6 @@ float unilin[][2] = SONG(UNICODE_LINUX); #ifdef TAP_DANCE_ENABLE #define TAPPING_TERM 200 -uint8_t Lstate = 0, Rstate = 0; -uint32_t Ltimer = 0, Rtimer = 0; -uint32_t Ltimes[3], Rtimes[4]; // Ratio of tap times should be about 1.335 (L/R) -void rhythm_parse(void){ - int L = Ltimes[0] + Ltimes[1] + Ltimes[2]; // Start to end time - int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3]; - if(abs(R-L) > 10){ - tap(KC_N); tap(KC_O); - return; - } else { - L = (L / 3)*100; // Average time per tap * 100 - R = (R / 4); - if(abs(abs(L/R)-133) > 1){ - tap(KC_N); tap(KC_O); - tap(KC_P); tap(KC_E); - return; - } else { - tap(KC_O); tap(KC_K); - return; - } - } -}; - void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap switch(state->count){ // Only turn the layer on once case 1: diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c index 1f907e6c..b77f2b24 100644 --- a/keyboards/preonic/keymaps/zach/zach_common_functions.c +++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c @@ -70,29 +70,6 @@ float unilin[][2] = SONG(UNICODE_LINUX); #ifdef TAP_DANCE_ENABLE #define TAPPING_TERM 200 -uint8_t Lstate = 0, Rstate = 0; -uint32_t Ltimer = 0, Rtimer = 0; -uint32_t Ltimes[3], Rtimes[4]; // Ratio of tap times should be about 1.335 (L/R) -void rhythm_parse(void){ - int L = Ltimes[0] + Ltimes[1] + Ltimes[2]; // Start to end time - int R = Rtimes[0] + Rtimes[1] + Rtimes[2] + Rtimes[3]; - if(abs(R-L) > 10){ - tap(KC_N); tap(KC_O); - return; - } else { - L = (L / 3)*100; // Average time per tap * 100 - R = (R / 4); - if(abs(abs(L/R)-133) > 1){ - tap(KC_N); tap(KC_O); - tap(KC_P); tap(KC_E); - return; - } else { - tap(KC_O); tap(KC_K); - return; - } - } -}; - void dance_raise_press(qk_tap_dance_state_t *state, void *user_data){// Called on each tap switch(state->count){ // Only turn the layer on once case 1: From 18cc05e2f7d09f9faac37ee504bd111e70a52764 Mon Sep 17 00:00:00 2001 From: Rovanion Luckey Date: Tue, 24 Jan 2017 10:02:56 +0100 Subject: [PATCH 006/183] Added instructions for how to build and flash the firmware with teensy_cli. --- keyboards/ergodox/readme.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index ca3eeba5..d7eed8f4 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -1,6 +1,6 @@ # The Easy Way -If you have an ErgoDox EZ, the absolute easiest way for you to customize your firmware is using the [graphical configurator](http://configure.ergodox-ez.com), which uses QMK under the hood. +If you have an ErgoDox EZ, the absolute easiest way for you to customize your firmware is using the [graphical configurator](http://configure.ergodox-ez.com), which uses QMK under the hood. If you can find firmware someone else has made that does what you want, that is the easiest way to customize your ErgoDox. It requires no programming @@ -69,12 +69,13 @@ files. Check them out with: The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). -Linux users need to modify udev rules as described on the Teensy Linux page. -Some distributions provide a binary, maybe called `teensy-loader-cli`). +Linux users need to modify udev rules as described on the Teensy Linux page (which page?). +Some distributions provide a binary, maybe called `teensy-loader-cli`. To flash the firmware: - - Build the firmware with `make keymapname`, for example `make default` + - Build the firmware with `make keymapname`, for example `make default` + - This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g. `ergodox_ez_default.hex` @@ -87,6 +88,15 @@ To flash the firmware: - Click the button in the Teensy app to download the firmware. +To flash with ´teensy-loader-cli´: + + - Build the firmware with `make keymapname`, for example `make default` + + - Run ´teensy_loader_cli --mcu=atmega32u4 -w ergodox_ez_.hex´ + + - Press the Reset button by inserting a paperclip gently into the reset hole + in the top right corder. + ## ErgoDox Infinity The Infinity is two completely independent keyboards, and needs to be flashed From d1fb51976aeef8eeea5975c5bf75b6b1aa649826 Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Mon, 6 Feb 2017 11:53:48 +0100 Subject: [PATCH 007/183] Added new keymap to the Satan GH60 keyboard. Added new keymap `Admiral Strokers` to the Satan keyboard. This is an ISO based layout with tap for brackets/ curly on shft and ctl keys. Furthermore, there is added arrows and media/volume/special/f-keys layer on the TAB button when you hold. --- .../satan/keymaps/admiralStrokers/Makefile | 26 +++ .../satan/keymaps/admiralStrokers/config.h | 96 +++++++++ .../satan/keymaps/admiralStrokers/keymap.c | 189 ++++++++++++++++++ .../satan/keymaps/admiralStrokers/readme.md | 13 ++ 4 files changed, 324 insertions(+) create mode 100644 keyboards/satan/keymaps/admiralStrokers/Makefile create mode 100644 keyboards/satan/keymaps/admiralStrokers/config.h create mode 100644 keyboards/satan/keymaps/admiralStrokers/keymap.c create mode 100644 keyboards/satan/keymaps/admiralStrokers/readme.md diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile new file mode 100644 index 00000000..18d2280d --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/Makefile @@ -0,0 +1,26 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Enables your LED to breathe while your computer is sleeping. +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODEMAP_ENABLE = no # This allows sending unicode symbols using X() in your keymap. +UNICODE_ENABLE = no # Unicode +UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for details on Windows). +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 + +VARIABLE_TRACE = no # Use this to debug changes to variable values +API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/satan/keymaps/admiralStrokers/config.h b/keyboards/satan/keymaps/admiralStrokers/config.h new file mode 100644 index 00000000..d0338fb7 --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/config.h @@ -0,0 +1,96 @@ +/* +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_ADMSTROK +#define CONFIG_H_ADMSTROK + +#include "config_common.h" +#include "../../config.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0003 +#define MANUFACTURER SATAN +#define PRODUCT GH60 +#define DESCRIPTION QMK keyboard firmware for Satan GH60 with WS2812 support + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 } +#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 } +#define UNUSED_PINS + +#define BACKLIGHT_PIN B6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* 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)) \ +) + +/* Backlight configuration */ +#define BACKLIGHT_LEVELS 4 + +/* Underlight configuration */ +#define RGB_DI_PIN E2 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 8 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +#define DISABLE_SPACE_CADET_ROLLOVER + + + +/* + * 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/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c new file mode 100644 index 00000000..487deb08 --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -0,0 +1,189 @@ +#include "satan.h" +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// general keydefs + #define norm 0 // Default layer + #define elev 1 // Layer directional keys + #define supr 2 // F-keys and mediakeys + #define spac 3 + #define FNO1 4 // + #define FNO2 5 // + #define FNO3 6 // + #define MAC0 M(0) // + #define MAC1 M(1) // + #define MAC2 M(2) // + #define MAC3 M(3) // + #define MAC4 M(4) // + #define MAC5 M(5) // + #define MAC6 M(6) // + #define MAC7 M(7) // + #define MAC8 M(8) // + #define MAC9 M(9) // + #define GRAV KC_GRV // + #define MEDI F(FNO1)// + +// General shortenings + #define ESCA KC_ESC + #define MINS KC_MINS + #define EQUL KC_EQL + #define BSPC KC_BSPC + #define DELE KC_DEL + #define LBRC KC_LBRC + #define RBRC KC_RBRC + #define ALTR KC_RALT + #define SCLN KC_SCLN + #define QUOT KC_QUOT + #define NUHS KC_NUHS + #define ENTE KC_ENT + #define NUBS KC_NUBS // Less/ greater sign + #define COMM KC_COMM // Comma + #define FSTO KC_DOT // Full stop + #define SLSH KC_SLSH + #define ALTL KC_LALT + #define GUIL KC_LGUI + #define GUIR KC_RGUI + #define MENO KC_MENU +// The F-row/layer: + #define FK01 KC_F1 + #define FK02 KC_F2 + #define FK03 KC_F3 + #define FK04 KC_F4 + #define FK05 KC_F5 + #define FK06 KC_F6 + #define FK07 KC_F7 + #define FK08 KC_F8 + #define FK09 KC_F9 + #define FK10 KC_F10 + #define FK11 KC_F11 + #define FK12 KC_F12 + #define FK13 KC_F13 + #define FK14 KC_F14 +// Special Actions and Media Keys + #define INSE KC_INS // Insert here + #define HOME KC_HOME // Go to beginning of line + #define ENDI KC_END // go to end of line + #define PSCR KC_PSCR // Print Screen + #define SLCK KC_SLCK // go to end of line + #define PGDN KC_PGDN // go to end of line + #define PGUP KC_PGUP // go to end of line + #define PLPS KC_MPLY // Play/Pause + #define PAUS KC_PAUS // Pause button + #define MUTE KC_MUTE // Mute sound + #define VOLU KC_VOLU // Volume increase + #define VOLD KC_VOLD // Volume decrease + #define MNXT KC_MNXT // next track + #define MPRV KC_MPRV // prev track + #define MSTP KC_MSTP // stop playing + #define MSEL KC_MSEL // Select media (Start playing it) + #define MAIL KC_MAIL // Open default mail app + #define CALC KC_CALC // Open default calculator app + #define MYCM KC_MYCM // Open default file manager + //#define LILO KC_XXXXXX // Reserved for later + //#define LIHI KC_XXXXXX // Reserved for later + + +// dual-role shortcuts + #define DUTB LT(elev, KC_TAB) // `tabs` layer on hold and tab on tap + #define DUSP LT(spac, KC_SPACE) // `spce` layer on hold and space on tap + #define LOCK LGUI(KC_L) // lock computer (win) + +// Space Admiral Strokers + #define SADL MAC0 // Hold for lshift and { on tap + #define SADR MAC1 // Hold for rshift and } on tap + #define CADL MAC2 // Hold for lctrl and [ on tap + #define CADR MAC3 // Hold for rctrl and ] on tap + +// arrow cluster duality bottom right corner + #define ARLF ALT_T(KC_LEFT) // Left arrow + #define ARRT CTL_T(KC_RIGHT)// Right arrow + #define ARUP SFT_T(KC_UP) // Up arrow + #define ARDN GUI_T(KC_DOWN) // Down arrow + +// brackets + #define NOCL RALT(KC_7) // [ + #define NOCR RALT(KC_0) // ] + #define NOPL LSFT(KC_8) // ( + #define NOPR LSFT(KC_9) // ) + #define NOAL KC_NUBS // < + #define NOAR LSFT(KC_NUBS) // > + #define NOBL RALT(KC_8) // [ + #define NOBR RALT(KC_9) // ] + +// increase readability + #define XXXX KC_TRNS + #define DEAD KC_NO + #define SCAN KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB + +[ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped) + GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\ + DUTB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LBRC, RBRC, DEAD,\ + ALTR, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCLN, QUOT, NUHS, ENTE,\ + SADL, NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, COMM, FSTO, SLSH, SADR, DEAD,\ + CADL, ALTL, GUIL, DUSP, GUIR, MEDI, MENO, CADR), + +[ elev ] = KEYMAP( // The f-Row (with f13-14), Special keys and media keys + LOCK, FK01, FK02, FK03, FK04, FK05, FK06, FK07, FK08, FK09, FK10, FK11, FK12, FK13, FK14,\ + XXXX, XXXX, XXXX, XXXX, MAIL, XXXX, XXXX, HOME, INSE, PSCR, SLCK, PAUS, PGUP, XXXX,\ + XXXX, XXXX, XXXX, XXXX, MYCM, XXXX, XXXX, MPRV, PAUS, MNXT, XXXX, XXXX, PGDN, ENDI,\ + XXXX, XXXX, XXXX, XXXX, CALC, XXXX, XXXX, XXXX, MUTE, VOLD, VOLU, XXXX, ARUP, DEAD,\ + XXXX, XXXX, XXXX, PLPS, XXXX, ARLF, ARDN, ARRT), + +[ spac ] = KEYMAP( // The space controls (by pressing space) + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX), + +[ supr ] = KEYMAP( // Additional layer for later use. + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ + XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function + static uint16_t key_timer; + switch(id) { + case 0: //MAC0 - Hold for lshift and { on tap + if (record->event.pressed) { + key_timer = timer_read(); + return MACRO(D(LSFT), END ); + } else { + return (timer_elapsed(key_timer) < 150) ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END); + }; break; + case 1: //MAC1 - Hold for rshift and } on tap + if (record->event.pressed) { + key_timer = timer_read(); + return MACRO(D(RSFT), END ); + } else { + return (timer_elapsed(key_timer) < 150) ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END); + }; break; + case 2: //MAC2 - Hold for lctrl and [ on tap + if (record->event.pressed) { + key_timer = timer_read(); + return MACRO(D(LCTL), END ); + } else {return (timer_elapsed(key_timer) < 150) ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END); + }; break; + case 3: //MAC3 - Hold for rctrl and ] on tap + if (record->event.pressed) { + key_timer = timer_read(); + return MACRO(D(RCTL), END ); + } else { + return (timer_elapsed(key_timer) < 150) ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END); + }; break; + case 4: //MAC4 + if (record->event.pressed) { } else { }; break; + case 5: //MAC5 + if (record->event.pressed) { } else { }; break; + case 6: //MAC6 + if (record->event.pressed) { } else { }; break; + } return MACRO_NONE; +}; +/* + Later use: + void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } + enum function_id { }; + const uint16_t PROGMEM fn_actions[] = { }; + +*/ diff --git a/keyboards/satan/keymaps/admiralStrokers/readme.md b/keyboards/satan/keymaps/admiralStrokers/readme.md new file mode 100644 index 00000000..9b30caf3 --- /dev/null +++ b/keyboards/satan/keymaps/admiralStrokers/readme.md @@ -0,0 +1,13 @@ +# Admiral Strokers keymap +## For the Satan GH60 PCB +The Admiral STN60 is a layout for users of the satan GH60, optimized with some nice features such as mod tap for brackets (Similar to Space Cadett), space mod for F-row/ layer with easy to access media and control keys. The layout below is just as an example and is ISO based, ANSI and JIS layouts will be included later. + +`````` +[ _tmp ] = KEYMAP( // Copy this to get started. SCAN is scandinavian layout specific. +XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\ +XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ +XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, SCAN, XXXX,\ +XXXX, SCAN, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\ +XXXX, XXXX, XXXX, XXXX, SCAN, XXXX, XXXX, XXXX, XXXX),\ + +``` From 5ac0e6e6aee64c9b8fade79aaf22bc839e2c6b47 Mon Sep 17 00:00:00 2001 From: milestogo Date: Thu, 9 Feb 2017 23:23:39 -0800 Subject: [PATCH 008/183] dumber sculpt build --- .../MS-sculpt-mobile/MS-sculpt-mobile.c | 1 + .../MS-sculpt-mobile/MS-sculpt-mobile.h | 48 +++++++ keyboards/handwired/MS-sculpt-mobile/Makefile | 3 + keyboards/handwired/MS-sculpt-mobile/config.h | 99 +++++++++++++ .../MS-sculpt-mobile/keymaps/default/Makefile | 21 +++ .../MS-sculpt-mobile/keymaps/default/config.h | 8 ++ .../MS-sculpt-mobile/keymaps/default/keymap.c | 64 +++++++++ .../keymaps/default/readme.md | 1 + .../keymaps/milestogo/Makefile | 21 +++ .../keymaps/milestogo/config.h | 8 ++ .../keymaps/milestogo/keymap.c | 132 ++++++++++++++++++ .../keymaps/milestogo/readme.md | 1 + .../handwired/MS-sculpt-mobile/readme.md | 58 ++++++++ keyboards/handwired/MS-sculpt-mobile/rules.mk | 43 ++++++ 14 files changed, 508 insertions(+) create mode 100644 keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.c create mode 100644 keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.h create mode 100644 keyboards/handwired/MS-sculpt-mobile/Makefile create mode 100644 keyboards/handwired/MS-sculpt-mobile/config.h create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c create mode 100644 keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md create mode 100644 keyboards/handwired/MS-sculpt-mobile/readme.md create mode 100644 keyboards/handwired/MS-sculpt-mobile/rules.mk 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 00000000..4c735a6c --- /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 new file mode 100644 index 00000000..1583dea6 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/MS-sculpt-mobile.h @@ -0,0 +1,48 @@ +#ifndef MICROSOFT_SCULPT_MOBILE_H +#define MICROSOFT_SCULPT_MOBILE_H + +#include "quantum.h" + + +#define KEYMAP( \ + k7Q, k6O, k6P, k6Q, k5O, k5P, k5Q, k7A, k7B, k7C, k7D, k7E, k7F, k1O, k1K, k1L, \ + k5A, k5K, k5L, k5M, k5N, k5H, k5I, k2A, k2B, k2C, k2D, k5B, k5C, k5J, k2E, \ + k6R, k6D, k6E, k6F, k7I, k7J, k4A, k4B, k4C, k4D, k3A, k3B, k3C, k3D, \ + k0J, k6A, k6B, k6C, k7H, k1A, k1B, k5D, k5E, k5F, k5G, k1C, k7P, k2G, \ + k2P, k7K, k7L, k7M, k7O, k0A, k0B, k0C, k0D, k0E, k0F, k2L, k6G, k1P,\ + k1Q, k4N, k3O,k6N, k3K, k0R, k1M, k6H, k6I, k6J \ +) \ +{ \ + {k0A, k0B, k0C, k0D, k0E, k0F, KC_NO, KC_NO, KC_NO, k0J, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, k0R},\ + {k1A, k1B, k1C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k1K, k1L, k1M, KC_NO, k1O, k1P, k1Q, KC_NO},\ + {k2A, k2B, k2C, k2D, k2E, KC_NO, k2G, KC_NO, KC_NO, KC_NO, KC_NO, k2L, KC_NO, KC_NO, KC_NO, k2P, KC_NO, KC_NO},\ + {k3A, k3B, k3C, k3D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k3K, KC_NO, KC_NO, KC_NO, k3O, KC_NO, KC_NO, KC_NO},\ + {k4A, k4B, k4C, k4D, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k4N, KC_NO,KC_NO, KC_NO, KC_NO},\ + {k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q, KC_NO },\ + {k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6J, KC_NO, KC_NO, KC_NO, k6N, k6O, k6P, k6Q, k6R},\ + {k7A, k7B, k7C, k7D, k7E, k7F, KC_NO, k7H, k7I, k7J, k7K, k7L, k7M, KC_NO, k7O, k7P, k7Q, KC_NO},\ +} + + +#define MATRIX_TESTING_KEYMAP( \ + k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0, k0J, k0K, k0L, k0M, k0N, k0O, k0P, k0Q,\ + k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1, k1J, k1K, k1L, k1M, k1N, k1O, k1P, k1Q,\ + k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2, k2J, k2K, k2L, k2M, k2N, k2O, k2P, k2Q,\ + k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3, k3J, k3K, k3L, k3M, k3N, k3O, k3P, k3Q,\ + k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4, k4J, k4K, k4L, k4M, k4N, k4O, k4P, k4Q,\ + k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q,\ + k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6, k6J, k6K, k6L, k6M, k6N, k6O, k6P, k6Q,\ + k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H, k7I, k7, k7J, k7K, k7L, k7M, k7N, k7O, k7P, k7Q\ +) \ +{ \ + {k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0, k0J, k0K, k0L, k0M, k0N, k0O, k0P, k0Q},\ + {k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1, k1J, k1K, k1L, k1M, k1N, k1O, k1P, k1Q},\ + {k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2I, k2, k2J, k2K, k2L, k2M, k2N, k2O, k2P, k2Q},\ + {k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3I, k3, k3J, k3K, k3L, k3M, k3N, k3O, k3P, k3Q},\ + {k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4I, k4, k4J, k4K, k4L, k4M, k4N, k4O, k4P, k4Q},\ + {k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5, k5J, k5K, k5L, k5M, k5N, k5O, k5P, k5Q},\ + {k6A, k6B, k6C, k6D, k6E, k6F, k6G, k6H, k6I, k6, k6J, k6K, k6L, k6M, k6N, k6O, k6P, k6Q},\ + {k7A, k7B, k7C, k7D, k7E, k7F, k7G, k7H, k7I, k7, k7J, k7K, k7L, k7M, k7N, k7O, k7P, k7Q},\ +} + +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/Makefile b/keyboards/handwired/MS-sculpt-mobile/Makefile new file mode 100644 index 00000000..bd09e588 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif diff --git a/keyboards/handwired/MS-sculpt-mobile/config.h b/keyboards/handwired/MS-sculpt-mobile/config.h new file mode 100644 index 00000000..1ac40f99 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/config.h @@ -0,0 +1,99 @@ +/* +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 Microsoft+abit +#define PRODUCT sculpt mobile +#define DESCRIPTION 6000 + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 18 + +#ifdef ASTAR + + /*0 1 2 3 4 5 6 7 8 */ +#define MATRIX_ROW_PINS {D7, C6, D4, D0, D1, D3, D2, E2} +/* A B C D E F G H I J K L M N O P Q R */ +#define MATRIX_COL_PINS {B4, B5, E6, B7, B6, D6, C7, F7, F6, F4,F5, F1,F0, D5, B0, B1, B2, B3} + +#else + +/* 0 1 2 3 4 5 6 7 */ +#define MATRIX_ROW_PINS { F7,F6,F4,F5,F3,F2,F1,F0} +/* A B C D E F G H I J K L M N O P Q R */ +#define MATRIX_COL_PINS { B7, D0, D1, D2, D3, D4, D5, D6, D7, E0,E1,C1, C0, C3, C2, C5, C4,C6} +#define UNUSED_PINS { B6,B5,B4,B3,B2,B1,B0 } + + +#endif + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* 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 + + +/* + * 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)) \ +) + + +/* + * 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/handwired/MS-sculpt-mobile/keymaps/default/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile new file mode 100644 index 00000000..9d3df596 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# 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 = no # 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/handwired/MS-sculpt-mobile/keymaps/default/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h new file mode 100644 index 00000000..8893d122 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c new file mode 100644 index 00000000..ab09dcdd --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/keymap.c @@ -0,0 +1,64 @@ +#include "MS-sculpt-mobile.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* +* +* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|Mute| +* -------------------------------------------------------------------------------' +* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del | +* -------------------------------------------------------------------------- +* | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | | +* -------------------------------------------------------------------------------' +* | caps | a | s | d | f | g | h | j | k | l | ; | ' | enter |PgUp| +* -------------------------------------------------------------------------------- +* |Lsft | z | x | c | v | b | n | m | , | . | / | Rsft| Up| PgDn| +* --------------------------------------------------------------------------------- +* |Lctl |Lgui |Lalt | Space |Ralt | FN | Rctl |Left|Down|Rght| +* --------------------------------------------------------------------------------- +*/ + +[0] = 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_VOLD, KC_VOLU, KC_MUTE,\ + KC_GRAVE, KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_DEL,\ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,\ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, RSFT(KC_1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +) + +}; +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 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) { + +} diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md new file mode 100644 index 00000000..e67ddc6f --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for microsoft-sculpt-mobile diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile new file mode 100644 index 00000000..9d3df596 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile @@ -0,0 +1,21 @@ +# 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 = no # 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/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h new file mode 100644 index 00000000..8893d122 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c new file mode 100644 index 00000000..a80d5bea --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -0,0 +1,132 @@ +#include "MS-sculpt-mobile.h" + +#define _QWR 0 +#define _CDH 1 +#define _SYM 2 +#define _MOV 3 +#define _NUM 4 +#define _TRAN 9 + +// Shorter spacing +#define XXXX KC_NO +#define ____ KC_TRNS + +// Custom macros + +/* Fn Keys */ +#define TT_SYM MO(_SYM) +#define TO_CDH TG(_CDH) +#define TO_MOV MO(_MOV) +#define TT_NUM MO(_NUM) +#define SSFT ACTION_MODS_ONESHOT(MOD_LSFT) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* QWERTY +* +* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|Mute| +* -------------------------------------------------------------------------------' +* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del | +* -------------------------------------------------------------------------- +* | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | | +* -------------------------------------------------------------------------------' +* | caps | a | s | d | f | g | h | j | k | l | ; | ' | enter |PgUp| +* -------------------------------------------------------------------------------- +* |Lsft | z | x | c | v | b | n | m | , | . | / | Rsft| Up| PgDn| +* --------------------------------------------------------------------------------- +* |Lctl |Lgui |Lalt | Space |Ralt | FN | Rctl |Left|Down|Rght| +* --------------------------------------------------------------------------------- +*/ + +[_QWR] = 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_VOLD, KC_VOLU, TO_CDH,\ + KC_ESC, KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_DEL,\ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\ + TT_SYM, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,\ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RGUI,TT_SYM,KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT +), + +[_CDH] = KEYMAP (\ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + KC_ESC, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, ____, ____, ____,\ + TO_MOV, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, ____,\ + KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, ____,\ + ____, ____, ____ , TT_SYM, ____, ____, ____, ____, ____, ____ + +), + +[_SYM] = KEYMAP (\ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC, ____, KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS, ____, ____, ____,\ + ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, ____, KC_ASTR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ + ____, ____, ____, ____, KC_TILDE, KC_PIPE, KC_DLR, ____, ____, ____, ____, ____, ____, ____,\ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ +), + +[_MOV] = KEYMAP (\ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, ____, KC_LEFT,KC_DOWN, KC_UP, KC_RIGHT, ____,____,____,\ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ +), + +[_TRAN] = KEYMAP (\ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ +) +}; + + +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; + + + case KC_N: + if(keyboard_report->mods & MOD_BIT(KC_LGUI) ) { + clear_keyboard_but_mods(); + register_code(KC_V); + } + break; + + + } + return MACRO_NONE; +}; + + +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) { + +} diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md new file mode 100644 index 00000000..96ee0e77 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/readme.md @@ -0,0 +1 @@ +# A more programmer oriented keymap for microsoft-sculpt-mobile diff --git a/keyboards/handwired/MS-sculpt-mobile/readme.md b/keyboards/handwired/MS-sculpt-mobile/readme.md new file mode 100644 index 00000000..58029b50 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/readme.md @@ -0,0 +1,58 @@ + +This is a way to take a Microsoft ergonomic bluetooth keyboard, and make it +into a hard-wired keyboard running QMK. + +The keyboard is known under several different names: +Mobile Bluetooth 5000, Mobile 6000, Sculpt mobile, and Asus rebranded + +I had a stack of them,since they're cheap on ebay, travel well, and are just ergo enough. + +The ribbon cable is 1mm pitch, which is hard to hand solder. I bought a cheap set of +"pitch adapter" boards https://www.amazon.com/Double-Sided-0-4mm-1-0-Adapter-60mmx38mm/dp/B00OK42118 + +Cut the original ribbon cable sockets off the bluetooth board using a razor, they're hard to desolder. +They're also allow the cable to be inserted on top or bottom. + +If I was going to do it again, I'd make the MCU connection come out the top of the keyboard +and avoid the wires dangling out the bottom. + +As I was debugging the matrix, I started to get random failures. In desparation I tried a second MCU, +but had the same problems. It turns out that the ribbon cable connections can get worn. Shave a +half millimeter off the end of the ribbon cable & the errors go away. + +My method for discovering the matrix was to set up a KEYMAP macro that included all pins. +See MATRIX_TESTING_KEYMAP if you need it. Then set up a keymap that has all printable symbols +in the first 4 rows. test each key & record output. Then switch the printable symbols to the +bottom 4 rows & repeat. This was enough to show the matrix. + + +The full original keymap for the sculpt is + A B C D E F G H ---> +0 b n m , . / +1 g h " +2 7 8 9 0 Del PgUp +3 p [ ] \ +4 y u i o +5 ~ - += j k l ; 5 +6 a s d q w e, Up left +7 F7 F8 F9 F10 F11 F12 f + +-----> I J K L M N O P Q R +0 Caps FN +1 Vol+ mute Rctl vol- pgdn LCTL +2 Rshift LShift +3 Ralt LAlt +4 LGUI +5 6 bakspc 1 2 3 4 F4 F5 F6 +6 Down right spc F1 F2 F3 tab +7 r t z x c v enter Esc + +This works with 18 cols + 8 rows on a Teensy++, or Arm based Teensy. + +The Astar mini has all pins exposed , so you can do 18x8 +If you want a speaker, LEDs &etc, you'll need to free up a pin. I recommend joining columns +R and L to the same pin. + +Building - edit rules.mk to set ASTAR=1 or comment it out for teensy2++ + + diff --git a/keyboards/handwired/MS-sculpt-mobile/rules.mk b/keyboards/handwired/MS-sculpt-mobile/rules.mk new file mode 100644 index 00000000..cb9d5813 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/rules.mk @@ -0,0 +1,43 @@ +#CFLAGS=-D ASTAR + +ifdef ASTAR + OPT_DEFS += -DBOOTLOADER_SIZE=4096 + MCU = atmega32u4 + OPT_DEFS += -DCATERINA_BOOTLOADER + SCULPT_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done ; \ + avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB) + +else + MCU = at90usb1286 + OPT_DEFS += -DBOOTLOADER_SIZE=2048 + SCULPT_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex +endif + +F_CPU = 16000000 +ARCH = AVR8 +F_USB = $(F_CPU) +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= 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 +AUDIO_ENABLE ?= no # Audio output on port C6 + + +USB ?= /dev/cu.usbmodem1421 + + +upload: build + $(SCULPT_UPLOAD_COMMAND) From 274b1c53fbc8c0838305e7837c4594d67431f2b6 Mon Sep 17 00:00:00 2001 From: milestogo Date: Sat, 11 Feb 2017 22:10:44 -0800 Subject: [PATCH 009/183] keymap update --- .../keymaps/milestogo/Makefile | 2 +- .../keymaps/milestogo/keymap.c | 34 +++++++++++++------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile index 9d3df596..a82d80de 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile @@ -17,5 +17,5 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR - include ../../../../Makefile + include ../../../../../Makefile endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index a80d5bea..0551fbde 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -16,7 +16,7 @@ /* Fn Keys */ #define TT_SYM MO(_SYM) #define TO_CDH TG(_CDH) -#define TO_MOV MO(_MOV) +#define TT_MOV KC_FN2 #define TT_NUM MO(_NUM) #define SSFT ACTION_MODS_ONESHOT(MOD_LSFT) @@ -42,18 +42,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_VOLD, KC_VOLU, TO_CDH,\ KC_ESC, KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_DEL,\ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\ - TT_SYM, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\ + TT_MOV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,\ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RGUI,TT_SYM,KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT + KC_LCTL, KC_LGUI, KC_LALT, KC_FN1, KC_RGUI,TT_SYM,KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT ), [_CDH] = KEYMAP (\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ KC_ESC, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, ____, ____, ____,\ - TO_MOV, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, ____,\ - KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, ____,\ - ____, ____, ____ , TT_SYM, ____, ____, ____, ____, ____, ____ + TT_MOV, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, ____,\ + KC_LSFT, KC_Z, KC_X, KC_C, M(1), KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, ____,\ + ____, ____, ____ , KC_FN1, ____, ____, ____, ____, ____, ____ ), @@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, ____, KC_LEFT,KC_DOWN, KC_UP, KC_RIGHT, ____,____,____,\ + ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, KC_LEFT,KC_DOWN, KC_UP, KC_RIGHT, ____, ____,____,____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), @@ -87,6 +87,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM fn_actions[] = { +[1] = ACTION_LAYER_TAP_KEY(_SYM,KC_SPACE), +[2] = ACTION_LAYER_TAP_KEY(_MOV,KC_BSPC), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -102,11 +104,21 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; - case KC_N: + case 1 : if(keyboard_report->mods & MOD_BIT(KC_LGUI) ) { - clear_keyboard_but_mods(); - register_code(KC_V); - } + if (record->event.pressed) { + clear_keyboard_but_mods(); + register_code(KC_V); + } else { + unregister_code(KC_V); + } + }else { + if (record->event.pressed) { + register_code(KC_D); + } else { + unregister_code(KC_D); + } + } break; From 8d0fdf10086a0e8a1615f0521fccf1f5a2806497 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 12 Feb 2017 11:29:42 -0500 Subject: [PATCH 010/183] adds soft pwm for non-timed ports --- keyboards/planck/rules.mk | 4 +-- keyboards/preonic/rules.mk | 4 +-- quantum/quantum.c | 59 +++++++++++++++++++++++++++++--------- quantum/quantum.h | 1 + 4 files changed, 50 insertions(+), 18 deletions(-) diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk index 4423d422..6776062f 100644 --- a/keyboards/planck/rules.mk +++ b/keyboards/planck/rules.mk @@ -56,13 +56,13 @@ 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 ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality MIDI_ENABLE ?= yes # 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. -API_SYSEX_ENABLE = yes +API_SYSEX_ENABLE = no # 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/preonic/rules.mk b/keyboards/preonic/rules.mk index 62473e35..6be5b55b 100644 --- a/keyboards/preonic/rules.mk +++ b/keyboards/preonic/rules.mk @@ -58,13 +58,13 @@ 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 ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality MIDI_ENABLE ?= yes # 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. -API_SYSEX_ENABLE ?= yes +API_SYSEX_ENABLE ?= no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/quantum/quantum.c b/quantum/quantum.c index 45ea8cb7..95f06d95 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -7,6 +7,9 @@ #define TAPPING_TERM 200 #endif +#include "backlight.h" +extern backlight_config_t backlight_config; + static void do_code16 (uint16_t code, void (*f) (uint8_t)) { switch (code) { case QK_MODS ... QK_MODS_MAX: @@ -577,6 +580,10 @@ void matrix_scan_quantum() { matrix_scan_combo(); #endif + #if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_PIN) + backlight_task(); + #endif + matrix_scan_kb(); } @@ -644,13 +651,13 @@ __attribute__ ((weak)) void backlight_set(uint8_t level) { // Prevent backlight blink on lowest level - #if BACKLIGHT_ON_STATE == 0 - // PORTx &= ~n - _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); - #else - // PORTx |= n - _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); - #endif + // #if BACKLIGHT_ON_STATE == 0 + // // PORTx &= ~n + // _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); + // #else + // // PORTx |= n + // _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); + // #endif if ( level == 0 ) { #ifndef NO_BACKLIGHT_CLOCK @@ -658,13 +665,13 @@ void backlight_set(uint8_t level) TCCR1A &= ~(_BV(COM1x1)); OCR1x = 0x0; #else - #if BACKLIGHT_ON_STATE == 0 - // PORTx |= n - _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); - #else - // PORTx &= ~n - _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); - #endif + // #if BACKLIGHT_ON_STATE == 0 + // // PORTx |= n + // _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); + // #else + // // PORTx &= ~n + // _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); + // #endif #endif } #ifndef NO_BACKLIGHT_CLOCK @@ -687,6 +694,30 @@ void backlight_set(uint8_t level) #endif } +uint8_t backlight_tick = 0; + +void backlight_task(void) { + #ifdef NO_BACKLIGHT_CLOCK + if ((0xFFFF >> ((BACKLIGHT_LEVELS - backlight_config.level) * ((BACKLIGHT_LEVELS + 1) / 2))) & (1 << backlight_tick)) { + #if BACKLIGHT_ON_STATE == 0 + // PORTx &= ~n + _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); + #else + // PORTx |= n + _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); + #endif + } else { + #if BACKLIGHT_ON_STATE == 0 + // PORTx |= n + _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); + #else + // PORTx &= ~n + _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); + #endif + } + backlight_tick = (backlight_tick + 1) % 16; + #endif +} #ifdef BACKLIGHT_BREATHING diff --git a/quantum/quantum.h b/quantum/quantum.h index 18f07218..2470d8c7 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -95,6 +95,7 @@ void unregister_code16 (uint16_t code); #ifdef BACKLIGHT_ENABLE void backlight_init_ports(void); +void backlight_task(void); #ifdef BACKLIGHT_BREATHING void breathing_enable(void); From 64f9779fe54facecdef9d1a6a7c1d893f79ca20e Mon Sep 17 00:00:00 2001 From: lambdalisue Date: Tue, 14 Feb 2017 14:12:54 +0900 Subject: [PATCH 011/183] Add TAPPING_FORCE_HOLD to regulate behaviour See #889 for the detail. --- doc/keymap.md | 3 +++ tmk_core/common/action_tapping.c | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/keymap.md b/doc/keymap.md index 6f2a663f..2b0d2cd9 100644 --- a/doc/keymap.md +++ b/doc/keymap.md @@ -549,6 +549,9 @@ Layer switching with tap key: [dual_role]: http://en.wikipedia.org/wiki/Modifier_key#Dual-role_keys +When user hold a key after tap, it repeat the tapped key rather to hold a modifier key. +If you prefer to hold a modifier instead, define `TAPPING_FORCE_HOLD` in `config.h`. +See https://github.com/qmk/qmk_firmware/issues/889 for the detail. ### 4.2 Tap Toggle This is a feature to assign both toggle layer and momentary switch layer action to just same one physical key. It works as momentary layer switch when holding a key but toggle switch with several taps. diff --git a/tmk_core/common/action_tapping.c b/tmk_core/common/action_tapping.c index e16e11be..66044d8b 100644 --- a/tmk_core/common/action_tapping.c +++ b/tmk_core/common/action_tapping.c @@ -228,6 +228,7 @@ bool process_tapping(keyrecord_t *keyp) if (WITHIN_TAPPING_TERM(event)) { if (event.pressed) { if (IS_TAPPING_KEY(event.key)) { +#ifndef TAPPING_FORCE_HOLD if (!tapping_key.tap.interrupted && tapping_key.tap.count > 0) { // sequential tap. keyp->tap = tapping_key.tap; @@ -237,11 +238,11 @@ bool process_tapping(keyrecord_t *keyp) tapping_key = *keyp; debug_tapping_key(); return true; - } else { - // FIX: start new tap again - tapping_key = *keyp; - return true; } +#endif + // FIX: start new tap again + tapping_key = *keyp; + return true; } else if (is_tap_key(event.key)) { // Sequential tap can be interfered with other tap key. debug("Tapping: Start with interfering other tap.\n"); From 334edc3c7d594674a44bc66e70fb08e45b27e644 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Thu, 16 Feb 2017 14:32:24 -0500 Subject: [PATCH 012/183] Add smt keymap for Let's Split (based on serial) --- keyboards/lets_split/keymaps/smt/config.h | 34 ++++ keyboards/lets_split/keymaps/smt/keymap.c | 213 ++++++++++++++++++++++ 2 files changed, 247 insertions(+) create mode 100644 keyboards/lets_split/keymaps/smt/config.h create mode 100644 keyboards/lets_split/keymaps/smt/keymap.c diff --git a/keyboards/lets_split/keymaps/smt/config.h b/keyboards/lets_split/keymaps/smt/config.h new file mode 100644 index 00000000..ba271d1a --- /dev/null +++ b/keyboards/lets_split/keymaps/smt/config.h @@ -0,0 +1,34 @@ +/* +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 . +*/ + + +#define USE_SERIAL + +#define MASTER_LEFT +// #define _MASTER_RIGHT +// #define EE_HANDS + + +#ifdef SUBPROJECT_rev1 + #include "../../rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "../../rev2/config.h" +#endif +#ifdef SUBPROJECT_rev2fliphalf + #include "../../rev2fliphalf/config.h" +#endif diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c new file mode 100644 index 00000000..5ba5417a --- /dev/null +++ b/keyboards/lets_split/keymaps/smt/keymap.c @@ -0,0 +1,213 @@ +#include "lets_split.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. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + ALL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \ + MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ + ALL_T(KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \ + MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | - | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ + ALL_T(KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, \ + SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT), \ + MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ + KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + KC_DLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_HOME, KC_PGUP, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_END, KC_PGDN, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | _ | ? | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | - | / | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ + _______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Reset| + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + 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; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} From 33bc4c070c2d592ba706ba89ff6786699bc9133f Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Thu, 16 Feb 2017 14:32:46 -0500 Subject: [PATCH 013/183] Update smt Planck keymap --- keyboards/planck/keymaps/smt/keymap.c | 98 +++++++++++++++++---------- 1 file changed, 64 insertions(+), 34 deletions(-) diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c index 51e5a40b..afc82b49 100644 --- a/keyboards/planck/keymaps/smt/keymap.c +++ b/keyboards/planck/keymaps/smt/keymap.c @@ -11,15 +11,17 @@ extern keymap_config_t keymap_config; // 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 _DVORAK 0 -#define _QWERTY 1 -#define _LOWER 2 -#define _RAISE 3 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 #define _ADJUST 16 enum planck_keycodes { - DVORAK = SAFE_RANGE, - QWERTY, + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, LOWER, RAISE, BACKLIT @@ -31,40 +33,58 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Dvorak +/* Qwerty * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | - | + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DVORAK] = { - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, - {SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, - {ALL_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +[_QWERTY] = { + {ALL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, + {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -/* Qwerty +/* Colemak * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * | Esc | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QWERTY] = { - {_______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {_______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +[_COLEMAK] = { + {ALL_T(KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, + {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | - | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {ALL_T(KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, + {SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, + {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower @@ -107,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Dvorak|Qwerty| | | | + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -116,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, DVORAK, QWERTY, _______, _______, _______}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -128,6 +148,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); @@ -142,21 +163,30 @@ void persistant_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case DVORAK: + case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); #endif - persistant_default_layer_set(1UL<<_DVORAK); + persistant_default_layer_set(1UL<<_QWERTY); } return false; break; - case QWERTY: + case COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + PLAY_NOTE_ARRAY(tone_colemak, false, 0); #endif - persistant_default_layer_set(1UL<<_QWERTY); + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); } return false; break; From cbef63d8fa5b7a55de24b7fd6cb147bbecfee160 Mon Sep 17 00:00:00 2001 From: skullY Date: Thu, 16 Feb 2017 13:27:32 -0800 Subject: [PATCH 014/183] Rework the clueboard keymaps a bit. --- keyboards/clueboard/keymaps/caps_fn/keymap.c | 83 ++++++++++++++++ .../clueboard/keymaps/caps_fn/layout.png | Bin 0 -> 112289 bytes keyboards/clueboard/keymaps/caps_fn/readme.md | 15 +++ keyboards/clueboard/keymaps/default/keymap.c | 93 +++++++----------- .../clueboard/keymaps/default/layout.png | Bin 0 -> 112442 bytes keyboards/clueboard/keymaps/default/readme.md | 17 ++++ .../clueboard/keymaps/mac_optimized/keymap.c | 83 ++++++++++++++++ .../keymaps/mac_optimized/layout.png | Bin 0 -> 107368 bytes .../clueboard/keymaps/mac_optimized/readme.md | 15 +++ keyboards/clueboard/keymaps/max/Makefile | 49 --------- keyboards/clueboard/keymaps/max/keymap.c | 85 ---------------- .../clueboard/keymaps/maximised/keymap.c | 47 +++++++++ .../clueboard/keymaps/maximised/layout.png | Bin 0 -> 111157 bytes .../clueboard/keymaps/maximised/readme.md | 14 +++ .../clueboard/keymaps/mouse_keys/keymap.c | 83 ++++++++++++++++ .../clueboard/keymaps/mouse_keys/layout.png | Bin 0 -> 143816 bytes .../clueboard/keymaps/mouse_keys/readme.md | 16 +++ keyboards/clueboard/keymaps/shift_fn/keymap.c | 83 ++++++++++++++++ .../clueboard/keymaps/shift_fn/layout.png | Bin 0 -> 107234 bytes .../clueboard/keymaps/shift_fn/readme.md | 17 ++++ keyboards/clueboard/keymaps/skully/keymap.c | 90 ++++++----------- keyboards/clueboard/keymaps/skully/layout.png | Bin 0 -> 111676 bytes keyboards/clueboard/keymaps/skully/readme.md | 11 +++ .../clueboard/keymaps/unix_optimized/keymap.c | 83 ++++++++++++++++ .../keymaps/unix_optimized/layout.png | Bin 0 -> 111171 bytes .../keymaps/unix_optimized/readme.md | 15 +++ .../clueboard/keymaps/win_optimized/keymap.c | 83 ++++++++++++++++ .../keymaps/win_optimized/layout.png | Bin 0 -> 110405 bytes .../clueboard/keymaps/win_optimized/readme.md | 17 ++++ keyboards/clueboard/rules.mk | 10 +- 30 files changed, 752 insertions(+), 257 deletions(-) create mode 100644 keyboards/clueboard/keymaps/caps_fn/keymap.c create mode 100644 keyboards/clueboard/keymaps/caps_fn/layout.png create mode 100644 keyboards/clueboard/keymaps/caps_fn/readme.md create mode 100644 keyboards/clueboard/keymaps/default/layout.png create mode 100644 keyboards/clueboard/keymaps/default/readme.md create mode 100644 keyboards/clueboard/keymaps/mac_optimized/keymap.c create mode 100644 keyboards/clueboard/keymaps/mac_optimized/layout.png create mode 100644 keyboards/clueboard/keymaps/mac_optimized/readme.md delete mode 100644 keyboards/clueboard/keymaps/max/Makefile delete mode 100644 keyboards/clueboard/keymaps/max/keymap.c create mode 100644 keyboards/clueboard/keymaps/maximised/keymap.c create mode 100644 keyboards/clueboard/keymaps/maximised/layout.png create mode 100644 keyboards/clueboard/keymaps/maximised/readme.md create mode 100644 keyboards/clueboard/keymaps/mouse_keys/keymap.c create mode 100644 keyboards/clueboard/keymaps/mouse_keys/layout.png create mode 100644 keyboards/clueboard/keymaps/mouse_keys/readme.md create mode 100644 keyboards/clueboard/keymaps/shift_fn/keymap.c create mode 100644 keyboards/clueboard/keymaps/shift_fn/layout.png create mode 100644 keyboards/clueboard/keymaps/shift_fn/readme.md create mode 100644 keyboards/clueboard/keymaps/skully/layout.png create mode 100644 keyboards/clueboard/keymaps/unix_optimized/keymap.c create mode 100644 keyboards/clueboard/keymaps/unix_optimized/layout.png create mode 100644 keyboards/clueboard/keymaps/unix_optimized/readme.md create mode 100644 keyboards/clueboard/keymaps/win_optimized/keymap.c create mode 100644 keyboards/clueboard/keymaps/win_optimized/layout.png create mode 100644 keyboards/clueboard/keymaps/win_optimized/readme.md diff --git a/keyboards/clueboard/keymaps/caps_fn/keymap.c b/keyboards/clueboard/keymaps/caps_fn/keymap.c new file mode 100644 index 00000000..37f00e8d --- /dev/null +++ b/keyboards/clueboard/keymaps/caps_fn/keymap.c @@ -0,0 +1,83 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = KEYMAP( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \ + _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(0), // Calls action_function() +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t mods_pressed; + + 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) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} diff --git a/keyboards/clueboard/keymaps/caps_fn/layout.png b/keyboards/clueboard/keymaps/caps_fn/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bd57adbbc393a2884ca59f277a130adae1f1f7 GIT binary patch literal 112289 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

@_aDDf~*xw=-_w2}YSC@@&D6W^R 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 literal 0 HcmV?d00001 diff --git a/keyboards/clueboard/keymaps/caps_fn/readme.md b/keyboards/clueboard/keymaps/caps_fn/readme.md new file mode 100644 index 00000000..74ad01fc --- /dev/null +++ b/keyboards/clueboard/keymaps/caps_fn/readme.md @@ -0,0 +1,15 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +![Clueboard Layout Image](layout.png) + +# Caps Fn Layout + +This is the default layout except that Caps Lock acts like Caps Lock when +tapped but Fn when held. diff --git a/keyboards/clueboard/keymaps/default/keymap.c b/keyboards/clueboard/keymaps/default/keymap.c index 01f158bf..37f00e8d 100644 --- a/keyboards/clueboard/keymaps/default/keymap.c +++ b/keyboards/clueboard/keymaps/default/keymap.c @@ -1,7 +1,8 @@ #include "clueboard.h" -// Used for SHIFT_ESC -#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) +// 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. @@ -9,21 +10,10 @@ // entirely and just use numbers. #define _BL 0 #define _FL 1 -#define _RS 2 +#define _CL 2 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _BL: (Base Layer) Default Layer - * ,--------------------------------------------------------------------------. ,----. - * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS| |PGUP| - * |--------------------------------------------------------------------------| |----| - * | Tab| Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |PGDN| - * |--------------------------------------------------------------------------| `----' - * |Capslck| A| S| D| F| G| H| J| K| L| ;| '| # | Ent| - * |-----------------------------------------------------------------------------. - * |Shift| BS| Z| X| C| V| B| N| M| ,| .| /| BS|Shift| UP| - * |------------------------------------------------------------------------|----|----. - * | Ctrl| Gui| Alt| MHen| Space| Space| Hen| Alt| Ctrl| _FL|LEFT|DOWN|RGHT| - * `----------------------------------------------------------------------------------' + /* 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, \ @@ -33,61 +23,44 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), /* Keymap _FL: Function Layer - * ,--------------------------------------------------------------------------. ,----. - * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12| | Del| |BLIN| - * |--------------------------------------------------------------------------| |----| - * | | | | | | | | |PScr|SLck|Paus| | | | |BLDE| - * |--------------------------------------------------------------------------| `----' - * | | | _RS| | | | | | | | | | | | - * |-----------------------------------------------------------------------------. - * | | | | | | | | | | | | | | |PGUP| - * |------------------------------------------------------------------------|----|----. - * | | | | | | | | | | _FL|HOME|PGDN| END| - * `----------------------------------------------------------------------------------' */ [_FL] = KEYMAP( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, BL_STEP, \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_HOME, KC_PGDN, KC_END), + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \ + _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), - /* Keymap _RS: Reset layer - * ,--------------------------------------------------------------------------. ,----. - * | | | | | | | | | | | | | | | | | | - * |--------------------------------------------------------------------------| |----| - * | | | | |RESET| | | | | | | | | | | | - * |--------------------------------------------------------------------------| `----' - * | | | _RS| | | | | | | | | | | | - * |-----------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |------------------------------------------------------------------------|----|----. - * | | | | | | | | | | _FL| | | | - * `----------------------------------------------------------------------------------' + /* Keymap _CL: Control layer */ -[_RS] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, \ - KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), RGB_SAI, \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI), -}; - -enum function_id { - SHIFT_ESC, +[_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(SHIFT_ESC), + [0] = ACTION_FUNCTION(0), // Calls action_function() }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t shift_esc_shift_mask; + static uint8_t mods_pressed; + switch (id) { - case SHIFT_ESC: - shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; + 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) { - if (shift_esc_shift_mask) { + /* The key is being pressed. + */ + if (mods_pressed) { add_key(KC_GRV); send_keyboard_report(); } else { @@ -95,7 +68,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { send_keyboard_report(); } } else { - if (shift_esc_shift_mask) { + /* The key is being released. + */ + if (mods_pressed) { del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/default/layout.png b/keyboards/clueboard/keymaps/default/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..cd318163e4333663493d1a03dadad609d85a0e7b GIT binary patch literal 112442 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

ZOds|l)Lx98M%x-mEI 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.pressed) { + /* The key is being pressed. + */ + if (mods_pressed) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} diff --git a/keyboards/clueboard/keymaps/mac_optimized/layout.png b/keyboards/clueboard/keymaps/mac_optimized/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..e84ba54ea9382e4a109db72653d792ad66e277d2 GIT binary patch literal 107368 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

}5!Ge23|3R%&YLBOF<_<+2V4 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

m7K_8iOzqN`G zd#m~?f=SWZABOICmt~2@@IX30KYW%I!wg?RchH*7=^)>|Tq8vGd#&F2`I`XpiX)D! z#x{WQh>(|yWA+lRF`fdq3bHciWzOz0Gh%GQ|BNh!ILMM`NO!M@7?-i%Ue6fuq1&z* zbz{StYKO7b8veUQ12&cT-n20i)Ev+6GVNmYvT?_gN)KpC+fXxF?7zG2ze@%~FHofKyL*(IUCl@0 zus5L@nGytRn&3cG>FzUidRz6=A^K(Ct=2LE$DrK0UJrZph7}9(Hi&t>DYKh8;;T zkLVfIKG|D~I-S9PHy?kOqp9nqM#x-)9SGN!ppL&)5qJdVGMLXf`e_?;h2oT)*h5TB zRe><1uLyz{KR+0JlXfD-bUU4uv<$O^_vQhYv2vd(rPomP0sWz=&Igt+vkrQD@sE1$ zOL4wtt-mVtG0}>tGcab9x8$AU9=l)Q2F!Ujtr0;1I72l&)o76C)gu}<;d9umI5t5o zJ&=+8>S)hF{?LiAAGx2h)&dgu_pC2lQExU*$Tg(+VMO`}FY@C%HfZGmw81BTw2%|T z45%25w}xx~Zu5V;aXc5Opw#mG!v2^y8DYTlW+{!x|L$zyvrUMaQUyab6;gjFv>JHe z`7oL}?%zg7k~1EtU+of+>4X2!_w>N?wN|^ze|D2JP>+&Nb@EI7K1as+f#>N*RX_jH z6>7j0)wG`SJmDYJTm&vZrh5}j{+PlUB0%-sB>EZs_f4oICpt)aaOYrFbw!Mv@f3HN z-|w{rE^~gsZ4Uhuv1gC4pb56>VL>xQ*ctj_%N(J{al66+(^#~dyAgcHTe5NKC!C`G zpdhREz{qS%D|jB(jigfbnSpc8F%mJHUxA1@e|>R4rX5LJU4awws-SA^i)2ZWA<8Y_imr*{22qygY>H{5Iz8?c>{Ji-(s(6`(XUZD}-@IQ}BNg8X|IHidK?_Cy-GT`_~lW79XB7HBb1G0 zqHpHyytbI^pd0=k9s><^>w7bAA>OR;a~7w361Xk(+e=wdu5{Ops?l$3Rmg1--qaZ< zo-Pw=5>yO0`S&}n!Xoo;D0@z`GS#7^A5a96_~};4@rsaaaE$y^ zU;bp4K9)ZslBM>m+x_LdO2cW|(T#>~VA>8j`2ws-K=u7Yd302=4Rq6Bkl9vg z`O%feoz>3Py!Qel!zR4yx4QJIanBw`1Kfs)BSe@NEj*aJCfN7A9HCiuGUq2-ZQAnz zQ}CH%h)gwuYN}ix*EVh4aky1N26*_i?zfH@$=MN~ZqvW<@3#;llG&ofFJrl1EV~&p z=+iglf)MPo`If^D_t<%0>Fl5I^R60vFY7bj`YP*%dqtq*panL`pO2%H=4$BMLyhIiPxcyR+Wjy zI1MxvW~z~}rS*p3@mhX_z4H>JgH`P5^SfNf4_#-CY6m)>gwPmo`gKzt_*_M%+Zi}k z%hoiennQ{;Pf#=F{ttU^9aLAhZ4Z7xNC*(zo#4RAD16d2ykcGmEN~fBvAZDzMOp$RZ1EM@_7vtkY<-OEz}~_oUOlS=ijiu@ zEs=klTDC^1fEtuaTTN{5C89Y&Anx&Qlco6U3x$7fH&@Hc9Ov5bUzNf-66kBs^&CxG zq;YT24p!mky;<a#6b)JJt3Gi3m}KT!z_*HgaK~Hh#496RQeL9ov6a#L2r59rsEWw(P%S$61|v z{IuU#gC)@>D}Tkgt0aYOb$n}mRkuZZzJPT_K}(6ObC(pvVzA|y!_zTt=F?F7Qu*Ll z%cqr94KwJ+p4)egI}%%AllL{ZKU+_M{Kb`2XFYV#xZ)rl_qW*w41cbFL+&y0t(4<&!fJIN4_**|=RS^*gYLoZ)% zVcs~s)!UTmU+fO}{#yYIS+rthSAy{=a>>4EC!^hhVe&a=qAq%a%sS-)2Ml9Nw7 zFR`XKQ9x!>%G+6#xRv?*o^G6HnaaQCe`?Vk?dUbAU2-<>m_()C z&JeEtKx^n;wbA|}ni*QrW;o?A*XF+}BOUoYhCNv1#M?sBlYOZqY-r;5kr_}!`ZDsz(dP5h-IPvDYAWVjguj{m`G zxfOcHvm58t+X?&GzN)3@T|p&Bs6Fx2ZzJlUPvNXy-RFcD!i7FXrNa+btN%GB(Xy%@ z`I-k2iq)PsOFn>;4$8c+wS)q@q=fV67c|9@zK~TnqdH{6gAkWc!^r0ad$WYT@Hh2tdGs0|C|p0!qaQ>t(s_s3 zG+*My>LXZ<;6On?Np?s%&)qgE(zb4GR<>0lC`;DKDjO>4O0(X~(l|>VZE6VZ|&$QJgFa!}X1Umt~|cg$=wMBcRHIqXd6dbpnPU740h zWXES8uj7&6N*RvbIS9`NF9cMhm$dLse93)k_cFLOdtWP_5h0Aa`+M9*-GrdtbkIT1 zCLb?AvgCU&d?in9QmFeS-|NE|$&p*4ADjccKv+2DRC9QJJ&A<-rs1{wckn??f;7fO z`|$NLU$Nc#-9;7;v%Jk7QEbT9!h7)q9>|B^sfQ!=*ByauEj#$dYf&@O9lxCq-kL=- zWwiVM4x%>_KEset^%%y;VF!$WnSD^8ByjCzuMMAa&kH}E+iskj#9Pjc7o}lf{J1FU zBjLSp5jybOPHEs&3Fdm=37+?3T)OiP#Foknxq$e44|$Vq`QOOGK2N%b9;{+DP!aIl z@$So$7hhn2s)sy5EOhu(nHV!w&yEN2`QB6XiC$;Uqp?0+4!Qs%rhOAC9G$8SZDd_V z_zp46D^#3SS8;l>Wk(Ty8rJ6D;UsrJ14(xxSU0`kzjVvzX=t^kXMQDBRmf@gs=Wz* zec6jIKA)aRWQBXRFlQz2?0T%oFlJ1av9~vx^>oc(mo+wM{}qctT+YtB3;FLD+6|1< zXz9+P83b0$qgfOJgFzfs>i339+wC;MoDSYK;yGOI$KzI@RkYX!2~iC$0~Rm$YXX7| zP6mtq;x(+Pght+fc;gCxQMl4KsSy~k0CWytt5g$rxYA_M zS9;0xsh{%JhV&ipQC9BWqZT*lSCW+RM#P)>!8j3(yGdrL?_aT?qOpi~F@;km7KQq#Z_Aq}t)gZklvki2~5KtXuw>f*VlGYQ&*!9ywC^`(F#;CE>v zQD;)|N`2l&)I-Ud6>C;eexL62u8eSx{18{`H;DxQeY%HYw(bIYOtVqOwh=9IxXEOS zl(j}2efz1rxNhe&9_Q+}^W$qw@;33TtBp^eC!gu@)R{(z<+yXO?QVGMj|U_Woc%&B zYfJQJ6z;~U5#X`|tx9G}3AaN|@oia}x%BEROoCYlB&lYRgcp{D^aJZ03NQT~Xv6Pa zG(gvy;r4o-z~_UP2-2NKM2_lpE33^3R1o~L8p(s{w(FZvL5ALW>dgpVLeNI^jbH0 z#5%XO(EQ9KTB{X9*%3=Br2*Hy#(0Vx4*NvPp+U@Jk{Oemfk`CLC1S(I9j{^QR{VxK zo?yM^$?Er#!k>*RJL^W-gsm8J_bej&eMwlf$CcYE7Ag4GZ=5M9>*)AS;W^@%J7MK^ z(I(8T#b>Ls-AGDEv<}!~#T{j&OPQm}6q^Y&>m&h0==Q5Tai&A3Cou`8(6eh*Eb8fE zH}w+5JC3-cr_Nx_^%e8|){EDYd`~8lnu}ITmrcA@S&FAA$08e@Nt^_$CaXKgO(AUk z@{tX-mcOP2b1|3b-|SG^H5kLL(;I3Hyj~+P2#5bF?s_)-Jyu-TkBJ%rL39Z&$hH&h8p~S@^0NJS5OlzKo~(uU&5ymk&&gJ(&xW z23zUam9Sr)f2)V4*9QF>R=Txf-@X0P;4x97eOpH|4{oeI-{C)6Brf)FrM%w7Jse*& zZt#M%2p!WD&*BxVy|APXx458T$vh0uqlMzP4Mf|{G0cUQJ?0>trzyZjw)nV=?G0ge&jKAZfS=oHVmmN6W{E3 zD>{Y%-CXUZCbIJwLj~cLH|3crVi3>ErvkyUk{(n-3Qs2_V*I@-$Z$^%p_E#p!HNg;f? zC%XvAmru4xauUs**`I9T;9SbS)Xs+EP0fd)iTp@3jCs+Hi!*_rH+G(>eW$qr+K-Gs z&!3~?mcqU%4}H37r;!?OJsd!Ymg#W&GrhJ|Wkh^_fxB+K@Y3nMhc@2#k5L|efvJZH z;onvV^*2`ezJ5@GV$Mbvv{b#f6^CI#k>nuSBxRH3q63x1{;SB)(Di5SI@yN;h#{B3 z{M3`wFs#FpD`+}TQJ!2KffZuP~-ofbq#ewngr9e;2t%R#J;V9*4vmR_aC2 zwJX+aXFa)A_|0uXV6!uwBu#Hc<0~*jG8oK)W;#>>4jAe>9&vRz#zJmT#E&PN~gyKn2$B#%K@Ds6&x9ny~n{M-?X}@`V zLxj;fF%%(hIV4q@%#8cy$r4}3>HbXquAHX%L=58<1Y~20gqOO)GBk{L;Z)kJI{%QcxqRUuq;6)^rHRptALHeRwId?#&B?C5(#}Bq9HKMD&&Gl0&hjrR?Q>crb%p zbAs94F+Q9?Ul6y^Ij^}9ghC_9tLx`CLQc=RYOCYyl0~%8KJBv2_!OAk2P0tzypdJj z>+}kMP^k#S8v;VmG5;Ng&LzRY@jX7a>-xs$MmtA4w|)C@@*?g63oeWiO|OOJ~DLVPd} z8%Sd}ci`&g>Z$JGa^q)XvFS(@5mD?KgCh*T4eEZt`~~< z#m=zJw(9j$J~8~D?WwzGUto4)oS={jBaZ+wEQ_X_|Ma_U;iup%^34~@K=@wL=2_=P zk%s;IArD^0a&o>9v!kTjVa){K_cml}KVYyI_`TE;Fco(A5FQ>bDJlvFR5A-sB=Uq_ z^iuhjQ$$;xI*JG+142vl^-W|8MUiHnYo z2Ph6%vx-Ty15|Cn>-~z?P`#Vof)b3SYUbli{<#RQ{k3(yW+``^44~LoXx~4YMiA6U z>IPa4Jtu;vF5Mo46z`nmj3E1LsJ|m&93oNsiDs!K)dtPn3=BO7YHLD3vH;!j@$vhH zCHF2;XR}z6ipjSJsA^KkIqws``t&V{?)7pE4BuA0Bov;%A#y+YCk)f@QBr7>fzNp*&G<#IK*_bp!9B5>@?WC)wPjJ z~gc;-x-Pvr;XF#KZWow>a8))k%GHBj}ffy-!5{oK(sy#=8XX&pS)vJzhzJm{GyA#nd!_B6XW1Q4_i}af$3W9k zfw6AC7Juy<0YFs{R?v(tbeXo9Ur?Nnxi!|Sx6e7AYFS~~5c-Rkt23(^#G!Z9_fGuK zbu$EJp6hLPMs!Vio&LeIDE+Jypr*LSg)7~PXwJpAZr#0w9@t4sJZh;x`2wO?R=sdP z6nulB6hV4cR`sSq%qsZRu)sdnW)QEcu-A>tGdwC{4i>|+hb!AnUq0D>4qRFPbA3vi z`2+h!%J=qj3a}&1duAfjW1(z&ca0V4eHpe7tSb=3wFdf1f!v{0((m4ZQzC};o~%<| z{|{Npr0cdrvw@rW-!~X-lT5gc1pW+r!+Uri-EK55W)0Ca?44*;PZnOE6r-w1tdtw~ zMW5sg-(4EMefzdHF<=dZ)E(k}2xQ)L52~oB7!rwhZoHh~BkSmxxi81Jxegk+bnUV|==_9Cwab;HmCmkNVmT3s5zQEeBiRcXJS3OXmXrwPi z6#8e;tJY83+34t`{_8Hg&d3{b#z`n*d8}PI+1b_GUlsYfRm`(|3Vs~Em5^Xq3p4Ak zC24*#;{LDs&qyH%KJ1dG_2|846~JH0$#+H5cC3D{H_e|`xj>#&91JyJE8_Yc&_?Hk z_BQ+j{=B-}$583U9St)Eoe3tv@@s~VF|X4zxqx55hoNb7(kx(W2v)jvdTrAWcx`X% zcbY=ZU74AI$qKR{SG8}}|3!B^5D$2Mvpn|9f6*xp3@sUoai8=v|N0MRRKPf~>E8s! zXBI>aoLvrPOPs&>k^jZ|0Ce#G1?%&_79V;0|1-+%|K{Q^gOv#W?T1-uWt~(>KigS> zra1%WUcAy~--vjD>3%@?DDWfG5;PQch&B;+I33<41inqqhwqax6*jw7RS6tVr-1*3 zf+GIm1D=emY?Z^*LcP%qP$4*yY!S_k%Lue<$)RVC?H!>ntcp@Wo-cPJ=zpuo-0zjk zb#y@hIALtp>9g(c4HHMVsvLl;p&sF|^YIZOA|g&hJo(Md%>|MN9L9QVo*9|`KfEF^ zzvyW!(L3;Oot8rX(7p>H%s}3R5|P|%i2P=sbAw2Kj|ZaI!i6J;9%K&DKz@@EV;7WD z@fmp3uAB%y!{5Ar9RkP%dH{QRWZ#YS*J*Oe1c4v{HMRy1M#1x=LJTP#LuS3 znnj-CeQX2u!iR&U6F>$f|JYqe3FHbHP{v3oD@Wa$37w04+!{;<8r_Nm^_As}yK4oc zA>p+85Qk_~^u$&V*UvvQ-^H_%(zN+xv+0ph?3iI~%1ZSNYpN7_u7&d-3>O-k6a*2y zRwZRf;xI-A+EGredPfY;k+P8r>q~VzYGk~0yvYP-_&`9_+^`9j`uLUb{-m&jFxN7`R z^hR86J!Sy$COhNe@_C?*a!ghr{C5`IbFkp7?(t_F%pw%-8P-#?=72XgVD( zh5;~TVvl5m6K-UL-F8{zeKH>|;Bq=@OdoIb;a&^6pA!t~b~*wQGsc`@t%yV|A4AZG z=eIX~9)uQiogVCZZqsfLR`Ee)mX>}o6-6UkYBuuH<6^u&_!>1pLw2Y@!oT2C{eFhg=ePu~jIV>RkSaAYH?vsU@)n47T4ky*+Z`!>YetFDjI9#^~=?%`gRx|>dE$fEV zB7No}a-jJvDbP1n=^VYJ;egL!&!q5{UVF9C#df_L(*vk@+)JZn*cmG7=2nkyZ?9~F zsQNEI3+FU66cuRd>ee72f0*_81{Tq9P>*svpsS*iIqiLO)D;*Q_}lK?RU$|i#{-a{ ziQ(086em=SV!GZhDPm$3m-xHQB$noLL^s|`HC~EYf$R{BJ3SJZSzvcj2y4gXZ59G` zj=-cpp&qX77Q)J{w+7Dd3_wCos9~lS&u>fX>xt|)`+ostl8r8J#r5g~`pf3ky$7&l6ZC?KB1)NME$k0>)|-GfY^61kv$kUbCoWzA&C|$tB-VfPxPRSyP75A zie=q%TC_Z5?d@>lN-=F z_GNR{@0Rjk@78Nbj-y91GG4|MF;z>25oO^J9<$Y*U}_1@X|KIvVp7HRKLDm7k3dcGn?T$RPxYGtcD7AV&vv)T1XC?XFh;Z@!d z3zgk-j@mnWQ@!vJLQ)e`j9W!Krvd4|gBe#tB@JOfe!5SirL>JH)0--CB0(1C>rJ1}SqS8xUQUB|XWAz6D5~ z?ppp5hufX>rbg$Qd8#r5T_^0qV<)Mc9oQt>)=yn$GX&%!eGcJAhvLSB&#VtEK)@;w zV@xO*U!l$S+fP;xT#uRdC$e@<^pp0tb-*5OD)7X5vnQTaO7UD=3cV<$jGRvf5Z$?L z!xBn7)rZ&#v#iMQ{Uo0ULjQu>1_X zJ(di$H~`Whxj5ygZ~q#%2VCV8ZLrK=xIY^kP$t($b5Q&>o`M1>hv$P;{!-+!B?D1{ zv8-sgzZ6ElLBK4xJ|smwmi~O+0d!M|ELo_5e~oVevlOgZjsDAVe@_QIlmmmY$Y0|E z_<*Lc4manoMf=DHJXE$U1HxbOtK~XimP186G=G`$F+dK@sUt&(@z?nOKbPK|TG7E$ zSl;7^Jy^lWyi&5*|IbBaR{t!a-#5^7@KU(So;1IADCFyJ?{8;AGu<=QBr#hdw&qiA z3so^M{#=^RK!~s(3u%q5x@E}X4n<1H6JOs7OG(K={yD9CA6C-rE#WKVp;qOn2p07v z>wSuuM^U0}Mc^HyeILd8fiqVXf#u|SS5p1EfRR~76mTpdSxan;Q2X}IWhvNE~0XOG^x$O)iAvm}#Z z$$AbiHN^_dcu^@9W3iels-#(+H>`5*kWA7Hr~-Po9Hnl1Q{m02&zuzV=L+H2(g3?D z2D$6gD~ul=>@Vk>)g~Df$g5I-O4^&gcFgG>l&fD^0uM%I$DF{%f8N{dIecSwDUFfl z7P}LvBl>L4LZG)WKm3~swM(bX0W+ZFUR^Lbq?`#98!Ch|+{_DrQ!qZssik%0?NAuUfEIMJ_o3`1zy*(!% z*eI96WEH#KhoD*S|H1S{7hc=bT0<$YM8l!j!8{_Y-~WaZCML81lpxk3)3c|dSooRh zaOxC!Vq|Q*GYVk*|IuUN{>=c+6OrfygJIFsEl?YCnh0b(B0AH(OHnDN*wJflWq+ z20R$W76U!~a8^^OEX36_=#SVg#fWw)@_z!m6`LVo*E#G&Ay1V>y?*tv+a?|OlPo;L zM?vR|E_S({2Di{IGpl0&k9_Ijj=5P&Yx=ASjmhW>XqCN2b*Yj3*OjKw;RWBE;BEs0 zUYmXVB_av~9*BGhi$$rh8i9vbVCBjg8vo~e160p2z+5B>cZELAW=Z?34IGKq zpDy7ay-5+c6O`OwG1sxks3@!xsp3qeteVE>VU@z(ca7m%la<-swMOrcSt~~coQq!M z3D|`66~YWaa(mZW{Z{vYRjb6XnFRvQ*|1N7+$UL8E@P8ZSjRMmmOVZfc-^w)BdbN(wwA5n>S%e2)#IhSPdw1c*X`Xb{CcQ2x z*%~|q0EHe5Z2jV7gDK;1t3M8MvNm5I8(9L>^&+-`z-W7WLz~Grl7tmf`bhdNvk;!$ zKhO1wGHCUEez_7rZaZgHv*J%|-SUwC0h9x~EJ0*;=mElTt=V!vO1*B~LP`1Y*196p zsew(IGri=p78dL&BNLqNi$*R~*j{D5z&CH#$BYJMcE8Yl@bUE{^m9MOS?1P$l_!_j zPiMY#oO=46V2b0IrUuSrC%~?O_E|*};KoC^sRkbwt$@bEE8&y7*}&ArlDEy=6yT2U zeT=<*QPF994|`*`E=^5Gx95&9jatO-c1q7>J&#nUz-!V^piz@PP-@1~>L)S`Krhgp z`6YmX%4}D}fF3J39bT_jS_@_*dn}Nip^@a0fQh)RliKX!n6*tRSXo(}UE~fG)?tfr zdR}!{aVJ0Gz&ot&|IWmS`JYUTK7qp$1tHjz5Ip8q=Oxc)nNaep(Kh2HQnrtu?R;%V zf4+k-eLZoZT&|`El^OUc$L}vTHApxJu=b;J=Xt2~z&ik)l6sZiUH`Km;+<*rabI}5 zaLGf<@V_ycbC>TS>uqDieAQ1HNOQX&W~osR77h+ht>MVoWo<1_H|c`9u4_kn^39Fi z@^Hs@|3$rW^y*46Xn7xty=HDg)!}Xiw)rqpoWzRW-7$V4s4gle0_c&-{6XJ4KVRS# zY&C@SRYCH9AX%`=lMRMi)}~Xewb2Z5SS{MM$_{W!x%QqGYF50T0?x;XWZkwIt=8*4 zuZD+;NDpO&l+IOX<&y$|`az#^7f#iH^fP^+5K%7;b(8x=CjiW2{EqGGcB=0*zBXJ; zo$id4nG6sa3(KT@oh#Dj_Ab;_?-Q_FM-sZfv7ci|-r3oaxi(tTsW!;6OHlk57;MqN z6EzK|*j)aw!I2)c)-`j^;OKX_)d`#inj3w|iT?&`SFUHE##s2{Y_9Kg3jR!21qB6^ zOWow&HxF4um6nnfC9=Ao|Ap49BY_|dfqDfB_aXd13TxeWihu1k^%DsCO%-QFbMv~B z?xLUKL1wo_SSTd*rEuKFnZEOaBmU^<==+)lwv(;$`G~~Vrf5P}+f;3bQm}Hts5zn; zn;f|x{%L6x{Yf$5-Pia2!I8FlK(QXz*8E<@<2&-BRg~A37ahZLYd7;4YD$+4OSkfM zk@i5lpnSEyCFyU@LQ(vSB&UoNOG(Fx9l5#mYE(7W3&@(6ePIa#R>nYVKK~N{Q({#7 z&tgpp;{^Pu`1rIYHi3W&!%}@O*J~DB1rf>0agQFAp!JUr;P~{cZc2Gc?|6GQLijGQ zi_9IBd3e9okOsAQr*eGMpBC%FXil&e{YgspCs=l>uwe``2Lv}Y>5SE>EmK7dor za>AGWMkO)N=8GBq~`krWPHZJS92IT zJUrR!;08F#>>hO`PiAopQZ$6s;|j`D-nM8lS%d@ErqREp0g* zC}NoaNIs3K^R)XIzHS?L;YQGL3{%%M%~UcfPtdL8O(R1P%4hyqX6I&y}8gTzjj z|1*#{Tf5s;87h^ZF|0Fv{JUAeF~W!aiBYi!@2$$As|hIlHUeh%XWa8|Ug8fQ#;K)wp*%-Dh_tU5mJ>%+XyU3FII++ z9iJ+l|Miwi;EUQv(FY0reaIM%57fwM-SqPYt)X)^kWV*t1&wi&Kn%vRT*4kvN_onF?6!(Y9>ChttgW zqj3`5<5J3>390V?^<|((+8xT=9wJtD)8*jNR9n5RLW`Eis>x(3u|mMm`Js2p9mpGG z9Oi1odb6r%)bmX+S6=#q$;y2r_VOFQMOU!--*@1aI?87Z=@^}*$dH3KKW^?ycO{2g zUH<6kg71LAo!JAbCfMrhRZ6TvYM2a(d-*vM4PgW=z}B)0J@(gIJ4}?#G{_FmiVW)$~DN>TSLO%a7p84s`uKay;q5}d*DM2d!j8mHE*pL5*TpTc|SY5P(Gb|#i_ znR?I|p(nUSxglwip~i6hnW5qbW&aN=V5AqOpVqW$kIJGg<^xq8Z}K}FGu#c^CjCer z8cylLp{O&?bI7xw?~_9!#l6KhCpp2S=?e=I;+Yr+t9%mPToa*vCQ4?Vg&eehE_}R5 z+5(gxERib5V^5E=ar7O$LA-`B2&{T5bmRkFEc3yjf%^DYua>N&R6*TW5-^pbd%kqLHR~e@R{60CShxT%;UAR zMwIDbq{2(PNV^M^C-f0jnD-lfvy|QnMfFJMeJ~I?v~iEK?s$+@Cj`}QT|6t>9FCw^ zmP6Wl!`cG6VJF7bN*>EnfRXTO-^loL_YJQiYWayTzOLjPIx6N+%cA?Ip?(;0SI{r~ za-GXk&Z`5e$r+LZwW68y~mUIza zxB8ZmlsH*ZA}U}TxePt+N1=!%h4413c0>#cYrb4*3)BoY%|R!2z$`?rE-FD z(m)2&^)Fr;WLUCHtV+H<`aVSg-DRN{)(a|)=Xo-tyMf^Sa6Z?t#XUA>NMA52<+t~h zGx$)t8-C)57G+?Nt=VCPpJsmUn!!k56!$>L;^F!C_rH&h?Ip)tNi&5@ph{p&cy05HSK-5lSeBFi+VL49$T;mCS({fb zp2?#K!+&ILf*0bB7R2OK_DmNj#-K$s(RBT8UPpMm5V~egg0J1WRKr~CgL4y?oK2Q0 zP6yAsx$JUre_x)C0J;<$JUoNzb7*c}UV3Uc;(Cqh@c^U!=6`}9#wmnxd_Vf*X4{tx zr_m=`0SVpzj?^vO^2)WgS~Eb5_#gn$vFm-b>_>*;<+ba=YSn0BLEGQSUtqTrCMK<()0kfFZ; zaY;%-m-I|_10dUdx6*q;#%5WrUda?c%eh$e-iHb(6aWmJQ?}}^Dhu`N z5f4kOFQoiV^v?Lu=`t#SCJOoalUn6%wf&a-`o_i=FdE7g=tDh>-ival4biHP;?0M^Wm_08gyYsuHjtq5a*kW>d35IJIU>Sl$5alB4t_J8PaY_Mi0;@q`XZBj+M!8$LP0r{Tv!*@ zx%u0DvbFT&nlO9lcE&uPBa)ff0{b_XL@Zi~u`4+!WE zy4XZaB^9oEu3{uQQDLg!N%QmDB#D3vhHNa8l2F_R<`97YB@)^!=fYwun<=ji?d


R4+eN1JMWF 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

te3rh{t6T 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 LNuo^5!2kaNkwE^i literal 0 HcmV?d00001 diff --git a/keyboards/clueboard/keymaps/mouse_keys/readme.md b/keyboards/clueboard/keymaps/mouse_keys/readme.md new file mode 100644 index 00000000..97ac6dfa --- /dev/null +++ b/keyboards/clueboard/keymaps/mouse_keys/readme.md @@ -0,0 +1,16 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +![Clueboard Layout Image](layout.png) + +# MouseKeys Layout + +This layout adds a mouse layer. When you hold down the spacebar the arrow keys +will move your mouse cursor. You can click using the 3 mods to the left of the +arrow keys, or the 3 keys under your primary fingers on the home row. diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c new file mode 100644 index 00000000..f21b9b58 --- /dev/null +++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c @@ -0,0 +1,83 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = KEYMAP( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + 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,MO(_FL), S(KC_SPC),S(KC_SPC), MO(_FL), KC_RGUI, KC_RALT, KC_RCTL, KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD,RGB_SAD,RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(0), // Calls action_function() +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t mods_pressed; + + 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) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} diff --git a/keyboards/clueboard/keymaps/shift_fn/layout.png b/keyboards/clueboard/keymaps/shift_fn/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..66d85410ccfb3efccf6da03d10ce01269bada688 GIT binary patch literal 107234 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 z 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

  • +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.pressed) { - if (shift_esc_shift_mask) { + /* The key is being pressed. + */ + if (mods_pressed) { add_key(KC_GRV); send_keyboard_report(); } else { @@ -95,7 +65,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { send_keyboard_report(); } } else { - if (shift_esc_shift_mask) { + /* The key is being released. + */ + if (mods_pressed) { del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/skully/layout.png b/keyboards/clueboard/keymaps/skully/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..64854aaefde7da66a52b2513034d0d5de95f42d7 GIT binary patch literal 111676 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 literal 0 HcmV?d00001 From 38a83700c3c21326e691452c4dc002d398812679 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 12:29:48 -0500 Subject: [PATCH 049/183] Update description --- keyboards/handwired/magicforce68/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/handwired/magicforce68/config.h b/keyboards/handwired/magicforce68/config.h index 8a49b093..1e2b7d3e 100644 --- a/keyboards/handwired/magicforce68/config.h +++ b/keyboards/handwired/magicforce68/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . #define DEVICE_VER 0x0001 #define MANUFACTURER Hexwire #define PRODUCT Magicforce 68 -#define DESCRIPTION Advanced Programming Keeb Layout +#define DESCRIPTION Handwired Magicforce 68 /* key matrix size */ #define MATRIX_ROWS 5 From a9959783c0a190410307e3e6cc1be4c024e9cddd Mon Sep 17 00:00:00 2001 From: stites Date: Tue, 7 Mar 2017 11:45:47 -0500 Subject: [PATCH 050/183] Add freebsd support in "util/install_dependencies.sh" A simple addition to the `install_dependencies` script which remaps the debian dependencies to their freebsd package-names. After a recursive clone and using gmake, I can successfully build all firmware from the root directory (minus some warnings generated by gcc-4.9.4 which I can procure on request). however there is a problem running tests. --- util/install_dependencies.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/util/install_dependencies.sh b/util/install_dependencies.sh index 936a8659..1b73a8b3 100755 --- a/util/install_dependencies.sh +++ b/util/install_dependencies.sh @@ -92,4 +92,23 @@ elif [[ -n "$(type -P zypper)" ]]; then # TODO: The avr and eabi tools are not available as default packages, so we need # another way to install them +elif [[ -n "$(type -P pkg)" ]]; then + # FreeBSD + pkg update + pkg install -y \ + git \ + wget \ + gmake \ + gcc \ + zip \ + unzip \ + avr-binutils \ + avr-gcc \ + avr-libc \ + dfu-programmer \ + dfu-util \ + arm-none-eabi-gcc \ + arm-none-eabi-binutils \ + arm-none-eabi-newlib \ + diffutils fi From 1968ec4c24137eb413a80ae5031e09c09bad4138 Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 7 Mar 2017 19:40:18 +0100 Subject: [PATCH 051/183] changed definitions on keymap.c in admiral strokers Made a few changes to my own keymaps. (organisation) --- .../satan/keymaps/admiralStrokers/keymap.c | 213 +++++++++--------- 1 file changed, 109 insertions(+), 104 deletions(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index 487deb08..97a0f225 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -1,117 +1,117 @@ #include "satan.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // general keydefs - #define norm 0 // Default layer - #define elev 1 // Layer directional keys - #define supr 2 // F-keys and mediakeys - #define spac 3 - #define FNO1 4 // - #define FNO2 5 // - #define FNO3 6 // - #define MAC0 M(0) // - #define MAC1 M(1) // - #define MAC2 M(2) // - #define MAC3 M(3) // - #define MAC4 M(4) // - #define MAC5 M(5) // - #define MAC6 M(6) // - #define MAC7 M(7) // - #define MAC8 M(8) // - #define MAC9 M(9) // - #define GRAV KC_GRV // - #define MEDI F(FNO1)// +#define norm 0 // Default layer +#define elev 1 // Layer directional keys +#define supr 2 // F-keys and mediakeys +#define spac 3 +#define FNO1 4 // +#define FNO2 5 // +#define FNO3 6 // +#define MAC0 M(0) // +#define MAC1 M(1) // +#define MAC2 M(2) // +#define MAC3 M(3) // +#define MAC4 M(4) // +#define MAC5 M(5) // +#define MAC6 M(6) // +#define MAC7 M(7) // +#define MAC8 M(8) // +#define MAC9 M(9) // +#define GRAV KC_GRV // +#define MEDI F(FNO1)// // General shortenings - #define ESCA KC_ESC - #define MINS KC_MINS - #define EQUL KC_EQL - #define BSPC KC_BSPC - #define DELE KC_DEL - #define LBRC KC_LBRC - #define RBRC KC_RBRC - #define ALTR KC_RALT - #define SCLN KC_SCLN - #define QUOT KC_QUOT - #define NUHS KC_NUHS - #define ENTE KC_ENT - #define NUBS KC_NUBS // Less/ greater sign - #define COMM KC_COMM // Comma - #define FSTO KC_DOT // Full stop - #define SLSH KC_SLSH - #define ALTL KC_LALT - #define GUIL KC_LGUI - #define GUIR KC_RGUI - #define MENO KC_MENU +#define ESCA KC_ESC +#define MINS KC_MINS +#define EQUL KC_EQL +#define BSPC KC_BSPC +#define DELE KC_DEL +#define LBRC KC_LBRC +#define RBRC KC_RBRC +#define ALTR KC_RALT +#define SCLN KC_SCLN +#define QUOT KC_QUOT +#define NUHS KC_NUHS +#define ENTE KC_ENT +#define NUBS KC_NUBS // Less/ greater sign +#define COMM KC_COMM // Comma +#define FSTO KC_DOT // Full stop +#define SLSH KC_SLSH +#define ALTL KC_LALT +#define GUIL KC_LGUI +#define GUIR KC_RGUI +#define MENO KC_MENU // The F-row/layer: - #define FK01 KC_F1 - #define FK02 KC_F2 - #define FK03 KC_F3 - #define FK04 KC_F4 - #define FK05 KC_F5 - #define FK06 KC_F6 - #define FK07 KC_F7 - #define FK08 KC_F8 - #define FK09 KC_F9 - #define FK10 KC_F10 - #define FK11 KC_F11 - #define FK12 KC_F12 - #define FK13 KC_F13 - #define FK14 KC_F14 +#define FK01 KC_F1 +#define FK02 KC_F2 +#define FK03 KC_F3 +#define FK04 KC_F4 +#define FK05 KC_F5 +#define FK06 KC_F6 +#define FK07 KC_F7 +#define FK08 KC_F8 +#define FK09 KC_F9 +#define FK10 KC_F10 +#define FK11 KC_F11 +#define FK12 KC_F12 +#define FK13 KC_F13 +#define FK14 KC_F14 // Special Actions and Media Keys - #define INSE KC_INS // Insert here - #define HOME KC_HOME // Go to beginning of line - #define ENDI KC_END // go to end of line - #define PSCR KC_PSCR // Print Screen - #define SLCK KC_SLCK // go to end of line - #define PGDN KC_PGDN // go to end of line - #define PGUP KC_PGUP // go to end of line - #define PLPS KC_MPLY // Play/Pause - #define PAUS KC_PAUS // Pause button - #define MUTE KC_MUTE // Mute sound - #define VOLU KC_VOLU // Volume increase - #define VOLD KC_VOLD // Volume decrease - #define MNXT KC_MNXT // next track - #define MPRV KC_MPRV // prev track - #define MSTP KC_MSTP // stop playing - #define MSEL KC_MSEL // Select media (Start playing it) - #define MAIL KC_MAIL // Open default mail app - #define CALC KC_CALC // Open default calculator app - #define MYCM KC_MYCM // Open default file manager - //#define LILO KC_XXXXXX // Reserved for later - //#define LIHI KC_XXXXXX // Reserved for later +#define INSE KC_INS // Insert here +#define HOME KC_HOME // Go to beginning of line +#define ENDI KC_END // go to end of line +#define PSCR KC_PSCR // Print Screen +#define SLCK KC_SLCK // go to end of line +#define PGDN KC_PGDN // go to end of line +#define PGUP KC_PGUP // go to end of line +#define PLPS KC_MPLY // Play/Pause +#define PAUS KC_PAUS // Pause button +#define MUTE KC_MUTE // Mute sound +#define VOLU KC_VOLU // Volume increase +#define VOLD KC_VOLD // Volume decrease +#define MNXT KC_MNXT // next track +#define MPRV KC_MPRV // prev track +#define MSTP KC_MSTP // stop playing +#define MSEL KC_MSEL // Select media (Start playing it) +#define MAIL KC_MAIL // Open default mail app +#define CALC KC_CALC // Open default calculator app +#define MYCM KC_MYCM // Open default file manager +//#define LILO KC_XXXXXX // Reserved for later +//#define LIHI KC_XXXXXX // Reserved for later // dual-role shortcuts - #define DUTB LT(elev, KC_TAB) // `tabs` layer on hold and tab on tap - #define DUSP LT(spac, KC_SPACE) // `spce` layer on hold and space on tap - #define LOCK LGUI(KC_L) // lock computer (win) +#define DUTB LT(elev, KC_TAB) // `tabs` layer on hold and tab on tap +#define DUSP LT(spac, KC_SPACE) // `spce` layer on hold and space on tap +#define LOCK LGUI(KC_L) // lock computer (win) // Space Admiral Strokers - #define SADL MAC0 // Hold for lshift and { on tap - #define SADR MAC1 // Hold for rshift and } on tap - #define CADL MAC2 // Hold for lctrl and [ on tap - #define CADR MAC3 // Hold for rctrl and ] on tap +#define SADL MAC0 // Hold for lshift and { on tap +#define SADR MAC1 // Hold for rshift and } on tap +#define CADL MAC2 // Hold for lctrl and [ on tap +#define CADR MAC3 // Hold for rctrl and ] on tap // arrow cluster duality bottom right corner - #define ARLF ALT_T(KC_LEFT) // Left arrow - #define ARRT CTL_T(KC_RIGHT)// Right arrow - #define ARUP SFT_T(KC_UP) // Up arrow - #define ARDN GUI_T(KC_DOWN) // Down arrow +#define ARLF ALT_T(KC_LEFT) // Left arrow +#define ARRT CTL_T(KC_RIGHT)// Right arrow +#define ARUP SFT_T(KC_UP) // Up arrow +#define ARDN GUI_T(KC_DOWN) // Down arrow // brackets - #define NOCL RALT(KC_7) // [ - #define NOCR RALT(KC_0) // ] - #define NOPL LSFT(KC_8) // ( - #define NOPR LSFT(KC_9) // ) - #define NOAL KC_NUBS // < - #define NOAR LSFT(KC_NUBS) // > - #define NOBL RALT(KC_8) // [ - #define NOBR RALT(KC_9) // ] +#define NOCL RALT(KC_7) // [ +#define NOCR RALT(KC_0) // ] +#define NOPL LSFT(KC_8) // ( +#define NOPR LSFT(KC_9) // ) +#define NOAL KC_NUBS // < +#define NOAR LSFT(KC_NUBS) // > +#define NOBL RALT(KC_8) // [ +#define NOBR RALT(KC_9) // ] // increase readability - #define XXXX KC_TRNS - #define DEAD KC_NO - #define SCAN KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB +#define XXXX KC_TRNS +#define DEAD KC_NO +#define SCAN KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB [ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped) GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\ @@ -143,40 +143,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function - static uint16_t key_timer; + static uint16_t key_timer; + bool checkTime(){ + return (timer_elapsed(key_timer) < 150) ? true : false; + } + + switch(id) { case 0: //MAC0 - Hold for lshift and { on tap if (record->event.pressed) { key_timer = timer_read(); return MACRO(D(LSFT), END ); } else { - return (timer_elapsed(key_timer) < 150) ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END); + return checktime() ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END); }; break; case 1: //MAC1 - Hold for rshift and } on tap if (record->event.pressed) { key_timer = timer_read(); return MACRO(D(RSFT), END ); } else { - return (timer_elapsed(key_timer) < 150) ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END); + return checktime() ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END); }; break; case 2: //MAC2 - Hold for lctrl and [ on tap if (record->event.pressed) { key_timer = timer_read(); return MACRO(D(LCTL), END ); - } else {return (timer_elapsed(key_timer) < 150) ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END); + } else {return checktime() ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END); }; break; case 3: //MAC3 - Hold for rctrl and ] on tap if (record->event.pressed) { key_timer = timer_read(); return MACRO(D(RCTL), END ); } else { - return (timer_elapsed(key_timer) < 150) ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END); + return checktime() ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END); }; break; - case 4: //MAC4 + case 4: //MAC4 reserved for later. if (record->event.pressed) { } else { }; break; - case 5: //MAC5 + case 5: //MAC5 reserved for later. if (record->event.pressed) { } else { }; break; - case 6: //MAC6 + case 6: //MAC6 reserved for later. if (record->event.pressed) { } else { }; break; } return MACRO_NONE; }; From 7042af702057d4d129f1517712fab7f28e75b2f3 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 23:06:41 -0500 Subject: [PATCH 052/183] Add Makefile --- keyboards/handwired/magicforce68/Makefile | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 keyboards/handwired/magicforce68/Makefile diff --git a/keyboards/handwired/magicforce68/Makefile b/keyboards/handwired/magicforce68/Makefile new file mode 100644 index 00000000..191c6bb6 --- /dev/null +++ b/keyboards/handwired/magicforce68/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file From 3d082382b20ab338bb7f41b33329daffc994169a Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 23:08:44 -0500 Subject: [PATCH 053/183] Fix function layer actions --- .../handwired/magicforce68/keymaps/default/keymap.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/keyboards/handwired/magicforce68/keymaps/default/keymap.c b/keyboards/handwired/magicforce68/keymaps/default/keymap.c index 628249c2..22553f71 100644 --- a/keyboards/handwired/magicforce68/keymaps/default/keymap.c +++ b/keyboards/handwired/magicforce68/keymaps/default/keymap.c @@ -4,6 +4,8 @@ #define _FN1 1 #define _FN2 2 #define KC_ KC_TRNS +#define KC_X0 LT(_FN2, KC_GRV) +#define KC_X1 MO(_FN1) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = KEYMAP( @@ -12,11 +14,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /*|----`----`----`----`----`----`----`----`----`----`----`----`----`--------| |----`----| */ TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, BSLS , DEL ,PGDN, /*|------`----`----`----`----`----`----`----`----`----`----`----`----`------| `----`----' */ - FN0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, ENTER , + X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, ENTER , /*|-------`----`----`----`----`----`----`----`----`----`----`----`----------| ,----. */ LSFT , Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, RSFT , UP , /*|---------`----`----`----`----`----`----`----`----`----`----`-------------.--|----|----. */ - LCTL ,LGUI ,LALT , SPACE , FN1 ,RALT ,RCTL , LEFT,DOWN,RGHT + LCTL ,LGUI ,LALT , SPACE , X1 ,RALT ,RCTL , LEFT,DOWN,RGHT /*`-----+-----+-----+------------------------------+------+-----+-----' `----+----+----' */ ), @@ -49,13 +51,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -const uint16_t PROGMEM fn_actions[] = { - [0] = LT(KC_FN2, KC_GRV), - [1] = MO(_FN1), - [2] = MO(_FN2), -}; - - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function From 01980c96e9c1e8ab5aad0e89d03c0e15417712c8 Mon Sep 17 00:00:00 2001 From: milestogo Date: Wed, 8 Mar 2017 01:06:25 -0800 Subject: [PATCH 054/183] added browser babble, removed code from keymap --- .../handwired/MS-sculpt-mobile/babblePaste.c | 408 +++++++++++------- .../handwired/MS-sculpt-mobile/babblePaste.h | 151 ++++++- .../keymaps/milestogo/config.h | 13 +- .../keymaps/milestogo/keymap.c | 78 ++-- 4 files changed, 438 insertions(+), 212 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c index 93ff486e..491a7933 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c @@ -15,6 +15,13 @@ and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jee // GLOBAL variable to determine mode. Sets startup default if no eeppom uint8_t babble_mode =0 ; +// small function that we might also want to call from a keymap. + +macro_t* switch_babble_mode( uint8_t id) { + babble_mode= id; + return MACRO_NONE; //less typing above +} + // Today I learned that the preprocessor can not create a switch statement label from an argument // And else statements have problems, see https://gcc.gnu.org/onlinedocs/gcc-3.0.1/cpp_3.html#SEC15 @@ -23,63 +30,80 @@ uint8_t babble_mode =0 ; { action_macro_play( MACRO(macro)); return MACRO_NONE; } -const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { /* this function runs the appropriate babblepaste macro, given the global babble_mode, and a shortcut from the ENUM in babblePaste.h TODO, the pointers in this function should be stored in a PROGMEM array, not ram. But that requires even more clever preprocessor foo. */ - +const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { +/* if ( shortcut < BABL_START_NUM || \ shortcut >= (BABL_START_NUM + BABL_NUM_MACROS ) ) { return MACRO_NONE; } - - +*/ switch(babble_mode) { - -#ifdef MS_MODE + + +#ifdef MS_MODE + if ( BABL_WINDOWS == shortcut ) { return switch_babble_mode(MS_MODE); } + case MS_MODE: - BABLM( BABL_DEL_RIGHT_1C, T(DEL), END ); - BABLM( BABL_DEL_LEFT_WORD, D(LCTRL), T(BSPACE), U(LCTRL), END ); - BABLM( BABL_DEL_RIGHT_WORD,D(LCTRL), T(DEL), U(LCTRL), END ); BABLM( BABL_GO_LEFT_1C, T(LEFT), END ); BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); - BABLM( BABL_GO_LEFT_WORD, D(LCTRL), T(LEFT), U(LCTRL), END ); - BABLM( BABL_GO_RIGHT_WORD, D(LCTRL), T(RIGHT), U(LCTRL), END ); + BABLM( BABL_GO_LEFT_WORD, D(LCTL), T(LEFT), U(LCTL), END ); + BABLM( BABL_GO_RIGHT_WORD, D(LCTL), T(RIGHT), U(LCTL), END ); BABLM( BABL_GO_START_LINE, T(HOME), END ); - BABLM( BABL_GO_START_DOC, D(LCTRL),T(HOME), U(LCTRL),END ); BABLM( BABL_GO_END_LINE, T(END), END ); - BABLM( BABL_GO_END_DOC, D(LCTRL),T(END), U(LCTRL),END ); + BABLM( BABL_GO_START_DOC, D(LCTL),T(HOME), U(LCTL),END ); + BABLM( BABL_GO_END_DOC, D(LCTL),T(END), U(LCTL),END ); BABLM( BABL_GO_NEXT_LINE, T(DOWN), END ); BABLM( BABL_GO_PREV_LINE, T(UP), END ); BABLM( BABL_PGDN, T(PGDN), END ); BABLM( BABL_PGUP, T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_1C, T(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD, D(LCTL), T(BSPACE), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_WORD, D(LCTL), T(DEL), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_END, D(RSFT), T(HOME), U(RSFT), T(DEL), END); + BABLM( BABL_DEL_TO_LINE_START, D(RSFT), T(END), U(RSFT), T(DEL), END ); #ifndef BABL_MOVEMENTONLY - BABLM( BABL_UNDO, D(LCTRL), T(Z), U(LCTRL), END ); - BABLM( BABL_REDO, D(LCTRL), T(Y), U(LCTRL), END ); - BABLM( BABL_CUT, D(LCTRL), T(X), U(LCTRL), END ); - BABLM( BABL_COPY, D(LCTRL), T(C), U(LCTRL), END ); - BABLM( BABL_PASTE, D(LCTRL), T(V), U(LCTRL), END ); - BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_UNDO, D(LCTRL), T(Z), U(LCTRL), END ); - BABLM( BABL_REDO, D(LCTRL), T(Y), U(LCTRL), END ); - BABLM( BABL_CUT, D(LCTRL), T(X), U(LCTRL), END ); - BABLM( BABL_COPY, D(LCTRL), T(C), U(LCTRL), END ); - BABLM( BABL_PASTE, D(LCTRL), T(V), U(LCTRL), END ); - BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_FIND, D(LCTRL),T(F), U(LCTRL),END ); + BABLM( BABL_UNDO, D(LCTL), T(Z), U(LCTL), END ); + BABLM( BABL_REDO, D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_CUT, D(LCTL), T(X), U(LCTL), END ); + BABLM( BABL_COPY, D(LCTL), T(C), U(LCTL), END ); + BABLM( BABL_PASTE, D(LCTL), T(V), U(LCTL), END ); + BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_FIND, D(LCTL),T(F), U(LCTL),END ); BABLM( BABL_FIND_NEXT, T(F3),END ); - BABLM( BABL_FIND_REPLACE, D(LCTRL),T(H), U(LCTRL),END ); + BABLM( BABL_FIND_REPLACE, D(LCTL),T(H), U(LCTL),END ); BABLM( BABL_RUNAPP, D(LGUI),T(R), U(LGUI),END ); BABLM( BABL_SWITCH_APP_NEXT, D(LALT),T(TAB), U(LALT),END ); BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); BABLM( BABL_CLOSE_APP, D(LALT),T(F4), U(LALT),END ); BABLM( BABL_HELP, T(F1),END ); +#ifndef BABL_NOBROWSER + BABLM( BABL_BROWSER_NEW_TAB, D(LCTL), T(T), U(LCTL),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LCTL), T(W), U(LCTL),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LCTL), T(TAB), U(LCTL),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LCTL), T(L), U(LCTL),END ); + BABLM( BABL_BROWSER_FORWARD, D(LALT), T(RIGHT), U(LALT),END ); + BABLM( BABL_BROWSER_BACK, D(LALT), T(LEFT), U(LALT),END ); + BABLM( BABL_BROWSER_FIND, D(LCTL), T(F), U(LCTL),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LCTL), T(D), U(LCTL),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LCTL),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LCTL), T(T), U(LCTL),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, T(F11),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LCTL), D(RSFT), T(EQL), U(RSFT), U(LCTL),END ); // ctr+ + + BABLM( BABL_BROWSER_ZOOM_OUT, D(LCTL), T(MINS), U(LCTL),END ); +#endif #endif - + // Todo, ring bell, flash light, show user this isn't supported return MACRO_NONE; @@ -87,62 +111,87 @@ But that requires even more clever preprocessor foo. #ifdef LINUX_MODE + if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE); } + case LINUX_MODE: - - BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); - BABLM( BABL_DEL_LEFT_WORD , D(LCTRL), T(BSPACE), U(LCTRL), END ); - BABLM( BABL_DEL_RIGHT_WORD , D(LCTRL), T(DEL), U(LCTRL), END ); BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); - BABLM( BABL_GO_LEFT_WORD , D(LCTRL), T(LEFT), U(LCTRL), END ); - BABLM( BABL_GO_RIGHT_WORD , D(LCTRL), T(RIGHT), U(LCTRL), END ); + BABLM( BABL_GO_LEFT_WORD , D(LCTL), T(LEFT), U(LCTL), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LCTL), T(RIGHT), U(LCTL), END ); BABLM( BABL_GO_START_LINE , T(HOME), END ); - BABLM( BABL_GO_START_DOC , D(LCTRL),T(HOME), U(LCTRL),END ); BABLM( BABL_GO_END_LINE , T(END), END ); - BABLM( BABL_GO_END_DOC , D(LCTRL),T(END), U(LCTRL),END ); + BABLM( BABL_GO_START_DOC , D(LCTL),T(HOME), U(LCTL),END ); + BABLM( BABL_GO_END_DOC , D(LCTL),T(END), U(LCTL),END ); BABLM( BABL_GO_NEXT_LINE , T(DOWN), END ); BABLM( BABL_GO_PREV_LINE , T(UP), END ); BABLM( BABL_PGDN , T(PGDN), END ); BABLM( BABL_PGUP , T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(BSPACE), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LCTL), T(DEL), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_END, D(RSFT), T(HOME), U(RSFT), T(DEL), END); + BABLM( BABL_DEL_TO_LINE_START, D(RSFT), T(END), U(RSFT), T(DEL), END ); #ifndef BABL_MOVEMENTONLY - BABLM( BABL_UNDO , D(LCTRL), T(Z), U(LCTRL), END ); - BABLM( BABL_REDO , D(LCTRL), T(Y), U(LCTRL), END ); - BABLM( BABL_CUT , D(LCTRL), T(X), U(LCTRL), END ); - BABLM( BABL_COPY , D(LCTRL), T(C), U(LCTRL), END ); - BABLM( BABL_PASTE , D(LCTRL), T(V), U(LCTRL), END ); - BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_FIND, D(LCTRL),T(F), U(LCTRL),END ); + BABLM( BABL_UNDO , D(LCTL), T(Z), U(LCTL), END ); + BABLM( BABL_REDO , D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_CUT , D(LCTL), T(X), U(LCTL), END ); + BABLM( BABL_COPY , D(LCTL), T(C), U(LCTL), END ); + BABLM( BABL_PASTE , D(LCTL), T(V), U(LCTL), END ); + BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_FIND, D(LCTL),T(F), U(LCTL),END ); /* BABLM(BABL_FIND_NEXT , T(F3),END ); KDE */ - BABLM( BABL_FIND_NEXT, D(LCTRL),T(G), U(LCTRL),END ); // Gnome*/ - /* BABLM( , D(LCTRL),T(R), U(LCTRL),END ); KDE */ - BABLM( BABL_FIND_REPLACE, D(LCTRL),T(H), U(LCTRL),END ); // Gnome*/ + BABLM( BABL_FIND_NEXT, D(LCTL),T(G), U(LCTL),END ); // Gnome*/ + /* BABLM( , D(LCTL),T(R), U(LCTL),END ); KDE */ + BABLM( BABL_FIND_REPLACE, D(LCTL),T(H), U(LCTL),END ); // Gnome*/ BABLM( BABL_RUNAPP, D(LALT),T(F2), U(LALT),END ); BABLM( BABL_SWITCH_APP_NEXT, D(LCTL),T(TAB), U(LCTL),END ); BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); BABLM( BABL_CLOSE_APP, D(LALT),T(F4), U(LALT),END ); - BABLM( BABL_HELP, END ); + //BABLM( BABL_HELP, END ); + +#ifndef BABL_NOBROWSER + BABLM( BABL_BROWSER_NEW_TAB, D(LCTL), T(T), U(LCTL),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LCTL), T(W), U(LCTL),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LCTL), T(TAB), U(LCTL),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LCTL), T(L), U(LCTL),END ); + BABLM( BABL_BROWSER_FORWARD, D(LALT), T(RIGHT), U(LALT),END ); + BABLM( BABL_BROWSER_BACK, D(LALT), T(LEFT), U(LALT),END ); + BABLM( BABL_BROWSER_FIND, D(LCTL), T(F), U(LCTL),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LCTL), T(D), U(LCTL),END ); + BABLM( BABL_BROWSER_DEV_TOOLS, D(LCTL), T(T), U(LCTL),END ); // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, T(F11),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LCTL), T(PLUS), U(LCTL),END ); + BABLM( BABL_BROWSER_ZOOM_OUT, D(LCTL), T(MINS), U(LCTL),END ); +#endif #endif return MACRO_NONE; #endif #ifdef MAC_MODE + if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE); } + case MAC_MODE: - BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); - BABLM( BABL_DEL_LEFT_WORD , D(LALT), T(BSPACE), U(LALT), END ); - BABLM( BABL_DEL_RIGHT_WORD, D(LALT), T(DEL), U(LALT), END ); BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); BABLM( BABL_GO_RIGHT_1C, T(RIGHT), END ); BABLM( BABL_GO_LEFT_WORD , D(LALT), T(LEFT), U(LALT), END ); BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(RIGHT), U(LALT), END ); BABLM( BABL_GO_START_LINE , D(LGUI), T(LEFT), U(LGUI), END ); - BABLM( BABL_GO_START_DOC , D(LGUI),T(UP), U(LGUI),END ); BABLM( BABL_GO_END_LINE , D(LGUI), T(RIGHT), U(LGUI), END ); + BABLM( BABL_GO_START_DOC , D(LGUI),T(UP), U(LGUI),END ); BABLM( BABL_GO_END_DOC , D(LGUI),T(DOWN), U(LGUI),END ); BABLM( BABL_GO_NEXT_LINE , T(DOWN), END ); BABLM( BABL_GO_PREV_LINE , T(UP), END ); BABLM( BABL_PGDN , D(LALT),T(DOWN), U(LALT), END ); BABLM( BABL_PGUP , D(LALT),T(UP), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD , D(LALT), T(BSPACE), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_WORD, D(LALT), T(DEL), U(LALT), END ); + BABLM( BABL_DEL_TO_LINE_END, D(LCTL), T(K), U(LCTL), END );// there must be another way + BABLM( BABL_DEL_TO_LINE_START, D(LGUI), T(BSPACE), U(LGUI), END ); #ifndef BABL_MOVEMENTONLY BABLM( BABL_UNDO , D(1), D(LGUI), T(Z), U(LGUI), END ); BABLM( BABL_REDO , D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); @@ -158,75 +207,92 @@ But that requires even more clever preprocessor foo. BABLM( BABL_SWITCH_APP_LAST , D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); BABLM( BABL_CLOSE_APP , D(LGUI),T(Q), U(LGUI),END ); BABLM( BABL_HELP , D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); + +#ifndef BABL_NOBROWSER + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ + + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +#endif #endif return MACRO_NONE; #endif #ifdef EMACS_MODE + + if ( BABL_EMACS == shortcut ) { return switch_babble_mode(EMACS_MODE); } + case EMACS_MODE: switch(shortcut) { //probably should allow meta to not be ALT - - case BABL_DEL_RIGHT_1C: - BABLM( , D(LCTL), T(D), U(LCTL),END ); - case BABL_DEL_LEFT_WORD: - BABLM( , D(LCTL), T(BSPACE), U(LCTL), END ); - case BABL_DEL_RIGHT_WORD: - BABLM( , D(LALT), T(D), U(LALT), END ); - case BABL_GO_LEFT_1C: - BABLM( , T(LEFT), END ); - case BABL_GO_RIGHT_1C: - BABLM( , T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - BABLM( , D(LALT), T(B), U(LALT), END ); - case BABL_GO_RIGHT_WORD: - BABLM( , D(LALT), T(F), U(LALT), END ); - case BABL_GO_START_LINE: - BABLM( , D(LCTRL), T(A), U(LCTRL), END ); - case BABL_GO_START_DOC: - BABLM( , D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); - case BABL_GO_END_LINE: - BABLM( , D(LCTRL), T(E), U(LCTRL), END ); - case BABL_GO_END_DOC: - BABLM( , D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END ); - case BABL_GO_NEXT_LINE: - BABLM( , D(LCTRL), T(N), U(LCTRL), END ); - case BABL_GO_PREV_LINE: - BABLM( , D(LCTRL), T(P), U(LCTRL), END ); - case BABL_PGDN: - BABLM( ,D(LCTRL), T(V), U(LCTRL), END ); - case BABL_PGUP: - BABLM( , D(LALT), T(V), U(LALT), END ); + + BABLM( BABL_GO_LEFT_1C, T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C, T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD, D(LALT), T(B), U(LALT), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END ); + BABLM( BABL_GO_START_LINE , D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_GO_END_LINE , D(LCTL), T(E), U(LCTL), END ); + BABLM( BABL_GO_START_DOC , D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); + BABLM( BABL_GO_END_DOC , D(LALT), D(LSFT), T(DOT), U(LSFT), U(LALT) ,END ); + BABLM( BABL_GO_NEXT_LINE , D(LCTL), T(N), U(LCTL), END ); + BABLM( BABL_GO_PREV_LINE , D(LCTL), T(P), U(LCTL), END ); + BABLM( BABL_PGDN , D(LCTL), T(V), U(LCTL), END ); + BABLM( BABL_PGUP , D(LALT), T(V), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_1C, D(LCTL), T(D), U(LCTL),END ); + BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(BSPACE), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END ); + BABLM( BABL_DEL_TO_LINE_END, D(LCTL), T(K), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_START, T(ESC), T(0), D(LCTL), T(K), U(LCTL), END ); #ifndef BABL_MOVEMENTONLY - case BABL_UNDO: - BABLM( , D(LCTL), T(X), U(LCTL),T(C), END ); - case BABL_REDO: - BABLM( , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably - case BABL_CUT: - BABLM( , D(LCTL), T(W), U(LCTL), END ); - case BABL_COPY: - BABLM( , D(LALT), T(W), U(LALT), END ); //really? - case BABL_PASTE: - BABLM( , D(LCTL), T(Y), U(LCTL), END ); - case BABL_SELECT_ALL: - BABLM( ,D(LCTL), T(X), U(LCTL),T(H), END ); - case BABL_FIND: - BABLM( , D(LCTRL), T(S), U(LCTRL),END ); - case BABL_FIND_NEXT: - BABLM( , D(LCTRL), T(S), U(LCTRL),END ); - case BABL_FIND_REPLACE: - BABLM( , D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); - case BABL_RUNAPP: - BABLM( , D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably - case BABL_SWITCH_APP_NEXT: - BABLM( , D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably - case BABL_SWITCH_APP_LAST: - BABLM( , D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably - case BABL_CLOSE_APP: - BABLM( ,D(LCTL), T(X), U(LCTL),T(C),END ); - case BABL_HELP: - BABLM( , D(LCTL),T(H), U(LCTL),T(A),END); // start search in help + BABLM( BABL_UNDO , D(LCTL), T(X), U(LCTL),T(C), END ); + BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + BABLM( BABL_CUT , D(LCTL), T(W), U(LCTL), END ); + BABLM( BABL_COPY , D(LALT), T(W), U(LALT), END ); //really? + BABLM( BABL_PASTE , D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_SELECT_ALL ,D(LCTL), T(X), U(LCTL),T(H), END ); + BABLM( BABL_FIND , D(LCTL), T(S), U(LCTL),END ); + BABLM( BABL_FIND_NEXT , D(LCTL), T(S), U(LCTL),END ); + BABLM( BABL_FIND_REPLACE , D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + BABLM( BABL_RUNAPP , D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably + BABLM( BABL_SWITCH_APP_NEXT , D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably + BABLM( BABL_SWITCH_APP_LAST , D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably + BABLM( BABL_CLOSE_APP , D(LCTL), T(X), U(LCTL),T(C),END ); + BABLM( BABL_HELP , D(LCTL),T(H), U(LCTL),T(A),END); // start search in help +#ifndef BABL_NOBROWSER +/* you get to figure w3 out + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ + + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif #endif break; @@ -234,25 +300,31 @@ But that requires even more clever preprocessor foo. } #endif + + #ifdef VI_MODE + if ( BABL_VI == shortcut ) { return switch_babble_mode(VI_MODE); } case VI_MODE: -//assume esc is already called +// you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell) + - BABLM( BABL_DEL_RIGHT_1C , T(X),END ); - BABLM( BABL_DEL_LEFT_WORD , T(D),T(G),T(E),END ); - BABLM( BABL_DEL_RIGHT_WORD , T(D),T(W),END ); BABLM( BABL_GO_LEFT_1C , T(H), END ); BABLM( BABL_GO_RIGHT_1C , T(L), END ); BABLM( BABL_GO_LEFT_WORD , T(B),END ); BABLM( BABL_GO_RIGHT_WORD , T(W), END ); BABLM( BABL_GO_START_LINE , D(LSFT), T(6),U(LSFT), END ); //^ - BABLM( BABL_GO_START_DOC , T(G),T(G) ,END ); BABLM( BABL_GO_END_LINE , D(LSFT), T(4),U(LSFT) , END ); //$ + BABLM( BABL_GO_START_DOC , T(G),T(G) ,END ); BABLM( BABL_GO_END_DOC , D(LSFT), T(G),U(LSFT),END ); BABLM( BABL_GO_NEXT_LINE , T(J), END ); BABLM( BABL_GO_PREV_LINE, T(K), END ); - BABLM( BABL_PGDN ,D(LCTRL), T(F), U(LCTRL), END ); - BABLM( BABL_PGUP , D(LCTRL), T(B), U(LCTRL), END ); + BABLM( BABL_PGDN ,D(LCTL), T(F), U(LCTL), END ); + BABLM( BABL_PGUP , D(LCTL), T(B), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_1C , T(X),END ); + BABLM( BABL_DEL_LEFT_WORD , T(D),T(G),T(E),END ); + BABLM( BABL_DEL_RIGHT_WORD , T(D),T(W),END ); + BABLM( BABL_DEL_TO_LINE_END, T(D),D(LSFT), T(4),U(LSFT) ,END ); // d$ + BABLM( BABL_DEL_TO_LINE_START, T(D),D(LSFT), T(6),U(LSFT) ,END ); #ifndef BABL_MOVEMENTONLY BABLM( BABL_UNDO , T(U), END ); BABLM( BABL_REDO , D(LCTL), T(R), U(LCTL), END ); @@ -268,6 +340,27 @@ But that requires even more clever preprocessor foo. BABLM( BABL_SWITCH_APP_LAST ,END ); BABLM(BABL_CLOSE_APP, D(LSFT), T(SCLN),U(LSFT), T(Q), D(RSFT), T(1),U(RSFT), END ); BABLM(BABL_HELP, D(LSFT), T(SCLN),U(LSFT),T(H),END); // start search in help +#ifndef BABL_NOBROWSER +/* you get to figure this out + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), T(PLUS), U(LGUI),END ); + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif #endif return MACRO_NONE; #endif @@ -278,37 +371,62 @@ But that requires even more clever preprocessor foo. #ifdef READMUX_MODE // Readline command line editing + tmux windowing // I havent decided how much to do readline and how much tmux + if ( BABL_READLINE == shortcut ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; } case READMUX_MODE: - BABLM( BABL_DEL_RIGHT_1C , D(LCTL), T(D), U(LCTL),END ); + + BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD , D(LALT), T(B), U(LALT), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END ); + BABLM( BABL_GO_START_LINE , D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_GO_END_LINE , D(LCTL), T(E), U(LCTL), END ); + //BABLM( BABL_GO_START_DOC ,END );// tmux? + //BABLM( BABL_GO_END_DOC ,END ); // tmux? + BABLM( BABL_GO_NEXT_LINE , D(LCTL), T(N), U(LCTL), END ); + BABLM( BABL_GO_PREV_LINE , D(LCTL), T(P), U(LCTL), END ); + BABLM( BABL_PGDN , T(PGDN), END ); + BABLM( BABL_PGUP , T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_1C , D(LCTL), T(D), U(LCTL),END ); BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(W), U(LCTL), END ); - BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END ); - BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); - BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); - BABLM( BABL_GO_LEFT_WORD , D(LALT), T(B), U(LALT), END ); - BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END ); - BABLM( BABL_GO_START_LINE , D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_GO_START_DOC ,END );// tmux? - BABLM( BABL_GO_END_LINE , D(LCTRL), T(E), U(LCTRL), END ); - BABLM( BABL_GO_END_DOC ,END ); // tmux? - BABLM( BABL_GO_NEXT_LINE , D(LCTRL), T(N), U(LCTRL), END ); - BABLM( BABL_GO_PREV_LINE , D(LCTRL), T(P), U(LCTRL), END ); - BABLM( BABL_PGDN , T(PGDN), END ); - BABLM( BABL_PGUP , T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END ); + BABLM( BABL_DEL_TO_LINE_END, D(LCTL), T(K), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_START, D(LCTL), T(U), U(LCTL), END ); #ifndef BABL_MOVEMENTONLY - BABLM( BABL_UNDO , D(LALT), T(R), U(LALT) , END ); - BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably - BABLM( BABL_CUT , D(LCTL), T(K), U(LCTL), END ); // wrong half the time - BABLM( BABL_COPY ,END ); - BABLM( BABL_PASTE , D(LCTL), T(Y), U(LCTL), END ); - BABLM( BABL_SELECT_ALL ,D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); - BABLM( BABL_FIND , D(LCTRL), T(R), U(LCTRL), END ); // search history - BABLM(BABL_FIND_NEXT, D(LCTRL), T(S), U(LCTRL), END ); - BABLM( BABL_FIND_REPLACE ,END ); - BABLM( BABL_RUNAPP , D(LCTRL), T(B), U(LCTRL), T(C),END ); //tmux - BABLM( BABL_SWITCH_APP_NEXT , D(LCTRL), T(B), U(LCTRL), T(N),END ); //tmux - BABLM( BABL_SWITCH_APP_LAST , D(LCTRL), T(B), U(LCTRL), T(P),END ); //tmux - BABLM( BABL_CLOSE_APP , D(LCTRL), T(B), U(LCTRL), T(D),END); // usually what I want - BABLM( BABL_HELP ,END ); + BABLM( BABL_UNDO , D(LALT), T(R), U(LALT) , END ); + BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + BABLM( BABL_CUT , D(LCTL), T(K), U(LCTL), END ); // wrong half the time + //BABLM( BABL_COPY ,END ); + BABLM( BABL_PASTE , D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_SELECT_ALL , D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); + BABLM( BABL_FIND , D(LCTL), T(R), U(LCTL), END ); // search history + BABLM(BABL_FIND_NEXT, D(LCTL), T(S), U(LCTL), END ); + //BABLM( BABL_FIND_REPLACE ,END ); + BABLM( BABL_RUNAPP , D(LCTL), T(B), U(LCTL), T(C),END ); //tmux + BABLM( BABL_SWITCH_APP_NEXT , D(LCTL), T(B), U(LCTL), T(N),END ); //tmux + BABLM( BABL_SWITCH_APP_LAST , D(LCTL), T(B), U(LCTL), T(P),END ); //tmux + BABLM( BABL_CLOSE_APP , D(LCTL), T(B), U(LCTL), T(D),END); // usually what I want + // BABLM( BABL_HELP ,END ); +#ifndef BABL_NOBROWSER +/* Add lynx shortcuts? + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), T(PLUS), U(LGUI),END ); + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif #endif return MACRO_NONE; diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h index 313fa80e..67153fb0 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h @@ -10,6 +10,8 @@ and jeebak & algernon's keymap #ifndef _babblePaste_h_included__ #define _babblePaste_h_included__ #include "action_layer.h" +#include "quantum_keycodes.h" +#include "config.h" #ifdef USE_BABLPASTE @@ -39,23 +41,28 @@ and jeebak & algernon's keymap /* Macros handled by babblepaste. Most should be available for all platforms. Whatever isn't defined will NOP */ enum { - - // Movement - BABL_DEL_RIGHT_1C= BABL_START_NUM, - BABL_DEL_LEFT_WORD, - BABL_DEL_RIGHT_WORD, - BABL_GO_LEFT_1C, +// Movement macros + // left & right + BABL_GO_LEFT_1C= BABL_START_NUM, BABL_GO_RIGHT_1C, - BABL_GO_LEFT_WORD, + BABL_GO_LEFT_WORD, BABL_GO_RIGHT_WORD, BABL_GO_START_LINE, BABL_GO_END_LINE, + // now up & down BABL_GO_START_DOC, BABL_GO_END_DOC, BABL_GO_NEXT_LINE, BABL_GO_PREV_LINE, BABL_PGDN, BABL_PGUP, + // And the delete options + //BABL_DEL_LEFT_1C == backspace, so why bother. + BABL_DEL_RIGHT_1C, // usually = Del + BABL_DEL_LEFT_WORD, + BABL_DEL_RIGHT_WORD, + BABL_DEL_TO_LINE_END, // delete from cursor to end of line + BABL_DEL_TO_LINE_START, // delete from cursor to begining line #ifndef BABL_MOVEMENTONLY // Cut & Paste BABL_UNDO, @@ -64,20 +71,142 @@ enum { BABL_COPY, BABL_PASTE, BABL_SELECT_ALL, - // GUI or app + /* not yet implemented + BABL_SWAP_LAST2C // swap last characters before the cursor + BABL_SWAP_LAST2W // Swap the last two words before the cursor + */ + // find & replace BABL_FIND, BABL_FIND_NEXT, BABL_FIND_REPLACE, + // GUI or app BABL_RUNAPP, BABL_SWITCH_APP_NEXT, BABL_SWITCH_APP_LAST, // previous BABL_CLOSE_APP, - BABL_HELP + BABL_HELP, + +#ifndef BABL_NOBROWSER + BABL_BROWSER_NEW_TAB, + BABL_BROWSER_CLOSE_TAB, + BABL_BROWSER_REOPEN_LAST_TAB, + BABL_BROWSER_NEXT_TAB, + BABL_BROWSER_PREV_TAB, + BABL_BROWSER_URL_BAR, + BABL_BROWSER_FORWARD, + BABL_BROWSER_BACK, + BABL_BROWSER_FIND, + BABL_BROWSER_BOOKMARK, + BABL_BROWSER_DEV_TOOLS, // hard one to remember + BABL_BROWSER_RELOAD, + BABL_BROWSER_FULLSCREEN, + BABL_BROWSER_ZOOM_IN, + BABL_BROWSER_ZOOM_OUT, + +#endif + #endif +// Macros for mode switching +#ifdef MS_MODE + BABL_WINDOWS, +#endif +#ifdef MAC_MODE + BABL_MAC, +#endif +#ifdef LINUX_MODE + BABL_LINUX, +#endif +#ifdef EMACS_MODE + BABL_EMACS, +#endif +#ifdef VI_MODE + BABL_VI, +#endif +#ifdef READMUX_MODE + BABL_READLINE, +#endif + + }; -// How many macros/ how many array elements? -#define BABL_NUM_MACROS 28 +// BUG, used to jump to babble functiion. Surely there is a way to calculate size of enum? +#define BABL_NUM_MACROS 48 + 4 // 48 + # of defined modes. + +/* And all the shorthand keymap ready versions */ +// First the mode switching macros +#ifdef MS_MODE +#define B_WIN M(BABL_WINDOWS) +#endif +#ifdef MAC_MODE +#define B_MAC M(BABL_MAC) +#endif +#ifdef LINUX_MODE +#define B_LNX M(BABL_LINUX) +#endif +#ifdef EMACS_MODE +#define B_EMAX M(BABL_EMACS) +#endif +#ifdef VI_MODE +#define B_VI M(BABL_VI) +#endif +#ifdef READMUX_MODE +#define B_READ M(BABL_READLINE) +#endif + +// and all the movement & action. + +#define B_L1C M(BABL_GO_LEFT_1C) +#define B_R1C M(BABL_GO_RIGHT_1C) +#define B_L1W M(BABL_GO_LEFT_WORD) +#define B_R1W M(BABL_GO_RIGHT_WORD) +#define B_GSOL M(BABL_GO_START_LINE) +#define B_GEOL M(BABL_GO_END_LINE) +#define B_GTOP M(BABL_GO_START_DOC) +#define B_GEND M(BABL_GO_END_DOC) +#define B_DOWN M(BABL_GO_NEXT_LINE) +#define B_UP M(BABL_GO_PREV_LINE) +#define B_PGDN M(BABL_PGDN) +#define B_PGUP M(BABL_PGUP) +//#define B_BKSP M(BABL_DEL_LEFT_1C) == backspace so why bother. +#define B_DEL M(BABL_DEL_RIGHT_1C) // usually = Del +#define B_DLW M(BABL_DEL_LEFT_WORD) +#define B_DRW M(BABL_DEL_RIGHT_WORD) +#define B_DEOL M(BABL_DEL_TO_LINE_END) // delete from cursor to end of line +#define B_DSOL M(BABL_DEL_TO_LINE_START) // delete from cursor to begining line +#define B_UNDO M(BABL_UNDO) +#define B_REDO M(BABL_REDO) +#define B_CUT M(BABL_CUT) +#define B_COPY M(BABL_COPY) +#define B_PAST M(BABL_PASTE) +#define B_SELA M(BABL_SELECT_ALL) +#define B_FIND M(BABL_FIND) +#define B_FINDN M(BABL_FIND_NEXT) +#define B_FINDR M(BABL_FIND_REPLACE) +#define B_RAPP M(BABL_RUNAPP) +#define B_NAPP M(BABL_SWITCH_APP_NEXT) +#define B_PAPP M(BABL_SWITCH_APP_LAST) // previous +#define B_CAPP M(BABL_CLOSE_APP) +#define B_HELP M(BABL_HELP) +#define B_NTAB M(BABL_BROWSER_NEW_TAB) +#define B_CTAB M(BABL_BROWSER_CLOSE_TAB) +#define B_ROTB M(BABL_BROWSER_REOPEN_LAST_TAB) +#define B_NXTB M(BABL_BROWSER_NEXT_TAB) +#define B_PTAB M(BABL_BROWSER_PREV_TAB) +#define B_NURL M(BABL_BROWSER_URL_BAR) +#define B_BFWD M(BABL_BROWSER_FORWARD) +#define B_BBAK M(BABL_BROWSER_BACK) +#define B_BFND M(BABL_BROWSER_FIND) +#define B_BOOK M(BABL_BROWSER_BOOKMARK) +#define B_BDEV M(BABL_BROWSER_DEV_TOOLS) // hard one to remember +#define B_BRLD M(BABL_BROWSER_RELOAD) +#define B_BFUlL M(BABL_BROWSER_FULLSCREEN) +#define B_ZMIN M(BABL_BROWSER_ZOOM_IN) +#define B_ZMOT M(BABL_BROWSER_ZOOM_OUT) + + + + + /* from action_macro.h diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h index 7ad1b0f0..9f9b0509 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -5,23 +5,28 @@ #define USE_BABLPASTE +// Expect to get errors if you comment a feature out and leave it in your keymap. + #ifdef USE_BABLPASTE //define BabblePaste maps // Windows. -//#define MS_MODE 1 -#define MAC_MODE 0 +#define MS_MODE 0 +#define MAC_MODE 1 //aka gnome+KDE //#define LINUX_MODE 2 //#define EMACS_MODE 3 -//#define VI_MODE 4 +#define VI_MODE 4 //#define WORDSTAR_MODE 5 // Readline and tmux #define READMUX_MODE 6 #endif // Uncomment if you need more free flash space -// It removes everything but cursor movement + +// This removes everything but cursor movement //#define BABL_MOVEMENTONLY +// and this just removes browser shortcuts +//#define BABL_NOBROWSER // place overrides here #endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index 3a162db8..a6628254 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -14,13 +14,6 @@ #define _TRAN 5 - - -// adjust babblemode default -extern uint8_t babble_mode; - - - enum layer_keycodes { QWR, CDH, @@ -46,11 +39,6 @@ TRAN enum macro_keycodes { DHPASTE=1, VIBRK, -B_LNX, -B_WIN, -B_MAC, -B_VI, -B_READ , }; @@ -115,24 +103,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), +/* +* |ESC | Win| MAC|RdLn| VI | | | | | | | | | | | | +* -------------------------------------------------------------------------------' +* | | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| +* --------------------------------------------------------------------------- +* | tab | q | w |Find| |pTab |DSOL|DelW| Up |DelW|DEOL| [ | ] | \ | | +* -------------------------------------------------------------------------------' +* |Bak/Mov| a | s | d | |nTab |GSOL| <- | Dwn | -> | EOL | ' | enter |PgUp| +* -------------------------------------------------------------------------------- +* |Lsft |Undo| Cut|Copy|Pste| b | n | m | , | . | / | Rsft| Up| PgDn| +* --------------------------------------------------------------------------------- +* |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| +* --------------------------------------------------------------------------------- +*/ [_MOV] = KEYMAP (\ - ____, M(B_WIN),M(B_MAC),M(B_READ), M(B_VI), ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, M(BABL_UNDO), ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____,RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, M(BABL_DEL_LEFT_WORD), KC_UP, M(BABL_DEL_RIGHT_WORD), ____, ____, ____, ____, \ - ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, M(BABL_GO_START_LINE), KC_LEFT,KC_DOWN, KC_RIGHT, M(BABL_GO_END_LINE), ____,____,____,\ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, B_MAC,B_WIN,B_READ, B_VI, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, B_PAPP, B_NAPP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, B_UNDO, ____, B_BFND, ____, B_PTAB, B_DSOL, B_DLW, B_UP, B_DRW, B_DEOL, ____, ____, ____, \ + ____, B_SELA, B_BRLD, ____, ____, B_NXTB, B_GSOL, B_L1C, B_DOWN, B_R1C,B_GEOL, ____, ____, ____,\ + ____, B_UNDO,B_CUT, B_COPY, B_PAST, B_PAST, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), [_TRAN] = KEYMAP (\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ -) + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ +) }; const uint16_t PROGMEM fn_actions[] = { @@ -188,6 +190,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { /* If this is in the range of BABL macros, call a separate function */ +/* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ #ifdef USE_BABLPASTE if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { if (record->event.pressed) { // is there a case where this isn't desired? @@ -235,31 +238,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) - -#ifdef USE_BABLPASTE - -#ifdef LINUX_MODE - case B_LNX: - return switch_babble_mode(LINUX_MODE); -#endif -#ifdef MS_MODE - case B_WIN: - return switch_babble_mode(MS_MODE); -#endif -#ifdef MAC_MODE - case B_MAC: - return switch_babble_mode(MAC_MODE); -#endif -#ifdef VI_MODE - case B_VI: - return switch_babble_mode(VI_MODE); -#endif -#ifdef READMUX_MODE - case B_READ: - return switch_babble_mode(READMUX_MODE); -#endif -#endif - default: return MACRO_NONE; @@ -286,10 +264,6 @@ void led_set_user(uint8_t usb_led) { } -macro_t* switch_babble_mode( uint8_t id) { - babble_mode= id; - return MACRO_NONE; //less typing above -} From 89aba30c7f50aa733262f4add253817e2fb84e8a Mon Sep 17 00:00:00 2001 From: milestogo Date: Wed, 8 Mar 2017 01:25:33 -0800 Subject: [PATCH 055/183] fix stupid error w/ mode switch --- .../handwired/MS-sculpt-mobile/babblePaste.c | 38 +++++++++++++------ .../handwired/MS-sculpt-mobile/babblePaste.h | 10 ++++- keyboards/handwired/MS-sculpt-mobile/config.h | 5 +-- .../MS-sculpt-mobile/keymaps/default/Makefile | 2 +- .../keymaps/milestogo/config.h | 10 ++--- .../keymaps/milestogo/keymap.c | 4 +- .../handwired/MS-sculpt-mobile/readme.md | 2 +- keyboards/handwired/MS-sculpt-mobile/rules.mk | 5 ++- 8 files changed, 51 insertions(+), 25 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c index 491a7933..3a9b8699 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c @@ -19,7 +19,7 @@ uint8_t babble_mode =0 ; macro_t* switch_babble_mode( uint8_t id) { babble_mode= id; - return MACRO_NONE; //less typing above + return MACRO_NONE; //less typing where called } @@ -42,12 +42,32 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { return MACRO_NONE; } */ - switch(babble_mode) { - - + + +#ifdef MS_MODE + if ( BABL_WINDOWS == shortcut ) { return switch_babble_mode(MS_MODE); } +#endif +#ifdef MAC_MODE + if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE); } +#endif +#ifdef LINUX_MODE + if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE); } +#endif + #ifdef READMUX_MODE + if ( BABL_READLINE == shortcut ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; } +#endif +#ifdef VI_MODE + if ( BABL_VI == shortcut ) { return switch_babble_mode(VI_MODE); } +#endif +#ifdef EMACS_MODE + if ( BABL_EMACS == shortcut ) { return switch_babble_mode(EMACS_MODE); } +#endif + + + + switch(babble_mode) { #ifdef MS_MODE - if ( BABL_WINDOWS == shortcut ) { return switch_babble_mode(MS_MODE); } case MS_MODE: BABLM( BABL_GO_LEFT_1C, T(LEFT), END ); @@ -111,7 +131,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef LINUX_MODE - if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE); } case LINUX_MODE: BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); @@ -172,7 +191,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #endif #ifdef MAC_MODE - if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE); } case MAC_MODE: BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); @@ -234,8 +252,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef EMACS_MODE - if ( BABL_EMACS == shortcut ) { return switch_babble_mode(EMACS_MODE); } - case EMACS_MODE: switch(shortcut) { //probably should allow meta to not be ALT @@ -303,7 +319,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef VI_MODE - if ( BABL_VI == shortcut ) { return switch_babble_mode(VI_MODE); } case VI_MODE: // you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell) @@ -371,7 +386,8 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef READMUX_MODE // Readline command line editing + tmux windowing // I havent decided how much to do readline and how much tmux - if ( BABL_READLINE == shortcut ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; } + + case READMUX_MODE: BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h index 67153fb0..3067c854 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h @@ -18,6 +18,9 @@ and jeebak & algernon's keymap /* *************************** // Uncomment any modes you want. Whatever mode = 0 will be the default on boot +// Expect to get errors if you comment a feature out and leave it in your keymap. + +#define USE_BABLPASTE //#define MS_MODE 0 // Windows. //#define MAC_MODE 1 @@ -26,6 +29,11 @@ and jeebak & algernon's keymap //#define VI_MODE 4 //#define WORDSTAR_MODE 5 //#define READMUX 6 // Readline and tmux + +// This removes everything but cursor movement +//#define BABL_MOVEMENTONLY +// and this just removes browser shortcuts +//#define BABL_NOBROWSER ****************************/ @@ -130,7 +138,7 @@ enum { }; // BUG, used to jump to babble functiion. Surely there is a way to calculate size of enum? -#define BABL_NUM_MACROS 48 + 4 // 48 + # of defined modes. +#define BABL_NUM_MACROS 48+4 // 48 + # of defined modes. /* And all the shorthand keymap ready versions */ // First the mode switching macros diff --git a/keyboards/handwired/MS-sculpt-mobile/config.h b/keyboards/handwired/MS-sculpt-mobile/config.h index d85c5c62..f8951427 100644 --- a/keyboards/handwired/MS-sculpt-mobile/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/config.h @@ -25,7 +25,6 @@ along with this program. If not, see . #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 #define MANUFACTURER Microsoftplus -#define PRODUCT sculpt mobile #define DESCRIPTION 6000 /* key matrix size */ @@ -33,14 +32,14 @@ along with this program. If not, see . #define MATRIX_COLS 18 #ifdef ASTAR - +#define PRODUCT sculpt mobile astar /*0 1 2 3 4 5 6 7 8 */ #define MATRIX_ROW_PINS {D7, C6, D4, D0, D1, D3, D2, E2} /* A B C D E F G H I J K L M N O P Q R */ #define MATRIX_COL_PINS {B4, B5, E6, B7, B6, D6, C7, F7, F6, F4,F5, F1,F0, D5, B0, B1, B2, B3} #else - +#define PRODUCT sculpt mobile teensypp /* 0 1 2 3 4 5 6 7 */ #define MATRIX_ROW_PINS { F7,F6,F4,F5,F3,F2,F1,F0} /* A B C D E F G H I J K L M N O P Q R */ diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile index 9d3df596..8b829218 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile @@ -17,5 +17,5 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR - include ../../../../Makefile + include ../../../../../Makefile endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h index 9f9b0509..8cf4202c 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -10,15 +10,15 @@ #ifdef USE_BABLPASTE //define BabblePaste maps // Windows. -#define MS_MODE 0 -#define MAC_MODE 1 +#define MAC_MODE 0 +#define MS_MODE 1 //aka gnome+KDE //#define LINUX_MODE 2 //#define EMACS_MODE 3 -#define VI_MODE 4 -//#define WORDSTAR_MODE 5 +#define VI_MODE 3 // Readline and tmux -#define READMUX_MODE 6 +#define READMUX_MODE 2 +//#define WORDSTAR_MODE 5 #endif // Uncomment if you need more free flash space diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index a6628254..3b2f53a0 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), /* -* |ESC | Win| MAC|RdLn| VI | | | | | | | | | | | | +* |ESC | MAC| Win|RdLn| VI | | | | | | | | | | | | * -------------------------------------------------------------------------------' * | | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| * --------------------------------------------------------------------------- @@ -192,6 +192,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) /* If this is in the range of BABL macros, call a separate function */ /* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ #ifdef USE_BABLPASTE + if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { if (record->event.pressed) { // is there a case where this isn't desired? @@ -201,6 +202,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } #endif + // MACRODOWN only works in this function switch(id) { case 0: diff --git a/keyboards/handwired/MS-sculpt-mobile/readme.md b/keyboards/handwired/MS-sculpt-mobile/readme.md index 58029b50..d435b449 100644 --- a/keyboards/handwired/MS-sculpt-mobile/readme.md +++ b/keyboards/handwired/MS-sculpt-mobile/readme.md @@ -53,6 +53,6 @@ The Astar mini has all pins exposed , so you can do 18x8 If you want a speaker, LEDs &etc, you'll need to free up a pin. I recommend joining columns R and L to the same pin. -Building - edit rules.mk to set ASTAR=1 or comment it out for teensy2++ +Building - add ASTAR=1 to the compile line or leave out for teensy2++ diff --git a/keyboards/handwired/MS-sculpt-mobile/rules.mk b/keyboards/handwired/MS-sculpt-mobile/rules.mk index 34ac78da..680389c8 100644 --- a/keyboards/handwired/MS-sculpt-mobile/rules.mk +++ b/keyboards/handwired/MS-sculpt-mobile/rules.mk @@ -1,10 +1,10 @@ -#CFLAGS=-D ASTAR ## Project specific files SRC= babblePaste.c ifdef ASTAR + CFLAGS=-D ASTAR OPT_DEFS += -DBOOTLOADER_SIZE=4096 MCU = atmega32u4 OPT_DEFS += -DCATERINA_BOOTLOADER @@ -40,7 +40,8 @@ BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE ?= no # Audio output on port C6 -USB ?= /dev/cu.usbmodem1421 +USB ?= /dev/cu.usbmodem14141 + upload: build From cd1eb8d24649662dcc1e916634beb481c98173d7 Mon Sep 17 00:00:00 2001 From: Gunther Gruber Date: Wed, 8 Mar 2017 11:13:19 +0100 Subject: [PATCH 056/183] added readme file --- keyboards/ergodox/keymaps/guni/readme.txt | 133 ++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 keyboards/ergodox/keymaps/guni/readme.txt diff --git a/keyboards/ergodox/keymaps/guni/readme.txt b/keyboards/ergodox/keymaps/guni/readme.txt new file mode 100644 index 00000000..93ae5f05 --- /dev/null +++ b/keyboards/ergodox/keymaps/guni/readme.txt @@ -0,0 +1,133 @@ +My main layout (Layer 0) is based on qwerty. I tried to fit the layout of the kinesis keyboard onto the ergodox. Furthermore I did some tweaks. +The other layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I cant press the reset button, so i need a key to send the teensy into reprogram mode. +There is a layer with symbols a numpad. These layers are seldom used. Except the F Keys and the teensy key. As I own a ergodox I need a key to reprogram, because I can't access the reset button. + +I am a linux user and need the esc key and str keys often therefore it is easyly accessed. Switching console str+alt+tab+f2 (layer 2 and 2) is tricky but you get it after a while. +As I live in germany and need to type umlaut frquently, i mapped the CAPS to the meta key, and swapped ' and ". So I can type ö with CAPS o + ¨. no need to press o+SHIFT+' +As a note for linux users i use str+p to get last command, instead of using the cursor keys. + +HOWTO to convert CAPS to Meta-Key and swap ' with " + +* create file with following content +.Xmodmap + clear Lock + keycode 48 = quotedbl apostrophe quotedbl apostrophe + keycode 66 = Multi_key + +* apply with +xmodmap .Xmodmap + +* convert to xkbmap +xkbcomp $DISPLAY $HOME/.xkbmap + +* automatic startup each time you startup x +echo 'xkbcomp $HOME/.xkbmap $DISPLAY' >> ~/.xinitrc + + KEYMAP( // layer 0 : default + // left hand + KC_EQL , KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, + KC_FN25 , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, + KC_FN27 , KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, + KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT, + KC_NO , KC_NO , + KC_NO , + KC_BSPC,KC_DEL ,KC_FN23, + // right hand + KC_RBRC , KC_6, KC_7 , KC_8, KC_9, KC_0, KC_MINS, + KC_END , KC_Y, KC_U , KC_I, KC_O, KC_P, KC_FN28, + KC_H , KC_J, KC_K , KC_L, KC_SCLN,KC_FN30, + KC_PGDN , KC_N, KC_M , KC_COMM,KC_DOT, KC_SLSH,KC_FN29, + KC_RALT , KC_DOWN,KC_UP, KC_NO ,KC_RGUI, + KC_NO , KC_NO, + KC_NO , + KC_FN29,KC_ENT ,KC_SPC + ), + + KEYMAP( // layer 1 : function and symbol keys + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, + KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS, + KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR, + KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_FN1, + // right hand + KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS, + LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS, + KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + + KEYMAP( // layer 2: navigation + // left hand + KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS, + KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO, + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO,KC_NO,KC_NO, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_FN1 , + // right hand + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS ,KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_END ,KC_TRNS, + KC_NO, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,KC_TRNS, + KC_TRNS,KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP,KC_TRNS, + KC_LEFT, KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + KEYMAP( // layer 3 : teensy bootloader functions + // left hand + KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_FN1 , + // 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_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + + + KEYMAP( // layer 4: numpad + // left hand + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC, + KC_TRNS,KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS,KC_BSPC, + KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS,KC_PENT, + KC_TRNS,KC_NO, KC_P1, KC_P2, KC_P3, KC_PPLS,KC_PENT, + KC_P0, KC_PDOT,KC_SLSH,KC_PENT,KC_PENT, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + +}; + + From 2aa079d93e31403debd467fb4eed98fb98cced0f Mon Sep 17 00:00:00 2001 From: Lukas Stiebig Date: Wed, 8 Mar 2017 20:41:35 +0100 Subject: [PATCH 057/183] Left control and alt Use the left control and the left alt key. --- quantum/quantum_keycodes.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 63b62692..903d57f1 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -183,6 +183,7 @@ enum quantum_keycodes { #define ALTG(kc) (kc | QK_RCTL | QK_RALT) #define SCMD(kc) (kc | QK_LGUI | QK_LSFT) #define SWIN(kc) SCMD(kc) +#define LCA(kc) (kc | QK_LCTL | QK_LALT) #define MOD_HYPR 0xf #define MOD_MEH 0x7 @@ -339,6 +340,7 @@ enum quantum_keycodes { #define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ #define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc) #define SWIN_T(kc) SCMD_T(kc) +#define LCA_T(kc) MT((MOD_LCTL | MOD_LALT), kc) // Left control and left alt // Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap #define KC_HYPR HYPR(KC_NO) From 8cc70f4d9dd75e4efb186ec71ee4a3a7a0dd4587 Mon Sep 17 00:00:00 2001 From: Lukas Stiebig Date: Wed, 8 Mar 2017 20:58:55 +0100 Subject: [PATCH 058/183] Added german-lukas Added my keymap called germman-lukas. --- .../ergodox/keymaps/german-lukas/keymap.c | 235 ++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 keyboards/ergodox/keymaps/german-lukas/keymap.c diff --git a/keyboards/ergodox/keymaps/german-lukas/keymap.c b/keyboards/ergodox/keymaps/german-lukas/keymap.c new file mode 100644 index 00000000..f6709595 --- /dev/null +++ b/keyboards/ergodox/keymaps/german-lukas/keymap.c @@ -0,0 +1,235 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "keymap_german.h" + +// Layer names +#define BASE 0 // default layer +#define SYMB 1 // symbol layer +#define MDIA 2 // media keys +#define SHRT 3 // shortcut layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Caps | 1 | 2 | 3 | 4 | 5 |X ` X| | PRSC | 6 | 7 | 8 | 9 | 0 | ß | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L1 | | L1 | Z | U | I | O | P | Ü | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Esc | A | S | D | F | G |------| |------| H | J | K | L | Ö | Ä/L2 | + * |--------+------+------+------+------+------| L2 | | L2 |------+------+------+------+------+--------| + * | LShift | Y | X | C | V | B | | | | N | M | , | . | - | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGui | ^ | < | LEFT | RIGHT| | Up | Down | # | + | LCA | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | CTRL | ALT | | Alt |Ctrl/Esc| + * ,------+------+------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Del |------| |------| Bkspc | Enter| + * | | | 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_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, DE_ACUT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LGUI, DE_CIRC, DE_LESS, KC_LEFT, KC_RIGHT, + KC_LCTRL, KC_LALT, + KC_HOME, + KC_SPC ,KC_DELT,KC_END, + // right hand + KC_PSCREEN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(MDIA), DE_Z, KC_U, KC_I, KC_O, KC_P, LT(SHRT,DE_UE), + KC_H, KC_J, KC_K, KC_L, DE_OE, LT(MDIA,DE_AE), + MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_RSFT, + KC_UP, KC_DOWN, DE_HASH, DE_PLUS, LCA_T(KC_NO), + KC_RALT, KC_RCTRL, + KC_PGUP, + KC_PGDN, KC_BSPC, 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,DE_EXLM,DE_AT, DE_LCBR,DE_RCBR,DE_PIPE,KC_TRNS, + KC_TRNS,DE_HASH,DE_DLR, DE_LPRN,DE_RPRN,DE_GRV, + KC_TRNS,DE_PERC,DE_CIRC,DE_LBRC,DE_RBRC,DE_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, DE_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, DE_PLUS, KC_TRNS, + KC_TRNS, DE_AMPR, KC_1, KC_2, KC_3, DE_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, DE_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | Lclk | MsUp | Rclk | | | | | |VolDwn| Mute |VolUp | | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | Btn4 |MsLeft|MsDown|MsRght| Btn5 |------| |------| | Prev | Stop | Play | Next | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |WhRght|WhDown| WhUp |WhLeft|WhClk | | | |BwSrch|BwBack|BwHome|BwRefr|BwFwd | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | |MsAcl0|MsAcl1|MsAcl2| | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | |Brwser|Brwser| + * | Lclk | Rclk |------| |------|Back |Forwd | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + // left hand + KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_TRNS, + KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, + KC_TRNS, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5, + KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, KC_TRNS, + KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_BTN1, KC_BTN2, KC_TRNS, + // right hand + KC_TRNS, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11, + KC_TRNS, KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_F12, + KC_TRNS, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_TRNS, + KC_TRNS, KC_WSCH, KC_WBAK, KC_WHOM, KC_WREF, KC_WFWD, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_WBAK, KC_WFWD +), + +/* Keymap 3: Linux shortcuts + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | |LCA-F1|LCA-F2|LCA-F3|LCA-F4|LCA-F5| | | |LCA-F6|LCA-F7|LCA-F8|LCA-F9| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |LCA-Le| |LCA-Ri| |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | |LCA-Le|LCA-Ri| | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[SHRT] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4), LCA(KC_F5), KC_TRNS, + KC_TRNS, KC_TRNS, LCA(KC_LEFT), KC_TRNS, LCA(KC_RIGHT), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, LCA(KC_LEFT), LCA(KC_RIGHT), + 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, LCA(KC_F6), LCA(KC_F7), LCA(KC_F8), LCA(KC_F9), KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + LCA(KC_UP), LCA(KC_DOWN), KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +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) { + case SYMB: + ergodox_right_led_1_on(); + break; + case MDIA: + ergodox_right_led_2_on(); + break; + case SHRT: + ergodox_right_led_3_on(); + break; + default: + ergodox_board_led_off(); + break; + } + +}; From 2f5143e219c8410cfaeeadb87782b3dc212aa3b9 Mon Sep 17 00:00:00 2001 From: Lukas Stiebig Date: Wed, 8 Mar 2017 21:09:51 +0100 Subject: [PATCH 059/183] Corrected the description of the layer Corrected the description of the Shortcuts layer. --- keyboards/ergodox/keymaps/german-lukas/keymap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/german-lukas/keymap.c b/keyboards/ergodox/keymaps/german-lukas/keymap.c index f6709595..c6e9f2f9 100644 --- a/keyboards/ergodox/keymaps/german-lukas/keymap.c +++ b/keyboards/ergodox/keymaps/german-lukas/keymap.c @@ -162,8 +162,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | * `--------------------' `--------------------' */ -// MEDIA AND MOUSE +// Shortcuts [SHRT] = KEYMAP( + // left hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4), LCA(KC_F5), KC_TRNS, KC_TRNS, KC_TRNS, LCA(KC_LEFT), KC_TRNS, LCA(KC_RIGHT), KC_TRNS, From 34fa8fd5d3f0c46135f22d5d24b098c9e7117b67 Mon Sep 17 00:00:00 2001 From: Lukas Stiebig Date: Wed, 8 Mar 2017 21:14:16 +0100 Subject: [PATCH 060/183] readme Added a readme.md file for the keymap german-lukas. --- keyboards/ergodox/keymaps/german-lukas/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 keyboards/ergodox/keymaps/german-lukas/README.md diff --git a/keyboards/ergodox/keymaps/german-lukas/README.md b/keyboards/ergodox/keymaps/german-lukas/README.md new file mode 100644 index 00000000..3566b4ee --- /dev/null +++ b/keyboards/ergodox/keymaps/german-lukas/README.md @@ -0,0 +1,12 @@ +# About this keymap + +This keymap is based on the qwertz layout. +It has a key for pressing the left control and the left alt key at once. + +Linux makes a difference between AltGr and Control + Alt. Some keybindings are easier to press now. + +Also, I added a layer for pressing Control + Alt + F-Keys very fast. + +# Layer + +Each layer in the *keymap.c*-file has a comment showing the mappings of the layer. From 88e862e4728343fab4ed7e8dc44ae5594b702955 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Wed, 8 Mar 2017 16:00:23 -0500 Subject: [PATCH 061/183] Update smt keymaps for consistency --- keyboards/lets_split/keymaps/smt/keymap.c | 52 ++++---- keyboards/planck/keymaps/smt/keymap.c | 56 +++++---- keyboards/preonic/keymaps/smt/keymap.c | 143 ++++++++++++++-------- keyboards/tv44/keymaps/smt/keymap.c | 24 ++-- 4 files changed, 163 insertions(+), 112 deletions(-) diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c index 5ba5417a..b7db699f 100644 --- a/keyboards/lets_split/keymaps/smt/keymap.c +++ b/keyboards/lets_split/keymaps/smt/keymap.c @@ -28,6 +28,12 @@ enum custom_keycodes { #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] = { /* Qwerty @@ -42,10 +48,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = KEYMAP( \ - ALL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ - CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \ - MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, \ + MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Colemak @@ -60,10 +66,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = KEYMAP( \ - ALL_T(KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ - CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ - SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \ - MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, 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, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, \ + MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Dvorak @@ -78,28 +84,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_DVORAK] = KEYMAP( \ - ALL_T(KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ - CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, \ - SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT), \ - MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, 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, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ + MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Lower * ,-----------------------------------------------------------------------------------. * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| + * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_LOWER] = KEYMAP( \ - KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ - KC_DLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_HOME, KC_PGUP, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_END, KC_PGDN, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + CTL_T(KC_DLR), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, _______, _______, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), /* Raise @@ -110,14 +116,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | - | / | = | [ | ] | \ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | Play | + * | | | | | | | | | Home |PageDn|PageUp| End | * `-----------------------------------------------------------------------------------' */ [_RAISE] = KEYMAP( \ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ - _______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ - _______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ + _______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS), \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), /* Adjust (Lower + Raise) diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c index afc82b49..2e1c3554 100644 --- a/keyboards/planck/keymaps/smt/keymap.c +++ b/keyboards/planck/keymaps/smt/keymap.c @@ -31,6 +31,12 @@ enum planck_keycodes { #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] = { /* Qwerty @@ -45,10 +51,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = { - {ALL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, - {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Colemak @@ -63,10 +69,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = { - {ALL_T(KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, - {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, 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}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -81,17 +87,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_DVORAK] = { - {ALL_T(KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, - {SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, - {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, 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}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -99,10 +105,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_LOWER] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_HOME, KC_PGUP}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_END, KC_PGDN}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {CTL_T(KC_DLR), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Raise @@ -113,19 +119,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | - | / | = | [ | ] | \ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | + * | | | | | | | | | Home |PageDn|PageUp| End | * `-----------------------------------------------------------------------------------' */ [_RAISE] = { - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, - {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS)}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END} }, /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | + * | | Reset| | | | | | | | | | Reset| * |------+------+------+------+------+-------------+------+------+------+------+------| * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -135,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_ADJUST] = { - {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c index ba05d9ad..690feca4 100644 --- a/keyboards/preonic/keymaps/smt/keymap.c +++ b/keyboards/preonic/keymaps/smt/keymap.c @@ -9,15 +9,17 @@ // 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 _DVORAK 0 -#define _QWERTY 1 -#define _LOWER 2 -#define _RAISE 3 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 #define _ADJUST 16 enum preonic_keycodes { - DVORAK = SAFE_RANGE, - QWERTY, + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, LOWER, RAISE, BACKLIT @@ -27,57 +29,84 @@ enum preonic_keycodes { #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] = { -/* Dvorak +/* Qwerty * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | - | + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DVORAK] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, - {SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, - {ALL_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +[_QWERTY] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 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}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -/* Qwerty +/* Colemak * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * | Esc | A | R | S | T | D | H | N | E | I | O | " | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QWERTY] = { - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - {_______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, _______}, - {_______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +[_COLEMAK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, 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}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | - | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, 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}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -85,11 +114,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_LOWER] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_HOME, KC_PGUP}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_END, KC_PGDN}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {CTL_T(KC_DLR), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Raise @@ -102,24 +131,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | - | / | = | [ | ] | \ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | + * | | | | | | | | | Home |PageDn|PageUp| End | * `-----------------------------------------------------------------------------------' */ [_RAISE] = { - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, - {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS)}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END} }, /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Reset| | | | | | | | | | Del | + * | | Reset| | | | | | | | | | Reset| * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty| | | | + * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -128,8 +157,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = { {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, - {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, DVORAK, QWERTY, _______, _______, _______}, + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -145,8 +174,9 @@ float tone_startup[][2] = { {NOTE_B6, 8} }; -float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_goodbye[][2] = SONG(GOODBYE_SOUND); @@ -160,21 +190,30 @@ void persistant_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case DVORAK: + case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); #endif - persistant_default_layer_set(1UL<<_DVORAK); + persistant_default_layer_set(1UL<<_QWERTY); } return false; break; - case QWERTY: + case COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + PLAY_NOTE_ARRAY(tone_colemak, false, 0); #endif - persistant_default_layer_set(1UL<<_QWERTY); + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); } return false; break; diff --git a/keyboards/tv44/keymaps/smt/keymap.c b/keyboards/tv44/keymaps/smt/keymap.c index de5ce03e..532e74de 100644 --- a/keyboards/tv44/keymaps/smt/keymap.c +++ b/keyboards/tv44/keymaps/smt/keymap.c @@ -32,8 +32,8 @@ enum planck_keycodes { // 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 -#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt +#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt (Ctrl+Alt+Shift) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -117,13 +117,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LOWER] = KEYMAP_TV45( /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ - KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL , +ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL , /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ - KC_DLR , KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_ASTR, KC_4, KC_5, KC_6, KC_DOT, KC_PGUP , +CTL_T(KC_DLR), KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_ASTR, KC_4, KC_5, KC_6, KC_DOT, KC_PGUP , /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ - KC_EQL , KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_SLSH, KC_1, KC_2, KC_3, KC_UP, KC_PGDN , +SFT_T(KC_EQL), KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_SLSH, KC_1, KC_2, KC_3, KC_UP, SFT_T(KC_PGDN), /*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ - BACKLIT , _______ , _______ , KC_HOME , KC_END , _______ , KC_LEFT, KC_DOWN, KC_RGHT ), +ALT_T(BACKLIT), _______ , _______ , KC_HOME , KC_END , _______ , KC_LEFT, KC_DOWN, KC_RGHT ), /*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/ /* Raise @@ -139,18 +139,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RAISE] = KEYMAP_TV45( /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ - KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , +ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE , +CTL_T(KC_F1), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE , /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS , + SFT_T(KC_F7), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS), /*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ - BACKLIT , _______ , _______ , KC_MPLY , KC_MNXT , _______ , KC_MUTE, KC_VOLD, KC_VOLU ), +ALT_T(BACKLIT), _______ , _______ , KC_MPLY , KC_MNXT , _______ , KC_MUTE, KC_VOLD, KC_VOLU ), /*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/ /* Adjust (Lower + Raise) * ,---------+------+------+------+------+------+------+------+------+------+------+---------. - * | | Reset| | | | | | | | | | Del | + * | | Reset| | | | | | | | | | Reset | * |---------`------`------`------`------`------`------`------`------`------`------`---------| * | | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |----------`------`------`------`------`------`------`------`------`------`------`--------| @@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = KEYMAP_TV45( /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ - _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , + _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET , /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ _______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______ , /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ From b5bfb5104b63766ab9a54509302a3f4b0b1d7b16 Mon Sep 17 00:00:00 2001 From: milestogo Date: Wed, 8 Mar 2017 15:48:39 -0800 Subject: [PATCH 062/183] docs for babblepaste --- .../MS-sculpt-mobile/babblePaste.txt | 586 ++++-------------- .../keymaps/milestogo/keymap.c | 10 +- 2 files changed, 115 insertions(+), 481 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt index 6170ec7a..cf75e153 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt @@ -1,489 +1,123 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. + BabblePaste is a library of common macros used to make sure that +you can have one "paste" button on one layer, and it will do the +right thing on any OS or app. Windows=Ctrl-V. Mac = Command-V and so on. -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 -*/ +The babblepaste library looks for the current status in a babble_mode global variable. +To switch modes, run the switch_babble_mode() function, or a pre defined macro. +Currently supported are Windows, OS X, Gnome/kde, Emacs, VI and readline, +across 42+ common macro actions. -#include "eeconfig.h" +###To use the library +1) Paste the following into your config.h. -// Comment out anything you will never use. -// Windows. -#define MS_MODE 0 -#define MAC_MODE 1 -//aka gnome+KDE -#define LINUX_MODE 2 -#define EMACS_MODE 3 -#define VI_MODE 4 -//#define WORDSTAR_MODE 5 +//////Begin////// +#define USE_BABLPASTE 1 + +#ifdef USE_BABLPASTE +/* define BabblePaste maps. Whatever = 0 will be the default. */ +// MAC_MODE 0 +// MS_MODE 1 +// LINUX_MODE 2 +// EMACS_MODE 3 +// VI_MODE 3 // Readline and tmux -#define READMUX 6 +// READMUX_MODE 2 +// WORDSTAR_MODE 5 +#endif -// GLOBAL variable. Sets startup default if no eeppom -char babble_mode = MAC_MODE ; +// Uncomment these to remove options an free up flash space +// This removes everything but cursor movement +// BABL_MOVEMENTONLY +// and this just removes browser shortcuts +// BABL_NOBROWSER +///////End/////// -/* minimum set required for babble: - // Cut & Paste - BABL_UNDO - BABL_REDO - BABL_CUT - BABL_COPY - BABL_PASTE - BABL_SELECT_ALL - - // Movement - BABL_DEL_RIGHT_1C - BABL_DEL_RIGHT_1C - BABL_DEL_LEFT_WORD - BABL_DEL_RIGHT_WORD - BABL_GO_LEFT_1C - BABL_GO_LEFT_WORD - BABL_GO_RIGHT_WORD - BABL_GOTO_START_LINE - BABL_GOTO_START_DOC - BABL_GOTO_END_LINE - BABL_GOTO_END_DOC - BABL_GOTO_NEXT_LINE // down arrow will do. - BABL_GOTO_PREV_LINE // up arrow will do. - BABL_PGDN - BABL_PGUP - - // GUI - BABL_FIND - BABL_FIND_NEXT - BABL_FIND_REPLACE - BABL_RUNAPP - BABL_SWITCH_NEXT - BABL_SWITCH_LAST // previous - BABL_CLOSE_APP - BABL_HELP -*/ +2) Add the following to your keymap in the action_get_macro +//////Begin////// +#ifdef USE_BABLPASTE + if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { + if (record->event.pressed) { // is there a case where this isn't desired? + + babblePaste ( record, id ); + return MACRO_NONE; + } + } +#endif +///////End/////// +3) add Babbelpaste actions to your keymap. See the full list in babblePaste.h, or the +list below +B_L1C // go left 1 char +B_R1C // go Right 1 char + B_L1W //GO_LEFT_1 WORD + B_R1W //BABL_GO_RIGHT_1 WORD + B_GSOL // BABL_GOTO_START of _LINE + B_GEOL // BABL_GOTO_END_LINE + B_GTOP //BABL_GOTO_START_DOC + B_GEND //BABL_GO_END_DOC + B_DOWN //BABL_GO_NEXT_LINE + B_UP // BABL_GO_PREV_LINE + B_PGDN //PGDN + B_PGUP //PGUP +// B_BKSP //backspace so why bother. + B_DEL // DEL_RIGHT_1 Char // usually = Del + B_DLW // DEL_LEFT_ 1 WORD) + B_DRW //DEL_RIGHT_1 WORD + B_DEOL // delete from cursor to end of line + B_DSOL // delete from cursor to begining line + B_UNDO //UNDO + B_REDO // REDO + B_CUT // CUT) + B_COPY // COPY) + B_PAST // PASTE) + B_SELA // SELECT_ALL + B_FIND // FIND) + B_FINDN //FIND_NEXT) + B_FINDR // FIND_REPLACE) + B_RAPP // open application launcher + B_NAPP // switch to next app + B_PAPP // switch to previous app + B_CAPP // CLOSE_APP) + B_HELP // HELP) + B_NTAB // BROWSER_NEW_TAB) + B_CTAB //BROWSER_CLOSE_TAB) + B_ROTB //BROWSER_REOPEN_LAST_TAB) + B_NXTB //BROWSER_NEXT_TAB) + B_PTAB //BROWSER_PREV_TAB) + B_NURL //BROWSER_jump to URL_BAR) + B_BFWD // BROWSER_FORWARD (in history) + B_BBAK //BROWSER_BACK (in history) + B_BFND // BROWSER_FIND) + B_BOOK //BROWSER_New BOOKMARK) + B_BDEV //BROWSER_ Open DEV_TOOLS) // hard one to remember + B_BRLD // BROWSER_RELOAD Page + B_BFUlL // BROWSER_FULLSCREEN) + B_ZMIN // BROWSER_ZOOM_IN) + B_ZMOT //BROWSER_ZOOM_OUT) -static macro_t *babblePaste (keyrecord_t *record, uint16_t shortcut) { - switch(babble_mode) { - -#ifdef MS_MODE - case MS_MODE: - switch(shortcut) { - - case BABL_UNDO: - return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); - case BABL_REDO: - return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); - case BABL_CUT: - return MACRO( D(LCTRL), T(X), U(LCTRL), END ); - case BABL_COPY: - return MACRO( D(LCTRL), T(C), U(LCTRL), END ); - case BABL_PASTE: - return MACRO( D(LCTRL), T(V), U(LCTRL), END ); - case BABL_SELECT_ALL: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - case BABL_DEL_RIGHT_1C: - return MACRO( D(DEL), END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); - case BABL_GOTO_START_LINE: - return MACRO( T(HOME), END ); - case BABL_GOTO_START_DOC: - return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); - case BABL_GOTO_END_LINE: - return MACRO( T(END), END ); - case BABL_GOTO_END_DOC: - return MACRO( D(LCTRL),T(END), U(LCTRL),END ); - case BABL_GOTO_NEXT_LINE: - return MACRO( T(DOWN), END ); - case BABL_GOTO_PREV_LINE: - return MACRO( T(UP), END ); - case BABL_PGDN: - return MACRO( T(PGDN), END ); - case BABL_PGUP: - return MACRO( T(PGUP), END ); - case BABL_FIND: - return MACRO( D(LCTRL),T(F), U(LCTRL),END ); - case BABL_FIND_NEXT: - return MACRO( T(F3),END ); - case BABL_FIND_REPLACE: - return MACRO( D(LCTRL),T(H), U(LCTRL),END ); - case BABL_RUNAPP: - return MACRO( D(LGUI),T(R), U(LGUI),END ); - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LALT),T(TAB), U(LALT),END ); - case BABL_SWITCH_APP_LAST: - return MACRO( D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); - case BABL_CLOSE_APP: - return MACRO( D(LALT),T(F4), U(LALT),END ); - case BABL_HELP: - return MACRO( T(F1),END ); - break; - - return MACRO_NONE; - } - -#endif -#ifdef LINUX_MODE - case LINUX_MODE: - switch(shortcut) { - - case BABL_UNDO: - return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); - case BABL_REDO: - return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); - case BABL_CUT: - return MACRO( D(LCTRL), T(X), U(LCTRL), END ); - case BABL_COPY: - return MACRO( D(LCTRL), T(C), U(LCTRL), END ); - case BABL_PASTE: - return MACRO( D(LCTRL), T(V), U(LCTRL), END ); - case BABL_SELECT_ALL: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - case BABL_DEL_RIGHT_1C: - return MACRO( D(DEL), END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); - case BABL_GOTO_START_LINE: - return MACRO( T(HOME), END ); - case BABL_GOTO_START_DOC: - return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); - case BABL_GOTO_END_LINE: - return MACRO( T(END), END ); - case BABL_GOTO_END_DOC: - return MACRO( D(LCTRL),T(END), U(LCTRL),END ); - case BABL_GOTO_NEXT_LINE: - return MACRO( T(DOWN), END ); - case BABL_GOTO_PREV_LINE: - return MACRO( T(UP), END ); - case BABL_PGDN: - return MACRO( T(PGDN), END ); - case BABL_PGUP: - return MACRO( T(PGUP), END ); - case BABL_FIND: - return MACRO( D(LCTRL),T(F), U(LCTRL),END ); - case BABL_FIND_NEXT: - /* return MACRO( T(F3),END ); KDE */ - return MACRO( D(LCTRL),T(G), U(LCTRL),END ); // Gnome*/ - case BABL_FIND_REPLACE: - /* return MACRO( D(LCTRL),T(R), U(LCTRL),END ); KDE */ - return MACRO( D(LCTRL),T(H), U(LCTRL),END ); // Gnome*/ - case BABL_RUNAPP: - return MACRO( D(LALT),T(F2), U(LALT),END ); - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LCTL),T(TAB), U(LCTL),END ); - case BABL_SWITCH_APP_LAST: - return MACRO( D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); - case BABL_CLOSE_APP: - return MACRO( D(LALT),T(F4), U(LALT),END ); - case BABL_HELP: - return MACRO_NONE; - break; - - return MACRO_NONE; - } - -#endif - - - -#ifdef MAC_MODE - case MAC_MODE: - switch(shortcut) { - - case BABL_UNDO: - return MACRO( D(LGUI), T(Z), U(LGUI), END ); - case BABL_REDO: - return MACRO( D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); - case BABL_CUT: - return MACRO( D(LGUI), T(X), U(LGUI), END ); - case BABL_COPY: - return MACRO( D(LGUI), T(C), U(LGUI), END ); - case BABL_PASTE: - return MACRO( D(LGUI), T(V), U(LGUI), END ); - case BABL_SELECT_ALL: - return MACRO( D(LGUI), T(A), U(LGUI), END ); - case BABL_DEL_RIGHT_1C: - return MACRO( D(DEL), END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LALT), T(BSPACE), U(LALT), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LALT), T(DEL), U(LALT), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LALT), T(LEFT), U(LALT), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LALT), T(RIGHT), U(LALT), END ); - case BABL_GOTO_START_LINE: - return MACRO( D(LGUI), T(LEFT), U(LGUI), END ); - case BABL_GOTO_START_DOC: - return MACRO( D(LGUI),T(UP), U(LGUI),END ); - case BABL_GOTO_END_LINE: - return MACRO( D(LGUI), T(RIGHT), U(LGUI), END ); - case BABL_GOTO_END_DOC: - return MACRO( D(LGUI),T(DOWN), U(LGUI),END ); - case BABL_GOTO_NEXT_LINE: - return MACRO( T(DOWN), END ); - case BABL_GOTO_PREV_LINE: - return MACRO( T(UP), END ); - case BABL_PGDN: - return MACRO( D(LALT), T(DOWN), U(LALT), END ); - case BABL_PGUP: - return MACRO( D(LALT), T(UP), U(LALT), END ); - case BABL_FIND: - return MACRO( D(LGUI),T(F), U(LGUI),END ); - case BABL_FIND_NEXT: - return MACRO( D(LGUI),T(G), U(LGUI),END ); - case BABL_FIND_REPLACE: - return MACRO( D(LGUI),T(F), U(LGUI),END ); - case BABL_RUNAPP: - return MACRO( D(LGUI),T(R), U(LGUI),END ); - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LGUI),T(TAB), U(LGUI),END ); - case BABL_SWITCH_APP_LAST: - return MACRO( D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); - case BABL_CLOSE_APP: - return MACRO( D(LGUI),T(Q), U(LGUI),END ); - case BABL_HELP: - return MACRO( D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); - break; - - return MACRO_NONE; - } - -#endif - -#ifdef EMACS_MODE - case EMACS_MODE: - switch(shortcut) { -//probably should allow meta to not be ALT - case BABL_UNDO: - return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); - case BABL_REDO: - return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably - case BABL_CUT: - return MACRO( D(LCTL), T(W), U(LCTL), END ); - case BABL_COPY: - return MACRO( D(LALT), T(W), U(LALT), END ); - case BABL_PASTE: - return MACRO( D(LCTL), T(Y), U(LCTL), END ); - case BABL_SELECT_ALL: - return MACRO(D(LCTL), T(X), U(LCTL),T(H), END ); - case BABL_DEL_RIGHT_1C: - return MACRO( D(LCTL), T(D), U(LCTL),END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTL), T(BSPACE), U(LCTL), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LALT), T(D), U(LALT), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LALT), T(B), U(LALT), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LALT), T(F), U(LALT), END ); - case BABL_GOTO_START_LINE: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - case BABL_GOTO_START_DOC: - return MACRO( D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); - case BABL_GOTO_END_LINE: - return MACRO( D(LCTRL), T(E), U(LCTRL), END ); - case BABL_GOTO_END_DOC: - return MACRO( D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END ); - case BABL_GOTO_NEXT_LINE: - return MACRO( D(LCTRL), T(N), U(LCTRL), END ); - case BABL_GOTO_PREV_LINE: - rreturn MACRO( D(LCTRL), T(P), U(LCTRL), END ); - case BABL_PGDN: - return MACRO(D(LCTRL), T(V), U(LCTRL), END ); - case BABL_PGUP: - return MACRO( D(LALT), T(V), U(LALT), END ); - case BABL_FIND: - return MACRO( D(LCTRL), T(S), U(LCTRL),END ); - case BABL_FIND_NEXT: - return MACRO( D(LCTRL), T(S), U(LCTRL),END ); - case BABL_FIND_REPLACE: - return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); - case BABL_RUNAPP: - return MACRO( D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably - case BABL_SWITCH_APP_LAST: - return MACRO( D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably - case BABL_CLOSE_APP: - return MACRO(D(LCTL), T(X), U(LCTL),T(C),END ); - case BABL_HELP: - return MACRO( D(LCTL),T(H), U(LCTL),T(A),END); // start search in help - break; - - return MACRO_NONE; - } - -#endif -#ifdef VI_MODE - case VI_MODE: - switch(shortcut) { -//assume esc is already called - case BABL_UNDO: - return MACRO( T(U), END ); - case BABL_REDO: - return MACRO( D(LCTL), T(R), U(LCTL), END ); - case BABL_CUT: - return MACRO( T(X), END ); - case BABL_COPY: - return MACRO( T(Y),END ); - case BABL_PASTE: - return MACRO( T(P), END ); - case BABL_SELECT_ALL: - return MACRO( T(COLN),T(PERC),T(Y), END ); // wrong but helpful? - case BABL_DEL_RIGHT_1C: - return MACRO( T(X),END ); - case BABL_DEL_LEFT_WORD: - return MACRO( T(D),T(G),T(E),END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( T(D),T(W),END ); - case BABL_GO_LEFT_1C: - return MACRO( T(H), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(L), END ); - case BABL_GO_LEFT_WORD: - return MACRO( T(B),END ); - case BABL_GO_RIGHT_WORD: - return MACRO( T(W), END ); - case BABL_GOTO_START_LINE: - return MACRO( T(CIRC), END ); - case BABL_GOTO_START_DOC: - return MACRO( T(G),T(G) ,END ); - case BABL_GOTO_END_LINE: - return MACRO( T(DLR), END ); - case BABL_GOTO_END_DOC: - return MACRO( D(LSFT), T(G),U(LSFT), ,END ); - case BABL_GOTO_NEXT_LINE: - return MACRO( T(J), END ); - case BABL_GOTO_PREV_LINE: - rreturn MACRO( T(K), END ); - case BABL_PGDN: - return MACRO(D(LCTRL), T(F), U(LCTRL), END ); - case BABL_PGUP: - return MACRO( D(LCTRL), T(B), U(LCTRL), END ); - case BABL_FIND: - return MACRO( T(SLASH),END ); - case BABL_FIND_NEXT: - return MACRO( T(N),END ); - case BABL_FIND_REPLACE: - return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); - case BABL_RUNAPP: - return MACRO_NONE; - case BABL_SWITCH_APP_NEXT: - return MACRO_NONE; - case BABL_SWITCH_APP_LAST: - return MACRO_NONE; - case BABL_CLOSE_APP: - return MACRO(T(COLN), T(Q), T(EXLM),END ); - case BABL_HELP: - return MACRO(T(COLN),T(H),END); // start search in help - break; - - return MACRO_NONE; - } - -#endif -#ifdef READMUX_MODE -// I havent decided how much to do bash and how much tmux - case READMUX_MODE: - switch(shortcut) { - case BABL_UNDO: - return MACRO( D(LALT), T(R), U(LALT) , END ); - case BABL_REDO: - return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably - case BABL_CUT: - return MACRO( D(LCTL), T(K), U(LCTL), END ); // wrong half the time - case BABL_COPY: - return MACRO_NONE; - case BABL_PASTE: - return MACRO( D(LCTL), T(Y), U(LCTL), END ); - case BABL_SELECT_ALL: - return MACRO(D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); // should this be tmux all? - case BABL_DEL_RIGHT_1C: - return MACRO( D(LCTL), T(D), U(LCTL),END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTL), T(W), U(LCTL), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LALT), T(D), U(LALT), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LALT), T(B), U(LALT), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LALT), T(F), U(LALT), END ); - case BABL_GOTO_START_LINE: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - case BABL_GOTO_START_DOC: - return MACRO_NONE; // tmux? - case BABL_GOTO_END_LINE: - return MACRO( D(LCTRL), T(E), U(LCTRL), END ); - case BABL_GOTO_END_DOC: - return MACRO_NONE; // tmux? - case BABL_GOTO_NEXT_LINE: - return MACRO( D(LCTRL), T(N), U(LCTRL), END ); - case BABL_GOTO_PREV_LINE: - return MACRO( D(LCTRL), T(P), U(LCTRL), END ); - case BABL_PGDN: - return MACRO( T(PGDN), END ); - case BABL_PGUP: - return MACRO( T(PGUP), END ); - case BABL_FIND: - return MACRO( D(LCTRL), T(R), U(LCTRL), END ); // search history - case BABL_FIND_NEXT: - eturn MACRO( D(LCTRL), T(S), U(LCTRL), END ); - case BABL_FIND_REPLACE: - return MACRO_NONE; // tmux? - case BABL_RUNAPP: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(C),END ); //tmux - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(N),END ); //tmux - case BABL_SWITCH_APP_LAST: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(P),END ); //tmux - case BABL_CLOSE_APP: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(D),END); // usually what I want - break; - case BABL_HELP: - return MACRO_NONE; - break; - - return MACRO_NONE; - } - -#endif - return MACRO_NONE; -} \ No newline at end of file +#### Development notes +-Why a new function? Because it would make the keymap too ugly to put it there. +-Why not return the macro to action_get_macro? Because I kept running into scope problems +and pointers to the wrong type. +-Why not an array of arrays as a lookup instead of a function? That would allow you +to store the lookup table in PROGMEM. True, but that takes more pre-processor skill +than I had. + +-Have you tested this on every platform? No. Submit a patch. + + +### Next steps for someone. +Make it easier to pair macros with modifiers. So key foo will jump to start of line, and +Shift(foo) will jump to the first tab in a browser. + +## Thanks + +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 +And of course QMK... + diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index 3b2f53a0..395a9fb4 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ M(VIBRK), KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC, ____, KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS, ____, ____, ____,\ ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, KC_LCBR, KC_RCBR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ - ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ + ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), /* @@ -108,11 +108,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * -------------------------------------------------------------------------------' * | | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| * --------------------------------------------------------------------------- -* | tab | q | w |Find| |pTab |DSOL|DelW| Up |DelW|DEOL| [ | ] | \ | | +* | tab | | |Find| |pTab |DSOL|DelW| Up |DelW|DEOL| [ | ] | \ | | * -------------------------------------------------------------------------------' -* |Bak/Mov| a | s | d | |nTab |GSOL| <- | Dwn | -> | EOL | ' | enter |PgUp| +* |Bak/Mov| | | | |nTab |GSOL| <- | Dwn | -> | EOL | ' | enter |PgUp| * -------------------------------------------------------------------------------- -* |Lsft |Undo| Cut|Copy|Pste| b | n | m | , | . | / | Rsft| Up| PgDn| +* |Lsft |Undo| Cut|Copy|Pste| | | | | | / | Rsft| Up| PgDn| * --------------------------------------------------------------------------------- * |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| * --------------------------------------------------------------------------------- @@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { -/* If this is in the range of BABL macros, call a separate function */ +/* If id is in the range of BABL macros, call the babl function */ /* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ #ifdef USE_BABLPASTE From 7c7a77d4bf8f35cd7f59119be0e95b5d28063988 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Wed, 8 Mar 2017 19:43:10 -0500 Subject: [PATCH 063/183] Tweaks keymap to reset on boot --- keyboards/ergodox/keymaps/reset_eeprom/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/reset_eeprom/keymap.c b/keyboards/ergodox/keymaps/reset_eeprom/keymap.c index f708454c..8d689765 100644 --- a/keyboards/ergodox/keymaps/reset_eeprom/keymap.c +++ b/keyboards/ergodox/keymaps/reset_eeprom/keymap.c @@ -111,7 +111,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Runs just one time when the keyboard initializes. void matrix_init_user(void) { - + eeconfig_init(); }; From 8d4bc714e4e69dd89b0ef7f1bad60e6ca6c0f791 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Wed, 8 Mar 2017 23:16:58 -0500 Subject: [PATCH 064/183] Update smt keymap READMEs --- keyboards/lets_split/keymaps/smt/keymap.c | 108 ++++++++++----------- keyboards/lets_split/keymaps/smt/readme.md | 88 +++++++++++++++++ keyboards/planck/keymaps/smt/keymap.c | 4 +- keyboards/planck/keymaps/smt/readme.md | 79 +++++++++------ keyboards/preonic/keymaps/smt/keymap.c | 4 +- keyboards/preonic/keymaps/smt/readme.md | 77 +++++++++------ 6 files changed, 246 insertions(+), 114 deletions(-) create mode 100644 keyboards/lets_split/keymaps/smt/readme.md diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c index b7db699f..c4bdb7eb 100644 --- a/keyboards/lets_split/keymaps/smt/keymap.c +++ b/keyboards/lets_split/keymaps/smt/keymap.c @@ -37,15 +37,15 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `-----------------------------------------' */ [_QWERTY] = KEYMAP( \ HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ @@ -55,15 +55,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | R | S | T | D | | H | N | E | I | O | " | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `-----------------------------------------' */ [_COLEMAK] = KEYMAP( \ HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ @@ -73,15 +73,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | - | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | O | E | U | I | | D | H | T | N | S | - | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `-----------------------------------------' */ [_DVORAK] = KEYMAP( \ HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ @@ -91,15 +91,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Lower - * ,-----------------------------------------------------------------------------------. - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | 0 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | $ | F1 | F2 | F3 | F4 | F5 | | F6 | 4 | 5 | 6 | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | | F12 | 1 | 2 | 3 | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `-----------------------------------------' */ [_LOWER] = KEYMAP( \ ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ @@ -109,15 +109,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Raise - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | | | | | _ | ? | + | { | } | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | - | / | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Home |PageDn|PageUp| End | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | _ | ? | + | { | } | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | - | / | = | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | Home |PageDn|PageUp| End | + * `-----------------------------------------' `-----------------------------------------' */ [_RAISE] = KEYMAP( \ ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ @@ -127,15 +127,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Reset| - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | | Reset| | | | | | | | | | | Reset| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-----------------------------------------' `-----------------------------------------' */ [_ADJUST] = KEYMAP( \ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ diff --git a/keyboards/lets_split/keymaps/smt/readme.md b/keyboards/lets_split/keymaps/smt/readme.md new file mode 100644 index 00000000..20bc662f --- /dev/null +++ b/keyboards/lets_split/keymaps/smt/readme.md @@ -0,0 +1,88 @@ +# smt's Let's Split keymap + +This keymap is ported from my Planck keymap. + + +## Qwerty + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc | A | S | D | F | G | | H | J | K | L | ; | " | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Colemak + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc | A | R | S | T | D | | H | N | E | I | O | " | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift| Z | X | C | V | B | | K | M | , | . | / |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc | A | O | E | U | I | | D | H | T | N | S | - | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Lower + +``` +,-----------------------------------------. ,-----------------------------------------. +| 0 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| $ | F1 | F2 | F3 | F4 | F5 | | F6 | 4 | 5 | 6 | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | F7 | F8 | F9 | F10 | F11 | | F12 | 1 | 2 | 3 | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | Next | Vol- | Vol+ | Play | +`-----------------------------------------' `-----------------------------------------' +``` + +## Raise + +``` +,-----------------------------------------. ,-----------------------------------------. +| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | _ | ? | + | { | } | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | - | / | = | [ | ] | \ | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | Home |PageDn|PageUp| End | +`-----------------------------------------' `-----------------------------------------' +``` + +## Adjust (Lower + Raise) + +``` +,-----------------------------------------. ,-----------------------------------------. +| | Reset| | | | | | | | | | | Reset| +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | |Aud on|Audoff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak| | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | | | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | | | | | +`-----------------------------------------' `-----------------------------------------' +``` diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c index 2e1c3554..708f699d 100644 --- a/keyboards/planck/keymaps/smt/keymap.c +++ b/keyboards/planck/keymaps/smt/keymap.c @@ -97,9 +97,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| + * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' diff --git a/keyboards/planck/keymaps/smt/readme.md b/keyboards/planck/keymaps/smt/readme.md index 0e955a57..dc7c9cf9 100644 --- a/keyboards/planck/keymaps/smt/readme.md +++ b/keyboards/planck/keymaps/smt/readme.md @@ -4,49 +4,70 @@ This keymap is primarily based on the default Planck keymap. Notable differences from the default are: -1. **Dvorak by default** +- **[Mod-Tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys** - I happen to type in Dvorak, and prefer that layer to be the default on my keyboard. This is easy enough to switch around with Qwerty, Colemak, or whatever. + - `Esc/Ctrl` -2. **Right Shift** + I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... - I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. + - `Enter/Shift` - Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome! + I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. -3. Escape + - `Tab/Hyper` (Super+Ctrl+Shift+Alt) - I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... + It's great to be able to use Tab as a custom modifier key. I tend to use [Hyper](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) commands for various OS-specific operations depending on what machine I'm working on. -4. Backtick + - `Backtick/Meh` (Ctrl+Shift+Alt) - I don't currently have LEDs on any of my keyboards, and even if I did, I don't think I would want their controls on a base layer. + Why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. The "Meh" mapping is just a less-cool "Hyper"; the same, just without Super. - So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. +- **Swapped responsibilities of "lower" and "raise" layers** -## Dvorak (default) + I prefer to use symbols via the "raise" layer, and numbers via the "lower" layer. + +- **Removed Plover layer** + + I don't intend to use stenography anytime soon, so Plover just didn't have a place in my keymap. + + +## Qwerty ``` ,-----------------------------------------------------------------------------------. -| Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | +| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc | A | O | E | U | I | D | H | T | N | S | - | +| Esc | A | S | D | F | G | H | J | K | L | ; | " | |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | +| Shift| Z | X | C | V | B | N | M | , | . | / |Enter | |------+------+------+------+------+------+------+------+------+------+------+------| -| ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | +| ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | `-----------------------------------------------------------------------------------' ``` -## Qwerty (same as default) +## Colemak ``` ,-----------------------------------------------------------------------------------. -| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | +| Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc | A | S | D | F | G | H | J | K | L | ; | " | +| Esc | A | R | S | T | D | H | N | E | I | O | " | |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift| Z | X | C | V | B | N | M | , | . | / |Enter | +| Shift| Z | X | C | V | B | K | M | , | . | / |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------------------------------------------------. +| Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc | A | O | E | U | I | D | H | T | N | S | - | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | |------+------+------+------+------+------+------+------+------+------+------+------| | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | `-----------------------------------------------------------------------------------' @@ -54,15 +75,15 @@ Notable differences from the default are: ## Lower -This is where I put the number row, a numpad cluster, function keys, and some light navigation via Home/End/PageUp/PageDn. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. +This is where I put the number row, a numpad cluster, function keys, and media controls. ``` ,-----------------------------------------------------------------------------------. -| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | |------+------+------+------+------+-------------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| +| $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | |------+------+------+------+------+------|------+------+------+------+------+------| -| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| +| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | Next | Vol- | Vol+ | Play | `-----------------------------------------------------------------------------------' @@ -70,7 +91,7 @@ This is where I put the number row, a numpad cluster, function keys, and some li ## Raise -As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. +As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. I've also added cursorkeys to correspond to the arrows. I haven't completely filled this layer, which leaves room for future mappings and macros. @@ -82,21 +103,21 @@ I haven't completely filled this layer, which leaves room for future mappings an |------+------+------+------+------+------|------+------+------+------+------+------| | | | | | | | - | / | = | [ | ] | \ | |------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | Next | Vol- | Vol+ | Play | +| | | | | | | | | Home |PageDn|PageUp| End | `-----------------------------------------------------------------------------------' ``` ## Adjust (Lower + Raise) -Utility layer. This is where I'd switch to Qwerty, or ~~fool around with~~ adjust the audio/music settings. +Utility layer. This is where I'd switch between Qwerty and Dvorak, ~~fool around with~~ adjust the audio/music settings, or put the Planck into bootloader mode. ``` ,-----------------------------------------------------------------------------------. -| | Reset| | | | | | | | | | Del | +| | Reset| | | | | | | | | | Reset| |------+------+------+------+------+-------------+------+------+------+------+------| -| | | |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty| | | | +| | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | |------+------+------+------+------+------|------+------+------+------+------+------| -| |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | +| |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | `-----------------------------------------------------------------------------------' diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c index 690feca4..a10deb75 100644 --- a/keyboards/preonic/keymaps/smt/keymap.c +++ b/keyboards/preonic/keymaps/smt/keymap.c @@ -106,9 +106,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| + * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' diff --git a/keyboards/preonic/keymaps/smt/readme.md b/keyboards/preonic/keymaps/smt/readme.md index 016da7b0..2ec2603f 100644 --- a/keyboards/preonic/keymaps/smt/readme.md +++ b/keyboards/preonic/keymaps/smt/readme.md @@ -4,53 +4,76 @@ This keymap is primarily based on the default Preonic keymap, which in turn is d Notable differences from the default are: -1. **Dvorak by default** +- **[Mod-Tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys** - I happen to type in Dvorak, and prefer that layer to be the default on my keyboard. This is easy enough to switch around with Qwerty, Colemak, or whatever. + - `Esc/Ctrl` -2. **Right Shift** + I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... - I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. + - `Enter/Shift` - Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome! + I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. -3. Escape + - `Tab/Hyper` (Super+Ctrl+Shift+Alt) - I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... + It's great to be able to use Tab as a custom modifier key. I tend to use [Hyper](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) commands for various OS-specific operations depending on what machine I'm working on. -4. Backtick + - `Backtick/Meh` (Ctrl+Shift+Alt) - I don't currently have LEDs on any of my keyboards, and even if I did, I don't think I would want their controls on a base layer. + Why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. The "Meh" mapping is just a less-cool "Hyper"; the same, just without Super. - So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. +- **Swapped responsibilities of "lower" and "raise" layers** -## Dvorak (default) + I prefer to use symbols via the "raise" layer, and numbers via the "lower" layer. + +- **Removed Plover layer** + + I don't intend to use stenography anytime soon, so Plover just didn't have a place in my keymap. + + +## Qwerty ``` ,-----------------------------------------------------------------------------------. | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | |------+------+------+------+------+------+------+------+------+------+------+------| -| Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | +| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc | A | O | E | U | I | D | H | T | N | S | - | +| Esc | A | S | D | F | G | H | J | K | L | ; | " | |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | +| Shift| Z | X | C | V | B | N | M | , | . | / |Enter | |------+------+------+------+------+------+------+------+------+------+------+------| | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | `-----------------------------------------------------------------------------------' ``` -## Qwerty (same as default) +## Colemak ``` ,-----------------------------------------------------------------------------------. | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | |------+------+------+------+------+------+------+------+------+------+------+------| -| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | +| Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | |------+------+------+------+------+-------------+------+------+------+------+------| -| Esc | A | S | D | F | G | H | J | K | L | ; | " | +| Esc | A | R | S | T | D | H | N | E | I | O | " | |------+------+------+------+------+------|------+------+------+------+------+------| -| Shift| Z | X | C | V | B | N | M | , | . | / |Enter | +| Shift| Z | X | C | V | B | K | M | , | . | / |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------------------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc | A | O | E | U | I | D | H | T | N | S | - | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | |------+------+------+------+------+------+------+------+------+------+------+------| | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | `-----------------------------------------------------------------------------------' @@ -58,17 +81,17 @@ Notable differences from the default are: ## Lower -This is where I put the number row, a numpad cluster, function keys, and some light navigation via Home/End/PageUp/PageDn. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. +This is where I put the number row, a numpad cluster, function keys, and media controls. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. ``` ,-----------------------------------------------------------------------------------. | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | |------+------+------+------+------+------+------+------+------+------+------+------| -| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | |------+------+------+------+------+-------------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| +| $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | |------+------+------+------+------+------|------+------+------+------+------+------| -| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| +| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | Next | Vol- | Vol+ | Play | `-----------------------------------------------------------------------------------' @@ -76,7 +99,7 @@ This is where I put the number row, a numpad cluster, function keys, and some li ## Raise -As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. +As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. I've also added cursorkeys to correspond to the arrows. I haven't completely filled this layer, which leaves room for future mappings and macros. @@ -90,21 +113,21 @@ I haven't completely filled this layer, which leaves room for future mappings an |------+------+------+------+------+------|------+------+------+------+------+------| | | | | | | | - | / | = | [ | ] | \ | |------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | Next | Vol- | Vol+ | Play | +| | | | | | | | | Home |PageDn|PageUp| End | `-----------------------------------------------------------------------------------' ``` ## Adjust (Lower + Raise) -Utility layer. This is where I'd switch to Qwerty, or ~~fool around with~~ adjust the audio/music settings. +Utility layer. This is where I'd switch between Qwerty and Dvorak, ~~fool around with~~ adjust the audio/music settings, or put the Preonic into bootloader mode. ``` ,-----------------------------------------------------------------------------------. | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |------+------+------+------+------+------+------+------+------+------+------+------| -| | Reset| | | | | | | | | | Del | +| | Reset| | | | | | | | | | Reset| |------+------+------+------+------+-------------+------+------+------+------+------| -| | | |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty| | | | +| | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | |------+------+------+------+------+------|------+------+------+------+------+------| | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | |------+------+------+------+------+------+------+------+------+------+------+------| From 06e4b3fe1abbc938678a3e3abcddf5658ca5dca2 Mon Sep 17 00:00:00 2001 From: Kevin Hogeland Date: Thu, 9 Mar 2017 02:40:01 -0800 Subject: [PATCH 065/183] Colemak layout for Clueboard --- keyboards/clueboard/keymaps/colemak/keymap.c | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 keyboards/clueboard/keymaps/colemak/keymap.c diff --git a/keyboards/clueboard/keymaps/colemak/keymap.c b/keyboards/clueboard/keymaps/colemak/keymap.c new file mode 100644 index 00000000..6b1fc7c9 --- /dev/null +++ b/keyboards/clueboard/keymaps/colemak/keymap.c @@ -0,0 +1,83 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = KEYMAP( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ + KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, MO(_FL), KC_LGUI,KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_CAPS, BL_STEP, \ + _______, _______, _______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END, _______, _______, _______, _______, \ + KC_DEL, _______, MO(_CL),_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(0), // Calls action_function() +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t mods_pressed; + + 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) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} From 718b9648061be99a82e6dddfdebd3eb2e5386f19 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 13:30:32 -0500 Subject: [PATCH 066/183] =?UTF-8?q?Add=20hexwire=20layout=20for=20Let?= =?UTF-8?q?=E2=80=99s=20Split?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/lets_split/keymaps/hexwire/config.h | 29 +++ keyboards/lets_split/keymaps/hexwire/keymap.c | 230 ++++++++++++++++++ 2 files changed, 259 insertions(+) create mode 100644 keyboards/lets_split/keymaps/hexwire/config.h create mode 100644 keyboards/lets_split/keymaps/hexwire/keymap.c diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h new file mode 100644 index 00000000..cd766cc4 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -0,0 +1,29 @@ +/* +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 . +*/ + + +#define USE_SERIAL + +#define EE_HANDS + + +#ifdef SUBPROJECT_rev1 + #include "../../rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "../../rev2/config.h" +#endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c new file mode 100644 index 00000000..403987db --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -0,0 +1,230 @@ +#include "lets_split.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. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _FN3 5 +#define _FN4 6 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + FN3, + FN4, + ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen +#define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen +#define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen +#define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \ + MT(MOD_LCTL,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, MT(MOD_LSFT,KC_ENT) , \ + LT(_FN3,KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, \ + 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_ENT , \ + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINS, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ + KC_DEL, KC_CAPP, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, \ + _______, KC_CPYP, _______, _______, KC_DOWN, KC_LCBR, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, \ + _______, _______, _______, _______, _______, _______, KC_DEL, KC_P0, KC_PDOT, _______, _______, _______ \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ + KC_DEL, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL , KC_HOME, _______, _______, _______, KC_BSLS, \ + _______, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_PLUS, KC_END, _______, _______, _______, _______, \ + _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______ \ +), + +[_FN3] = KEYMAP( \ + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F9, KC_F10, KC_F11, \ + _______, _______, _______, _______, _______, KC_F8, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + 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; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} \ No newline at end of file From 74c6c3d277bc76c319b5d28d578fbda9009efcbf Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 15:39:59 -0500 Subject: [PATCH 067/183] Convert keymap to compact version --- .../keymaps/hexwire/compact_keymap.h | 23 +++ keyboards/lets_split/keymaps/hexwire/keymap.c | 193 ++++++++---------- 2 files changed, 107 insertions(+), 109 deletions(-) create mode 100644 keyboards/lets_split/keymaps/hexwire/compact_keymap.h diff --git a/keyboards/lets_split/keymaps/hexwire/compact_keymap.h b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h new file mode 100644 index 00000000..d9d063fb --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h @@ -0,0 +1,23 @@ +#ifndef COMPACT_KEYMAP_H +#define COMPACT_KEYMAP_H + +#define COMPACT_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ + k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ + ) \ + { \ + { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \ + { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \ + { 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_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \ + { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \ + { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \ + { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \ + } + +#define KC_ KC_TRNS + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c index 403987db..bae2e687 100644 --- a/keyboards/lets_split/keymaps/hexwire/keymap.c +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -1,13 +1,10 @@ #include "lets_split.h" #include "action_layer.h" #include "eeconfig.h" +#include "compact_keymap.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. #define _QWERTY 0 #define _COLEMAK 1 #define _DVORAK 2 @@ -28,113 +25,91 @@ enum custom_keycodes { ADJUST, }; -// Fillers to make layering more clear #define _______ KC_TRNS -#define XXXXXXX KC_NO #define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen #define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen #define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen #define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen +#define KC_X0 MT(MOD_LCTL, KC_ESC) +#define KC_X1 LOWER +#define KC_X2 RAISE +#define KC_X3 LT(_FN3, KC_GRV) +#define KC_X4 MT(MOD_LSFT, KC_ENT) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_QWERTY] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \ - MT(MOD_LCTL,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, MT(MOD_LSFT,KC_ENT) , \ - LT(_FN3,KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_COLEMAK] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, \ - 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_ENT , \ - KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_DVORAK] = KEYMAP( \ - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINS, \ - KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ - KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Lower - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_LOWER] = KEYMAP( \ - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ - KC_DEL, KC_CAPP, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, \ - _______, KC_CPYP, _______, _______, KC_DOWN, KC_LCBR, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, \ - _______, _______, _______, _______, _______, _______, KC_DEL, KC_P0, KC_PDOT, _______, _______, _______ \ -), - -/* Raise - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = KEYMAP( \ - _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ - KC_DEL, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL , KC_HOME, _______, _______, _______, KC_BSLS, \ - _______, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_PLUS, KC_END, _______, _______, _______, _______, \ - _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______ \ -), - -[_FN3] = KEYMAP( \ - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F9, KC_F10, KC_F11, \ - _______, _______, _______, _______, _______, KC_F8, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -), + [_QWERTY] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, X4 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), + + [_COLEMAK] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , R , S , T , D , H , N , E , I , O ,QUOT, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , K , M ,COMM,DOT ,SLSH, X4 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), + + [_DVORAK] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , O , E , U , I , D , H , R , N , S ,SLSH, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT,SCLN, Q , J , K , X , B , M , W , V , Z , X4 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), + + [_LOWER] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,CAPP,LEFT,RGHT, UP ,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , DEL , P0 ,PDOT, , , + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), + + [_RAISE] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , ,MUTE, , , , , , , + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), + + [_FN3] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. @@ -147,12 +122,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -) + [_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ) }; @@ -227,4 +202,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; } return true; -} \ No newline at end of file +} From 3df35f712eca0fddcd3aabf62de7f32d8a5cb11b Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 9 Mar 2017 09:52:33 -0500 Subject: [PATCH 068/183] Add readme for layout --- .../lets_split/keymaps/hexwire/README.md | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 keyboards/lets_split/keymaps/hexwire/README.md diff --git a/keyboards/lets_split/keymaps/hexwire/README.md b/keyboards/lets_split/keymaps/hexwire/README.md new file mode 100644 index 00000000..2dc04464 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/README.md @@ -0,0 +1,108 @@ +Hexwire's Let's Split Layout +============================ + +### Changes from default layout + +- Main layer + - The right space bar key has been changed to backspace, as I only hit space with my left thumb + - Backtick is at the lower right and also serves goes to the 3rd function layer when held + - Enter key acts as shift when held + - Escape key acts as control when held + - Minus key at upper right +- Lower layer + - Numbers are on the lower layer, to make it easier to use a numpad on the right hand + - Arrow keys + - Straight and curly brackets in the middle two columns + - Screenshot keys for MacOS +- Upper layer + - Symbols are on the upper layer + - Media keys + - Page Up/Down, Home/End +- 3rd function layer + - Function keys + +## Layouts + +### Qwerty + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, +|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, X4 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Colemak + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , R , S , T , D , H , N , E , I , O ,QUOT, +|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , K , M ,COMM,DOT ,SLSH, X4 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Dvorak + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , O , E , U , I , D , H , R , N , S ,SLSH, +|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT,SCLN, Q , J , K , X , B , M , W , V , Z , X4 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Lower + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,CAPP,LEFT,RGHT, UP ,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE, +|----+----+----+----+----+----| |----+----+----+----+----+----| + ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , DEL , P0 ,PDOT, , , +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Raise + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , +|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , ,MUTE, , , , , , , +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### 3rd function layer + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` From a8f872e728cde990f7b272306480eedc96a7f3f7 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 9 Mar 2017 09:21:25 -0500 Subject: [PATCH 069/183] Initial commit for handwired numpad --- keyboards/handwired/numpad20/Makefile | 3 + keyboards/handwired/numpad20/config.h | 162 ++++++++++++++++++ .../numpad20/keymaps/default/keymap.c | 16 ++ keyboards/handwired/numpad20/numpad20.c | 8 + keyboards/handwired/numpad20/numpad20.h | 20 +++ keyboards/handwired/numpad20/rules.mk | 83 +++++++++ 6 files changed, 292 insertions(+) create mode 100644 keyboards/handwired/numpad20/Makefile create mode 100644 keyboards/handwired/numpad20/config.h create mode 100644 keyboards/handwired/numpad20/keymaps/default/keymap.c create mode 100644 keyboards/handwired/numpad20/numpad20.c create mode 100644 keyboards/handwired/numpad20/numpad20.h create mode 100644 keyboards/handwired/numpad20/rules.mk diff --git a/keyboards/handwired/numpad20/Makefile b/keyboards/handwired/numpad20/Makefile new file mode 100644 index 00000000..191c6bb6 --- /dev/null +++ b/keyboards/handwired/numpad20/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/numpad20/config.h b/keyboards/handwired/numpad20/config.h new file mode 100644 index 00000000..847f2111 --- /dev/null +++ b/keyboards/handwired/numpad20/config.h @@ -0,0 +1,162 @@ +/* +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 0xBB80 +#define PRODUCT_ID 0x0504 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Hexwire +#define PRODUCT Numpad 20 +#define DESCRIPTION Handwired 4x5 numpad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* + * 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 { F6, B1, B3, B6, B5 } +#define MATRIX_COL_PINS { D1, D0, F5, F4 } +#define UNUSED_PINS + +/* 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/handwired/numpad20/keymaps/default/keymap.c b/keyboards/handwired/numpad20/keymaps/default/keymap.c new file mode 100644 index 00000000..37031206 --- /dev/null +++ b/keyboards/handwired/numpad20/keymaps/default/keymap.c @@ -0,0 +1,16 @@ +#include "numpad20.h" + +#define KC_ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = COMPACT_KEYMAP( + LEFT,RGHT, UP ,DOWN, \ + P7 , P8 , P9 ,PLUS, \ + P4 , P5 , P6 ,MINS, \ + P1 , P2 , P3 , ENT, \ + P0 ,DOT ,RGHT, TAB \ + ) +}; + +const uint16_t PROGMEM fn_actions[] = { +}; diff --git a/keyboards/handwired/numpad20/numpad20.c b/keyboards/handwired/numpad20/numpad20.c new file mode 100644 index 00000000..101cf2cb --- /dev/null +++ b/keyboards/handwired/numpad20/numpad20.c @@ -0,0 +1,8 @@ +#include "numpad20.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} diff --git a/keyboards/handwired/numpad20/numpad20.h b/keyboards/handwired/numpad20/numpad20.h new file mode 100644 index 00000000..191979be --- /dev/null +++ b/keyboards/handwired/numpad20/numpad20.h @@ -0,0 +1,20 @@ +#ifndef NUMPAD20_H +#define NUMPAD20_H + +#include "quantum.h" + +#define COMPACT_KEYMAP( \ + K00, K01, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, \ + K40, K41, K42, K43 \ + ) { \ + { KC_##K00, KC_##K01, KC_##K02, KC_##K03 }, \ + { KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \ + { KC_##K20, KC_##K21, KC_##K22, KC_##K23 }, \ + { KC_##K30, KC_##K31, KC_##K32, KC_##K33 }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_##K43 } \ +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/numpad20/rules.mk b/keyboards/handwired/numpad20/rules.mk new file mode 100644 index 00000000..e897ef25 --- /dev/null +++ b/keyboards/handwired/numpad20/rules.mk @@ -0,0 +1,83 @@ + +# MCU name +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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# 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 +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +avrdude: build + ls /dev/tty* > /tmp/1; \ + echo "Reset your Pro Micro now"; \ + while [[ -z $$USB ]]; do \ + sleep 1; \ + ls /dev/tty* > /tmp/2; \ + USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ + done; \ + avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude From 20a48e0198b02a246dce2b729c14809ccaa471c6 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 9 Mar 2017 12:02:05 -0500 Subject: [PATCH 070/183] Add handwired 5x13 ortholinear keyboard --- keyboards/handwired/ortho5x13/Makefile | 3 + keyboards/handwired/ortho5x13/config.h | 162 ++++++++++ .../ortho5x13/keymaps/default/keymap.c | 289 ++++++++++++++++++ keyboards/handwired/ortho5x13/ortho5x13.c | 8 + keyboards/handwired/ortho5x13/ortho5x13.h | 36 +++ keyboards/handwired/ortho5x13/rules.mk | 83 +++++ 6 files changed, 581 insertions(+) create mode 100644 keyboards/handwired/ortho5x13/Makefile create mode 100644 keyboards/handwired/ortho5x13/config.h create mode 100644 keyboards/handwired/ortho5x13/keymaps/default/keymap.c create mode 100644 keyboards/handwired/ortho5x13/ortho5x13.c create mode 100644 keyboards/handwired/ortho5x13/ortho5x13.h create mode 100644 keyboards/handwired/ortho5x13/rules.mk diff --git a/keyboards/handwired/ortho5x13/Makefile b/keyboards/handwired/ortho5x13/Makefile new file mode 100644 index 00000000..191c6bb6 --- /dev/null +++ b/keyboards/handwired/ortho5x13/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/config.h b/keyboards/handwired/ortho5x13/config.h new file mode 100644 index 00000000..f8515959 --- /dev/null +++ b/keyboards/handwired/ortho5x13/config.h @@ -0,0 +1,162 @@ +/* +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 0xBB80 +#define PRODUCT_ID 0x050D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Hexwire +#define PRODUCT Ortho 5x13 +#define DESCRIPTION Handwired 5x13 ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 13 + +/* + * 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 { D3, D2, D1, D0, D4 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS + +/* 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/handwired/ortho5x13/keymaps/default/keymap.c b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c new file mode 100644 index 00000000..c1262a83 --- /dev/null +++ b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c @@ -0,0 +1,289 @@ +#include "ortho5x13.h" +#include "action_layer.h" +#include "eeconfig.h" +#ifdef AUDIO_ENABLE + #include "audio.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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + BACKLIT +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define KC_L1 LOWER +#define KC_L2 RAISE + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,------------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | + * |------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | + * |------+------+------+------+------+-------------+------+------+------+------+------+------| + * | ` | A | S | D | F | G | H | J | K | L | ; | ' | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | Up | + * |------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Bksp |Shift | Left | Down |Right | + * `------------------------------------------------------------------------------------------' + */ +[_QWERTY] = COMPACT_KEYMAP( + //,----+----+----+----+----+----+----+----+----+----+----+----+----. + ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL , + //|----+----+----+----+----+----+----+----+----+----+----+----+----| + TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, + //|----+----+----+----+----+----+----+----+----+----+----+----+----| + GRV , A , S , D , F , G , H , J , K , L ,SCLN,QUOT,BSLS, + //|----+----+----+----+----+----+----+----+----+----+----+----+----| + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,ENT , UP , + //|----+----+----+----+----+---------+----+----+----+----+----+----| + HYPR,LCTL,LALT,LGUI, L1 , SPACE , L2 ,BSPC,RSFT,LEFT,RGHT,DOWN + //`----+----+----+----+----+---------+----+----+----+----+----+----' + ), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL}, + {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_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Musoff|Mus on| | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = { + {NOTE_B5, 20}, + {NOTE_B6, 8}, + {NOTE_DS6, 20}, + {NOTE_B6, 8} +}; + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); + +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + 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; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + } + return true; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/ortho5x13.c b/keyboards/handwired/ortho5x13/ortho5x13.c new file mode 100644 index 00000000..cf8352cc --- /dev/null +++ b/keyboards/handwired/ortho5x13/ortho5x13.c @@ -0,0 +1,8 @@ +#include "ortho5x13.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} diff --git a/keyboards/handwired/ortho5x13/ortho5x13.h b/keyboards/handwired/ortho5x13/ortho5x13.h new file mode 100644 index 00000000..d442212f --- /dev/null +++ b/keyboards/handwired/ortho5x13/ortho5x13.h @@ -0,0 +1,36 @@ +#ifndef ORTHO5X13_H +#define ORTHO5X13_H + +#include "quantum.h" + +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \ + { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b, k3c }, \ + { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b, k4c } \ +} + +#define COMPACT_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ + { 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_##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_##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_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k35, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b, KC_##k3c }, \ + { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_NO, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c } \ +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/rules.mk b/keyboards/handwired/ortho5x13/rules.mk new file mode 100644 index 00000000..e897ef25 --- /dev/null +++ b/keyboards/handwired/ortho5x13/rules.mk @@ -0,0 +1,83 @@ + +# MCU name +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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# 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 +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +avrdude: build + ls /dev/tty* > /tmp/1; \ + echo "Reset your Pro Micro now"; \ + while [[ -z $$USB ]]; do \ + sleep 1; \ + ls /dev/tty* > /tmp/2; \ + USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ + done; \ + avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude From 8b09fd8b55f94f3e88609ed2196270ea9b678b5e Mon Sep 17 00:00:00 2001 From: Lukas Stiebig Date: Thu, 9 Mar 2017 19:41:14 +0100 Subject: [PATCH 071/183] readme keymap.h to quantum_keycodes.h Changed the quantum/keymap.h to quantum/quantum_keycodes.h because this seems to be the file where they keycodes are defined. --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 21bb79a4..7ce3d037 100644 --- a/readme.md +++ b/readme.md @@ -35,5 +35,5 @@ This is not a tiny project. While this is the main readme, there are many other * The readme for your own keyboard: This is found under `keyboards//`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on. * The list of possible keycodes you can use in your keymap is actually spread out in a few different places: * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes. - * [quantum/keymap.h](quantum/keymap.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `keymap.h` is where they're actually defined. + * [quantum/quantum_keycodes.h](quantum/quantum_keycodes.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `quantum_keycodes.h` is where they're actually defined. * The [TMK documentation](doc/TMK_README.md). QMK is based on TMK, and this explains how it works internally. From 5ae0cfeef5134b8ba9d1f2bff0c105d4e18b064c Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Thu, 9 Mar 2017 13:58:33 -0500 Subject: [PATCH 072/183] Add smt keymap for Satan 'GH60' --- keyboards/satan/keymaps/smt/Makefile | 21 +++ keyboards/satan/keymaps/smt/keymap.c | 204 ++++++++++++++++++++++++++ keyboards/satan/keymaps/smt/readme.md | 1 + 3 files changed, 226 insertions(+) create mode 100644 keyboards/satan/keymaps/smt/Makefile create mode 100644 keyboards/satan/keymaps/smt/keymap.c create mode 100644 keyboards/satan/keymaps/smt/readme.md diff --git a/keyboards/satan/keymaps/smt/Makefile b/keyboards/satan/keymaps/smt/Makefile new file mode 100644 index 00000000..2a7ff277 --- /dev/null +++ b/keyboards/satan/keymaps/smt/Makefile @@ -0,0 +1,21 @@ +# 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/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c new file mode 100644 index 00000000..1dfa9495 --- /dev/null +++ b/keyboards/satan/keymaps/smt/keymap.c @@ -0,0 +1,204 @@ +#include "satan.h" + + +// 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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK +}; + +#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+Shift+Alt) +#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _QWERTY: (Base Layer) Default Layer + * ,-----------------------------------------------------------. + * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |Fn |Ctrl | + * `-----------------------------------------------------------' + */ +[_QWERTY] = KEYMAP_ANSI( + 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_BSPC, \ + 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_BSLS, \ + CTL_ESC, 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, SFT_ENT, \ + KC_LCTL, KC_LGUI,KC_LALT, LT(_RAISE, KC_SPC), KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + + /* Keymap _COLEMAK: (Base Layer) Default Layer + * ,-----------------------------------------------------------. + * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| F| P| G| J| L| U| Y| ;| [| ]| \ | + * |-----------------------------------------------------------| + * |CAPS | A| R| S| T| D| H| N| E| I| O| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| K| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |Fn |Ctrl | + * `-----------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP_ANSI( + 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_BSPC, \ + 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_BSLS, \ + CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O ,KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ + KC_LCTL, KC_LGUI,KC_LALT, LT(_RAISE, KC_SPC), KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + + /* Keymap _DVORAK: (Base Layer) Default Layer + * ,-----------------------------------------------------------. + * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| [| ]|Backsp | + * |-----------------------------------------------------------| + * |HypTb| '| ,| .| P| Y| F| G| C| R| L| /| =| \ | + * |-----------------------------------------------------------| + * |CtrlEsc| A| O| E| U| I| D| H| T| N| S| -|Return | + * |-----------------------------------------------------------| + * |Shift | ;| Q| J| K| X| B| M| W| V| Z|ShiftEnter| + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |Fn |Ctrl | + * `-----------------------------------------------------------' + */ +[_DVORAK] = KEYMAP_ANSI( + F(0), 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_BSPC, \ + 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_BSLS, \ + CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, \ + KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ + KC_LCTL, KC_LGUI,KC_LALT, LT(_RAISE, KC_SPC), KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + + /* Keymap _LOWER: Function Layer + * ,-----------------------------------------------------------. + * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | + * |-----------------------------------------------------------| + * | |Hom| UP|End| | | | | | | |Vo-|Vo+| | + * |-----------------------------------------------------------| + * | |LFT| DN| RT| | |LFT| DN| UP| RT| |Pg+| | + * |-----------------------------------------------------------| + * | | | | | | | | | | |Pg-| | + * |-----------------------------------------------------------| + * | | |Prev| Play |Next| | | | + * `-----------------------------------------------------------' + */ +[_LOWER] = KEYMAP_ANSI( + KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL, \ + _______,KC_HOME,KC_UP ,KC_END ,_______,_______,_______,_______,_______,_______,_______,KC_VOLD,KC_VOLU,_______, \ + _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,_______,KC_PGUP ,_______, \ + _______ ,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGDN ,_______, \ + _______,_______,KC_MPRV ,KC_MPLY ,KC_MNXT,_______,_______,_______), + + /* Keymap _RAISE: Function Layer + * ,-----------------------------------------------------------. + * | | | | | | | | | | | | | | RESET | + * |-----------------------------------------------------------| + * | | | | | | | | | | | |BL-|BL+|BL | + * |-----------------------------------------------------------| + * | | | | | | | |QWT|CLM|DVK| | | | + * |-----------------------------------------------------------| + * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | | + * |-----------------------------------------------------------| + * | | | | | | | | | + * `-----------------------------------------------------------' + */ +[_RAISE] = KEYMAP_ANSI( + #ifdef RGBLIGHT_ENABLE + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ + _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ + _______ ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______ ,_______, \ + _______,_______,_______ ,_______ ,_______,_______,_______,_______ + #else + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ + _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ + _______ ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______, \ + _______,_______,_______ ,_______ ,_______,_______,XXXXXXX,_______ + #endif + ) +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + 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; +} + +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/satan/keymaps/smt/readme.md b/keyboards/satan/keymaps/smt/readme.md new file mode 100644 index 00000000..7b706d60 --- /dev/null +++ b/keyboards/satan/keymaps/smt/readme.md @@ -0,0 +1 @@ +# smt's Satan GH60 layout From b19e34c81e3e16dc75a39cdc94300fb116c9254c Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Fri, 10 Mar 2017 16:10:05 -0500 Subject: [PATCH 073/183] Forsake spacefn in favor of left shift tapdance. Move media controls. --- keyboards/satan/keymaps/smt/keymap.c | 49 ++++++++++++++-------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c index 1dfa9495..4ac016f2 100644 --- a/keyboards/satan/keymaps/smt/keymap.c +++ b/keyboards/satan/keymaps/smt/keymap.c @@ -24,10 +24,11 @@ enum planck_keycodes { #define XXXXXXX KC_NO // Custom macros +#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt #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+Shift+Alt) -#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt +#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift +#define SFT_RSE TD(KC_LSFT, OS(_RAISE)) // Double-tap for RAISE one-shot, otherwise Left Shift const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _QWERTY: (Base Layer) Default Layer @@ -40,15 +41,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |Fn |Ctrl | + * |Ctrl|Gui |Alt | Space |Alt |Gui |Fn |Ctrl | * `-----------------------------------------------------------' */ [_QWERTY] = KEYMAP_ANSI( 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_BSPC, \ 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_BSLS, \ CTL_ESC, 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, SFT_ENT, \ - KC_LCTL, KC_LGUI,KC_LALT, LT(_RAISE, KC_SPC), KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + SFT_RSE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), /* Keymap _COLEMAK: (Base Layer) Default Layer * ,-----------------------------------------------------------. @@ -60,15 +61,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Shift | Z| X| C| V| B| K| M| ,| .| /|Shift | * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |Fn |Ctrl | + * |Ctrl|Gui |Alt | Space |Alt |Gui |Fn |Ctrl | * `-----------------------------------------------------------' */ [_COLEMAK] = KEYMAP_ANSI( 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_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O ,KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ - KC_LCTL, KC_LGUI,KC_LALT, LT(_RAISE, KC_SPC), KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + SFT_RSE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), /* Keymap _DVORAK: (Base Layer) Default Layer * ,-----------------------------------------------------------. @@ -80,35 +81,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Shift | ;| Q| J| K| X| B| M| W| V| Z|ShiftEnter| * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space/Fn |Alt |Gui |Fn |Ctrl | + * |Ctrl|Gui |Alt | Space |Alt |Gui |Fn |Ctrl | * `-----------------------------------------------------------' */ [_DVORAK] = KEYMAP_ANSI( F(0), 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_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, \ - KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ - KC_LCTL, KC_LGUI,KC_LALT, LT(_RAISE, KC_SPC), KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + SFT_RSE, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), /* Keymap _LOWER: Function Layer * ,-----------------------------------------------------------. * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | * |-----------------------------------------------------------| - * | |Hom| UP|End| | | | | | | |Vo-|Vo+| | + * | |Hom| UP|End| | | | | | | |BL-|BL+|BL | * |-----------------------------------------------------------| - * | |LFT| DN| RT| | |LFT| DN| UP| RT| |Pg+| | + * | |LFT| DN| RT| | |LFT| DN| UP| RT|Vo+|Pg+| | * |-----------------------------------------------------------| - * | | | | | | | | | | |Pg-| | + * | | | |Prv|Ply|Nxt| | | |Vo-|Pg-| | * |-----------------------------------------------------------| - * | | |Prev| Play |Next| | | | + * | | | | | | | | | * `-----------------------------------------------------------' */ [_LOWER] = KEYMAP_ANSI( KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL, \ - _______,KC_HOME,KC_UP ,KC_END ,_______,_______,_______,_______,_______,_______,_______,KC_VOLD,KC_VOLU,_______, \ - _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,_______,KC_PGUP ,_______, \ - _______ ,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGDN ,_______, \ - _______,_______,KC_MPRV ,KC_MPLY ,KC_MNXT,_______,_______,_______), + _______,KC_HOME,KC_UP ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ + _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,KC_VOLU,KC_PGUP ,_______, \ + KC_LSFT ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN ,_______, \ + _______,_______,_______ ,_______ ,_______,_______,_______,_______), /* Keymap _RAISE: Function Layer * ,-----------------------------------------------------------. @@ -126,15 +127,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = KEYMAP_ANSI( #ifdef RGBLIGHT_ENABLE _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ - _______ ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______ ,_______, \ - _______,_______,_______ ,_______ ,_______,_______,_______,_______ + KC_LSFT ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______ ,_______, \ + _______,_______,_______ ,_______ ,_______,_______,XXXXXXX,_______ #else _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ + _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ - _______ ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______, \ + KC_LSFT ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______, \ _______,_______,_______ ,_______ ,_______,_______,XXXXXXX,_______ #endif ) From f75c7266a3c30a44e16a831e383baba97fc07eca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Tr=C3=BCmper?= Date: Sat, 11 Mar 2017 00:02:39 +0100 Subject: [PATCH 074/183] working but some documentation needed --- .../keymaps/neo2_on_qwerz_hardware/keymap.c | 407 ++++++++++++++++++ .../keymaps/neo2_on_qwerz_hardware/keymap.md | 188 ++++++++ 2 files changed, 595 insertions(+) create mode 100644 keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c create mode 100644 keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md diff --git a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c new file mode 100644 index 00000000..cfc51a4e --- /dev/null +++ b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c @@ -0,0 +1,407 @@ +#include "ergodox.h" +#include "action_layer.h" +#include "keymap_extras/keymap_german.h" + +#define UM 0 + +#define L0 0 // layer_0 +#define L1 1 // layer_1 +#define L2 2 // layer_2 +#define L3 3 // layer_3 +#define L4 4 // layer_4 +#define L5 5 // layer_5 +#define L6 6 // layer_6 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * .------------------------------------.------------------------------------. + * |ESC | 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * |TAB | X | V | L | C | W |Print| | K | H | G | F | Q | SS | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | Y | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * |LSFT | UE | OE | AE | P | Z |SPACE| | B | M |COMM| DOT| J |RSFT | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * |LCTL|LGUI|LALT|MO(3)|MO(2)| !MO(2)|MO(3)|APP |RALT|RCTL| + * '------------------------' '------------------------' + * .-----------. .-----------. + * |VOL- |VOL+ | !MUTE |PLAY | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! CTL ! !-ALT-! !-CTL-! ! ALT ! + * |ENTER|MO(1)| TAB | !ESC |MO(3)|SPACE| + * '-----------------' '-----------------' + */ +[L0] = KEYMAP( + KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, + KC_TAB, DE_X, DE_V, DE_L, DE_C, DE_W, KC_PSCR, + MO(1), DE_U, DE_I, DE_A, DE_E, DE_O, + KC_LSFT, DE_UE, DE_OE, DE_AE, DE_P, DE_Z, KC_SPACE, + KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_VOLD, KC_VOLU, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ CTL_T(KC_ENTER), MO(1), ALT_T(KC_TAB), + DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC, + KC_TRNS, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS, + /*-*/ DE_S, DE_N, DE_R, DE_T, DE_D, DE_Y, + KC_TRNS, DE_B, DE_M, DE_COMM, DE_DOT, DE_J, KC_RSFT, + /*-*/ /*-*/ MO(2), MO(3), KC_APP, KC_RALT, KC_RCTL, + KC_MUTE, KC_MPLY, + KC_TRNS, + CTL_T(KC_ESC), MO(3), ALT_T(KC_SPACE) +), +/* + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | |EURO|UNDS|LBRC|RBRC| | | |EXLM|LESS|MORE|EQL |AMPR| | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | |BSLS|SLSH|LCBR|RCBR|ASTR|-----!-----!QST |LPRN|RPRN|MINS|COLN| AT | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | |HASH|DLR |PIPE|TILD| | | |PLUS|PERC|DQOT|QUOT|SCLN| | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' + */ +[L1] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, DE_EURO, DE_UNDS, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS, + KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, + KC_TRNS, DE_HASH, DE_DLR, DE_PIPE, DE_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, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_TRNS, + /*-*/ DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT, + KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | |PGUP|BSPC| UP |DEL |PGDN| | | | 7 | 8 | 9 | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | |HOME|LEFT|DOWN|RGHT|END |-----!-----! | 4 | 5 | 6 | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | |PREV|NEXT| | | | | 1 | 2 | 3 | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | 0 | + * '-----------------' '-----------------' + */ +[L2] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_TRNS, + KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, DE_7, DE_8, DE_9, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, DE_4, DE_5, DE_6, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, DE_1, DE_2, DE_3, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, DE_0 +), +/* + * .------------------------------------.------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | F7 | F8 | F9 | F10| F11| F12 | | |M_WU|M_CU|M_WD| | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * |M_B5 |M_B4|M_B3|M_B2|M_B1| |-----!-----! |M_CL|M_CD|M_CR| | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | |M_A2|M_A1|M_A0| | | | | | | | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' + */ +[L3] = KEYMAP( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS, + KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_WH_U, KC_MS_U, KC_WH_D, 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_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | | | | | | | | | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | |-----!-----! | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | | | | | | | | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' + */ +[L4] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | | | | | | | | | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | |-----!-----! | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | | | | | | | | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' + */ +[L5] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* + * .------------------------------------.------------------------------------. + * | | | | | | | | | | | | | | | + * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + * | | | | | | | | | | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | |-----!-----! | | | | | | + * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + * | | | | | | | | | | | | | | | + * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + * | | | | | | ! | | | | | + * '------------------------' '------------------------' + * .-----------. .-----------. + * | | | ! | | + * .-----+-----+-----! !-----+-----+-----. + * ! ! | | ! | ! ! + * ! ! !-----! !-----! ! ! + * | | | | ! | | | + * '-----------------' '-----------------' + */ +[L6] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, + /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = {}; + +#define UC_MODE_WIN 0 +#define UC_MODE_LINUX 1 +#define UC_MODE_OSX 2 + +// TODO: allow default mode to be configured +static uint16_t unicode_mode = UC_MODE_WIN; + +uint16_t hextokeycode(uint8_t hex) { + if (hex == 0x0) { + return KC_P0; + } + if (hex < 0xA) { + return KC_P1 + (hex - 0x1); + } + return KC_A + (hex - 0xA); +} + +void unicode_action_function(uint16_t hi, uint16_t lo) { + switch (unicode_mode) { + case UC_MODE_WIN: + register_code(KC_LALT); + + register_code(KC_PPLS); + unregister_code(KC_PPLS); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LALT); + break; + case UC_MODE_LINUX: + register_code(KC_LCTL); + register_code(KC_LSFT); + + register_code(KC_U); + unregister_code(KC_U); + + register_code(hextokeycode((hi & 0xF0) >> 4)); + unregister_code(hextokeycode((hi & 0xF0) >> 4)); + register_code(hextokeycode((hi & 0x0F))); + unregister_code(hextokeycode((hi & 0x0F))); + register_code(hextokeycode((lo & 0xF0) >> 4)); + unregister_code(hextokeycode((lo & 0xF0) >> 4)); + register_code(hextokeycode((lo & 0x0F))); + unregister_code(hextokeycode((lo & 0x0F))); + + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + break; + case UC_MODE_OSX: + break; + } +} + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + if (!record->event.pressed) { + return MACRO_NONE; + } + // MACRODOWN only works in this function + switch(id) { + case UM: + unicode_mode = (unicode_mode + 1) % 2; + break; + + + default: + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case L1: + ergodox_right_led_1_on(); + break; + case L2: + ergodox_right_led_2_on(); + break; + case L3: + ergodox_right_led_3_on(); + break; + case L4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case L5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + // case L6: + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + // case L7: + // ergodox_right_led_1_on(); + // ergodox_right_led_2_on(); + // ergodox_right_led_3_on(); + // break; + default: + ergodox_board_led_off(); + break; + } +}; diff --git a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md new file mode 100644 index 00000000..fdcc86a4 --- /dev/null +++ b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md @@ -0,0 +1,188 @@ +# ManuNeo Ergodox Keyboard Layout + +Compile this file to a `keymap.c` file using `compile_keymap.py` + + python compile_keymap.py keymaps/german-manuneo/keymap.md + +Tested with python 2.7 and python 3.4 + + +# Layout Config + + { + "layout": "ergodox_ez", + "keymaps_includes": [ + "ergodox.h", + "action_layer.h", + "keymap_common.h", + "keymap_extras/keymap_german.h", + ], + "key_prefixes": ["DE_", "KC_"], + "macros": { + // TODO: implement macros + // "MUC": "", + }, + // TODO: implement default unicode mode + } + + +# Layers + + +## Layer 0 + + .------------------------------------.------------------------------------. + |ESC | 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + |TAB | X | V | L | C | W | | | K | H | G | F | Q | SS | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | Y | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + |LSFT | UE | OE | AE | P | Z |SPACE| | B | M |COMM| DOT| J |RSFT | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + |LCTL|LGUI|LCTL|MO(3)|MO(2)| !MO(2)|MO(3)|APP |RALT|RCTL| + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + |ENTER|MO(3)|LGUI | !RCTL |MO(1)|SPACE| + '-----------------' '-----------------' + + +## Layer 1 + + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | |EURO|UNDS|LBRC|RBRC| | | |EXLM|LESS|MORE|EQL |AMPR| | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | |BSLS|SLSH|LCBR|RCBR|ASTR|-----!-----!QST |LPRN|RPRN|MINS|COLN| AT | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | |HASH|DLR |PIPE|TILD| | | |PLUS|PERC|DQOT|QUOT|SCLN| | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' + + +## Layer 2 + + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | |PEQL | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | |PGUP|BSPC| UP |DEL |PGDN| | | | 7 | 8 | 9 |PAST|PSLS | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | |HOME|LEFT|DOWN|RGHT|END |-----!-----! | 4 | 5 | 6 |PMNS| | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | 1 | 2 | 3 |PPLS| | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | |PCMM|PDOT|PENT| + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | 0 | + '-----------------' '-----------------' + + + +## Layer 3 + + .------------------------------------.------------------------------------. + | | F1 | F2 | F3 | F4 | F5 | F6 | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | F7 | F8 | F9 | F10| F11| F12 | | | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | | | | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' + + +## Layer 4 + + + + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | | | | | | | | | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | | | | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' + + +## Layer 5 + + + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | | | | | | | | | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | | | | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' + + +## Layer 6 + + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | | | | | | | | | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | |-----!-----! | | | | | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | | | | | | | | | | | | | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' + From 303f5aed41aac700b6cbc5a2ce06a872d5b85d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Tr=C3=BCmper?= Date: Sat, 11 Mar 2017 10:31:22 +0100 Subject: [PATCH 075/183] change layer 3 on right thumb back to layer 1 --- keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c index cfc51a4e..04019660 100644 --- a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c +++ b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c @@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * .-----+-----+-----! !-----+-----+-----. * ! ! | | ! | ! ! * ! CTL ! !-ALT-! !-CTL-! ! ALT ! - * |ENTER|MO(1)| TAB | !ESC |MO(3)|SPACE| + * |ENTER|MO(1)| TAB | !ESC |MO(1)|SPACE| * '-----------------' '-----------------' */ [L0] = KEYMAP( @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /*-*/ /*-*/ MO(2), MO(3), KC_APP, KC_RALT, KC_RCTL, KC_MUTE, KC_MPLY, KC_TRNS, - CTL_T(KC_ESC), MO(3), ALT_T(KC_SPACE) + CTL_T(KC_ESC), MO(1), ALT_T(KC_SPACE) ), /* * .------------------------------------.------------------------------------. From edb8fcc8102ae86807b70750e57db0de9d49047c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Tr=C3=BCmper?= Date: Sat, 11 Mar 2017 11:44:39 +0100 Subject: [PATCH 076/183] update documentation --- .../keymaps/neo2_on_qwerz_hardware/keymap.c | 75 ++++++++-------- .../keymaps/neo2_on_qwerz_hardware/keymap.md | 90 ++++++++++--------- 2 files changed, 86 insertions(+), 79 deletions(-) diff --git a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c index 04019660..ab2464c4 100644 --- a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c +++ b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c @@ -5,7 +5,7 @@ #define UM 0 #define L0 0 // layer_0 -#define L1 1 // layer_1 +#define L1 1 // layer_1 #define L2 2 // layer_2 #define L3 3 // layer_3 #define L4 4 // layer_4 @@ -14,24 +14,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * .------------------------------------.------------------------------------. - * |ESC | 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC | - * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - * |TAB | X | V | L | C | W |Print| | K | H | G | F | Q | SS | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | Y | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * |LSFT | UE | OE | AE | P | Z |SPACE| | B | M |COMM| DOT| J |RSFT | - * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - * |LCTL|LGUI|LALT|MO(3)|MO(2)| !MO(2)|MO(3)|APP |RALT|RCTL| - * '------------------------' '------------------------' - * .-----------. .-----------. - * |VOL- |VOL+ | !MUTE |PLAY | - * .-----+-----+-----! !-----+-----+-----. - * ! ! | | ! | ! ! - * ! CTL ! !-ALT-! !-CTL-! ! ALT ! - * |ENTER|MO(1)| TAB | !ESC |MO(1)|SPACE| - * '-----------------' '-----------------' + .------------------------------------.------------------------------------. + |ESC | 1 | 2 | 3 | 4 | 5 | ´ | ` | 6 | 7 | 8 | 9 | 0 | ^ | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + |TAB | X | V | L | C | W |Print| | K | H | G | F | Q | ß | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | Y | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + |LSFT | ü | ö | ä | P | Z |SPACE| | B | M | , | . | J |RSFT | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + |LCTL|LGUI|LALT|MO(3)|MO(2)| !MO(2)|MO(3)|APP |RALT|RCTL| + '------------------------' '------------------------' + .-----------. .-----------. + |VOL- |VOL+ | !MUTE |PLAY | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! |-----| !-----| ! ! + ! CTL ! ! ALT ! ! CTL ! ! ALT ! + |ENTER|MO(1)| TAB | !ESC |MO(1)|SPACE| + '-----------------' '-----------------' */ [L0] = KEYMAP( KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT, @@ -52,24 +53,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { CTL_T(KC_ESC), MO(1), ALT_T(KC_SPACE) ), /* - * .------------------------------------.------------------------------------. - * | | | | | | | | | | | | | | | - * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - * | |EURO|UNDS|LBRC|RBRC| | | |EXLM|LESS|MORE|EQL |AMPR| | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * | |BSLS|SLSH|LCBR|RCBR|ASTR|-----!-----!QST |LPRN|RPRN|MINS|COLN| AT | - * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - * | |HASH|DLR |PIPE|TILD| | | |PLUS|PERC|DQOT|QUOT|SCLN| | - * '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - * | | | | | | ! | | | | | - * '------------------------' '------------------------' - * .-----------. .-----------. - * | | | ! | | - * .-----+-----+-----! !-----+-----+-----. - * ! ! | | ! | ! ! - * ! ! !-----! !-----! ! ! - * | | | | ! | | | - * '-----------------' '-----------------' + .------------------------------------.------------------------------------. + | | | | | | | | | | | | | | | + !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! + | | € | _ | [ | ] | | | | ! | < | > | = | & | | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | \ | / | { | } | * |-----!-----! ? | ( | ) | - | : | @ | + !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! + | | # | $ | | | ~ | | | | + | % | " | ' | ; | | + '-----+----+----+----+----+----------'----------+----+----+----+----+-----' + | | | | | | ! | | | | | + '------------------------' '------------------------' + .-----------. .-----------. + | | | ! | | + .-----+-----+-----! !-----+-----+-----. + ! ! | | ! | ! ! + ! ! !-----! !-----! ! ! + | | | | ! | | | + '-----------------' '-----------------' */ [L1] = KEYMAP( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md index fdcc86a4..d9fcda96 100644 --- a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md +++ b/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md @@ -1,54 +1,57 @@ -# ManuNeo Ergodox Keyboard Layout - -Compile this file to a `keymap.c` file using `compile_keymap.py` - - python compile_keymap.py keymaps/german-manuneo/keymap.md +# Neo2 for ErgoDox on QWERTZ +# +# Description +This layout is ment to be used on PCs with DE-de with an additional guest keyboard. E.g. on your PC at work you can use your ergodox with neo but a second keybord is plugged in so your coworkers can enter a few signs if necessary. I live in Germany, so this is my usecase. +# Layers +[Layer0](#layer-0) +Letters, modifiers and volume -Tested with python 2.7 and python 3.4 +[Layer1](#layer-1) +Symbols +[Layer2](#layer-2) +Motion, digits and next/prev Song -# Layout Config +[Layer3](#layer-3) +F1 to F12 and mouse actions - { - "layout": "ergodox_ez", - "keymaps_includes": [ - "ergodox.h", - "action_layer.h", - "keymap_common.h", - "keymap_extras/keymap_german.h", - ], - "key_prefixes": ["DE_", "KC_"], - "macros": { - // TODO: implement macros - // "MUC": "", - }, - // TODO: implement default unicode mode - } +[Layer4](#layer-4) +not used +[Layer5](#layer-5) +not used -# Layers +[Layer6](#layer-6) +not used ## Layer 0 .------------------------------------.------------------------------------. - |ESC | 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC | + |ESC | 1 | 2 | 3 | 4 | 5 | ´ | ` | 6 | 7 | 8 | 9 | 0 | ^ | !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - |TAB | X | V | L | C | W | | | K | H | G | F | Q | SS | + |TAB | X | V | L | C | W |Print| | K | H | G | F | Q | ß | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | Y | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - |LSFT | UE | OE | AE | P | Z |SPACE| | B | M |COMM| DOT| J |RSFT | + |LSFT | ü | ö | ä | P | Z |SPACE| | B | M | , | . | J |RSFT | '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - |LCTL|LGUI|LCTL|MO(3)|MO(2)| !MO(2)|MO(3)|APP |RALT|RCTL| + |LCTL|LGUI|LALT|MO(3)|MO(2)| !MO(2)|MO(3)|APP |RALT|RCTL| '------------------------' '------------------------' .-----------. .-----------. - | | | ! | | + |VOL- |VOL+ | !MUTE |PLAY | .-----+-----+-----! !-----+-----+-----. ! ! | | ! | ! ! - ! ! !-----! !-----! ! ! - |ENTER|MO(3)|LGUI | !RCTL |MO(1)|SPACE| + ! ! |-----| !-----| ! ! + ! CTL ! ! ALT ! ! CTL ! ! ALT ! + |ENTER|MO(1)| TAB | !ESC |MO(1)|SPACE| '-----------------' '-----------------' + +* Left side ESC, TAB, [SymbolLayer], Shift, Ctr, Gui(Windows key), and Alt like normal QWERTZ with neo2. +* Space on right side of left half for mous activity so you don't have to leave the mouse for Space. +* Top row of thumb keys is hard to reach for me, so I put media control on there. +* Thumb keys make use of modifier/tap. E.g. if you tap the Enter key it will be Enter. If you keep it pressed down it will be Ctr. The hold action is written on top of the tap action. +* The small middle thumb keys are not used, es well as the 1.5 sized ones on the left side of the right half. ## Layer 1 @@ -56,11 +59,11 @@ Tested with python 2.7 and python 3.4 .------------------------------------.------------------------------------. | | | | | | | | | | | | | | | !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - | |EURO|UNDS|LBRC|RBRC| | | |EXLM|LESS|MORE|EQL |AMPR| | + | | € | _ | [ | ] | | | | ! | < | > | = | & | | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | |BSLS|SLSH|LCBR|RCBR|ASTR|-----!-----!QST |LPRN|RPRN|MINS|COLN| AT | + | | \ | / | { | } | * |-----!-----! ? | ( | ) | - | : | @ | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | |HASH|DLR |PIPE|TILD| | | |PLUS|PERC|DQOT|QUOT|SCLN| | + | | # | $ | | | ~ | | | | + | % | " | ' | ; | | '-----+----+----+----+----+----------'----------+----+----+----+----+-----' | | | | | | ! | | | | | '------------------------' '------------------------' @@ -76,15 +79,15 @@ Tested with python 2.7 and python 3.4 ## Layer 2 .------------------------------------.------------------------------------. - | | | | | | | | | | | | | |PEQL | + | | | | | | | | | | | | | | | !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - | |PGUP|BSPC| UP |DEL |PGDN| | | | 7 | 8 | 9 |PAST|PSLS | + | |PGUP|BSPC| UP |DEL |PGDN| | | | 7 | 8 | 9 | | | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | |HOME|LEFT|DOWN|RGHT|END |-----!-----! | 4 | 5 | 6 |PMNS| | + | |HOME|LEFT|DOWN|RGHT|END |-----!-----! | 4 | 5 | 6 | | | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | | | | | | | | | | 1 | 2 | 3 |PPLS| | + | | | |PREV|NEXT| | | | | 1 | 2 | 3 | | | '-----+----+----+----+----+----------'----------+----+----+----+----+-----' - | | | | | | ! | |PCMM|PDOT|PENT| + | | | | | | ! | | | | | '------------------------' '------------------------' .-----------. .-----------. | | | ! | | @@ -101,11 +104,11 @@ Tested with python 2.7 and python 3.4 .------------------------------------.------------------------------------. | | F1 | F2 | F3 | F4 | F5 | F6 | | | | | | | | !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----! - | | F7 | F8 | F9 | F10| F11| F12 | | | | | | | | + | | F7 | F8 | F9 | F10| F11| F12 | | |M_WU|M_CU|M_WD| | | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | | | | | | |-----!-----! | | | | | | + |M_B5 |M_B4|M_B3|M_B2|M_B1| |-----!-----! |M_CL|M_CD|M_CR| | | !-----+----+----+----x----x----! ! !----x----x----+----+----+-----! - | | | | | | | | | | | | | | | + | | |M_A2|M_A1|M_A0| | | | | | | | | | '-----+----+----+----+----+----------'----------+----+----+----+----+-----' | | | | | | ! | | | | | '------------------------' '------------------------' @@ -116,7 +119,10 @@ Tested with python 2.7 and python 3.4 ! ! !-----! !-----! ! ! | | | | ! | | | '-----------------' '-----------------' - +* M_A Mouse acceleration +* M_B Mouse button +* M_C Mouse cursor +* M_W Mouse wheel ## Layer 4 From e3f934ed919f75f27379dcf8b1316fa0ed8e78c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Tr=C3=BCmper?= Date: Sat, 11 Mar 2017 12:09:30 +0100 Subject: [PATCH 077/183] remove typo from folder name --- .../{neo2_on_qwerz_hardware => neo2_on_qwertz_hardware}/keymap.c | 0 .../{neo2_on_qwerz_hardware => neo2_on_qwertz_hardware}/keymap.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename keyboards/ergodox/keymaps/{neo2_on_qwerz_hardware => neo2_on_qwertz_hardware}/keymap.c (100%) rename keyboards/ergodox/keymaps/{neo2_on_qwerz_hardware => neo2_on_qwertz_hardware}/keymap.md (100%) diff --git a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c similarity index 100% rename from keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.c rename to keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c diff --git a/keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md b/keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md similarity index 100% rename from keyboards/ergodox/keymaps/neo2_on_qwerz_hardware/keymap.md rename to keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.md From e66b31a648080ec7dde4a265014bf71dfd6a4114 Mon Sep 17 00:00:00 2001 From: Brendan Johan Lee Date: Sat, 11 Mar 2017 12:22:38 +0100 Subject: [PATCH 078/183] [deadcyclo layout] Added second unicode layer, more sane layer switches --- .../images/deadcyclo-base-layout.png | Bin 79488 -> 97053 bytes .../deadcyclo-layer-2-media-and-mouse.png | Bin 62258 -> 66254 bytes .../images/deadcyclo-layer-3-navigation.png | Bin 58886 -> 0 bytes .../images/deadcyclo-layer-3-unicode.png | Bin 0 -> 73624 bytes .../images/deadcyclo-layer-4-unicode-2.png | Bin 0 -> 66132 bytes keyboards/ergodox/keymaps/deadcyclo/keymap.c | 84 ++++++++++++++---- keyboards/ergodox/keymaps/deadcyclo/readme.md | 9 +- 7 files changed, 73 insertions(+), 20 deletions(-) delete mode 100644 keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png create mode 100644 keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-unicode.png create mode 100644 keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-4-unicode-2.png diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png index 2c03af58186308c91864bad7f9a57f41bd196629..273a49778e69342b28bda0b667dba784ff2fff89 100644 GIT binary patch literal 97053 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 literal 79488 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 diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png index a267ff23d223eff976ce032965d301886d759825..798952aa917e3a2767933d463f492adde62c7143 100644 GIT binary patch literal 66254 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ðDj$D!j^h z*L=A7^Q@wd{|7hSoS}RDKPU4ClQD*%!S1bQnmn+NcXL<0i~B(aYNi>hHpI)vU660L ztRFozyzP~`%ZsYsyXvKboUN{70XUz3R8>WRJ#j-A;_rch$3^YR7;puEGzPNIucMKx zDSGWMZc@{y@v*%&( z^`}>Q7SR!0$9)W56i=Q)Xix8Od(oB2(CbgXT>c&$>1%DB_4Z?X^2c_|hK;9f0+2D_Zx&cR&9&x9SZVl>lmWEK*TE1N#I>T1u~TuyDEo#eKPx~I-<-*X*X=lt`X zl4f(rMKU%sOA{ZYcoyH;K}XT6;9&N*A8eZbwlZKB>z$LkAD*UNLACqgE!z9ZyC1GR z8C~^m%nedDIBG2}a@lZm0(FV`WAD;1&lVv2SYZ#h6iczevC_*OLpDz@q-f-}rbJkw zR_+I}oF?A=KW`$=6$DXq94a~WNA;%`|Agpw?Hzx$S9NT9?!D*&)CGb}GIIsDrVopW z9Vp@-hh#~i(PrAUWpuClq0sjjhis5i|8_>F{4lns7@)vTc{*i=%oL5>eFhXtcQKlZ zn)>?J1C1GF1NQ3AdM~G5^gX`)8>C!M+Ve;j+3$cNE<3$V85hA7 zN2Erx1E#g6X#7cu^li+D-Eiv!io7p62~P(sbDCk<$$@*&uKgoznc-@RM$^)}o!z(L zL3Q7wuSO4>&DFWt;`jCKXS*XGTg^zb;&w@AP=c;3ulny}%Fl%MhLpX6O-C{2x+d3E zZi$%d#?T!go$N}b4F9GJydiGfJwEuk<~ z85x}6AzdlO-@B}{et;GE8}DzMJ+4_1EkPak!w0eF=FQo!jz=k%rl?9rsw*i4F%>C8 zn^>1bp^V+ef@r&sXqUSffc+9vGIYGXy;*mk_#W=Qd2#x!+vxpW7JasF{;XQ};FqnK z(>bc3V%Rla%J?%sZuW1t)abMQegDs*sr_h#$)(4Wc_bYPqL-J*fWoldL%}61l;m;c zPZWx{_5A$&o1`Rl@X^m^t|%xf9@xZmU`s%SNp#WicEzzzmw1H-TE}PS-!+&*PVl13 z>eF`z#7iNTV|sq!x(lew{c9P@`zPMGE-1=0>+!!v?{T{_rg1>c#3UZiXiaOYg%bxA z<;=#DOq36X0+N!6iHW?M{h}~meskDW$!i<#oP2dYE+;a#vgG00#p};R++feqLJ5~9 z?(S%vJ63V@XP%2g!~CW@kGE7-m{o4PGpSP}uR3?xc*p&Fxb0|io+-w96+Z78p{8(~ zZ4jVPf@+3`lL7i+uy=GzON(f8PEbiFBb~R+%%_FF196)pFGx5HJ|n?M)2@6VJr3u-^Ni~GS>Y_US8gtxVUo&sq*vp=Luq`w3SM)qo(NH z!k(0%Tc87fr56evt#dnepH@*(Ve~H&Je&HWj{QZ|>j$O3-WOn;xiO+1W>5$61hGbl zgSM{qTh0E(efxcdJ*)w;Tb+}7tS^Sf#94~Gjf;!B4b5`u)taWJx9Cqy$S$NoMTy`h zUo99WH!-Ktm*f$KrTU-Fkqgf>t_X(aM82y`*Oe7ID%$z*4fIH%aEY_tI>8;p5+ROo zScr>eP{PIzeEt3~KGn=Rtg=-NV;8aZ_dJZ7y6Ys)1)N9*dYm5+&f^2|1hL>d%8>6U zTF}aeX(P~wae}q%I1#VGeIQifz*>fVp$bhIy0R%6fYc7mTAWo-c%7cEhThn_E2Z#Z zKZ>(Ds7L`2#|%^{>_Jg=xO0JbVC1sk$fVOLwWi4(uqtDW!kfgz;G*_>twR~&LKM%v zOUuN|3MxwU7+^+Ov4-OJwLcgfUk%^RT<>!_Tu$=G}XlpD$TcTZ@>0vzWz`BF;sjkd@CZLQPGrnQ9b(w2Bv~ z2UVYWUP*Ourl9COd$wzEk0bWPvI*Kv?CcM}8dbwu#}hMl{GRPuW}uDK6z0(Iy&wkY6@jHxoNA;?^<7l(Ro)k`JvvxveGywh|7OO zKp;wb+jB?p#LI$F%KI*)hsN$2Xv$Jy_AeTppx%uE31~yEOqvLW&bdhK-4Im5%0P2i zK;Ya+&3&v)NHedaP!w|>-zTAu_h2T^mzR)`P>kE`-=)8C9Da^1?quo3C}rSA=XczH zG9vs#Mn(py3Dr|mnO*&K@}EmeRMpjEp;me~3-|DW`=_AZ!?R_@8&VD7ewt~6Aa-&k zLqo&hBzB6YHQ9C95FE+d3-8heXcF-~56J%*6b9f40w5ljx~z_IE(52F3F;Zvjr#|M zNjSK~?4Q)1>1JUVf~GgENkz%rN_Nwe(1&8VpVrDSuK^d*!*d^{=@aDWm`=}lh9bT9 zbR?2$atEf7B2H!tKy>$@tm~bt8--F%N51Y07Diuee^*i)kSfI*RMPXPytvbfM>qcx zVvSQ=%|0k7MoK2&rSZ#JHZ4Q;Iod*DXBA^rqLlv`O{1dlYmwV?Cm6exoSZ+lUnM1_ zVx`me_V&LqjV{?$;)8cC##&?eugA$*@yN>f*jPC~{nydaGUgeLqZ1U$aPra>$%~5G zZq}4}4sR2dGTp8~bRalJQB?#dQ9B|Fbe#n9I!RDLvDwV;<7p_ ziu5b;GQoEj7TjxUa$mhVPob!W`HtIY` zu2O%t;xAD}sA_A6&&{G3Y);~_O@4VdCe_UmR>%O0Bw9|jEWa$XQF5bE`6kz_@oFzJ_{&V3}f|f7k5ZK z$Zc=e#{=~n#B{oA;)fzUd`U3y+`e8Xf4levq{yV6!_(V`L1n>}tQ61b6HA{c>k@B* zPM#*zu*wb&8JO;9Jt_Qy%$n{Rqds7V!~>iPfLi(?ZuvbpSc_|z2DMy-0xgC6BDqgz zbnqBKz8VE?)fhSvl#4YG4P2Sd^~{=q<-Mk{F&@!%*MLOKptvI2U*txd28>uLh{f?&#t@kk}@rb+EpDw~Z z@a9c6=KiiDPBo)o!;{F=mh1D?zWzl1AWD3aNpFXL0BJsGM*Z%<=ruDP{ literal 62258 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 $druM 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 LSe0n%aQy!Od%;*` diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png deleted file mode 100644 index c8c90cf5c4fae139592d6a19dd28f89472a751c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58886 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 diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-unicode.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-unicode.png new file mode 100644 index 0000000000000000000000000000000000000000..0c6473abbd83a8fb96440ee9ea005c49202f184d GIT binary patch literal 73624 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∾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 literal 0 HcmV?d00001 diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-4-unicode-2.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-4-unicode-2.png new file mode 100644 index 0000000000000000000000000000000000000000..4488e1b37b827c341307a39c51b43ab1d1475daf GIT binary patch literal 66132 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 literal 0 HcmV?d00001 diff --git a/keyboards/ergodox/keymaps/deadcyclo/keymap.c b/keyboards/ergodox/keymaps/deadcyclo/keymap.c index 5774511c..243ce94e 100644 --- a/keyboards/ergodox/keymaps/deadcyclo/keymap.c +++ b/keyboards/ergodox/keymaps/deadcyclo/keymap.c @@ -5,8 +5,9 @@ #define BASE 0 // default layer #define SYMB 1 // symbols -#define MDIA 2 // media keys -#define NAVG 3 // navigation +#define MDIA 2 // media keys and navigation +#define UNI 3 // unicode 1 +#define UNI2 4 // unicode 2 enum macros { RUN @@ -94,11 +95,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | Esc/L3 | 1 | 2 | 3 | 4 | 5 | 6 | | 6 | 7 | 8 | 9 | 0 | - | =/L3 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab/L1 | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \/L1 | + * | Tab/L1 | Q | W | E | R | T | L1 | | L2 | Y | U | I | O | P | \/L1 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | LCtrl | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ctrl/'| + * | LCtrl | A | S | D | F | G |------| |------| H | J | K | L | ; | ctrl/'| * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| - * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * | LShift |Z / L4|X / L2| C | V | B | | | | N | M | , |. / L2|/ / L4| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * |Grv/L1| UNI |AltShf| Lalt | Ralt | | Lalt | Ralt | LEAD | UNI | ~/L1 | * `----------------------------------' `----------------------------------' @@ -114,25 +115,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - LT(NAVG,KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + LT(UNI,KC_ESC), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, LT(SYMB,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), - KC_LCTL, LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, LT(4, KC_Z), LT(MDIA, KC_X), KC_C, KC_V, KC_B, ALL_T(KC_NO), LT(SYMB,KC_GRV),LCTL(LSFT(KC_U)), LALT(KC_LSFT), KC_RALT,KC_LALT, ALT_T(KC_APP), KC_HOME, KC_END, KC_SPC,KC_TAB,KC_LBRC, // right hand - KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, LT(NAVG,KC_EQL), - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, LT(SYMB, KC_BSLS), - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),CTL_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, LT(UNI,KC_EQL), + TG(MDIA), KC_Y, KC_U, KC_I, KC_O, KC_P, LT(SYMB, KC_BSLS), + KC_H, KC_J, KC_K, KC_L, KC_SCLN,CTL_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,LT(MDIA, KC_DOT), LT(UNI2, KC_SLSH), KC_RSFT, KC_LALT, KC_RALT,KC_LEAD,LCTL(LSFT(KC_U)), LT(SYMB,KC_TILD), KC_PGUP, KC_INS, KC_PGDN, - KC_RBRC,KC_BSPC, KC_ENT + KC_RBRC,KC_BSPC, KC_ENT ), -/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U)) +/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U)) * * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | F6 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | @@ -177,13 +178,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 2: Media, mouse and navigation * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | gg(1)| | | | | | | | | | | | | | + * | | gg(1)| gg(2)| gg(3)| gg(4)| gg(5)| gg(6)| | gg(6)| gg(7)| gg(8)| gg(9)| gg(0)| | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | MsUp | RUN | | | | | | | Up | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | |MsLeft|MsDown|MsRght| |------| |------| | Left | Down | Right| | Play | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | + * | | | | | | | | | | | Prev | Next | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | * `----------------------------------' `----------------------------------' @@ -209,7 +210,7 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS, F(I3_GO_GROUP_6), F(I3_GO_GROUP_7), F(I3_GO_GROUP_8), F(I3_GO_GROUP_9), F(I3_GO_GROUP_10), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -238,7 +239,7 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS, * `--------------------' `--------------------' */ // Unicode -[NAVG] = KEYMAP( +[UNI] = KEYMAP( KC_TRNS, UC(0x250c), UC(0x2510), UC(0x2514), UC(0x2518), UC(0x2502), UC(0x2500), KC_TRNS, F(EMOJI_SHRUG), F(EMOJI_YAY), F(EMOJI_HUG), F(EMOJI_SMILE), F(EMOJI_SMILE2), KC_TRNS, KC_TRNS, F(EMOJI_HMM1), F(EMOJI_HMM2), F(EMOJI_BEAR1), F(EMOJI_BEAR2), F(EMOJI_FUU), @@ -257,6 +258,48 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, M(RUN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + +/* Keymap 4: Unicode 2 + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | ¹ | ² | ³ | ⁴ | ⁵ | ⁶ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | ℃ | ™ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ₁ | ₂ | ₃ | ₄ | ₅ | ₆ | | ₆ | ₇ | ₈ | ₉ | ₀ | ⁄ | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | ⅞ | ⅝ | ⅜ | ⅛ | ⅚ |------| |------| ⅓ | ⅒ | ⅑ | ⅐ | ¾ | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | ⅗ | ⅖ | ⅕ | ⅔ | | ¼ | ⅙ | ⅘ | ½ | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// Unicode 2 +[UNI2] = KEYMAP( + KC_TRNS, UC(0x00b9), UC(0x00b2), UC(0x00b3), UC(0x2074), UC(0x2075), UC(0x2076), + KC_TRNS, UC(0x2081), UC(0x2082), UC(0x2083), UC(0x2084), UC(0x2085), UC(0x2086), + KC_TRNS, UC(0x215e), UC(0x215d), UC(0x215c), UC(0x215b), UC(0x215a), + KC_TRNS, KC_TRNS, KC_TRNS, UC(0x2157), UC(0x2156), UC(0x2155), UC(0x2154), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + UC(0x2076), UC(0x2077), UC(0x2078), UC(0x2079), UC(0x2070), UC(0x2103), UC(0x2122), + UC(0x2086), UC(0x2087), UC(0x2088), UC(0x2089), UC(0x2080), UC(0x2044), KC_TRNS, + UC(0x2153), UC(0x2152), UC(0x2151), UC(0x2150), UC(0x00be), KC_TRNS, + UC(0x00bc), UC(0x2159), UC(0x2158), UC(0x00bd), KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), }; const uint16_t PROGMEM fn_actions[] = { @@ -506,8 +549,11 @@ void matrix_scan_user(void) { #endif break; case 4: - ergodox_right_led_1_on(); // TODO: Make a fourth layer + ergodox_right_led_1_on(); ergodox_right_led_3_on(); + #ifdef RGBLIGHT_ENABLE + rgblight_setrgb(0xff,0x00,0xff); + #endif break; default: // none diff --git a/keyboards/ergodox/keymaps/deadcyclo/readme.md b/keyboards/ergodox/keymaps/deadcyclo/readme.md index fa41f0ec..c839f99c 100644 --- a/keyboards/ergodox/keymaps/deadcyclo/readme.md +++ b/keyboards/ergodox/keymaps/deadcyclo/readme.md @@ -51,10 +51,16 @@ provides standard media control keys, and default arrow keys. ## Layer 3 - Unicode -[![Layer 3 - Unicode](images/deadcyclo-layer-3-navigation.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289) +[![Layer 3 - Unicode](images/deadcyclo-layer-3-unicode.png)](http://www.keyboard-layout-editor.com/#/gists/67d9613dcd873c68693d11863d0fd289) The unicode layer provides keys for directly typing unicode (utf-8) +## Layer 4 - Unicode 2 + +[![Layer 43 - Unicode](images/deadcyclo-layer-4-unicode-2.png)](http://www.keyboard-layout-editor.com/#/gists/7b2241110ab8311d9668a0798f3baf4a) + +The unicode 2 layer provides keys for directly typing unicode (utf-8) + # Changelog - 02.01.2017 Added delete key on second layer @@ -63,6 +69,7 @@ The unicode layer provides keys for directly typing unicode (utf-8) - 24.01.2017 Added unicode keys. Added shrug hug and yay. Moved Navigation to layer 2 - 25.01.2017 Added lots of new emojis and some unicode keys - 27.01.2017 Added new unicode keys and shortcut for ibus unicode composer key (CTRL+SHIFT+U) +- 11.03.2017 Added additional unicode layer. Moved some layer switch keys to more sane locations # TODO From 0d71e631ed5f06b28a83528ed4de3c0f7f90d1ea Mon Sep 17 00:00:00 2001 From: Brendan Johan Lee Date: Sat, 11 Mar 2017 12:27:46 +0100 Subject: [PATCH 079/183] [deadcyclo layout] fix an error in layer illustration --- .../deadcyclo-layer-2-media-and-mouse.png | Bin 66254 -> 65740 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png index 798952aa917e3a2767933d463f492adde62c7143..5930e38acaeebcca1effd70e47116c135869966e 100644 GIT binary patch literal 65740 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�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%0DmpZ9aFTE%M@8MR{jt#xB|Zf*ni1dYkX9xf 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 literal 66254 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ðDj$D!j^h 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 From 96bde794d8b922d71f11ec2e7eb1ba0bc0ba8d2d Mon Sep 17 00:00:00 2001 From: James Barrett Date: Sat, 11 Mar 2017 22:09:50 -0800 Subject: [PATCH 080/183] Update readme and default layout for TADA68 Add the default function layer mappings for the keyboard. Provide flashing instructions in the readme. --- .gitignore | 1 + keyboards/tada68/keymaps/default/keymap.c | 66 ++++------------------ keyboards/tada68/keymaps/default/readme.md | 2 + keyboards/tada68/readme.md | 15 ++++- 4 files changed, 26 insertions(+), 58 deletions(-) diff --git a/.gitignore b/.gitignore index f66a961f..6029afce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .dep *.o +*.bin *.eep *.elf *.hex diff --git a/keyboards/tada68/keymaps/default/keymap.c b/keyboards/tada68/keymaps/default/keymap.c index da57c034..f28116e0 100644 --- a/keyboards/tada68/keymaps/default/keymap.c +++ b/keyboards/tada68/keymaps/default/keymap.c @@ -1,9 +1,5 @@ #include "tada68.h" - -// 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 @@ -36,63 +32,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _FL: Function Layer * ,----------------------------------------------------------------. - * | | | | | | | | | | | | | | RESET| | + * | | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Ins | * |----------------------------------------------------------------| - * | | | | | | | | | | | |BL-|BL+|BL | | + * | | |Up | | | | | | | | | | | |Hme | * |----------------------------------------------------------------| - * | | | | | | | | | | | | | | + * | |<- |Dn | ->| | | | | | | | | |End | * |----------------------------------------------------------------| - * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | | | | + * | | | |Bl-|BL |BL+| |VU-|VU+|MUT| |MouseL|MsU|Rck | * |----------------------------------------------------------------| - * | | | | | | | | | | | + * | | | | | | | |MsL|MsD|MsR | * `----------------------------------------------------------------' */ [_FL] = KEYMAP_ANSI( - #ifdef RGBLIGHT_ENABLE - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, \ - _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, \ - _______,_______,_______, _______, _______,_______,_______,_______,_______, _______), - #else - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______,_______,_______, _______, _______,_______,_______,_______,_______, _______), - #endif -}; - -/*enum function_id { - //SHIFT_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_INS , \ + _______,_______,KC_UP, _______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,KC_HOME, \ + _______,KC_LEFT,KC_DOWN,KC_RIGHT,_______,_______,_______,_______,_______,_______,_______,_______, _______,KC_END, \ + _______,_______,_______,BL_DEC, BL_TOGG,BL_INC, _______,KC_VOLD,KC_VOLU,KC_MUTE,_______,KC_BTN1, KC_MS_U, KC_BTN2, \ + _______,_______,_______, _______, _______,_______,_______,KC_MS_L,KC_MS_D, KC_MS_R), }; - -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/tada68/keymaps/default/readme.md b/keyboards/tada68/keymaps/default/readme.md index 36760d6b..53412d7c 100644 --- a/keyboards/tada68/keymaps/default/readme.md +++ b/keyboards/tada68/keymaps/default/readme.md @@ -1 +1,3 @@ # default TADA68 layout + +This layout replicates the default factory layout of the TADA68. diff --git a/keyboards/tada68/readme.md b/keyboards/tada68/readme.md index 552fdea5..dbe2fdca 100644 --- a/keyboards/tada68/readme.md +++ b/keyboards/tada68/readme.md @@ -1,4 +1,15 @@ TADA68 keyboard firmware -====================== +======================== -TODO: to be updated. +1) from the keyboards/tada68 directory run: +``` +$ make flashbin +``` + +2) hit the reset button on the TADA, the lights will start flashing. + +3) You'll see a new drive on your computer called TADA68. Backup the original factory `FLASH.BIN` file thats inside it. + +4) Delete `FLASH.BIN` from the TADA drive and copy `tada68_default.bin` that was generated at the root of the qmk directory into the TADA drive. + +5) Hit ESC on the keyboard. The lights will stop flashing and your firmware is loaded! \ No newline at end of file From ec9210959fc67ce631ce5bd2e177fbb49924c1c7 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 13 Mar 2017 12:12:09 -0400 Subject: [PATCH 081/183] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 21bb79a4..7871a12c 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ # Quantum Mechanical Keyboard Firmware -[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/jackhumbert/qmk_firmware) [![Gitter](https://badges.gitter.im/qmk/qmk_firmware.svg)](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![Gitter](https://badges.gitter.im/qmk/qmk_firmware.svg)](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). From 52ea58805a74fd4310f3c6a26271245001127cce Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 14 Mar 2017 09:51:48 -0400 Subject: [PATCH 082/183] Add RGB underglow, move keys to allow Adjust layer to be reached --- keyboards/lets_split/keymaps/hexwire/Makefile | 1 + keyboards/lets_split/keymaps/hexwire/README.md | 6 +++--- keyboards/lets_split/keymaps/hexwire/config.h | 6 ++++++ keyboards/lets_split/keymaps/hexwire/keymap.c | 10 +++++----- 4 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 keyboards/lets_split/keymaps/hexwire/Makefile diff --git a/keyboards/lets_split/keymaps/hexwire/Makefile b/keyboards/lets_split/keymaps/hexwire/Makefile new file mode 100644 index 00000000..1e3cebb1 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/Makefile @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/lets_split/keymaps/hexwire/README.md b/keyboards/lets_split/keymaps/hexwire/README.md index 2dc04464..edf2b662 100644 --- a/keyboards/lets_split/keymaps/hexwire/README.md +++ b/keyboards/lets_split/keymaps/hexwire/README.md @@ -75,7 +75,7 @@ Hexwire's Let's Split Layout |----+----+----+----+----+----| |----+----+----+----+----+----| ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , |----+----+----+----+----+----| |----+----+----+----+----+----| - , , , , , , DEL , P0 ,PDOT, , , + , , , , , , DEL , , P0 ,PDOT, , `----+----+----+----+----+----' `----+----+----+----+----+----' ``` @@ -87,9 +87,9 @@ Hexwire's Let's Split Layout |----+----+----+----+----+----| |----+----+----+----+----+----| DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, |----+----+----+----+----+----| |----+----+----+----+----+----| - ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , + MUTE,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , |----+----+----+----+----+----| |----+----+----+----+----+----| - , , , ,MUTE, , , , , , , + , , , , , , , , , , , `----+----+----+----+----+----' `----+----+----+----+----+----' ``` diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index cd766cc4..b45214fe 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -20,6 +20,12 @@ along with this program. If not, see . #define EE_HANDS +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 8 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 #ifdef SUBPROJECT_rev1 #include "../../rev1/config.h" diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c index bae2e687..796a1fca 100644 --- a/keyboards/lets_split/keymaps/hexwire/keymap.c +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|----+----+----+----+----+----| |----+----+----+----+----+----| ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , //|----+----+----+----+----+----| |----+----+----+----+----+----| - , , , , , , DEL , P0 ,PDOT, , , + , , , , , , DEL , , P0 ,PDOT, , //`----+----+----+----+----+----' `----+----+----+----+----+----' ), @@ -93,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|----+----+----+----+----+----| |----+----+----+----+----+----| DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, //|----+----+----+----+----+----| |----+----+----+----+----+----| - ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , + MUTE,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| - , , , ,MUTE, , , , , , , + , , , , , , , , , , , //`----+----+----+----+----+----' `----+----+----+----+----+----' ), @@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | + * | | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn| | | * |------+------+------+------+------+-------------+------+------+------+------+------| * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ From 2e34d4bd85cc748c48e907154ea438f3d9653430 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 15 Mar 2017 10:57:24 -0400 Subject: [PATCH 083/183] update for infinity --- keyboards/ergodox/keymaps/guni/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/guni/keymap.c b/keyboards/ergodox/keymaps/guni/keymap.c index f33829b8..9d9191f6 100644 --- a/keyboards/ergodox/keymaps/guni/keymap.c +++ b/keyboards/ergodox/keymaps/guni/keymap.c @@ -170,7 +170,7 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) if (id == TEENSY_KEY) { clear_keyboard(); print("\n\nJump to bootloader... "); - _delay_ms(250); + wait_ms(250); bootloader_jump(); // should not return print("not supported.\n"); } From cf28f7bfdaf7a2e5f8734c0936f5e48b93c9353a Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Wed, 15 Mar 2017 23:07:29 -0400 Subject: [PATCH 084/183] Add custom keycap --- keyboards/planck/keymaps/khord/keymap.c | 318 ++++++++++++++++++++++++ 1 file changed, 318 insertions(+) create mode 100644 keyboards/planck/keymaps/khord/keymap.c diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c new file mode 100644 index 00000000..478e1f82 --- /dev/null +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -0,0 +1,318 @@ +// 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 "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. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +// Dylan's additions +#define C_A_DEL LALT(LCTL(KC_DEL)) +#define C_A_INS LALT(LCTL(KC_INS)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_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_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_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_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, + {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_A_INS, C_A_DEL} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(SONIC_RING); //plug in +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(ZELDA_PUZZLE); //music mode + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + 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; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif From 73a70a2c1c78a140ac506bbe8b91ff4a7eb70da4 Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Wed, 15 Mar 2017 23:09:17 -0400 Subject: [PATCH 085/183] Add Makefile --- keyboards/planck/keymaps/khord/Makefile | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 keyboards/planck/keymaps/khord/Makefile diff --git a/keyboards/planck/keymaps/khord/Makefile b/keyboards/planck/keymaps/khord/Makefile new file mode 100644 index 00000000..457a3d01 --- /dev/null +++ b/keyboards/planck/keymaps/khord/Makefile @@ -0,0 +1,3 @@ +ifndef QUANTUM_DIR + include ../../../../Makefile +endif From 0c0a8ee187eb27faefe4391d978283a081896399 Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 03:46:26 +0000 Subject: [PATCH 086/183] test --- keyboards/planck/keymaps/khord/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 478e1f82..e6c90c26 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_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_ENT }, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT) }, {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, From c043d1cc4709fa03e91942d9b769278994985af2 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 15 Mar 2017 23:49:38 -0400 Subject: [PATCH 087/183] Update config.h --- keyboards/lets_split/keymaps/hexwire/config.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index b45214fe..3d600d64 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -32,4 +32,7 @@ along with this program. If not, see . #endif #ifdef SUBPROJECT_rev2 #include "../../rev2/config.h" -#endif \ No newline at end of file +#endif +#ifdef SUBPROJECT_rev2fliphalf + #include "../../rev2fliphalf/config.h" +#endif From c36a4496eb190c72c492000f38ab4e98a3681fe4 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 15 Mar 2017 23:51:56 -0400 Subject: [PATCH 088/183] Update config.h --- keyboards/lets_split/keymaps/hexwire/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index 3d600d64..983f8e35 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -21,6 +21,7 @@ along with this program. If not, see . #define EE_HANDS #undef RGBLED_NUM +#define RGB_DI_PIN B0 #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 #define RGBLIGHT_HUE_STEP 8 From 683754bce806c634f59dd9d926491952778f913b Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 04:11:47 +0000 Subject: [PATCH 089/183] added custom tones --- quantum/audio/song_list.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h index 8022ca67..400915db 100644 --- a/quantum/audio/song_list.h +++ b/quantum/audio/song_list.h @@ -122,4 +122,31 @@ E__NOTE(_E5), \ E__NOTE(_D5), +#define COIN_SOUND \ + E__NOTE(_A5 ), \ + HD_NOTE(_E6 ), + +#define ONE_UP_SOUND \ + Q__NOTE(_E6 ), \ + Q__NOTE(_G6 ), \ + Q__NOTE(_E7 ), \ + Q__NOTE(_C7 ), \ + Q__NOTE(_D7 ), \ + Q__NOTE(_G7 ), + +#define SONIC_RING \ + E__NOTE(_E6), \ + E__NOTE(_G6), \ + HD_NOTE(_C7), + +#define ZELDA_PUZZLE \ + Q__NOTE(_G5), \ + Q__NOTE(_FS5), \ + Q__NOTE(_DS5), \ + Q__NOTE(_A4), \ + Q__NOTE(_GS4), \ + Q__NOTE(_E5), \ + Q__NOTE(_GS5), \ + HD_NOTE(_C6), + #endif From 24d174595120aa6874604eed41db7ae02b26c9be Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 12:24:31 -0400 Subject: [PATCH 090/183] add config.h for customization --- keyboards/planck/keymaps/khord/config.h | 90 +++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 keyboards/planck/keymaps/khord/config.h diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h new file mode 100644 index 00000000..5cf96bb8 --- /dev/null +++ b/keyboards/planck/keymaps/khord/config.h @@ -0,0 +1,90 @@ +/* +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 MANUFACTURER Ortholinear Keyboards +#define PRODUCT The Planck Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D0, D5, B5, B6 } +#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 } +#define UNUSED_PINS + +#define AUDIO_VOICES + +#define BACKLIGHT_PIN B7 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#ifdef SUBPROJECT_rev3 + #include "rev3/config.h" +#endif +#ifdef SUBPROJECT_rev4 + #include "rev4/config.h" +#endif + +#endif From 0c8f71e3c7fe258e6e084d7eec018b89a499d014 Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 12:44:56 -0400 Subject: [PATCH 091/183] test tap dance --- keyboards/planck/keymaps/khord/Makefile | 1 + keyboards/planck/keymaps/khord/config.h | 3 +++ keyboards/planck/keymaps/khord/keymap.c | 14 +++++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/khord/Makefile b/keyboards/planck/keymaps/khord/Makefile index 457a3d01..666161d1 100644 --- a/keyboards/planck/keymaps/khord/Makefile +++ b/keyboards/planck/keymaps/khord/Makefile @@ -1,3 +1,4 @@ ifndef QUANTUM_DIR include ../../../../Makefile endif +TAP_DANCE_ENABLE = yes diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h index 5cf96bb8..76a1f883 100644 --- a/keyboards/planck/keymaps/khord/config.h +++ b/keyboards/planck/keymaps/khord/config.h @@ -62,6 +62,9 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) +/* Tap Dance */ +#define TAPPING_TERM 200 + /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index e6c90c26..04b95c74 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -33,6 +33,18 @@ enum planck_keycodes { EXT_PLV }; +// Tap Dance Declarations +enum { + TD_ESC_CAPS = 0 +}; + +// Tap Dance Definitions +qk_tap_dance_action_t tape_dance_actions[] = { + //Tap once for Esc, twice for Caps Lock + [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) + // Other declarations would go here, separated by commas, if you have them +}; + // Fillers to make layering more clear #define _______ KC_TRNS #define XXXXXXX KC_NO @@ -56,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_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}, + {TD(TD_ESC_CAPS), 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, SFT_T(KC_ENT) }, {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, From 6ca1c49d38ddc31c5fc9ef1c180849804fe358fd Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 13:07:01 -0400 Subject: [PATCH 092/183] test fixes for tap dane --- keyboards/planck/keymaps/khord/config.h | 2 +- keyboards/planck/keymaps/khord/keymap.c | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h index 76a1f883..008f3a5c 100644 --- a/keyboards/planck/keymaps/khord/config.h +++ b/keyboards/planck/keymaps/khord/config.h @@ -63,7 +63,7 @@ along with this program. If not, see . ) /* Tap Dance */ -#define TAPPING_TERM 200 +#define TAPPING_TERM 150 /* * Feature disable options diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 04b95c74..50a5daa5 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -33,22 +33,15 @@ enum planck_keycodes { EXT_PLV }; +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + // Tap Dance Declarations enum { TD_ESC_CAPS = 0 }; -// Tap Dance Definitions -qk_tap_dance_action_t tape_dance_actions[] = { - //Tap once for Esc, twice for Caps Lock - [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) - // Other declarations would go here, separated by commas, if you have them -}; - -// Fillers to make layering more clear -#define _______ KC_TRNS -#define XXXXXXX KC_NO - // Dylan's additions #define C_A_DEL LALT(LCTL(KC_DEL)) #define C_A_INS LALT(LCTL(KC_INS)) @@ -328,3 +321,9 @@ void music_scale_user(void) } #endif + +// Tap Dance Definitions +const qk_tap_dance_action_t tape_dance_actions[] = { + //Tap once for Esc, twice for Caps Lock + [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) +}; From c7cddfc539f111baeff51a2f7e6272701e0f0109 Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 13:27:26 -0400 Subject: [PATCH 093/183] test td changes --- keyboards/planck/keymaps/khord/Makefile | 2 +- keyboards/planck/keymaps/khord/keymap.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/keyboards/planck/keymaps/khord/Makefile b/keyboards/planck/keymaps/khord/Makefile index 666161d1..f0ed9e8d 100644 --- a/keyboards/planck/keymaps/khord/Makefile +++ b/keyboards/planck/keymaps/khord/Makefile @@ -1,4 +1,4 @@ +TAP_DANCE_ENABLE = yes ifndef QUANTUM_DIR include ../../../../Makefile endif -TAP_DANCE_ENABLE = yes diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 50a5daa5..52467641 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -178,6 +178,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; + +const qk_tap_dance_action_t tape_dance_actions[] = { + [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) +}; + #ifdef AUDIO_ENABLE float tone_startup[][2] = SONG(SONIC_RING); //plug in @@ -321,9 +326,3 @@ void music_scale_user(void) } #endif - -// Tap Dance Definitions -const qk_tap_dance_action_t tape_dance_actions[] = { - //Tap once for Esc, twice for Caps Lock - [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) -}; From 4b1d0c585977884faac28f1e7210bf528af46c9a Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 17:36:31 +0000 Subject: [PATCH 094/183] remove const --- keyboards/planck/keymaps/khord/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 52467641..64185a14 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -const qk_tap_dance_action_t tape_dance_actions[] = { +qk_tap_dance_action_t tape_dance_actions[] = { [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) }; From e03ddbe118740493a7adc59539c7edb47a98c799 Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Thu, 16 Mar 2017 18:13:53 +0000 Subject: [PATCH 095/183] tap dance working for esc and arrows --- keyboards/planck/keymaps/khord/keymap.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 64185a14..6f19966f 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -39,7 +39,11 @@ enum planck_keycodes { // Tap Dance Declarations enum { - TD_ESC_CAPS = 0 + ESC_CAP = 0, + LFT_HOM, + DWN_PDN, + UPP_PUP, + RGT_END }; // Dylan's additions @@ -60,10 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_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}, - {TD(TD_ESC_CAPS), 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, SFT_T(KC_ENT) }, - {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + {TD(ESC_CAP), 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, SFT_T(KC_ENT)}, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, TD(LFT_HOM), TD(DWN_PDN), TD(UPP_PUP), TD(RGT_END) } }, /* Colemak @@ -179,8 +183,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -qk_tap_dance_action_t tape_dance_actions[] = { - [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) +qk_tap_dance_action_t tap_dance_actions[] = { + [ESC_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), + [LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME), + [DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN), + [UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP), + [RGT_END] = ACTION_TAP_DANCE_DOUBLE(KC_RGHT, KC_END) }; #ifdef AUDIO_ENABLE From e123ed8d5f4837a424d8ad58bd8664a323a76f9b Mon Sep 17 00:00:00 2001 From: jprmesh Date: Wed, 15 Mar 2017 13:48:31 -0700 Subject: [PATCH 096/183] Added KC_KEYMAP macro for old style keymaps in Atreus62 --- keyboards/atreus62/atreus62.h | 38 +++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/keyboards/atreus62/atreus62.h b/keyboards/atreus62/atreus62.h index eacf5b45..ca5cda8a 100644 --- a/keyboards/atreus62/atreus62.h +++ b/keyboards/atreus62/atreus62.h @@ -9,18 +9,34 @@ void promicro_bootloader_jmp(bool program); // The first section contains all of the arguements // The second converts the arguments into a two-dimensional array #define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ - k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ ) \ { \ - { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ - { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ - { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \ - { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \ - { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \ + { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \ } -#endif \ No newline at end of file +// Used to create a keymap using only KC_ prefixed keys. +#define KC_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ +) \ +{ \ + { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \ + { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \ + { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_NO, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \ + { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k46, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b }, \ + { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c, KC_##k4d } \ +} + +#endif From 3766f902a02da7e9355685c733f70bcff9fe5a12 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Mar 2017 15:38:03 -0700 Subject: [PATCH 097/183] boilerplate project created with new_project.sh --- keyboards/frosty_flake/Makefile | 3 + keyboards/frosty_flake/config.h | 162 ++++++++++++++++++ keyboards/frosty_flake/frosty_flake.c | 28 +++ keyboards/frosty_flake/frosty_flake.h | 19 ++ .../frosty_flake/keymaps/default/Makefile | 21 +++ .../frosty_flake/keymaps/default/config.h | 8 + .../frosty_flake/keymaps/default/keymap.c | 44 +++++ .../frosty_flake/keymaps/default/readme.md | 1 + keyboards/frosty_flake/readme.md | 28 +++ keyboards/frosty_flake/rules.mk | 68 ++++++++ 10 files changed, 382 insertions(+) create mode 100644 keyboards/frosty_flake/Makefile create mode 100644 keyboards/frosty_flake/config.h create mode 100644 keyboards/frosty_flake/frosty_flake.c create mode 100644 keyboards/frosty_flake/frosty_flake.h create mode 100644 keyboards/frosty_flake/keymaps/default/Makefile create mode 100644 keyboards/frosty_flake/keymaps/default/config.h create mode 100644 keyboards/frosty_flake/keymaps/default/keymap.c create mode 100644 keyboards/frosty_flake/keymaps/default/readme.md create mode 100644 keyboards/frosty_flake/readme.md create mode 100644 keyboards/frosty_flake/rules.mk diff --git a/keyboards/frosty_flake/Makefile b/keyboards/frosty_flake/Makefile new file mode 100644 index 00000000..57b2ef62 --- /dev/null +++ b/keyboards/frosty_flake/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h new file mode 100644 index 00000000..9390feb9 --- /dev/null +++ b/keyboards/frosty_flake/config.h @@ -0,0 +1,162 @@ +/* +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 You +#define PRODUCT frosty_flake +#define DESCRIPTION A custom keyboard + +/* key matrix size */ +#define MATRIX_ROWS 2 +#define MATRIX_COLS 3 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D5 } +#define MATRIX_COL_PINS { F1, F0, B0 } +#define UNUSED_PINS + +/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ +#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/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c new file mode 100644 index 00000000..22979a45 --- /dev/null +++ b/keyboards/frosty_flake/frosty_flake.c @@ -0,0 +1,28 @@ +#include "frosty_flake.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h new file mode 100644 index 00000000..90ea25ed --- /dev/null +++ b/keyboards/frosty_flake/frosty_flake.h @@ -0,0 +1,19 @@ +#ifndef FROSTY_FLAKE_H +#define FROSTY_FLAKE_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, \ + k10, k11 \ +) \ +{ \ + { k00, k01, k02 }, \ + { k10, KC_NO, k11 }, \ +} + +#endif diff --git a/keyboards/frosty_flake/keymaps/default/Makefile b/keyboards/frosty_flake/keymaps/default/Makefile new file mode 100644 index 00000000..9d3df596 --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# 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 = no # 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/frosty_flake/keymaps/default/config.h b/keyboards/frosty_flake/keymaps/default/config.h new file mode 100644 index 00000000..8893d122 --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c new file mode 100644 index 00000000..1c9e33b6 --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +#include "frosty_flake.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( /* Base */ + KC_A, KC_1, KC_H, \ + KC_TAB, KC_SPC \ +), +}; + +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 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) { + +} diff --git a/keyboards/frosty_flake/keymaps/default/readme.md b/keyboards/frosty_flake/keymaps/default/readme.md new file mode 100644 index 00000000..11bf4825 --- /dev/null +++ b/keyboards/frosty_flake/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for frosty_flake diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md new file mode 100644 index 00000000..a3296506 --- /dev/null +++ b/keyboards/frosty_flake/readme.md @@ -0,0 +1,28 @@ +frosty_flake keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme](/). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/frosty_flake folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make default`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant 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/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk new file mode 100644 index 00000000..bad3387b --- /dev/null +++ b/keyboards/frosty_flake/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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# 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 +AUDIO_ENABLE ?= no # Audio output on port C6 +FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches From 19fd20261b895a6848c8b15fd7365d5b87b7fd72 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Mar 2017 16:19:10 -0700 Subject: [PATCH 098/183] sketch out frosty flake matrix using custom matrix.c based on kitten paw --- keyboards/frosty_flake/config.h | 24 +++-- keyboards/frosty_flake/matrix.c | 167 ++++++++++++++++++++++++++++++++ keyboards/frosty_flake/rules.mk | 7 +- 3 files changed, 187 insertions(+), 11 deletions(-) create mode 100644 keyboards/frosty_flake/matrix.c diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h index 9390feb9..2575a52b 100644 --- a/keyboards/frosty_flake/config.h +++ b/keyboards/frosty_flake/config.h @@ -24,13 +24,19 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 -#define MANUFACTURER You +#define MANUFACTURER Bathroom Epiphanies #define PRODUCT frosty_flake -#define DESCRIPTION A custom keyboard +#define DESCRIPTION Frosty Flake controller for the CM Storm Quick Fire Rapid + +/* + * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies + * Schematic is available at https://deskthority.net/w/images/a/a4/Frosty_Flake_Schematics.pdf + * + */ /* key matrix size */ -#define MATRIX_ROWS 2 -#define MATRIX_COLS 3 +#define MATRIX_ROWS 8 // Row0 to Row7 in the schematic +#define MATRIX_COLS 18 // ColA to ColR in the schematic /* * Keyboard Matrix Assignments @@ -42,13 +48,13 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { D0, D5 } -#define MATRIX_COL_PINS { F1, F0, B0 } -#define UNUSED_PINS +//#define MATRIX_ROW_PINS { D5, D4, D6, D2, D1, D0 } +//#define MATRIX_COL_PINS << n/a >> +//#define UNUSED_PINS { B0, C4, D3 } /* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ -#define DIODE_DIRECTION COL2ROW - +//#define DIODE_DIRECTION << n/a >> + // #define BACKLIGHT_PIN B7 // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c new file mode 100644 index 00000000..21b0d908 --- /dev/null +++ b/keyboards/frosty_flake/matrix.c @@ -0,0 +1,167 @@ +//TODO(gabe): customize for frosty flake + +/* + Copyright 2014 Ralf Schmitt + + 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 +#include +#include +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" + +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 +#endif +static uint8_t debouncing = DEBOUNCING_DELAY; + +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static uint8_t read_rows(void); +static void select_col(uint8_t col); + +inline uint8_t matrix_rows(void) { + return MATRIX_ROWS; +} + +inline uint8_t matrix_cols(void) { + return MATRIX_COLS; +} + +/* Column pin configuration + * + * col: 0 1 2 3 4 5 6 7 + * pin: PC7 PD5 PD3 PD1 PC2 PD6 PD4 PD2 + * + * Rrr pin configuration + * + * These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low + * active), together with 2 rrrs driven directly from the micro + * controller, to control the 18 rrrs. The rrrs are driven from + * pins B6,5,4,3,2,1,0. + */ +void matrix_init(void) { + DDRC &= ~0b10000100; // Row input pins + DDRD &= ~0b01111110; + PORTC |= 0b10000100; + PORTD |= 0b01111110; + + DDRB |= 0b01111111; // Column output pins + + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + matrix_debouncing[i] = 0; + } + matrix_init_quantum(); +} + +uint8_t matrix_scan(void) { + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + select_col(col); + _delay_us(3); + uint8_t rows = read_rows(); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1< Date: Sun, 19 Mar 2017 00:07:48 +0000 Subject: [PATCH 099/183] Don't feel like tap dancing arrows anymore --- keyboards/planck/keymaps/khord/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 6f19966f..2ee57b8f 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -64,10 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_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 }, - {TD(ESC_CAP), 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, SFT_T(KC_ENT)}, - {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, TD(LFT_HOM), TD(DWN_PDN), TD(UPP_PUP), TD(RGT_END) } + {KC_TAB, KC_Q, KC_W, KC_E, KC_R KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, + {TD(ESC_CAP), 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, SFT_T(KC_ENT)}, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT } }, /* Colemak From 561da65606c8b27f3fecc10f41ff139d7625fd08 Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Sun, 19 Mar 2017 00:14:43 +0000 Subject: [PATCH 100/183] Missing comma --- keyboards/planck/keymaps/khord/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 2ee57b8f..65ba1c41 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, {TD(ESC_CAP), 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, SFT_T(KC_ENT)}, {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT } From d7fc2365402069a6149c9593dad82c4b4e31b78a Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sun, 19 Mar 2017 15:59:21 -0700 Subject: [PATCH 101/183] successfully read data from the matrix --- keyboards/frosty_flake/config.h | 7 +- .../frosty_flake/keymaps/default/Makefile | 4 +- .../frosty_flake/keymaps/default/keymap.c | 7 +- keyboards/frosty_flake/matrix.c | 150 ++++++++++-------- 4 files changed, 93 insertions(+), 75 deletions(-) diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h index 2575a52b..507e6a6b 100644 --- a/keyboards/frosty_flake/config.h +++ b/keyboards/frosty_flake/config.h @@ -30,13 +30,14 @@ along with this program. If not, see . /* * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies - * Schematic is available at https://deskthority.net/w/images/a/a4/Frosty_Flake_Schematics.pdf + * Ported from the Bathroom Epiphanies TMK Firmware: + * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers * */ /* key matrix size */ -#define MATRIX_ROWS 8 // Row0 to Row7 in the schematic -#define MATRIX_COLS 18 // ColA to ColR in the schematic +#define MATRIX_ROWS 18 +#define MATRIX_COLS 8 /* * Keyboard Matrix Assignments diff --git a/keyboards/frosty_flake/keymaps/default/Makefile b/keyboards/frosty_flake/keymaps/default/Makefile index 9d3df596..08876668 100644 --- a/keyboards/frosty_flake/keymaps/default/Makefile +++ b/keyboards/frosty_flake/keymaps/default/Makefile @@ -3,9 +3,9 @@ # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +CONSOLE_ENABLE = yes # 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 = no # Enable keyboard backlight functionality diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c index 1c9e33b6..e5535556 100644 --- a/keyboards/frosty_flake/keymaps/default/keymap.c +++ b/keyboards/frosty_flake/keymaps/default/keymap.c @@ -28,11 +28,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) void matrix_init_user(void) { - + debug_enable = true; } void matrix_scan_user(void) { - + if (matrix_is_modified()) + matrix_print(); } bool process_record_user(uint16_t keycode, keyrecord_t *record) { @@ -41,4 +42,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { void led_set_user(uint8_t usb_led) { -} +} \ No newline at end of file diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c index 21b0d908..70456ada 100644 --- a/keyboards/frosty_flake/matrix.c +++ b/keyboards/frosty_flake/matrix.c @@ -1,5 +1,3 @@ -//TODO(gabe): customize for frosty flake - /* Copyright 2014 Ralf Schmitt @@ -26,16 +24,71 @@ #include "util.h" #include "matrix.h" +#ifndef CONFIG_SPECIFIC_H +#define CONFIG_SPECIFIC_H + +#define CONFIG_LED_IO \ + DDRB |= (1<<7); \ + DDRC |= (1<<5) | (1<<6); + +#define USB_LED_CAPS_LOCK_ON PORTC &= ~(1<<5) +#define USB_LED_CAPS_LOCK_OFF PORTC |= (1<<5) +#define USB_LED_NUM_LOCK_ON PORTB &= ~(1<<7) +#define USB_LED_NUM_LOCK_OFF PORTB |= (1<<7) +#define USB_LED_SCROLL_LOCK_ON PORTC &= ~(1<<6) +#define USB_LED_SCROLL_LOCK_OFF PORTC |= (1<<6) + +#define CONFIG_MATRIX_IO \ + /* Column output pins */ \ + DDRD |= 0b01111011; \ + /* Row input pins */ \ + DDRC &= ~0b10000000; \ + DDRB &= ~0b01111111; \ + PORTC |= 0b10000000; \ + PORTB |= 0b01111111; + +#define MATRIX_ROW_SCAN \ + (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) | \ + (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) | \ + (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | \ + (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) | \ + (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | \ + (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) | \ + (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) | \ + (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7)) + +#define MATRIX_ROW_SELECT \ + case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break; \ + case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break; \ + case 2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break; \ + case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break; \ + case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break; \ + case 5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break; \ + case 6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break; \ + case 7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break; \ + case 8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break; \ + case 9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break; \ + case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break; \ + case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break; \ + case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break; \ + case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break; \ + case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break; \ + case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break; \ + case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break; \ + case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break; + +#endif + #ifndef DEBOUNCING_DELAY -# define DEBOUNCING_DELAY 5 +# define DEBOUNCING_DELAY 0 #endif static uint8_t debouncing = DEBOUNCING_DELAY; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -static uint8_t read_rows(void); -static void select_col(uint8_t col); +static matrix_row_t scan_row(void); +static void select_row(uint8_t row); inline uint8_t matrix_rows(void) { return MATRIX_ROWS; @@ -45,58 +98,40 @@ inline uint8_t matrix_cols(void) { return MATRIX_COLS; } -/* Column pin configuration - * - * col: 0 1 2 3 4 5 6 7 - * pin: PC7 PD5 PD3 PD1 PC2 PD6 PD4 PD2 - * - * Rrr pin configuration - * - * These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low - * active), together with 2 rrrs driven directly from the micro - * controller, to control the 18 rrrs. The rrrs are driven from - * pins B6,5,4,3,2,1,0. - */ void matrix_init(void) { - DDRC &= ~0b10000100; // Row input pins - DDRD &= ~0b01111110; - PORTC |= 0b10000100; - PORTD |= 0b01111110; - - DDRB |= 0b01111111; // Column output pins + CONFIG_MATRIX_IO; for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; matrix_debouncing[i] = 0; } + matrix_init_quantum(); } uint8_t matrix_scan(void) { - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - select_col(col); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + select_row(row); _delay_us(3); - uint8_t rows = read_rows(); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + matrix_row_t row_scan = scan_row(); + for (uint8_t col = 0; col < MATRIX_COLS; col++) { bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1< Date: Sun, 19 Mar 2017 19:55:55 -0700 Subject: [PATCH 102/183] start to define keymap; annoying because rows and columns are swapped from schematic --- keyboards/frosty_flake/frosty_flake.h | 74 +++++++++++++++++++ .../frosty_flake/keymaps/default/keymap.c | 11 ++- keyboards/frosty_flake/matrix.c | 4 +- 3 files changed, 84 insertions(+), 5 deletions(-) diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h index 90ea25ed..767efcbd 100644 --- a/keyboards/frosty_flake/frosty_flake.h +++ b/keyboards/frosty_flake/frosty_flake.h @@ -7,6 +7,7 @@ // The following is an example using the Planck MIT layout // The first section contains all of the arguements // The second converts the arguments into a two-dimensional array +#if 0 #define KEYMAP( \ k00, k01, k02, \ k10, k11 \ @@ -15,5 +16,78 @@ { k00, k01, k02 }, \ { k10, KC_NO, k11 }, \ } +#endif + +/* + Matrix col/row mapping + + ,----. ,-------------------. ,-------------------. ,-------------------. ,--------------. + | J6 | | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 | + `----' `-------------------' `-------------------' `-------------------' `--------------' + ,-------------------------------------------------------------------------. ,--------------. ,-------------------. + | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 | B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 | + |-------------------------------------------------------------------------| |--------------| |-------------------| + | J2 | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 | B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 | + |-------------------------------------------------------------------------| '--------------' |-------------- | + | O5 | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 | B1 | | K2 | L2 | Q2 | | + |-------------------------------------------------------------------------| ,----. |-------------------| + | N2 | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 | N3 | | O6 | | K3 | L3 | Q3 | O3 | + |-------------------------------------------------------------------------| ,--------------. |-------------- | + | A4 | P2 | C6 | K6 | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6 | Q6 | | + `-------------------------------------------------------------------------' `--------------' `-------------------' +*/ + +#define KEYMAP( \ + KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \ + KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \ + KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \ +) \ +{ \ +/* 0 1 2 3 4 5 6 7 */ \ +/* A */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* B */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* C */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* D */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* E */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* F */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* G */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* H */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* I */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* J */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KJ6, KC_NO }, \ +/* K */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* L */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* M */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* N */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* O */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* P */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* Q */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ +/* R */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ +} + +#if 0 +#define KEYMAP( \ + KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ + KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \ + KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \ + KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \ + KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \ + KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \ +) \ +{ \ +/* Columns and rows need to be swapped in the below definition */ \ +/* A B C D E F G H I J K L M N O P Q R */ \ +/* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KQ0, KR0 }, \ +/* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1, KC_NO, KC_NO, KC_NO, KC_NO, KQ1, KC_NO }, \ +/* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KC_NO, KN2, KC_NO, KP2, KQ2, KR2 }, \ +/* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3, KC_NO, KQ3, KR3 }, \ +/* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \ +/* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KC_NO, KC_NO, KO5, KC_NO, KQ5, KR5 }, \ +/* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \ +/* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \ +} +#endif #endif diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c index e5535556..90711732 100644 --- a/keyboards/frosty_flake/keymaps/default/keymap.c +++ b/keyboards/frosty_flake/keymaps/default/keymap.c @@ -1,10 +1,13 @@ #include "frosty_flake.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP( /* Base */ - KC_A, KC_1, KC_H, \ - KC_TAB, KC_SPC \ -), +[0] = 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_PSCR,KC_SLCK,KC_PAUS, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ + KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT) }; const uint16_t PROGMEM fn_actions[] = { diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c index 70456ada..07b9f6dd 100644 --- a/keyboards/frosty_flake/matrix.c +++ b/keyboards/frosty_flake/matrix.c @@ -151,11 +151,13 @@ inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; } +static const char ROW_NAMES[] = "ABCDEFGHIJKLMNOPQR"; + void matrix_print(void) { print("\nr/c 01234567\n"); for (uint8_t row = 0; row < MATRIX_ROWS; row++) { matrix_row_t row_scan = matrix_get_row(row); - xprintf("%02X: ", row); + xprintf("%c: ", ROW_NAMES[row]); for (uint8_t col = 0; col < MATRIX_COLS; col++) { bool curr_bit = row_scan & (1< Date: Sun, 19 Mar 2017 20:33:41 -0700 Subject: [PATCH 103/183] Swap rows and columns to match the schematic --- keyboards/frosty_flake/config.h | 4 +- keyboards/frosty_flake/frosty_flake.h | 43 ----- .../frosty_flake/keymaps/default/keymap.c | 3 +- keyboards/frosty_flake/matrix.c | 154 +++++++----------- 4 files changed, 62 insertions(+), 142 deletions(-) diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h index 507e6a6b..f03cecb3 100644 --- a/keyboards/frosty_flake/config.h +++ b/keyboards/frosty_flake/config.h @@ -36,8 +36,8 @@ along with this program. If not, see . */ /* key matrix size */ -#define MATRIX_ROWS 18 -#define MATRIX_COLS 8 +#define MATRIX_ROWS 8 +#define MATRIX_COLS 18 /* * Keyboard Matrix Assignments diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h index 767efcbd..3b52df6b 100644 --- a/keyboards/frosty_flake/frosty_flake.h +++ b/keyboards/frosty_flake/frosty_flake.h @@ -7,16 +7,6 @@ // The following is an example using the Planck MIT layout // The first section contains all of the arguements // The second converts the arguments into a two-dimensional array -#if 0 -#define KEYMAP( \ - k00, k01, k02, \ - k10, k11 \ -) \ -{ \ - { k00, k01, k02 }, \ - { k10, KC_NO, k11 }, \ -} -#endif /* Matrix col/row mapping @@ -36,38 +26,6 @@ | A4 | P2 | C6 | K6 | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6 | Q6 | | `-------------------------------------------------------------------------' `--------------' `-------------------' */ - -#define KEYMAP( \ - KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ - KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \ - KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \ - KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \ - KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \ - KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \ -) \ -{ \ -/* 0 1 2 3 4 5 6 7 */ \ -/* A */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* B */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* C */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* D */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* E */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* F */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* G */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* H */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* I */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* J */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KJ6, KC_NO }, \ -/* K */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* L */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* M */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* N */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* O */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* P */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* Q */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ -/* R */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \ -} - -#if 0 #define KEYMAP( \ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \ @@ -88,6 +46,5 @@ /* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6, KC_NO, KC_NO, KO6, KC_NO, KQ6, KR6 }, \ /* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \ } -#endif #endif diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c index 90711732..4383f7a8 100644 --- a/keyboards/frosty_flake/keymaps/default/keymap.c +++ b/keyboards/frosty_flake/keymaps/default/keymap.c @@ -35,8 +35,7 @@ void matrix_init_user(void) { } void matrix_scan_user(void) { - if (matrix_is_modified()) - matrix_print(); + matrix_print(); } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c index 07b9f6dd..f289f506 100644 --- a/keyboards/frosty_flake/matrix.c +++ b/keyboards/frosty_flake/matrix.c @@ -1,5 +1,5 @@ /* - Copyright 2014 Ralf Schmitt + Copyright 2017 Gabriel Young 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 @@ -24,9 +24,6 @@ #include "util.h" #include "matrix.h" -#ifndef CONFIG_SPECIFIC_H -#define CONFIG_SPECIFIC_H - #define CONFIG_LED_IO \ DDRB |= (1<<7); \ DDRC |= (1<<5) | (1<<6); @@ -38,85 +35,40 @@ #define USB_LED_SCROLL_LOCK_ON PORTC &= ~(1<<6) #define USB_LED_SCROLL_LOCK_OFF PORTC |= (1<<6) -#define CONFIG_MATRIX_IO \ - /* Column output pins */ \ - DDRD |= 0b01111011; \ - /* Row input pins */ \ - DDRC &= ~0b10000000; \ - DDRB &= ~0b01111111; \ - PORTC |= 0b10000000; \ - PORTB |= 0b01111111; - -#define MATRIX_ROW_SCAN \ - (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) | \ - (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) | \ - (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | \ - (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) | \ - (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | \ - (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) | \ - (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) | \ - (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7)) - -#define MATRIX_ROW_SELECT \ - case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break; \ - case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break; \ - case 2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break; \ - case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break; \ - case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break; \ - case 5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break; \ - case 6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break; \ - case 7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break; \ - case 8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break; \ - case 9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break; \ - case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break; \ - case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break; \ - case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break; \ - case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break; \ - case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break; \ - case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break; \ - case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break; \ - case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break; - -#endif - #ifndef DEBOUNCING_DELAY -# define DEBOUNCING_DELAY 0 +# define DEBOUNCING_DELAY 5 #endif static uint8_t debouncing = DEBOUNCING_DELAY; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -static matrix_row_t scan_row(void); -static void select_row(uint8_t row); - -inline uint8_t matrix_rows(void) { - return MATRIX_ROWS; -} - -inline uint8_t matrix_cols(void) { - return MATRIX_COLS; -} +static matrix_row_t scan_col(void); +static void select_col(uint8_t row); void matrix_init(void) { - CONFIG_MATRIX_IO; - - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix[i] = 0; - matrix_debouncing[i] = 0; - } - - matrix_init_quantum(); + /* Row output pins */ + DDRD |= 0b01111011; + /* Column input pins */ + DDRC &= ~0b10000000; + DDRB &= ~0b01111111; + PORTC |= 0b10000000; + PORTB |= 0b01111111; + + for (uint8_t i=0; i < MATRIX_ROWS; i++) + matrix[i] = matrix_debouncing[i] = 0; + + matrix_init_quantum(); } uint8_t matrix_scan(void) { - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - select_row(row); + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + select_col(col); _delay_us(3); - matrix_row_t row_scan = scan_row(); - for (uint8_t col = 0; col < MATRIX_COLS; col++) { + matrix_row_t col_scan = scan_col(); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1< Date: Sun, 19 Mar 2017 20:45:10 -0700 Subject: [PATCH 104/183] support LEDs --- keyboards/frosty_flake/frosty_flake.c | 40 +++++++++++++------ keyboards/frosty_flake/matrix.c | 55 +++++++++++---------------- 2 files changed, 51 insertions(+), 44 deletions(-) diff --git a/keyboards/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c index 22979a45..ed173618 100644 --- a/keyboards/frosty_flake/frosty_flake.c +++ b/keyboards/frosty_flake/frosty_flake.c @@ -1,28 +1,46 @@ #include "frosty_flake.h" void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up + // put your keyboard start-up code here + // runs once when the firmware starts up - matrix_init_user(); + matrix_init_user(); } void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) + // put your looping keyboard code here + // runs every cycle (a lot) - matrix_scan_user(); + matrix_scan_user(); } bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware - return process_record_user(keycode, record); + return process_record_user(keycode, record); } void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + DDRB |= (1<<7); + DDRC |= (1<<5) | (1<<6); - led_set_user(usb_led); + print_dec(usb_led); + + if (usb_led & (1< Date: Sun, 19 Mar 2017 20:46:56 -0700 Subject: [PATCH 105/183] fix whitespace --- keyboards/frosty_flake/matrix.c | 99 ++++++++++++++++----------------- 1 file changed, 48 insertions(+), 51 deletions(-) diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c index 5d711a66..05dffdb6 100644 --- a/keyboards/frosty_flake/matrix.c +++ b/keyboards/frosty_flake/matrix.c @@ -32,8 +32,41 @@ static uint8_t debouncing = DEBOUNCING_DELAY; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -static matrix_row_t scan_col(void); -static void select_col(uint8_t row); +static matrix_row_t scan_col(void) { + return ( + (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) | + (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) | + (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | + (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) | + (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | + (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) | + (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) | + (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7)) + ); +} + +static void select_col(uint8_t col) { + switch (col) { + case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break; + case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break; + case 2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break; + case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break; + case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break; + case 5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break; + case 6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break; + case 7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break; + case 8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break; + case 9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break; + case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break; + case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break; + case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break; + case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break; + case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break; + case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break; + case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break; + case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break; + } +} void matrix_init(void) { /* Row output pins */ @@ -82,57 +115,21 @@ inline matrix_row_t matrix_get_row(uint8_t row) { } void matrix_print(void) { - print("\nr\\c ABCDEFGHIJKLMNOPQR\n"); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - matrix_row_t matrix_row = matrix_get_row(row); - xprintf("%02X: ", row); - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - bool curr_bit = matrix_row & (1< Date: Sun, 19 Mar 2017 20:56:45 -0700 Subject: [PATCH 106/183] update docs --- keyboards/frosty_flake/readme.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md index a3296506..ef0e7492 100644 --- a/keyboards/frosty_flake/readme.md +++ b/keyboards/frosty_flake/readme.md @@ -1,6 +1,10 @@ frosty_flake keyboard firmware ====================== +This is the firmware for Rev. 20140521 of the Frosty Flake controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/). + +The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers), but has been cleaned up to match the [schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf) and gone through some minor refactoring for QMK. + ## Quantum MK Firmware For the full Quantum feature list, see [the parent readme](/). From a3a304db9ae09c3c5532c43e553cc24d3f9b29a2 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sun, 19 Mar 2017 21:11:17 -0700 Subject: [PATCH 107/183] clean up docs and provide defaults for keymap --- keyboards/frosty_flake/frosty_flake.c | 17 +++++++++ .../frosty_flake/keymaps/default/Makefile | 4 +- .../frosty_flake/keymaps/default/keymap.c | 38 +------------------ keyboards/frosty_flake/readme.md | 2 +- 4 files changed, 21 insertions(+), 40 deletions(-) diff --git a/keyboards/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c index ed173618..1cd47603 100644 --- a/keyboards/frosty_flake/frosty_flake.c +++ b/keyboards/frosty_flake/frosty_flake.c @@ -44,3 +44,20 @@ void led_set_kb(uint8_t usb_led) { led_set_user(usb_led); } + +__attribute__ ((weak)) +void matrix_init_user(void) { +} + +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +__attribute__ ((weak)) +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +__attribute__ ((weak)) +void led_set_user(uint8_t usb_led) { +} \ No newline at end of file diff --git a/keyboards/frosty_flake/keymaps/default/Makefile b/keyboards/frosty_flake/keymaps/default/Makefile index 08876668..9d3df596 100644 --- a/keyboards/frosty_flake/keymaps/default/Makefile +++ b/keyboards/frosty_flake/keymaps/default/Makefile @@ -3,9 +3,9 @@ # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = yes # Console for debug(+400) +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 = no # Enable keyboard backlight functionality diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c index 4383f7a8..4dc7ed65 100644 --- a/keyboards/frosty_flake/keymaps/default/keymap.c +++ b/keyboards/frosty_flake/keymaps/default/keymap.c @@ -8,40 +8,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \ KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT) -}; - -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 matrix_init_user(void) { - debug_enable = true; -} - -void matrix_scan_user(void) { - matrix_print(); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file +}; \ No newline at end of file diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md index ef0e7492..ff440e33 100644 --- a/keyboards/frosty_flake/readme.md +++ b/keyboards/frosty_flake/readme.md @@ -1,7 +1,7 @@ frosty_flake keyboard firmware ====================== -This is the firmware for Rev. 20140521 of the Frosty Flake controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/). +This is the firmware for Rev. 20140521 of the Frosty Flake controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Cooler Master Quick Fire Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/). The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers), but has been cleaned up to match the [schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf) and gone through some minor refactoring for QMK. From b37f510f323b532360f38afb6f0bb29bc61eaab3 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sun, 19 Mar 2017 21:18:15 -0700 Subject: [PATCH 108/183] clean up config --- keyboards/frosty_flake/config.h | 30 ++++-------------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h index f03cecb3..2c73f107 100644 --- a/keyboards/frosty_flake/config.h +++ b/keyboards/frosty_flake/config.h @@ -36,39 +36,17 @@ along with this program. If not, see . */ /* key matrix size */ -#define MATRIX_ROWS 8 -#define MATRIX_COLS 18 +#define MATRIX_ROWS 8 // Row0 - Row7 in the schematic +#define MATRIX_COLS 18 // ColA - ColR in the schematic /* * 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 { D5, D4, D6, D2, D1, D0 } -//#define MATRIX_COL_PINS << n/a >> -//#define UNUSED_PINS { B0, C4, D3 } - -/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */ -//#define DIODE_DIRECTION << n/a >> - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - + */ +#define UNUSED_PINS { B0, C4, D3 } /* 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 */ From 3399e392977f91b1993e1ac581ff5a054a45848b Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Mon, 20 Mar 2017 07:26:28 -0400 Subject: [PATCH 109/183] Fix shift tap-dance (can't use one-shot layer) --- keyboards/satan/keymaps/smt/Makefile | 3 +- keyboards/satan/keymaps/smt/keymap.c | 43 +++++++--------------------- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/keyboards/satan/keymaps/smt/Makefile b/keyboards/satan/keymaps/smt/Makefile index 2a7ff277..afcd025e 100644 --- a/keyboards/satan/keymaps/smt/Makefile +++ b/keyboards/satan/keymaps/smt/Makefile @@ -8,13 +8,14 @@ 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 +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 +TAP_DANCE_ENABLE = yes # Enable tap dance ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c index 4ac016f2..7f9e9c2d 100644 --- a/keyboards/satan/keymaps/smt/keymap.c +++ b/keyboards/satan/keymaps/smt/keymap.c @@ -20,6 +20,10 @@ enum planck_keycodes { DVORAK }; +enum { + TD_SHIFT_RAISE = 0 +}; + #define _______ KC_TRNS #define XXXXXXX KC_NO @@ -28,7 +32,7 @@ enum planck_keycodes { #define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl #define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt) #define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift -#define SFT_RSE TD(KC_LSFT, OS(_RAISE)) // Double-tap for RAISE one-shot, otherwise Left Shift +#define SFT_RSE TD(TD_SHIFT_RAISE) // Double-tap for RAISE one-shot, otherwise Left Shift const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _QWERTY: (Base Layer) Default Layer @@ -170,36 +174,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -enum function_id { - SHIFT_ESC, +// Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + // Tap/hold once for Shift, tap twice for raise layer + [TD_SHIFT_RAISE] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, _RAISE) +// Other declarations would go here, separated by commas, if you have them }; - -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; - } -} From b10d95070831dde5801e930c615612dec3a6fd11 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Mon, 20 Mar 2017 07:43:24 -0400 Subject: [PATCH 110/183] Use normal backtick in ESC spot - I've mapped ESC to caps lock --- keyboards/satan/keymaps/smt/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c index 7f9e9c2d..1a2bc976 100644 --- a/keyboards/satan/keymaps/smt/keymap.c +++ b/keyboards/satan/keymaps/smt/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_QWERTY] = KEYMAP_ANSI( - 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_BSPC, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ SFT_RSE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ @@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_COLEMAK] = KEYMAP_ANSI( - 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_BSPC, \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O ,KC_QUOT, KC_ENT, \ SFT_RSE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ @@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_DVORAK] = KEYMAP_ANSI( - F(0), 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_BSPC, \ + KC_GRV, 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_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, \ SFT_RSE, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ @@ -109,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------' */ [_LOWER] = KEYMAP_ANSI( - KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL, \ + _______,KC_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_UP ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,KC_VOLU,KC_PGUP ,_______, \ KC_LSFT ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN ,_______, \ From 34c5f8094e3a07dfff344f95b29407c9efaa0e4c Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Mon, 20 Mar 2017 07:43:45 -0400 Subject: [PATCH 111/183] Remove tap-dance. Raise will be accessed via holding shift while lower is active --- keyboards/satan/keymaps/smt/Makefile | 1 - keyboards/satan/keymaps/smt/keymap.c | 32 ++++++++++------------------ 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/keyboards/satan/keymaps/smt/Makefile b/keyboards/satan/keymaps/smt/Makefile index afcd025e..0c9ae824 100644 --- a/keyboards/satan/keymaps/smt/Makefile +++ b/keyboards/satan/keymaps/smt/Makefile @@ -15,7 +15,6 @@ 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 -TAP_DANCE_ENABLE = yes # Enable tap dance ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c index 1a2bc976..a21d3eb8 100644 --- a/keyboards/satan/keymaps/smt/keymap.c +++ b/keyboards/satan/keymaps/smt/keymap.c @@ -17,11 +17,9 @@ enum planck_keycodes { QWERTY = SAFE_RANGE, COLEMAK, - DVORAK -}; - -enum { - TD_SHIFT_RAISE = 0 + DVORAK, + LOWER, + RAISE }; #define _______ KC_TRNS @@ -32,7 +30,6 @@ enum { #define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl #define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Shift+Alt) #define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift -#define SFT_RSE TD(TD_SHIFT_RAISE) // Double-tap for RAISE one-shot, otherwise Left Shift const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _QWERTY: (Base Layer) Default Layer @@ -52,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ - SFT_RSE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), /* Keymap _COLEMAK: (Base Layer) Default Layer @@ -72,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O ,KC_QUOT, KC_ENT, \ - SFT_RSE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), /* Keymap _DVORAK: (Base Layer) Default Layer @@ -92,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, 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_BSPC, \ 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_BSLS, \ CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, \ - SFT_RSE, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ + KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), /* Keymap _LOWER: Function Layer @@ -112,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,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_UP ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,KC_VOLU,KC_PGUP ,_______, \ - KC_LSFT ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN ,_______, \ + RAISE ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN ,_______, \ _______,_______,_______ ,_______ ,_______,_______,_______,_______), /* Keymap _RAISE: Function Layer @@ -133,14 +130,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ - KC_LSFT ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______ ,_______, \ - _______,_______,_______ ,_______ ,_______,_______,XXXXXXX,_______ + _______ ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______ ,_______, \ + _______,_______,_______ ,_______ ,_______,_______,_______,_______ #else _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ - KC_LSFT ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______, \ - _______,_______,_______ ,_______ ,_______,_______,XXXXXXX,_______ + _______ ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______, \ + _______,_______,_______ ,_______ ,_______,_______,_______,_______ #endif ) }; @@ -173,10 +170,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -// Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - // Tap/hold once for Shift, tap twice for raise layer - [TD_SHIFT_RAISE] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, _RAISE) -// Other declarations would go here, separated by commas, if you have them -}; From d7f2bd29646c585434a8f19e7b9df0d3a6ea7bef Mon Sep 17 00:00:00 2001 From: Dylan Khor Date: Mon, 20 Mar 2017 13:14:48 -0400 Subject: [PATCH 112/183] add pgup, pgdn, home, end --- keyboards/planck/keymaps/khord/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c index 6f19966f..b6adb603 100644 --- a/keyboards/planck/keymaps/khord/keymap.c +++ b/keyboards/planck/keymaps/khord/keymap.c @@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | END | HOME |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_END, KC_HOME, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |PG DN |PG UP |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' @@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGDN, KC_PGUP, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, From dce3847ebb900ffebd9038da255309cbac634170 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Mon, 20 Mar 2017 14:12:43 -0400 Subject: [PATCH 113/183] Use single _FUNC layer. Move RESET and base layout-changing keys to _FUNC. --- keyboards/satan/keymaps/smt/keymap.c | 55 ++++++---------------------- 1 file changed, 12 insertions(+), 43 deletions(-) diff --git a/keyboards/satan/keymaps/smt/keymap.c b/keyboards/satan/keymaps/smt/keymap.c index a21d3eb8..d9084991 100644 --- a/keyboards/satan/keymaps/smt/keymap.c +++ b/keyboards/satan/keymaps/smt/keymap.c @@ -11,15 +11,12 @@ #define _QWERTY 0 #define _COLEMAK 1 #define _DVORAK 2 -#define _LOWER 3 -#define _RAISE 4 +#define _FUNC 3 enum planck_keycodes { QWERTY = SAFE_RANGE, COLEMAK, - DVORAK, - LOWER, - RAISE + DVORAK }; #define _______ KC_TRNS @@ -50,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_BSLS, \ CTL_ESC, 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, SFT_ENT, \ - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_FUNC),KC_RCTL), /* Keymap _COLEMAK: (Base Layer) Default Layer * ,-----------------------------------------------------------. @@ -70,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_BSLS, \ CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O ,KC_QUOT, KC_ENT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM,KC_DOT, KC_SLSH, SFT_ENT, \ - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_FUNC),KC_RCTL), /* Keymap _DVORAK: (Base Layer) Default Layer * ,-----------------------------------------------------------. @@ -90,55 +87,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_BSLS, \ CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, \ KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_LOWER),KC_RCTL), + KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(_FUNC),KC_RCTL), - /* Keymap _LOWER: Function Layer + /* Keymap _FUNC: Function Layer * ,-----------------------------------------------------------. * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete | * |-----------------------------------------------------------| - * | |Hom| UP|End| | | | | | | |BL-|BL+|BL | + * | |Hom| UP|End| | | |Qwt|Cmk|Dvk| |BL-|BL+|BL | * |-----------------------------------------------------------| * | |LFT| DN| RT| | |LFT| DN| UP| RT|Vo+|Pg+| | * |-----------------------------------------------------------| * | | | |Prv|Ply|Nxt| | | |Vo-|Pg-| | * |-----------------------------------------------------------| - * | | | | | | | | | + * |RESET| | | | | | | | * `-----------------------------------------------------------' */ -[_LOWER] = KEYMAP_ANSI( +[_FUNC] = KEYMAP_ANSI( _______,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_UP ,KC_END ,_______,_______,_______,_______,_______,_______,_______,BL_DEC ,BL_INC ,BL_TOGG, \ + _______,KC_HOME,KC_UP ,KC_END ,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,BL_DEC ,BL_INC ,BL_TOGG, \ _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,KC_VOLU,KC_PGUP ,_______, \ - RAISE ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN ,_______, \ - _______,_______,_______ ,_______ ,_______,_______,_______,_______), - - /* Keymap _RAISE: Function Layer - * ,-----------------------------------------------------------. - * | | | | | | | | | | | | | | RESET | - * |-----------------------------------------------------------| - * | | | | | | | | | | | |BL-|BL+|BL | - * |-----------------------------------------------------------| - * | | | | | | | |QWT|CLM|DVK| | | | - * |-----------------------------------------------------------| - * | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | | - * |-----------------------------------------------------------| - * | | | | | | | | | - * `-----------------------------------------------------------' - */ -[_RAISE] = KEYMAP_ANSI( - #ifdef RGBLIGHT_ENABLE - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ - _______ ,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______ ,_______, \ - _______,_______,_______ ,_______ ,_______,_______,_______,_______ - #else - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET , \ - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______,_______,_______,_______,_______,_______,_______,QWERTY ,COLEMAK,DVORAK ,_______,_______ ,_______, \ - _______ ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______, \ - _______,_______,_______ ,_______ ,_______,_______,_______,_______ - #endif + _______ ,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_VOLD,KC_PGDN ,_______, \ + RESET ,_______,_______ ,_______ ,_______,_______,_______,_______ ) }; From 9e0ca927f950d1d396e3f45f02e0a3e7dd5b0fff Mon Sep 17 00:00:00 2001 From: tengg Date: Wed, 22 Mar 2017 00:03:30 -0400 Subject: [PATCH 114/183] fixed a bug related to mod + Grave with combined ESC/Grave key This only applies to keymaps that has combined esc/grave. Here we call it theKEY. Think about the motion when we do shift + theKEY (typing ~), or CMD + theKEY (switching window on MAC). Based on the original code, we must do following sequence: press shift -> press theKEY -> release theKEY -> release shift. However, it is very possible and natural that we do this stroke sequence instead: press shift -> press theKEY -> release shift -> release theKEY. If we do the 2nd stroke sequence, the code will del_key(ESC) instead of (GRV) when we release theKEY. This caused some inconvenient issues and ghost typing. By adding a flag, this issue is eliminated and will not affect any other functions. --- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index 59f7ff24..bb1a5d3c 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mods_flag; switch (id) { case 0: @@ -62,6 +63,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { */ if (mods_pressed) { add_key(KC_GRV); + mod_flag = true; send_keyboard_report(); } else { add_key(KC_ESC); @@ -70,8 +72,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { del_key(KC_GRV); + mod_flag = false; send_keyboard_report(); } else { del_key(KC_ESC); From a89998b977ccb707767149c0fa4bbf614d4eefea Mon Sep 17 00:00:00 2001 From: tengg Date: Wed, 22 Mar 2017 00:28:59 -0400 Subject: [PATCH 115/183] fix typo --- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index bb1a5d3c..bd9a76dc 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM fn_actions[] = { }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t mods_pressed; + static uint8_t mod_pressed; static bool mods_flag; switch (id) { From 3cba7a43d976be973a4fe32a058b98f092f2e26e Mon Sep 17 00:00:00 2001 From: tengg Date: Wed, 22 Mar 2017 00:33:44 -0400 Subject: [PATCH 116/183] typo fixed --- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index bd9a76dc..4a18e9a7 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -49,8 +49,8 @@ const uint16_t PROGMEM fn_actions[] = { }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t mod_pressed; - static bool mods_flag; + static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: From 452949f9139a04d46748e6abc03e92d65d74eb30 Mon Sep 17 00:00:00 2001 From: skullY Date: Tue, 21 Mar 2017 22:06:47 -0700 Subject: [PATCH 117/183] Add #1170 to all the clueboard keymaps --- keyboards/clueboard/keymaps/caps_fn/keymap.c | 5 ++++- keyboards/clueboard/keymaps/colemak/keymap.c | 5 ++++- keyboards/clueboard/keymaps/default/keymap.c | 5 ++++- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 4 ++-- keyboards/clueboard/keymaps/mouse_keys/keymap.c | 5 ++++- keyboards/clueboard/keymaps/shift_fn/keymap.c | 5 ++++- keyboards/clueboard/keymaps/skully/keymap.c | 5 ++++- keyboards/clueboard/keymaps/unix_optimized/keymap.c | 5 ++++- keyboards/clueboard/keymaps/win_optimized/keymap.c | 5 ++++- 9 files changed, 34 insertions(+), 10 deletions(-) diff --git a/keyboards/clueboard/keymaps/caps_fn/keymap.c b/keyboards/clueboard/keymaps/caps_fn/keymap.c index 37f00e8d..01779446 100644 --- a/keyboards/clueboard/keymaps/caps_fn/keymap.c +++ b/keyboards/clueboard/keymaps/caps_fn/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static boot mod_flag; switch (id) { case 0: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/colemak/keymap.c b/keyboards/clueboard/keymaps/colemak/keymap.c index 6b1fc7c9..42c85ff9 100644 --- a/keyboards/clueboard/keymaps/colemak/keymap.c +++ b/keyboards/clueboard/keymaps/colemak/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { 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: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/default/keymap.c b/keyboards/clueboard/keymaps/default/keymap.c index 37f00e8d..7fad9c1b 100644 --- a/keyboards/clueboard/keymaps/default/keymap.c +++ b/keyboards/clueboard/keymaps/default/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { 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: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index 4a18e9a7..7ea02d27 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -62,8 +62,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { - add_key(KC_GRV); mod_flag = true; + add_key(KC_GRV); send_keyboard_report(); } else { add_key(KC_ESC); @@ -73,8 +73,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being released. */ if (mod_flag) { - del_key(KC_GRV); mod_flag = false; + del_key(KC_GRV); send_keyboard_report(); } else { del_key(KC_ESC); diff --git a/keyboards/clueboard/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/keymaps/mouse_keys/keymap.c index a9c5cebd..d3108d1e 100644 --- a/keyboards/clueboard/keymaps/mouse_keys/keymap.c +++ b/keyboards/clueboard/keymaps/mouse_keys/keymap.c @@ -60,6 +60,7 @@ const uint16_t PROGMEM fn_actions[] = { 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: @@ -71,6 +72,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -80,7 +82,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c index f21b9b58..c4fae036 100644 --- a/keyboards/clueboard/keymaps/shift_fn/keymap.c +++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { 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: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c index 29509035..077d214f 100644 --- a/keyboards/clueboard/keymaps/skully/keymap.c +++ b/keyboards/clueboard/keymaps/skully/keymap.c @@ -47,6 +47,7 @@ const uint16_t PROGMEM fn_actions[] = { 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: @@ -58,6 +59,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -67,7 +69,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/unix_optimized/keymap.c b/keyboards/clueboard/keymaps/unix_optimized/keymap.c index 9fbd7724..7c135995 100644 --- a/keyboards/clueboard/keymaps/unix_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/unix_optimized/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { 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: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/win_optimized/keymap.c b/keyboards/clueboard/keymaps/win_optimized/keymap.c index a85f0824..c5553ff1 100644 --- a/keyboards/clueboard/keymaps/win_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/win_optimized/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { 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: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { From 7a9437a2e3a2597e8eef1ea293bfb3c394f588b9 Mon Sep 17 00:00:00 2001 From: skullY Date: Tue, 21 Mar 2017 22:24:34 -0700 Subject: [PATCH 118/183] Fix a typo --- keyboards/clueboard/keymaps/caps_fn/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/clueboard/keymaps/caps_fn/keymap.c b/keyboards/clueboard/keymaps/caps_fn/keymap.c index 01779446..7fad9c1b 100644 --- a/keyboards/clueboard/keymaps/caps_fn/keymap.c +++ b/keyboards/clueboard/keymaps/caps_fn/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; - static boot mod_flag; + static bool mod_flag; switch (id) { case 0: From f0962bce505a7643abbd169868820715b86f97b7 Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 14:55:13 -0400 Subject: [PATCH 119/183] Add files via upload --- .../lets_split/keymaps/OLED_sample/Makefile | 25 ++ .../lets_split/keymaps/OLED_sample/config.h | 45 +++ .../lets_split/keymaps/OLED_sample/keymap.c | 356 ++++++++++++++++++ 3 files changed, 426 insertions(+) create mode 100644 keyboards/lets_split/keymaps/OLED_sample/Makefile create mode 100644 keyboards/lets_split/keymaps/OLED_sample/config.h create mode 100644 keyboards/lets_split/keymaps/OLED_sample/keymap.c diff --git a/keyboards/lets_split/keymaps/OLED_sample/Makefile b/keyboards/lets_split/keymaps/OLED_sample/Makefile new file mode 100644 index 00000000..90616d1f --- /dev/null +++ b/keyboards/lets_split/keymaps/OLED_sample/Makefile @@ -0,0 +1,25 @@ + +# 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 = no # 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 = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +ONEHAND_ENABLE = no # Enable one-hand typing + +# 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 \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/OLED_sample/config.h b/keyboards/lets_split/keymaps/OLED_sample/config.h new file mode 100644 index 00000000..353ea368 --- /dev/null +++ b/keyboards/lets_split/keymaps/OLED_sample/config.h @@ -0,0 +1,45 @@ +/* +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 . +*/ + +#define USE_I2C +//#define USE_SERIAL +//#define MASTER_RIGHT +#define FLIP_HALF + +#define SSD1306OLED + + +#define PREVENT_STUCK_MODIFIERS +#define TAPPING_FORCE_HOLD +#define TAPPING_TERM 100 + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 6 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + + + + +#ifdef SUBPROJECT_rev1 + #include "../../rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "../../rev2/config.h" +#endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/OLED_sample/keymap.c b/keyboards/lets_split/keymaps/OLED_sample/keymap.c new file mode 100644 index 00000000..072b825a --- /dev/null +++ b/keyboards/lets_split/keymaps/OLED_sample/keymap.c @@ -0,0 +1,356 @@ +#include "lets_split.h" +#include "bootloader.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "tmk_core/protocol/lufa/LUFA-git/LUFA/Drivers/Peripheral/TWI.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif + +extern keymap_config_t keymap_config; + +//Following line allows macro to read current RGB settings +extern rgblight_config_t rgblight_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. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, + BACKLIT, + RGBLED_TOGGLE, + RGBLED_STEP_MODE, + RGBLED_INCREASE_HUE, + RGBLED_DECREASE_HUE, + RGBLED_INCREASE_SAT, + RGBLED_DECREASE_SAT, + RGBLED_INCREASE_VAL, + RGBLED_DECREASE_VAL, +}; + +enum macro_keycodes { + KC_SAMPLEMACRO, +}; + + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO +//Macros +#define M_SAMPLE M(KC_SAMPLEMACRO) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, M_SAMPLE, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +// define variables for reactive RGB +bool TOG_STATUS = false; +int RGB_current_mode; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +// Setting ADJUST layer RGB back to default +void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + rgblight_mode(RGB_current_mode); + layer_on(layer3); + } else { + layer_off(layer3); + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + //not sure how to have keyboard check mode and set it to a variable, so my work around + //uses another variable that would be set to true after the first time a reactive key is pressed. + if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false + } else { + TOG_STATUS = !TOG_STATUS; + rgblight_mode(16); + } + layer_on(_LOWER); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } else { + rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change + TOG_STATUS = false; + layer_off(_LOWER); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + //not sure how to have keyboard check mode and set it to a variable, so my work around + //uses another variable that would be set to true after the first time a reactive key is pressed. + if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false + } else { + TOG_STATUS = !TOG_STATUS; + rgblight_mode(15); + } + layer_on(_RAISE); + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } else { + rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change + layer_off(_RAISE); + TOG_STATUS = false; + update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released + case RGB_MOD: + if (record->event.pressed) { + rgblight_mode(RGB_current_mode); + rgblight_step(); + RGB_current_mode = rgblight_config.mode; + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif + RGB_current_mode = rgblight_config.mode; +} + +//SSD1306 OLED init and update loop, make sure to add #define SSD1306OLED in config.h +#ifdef SSD1306OLED +void matrix_master_OLED_init (void) { + TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000)); + iota_gfx_init(); // turns on the display +} + +void matrix_scan_user(void) { + iota_gfx_task(); // this is what updates the display continuously +} +#endif + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif + +/* + * Macro definition + */ +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + + switch (id) { + case KC_SAMPLEMACRO: + if (record->event.pressed){ + return MACRO (I(10), T(H), T(E), T(L), T(L), T(O), T(SPACE), T(W), T(O), T(R), T(L), T(D), END); + } + + } + + return MACRO_NONE; +} From dfb5a0e8f413338363138dd6beb1701563e1021d Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 14:59:20 -0400 Subject: [PATCH 120/183] Delete Makefile --- keyboards/lets_split/rev2fliphalf/Makefile | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 keyboards/lets_split/rev2fliphalf/Makefile diff --git a/keyboards/lets_split/rev2fliphalf/Makefile b/keyboards/lets_split/rev2fliphalf/Makefile deleted file mode 100644 index 4e2a6f00..00000000 --- a/keyboards/lets_split/rev2fliphalf/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -ifndef MAKEFILE_INCLUDED - include ../../Makefile -endif \ No newline at end of file From 6167d7937c15f7fb68f50a48ce34df858f24d80f Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 14:59:32 -0400 Subject: [PATCH 121/183] Delete config.h --- keyboards/lets_split/rev2fliphalf/config.h | 91 ---------------------- 1 file changed, 91 deletions(-) delete mode 100644 keyboards/lets_split/rev2fliphalf/config.h diff --git a/keyboards/lets_split/rev2fliphalf/config.h b/keyboards/lets_split/rev2fliphalf/config.h deleted file mode 100644 index 1c45cf13..00000000 --- a/keyboards/lets_split/rev2fliphalf/config.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -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 0x3060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER Wootpatoot -#define PRODUCT Lets Split v2 -#define DESCRIPTION A split keyboard for the cheap makers - -/* key matrix size */ -// Rows are doubled-up -#define MATRIX_ROWS 8 -#define MATRIX_COLS 6 - -// wiring of each half -#define MATRIX_ROW_PINS { D7, E6, B4, B5 } -//#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } -#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 } //uncomment this line and comment line above if you need to reverse left-to-right key order - -//#define CATERINA_BOOTLOADER - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ -// #define BACKLIGHT_LEVELS 3 - -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCING_DELAY 5 - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* key combination for command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* ws2812 RGB LED */ -#define RGB_DI_PIN D3 -#define RGBLIGHT_TIMER -#define RGBLED_NUM 12 // Number of LEDs -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD - -/* - * 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 \ No newline at end of file From d012b0110811595bed92d3a281ccc5480d0a4a86 Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 14:59:42 -0400 Subject: [PATCH 122/183] Delete rev2fliphalf.c --- .../lets_split/rev2fliphalf/rev2fliphalf.c | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 keyboards/lets_split/rev2fliphalf/rev2fliphalf.c diff --git a/keyboards/lets_split/rev2fliphalf/rev2fliphalf.c b/keyboards/lets_split/rev2fliphalf/rev2fliphalf.c deleted file mode 100644 index c505d3a6..00000000 --- a/keyboards/lets_split/rev2fliphalf/rev2fliphalf.c +++ /dev/null @@ -1,32 +0,0 @@ -#include "lets_split.h" - -#ifdef AUDIO_ENABLE - float tone_startup[][2] = SONG(STARTUP_SOUND); - float tone_goodbye[][2] = SONG(GOODBYE_SOUND); -#endif - -void matrix_init_kb(void) { - - #ifdef AUDIO_ENABLE - _delay_ms(20); // gets rid of tick - PLAY_NOTE_ARRAY(tone_startup, false, 0); - #endif - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - -void shutdown_user(void) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_goodbye, false, 0); - _delay_ms(150); - stop_all_notes(); - #endif -} From a4bdd6d0845667422c9e42818cfc848bcd0807ee Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 14:59:54 -0400 Subject: [PATCH 123/183] Delete rev2fliphalf.h --- .../lets_split/rev2fliphalf/rev2fliphalf.h | 28 ------------------- 1 file changed, 28 deletions(-) delete mode 100644 keyboards/lets_split/rev2fliphalf/rev2fliphalf.h diff --git a/keyboards/lets_split/rev2fliphalf/rev2fliphalf.h b/keyboards/lets_split/rev2fliphalf/rev2fliphalf.h deleted file mode 100644 index 7dc8e5ba..00000000 --- a/keyboards/lets_split/rev2fliphalf/rev2fliphalf.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef REV2FLIPHALF_H -#define REV2FLIPHALF_H - -#include "../lets_split.h" - -//void promicro_bootloader_jmp(bool program); -#include "quantum.h" - -//void promicro_bootloader_jmp(bool program); - -#define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ - k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ - k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ - k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ - ) \ - { \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k33, k34, k35 }, \ - { k40, k41, k42, k43, k44, k45 }, \ - { k50, k51, k52, k53, k54, k55 }, \ - { k60, k61, k62, k63, k64, k65 }, \ - { k70, k71, k72, k73, k74, k75 } \ - } - -#endif \ No newline at end of file From 3a7083d810441253404ac22dda259172b6f9b6de Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:00:00 -0400 Subject: [PATCH 124/183] Delete rules.mk --- keyboards/lets_split/rev2fliphalf/rules.mk | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 keyboards/lets_split/rev2fliphalf/rules.mk diff --git a/keyboards/lets_split/rev2fliphalf/rules.mk b/keyboards/lets_split/rev2fliphalf/rules.mk deleted file mode 100644 index 80a942d0..00000000 --- a/keyboards/lets_split/rev2fliphalf/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -BACKLIGHT_ENABLE = no - -ifndef QUANTUM_DIR - include ../../../Makefile -endif From 423c68c210d73f6bb05c3e9f4a994833b12a524e Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:02:49 -0400 Subject: [PATCH 125/183] Merged Fliphalf, now defined in config, added OLED Can now use the following in the keymap config.h to call the flipped matrix ``` #define FLIPHALF ``` --- keyboards/lets_split/rev2/rev2.c | 8 +++++ keyboards/lets_split/rev2/rev2.h | 59 +++++++++++++++++++++++++++----- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c index c505d3a6..8bfa171d 100644 --- a/keyboards/lets_split/rev2/rev2.c +++ b/keyboards/lets_split/rev2/rev2.c @@ -5,6 +5,13 @@ float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif +#ifdef SSD1306OLED +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + led_set_user(usb_led); +} +#endif + void matrix_init_kb(void) { #ifdef AUDIO_ENABLE @@ -30,3 +37,4 @@ void shutdown_user(void) { stop_all_notes(); #endif } + diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h index 990976de..05473136 100644 --- a/keyboards/lets_split/rev2/rev2.h +++ b/keyboards/lets_split/rev2/rev2.h @@ -6,23 +6,66 @@ //void promicro_bootloader_jmp(bool program); #include "quantum.h" + +#ifdef USE_I2C +#include +#ifdef __AVR__ +#include +#include +#endif +#ifdef SSD1306OLED +extern bool iota_gfx_init(void); +extern void iota_gfx_task(void); +extern bool iota_gfx_off(void); +extern bool iota_gfx_on(void); +extern void iota_gfx_flush(void); +extern void iota_gfx_write_char(uint8_t c); +extern void iota_gfx_write(const char *data); +extern void iota_gfx_write_P(const char *data); +extern void iota_gfx_clear_screen(void); +#endif +#endif + //void promicro_bootloader_jmp(bool program); +#ifndef FLIP_HALF +//Standard Keymap #define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ - k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ - k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ - k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ + k40, k41, k42, k43, k44, k45, k05, k04, k03, k02, k01, k00, \ + k50, k51, k52, k53, k54, k55, k15, k14, k13, k12, k11, k10, \ + k60, k61, k62, k63, k64, k65, k25, k24, k23, k22, k21, k20, \ + k70, k71, k72, k73, k74, k75, k35, k34, k33, k32, k31, k30 \ + ) \ + { \ + { k45, k44, k43, k42, k41, k40 }, \ + { k55, k54, k53, k52, k51, k50 }, \ + { k65, k64, k63, k62, k61, k60 }, \ + { k75, k74, k73, k72, k71, k70 }, \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 } \ + } + +#else +// Keymap with one side flipped +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ + k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ + k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ + k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ ) \ { \ { k00, k01, k02, k03, k04, k05 }, \ { k10, k11, k12, k13, k14, k15 }, \ { k20, k21, k22, k23, k24, k25 }, \ { k30, k31, k32, k33, k34, k35 }, \ - { k40, k41, k42, k43, k44, k45 }, \ - { k50, k51, k52, k53, k54, k55 }, \ - { k60, k61, k62, k63, k64, k65 }, \ - { k70, k71, k72, k73, k74, k75 } \ + { k45, k44, k43, k42, k41, k40 }, \ + { k55, k54, k53, k52, k51, k50 }, \ + { k65, k64, k63, k62, k61, k60 }, \ + { k75, k74, k73, k72, k71, k70 } \ } +#endif + #endif \ No newline at end of file From 65317a3a020c0b0261849fb4c40d3aae175ac337 Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:04:11 -0400 Subject: [PATCH 126/183] Added OLED SSD1306 support to I2C --- keyboards/lets_split/common/glcdfont.c | 276 ++++++++++++++ keyboards/lets_split/i2c.c | 94 ++++- keyboards/lets_split/i2c.h | 20 +- keyboards/lets_split/matrix.c | 7 +- keyboards/lets_split/rules.mk | 15 +- keyboards/lets_split/split_util.c | 7 +- keyboards/lets_split/split_util.h | 2 + keyboards/lets_split/ssd1306.c | 508 +++++++++++++++++++++++++ 8 files changed, 908 insertions(+), 21 deletions(-) create mode 100644 keyboards/lets_split/common/glcdfont.c create mode 100644 keyboards/lets_split/ssd1306.c diff --git a/keyboards/lets_split/common/glcdfont.c b/keyboards/lets_split/common/glcdfont.c new file mode 100644 index 00000000..6f88bd23 --- /dev/null +++ b/keyboards/lets_split/common/glcdfont.c @@ -0,0 +1,276 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#ifndef FONT5X7_H +#define FONT5X7_H + +#ifdef __AVR__ + #include + #include +#elif defined(ESP8266) + #include +#else + #define PROGMEM +#endif + +// Standard ASCII 5x7 font + +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, + 0x00, 0x18, 0x3C, 0x18, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, + 0x00, 0x18, 0x24, 0x18, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, + 0x30, 0x48, 0x3A, 0x06, 0x0E, + 0x26, 0x29, 0x79, 0x29, 0x26, + 0x40, 0x7F, 0x05, 0x05, 0x07, + 0x40, 0x7F, 0x05, 0x25, 0x3F, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, + 0x14, 0x22, 0x7F, 0x22, 0x14, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, + 0x06, 0x09, 0x7F, 0x01, 0x7F, + 0x00, 0x66, 0x89, 0x95, 0x6A, + 0x60, 0x60, 0x60, 0x60, 0x60, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, + 0x08, 0x04, 0x7E, 0x04, 0x08, + 0x10, 0x20, 0x7E, 0x20, 0x10, + 0x08, 0x08, 0x2A, 0x1C, 0x08, + 0x08, 0x1C, 0x2A, 0x08, 0x08, + 0x1E, 0x10, 0x10, 0x10, 0x10, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, + 0x30, 0x38, 0x3E, 0x38, 0x30, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, + 0x14, 0x7F, 0x14, 0x7F, 0x14, + 0x24, 0x2A, 0x7F, 0x2A, 0x12, + 0x23, 0x13, 0x08, 0x64, 0x62, + 0x36, 0x49, 0x56, 0x20, 0x50, + 0x00, 0x08, 0x07, 0x03, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, + 0x08, 0x08, 0x3E, 0x08, 0x08, + 0x00, 0x80, 0x70, 0x30, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x00, 0x60, 0x60, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, + 0x3E, 0x51, 0x49, 0x45, 0x3E, + 0x00, 0x42, 0x7F, 0x40, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, + 0x21, 0x41, 0x49, 0x4D, 0x33, + 0x18, 0x14, 0x12, 0x7F, 0x10, + 0x27, 0x45, 0x45, 0x45, 0x39, + 0x3C, 0x4A, 0x49, 0x49, 0x31, + 0x41, 0x21, 0x11, 0x09, 0x07, + 0x36, 0x49, 0x49, 0x49, 0x36, + 0x46, 0x49, 0x49, 0x29, 0x1E, + 0x00, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x00, 0x41, 0x22, 0x14, 0x08, + 0x02, 0x01, 0x59, 0x09, 0x06, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, + 0x7C, 0x12, 0x11, 0x12, 0x7C, + 0x7F, 0x49, 0x49, 0x49, 0x36, + 0x3E, 0x41, 0x41, 0x41, 0x22, + 0x7F, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x49, 0x49, 0x49, 0x41, + 0x7F, 0x09, 0x09, 0x09, 0x01, + 0x3E, 0x41, 0x41, 0x51, 0x73, + 0x7F, 0x08, 0x08, 0x08, 0x7F, + 0x00, 0x41, 0x7F, 0x41, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, + 0x7F, 0x08, 0x14, 0x22, 0x41, + 0x7F, 0x40, 0x40, 0x40, 0x40, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, + 0x7F, 0x04, 0x08, 0x10, 0x7F, + 0x3E, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x09, 0x09, 0x09, 0x06, + 0x3E, 0x41, 0x51, 0x21, 0x5E, + 0x7F, 0x09, 0x19, 0x29, 0x46, + 0x26, 0x49, 0x49, 0x49, 0x32, + 0x03, 0x01, 0x7F, 0x01, 0x03, + 0x3F, 0x40, 0x40, 0x40, 0x3F, + 0x1F, 0x20, 0x40, 0x20, 0x1F, + 0x3F, 0x40, 0x38, 0x40, 0x3F, + 0x63, 0x14, 0x08, 0x14, 0x63, + 0x03, 0x04, 0x78, 0x04, 0x03, + 0x61, 0x59, 0x49, 0x4D, 0x43, + 0x00, 0x7F, 0x41, 0x41, 0x41, + 0x02, 0x04, 0x08, 0x10, 0x20, + 0x00, 0x41, 0x41, 0x41, 0x7F, + 0x04, 0x02, 0x01, 0x02, 0x04, + 0x40, 0x40, 0x40, 0x40, 0x40, + 0x00, 0x03, 0x07, 0x08, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, + 0x7F, 0x28, 0x44, 0x44, 0x38, + 0x38, 0x44, 0x44, 0x44, 0x28, + 0x38, 0x44, 0x44, 0x28, 0x7F, + 0x38, 0x54, 0x54, 0x54, 0x18, + 0x00, 0x08, 0x7E, 0x09, 0x02, + 0x18, 0xA4, 0xA4, 0x9C, 0x78, + 0x7F, 0x08, 0x04, 0x04, 0x78, + 0x00, 0x44, 0x7D, 0x40, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, + 0x7C, 0x08, 0x04, 0x04, 0x78, + 0x38, 0x44, 0x44, 0x44, 0x38, + 0xFC, 0x18, 0x24, 0x24, 0x18, + 0x18, 0x24, 0x24, 0x18, 0xFC, + 0x7C, 0x08, 0x04, 0x04, 0x08, + 0x48, 0x54, 0x54, 0x54, 0x24, + 0x04, 0x04, 0x3F, 0x44, 0x24, + 0x3C, 0x40, 0x40, 0x20, 0x7C, + 0x1C, 0x20, 0x40, 0x20, 0x1C, + 0x3C, 0x40, 0x30, 0x40, 0x3C, + 0x44, 0x28, 0x10, 0x28, 0x44, + 0x4C, 0x90, 0x90, 0x90, 0x7C, + 0x44, 0x64, 0x54, 0x4C, 0x44, + 0x00, 0x08, 0x36, 0x41, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, + 0x3C, 0x26, 0x23, 0x26, 0x3C, + 0x1E, 0xA1, 0xA1, 0x61, 0x12, + 0x3A, 0x40, 0x40, 0x20, 0x7A, + 0x38, 0x54, 0x54, 0x55, 0x59, + 0x21, 0x55, 0x55, 0x79, 0x41, + 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut + 0x21, 0x55, 0x54, 0x78, 0x40, + 0x20, 0x54, 0x55, 0x79, 0x40, + 0x0C, 0x1E, 0x52, 0x72, 0x12, + 0x39, 0x55, 0x55, 0x55, 0x59, + 0x39, 0x54, 0x54, 0x54, 0x59, + 0x39, 0x55, 0x54, 0x54, 0x58, + 0x00, 0x00, 0x45, 0x7C, 0x41, + 0x00, 0x02, 0x45, 0x7D, 0x42, + 0x00, 0x01, 0x45, 0x7C, 0x40, + 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut + 0xF0, 0x28, 0x25, 0x28, 0xF0, + 0x7C, 0x54, 0x55, 0x45, 0x00, + 0x20, 0x54, 0x54, 0x7C, 0x54, + 0x7C, 0x0A, 0x09, 0x7F, 0x49, + 0x32, 0x49, 0x49, 0x49, 0x32, + 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut + 0x32, 0x4A, 0x48, 0x48, 0x30, + 0x3A, 0x41, 0x41, 0x21, 0x7A, + 0x3A, 0x42, 0x40, 0x20, 0x78, + 0x00, 0x9D, 0xA0, 0xA0, 0x7D, + 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut + 0x3D, 0x40, 0x40, 0x40, 0x3D, + 0x3C, 0x24, 0xFF, 0x24, 0x24, + 0x48, 0x7E, 0x49, 0x43, 0x66, + 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, + 0xFF, 0x09, 0x29, 0xF6, 0x20, + 0xC0, 0x88, 0x7E, 0x09, 0x03, + 0x20, 0x54, 0x54, 0x79, 0x41, + 0x00, 0x00, 0x44, 0x7D, 0x41, + 0x30, 0x48, 0x48, 0x4A, 0x32, + 0x38, 0x40, 0x40, 0x22, 0x7A, + 0x00, 0x7A, 0x0A, 0x0A, 0x72, + 0x7D, 0x0D, 0x19, 0x31, 0x7D, + 0x26, 0x29, 0x29, 0x2F, 0x28, + 0x26, 0x29, 0x29, 0x29, 0x26, + 0x30, 0x48, 0x4D, 0x40, 0x20, + 0x38, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x38, + 0x2F, 0x10, 0xC8, 0xAC, 0xBA, + 0x2F, 0x10, 0x28, 0x34, 0xFA, + 0x00, 0x00, 0x7B, 0x00, 0x00, + 0x08, 0x14, 0x2A, 0x14, 0x22, + 0x22, 0x14, 0x2A, 0x14, 0x08, + 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code + 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block + 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block + 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x10, 0x10, 0x10, 0xFF, 0x00, + 0x14, 0x14, 0x14, 0xFF, 0x00, + 0x10, 0x10, 0xFF, 0x00, 0xFF, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x14, 0x14, 0x14, 0xFC, 0x00, + 0x14, 0x14, 0xF7, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x14, 0x14, 0xF4, 0x04, 0xFC, + 0x14, 0x14, 0x17, 0x10, 0x1F, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0x1F, 0x00, + 0x10, 0x10, 0x10, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0xF0, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0xFF, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x14, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0x10, 0x17, + 0x00, 0x00, 0xFC, 0x04, 0xF4, + 0x14, 0x14, 0x17, 0x10, 0x17, + 0x14, 0x14, 0xF4, 0x04, 0xF4, + 0x00, 0x00, 0xFF, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0xF7, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x17, 0x14, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0xF4, 0x14, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x00, 0x00, 0x1F, 0x10, 0x1F, + 0x00, 0x00, 0x00, 0x1F, 0x14, + 0x00, 0x00, 0x00, 0xFC, 0x14, + 0x00, 0x00, 0xF0, 0x10, 0xF0, + 0x10, 0x10, 0xFF, 0x10, 0xFF, + 0x14, 0x14, 0x14, 0xFF, 0x14, + 0x10, 0x10, 0x10, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x38, 0x44, 0x44, 0x38, 0x44, + 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta + 0x7E, 0x02, 0x02, 0x06, 0x06, + 0x02, 0x7E, 0x02, 0x7E, 0x02, + 0x63, 0x55, 0x49, 0x41, 0x63, + 0x38, 0x44, 0x44, 0x3C, 0x04, + 0x40, 0x7E, 0x20, 0x1E, 0x20, + 0x06, 0x02, 0x7E, 0x02, 0x02, + 0x99, 0xA5, 0xE7, 0xA5, 0x99, + 0x1C, 0x2A, 0x49, 0x2A, 0x1C, + 0x4C, 0x72, 0x01, 0x72, 0x4C, + 0x30, 0x4A, 0x4D, 0x4D, 0x30, + 0x30, 0x48, 0x78, 0x48, 0x30, + 0xBC, 0x62, 0x5A, 0x46, 0x3D, + 0x3E, 0x49, 0x49, 0x49, 0x00, + 0x7E, 0x01, 0x01, 0x01, 0x7E, + 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, + 0x44, 0x44, 0x5F, 0x44, 0x44, + 0x40, 0x51, 0x4A, 0x44, 0x40, + 0x40, 0x44, 0x4A, 0x51, 0x40, + 0x00, 0x00, 0xFF, 0x01, 0x03, + 0xE0, 0x80, 0xFF, 0x00, 0x00, + 0x08, 0x08, 0x6B, 0x6B, 0x08, + 0x36, 0x12, 0x36, 0x24, 0x36, + 0x06, 0x0F, 0x09, 0x0F, 0x06, + 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x00, + 0x30, 0x40, 0xFF, 0x01, 0x01, + 0x00, 0x1F, 0x01, 0x01, 0x1E, + 0x00, 0x19, 0x1D, 0x17, 0x12, + 0x00, 0x3C, 0x3C, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP +}; +#endif // FONT5X7_H diff --git a/keyboards/lets_split/i2c.c b/keyboards/lets_split/i2c.c index 084c890c..038f37a4 100644 --- a/keyboards/lets_split/i2c.c +++ b/keyboards/lets_split/i2c.c @@ -48,7 +48,7 @@ void i2c_master_init(void) { // returns: 0 => success // 1 => error uint8_t i2c_master_start(uint8_t address) { - TWCR = (1< ERROR_DISCONNECT_COUNT) { @@ -226,9 +227,7 @@ uint8_t matrix_scan(void) TXLED0; error_count = 0; } - matrix_scan_quantum(); - return ret; } diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk index 0efa7855..ff159e0f 100644 --- a/keyboards/lets_split/rules.mk +++ b/keyboards/lets_split/rules.mk @@ -1,7 +1,8 @@ SRC += matrix.c \ i2c.c \ split_util.c \ - serial.c + serial.c\ + ssd1306.c # MCU name #MCU = at90usb1287 @@ -73,15 +74,3 @@ USE_I2C ?= yes SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = yes - -avrdude: build - ls /dev/tty* > /tmp/1; \ - echo "Reset your Pro Micro now"; \ - while [[ -z $$USB ]]; do \ - sleep 1; \ - ls /dev/tty* > /tmp/2; \ - USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ - done; \ - avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex - -.PHONY: avrdude diff --git a/keyboards/lets_split/split_util.c b/keyboards/lets_split/split_util.c index 226dc188..b87bae38 100644 --- a/keyboards/lets_split/split_util.c +++ b/keyboards/lets_split/split_util.c @@ -21,8 +21,8 @@ static void setup_handedness(void) { #ifdef EE_HANDS isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); #else - // I2C_MASTER_RIGHT is deprecated use MASTER_RIGHT instead since this works for both serial and i2c - #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT) + // I2c_MASTER_RIGHT ish deprecate use MASTER_RIGHT instead since this works for both serial and i2c: + #if defined (I2C_MASTER_RIGHT) || defined (MASTER_RIGHT) isLeftHand = !has_usb(); #else isLeftHand = has_usb(); @@ -33,6 +33,9 @@ static void setup_handedness(void) { static void keyboard_master_setup(void) { #ifdef USE_I2C i2c_master_init(); +#ifdef SSD1306OLED + matrix_master_OLED_init (); +#endif #else serial_master_init(); #endif diff --git a/keyboards/lets_split/split_util.h b/keyboards/lets_split/split_util.h index 6b896679..3ae76c20 100644 --- a/keyboards/lets_split/split_util.h +++ b/keyboards/lets_split/split_util.h @@ -19,4 +19,6 @@ void split_keyboard_setup(void); bool has_usb(void); void keyboard_slave_loop(void); +void matrix_master_OLED_init (void); + #endif diff --git a/keyboards/lets_split/ssd1306.c b/keyboards/lets_split/ssd1306.c new file mode 100644 index 00000000..c25a355b --- /dev/null +++ b/keyboards/lets_split/ssd1306.c @@ -0,0 +1,508 @@ +#include "config.h" +#include "i2c.h" +#include +#include +#include +#include "print.h" +#include "lets_split.h" +#include "common/glcdfont.c" +#ifdef ADAFRUIT_BLE_ENABLE +#include "adafruit_ble.h" +#endif +#ifdef PROTOCOL_LUFA +#include "lufa.h" +#endif +#include "sendchar.h" +#include "pincontrol.h" + +//assign the right code to your layers +#define _BASE 0 +#define _LOWER 8 +#define _RAISE 16 +#define _FNLAYER 64 +#define _NUMLAY 128 +#define _NLOWER 136 +#define _NFNLAYER 192 +#define _MOUSECURSOR 256 +#define _ADJUST 65560 + +// Set this to 1 to help diagnose early startup problems +// when testing power-on with ble. Turn it off otherwise, +// as the latency of printing most of the debug info messes +// with the matrix scan, causing keys to drop. +#define DEBUG_TO_SCREEN 0 + +// Controls the SSD1306 128x32 OLED display via i2c + +#define i2cAddress 0x3C + +#define DisplayHeight 32 +#define DisplayWidth 128 + +#define FontHeight 8 +#define FontWidth 6 + +#define MatrixRows (DisplayHeight / FontHeight) +#define MatrixCols (DisplayWidth / FontWidth) + +struct CharacterMatrix { + uint8_t display[MatrixRows][MatrixCols]; + uint8_t *cursor; + bool dirty; +}; + +static struct CharacterMatrix display; +//static uint16_t last_battery_update; +//static uint32_t vbat; +//#define BatteryUpdateInterval 10000 /* milliseconds */ +#define ScreenOffInterval 300000 /* milliseconds */ +#if DEBUG_TO_SCREEN +static uint8_t displaying; +#endif +static uint16_t last_flush; + +enum ssd1306_cmds { + DisplayOff = 0xAE, + DisplayOn = 0xAF, + + SetContrast = 0x81, + DisplayAllOnResume = 0xA4, + + DisplayAllOn = 0xA5, + NormalDisplay = 0xA6, + InvertDisplay = 0xA7, + SetDisplayOffset = 0xD3, + SetComPins = 0xda, + SetVComDetect = 0xdb, + SetDisplayClockDiv = 0xD5, + SetPreCharge = 0xd9, + SetMultiPlex = 0xa8, + SetLowColumn = 0x00, + SetHighColumn = 0x10, + SetStartLine = 0x40, + + SetMemoryMode = 0x20, + ColumnAddr = 0x21, + PageAddr = 0x22, + + ComScanInc = 0xc0, + ComScanDec = 0xc8, + SegRemap = 0xa0, + SetChargePump = 0x8d, + ExternalVcc = 0x01, + SwitchCapVcc = 0x02, + + ActivateScroll = 0x2f, + DeActivateScroll = 0x2e, + SetVerticalScrollArea = 0xa3, + RightHorizontalScroll = 0x26, + LeftHorizontalScroll = 0x27, + VerticalAndRightHorizontalScroll = 0x29, + VerticalAndLeftHorizontalScroll = 0x2a, +}; + + +// Write command sequence. +// Returns true on success. +static inline bool _send_cmd1(uint8_t cmd) { + bool res = false; + + if (i2c_start_write(i2cAddress)) { + xprintf("failed to start write to %d\n", i2cAddress); + goto done; + } + + if (i2c_master_write(0x0 /* command byte follows */)) { + print("failed to write control byte\n"); + + goto done; + } + + if (i2c_master_write(cmd)) { + xprintf("failed to write command %d\n", cmd); + goto done; + } + res = true; +done: + i2c_master_stop(); + return res; +} + +// Write 2-byte command sequence. +// Returns true on success +static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) { + if (!_send_cmd1(cmd)) { + return false; + } + return _send_cmd1(opr); +} + +// Write 3-byte command sequence. +// Returns true on success +static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) { + if (!_send_cmd1(cmd)) { + return false; + } + if (!_send_cmd1(opr1)) { + return false; + } + return _send_cmd1(opr2); +} + +#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;} +#define send_cmd2(c,o) if (!_send_cmd2(c,o)) {goto done;} +#define send_cmd3(c,o1,o2) if (!_send_cmd3(c,o1,o2)) {goto done;} + +static void matrix_clear(struct CharacterMatrix *matrix); + +static void clear_display(void) { + matrix_clear(&display); + + // Clear all of the display bits (there can be random noise + // in the RAM on startup) + send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1); + send_cmd3(ColumnAddr, 0, DisplayWidth - 1); + + if (i2c_start_write(i2cAddress)) { + goto done; + } + if (i2c_master_write(0x40)) { + // Data mode + goto done; + } + for (uint8_t row = 0; row < MatrixRows; ++row) { + for (uint8_t col = 0; col < DisplayWidth; ++col) { + i2c_master_write(0); + } + } + + display.dirty = false; + +done: + i2c_master_stop(); +} + +#if DEBUG_TO_SCREEN +#undef sendchar +static int8_t capture_sendchar(uint8_t c) { + sendchar(c); + iota_gfx_write_char(c); + + if (!displaying) { + iota_gfx_flush(); + } + return 0; +} +#endif + +bool iota_gfx_init(void) { + bool success = false; + + send_cmd1(DisplayOff); + send_cmd2(SetDisplayClockDiv, 0x80); + send_cmd2(SetMultiPlex, DisplayHeight - 1); + + send_cmd2(SetDisplayOffset, 0); + + + send_cmd1(SetStartLine | 0x0); + send_cmd2(SetChargePump, 0x14 /* Enable */); + send_cmd2(SetMemoryMode, 0 /* horizontal addressing */); + +/* Flips the display orientation 0 degrees + send_cmd1(SegRemap | 0x1); + send_cmd1(ComScanDec); +*/ +// the following Flip the display orientation 180 degrees */ + send_cmd1(SegRemap); + send_cmd1(ComScanInc); +//end flip + send_cmd2(SetComPins, 0x2); + send_cmd2(SetContrast, 0x8f); + send_cmd2(SetPreCharge, 0xf1); + send_cmd2(SetVComDetect, 0x40); + send_cmd1(DisplayAllOnResume); + send_cmd1(NormalDisplay); + send_cmd1(DeActivateScroll); + send_cmd1(DisplayOn); + + send_cmd2(SetContrast, 0); // Dim + + clear_display(); + + success = true; + + iota_gfx_flush(); + +#if DEBUG_TO_SCREEN + print_set_sendchar(capture_sendchar); +#endif + +done: + return success; +} + +bool iota_gfx_off(void) { + bool success = false; + + send_cmd1(DisplayOff); + success = true; + +done: + return success; +} + +bool iota_gfx_on(void) { + bool success = false; + + send_cmd1(DisplayOn); + success = true; + +done: + return success; +} + +static void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) { + *matrix->cursor = c; + ++matrix->cursor; + + if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) { + // We went off the end; scroll the display upwards by one line + memmove(&matrix->display[0], &matrix->display[1], + MatrixCols * (MatrixRows - 1)); + matrix->cursor = &matrix->display[MatrixRows - 1][0]; + memset(matrix->cursor, ' ', MatrixCols); + } +} + +static void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) { + matrix->dirty = true; + + if (c == '\n') { + // Clear to end of line from the cursor and then move to the + // start of the next line + uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols; + + while (cursor_col++ < MatrixCols) { + matrix_write_char_inner(matrix, ' '); + } + return; + } + + matrix_write_char_inner(matrix, c); +} + +void iota_gfx_write_char(uint8_t c) { + matrix_write_char(&display, c); +} + +static void matrix_write(struct CharacterMatrix *matrix, const char *data) { + const char *end = data + strlen(data); + while (data < end) { + matrix_write_char(matrix, *data); + ++data; + } +} + +void iota_gfx_write(const char *data) { + matrix_write(&display, data); +} + +static void matrix_write_P(struct CharacterMatrix *matrix, const char *data) { + while (true) { + uint8_t c = pgm_read_byte(data); + if (c == 0) { + return; + } + matrix_write_char(matrix, c); + ++data; + } +} + +void iota_gfx_write_P(const char *data) { + matrix_write_P(&display, data); +} + +static void matrix_clear(struct CharacterMatrix *matrix) { + memset(matrix->display, ' ', sizeof(matrix->display)); + matrix->cursor = &matrix->display[0][0]; + matrix->dirty = true; +} + +void iota_gfx_clear_screen(void) { + matrix_clear(&display); +} + +static void matrix_render(struct CharacterMatrix *matrix) { + last_flush = timer_read(); + iota_gfx_on(); +#if DEBUG_TO_SCREEN + ++displaying; +#endif + + // Move to the home position + send_cmd3(PageAddr, 0, MatrixRows - 1); + send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1); + + if (i2c_start_write(i2cAddress)) { + goto done; + } + if (i2c_master_write(0x40)) { + // Data mode + goto done; + } + + for (uint8_t row = 0; row < MatrixRows; ++row) { + for (uint8_t col = 0; col < MatrixCols; ++col) { + const uint8_t *glyph = font + (matrix->display[row][col] * (FontWidth - 1)); + + for (uint8_t glyphCol = 0; glyphCol < FontWidth - 1; ++glyphCol) { + uint8_t colBits = pgm_read_byte(glyph + glyphCol); + i2c_master_write(colBits); + } + + // 1 column of space between chars (it's not included in the glyph) + i2c_master_write(0); + } + } + + matrix->dirty = false; + +done: + i2c_master_stop(); +#if DEBUG_TO_SCREEN + --displaying; +#endif +} + +void iota_gfx_flush(void) { + matrix_render(&display); +} + +//#include "LUFA/Drivers/Peripheral/ADC.h" + +/* Returns the battery voltage; returns the number of millivolts +static uint32_t read_battery_voltage(void) { + if (last_battery_update == 0 || + timer_elapsed(last_battery_update) > BatteryUpdateInterval) { + ADC_Init(ADC_SINGLE_CONVERSION | ADC_PRESCALE_32); + ADC_SetupChannel(12); + vbat = 2 * 3.3 * ADC_GetChannelReading(ADC_REFERENCE_AVCC | ADC_CHANNEL12); + + last_battery_update = timer_read(); + } + return vbat; +} */ + +static void matrix_update(struct CharacterMatrix *dest, + const struct CharacterMatrix *source) { + if (memcmp(dest->display, source->display, sizeof(dest->display))) { + memcpy(dest->display, source->display, sizeof(dest->display)); + dest->dirty = true; + } +} + +static void render_status_info(void) { +#if DEBUG_TO_SCREEN + if (debug_enable) { + return; + } +#endif + + struct CharacterMatrix matrix; + + matrix_clear(&matrix); + matrix_write_P(&matrix, PSTR("USB: ")); +#ifdef PROTOCOL_LUFA + switch (USB_DeviceState) { + case DEVICE_STATE_Unattached: + matrix_write_P(&matrix, PSTR("Unattached")); + break; + case DEVICE_STATE_Suspended: + matrix_write_P(&matrix, PSTR("Suspended")); + break; + case DEVICE_STATE_Configured: + matrix_write_P(&matrix, PSTR("Connected")); + break; + case DEVICE_STATE_Powered: + matrix_write_P(&matrix, PSTR("Powered")); + break; + case DEVICE_STATE_Default: + matrix_write_P(&matrix, PSTR("Default")); + break; + case DEVICE_STATE_Addressed: + matrix_write_P(&matrix, PSTR("Addressed")); + break; + default: + matrix_write_P(&matrix, PSTR("Invalid")); + } +#endif + + // matrix_write_P(&matrix, (host_keyboard_leds() & (1< ScreenOffInterval) { + iota_gfx_off(); + } +} From 30f450749201b9584bc863cb08724d8f61f0463a Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:11:03 -0400 Subject: [PATCH 127/183] OLED code cleanup --- keyboards/lets_split/ssd1306.c | 52 ++++------------------------------ 1 file changed, 6 insertions(+), 46 deletions(-) diff --git a/keyboards/lets_split/ssd1306.c b/keyboards/lets_split/ssd1306.c index c25a355b..a68165f8 100644 --- a/keyboards/lets_split/ssd1306.c +++ b/keyboards/lets_split/ssd1306.c @@ -209,14 +209,14 @@ bool iota_gfx_init(void) { send_cmd2(SetChargePump, 0x14 /* Enable */); send_cmd2(SetMemoryMode, 0 /* horizontal addressing */); -/* Flips the display orientation 0 degrees +/// Flips the display orientation 0 degrees send_cmd1(SegRemap | 0x1); send_cmd1(ComScanDec); -*/ -// the following Flip the display orientation 180 degrees */ +/* +// the following Flip the display orientation 180 degrees send_cmd1(SegRemap); send_cmd1(ComScanInc); -//end flip +*/end flip send_cmd2(SetComPins, 0x2); send_cmd2(SetContrast, 0x8f); send_cmd2(SetPreCharge, 0xf1); @@ -379,21 +379,6 @@ void iota_gfx_flush(void) { matrix_render(&display); } -//#include "LUFA/Drivers/Peripheral/ADC.h" - -/* Returns the battery voltage; returns the number of millivolts -static uint32_t read_battery_voltage(void) { - if (last_battery_update == 0 || - timer_elapsed(last_battery_update) > BatteryUpdateInterval) { - ADC_Init(ADC_SINGLE_CONVERSION | ADC_PRESCALE_32); - ADC_SetupChannel(12); - vbat = 2 * 3.3 * ADC_GetChannelReading(ADC_REFERENCE_AVCC | ADC_CHANNEL12); - - last_battery_update = timer_read(); - } - return vbat; -} */ - static void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { if (memcmp(dest->display, source->display, sizeof(dest->display))) { @@ -438,18 +423,7 @@ static void render_status_info(void) { } #endif - // matrix_write_P(&matrix, (host_keyboard_leds() & (1< Date: Wed, 22 Mar 2017 15:14:33 -0400 Subject: [PATCH 128/183] Add files via upload --- .../lets_split/keymaps/OLED_sample/readme.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 keyboards/lets_split/keymaps/OLED_sample/readme.md diff --git a/keyboards/lets_split/keymaps/OLED_sample/readme.md b/keyboards/lets_split/keymaps/OLED_sample/readme.md new file mode 100644 index 00000000..839fd428 --- /dev/null +++ b/keyboards/lets_split/keymaps/OLED_sample/readme.md @@ -0,0 +1,32 @@ +SSD1306 OLED Display via I2C +====== + +Features +-------- + +Some features supported by the firmware: + + +* I2C connection between the two halves is required as the OLED display will use this connection as well. Note this + requires pull-up resistors on the data and clock lines. +* OLED display will connect from either side + + +Wiring +------ + +The wiring for i2c: + +![i2c wiring](imgs/split-keyboard-i2c-schematic.png) + +The pull-up resistors may be placed on either half. It is also possible +to use 4 resistors and have the pull-ups in both halves, but this is +unnecessary in simple use cases. + +Work in progress... + + +OLED Configuration +------------------------------- + +Work in progress... \ No newline at end of file From d1865db599a92695baa1434803a41204cd5e5ca6 Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:19:01 -0400 Subject: [PATCH 129/183] OLED code cleanup --- keyboards/lets_split/ssd1306.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/lets_split/ssd1306.c b/keyboards/lets_split/ssd1306.c index a68165f8..3c7816bb 100644 --- a/keyboards/lets_split/ssd1306.c +++ b/keyboards/lets_split/ssd1306.c @@ -216,7 +216,7 @@ bool iota_gfx_init(void) { // the following Flip the display orientation 180 degrees send_cmd1(SegRemap); send_cmd1(ComScanInc); -*/end flip +// end flip */ send_cmd2(SetComPins, 0x2); send_cmd2(SetContrast, 0x8f); send_cmd2(SetPreCharge, 0xf1); From 1f7b8a034362f1461d89abee91038df885be4ca2 Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:45:15 -0400 Subject: [PATCH 130/183] Update matrix.c --- keyboards/lets_split/matrix.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/keyboards/lets_split/matrix.c b/keyboards/lets_split/matrix.c index b6e59cb7..1b650199 100644 --- a/keyboards/lets_split/matrix.c +++ b/keyboards/lets_split/matrix.c @@ -210,8 +210,7 @@ uint8_t matrix_scan(void) if( serial_transaction() ) { #endif // turn on the indicator led when halves are disconnected -// TXLED1; - TXLED0; + TXLED1; error_count++; From ebb46694e500e08ea1d39349d957182270e835f6 Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:45:45 -0400 Subject: [PATCH 131/183] Update split_util.c --- keyboards/lets_split/split_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/lets_split/split_util.c b/keyboards/lets_split/split_util.c index b87bae38..46586fbc 100644 --- a/keyboards/lets_split/split_util.c +++ b/keyboards/lets_split/split_util.c @@ -22,7 +22,7 @@ static void setup_handedness(void) { isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); #else // I2c_MASTER_RIGHT ish deprecate use MASTER_RIGHT instead since this works for both serial and i2c: - #if defined (I2C_MASTER_RIGHT) || defined (MASTER_RIGHT) + #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT) isLeftHand = !has_usb(); #else isLeftHand = has_usb(); From 732a7f2be9b197ed22d20bea3d4dcd8013c8e077 Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:47:53 -0400 Subject: [PATCH 132/183] Update matrix.c --- keyboards/lets_split/matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/lets_split/matrix.c b/keyboards/lets_split/matrix.c index 1b650199..81dfb144 100644 --- a/keyboards/lets_split/matrix.c +++ b/keyboards/lets_split/matrix.c @@ -211,7 +211,7 @@ uint8_t matrix_scan(void) #endif // turn on the indicator led when halves are disconnected TXLED1; - + error_count++; if (error_count > ERROR_DISCONNECT_COUNT) { From be0cfbb97e5577e331e327b4e729b1b4c4ccb54c Mon Sep 17 00:00:00 2001 From: ishtob Date: Wed, 22 Mar 2017 15:48:56 -0400 Subject: [PATCH 133/183] Update i2c.c --- keyboards/lets_split/i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/lets_split/i2c.c b/keyboards/lets_split/i2c.c index 038f37a4..f1a34916 100644 --- a/keyboards/lets_split/i2c.c +++ b/keyboards/lets_split/i2c.c @@ -48,7 +48,7 @@ void i2c_master_init(void) { // returns: 0 => success // 1 => error uint8_t i2c_master_start(uint8_t address) { - TWCR = (1< Date: Wed, 22 Mar 2017 15:49:21 -0400 Subject: [PATCH 134/183] Update i2c.c --- keyboards/lets_split/i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/lets_split/i2c.c b/keyboards/lets_split/i2c.c index f1a34916..755038f5 100644 --- a/keyboards/lets_split/i2c.c +++ b/keyboards/lets_split/i2c.c @@ -48,7 +48,7 @@ void i2c_master_init(void) { // returns: 0 => success // 1 => error uint8_t i2c_master_start(uint8_t address) { - TWCR = (1< Date: Wed, 22 Mar 2017 15:50:18 -0400 Subject: [PATCH 135/183] Update i2c.c --- keyboards/lets_split/i2c.c | 90 -------------------------------------- 1 file changed, 90 deletions(-) diff --git a/keyboards/lets_split/i2c.c b/keyboards/lets_split/i2c.c index 755038f5..fbf2f3b7 100644 --- a/keyboards/lets_split/i2c.c +++ b/keyboards/lets_split/i2c.c @@ -161,94 +161,4 @@ ISR(TWI_vect) { TWCR |= (1< Date: Wed, 22 Mar 2017 15:50:52 -0400 Subject: [PATCH 136/183] Update i2c.c --- keyboards/lets_split/i2c.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/lets_split/i2c.c b/keyboards/lets_split/i2c.c index fbf2f3b7..084c890c 100644 --- a/keyboards/lets_split/i2c.c +++ b/keyboards/lets_split/i2c.c @@ -56,7 +56,6 @@ uint8_t i2c_master_start(uint8_t address) { if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START)) return 1; - // send device address TWDR = address; TWCR = (1< Date: Wed, 22 Mar 2017 15:56:45 -0400 Subject: [PATCH 137/183] Update readme.md --- keyboards/lets_split/keymaps/OLED_sample/readme.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/keyboards/lets_split/keymaps/OLED_sample/readme.md b/keyboards/lets_split/keymaps/OLED_sample/readme.md index 839fd428..02888855 100644 --- a/keyboards/lets_split/keymaps/OLED_sample/readme.md +++ b/keyboards/lets_split/keymaps/OLED_sample/readme.md @@ -15,13 +15,6 @@ Some features supported by the firmware: Wiring ------ -The wiring for i2c: - -![i2c wiring](imgs/split-keyboard-i2c-schematic.png) - -The pull-up resistors may be placed on either half. It is also possible -to use 4 resistors and have the pull-ups in both halves, but this is -unnecessary in simple use cases. Work in progress... @@ -29,4 +22,4 @@ Work in progress... OLED Configuration ------------------------------- -Work in progress... \ No newline at end of file +Work in progress... From 91776772fd5600116e9d02c614813c427a3d4219 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Wed, 15 Mar 2017 16:34:10 -0400 Subject: [PATCH 138/183] Remove line for hands selection via EEPROM, reduce tap duration from 200ms to 150ms --- keyboards/lets_split/keymaps/hexwire/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index 983f8e35..11adbc45 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -18,7 +18,7 @@ along with this program. If not, see . #define USE_SERIAL -#define EE_HANDS +#define TAPPING_TERM 150 #undef RGBLED_NUM #define RGB_DI_PIN B0 From f3e3ff29a346bf917403672f8dbdf08c9f3a83f6 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Wed, 15 Mar 2017 16:34:57 -0400 Subject: [PATCH 139/183] Add Makefile in keymap dir --- keyboards/lets_split/keymaps/hexwire/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/keyboards/lets_split/keymaps/hexwire/Makefile b/keyboards/lets_split/keymaps/hexwire/Makefile index 1e3cebb1..1e576127 100644 --- a/keyboards/lets_split/keymaps/hexwire/Makefile +++ b/keyboards/lets_split/keymaps/hexwire/Makefile @@ -1 +1,5 @@ RGBLIGHT_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif From e5c5902e95840876f1e51c3e8e0a93311676fa27 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 23 Mar 2017 08:46:10 -0400 Subject: [PATCH 140/183] Move keymap into config file --- .../keymaps/hexwire/compact_keymap.h | 23 ------------- keyboards/lets_split/keymaps/hexwire/config.h | 32 +++++++++++++++++++ keyboards/lets_split/keymaps/hexwire/keymap.c | 2 +- 3 files changed, 33 insertions(+), 24 deletions(-) delete mode 100644 keyboards/lets_split/keymaps/hexwire/compact_keymap.h diff --git a/keyboards/lets_split/keymaps/hexwire/compact_keymap.h b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h deleted file mode 100644 index d9d063fb..00000000 --- a/keyboards/lets_split/keymaps/hexwire/compact_keymap.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef COMPACT_KEYMAP_H -#define COMPACT_KEYMAP_H - -#define COMPACT_KEYMAP( \ - k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ - k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ - k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ - k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ - ) \ - { \ - { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \ - { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \ - { 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_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \ - { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \ - { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \ - { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \ - } - -#define KC_ KC_TRNS - -#endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index 11adbc45..38b57266 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -30,9 +30,41 @@ along with this program. If not, see . #ifdef SUBPROJECT_rev1 #include "../../rev1/config.h" + #define COMPACT_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ + k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ + k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ + k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ + ) \ + { \ + { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \ + { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \ + { 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_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \ + { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \ + { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \ + { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \ + } #endif #ifdef SUBPROJECT_rev2 #include "../../rev2/config.h" + #define COMPACT_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ + k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ + ) \ + { \ + { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \ + { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \ + { 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_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \ + { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \ + { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \ + { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \ + } #endif #ifdef SUBPROJECT_rev2fliphalf #include "../../rev2fliphalf/config.h" diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c index 796a1fca..f8370490 100644 --- a/keyboards/lets_split/keymaps/hexwire/keymap.c +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -1,7 +1,6 @@ #include "lets_split.h" #include "action_layer.h" #include "eeconfig.h" -#include "compact_keymap.h" extern keymap_config_t keymap_config; @@ -25,6 +24,7 @@ enum custom_keycodes { ADJUST, }; +#define KC_ KC_TRNS #define _______ KC_TRNS #define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen From edfb50ea5616c9361e479ec41d1d2c3d72f2f51c Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 23 Mar 2017 09:42:32 -0400 Subject: [PATCH 141/183] Initial commit for Atreus50 with working audio --- keyboards/atreus50/Makefile | 3 + keyboards/atreus50/atreus50.c | 10 + keyboards/atreus50/atreus50.h | 36 +++ keyboards/atreus50/config.h | 163 +++++++++++ keyboards/atreus50/keymaps/default/Makefile | 6 + keyboards/atreus50/keymaps/default/keymap.c | 270 +++++++++++++++++++ keyboards/atreus50/keymaps/default/readme.md | 1 + keyboards/atreus50/readme.md | 25 ++ keyboards/atreus50/rules.mk | 81 ++++++ 9 files changed, 595 insertions(+) create mode 100644 keyboards/atreus50/Makefile create mode 100644 keyboards/atreus50/atreus50.c create mode 100644 keyboards/atreus50/atreus50.h create mode 100644 keyboards/atreus50/config.h create mode 100644 keyboards/atreus50/keymaps/default/Makefile create mode 100644 keyboards/atreus50/keymaps/default/keymap.c create mode 100644 keyboards/atreus50/keymaps/default/readme.md create mode 100644 keyboards/atreus50/readme.md create mode 100644 keyboards/atreus50/rules.mk diff --git a/keyboards/atreus50/Makefile b/keyboards/atreus50/Makefile new file mode 100644 index 00000000..57b2ef62 --- /dev/null +++ b/keyboards/atreus50/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif diff --git a/keyboards/atreus50/atreus50.c b/keyboards/atreus50/atreus50.c new file mode 100644 index 00000000..0ec63216 --- /dev/null +++ b/keyboards/atreus50/atreus50.c @@ -0,0 +1,10 @@ +#include "atreus50.h" + +void matrix_init_kb(void) { + + // Turn status LED on + //DDRE |= (1<<6); + PORTE |= (1<<6); + + matrix_init_user(); +}; \ No newline at end of file diff --git a/keyboards/atreus50/atreus50.h b/keyboards/atreus50/atreus50.h new file mode 100644 index 00000000..de06f255 --- /dev/null +++ b/keyboards/atreus50/atreus50.h @@ -0,0 +1,36 @@ +#ifndef ATREUS50_H +#define ATREUS50_H + +#include "quantum.h" + +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, km0, km1, k36, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, km0, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, km1, k36, k37, k38, k39, k3a, k3b } \ +} + +#define COMPACT_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, km0, km1, k36, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_NO, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b }, \ + { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_NO, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b }, \ + { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##km0, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b }, \ + { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##km1, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b } \ +} + +#define KC_ KC_TRNS + +#endif diff --git a/keyboards/atreus50/config.h b/keyboards/atreus50/config.h new file mode 100644 index 00000000..dedcc8ca --- /dev/null +++ b/keyboards/atreus50/config.h @@ -0,0 +1,163 @@ +/* +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 0xBB80 +#define PRODUCT_ID 0x040D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Hexwire +#define PRODUCT Atreus 50 Keyboard +#define DESCRIPTION Atreus layout with extra column + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 13 + +/* Planck PCB default pin-out */ +#define MATRIX_ROW_PINS { D3, D2, D1, D0 } +#define MATRIX_COL_PINS { D4, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS + +/* 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 + + +/* ws2812 RGB LED */ +#define RGB_DI_PIN C6 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 12 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + + +/* + * 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/atreus50/keymaps/default/Makefile b/keyboards/atreus50/keymaps/default/Makefile new file mode 100644 index 00000000..e8556d0d --- /dev/null +++ b/keyboards/atreus50/keymaps/default/Makefile @@ -0,0 +1,6 @@ +RGBLIGHT_ENABLE = no +AUDIO_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/atreus50/keymaps/default/keymap.c new file mode 100644 index 00000000..0a77613c --- /dev/null +++ b/keyboards/atreus50/keymaps/default/keymap.c @@ -0,0 +1,270 @@ +#include "atreus50.h" +#include "action_layer.h" +#include "eeconfig.h" +#ifdef AUDIO_ENABLE + #include "audio.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 _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _MOVEMENT 5 +#define _ADJUST 16 + +enum preonic_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + MOVEMENT, + BACKLIT +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \ + 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_ENT, \ + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, \ + 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_ENT, \ + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINS, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \ + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +[_MOVEMENT] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_MUTE, KC_VOLD, KC_VOLU, KC_PERC, KC_CIRC, KC_AMPR, KC_UP, KC_LPRN, KC_RPRN, KC_DEL, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDOWN, KC_PGUP, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Musoff|Mus on| | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = { + {NOTE_B5, 20}, + {NOTE_B6, 8}, + {NOTE_DS6, 20}, + {NOTE_B6, 8} +}; + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); + +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + 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; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + } + return true; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif \ No newline at end of file diff --git a/keyboards/atreus50/keymaps/default/readme.md b/keyboards/atreus50/keymaps/default/readme.md new file mode 100644 index 00000000..e911968d --- /dev/null +++ b/keyboards/atreus50/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default Preonic layout - largely based on the Planck's \ No newline at end of file diff --git a/keyboards/atreus50/readme.md b/keyboards/atreus50/readme.md new file mode 100644 index 00000000..f0be255a --- /dev/null +++ b/keyboards/atreus50/readme.md @@ -0,0 +1,25 @@ +Preonic keyboard firmware +====================== +DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default +To build with the default keymap, simply run `make`. + +### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap, create a file in the keymaps folder named `.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 `KEYMAP` option like: +``` +$ make KEYMAP=[default|jack|] +``` +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/atreus50/rules.mk b/keyboards/atreus50/rules.mk new file mode 100644 index 00000000..7770ea2a --- /dev/null +++ b/keyboards/atreus50/rules.mk @@ -0,0 +1,81 @@ + + +# 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 ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +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. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +avrdude: build + ls /dev/tty* > /tmp/1; \ + echo "Reset your Pro Micro now"; \ + while [[ -z $$USB ]]; do \ + sleep 1; \ + ls /dev/tty* > /tmp/2; \ + USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ + done; \ + avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude From 0520341ce48e45ddb53a8b26f8710417af6279e6 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 23 Mar 2017 11:25:21 -0400 Subject: [PATCH 142/183] Cleanup keymap --- keyboards/atreus50/atreus50.c | 2 +- keyboards/atreus50/keymaps/default/keymap.c | 206 +++++++++---------- keyboards/atreus50/keymaps/default/readme.md | 1 - 3 files changed, 94 insertions(+), 115 deletions(-) delete mode 100644 keyboards/atreus50/keymaps/default/readme.md diff --git a/keyboards/atreus50/atreus50.c b/keyboards/atreus50/atreus50.c index 0ec63216..225a51bc 100644 --- a/keyboards/atreus50/atreus50.c +++ b/keyboards/atreus50/atreus50.c @@ -7,4 +7,4 @@ void matrix_init_kb(void) { PORTE |= (1<<6); matrix_init_user(); -}; \ No newline at end of file +}; diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/atreus50/keymaps/default/keymap.c index 0a77613c..8ae096cd 100644 --- a/keyboards/atreus50/keymaps/default/keymap.c +++ b/keyboards/atreus50/keymaps/default/keymap.c @@ -17,7 +17,7 @@ #define _MOVEMENT 5 #define _ADJUST 16 -enum preonic_keycodes { +enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, @@ -30,123 +30,103 @@ enum preonic_keycodes { // Fillers to make layering more clear #define _______ KC_TRNS #define XXXXXXX KC_NO +#define KC_X0 MT(MOD_LCTL, KC_ESC) // Hold for Left Ctrl, Tap for ESC +#define KC_X1 LOWER +#define KC_X2 RAISE +#define KC_X3 MO(_MOVEMENT) +#define KC_X4 MT(MOD_LSFT, KC_ENT) // Hold for Left Shift, Tap for Enter const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_QWERTY] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \ - 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_ENT, \ - KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Colemak - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_COLEMAK] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, \ - 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_ENT, \ - KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Dvorak - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab | " | , | . | P | Y | F | G | C | R | L | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_DVORAK] = KEYMAP( \ - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINS, \ - KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \ - KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, MO(_MOVEMENT), KC_RSFT, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Lower - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_LOWER] = KEYMAP( \ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ -), - -/* Raise - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = KEYMAP( \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ -), - -[_MOVEMENT] = KEYMAP( \ - KC_TILD, KC_EXLM, KC_MUTE, KC_VOLD, KC_VOLU, KC_PERC, KC_CIRC, KC_AMPR, KC_UP, KC_LPRN, KC_RPRN, KC_DEL, \ - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RCBR, KC_PIPE, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDOWN, KC_PGUP, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ -), + [_QWERTY] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, X4 , + //|----+----+----+----+----+----|----+----|----+----+----+----+----+----| + GRV ,LCTL,LALT,LGUI, X1 ,SPC , X3 ,RSFT,BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' + ), + + [_COLEMAK] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , R , S , T , D , H , N , E , I , O ,QUOT, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , K , M ,COMM,DOT ,SLSH, X4 , + //|----+----+----+----+----+----|----+----|----+----+----+----+----+----| + GRV ,LCTL,LALT,LGUI, X1 ,SPC , X3 ,RSFT,BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' + ), + + [_DVORAK] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , O , E , U , I , D , H , R , N , S ,SLSH, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT,SCLN, Q , J , K , X , B , M , W , V , Z , X4 , + //|----+----+----+----+----+----|----+----|----+----+----+----+----+----| + GRV ,LCTL,LALT,LGUI, X1 ,SPC , X3 ,RSFT,BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' + ), + + [_LOWER] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,DEL , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL , F1 , F2 , F3 , F4 , F5 , F6 ,UNDS,PLUS,LCBR,RCBR,PIPE, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , F7 , F8 , F9 ,F10 ,F11 , F12 ,END , , , , , + //|----+----+----+----+----+----|----+----|----+----+----+----+----+----| + , , , , , , , , , ,MNXT,VOLD,VOLU,MPLY + //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' + ), + + [_RAISE] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,DEL , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL , F1 , F2 , F3 , F4 , F5 , F6 ,MINS,EQL ,LBRC,RBRC,BSLS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , F7 , F8 , F9 ,F10 ,F11 , F12 ,NUHS,NUBS, , , , + //|----+----+----+----+----+----|----+----|----+----+----+----+----+----| + , , , , , , , , , ,MNXT,VOLD,VOLU,MPLY + //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' + ), + + [_MOVEMENT] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR, UP ,LPRN,RPRN,DEL , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL , F1 , F2 , F3 , F4 , F5 , F6 ,LEFT,DOWN,RGHT,RCBR,PIPE, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , F7 , F8 , F9 ,F10 ,F11 , F12 ,END , , , , , + //|----+----+----+----+----+----|----+----|----+----+----+----+----+----| + , , , , , , , ,PGDN,PGUP,MNXT,VOLD,VOLU,MPLY + //`----+----+----+----+----+----+----+----+----+----+----+----+----+----' + ), /* Adjust (Lower + Raise) - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Reset| | | | | | | | | | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | |Voice-|Voice+|Musoff|Mus on| | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' + * |------+------+------+------+------+------. ,------+------+------+------+------+------| + * | | Reset| | | | | | | | | | | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | |Audoff|Aud on|AGnorm| |AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | |Voice-|Voice+|Musoff|Mus on| | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | | | + * `-------------------------------------------------------------------------------------------------' */ -[_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ - _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -) + [_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ) }; @@ -267,4 +247,4 @@ void music_scale_user(void) PLAY_NOTE_ARRAY(music_scale, false, 0); } -#endif \ No newline at end of file +#endif diff --git a/keyboards/atreus50/keymaps/default/readme.md b/keyboards/atreus50/keymaps/default/readme.md deleted file mode 100644 index e911968d..00000000 --- a/keyboards/atreus50/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default Preonic layout - largely based on the Planck's \ No newline at end of file From 63e47a642536ca7af22ef353cf7d19677f48b013 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 23 Mar 2017 12:23:20 -0400 Subject: [PATCH 143/183] =?UTF-8?q?Add=20RGB=20support=20for=20Let?= =?UTF-8?q?=E2=80=99s=20Split=20v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/lets_split/keymaps/hexwire/config.h | 1 - keyboards/lets_split/rev1/config.h | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index 38b57266..9c8c6d7f 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -21,7 +21,6 @@ along with this program. If not, see . #define TAPPING_TERM 150 #undef RGBLED_NUM -#define RGB_DI_PIN B0 #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 #define RGBLIGHT_HUE_STEP 8 diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h index 2f5bde95..5fb87cf5 100644 --- a/keyboards/lets_split/rev1/config.h +++ b/keyboards/lets_split/rev1/config.h @@ -63,6 +63,13 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 16 // Number of LEDs +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD + /* * Feature disable options * These options are also useful to firmware size reduction. From 8775a13658146b7ffc90ac20579c1996bd51e909 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 23 Mar 2017 14:46:58 -0400 Subject: [PATCH 144/183] Add RGB support --- keyboards/atreus50/config.h | 2 +- keyboards/atreus50/keymaps/default/Makefile | 4 ++-- keyboards/atreus50/keymaps/default/keymap.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/atreus50/config.h b/keyboards/atreus50/config.h index dedcc8ca..2e34e0f8 100644 --- a/keyboards/atreus50/config.h +++ b/keyboards/atreus50/config.h @@ -61,7 +61,7 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN C6 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 12 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/atreus50/keymaps/default/Makefile b/keyboards/atreus50/keymaps/default/Makefile index e8556d0d..d7b0fa7f 100644 --- a/keyboards/atreus50/keymaps/default/Makefile +++ b/keyboards/atreus50/keymaps/default/Makefile @@ -1,5 +1,5 @@ -RGBLIGHT_ENABLE = no -AUDIO_ENABLE = yes +RGBLIGHT_ENABLE = yes +AUDIO_ENABLE = no ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/atreus50/keymaps/default/keymap.c index 8ae096cd..415405ec 100644 --- a/keyboards/atreus50/keymaps/default/keymap.c +++ b/keyboards/atreus50/keymaps/default/keymap.c @@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------------------------------------------------------------------------------------' */ [_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, RESET, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, \ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ From ddc036b69ea508750f5129d9a43fee484148716a Mon Sep 17 00:00:00 2001 From: Travis La Marr Date: Fri, 24 Mar 2017 12:53:55 -0400 Subject: [PATCH 145/183] Refactor Bluetooth Handling Refactored Bluetooth support to make adding new Bluetooth modules easier in the future. * Remove `OUT_BLE` key from QMK's keymap. `OUT_BT` is all we need now as there's no difference anymore. * Made BLUETOOTH_ENABLE build option legacy as not to break existing keymaps (Falls back to existing EZ Key support if on) * Removed `ADAFRUIT_BLE_ENABLE` build option * Created new build option `BLUETOOTH` with module option (Currently `AdafruitEZKey` & `AdafruitBLE`) * Moved all LUFA bluetooth key/mouse events under `BLUETOOTH_ENABLE` ifdef with selected modules output. --- quantum/quantum.c | 8 --- quantum/quantum_keycodes.h | 3 -- tmk_core/common.mk | 12 +++-- tmk_core/protocol/lufa.mk | 12 +++-- tmk_core/protocol/lufa/adafruit_ble.h | 4 +- tmk_core/protocol/lufa/lufa.c | 77 ++++++++++++--------------- tmk_core/protocol/lufa/outputselect.c | 6 +-- tmk_core/protocol/lufa/outputselect.h | 1 - 8 files changed, 57 insertions(+), 66 deletions(-) diff --git a/quantum/quantum.c b/quantum/quantum.c index 582f8920..807a7084 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -294,14 +294,6 @@ bool process_record_quantum(keyrecord_t *record) { return false; break; #endif - #ifdef ADAFRUIT_BLE_ENABLE - case OUT_BLE: - if (record->event.pressed) { - set_output(OUTPUT_ADAFRUIT_BLE); - } - return false; - break; - #endif #endif case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: if (record->event.pressed) { diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 903d57f1..78b02a0d 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -159,9 +159,6 @@ enum quantum_keycodes { #ifdef BLUETOOTH_ENABLE OUT_BT, #endif -#ifdef ADAFRUIT_BLE_ENABLE - OUT_BLE, -#endif // always leave at the end SAFE_RANGE diff --git a/tmk_core/common.mk b/tmk_core/common.mk index a86dccc6..2b0fda5f 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -93,14 +93,18 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE endif -ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes) - TMK_COMMON_DEFS += -DADAFRUIT_BLE_ENABLE -endif - ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE endif +ifeq ($(strip $(BLUETOOTH)), AdafruitBLE) + TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE +endif + +ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) + TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE +endif + ifeq ($(strip $(ONEHAND_ENABLE)), yes) TMK_COMMON_DEFS += -DONEHAND_ENABLE endif diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index de0cc795..5b157797 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -22,11 +22,16 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) include $(TMK_PATH)/protocol/midi.mk endif -ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes) - LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp +ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) + LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ + $(TMK_DIR)/protocol/serial_uart.c endif -ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) +ifeq ($(strip $(BLUETOOTH)), AdafruitBLE) + LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp +endif + +ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ $(TMK_DIR)/protocol/serial_uart.c endif @@ -54,6 +59,7 @@ LUFA_OPTS += -DUSE_FLASH_DESCRIPTORS LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)" #LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 +LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1 # Remote wakeup fix for ATmega32U2 https://github.com/tmk/tmk_keyboard/issues/361 diff --git a/tmk_core/protocol/lufa/adafruit_ble.h b/tmk_core/protocol/lufa/adafruit_ble.h index 351fd55a..b3bab3ca 100644 --- a/tmk_core/protocol/lufa/adafruit_ble.h +++ b/tmk_core/protocol/lufa/adafruit_ble.h @@ -3,7 +3,7 @@ * Supports the Adafruit BLE board built around the nRF51822 chip. */ #pragma once -#ifdef ADAFRUIT_BLE_ENABLE +#ifdef MODULE_ADAFRUIT_BLE #include #include #include @@ -57,4 +57,4 @@ extern bool adafruit_ble_set_power_level(int8_t level); } #endif -#endif // ADAFRUIT_BLE_ENABLE +#endif // MODULE_ADAFRUIT_BLE diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index ba49284c..d71748ce 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -67,10 +67,11 @@ #endif #ifdef BLUETOOTH_ENABLE - #include "bluetooth.h" -#endif -#ifdef ADAFRUIT_BLE_ENABLE + #ifdef MODULE_ADAFRUIT_BLE #include "adafruit_ble.h" + #else + #include "bluetooth.h" + #endif #endif #ifdef VIRTSER_ENABLE @@ -602,18 +603,14 @@ static void send_keyboard(report_keyboard_t *report) uint8_t where = where_to_send(); #ifdef BLUETOOTH_ENABLE - if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { - bluefruit_serial_send(0xFD); - for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { - bluefruit_serial_send(report->raw[i]); - } - } -#endif - -#ifdef ADAFRUIT_BLE_ENABLE - if (where == OUTPUT_ADAFRUIT_BLE) { - adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); + #ifdef MODULE_ADAFRUIT_BLE + adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); + #else + bluefruit_serial_send(0xFD); + for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { + bluefruit_serial_send(report->raw[i]); } + #endif #endif if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { @@ -660,24 +657,22 @@ static void send_mouse(report_mouse_t *report) uint8_t where = where_to_send(); #ifdef BLUETOOTH_ENABLE - if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { - bluefruit_serial_send(0xFD); - bluefruit_serial_send(0x00); - bluefruit_serial_send(0x03); - bluefruit_serial_send(report->buttons); - bluefruit_serial_send(report->x); - bluefruit_serial_send(report->y); - bluefruit_serial_send(report->v); // should try sending the wheel v here - bluefruit_serial_send(report->h); // should try sending the wheel h here - bluefruit_serial_send(0x00); - } -#endif - -#ifdef ADAFRUIT_BLE_ENABLE - if (where == OUTPUT_ADAFRUIT_BLE) { + if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { + #ifdef MODULE_ADAFRUIT_BLE // FIXME: mouse buttons adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h); - } + #else + bluefruit_serial_send(0xFD); + bluefruit_serial_send(0x00); + bluefruit_serial_send(0x03); + bluefruit_serial_send(report->buttons); + bluefruit_serial_send(report->x); + bluefruit_serial_send(report->y); + bluefruit_serial_send(report->v); // should try sending the wheel v here + bluefruit_serial_send(report->h); // should try sending the wheel h here + bluefruit_serial_send(0x00); + #endif + } #endif if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { @@ -727,6 +722,9 @@ static void send_consumer(uint16_t data) #ifdef BLUETOOTH_ENABLE if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { + #ifdef MODULE_ADAFRUIT_BLE + adafruit_ble_send_consumer_key(data, 0); + #else static uint16_t last_data = 0; if (data == last_data) return; last_data = data; @@ -740,12 +738,7 @@ static void send_consumer(uint16_t data) bluefruit_serial_send(0x00); bluefruit_serial_send(0x00); bluefruit_serial_send(0x00); - } -#endif - -#ifdef ADAFRUIT_BLE_ENABLE - if (where == OUTPUT_ADAFRUIT_BLE) { - adafruit_ble_send_consumer_key(data, 0); + #endif } #endif @@ -1130,10 +1123,6 @@ int main(void) // midi_send_noteoff(&midi_device, 0, 64, 127); #endif -#ifdef BLUETOOTH_ENABLE - serial_init(); -#endif - /* wait for USB startup & debug output */ #ifdef WAIT_FOR_USB @@ -1161,7 +1150,7 @@ int main(void) print("Keyboard start.\n"); while (1) { - #if !defined(BLUETOOTH_ENABLE) && !defined(ADAFRUIT_BLE_ENABLE) + #if !defined(BLUETOOTH_ENABLE) while (USB_DeviceState == DEVICE_STATE_Suspended) { print("[s]"); suspend_power_down(); @@ -1182,7 +1171,11 @@ int main(void) rgblight_task(); #endif -#ifdef ADAFRUIT_BLE_ENABLE +#ifdef MODULE_ADAFRUIT_EZKEY + serial_init(); +#endif + +#ifdef MODULE_ADAFRUIT_BLE adafruit_ble_task(); #endif diff --git a/tmk_core/protocol/lufa/outputselect.c b/tmk_core/protocol/lufa/outputselect.c index 5d2457bf..0df5d3b7 100644 --- a/tmk_core/protocol/lufa/outputselect.c +++ b/tmk_core/protocol/lufa/outputselect.c @@ -14,7 +14,7 @@ along with this program. If not, see . #include "lufa.h" #include "outputselect.h" -#ifdef ADAFRUIT_BLE_ENABLE +#ifdef MODULE_ADAFRUIT_BLE #include "adafruit_ble.h" #endif @@ -34,9 +34,9 @@ uint8_t auto_detect_output(void) { return OUTPUT_USB; } -#ifdef ADAFRUIT_BLE_ENABLE +#ifdef MODULE_ADAFRUIT_BLE if (adafruit_ble_is_connected()) { - return OUTPUT_ADAFRUIT_BLE; + return OUTPUT_BLUETOOTH; } #endif diff --git a/tmk_core/protocol/lufa/outputselect.h b/tmk_core/protocol/lufa/outputselect.h index 79b4dd35..28cc3298 100644 --- a/tmk_core/protocol/lufa/outputselect.h +++ b/tmk_core/protocol/lufa/outputselect.h @@ -18,7 +18,6 @@ enum outputs { OUTPUT_NONE, OUTPUT_USB, OUTPUT_BLUETOOTH, - OUTPUT_ADAFRUIT_BLE, // backward compatibility OUTPUT_USB_AND_BT From 25f2295ba88627521bed63ec4e5412b983626901 Mon Sep 17 00:00:00 2001 From: Hugh Enxing Date: Fri, 24 Mar 2017 14:31:02 -0400 Subject: [PATCH 146/183] Swapped placement of `Ctrl` and `Alt` keys to match Technomancy's default layout --- keyboards/atreus/keymaps/default/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/atreus/keymaps/default/keymap.c b/keyboards/atreus/keymaps/default/keymap.c index 04ad66fe..ce92e89c 100644 --- a/keyboards/atreus/keymaps/default/keymap.c +++ b/keyboards/atreus/keymaps/default/keymap.c @@ -15,8 +15,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QW] = { /* Qwerty */ {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P }, {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, - {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT } + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT } }, /* * ! @ up { } || pgup 7 8 9 * @@ -27,8 +27,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RS] = { /* [> RAISE <] */ {KC_EXLM, KC_AT, KC_UP, KC_LCBR, KC_RCBR, KC_TRNS, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR, KC_TRNS, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, - {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LALT, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS}, - {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL} + {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS}, + {TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL} }, /* * insert home up end pgup || up F7 F8 F9 F10 @@ -39,8 +39,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LW] = { /* [> LOWER <] */ {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, - {KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET, KC_LALT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, - {KC_TRNS, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC, DF(_QW), KC_PSCR, KC_SLCK, KC_PAUS} + {KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET, KC_LCTL, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12}, + {KC_TRNS, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, DF(_QW), KC_PSCR, KC_SLCK, KC_PAUS} }}; const uint16_t PROGMEM fn_actions[] = { From b4ac0598fa5a69418d79f78c0cf323307d5f5f5e Mon Sep 17 00:00:00 2001 From: Travis La Marr Date: Fri, 24 Mar 2017 15:55:02 -0400 Subject: [PATCH 147/183] Readd bluetooth output direction on standard key input. --- tmk_core/protocol/lufa/lufa.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index d71748ce..3d7a8cc4 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -603,14 +603,16 @@ static void send_keyboard(report_keyboard_t *report) uint8_t where = where_to_send(); #ifdef BLUETOOTH_ENABLE - #ifdef MODULE_ADAFRUIT_BLE - adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); - #else - bluefruit_serial_send(0xFD); - for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { - bluefruit_serial_send(report->raw[i]); - } - #endif + if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { + #ifdef MODULE_ADAFRUIT_BLE + adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); + #else + bluefruit_serial_send(0xFD); + for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { + bluefruit_serial_send(report->raw[i]); + } + #endif + } #endif if (where != OUTPUT_USB && where != OUTPUT_USB_AND_BT) { From 43eee52cba8db46e9f305a56ca6623428e28cc2e Mon Sep 17 00:00:00 2001 From: Travis La Marr Date: Fri, 24 Mar 2017 17:14:57 -0400 Subject: [PATCH 148/183] Add BLE and EZKey module defines. Also restored serial init back to original location. Was getting junk data. --- tmk_core/common.mk | 2 ++ tmk_core/protocol/lufa/lufa.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 2b0fda5f..47f6fc57 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -99,10 +99,12 @@ endif ifeq ($(strip $(BLUETOOTH)), AdafruitBLE) TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE + TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_BLE endif ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE + TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY endif ifeq ($(strip $(ONEHAND_ENABLE)), yes) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 3d7a8cc4..4cb23ebc 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1125,6 +1125,10 @@ int main(void) // midi_send_noteoff(&midi_device, 0, 64, 127); #endif +#ifdef MODULE_ADAFRUIT_EZKEY + serial_init(); +#endif + /* wait for USB startup & debug output */ #ifdef WAIT_FOR_USB @@ -1173,10 +1177,6 @@ int main(void) rgblight_task(); #endif -#ifdef MODULE_ADAFRUIT_EZKEY - serial_init(); -#endif - #ifdef MODULE_ADAFRUIT_BLE adafruit_ble_task(); #endif From 739249ff0d707a9702771236fcf22538e3a7106b Mon Sep 17 00:00:00 2001 From: Nicolas Guelpa Date: Fri, 24 Mar 2017 20:18:59 -0400 Subject: [PATCH 149/183] Adding different layer --- keyboards/xd60/keymaps/cheese/keymap.c | 67 ++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 keyboards/xd60/keymaps/cheese/keymap.c diff --git a/keyboards/xd60/keymaps/cheese/keymap.c b/keyboards/xd60/keymaps/cheese/keymap.c new file mode 100644 index 00000000..73800930 --- /dev/null +++ b/keyboards/xd60/keymaps/cheese/keymap.c @@ -0,0 +1,67 @@ +#include "xd60.h" +#include "action_layer.h" + +// Each layer gets a name for readability. +// 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, and you can also skip them entirely +// and just use numbers. +#define _BL 0 +#define _FL 1 +#define _LS 2 +#define _RS 3 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* (Base Layer) Default Layer + * ,-----------------------------------------------------------. + * |Esc~| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |FN|Left|Up|Down|Right| + * `-----------------------------------------------------------' + */ + [_BL] = 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_BSPC, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + MO(_FL), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ + F(0), KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, F(1), F(1), F(1), \ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT), + +// 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, KC_DEL, \ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CALC, KC_INS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ + KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_PGDN, KC_END), + +// Left Shift Layer + [_LS] = KEYMAP( + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_CAPS, KC_CAPS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +// Right Shift Layer + [_RS] = KEYMAP( + KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; + +// Custom Actions +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_MODS(_LS, MOD_LSFT), + [1] = ACTION_LAYER_MODS(_RS, MOD_RSFT), +}; From c0a6c5f80601ed040be0adfe183c9b672aa7fa50 Mon Sep 17 00:00:00 2001 From: Nicolas Guelpa Date: Sun, 26 Mar 2017 15:07:19 -0400 Subject: [PATCH 150/183] fixing layout --- keyboards/xd60/keymaps/cheese/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/xd60/keymaps/cheese/keymap.c b/keyboards/xd60/keymaps/cheese/keymap.c index 73800930..25919a41 100644 --- a/keyboards/xd60/keymaps/cheese/keymap.c +++ b/keyboards/xd60/keymaps/cheese/keymap.c @@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | * |-----------------------------------------------------------| - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |FUNCTION| A| S| D| F| G| H| J| K| L| ;| '|Return| * |-----------------------------------------------------------| * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | * |-----------------------------------------------------------| From a89ee25db8eb57b902e0fc1a16166d16af0dc721 Mon Sep 17 00:00:00 2001 From: Nicolas Guelpa Date: Sun, 26 Mar 2017 15:16:55 -0400 Subject: [PATCH 151/183] Add files via upload --- keyboards/xd60/keymaps/cheese/base_layout.png | Bin 0 -> 23729 bytes keyboards/xd60/keymaps/cheese/fn_layout.png | Bin 0 -> 20690 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 keyboards/xd60/keymaps/cheese/base_layout.png create mode 100644 keyboards/xd60/keymaps/cheese/fn_layout.png diff --git a/keyboards/xd60/keymaps/cheese/base_layout.png b/keyboards/xd60/keymaps/cheese/base_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..211c4c731e6a90587fe1024d996a73744479b123 GIT binary patch literal 23729 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 Imk{3n2fLyuP5=M^ literal 0 HcmV?d00001 diff --git a/keyboards/xd60/keymaps/cheese/fn_layout.png b/keyboards/xd60/keymaps/cheese/fn_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..fe5ae99e0fcb43078ec978e8ebc8ef7068c3b5b3 GIT binary patch literal 20690 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 literal 0 HcmV?d00001 From a32436d5a16e1092d71b3185f17fda303d8333c6 Mon Sep 17 00:00:00 2001 From: Nicolas Guelpa Date: Sun, 26 Mar 2017 15:20:44 -0400 Subject: [PATCH 152/183] Create README.md --- keyboards/xd60/keymaps/cheese/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 keyboards/xd60/keymaps/cheese/README.md diff --git a/keyboards/xd60/keymaps/cheese/README.md b/keyboards/xd60/keymaps/cheese/README.md new file mode 100644 index 00000000..8a5b97c0 --- /dev/null +++ b/keyboards/xd60/keymaps/cheese/README.md @@ -0,0 +1,13 @@ +# cheese's Layout +Customized xd60 keymap + +![Base Layout](base_layout.png "Base Layout") +![Fn Layout](fn_layout.png "Fn Layout") + +## Programming Instructions: +`cd` into keymap directory, `make dfu` + +## Features +- Media keys and movement keys setup like on the pok3r +- Lower right movement keys setup like on the fc660m (fn+direction for home/end/page up and down) +- Caps lock can be triggered by pressing both shift keys at the same time (and deactivated the same way) From b6b85ed41397440417106309bcf2b7ef2b617976 Mon Sep 17 00:00:00 2001 From: mattdibi Date: Tue, 28 Mar 2017 09:56:07 +0200 Subject: [PATCH 153/183] Added italian layout --- keyboards/ergodox/keymaps/italian/L0.PNG | Bin 0 -> 152470 bytes keyboards/ergodox/keymaps/italian/L1.PNG | Bin 0 -> 130416 bytes keyboards/ergodox/keymaps/italian/L2.PNG | Bin 0 -> 126006 bytes keyboards/ergodox/keymaps/italian/keymap.c | 223 ++++++++++++++++++++ keyboards/ergodox/keymaps/italian/readme.md | 15 ++ 5 files changed, 238 insertions(+) create mode 100644 keyboards/ergodox/keymaps/italian/L0.PNG create mode 100644 keyboards/ergodox/keymaps/italian/L1.PNG create mode 100644 keyboards/ergodox/keymaps/italian/L2.PNG create mode 100644 keyboards/ergodox/keymaps/italian/keymap.c create mode 100644 keyboards/ergodox/keymaps/italian/readme.md diff --git a/keyboards/ergodox/keymaps/italian/L0.PNG b/keyboards/ergodox/keymaps/italian/L0.PNG new file mode 100644 index 0000000000000000000000000000000000000000..491a4f3883148a4b6ea730c545a1dd4d69c823e6 GIT binary patch literal 152470 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 Q!CclkeY3OWr`^N<1Dv(YUjP6A literal 0 HcmV?d00001 diff --git a/keyboards/ergodox/keymaps/italian/L1.PNG b/keyboards/ergodox/keymaps/italian/L1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..17c5ffc67bf071b11ecc847048a5693afa0ff650 GIT binary patch literal 130416 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 AK>z>% literal 0 HcmV?d00001 diff --git a/keyboards/ergodox/keymaps/italian/L2.PNG b/keyboards/ergodox/keymaps/italian/L2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c0aa9e9d38ae64002875ab484ff58defc6fc5c2b GIT binary patch literal 126006 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 literal 0 HcmV?d00001 diff --git a/keyboards/ergodox/keymaps/italian/keymap.c b/keyboards/ergodox/keymaps/italian/keymap.c new file mode 100644 index 00000000..e4c7a569 --- /dev/null +++ b/keyboards/ergodox/keymaps/italian/keymap.c @@ -0,0 +1,223 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + EPRM, + VRSN, + RGB_SLD +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | \ | 1 | 2 | 3 | 4 | 5 | ESC | | T2 | 6 | 7 | 8 | 9 | 0 | ' | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | TT1 | | TT1 | Y | U | I | O | P | è | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Caps | A | S | D | F | G |------| |------| H | J | K | L | ò | à | + * |--------+------+------+------+------+------| Alt | | Alt |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | ù |-/RShift| + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + case 1: + if (record->event.pressed) { // For resetting EEPROM + eeconfig_init(); + } + break; + } + return MACRO_NONE; +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case EPRM: + if (record->event.pressed) { + eeconfig_init(); + } + return false; + break; + case VRSN: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + break; + case RGB_SLD: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_mode(1); + #endif + } + return false; + break; + } + return true; +} + +// Runs just one time when the keyboard initializes. +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/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md new file mode 100644 index 00000000..979ce0f5 --- /dev/null +++ b/keyboards/ergodox/keymaps/italian/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) From 512eb5e1d5edd39e3e46f8201b57d8fd17084408 Mon Sep 17 00:00:00 2001 From: mattdibi Date: Tue, 28 Mar 2017 10:10:24 +0200 Subject: [PATCH 154/183] Updated readme --- keyboards/ergodox/keymaps/italian/readme.md | 79 ++++++++++++++++++--- 1 file changed, 68 insertions(+), 11 deletions(-) diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md index 979ce0f5..f9d01213 100644 --- a/keyboards/ergodox/keymaps/italian/readme.md +++ b/keyboards/ergodox/keymaps/italian/readme.md @@ -1,15 +1,72 @@ -# ErgoDox EZ Default Configuration +# ErgoDox Italian layout -## Changelog +## Layer 0 +```sh + + ,--------------------------------------------------. ,--------------------------------------------------. + | \ | 1 | 2 | 3 | 4 | 5 | ESC | | T2 | 6 | 7 | 8 | 9 | 0 | ' | + |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + | Tab | Q | W | E | R | T | TT1 | | TT1 | Y | U | I | O | P | è | + |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + | Caps | A | S | D | F | G |------| |------| H | J | K | L | ò | à | + |--------+------+------+------+------+------| Alt | | Alt |------+------+------+------+------+--------| + | LShift | Z | X | C | V | B | | | | N | M | , | . | ù |-/RShift| + `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + | Date: Tue, 28 Mar 2017 10:13:29 +0200 Subject: [PATCH 155/183] Fixed italian kymap readme --- keyboards/ergodox/keymaps/italian/readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md index f9d01213..75dd3c29 100644 --- a/keyboards/ergodox/keymaps/italian/readme.md +++ b/keyboards/ergodox/keymaps/italian/readme.md @@ -1,7 +1,7 @@ # ErgoDox Italian layout ## Layer 0 -```sh +``` ,--------------------------------------------------. ,--------------------------------------------------. | \ | 1 | 2 | 3 | 4 | 5 | ESC | | T2 | 6 | 7 | 8 | 9 | 0 | ' | @@ -24,7 +24,7 @@ ``` ## Layer 1 -```sh +``` ,--------------------------------------------------. ,--------------------------------------------------. |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | @@ -47,7 +47,7 @@ ``` ## Layer 1 -```sh +``` ,--------------------------------------------------. ,--------------------------------------------------. | | | | | | | | | | | | | | | | From 221b27c508b3870de725e720222a6281770b5f98 Mon Sep 17 00:00:00 2001 From: mattdibi Date: Tue, 28 Mar 2017 10:15:18 +0200 Subject: [PATCH 156/183] Fixed layout title in ergodox ez italian keymap --- keyboards/ergodox/keymaps/italian/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/italian/readme.md b/keyboards/ergodox/keymaps/italian/readme.md index 75dd3c29..215c24a5 100644 --- a/keyboards/ergodox/keymaps/italian/readme.md +++ b/keyboards/ergodox/keymaps/italian/readme.md @@ -46,7 +46,7 @@ `--------------------' `--------------------' ``` -## Layer 1 +## Layer 2 ``` ,--------------------------------------------------. ,--------------------------------------------------. From 2104900030c4a0d0a5d71c9900804dec229a375d Mon Sep 17 00:00:00 2001 From: mattdibi Date: Tue, 28 Mar 2017 10:19:25 +0200 Subject: [PATCH 157/183] Removed images from ergodox ez italian layout --- keyboards/ergodox/keymaps/italian/L0.PNG | Bin 152470 -> 0 bytes keyboards/ergodox/keymaps/italian/L1.PNG | Bin 130416 -> 0 bytes keyboards/ergodox/keymaps/italian/L2.PNG | Bin 126006 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 keyboards/ergodox/keymaps/italian/L0.PNG delete mode 100644 keyboards/ergodox/keymaps/italian/L1.PNG delete mode 100644 keyboards/ergodox/keymaps/italian/L2.PNG diff --git a/keyboards/ergodox/keymaps/italian/L0.PNG b/keyboards/ergodox/keymaps/italian/L0.PNG deleted file mode 100644 index 491a4f3883148a4b6ea730c545a1dd4d69c823e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152470 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 Q!CclkeY3OWr`^N<1Dv(YUjP6A diff --git a/keyboards/ergodox/keymaps/italian/L1.PNG b/keyboards/ergodox/keymaps/italian/L1.PNG deleted file mode 100644 index 17c5ffc67bf071b11ecc847048a5693afa0ff650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130416 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 AK>z>% diff --git a/keyboards/ergodox/keymaps/italian/L2.PNG b/keyboards/ergodox/keymaps/italian/L2.PNG deleted file mode 100644 index c0aa9e9d38ae64002875ab484ff58defc6fc5c2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126006 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 From 71857ebc3f410b918481f4a6bbed93f1cb2eec65 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 28 Mar 2017 09:17:09 -0400 Subject: [PATCH 158/183] Move Atreus50 to hardwired directory and update README --- keyboards/atreus50/readme.md | 25 ------------------- keyboards/{ => handwired}/atreus50/Makefile | 0 keyboards/{ => handwired}/atreus50/atreus50.c | 0 keyboards/{ => handwired}/atreus50/atreus50.h | 0 keyboards/{ => handwired}/atreus50/config.h | 0 .../atreus50/keymaps/default/Makefile | 0 .../atreus50/keymaps/default/keymap.c | 0 keyboards/handwired/atreus50/readme.md | 16 ++++++++++++ keyboards/{ => handwired}/atreus50/rules.mk | 0 9 files changed, 16 insertions(+), 25 deletions(-) delete mode 100644 keyboards/atreus50/readme.md rename keyboards/{ => handwired}/atreus50/Makefile (100%) rename keyboards/{ => handwired}/atreus50/atreus50.c (100%) rename keyboards/{ => handwired}/atreus50/atreus50.h (100%) rename keyboards/{ => handwired}/atreus50/config.h (100%) rename keyboards/{ => handwired}/atreus50/keymaps/default/Makefile (100%) rename keyboards/{ => handwired}/atreus50/keymaps/default/keymap.c (100%) create mode 100644 keyboards/handwired/atreus50/readme.md rename keyboards/{ => handwired}/atreus50/rules.mk (100%) diff --git a/keyboards/atreus50/readme.md b/keyboards/atreus50/readme.md deleted file mode 100644 index f0be255a..00000000 --- a/keyboards/atreus50/readme.md +++ /dev/null @@ -1,25 +0,0 @@ -Preonic keyboard firmware -====================== -DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com). - -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme.md](/readme.md). - -## Building - -Download or clone the whole firmware and navigate to the keyboards/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. - -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default -To build with the default keymap, simply run `make`. - -### Other Keymaps -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap, create a file in the keymaps folder named `.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 `KEYMAP` option like: -``` -$ make KEYMAP=[default|jack|] -``` -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/atreus50/Makefile b/keyboards/handwired/atreus50/Makefile similarity index 100% rename from keyboards/atreus50/Makefile rename to keyboards/handwired/atreus50/Makefile diff --git a/keyboards/atreus50/atreus50.c b/keyboards/handwired/atreus50/atreus50.c similarity index 100% rename from keyboards/atreus50/atreus50.c rename to keyboards/handwired/atreus50/atreus50.c diff --git a/keyboards/atreus50/atreus50.h b/keyboards/handwired/atreus50/atreus50.h similarity index 100% rename from keyboards/atreus50/atreus50.h rename to keyboards/handwired/atreus50/atreus50.h diff --git a/keyboards/atreus50/config.h b/keyboards/handwired/atreus50/config.h similarity index 100% rename from keyboards/atreus50/config.h rename to keyboards/handwired/atreus50/config.h diff --git a/keyboards/atreus50/keymaps/default/Makefile b/keyboards/handwired/atreus50/keymaps/default/Makefile similarity index 100% rename from keyboards/atreus50/keymaps/default/Makefile rename to keyboards/handwired/atreus50/keymaps/default/Makefile diff --git a/keyboards/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c similarity index 100% rename from keyboards/atreus50/keymaps/default/keymap.c rename to keyboards/handwired/atreus50/keymaps/default/keymap.c diff --git a/keyboards/handwired/atreus50/readme.md b/keyboards/handwired/atreus50/readme.md new file mode 100644 index 00000000..0c24f67d --- /dev/null +++ b/keyboards/handwired/atreus50/readme.md @@ -0,0 +1,16 @@ +Handwired Atreus50 +================== + +This firmware is for a Handwired Atreus50 using an Arduino Pro Micro. + +## Pinout + +The following pins are used: +- Columns 1-13: D4, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 +- Rows 1-4: D3, D2, D1, D0 + +## Compiling and loading the firmware + +To build the firmware, run `make`. + +To flash the firemware onto the microcontroller, run `make avrdude`, and press the reset button. diff --git a/keyboards/atreus50/rules.mk b/keyboards/handwired/atreus50/rules.mk similarity index 100% rename from keyboards/atreus50/rules.mk rename to keyboards/handwired/atreus50/rules.mk From d5ee0194abf5cc9df4086a89ad78cf188352028a Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 15:43:04 +0200 Subject: [PATCH 159/183] fixed #1139 issues A fix described by jackhumbert has been sorted out now. --- .../satan/keymaps/admiralStrokers/Makefile | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile index 18d2280d..7aba5d80 100644 --- a/keyboards/satan/keymaps/admiralStrokers/Makefile +++ b/keyboards/satan/keymaps/admiralStrokers/Makefile @@ -2,25 +2,25 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Enables your LED to breathe while your computer is sleeping. -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODEMAP_ENABLE = no # This allows sending unicode symbols using X() in your keymap. -UNICODE_ENABLE = no # Unicode -UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for details on Windows). -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 +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Enables your LED to breathe while your computer is sleeping. +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODEMAP_ENABLE = no # This allows sending unicode symbols using X() in your keymap. +UNICODE_ENABLE =no # Unicode +UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for details on Windows). +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 -VARIABLE_TRACE = no # Use this to debug changes to variable values -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings +VARIABLE_TRACE = no # Use this to debug changes to variable values +API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings ifndef QUANTUM_DIR include ../../../../Makefile endif From 48dfc77718bf115c6d65257b07e8d87304c23d8f Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 15:58:46 +0200 Subject: [PATCH 160/183] removed a carriage return --- .../satan/keymaps/admiralStrokers/Makefile | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile index 7aba5d80..bb407286 100644 --- a/keyboards/satan/keymaps/admiralStrokers/Makefile +++ b/keyboards/satan/keymaps/admiralStrokers/Makefile @@ -2,25 +2,24 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = no # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -SLEEP_LED_ENABLE = no # Enables your LED to breathe while your computer is sleeping. -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODEMAP_ENABLE = no # This allows sending unicode symbols using X() in your keymap. -UNICODE_ENABLE =no # Unicode -UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for details on Windows). -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 - -VARIABLE_TRACE = no # Use this to debug changes to variable values -API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Enables your LED to breathe while your computer is sleeping. +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODEMAP_ENABLE = no # This allows sending unicode symbols using X() in your keymap. +UNICODE_ENABLE =no # Unicode +UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for details on Windows). +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 +VARIABLE_TRACE = no # Use this to debug changes to variable values +API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings ifndef QUANTUM_DIR include ../../../../Makefile endif From c72ca58528671eb582a1a7360407fd9347c9735b Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 16:50:44 +0200 Subject: [PATCH 161/183] Moved key_timer out of function. --- keyboards/satan/keymaps/admiralStrokers/keymap.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index 97a0f225..4bd49aaa 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -1,13 +1,14 @@ #include "satan.h" +static uint16_t key_timer; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // general keydefs #define norm 0 // Default layer #define elev 1 // Layer directional keys #define supr 2 // F-keys and mediakeys -#define spac 3 +#define spac 3 // #define FNO1 4 // #define FNO2 5 // -#define FNO3 6 // +#define FNO3 6 // #define MAC0 M(0) // #define MAC1 M(1) // #define MAC2 M(2) // @@ -143,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function - static uint16_t key_timer; + bool checkTime(){ return (timer_elapsed(key_timer) < 150) ? true : false; } From 37b7539af3a4e302a44ed9292ed5012a9ab34e5c Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 16:52:56 +0200 Subject: [PATCH 162/183] slight cleanup as per recommendation --- keyboards/satan/keymaps/admiralStrokers/keymap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index 4bd49aaa..72a4c3dc 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -1,6 +1,6 @@ #include "satan.h" static uint16_t key_timer; -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // general keydefs #define norm 0 // Default layer #define elev 1 // Layer directional keys @@ -114,6 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define DEAD KC_NO #define SCAN KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped) GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\ DUTB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LBRC, RBRC, DEAD,\ From 1b821eca663fb6cbe13ea1753f220bce5a7636a6 Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 16:55:25 +0200 Subject: [PATCH 163/183] removed varable trace option from makefile --- keyboards/satan/keymaps/admiralStrokers/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/Makefile b/keyboards/satan/keymaps/admiralStrokers/Makefile index bb407286..61dfedeb 100644 --- a/keyboards/satan/keymaps/admiralStrokers/Makefile +++ b/keyboards/satan/keymaps/admiralStrokers/Makefile @@ -18,7 +18,6 @@ UCIS_ENABLE = no # Keep in mind that not all will work (See WinCompose for detai 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 -VARIABLE_TRACE = no # Use this to debug changes to variable values API_SYSEX_ENABLE = no # This enables using the Quantum SYSEX API to send strings ifndef QUANTUM_DIR include ../../../../Makefile From 256abc64d5daee6d7526d33455f6f28cc782dee1 Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 17:08:01 +0200 Subject: [PATCH 164/183] fixed function to not accept any arguments. As per Pramod's comment on stack overflow: In C int foo() and int foo(void) are different functions. int foo() accepts an arbitrary number of arguments, while int foo(void) accepts 0 arguments. In C++ they mean the same thing. I suggest that you use void consistently when you mean no arguments. --- keyboards/satan/keymaps/admiralStrokers/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index 72a4c3dc..7a8459eb 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function - bool checkTime(){ + bool checkTime(void){ return (timer_elapsed(key_timer) < 150) ? true : false; } From f504082f7f4f2fe078cb1863b43d7ef0dc0c5c53 Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 17:17:08 +0200 Subject: [PATCH 165/183] declaring checktime before the function it is used in. --- keyboards/satan/keymaps/admiralStrokers/keymap.c | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index 7a8459eb..b5fd2ec6 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -1,5 +1,6 @@ #include "satan.h" static uint16_t key_timer; +bool checkTime(void); // general keydefs #define norm 0 // Default layer From 411cd4fae27693324ca51eb5bf07ecebbc074c01 Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 17:30:15 +0200 Subject: [PATCH 166/183] moved checktime out of function --- keyboards/satan/keymaps/admiralStrokers/keymap.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index b5fd2ec6..422a801b 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -1,6 +1,8 @@ #include "satan.h" static uint16_t key_timer; -bool checkTime(void); +bool checkTime(void){ + return (timer_elapsed(key_timer) < 150) ? true : false; + } // general keydefs #define norm 0 // Default layer @@ -147,11 +149,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function - bool checkTime(void){ - return (timer_elapsed(key_timer) < 150) ? true : false; - } - - switch(id) { case 0: //MAC0 - Hold for lshift and { on tap if (record->event.pressed) { From 85cac3952965b37317d42bf7b3e5cf3a9e4ebdae Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 18:41:04 +0200 Subject: [PATCH 167/183] fixed capitalization issue (checkTime => checktime) --- keyboards/satan/keymaps/admiralStrokers/keymap.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index 422a801b..7b83ed7b 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -1,6 +1,8 @@ #include "satan.h" + static uint16_t key_timer; -bool checkTime(void){ + +bool checktime(void){ return (timer_elapsed(key_timer) < 150) ? true : false; } @@ -147,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX), }; -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {3 // MACRODOWN only works in this function switch(id) { case 0: //MAC0 - Hold for lshift and { on tap From 6de7e5d8dce42b56a0424da98408f3cf8f27cfa1 Mon Sep 17 00:00:00 2001 From: Ole Anders Date: Tue, 28 Mar 2017 18:45:26 +0200 Subject: [PATCH 168/183] typo removed {3 ... --- keyboards/satan/keymaps/admiralStrokers/keymap.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/keyboards/satan/keymaps/admiralStrokers/keymap.c b/keyboards/satan/keymaps/admiralStrokers/keymap.c index 7b83ed7b..b6dc29c6 100644 --- a/keyboards/satan/keymaps/admiralStrokers/keymap.c +++ b/keyboards/satan/keymaps/admiralStrokers/keymap.c @@ -4,7 +4,7 @@ static uint16_t key_timer; bool checktime(void){ return (timer_elapsed(key_timer) < 150) ? true : false; - } + }; // general keydefs #define norm 0 // Default layer @@ -149,8 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX), }; -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {3 // MACRODOWN only works in this function - +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: //MAC0 - Hold for lshift and { on tap if (record->event.pressed) { From 23839b8c6d2f955e4da89b0981948c721346c528 Mon Sep 17 00:00:00 2001 From: skullydazed Date: Tue, 28 Mar 2017 15:20:36 -0700 Subject: [PATCH 169/183] Clarify the quantum license (#1042) * Clarify the license for files we have signoff on * Update against the currently signed off files * Remove unused and not clearly licensed headers * Replace an #endif I accidentally removed while resolving merge conflicts --- doc/COPYING.GPLv2 | 339 --------- doc/COPYING.GPLv3 | 674 ------------------ license_GPLv2.md | 264 +++++++ license_GPLv3.md | 656 +++++++++++++++++ license_Modified_BSD.md | 32 + quantum/analog.c | 16 + quantum/analog.h | 16 + quantum/api.c | 18 +- quantum/api.h | 18 +- quantum/api/api_sysex.c | 15 + quantum/api/api_sysex.h | 18 +- quantum/audio/audio.c | 15 + quantum/audio/audio.h | 17 +- quantum/audio/audio_pwm.c | 15 + quantum/audio/luts.c | 16 + quantum/audio/luts.h | 18 +- quantum/audio/musical_notes.h | 18 +- quantum/audio/song_list.h | 15 + quantum/audio/voices.c | 15 + quantum/audio/voices.h | 17 +- quantum/audio/wave.h | 18 +- quantum/config_common.h | 16 + quantum/dynamic_macro.h | 16 + quantum/keycode_config.c | 18 +- quantum/keycode_config.h | 16 + quantum/keymap.h | 2 +- quantum/keymap_common.c | 2 +- quantum/keymap_extras/keymap_bepo.h | 15 + .../keymap_canadian_multilingual.h | 15 + quantum/keymap_extras/keymap_colemak.h | 15 + quantum/keymap_extras/keymap_dvorak.h | 15 + quantum/keymap_extras/keymap_dvp.h | 16 + quantum/keymap_extras/keymap_fr_ch.h | 15 + quantum/keymap_extras/keymap_french.h | 15 + quantum/keymap_extras/keymap_french_osx.h | 17 +- quantum/keymap_extras/keymap_german.h | 16 + quantum/keymap_extras/keymap_german_ch.h | 15 + quantum/keymap_extras/keymap_german_osx.h | 15 + quantum/keymap_extras/keymap_jp.h | 17 +- quantum/keymap_extras/keymap_neo2.h | 15 + quantum/keymap_extras/keymap_nordic.h | 15 + quantum/keymap_extras/keymap_norwegian.h | 15 + quantum/keymap_extras/keymap_plover.h | 15 + quantum/keymap_extras/keymap_russian.h | 77 -- quantum/keymap_extras/keymap_spanish.h | 15 + quantum/keymap_extras/keymap_uk.h | 15 + .../keymap_extras/keymap_unicode_cyrillic.h | 163 ----- quantum/light_ws2812.c | 13 +- quantum/light_ws2812.h | 14 +- quantum/matrix.c | 3 +- quantum/pincontrol.h | 15 + quantum/process_keycode/process_chording.c | 18 +- quantum/process_keycode/process_chording.h | 18 +- quantum/process_keycode/process_combo.c | 16 + quantum/process_keycode/process_combo.h | 16 + quantum/process_keycode/process_leader.c | 18 +- quantum/process_keycode/process_leader.h | 18 +- quantum/process_keycode/process_midi.c | 15 + quantum/process_keycode/process_midi.h | 18 +- quantum/process_keycode/process_music.c | 15 + quantum/process_keycode/process_music.h | 18 +- quantum/process_keycode/process_printer.c | 18 +- quantum/process_keycode/process_printer.h | 18 +- quantum/process_keycode/process_printer_bb.c | 18 +- quantum/process_keycode/process_tap_dance.c | 15 + quantum/process_keycode/process_tap_dance.h | 15 + quantum/process_keycode/process_ucis.c | 18 +- quantum/process_keycode/process_ucis.h | 16 + quantum/process_keycode/process_unicode.c | 15 + quantum/process_keycode/process_unicode.h | 15 + .../process_keycode/process_unicode_common.c | 18 +- .../process_keycode/process_unicode_common.h | 18 +- quantum/process_keycode/process_unicodemap.c | 18 +- quantum/process_keycode/process_unicodemap.h | 18 +- quantum/quantum.c | 16 + quantum/quantum.h | 15 + quantum/quantum_keycodes.h | 15 + quantum/rgblight.c | 15 + quantum/rgblight.h | 15 + quantum/serial_link/LICENSE | 2 - quantum/template/Makefile | 17 +- quantum/template/config.h | 2 +- quantum/template/keymaps/default/Makefile | 20 +- quantum/template/keymaps/default/config.h | 18 +- quantum/template/keymaps/default/keymap.c | 17 +- quantum/template/template.c | 15 + quantum/template/template.h | 15 + quantum/variable_trace.c | 16 + quantum/variable_trace.h | 16 + 89 files changed, 2172 insertions(+), 1293 deletions(-) delete mode 100644 doc/COPYING.GPLv2 delete mode 100644 doc/COPYING.GPLv3 create mode 100644 license_GPLv2.md create mode 100644 license_GPLv3.md create mode 100644 license_Modified_BSD.md delete mode 100644 quantum/keymap_extras/keymap_russian.h delete mode 100644 quantum/keymap_extras/keymap_unicode_cyrillic.h diff --git a/doc/COPYING.GPLv2 b/doc/COPYING.GPLv2 deleted file mode 100644 index d159169d..00000000 --- a/doc/COPYING.GPLv2 +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/doc/COPYING.GPLv3 b/doc/COPYING.GPLv3 deleted file mode 100644 index 94a9ed02..00000000 --- a/doc/COPYING.GPLv3 +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 3 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 . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/license_GPLv2.md b/license_GPLv2.md new file mode 100644 index 00000000..b017086e --- /dev/null +++ b/license_GPLv2.md @@ -0,0 +1,264 @@ +The GNU General Public License, Version 2, June 1991 (GPLv2) +============================================================ + +> Copyright (C) 1989, 1991 Free Software Foundation, Inc. +> 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + + +Preamble +-------- + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to most +of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software is +covered by the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for this service if you wish), +that you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that you know you can +do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny +you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for a +fee, you must give the recipients all the rights that you have. You must make +sure that they, too, receive or can get the source code. And you must show them +these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer +you this license which gives you legal permission to copy, distribute and/or +modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients to +know that what they have is not the original, so that any problems introduced by +others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We wish +to avoid the danger that redistributors of a free program will individually +obtain patent licenses, in effect making the program proprietary. To prevent +this, we have made it clear that any patent must be licensed for everyone's free +use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + + +Terms And Conditions For Copying, Distribution And Modification +--------------------------------------------------------------- + +**0.** This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms of +this General Public License. The "Program", below, refers to any such program or +work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or +translated into another language. (Hereinafter, translation is included without +limitation in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered by +this License; they are outside its scope. The act of running the Program is not +restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made by +running the Program). Whether that is true depends on what the Program does. + +**1.** You may copy and distribute verbatim copies of the Program's source code +as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the Program +a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at +your option offer warranty protection in exchange for a fee. + +**2.** You may modify your copy or copies of the Program or any portion of it, +thus forming a work based on the Program, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you also +meet all of these conditions: + +* **a)** You must cause the modified files to carry prominent notices stating + that you changed the files and the date of any change. + +* **b)** You must cause any work that you distribute or publish, that in whole + or in part contains or is derived from the Program or any part thereof, to + be licensed as a whole at no charge to all third parties under the terms of + this License. + +* **c)** If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use in the + most ordinary way, to print or display an announcement including an + appropriate copyright notice and a notice that there is no warranty (or + else, saying that you provide a warranty) and that users may redistribute + the program under these conditions, and telling the user how to view a copy + of this License. (Exception: if the Program itself is interactive but does + not normally print such an announcement, your work based on the Program is + not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, and +its terms, do not apply to those sections when you distribute them as separate +works. But when you distribute the same sections as part of a whole which is a +work based on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the entire whole, +and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on the +Program. + +In addition, mere aggregation of another work not based on the Program with the +Program (or with a work based on the Program) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +**3.** You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and 2 +above provided that you also do one of the following: + +* **a)** Accompany it with the complete corresponding machine-readable source + code, which must be distributed under the terms of Sections 1 and 2 above on + a medium customarily used for software interchange; or, + +* **b)** Accompany it with a written offer, valid for at least three years, to + give any third party, for a charge no more than your cost of physically + performing source distribution, a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + +* **c)** Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed only for + noncommercial distribution and only if you received the program in object + code or executable form with such an offer, in accord with Subsection b + above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all the +source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code distributed +need not include anything that is normally distributed (in either source or +binary form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component itself +accompanies the executable. + +If distribution of executable or object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the source code +from the same place counts as distribution of the source code, even though third +parties are not compelled to copy the source along with the object code. + +**4.** You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, or +rights, from you under this License will not have their licenses terminated so +long as such parties remain in full compliance. + +**5.** You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute the +Program or its derivative works. These actions are prohibited by law if you do +not accept this License. Therefore, by modifying or distributing the Program (or +any work based on the Program), you indicate your acceptance of this License to +do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +**6.** Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these terms and +conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties to this License. + +**7.** If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution of +the Program by all those who receive copies directly or indirectly through you, +then the only way you could satisfy both it and this License would be to refrain +entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and the +section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +**8.** If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original copyright +holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In such +case, this License incorporates the limitation as if written in the body of this +License. + +**9.** The Free Software Foundation may publish revised and/or new versions of +the General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +a version number of this License which applies to it and "any later version", +you have the option of following the terms and conditions either of that version +or of any later version published by the Free Software Foundation. If the +Program does not specify a version number of this License, you may choose any +version ever published by the Free Software Foundation. + +**10.** If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status of +all derivatives of our free software and of promoting the sharing and reuse of +software generally. + + +No Warranty +----------- + +**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM +"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA +BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. diff --git a/license_GPLv3.md b/license_GPLv3.md new file mode 100644 index 00000000..2061be2b --- /dev/null +++ b/license_GPLv3.md @@ -0,0 +1,656 @@ +The GNU General Public License, Version 3, 29 June 2007 (GPLv3) +=============================================================== + +> Copyright © 2007 +> Free Software Foundation, Inc. +> <> + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + + +Preamble +-------- + +The GNU General Public License is a free, copyleft license for software and +other kinds of works. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, the GNU General +Public License is intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its users. +We, the Free Software Foundation, use the GNU General Public License for most of +our software; it applies also to any other work released this way by its +authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for them if you wish), that you +receive source code or can get it if you want it, that you can change the +software or use pieces of it in new free programs, and that you know you can do +these things. + +To protect your rights, we need to prevent others from denying you these rights +or asking you to surrender the rights. Therefore, you have certain +responsibilities if you distribute copies of the software, or if you modify it: +responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a +fee, you must pass on to the recipients the same freedoms that you received. You +must make sure that they, too, receive or can get the source code. And you must +show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal +permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there +is no warranty for this free software. For both users' and authors' sake, the +GPL requires that modified versions be marked as changed, so that their problems +will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified +versions of the software inside them, although the manufacturer can do so. This +is fundamentally incompatible with the aim of protecting users' freedom to +change the software. The systematic pattern of such abuse occurs in the area of +products for individuals to use, which is precisely where it is most +unacceptable. Therefore, we have designed this version of the GPL to prohibit +the practice for those products. If such problems arise substantially in other +domains, we stand ready to extend this provision to those domains in future +versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States +should not allow patents to restrict development and use of software on +general-purpose computers, but in those that do, we wish to avoid the special +danger that patents applied to a free program could make it effectively +proprietary. To prevent this, the GPL assures that patents cannot be used to +render the program non-free. + +The precise terms and conditions for copying, distribution and modification +follow. + + +TERMS AND CONDITIONS +-------------------- + + +### 0. Definitions. + +"This License refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, +such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. Each +licensee is addressed as "you". "Licensees" and "recipients" may be individuals +or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in a +fashion requiring copyright permission, other than the making of an exact copy. +The resulting work is called a "modified version" of the earlier work or a work +"based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the +Program. + +To "propagate" a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under applicable +copyright law, except executing it on a computer or modifying a private copy. +Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other parties to +make or receive copies. Mere interaction with a user through a computer network, +with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the extent +that it includes a convenient and prominently visible feature that (1) displays +an appropriate copyright notice, and (2) tells the user that there is no +warranty for the work (except to the extent that warranties are provided), that +licensees may convey the work under this License, and how to view a copy of this +License. If the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + +### 1. Source Code. + +The "source code" for a work means the preferred form of the work for making +modifications to it. "Object code" means any non-source form of a work. + +A "Standard Interface" means an interface that either is an official standard +defined by a recognized standards body, or, in the case of interfaces specified +for a particular programming language, one that is widely used among developers +working in that language. + +The "System Libraries" of an executable work include anything, other than the +work as a whole, that (a) is included in the normal form of packaging a Major +Component, but which is not part of that Major Component, and (b) serves only to +enable use of the work with that Major Component, or to implement a Standard +Interface for which an implementation is available to the public in source code +form. A "Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system (if any) on +which the executable work runs, or a compiler used to produce the work, or an +object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source +code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. +However, it does not include the work's System Libraries, or general-purpose +tools or generally available free programs which are used unmodified in +performing those activities but which are not part of the work. For example, +Corresponding Source includes interface definition files associated with source +files for the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, such as by +intimate data communication or control flow between those subprograms and other +parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + + +### 2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on +the Program, and are irrevocable provided the stated conditions are met. This +License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License only +if the output, given its content, constitutes a covered work. This License +acknowledges your rights of fair use or other equivalent, as provided by +copyright law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all +material for which you do not control copyright. Those thus making or running +the covered works for you must do so exclusively on your behalf, under your +direction and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions +stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + +### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure under +any applicable law fulfilling obligations under article 11 of the WIPO copyright +treaty adopted on 20 December 1996, or similar laws prohibiting or restricting +circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention is +effected by exercising rights under this License with respect to the covered +work, and you disclaim any intention to limit operation or modification of the +work as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. + + +### 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, +in any medium, provided that you conspicuously and appropriately publish on each +copy an appropriate copyright notice; keep intact all notices stating that this +License and any non-permissive terms added in accord with section 7 apply to the +code; keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may +offer support or warranty protection for a fee. + + +### 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it +from the Program, in the form of source code under the terms of section 4, +provided that you also meet all of these conditions: + +* **a)** The work must carry prominent notices stating that you modified it, + and giving a relevant date. + +* **b)** The work must carry prominent notices stating that it is released + under this License and any conditions added under section 7. This + requirement modifies the requirement in section 4 to "keep intact all + notices". + +* **c)** You must license the entire work, as a whole, under this License to + anyone who comes into possession of a copy. This License will therefore + apply, along with any applicable section 7 additional terms, to the whole of + the work, and all its parts, regardless of how they are packaged. This + License gives no permission to license the work in any other way, but it + does not invalidate such permission if you have separately received it. + +* **d)** If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your work need not + make them do so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are +not combined with it such as to form a larger program, in or on a volume of +a storage or distribution medium, is called an "aggregate" if the +compilation and its resulting copyright are not used to limit the access or +legal rights of the compilation's users beyond what the individual works +permit. Inclusion of a covered work in an aggregate does not cause this +License to apply to the other parts of the aggregate. + + +### 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 +and 5, provided that you also convey the machine-readable Corresponding Source +under the terms of this License, in one of these ways: + +* **a)** Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the Corresponding + Source fixed on a durable physical medium customarily used for software + interchange. + +* **b)** Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a written offer, + valid for at least three years and valid for as long as you offer spare + parts or customer support for that product model, to give anyone who + possesses the object code either (1) a copy of the Corresponding Source for + all the software in the product that is covered by this License, on a + durable physical medium customarily used for software interchange, for a + price no more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the Corresponding Source from a + network server at no charge. + +* **c)** Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This alternative is + allowed only occasionally and noncommercially, and only if you received the + object code with such an offer, in accord with subsection 6b. + +* **d)** Convey the object code by offering access from a designated place + (gratis or for a charge), and offer equivalent access to the Corresponding + Source in the same way through the same place at no further charge. You need + not require recipients to copy the Corresponding Source along with the + object code. If the place to copy the object code is a network server, the + Corresponding Source may be on a different server (operated by you or a + third party) that supports equivalent copying facilities, provided you + maintain clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the Corresponding + Source, you remain obligated to ensure that it is available for as long as + needed to satisfy these requirements. + +* **e)** Convey the object code using peer-to-peer transmission, provided you + inform other peers where the object code and Corresponding Source of the + work are being offered to the general public at no charge under subsection + 6d. + +A separable portion of the object code, whose source code is excluded from +the Corresponding Source as a System Library, need not be included in +conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, or +household purposes, or (2) anything designed or sold for incorporation into +a dwelling. In determining whether a product is a consumer product, doubtful +cases shall be resolved in favor of coverage. For a particular product +received by a particular user, "normally used" refers to a typical or common +use of that class of product, regardless of the status of the particular +user or of the way in which the particular user actually uses, or expects or +is expected to use, the product. A product is a consumer product regardless +of whether the product has substantial commercial, industrial or non- +consumer uses, unless such uses represent the only significant mode of use +of the product. + +"Installation Information" for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute +modified versions of a covered work in that User Product from a modified +version of its Corresponding Source. The information must suffice to ensure +that the continued functioning of the modified object code is in no case +prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as part of +a transaction in which the right of possession and use of the User Product +is transferred to the recipient in perpetuity or for a fixed term +(regardless of how the transaction is characterized), the Corresponding +Source conveyed under this section must be accompanied by the Installation +Information. But this requirement does not apply if neither you nor any +third party retains the ability to install modified object code on the User +Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates for +a work that has been modified or installed by the recipient, or for the User +Product in which it has been modified or installed. Access to a network may +be denied when the modification itself materially and adversely affects the +operation of the network or violates the rules and protocols for +communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in +accord with this section must be in a format that is publicly documented +(and with an implementation available to the public in source code form), +and must require no special password or key for unpacking, reading or +copying. + + +### 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this License by +making exceptions from one or more of its conditions. Additional permissions +that are applicable to the entire Program shall be treated as though they were +included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part may +be used separately under those permissions, but the entire Program remains +governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added by +you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add to a +covered work, you may (if authorized by the copyright holders of that material) +supplement the terms of this License with terms: + +* **a)** Disclaiming warranty or limiting liability differently from the terms + of sections 15 and 16 of this License; or + +* **b)** Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal Notices + displayed by works containing it; or + +* **c)** Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in reasonable + ways as different from the original version; or + +* **d)** Limiting the use for publicity purposes of names of licensors or + authors of the material; or + +* **e)** Declining to grant rights under trademark law for use of some trade + names, trademarks, or service marks; or + +* **f)** Requiring indemnification of licensors and authors of that material + by anyone who conveys the material (or modified versions of it) with + contractual assumptions of liability to the recipient, for any liability + that these contractual assumptions directly impose on those licensors and + authors. + +All other non-permissive additional terms are considered "further restrictions" +within the meaning of section 10. If the Program as you received it, or any part +of it, contains a notice stating that it is governed by this License along with +a term that is a further restriction, you may remove that term. If a license +document contains a further restriction but permits relicensing or conveying +under this License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does not survive +such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, +in the relevant source files, a statement of the additional terms that apply to +those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a +separately written license, or stated as exceptions; the above requirements +apply either way. + + +### 8. Termination. + +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, and +will automatically terminate your rights under this License (including any +patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a +particular copyright holder is reinstated (a) provisionally, unless and until +the copyright holder explicitly and finally terminates your license, and (b) +permanently, if the copyright holder fails to notify you of the violation by +some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated +permanently if the copyright holder notifies you of the violation by some +reasonable means, this is the first time you have received notice of violation +of this License (for any work) from that copyright holder, and you cure the +violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of +parties who have received copies or rights from you under this License. If your +rights have been terminated and not permanently reinstated, you do not qualify +to receive new licenses for the same material under section 10. + + +### 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy of +the Program. Ancillary propagation of a covered work occurring solely as a +consequence of using peer-to-peer transmission to receive a copy likewise does +not require acceptance. However, nothing other than this License grants you +permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or +propagating a covered work, you indicate your acceptance of this License to do +so. + + +### 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a +license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance by +third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered work results +from an entity transaction, each party to that transaction who receives a copy +of the work also receives whatever licenses to the work the party's predecessor +in interest had or could give under the previous paragraph, plus a right to +possession of the Corresponding Source of the work from the predecessor in +interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under this +License, and you may not initiate litigation (including a cross-claim or +counterclaim in a lawsuit) alleging that any patent claim is infringed by +making, using, selling, offering for sale, or importing the Program or any +portion of it. + + +### 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this License of +the Program or a work on which the Program is based. The work thus licensed is +called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or +controlled by the contributor, whether already acquired or hereafter acquired, +that would be infringed by some manner, permitted by this License, of making, +using, or selling its contributor version, but do not include claims that would +be infringed only as a consequence of further modification of the contributor +version. For purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents of +its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement +or commitment, however denominated, not to enforce a patent (such as an express +permission to practice a patent or covenant not to sue for patent infringement). +To "grant" such a patent license to a party means to make such an agreement or +commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free of +charge and under the terms of this License, through a publicly available network +server or other readily accessible means, then you must either (1) cause the +Corresponding Source to be so available, or (2) arrange to deprive yourself of +the benefit of the patent license for this particular work, or (3) arrange, in a +manner consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have actual +knowledge that, but for the patent license, your conveying the covered work in a +country, or your recipient's use of the covered work in a country, would +infringe one or more identifiable patents in that country that you have reason +to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you +convey, or propagate by procuring conveyance of, a covered work, and grant a +patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients of +the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope of +its coverage, prohibits the exercise of, or is conditioned on the non- exercise +of one or more of the rights that are specifically granted under this License. +You may not convey a covered work if you are a party to an arrangement with a +third party that is in the business of distributing software, under which you +make payment to the third party based on the extent of your activity of +conveying the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by you (or +copies made from those copies), or (b) primarily for and in connection with +specific products or compilations that contain the covered work, unless you +entered into that arrangement, or that patent license was granted, prior to 28 +March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available to you +under applicable patent law. + + +### 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse +you from the conditions of this License. If you cannot convey a covered work so +as to satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not convey it at all. For +example, if you agree to terms that obligate you to collect a royalty for +further conveying from those to whom you convey the Program, the only way you +could satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + + +### 13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to link +or combine any covered work with a work licensed under version 3 of the GNU +Affero General Public License into a single combined work, and to convey the +resulting work. The terms of this License will continue to apply to the part +which is the covered work, but the special requirements of the GNU Affero +General Public License, section 13, concerning interaction through a network +will apply to the combination as such. + + +### 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU +General Public License from time to time. Such new versions will be similar in +spirit to the present version, but may differ in detail to address new problems +or concerns. + +Each version is given a distinguishing version number. If the Program specifies +that a certain numbered version of the GNU General Public License "or any later +version" applies to it, you have the option of following the terms and +conditions either of that numbered version or of any later version published by +the Free Software Foundation. If the Program does not specify a version number +of the GNU General Public License, you may choose any version ever published by +the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the +GNU General Public License can be used, that proxy's public statement of +acceptance of a version permanently authorizes you to choose that version for +the Program. + +Later license versions may give you additional or different permissions. +However, no additional obligations are imposed on any author or copyright holder +as a result of your choosing to follow a later version. + + +### 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER +PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE +QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + +### 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS +PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE +THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY +HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +### 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot +be given local legal effect according to their terms, reviewing courts shall +apply local law that most closely approximates an absolute waiver of all civil +liability in connection with the Program, unless a warranty or assumption of +liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + + +How to Apply These Terms to Your New Programs +--------------------------------------------- + +If you develop a new program, and you want it to be of the greatest possible use +to the public, the best way to achieve this is to make it free software which +everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively state the exclusion of +warranty; and each file should have at least the "copyright" line and a pointer +to where the full notice is found. + + + Copyright (C) + + 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 3 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 . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like +this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. + This is free software, and you are welcome to redistribute it under certain + conditions; type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the appropriate +parts of the General Public License. Of course, your program's commands might be +different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, if +any, to sign a "copyright disclaimer" for the program, if necessary. For more +information on this, and how to apply and follow the GNU GPL, see +<>. + +The GNU General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may consider +it more useful to permit linking proprietary applications with the library. If +this is what you want to do, use the GNU Lesser General Public License instead +of this License. But first, please read +<>. diff --git a/license_Modified_BSD.md b/license_Modified_BSD.md new file mode 100644 index 00000000..3d5f00f2 --- /dev/null +++ b/license_Modified_BSD.md @@ -0,0 +1,32 @@ +This software is licensed with a Modified BSD License. + +All of this is supposed to be Free Software, Open Source, DFSG-free, +GPL-compatible, and OK to use in both free and proprietary applications. +Additions and corrections to this file are welcome. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +* Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/quantum/analog.c b/quantum/analog.c index 49b84ee0..1ec38df7 100644 --- a/quantum/analog.c +++ b/quantum/analog.c @@ -1,3 +1,19 @@ +/* Copyright 2015 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + // Simple analog to digitial conversion #include diff --git a/quantum/analog.h b/quantum/analog.h index 9b95a93b..8d93de7d 100644 --- a/quantum/analog.h +++ b/quantum/analog.h @@ -1,3 +1,19 @@ +/* Copyright 2015 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #ifndef _analog_h_included__ #define _analog_h_included__ diff --git a/quantum/api.c b/quantum/api.c index 6a7c0a43..52dfe23e 100644 --- a/quantum/api.c +++ b/quantum/api.c @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "api.h" #include "quantum.h" @@ -176,4 +192,4 @@ void process_api(uint16_t length, uint8_t * data) { // #endif } -} \ No newline at end of file +} diff --git a/quantum/api.h b/quantum/api.h index 00dcdb89..efc0ddca 100644 --- a/quantum/api.h +++ b/quantum/api.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef _API_H_ #define _API_H_ @@ -56,4 +72,4 @@ bool process_api_keyboard(uint8_t length, uint8_t * data); __attribute__ ((weak)) bool process_api_user(uint8_t length, uint8_t * data); -#endif \ No newline at end of file +#endif diff --git a/quantum/api/api_sysex.c b/quantum/api/api_sysex.c index 868f854b..6a2ee901 100644 --- a/quantum/api/api_sysex.c +++ b/quantum/api/api_sysex.c @@ -1,3 +1,18 @@ +/* Copyright 2016 Jack Humbert, Fred Sundvik + * + * 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 "api_sysex.h" #include "sysex_tools.h" #include "print.h" diff --git a/quantum/api/api_sysex.h b/quantum/api/api_sysex.h index b947b60e..a23f00f5 100644 --- a/quantum/api/api_sysex.h +++ b/quantum/api/api_sysex.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef _API_SYSEX_H_ #define _API_SYSEX_H_ @@ -7,4 +23,4 @@ void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, #define SEND_BYTES(mt, dt, b, l) send_bytes_sysex(mt, dt, b, l) -#endif \ No newline at end of file +#endif diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index e1e81fd2..59707361 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -1,3 +1,18 @@ +/* Copyright 2016 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 //#include diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 47f326ea..27fdc2ab 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -1,3 +1,18 @@ +/* Copyright 2016 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 . + */ #ifndef AUDIO_H #define AUDIO_H @@ -88,4 +103,4 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) bool is_playing_notes(void); -#endif \ No newline at end of file +#endif diff --git a/quantum/audio/audio_pwm.c b/quantum/audio/audio_pwm.c index f820eec1..ded86ede 100644 --- a/quantum/audio/audio_pwm.c +++ b/quantum/audio/audio_pwm.c @@ -1,3 +1,18 @@ +/* Copyright 2016 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 //#include diff --git a/quantum/audio/luts.c b/quantum/audio/luts.c index 9f3de9a0..57f2d592 100644 --- a/quantum/audio/luts.c +++ b/quantum/audio/luts.c @@ -1,3 +1,19 @@ +/* Copyright 2016 IBNobody + * + * 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 #include diff --git a/quantum/audio/luts.h b/quantum/audio/luts.h index 7df3078a..155e34e8 100644 --- a/quantum/audio/luts.h +++ b/quantum/audio/luts.h @@ -1,3 +1,19 @@ +/* Copyright 2016 IBNobody + * + * 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 #include @@ -12,4 +28,4 @@ extern const float vibrato_lut[VIBRATO_LUT_LENGTH]; extern const uint16_t frequency_lut[FREQUENCY_LUT_LENGTH]; -#endif /* LUTS_H */ \ No newline at end of file +#endif /* LUTS_H */ diff --git a/quantum/audio/musical_notes.h b/quantum/audio/musical_notes.h index b08d16a6..a3aaa2f1 100644 --- a/quantum/audio/musical_notes.h +++ b/quantum/audio/musical_notes.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef MUSICAL_NOTES_H #define MUSICAL_NOTES_H @@ -214,4 +230,4 @@ #define NOTE_BF8 NOTE_AS8 -#endif \ No newline at end of file +#endif diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h index 400915db..3bf20333 100644 --- a/quantum/audio/song_list.h +++ b/quantum/audio/song_list.h @@ -1,3 +1,18 @@ +/* Copyright 2016 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 "musical_notes.h" #ifndef SONG_LIST_H diff --git a/quantum/audio/voices.c b/quantum/audio/voices.c index c2edb75f..54ebd423 100644 --- a/quantum/audio/voices.c +++ b/quantum/audio/voices.c @@ -1,3 +1,18 @@ +/* Copyright 2016 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 "voices.h" #include "audio.h" #include "stdlib.h" diff --git a/quantum/audio/voices.h b/quantum/audio/voices.h index 52f7e006..9403a6b5 100644 --- a/quantum/audio/voices.h +++ b/quantum/audio/voices.h @@ -1,3 +1,18 @@ +/* Copyright 2016 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 #include @@ -32,4 +47,4 @@ void set_voice(voice_type v); void voice_iterate(void); void voice_deiterate(void); -#endif \ No newline at end of file +#endif diff --git a/quantum/audio/wave.h b/quantum/audio/wave.h index 6ebc3485..f15615dd 100644 --- a/quantum/audio/wave.h +++ b/quantum/audio/wave.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 #include @@ -262,4 +278,4 @@ const uint8_t sinewave[] PROGMEM= //2048 values 0x76,0x77,0x77,0x77,0x78,0x78,0x78,0x79, 0x79,0x7a,0x7a,0x7a,0x7b,0x7b,0x7c,0x7c, 0x7c,0x7d,0x7d,0x7e,0x7e,0x7e,0x7f,0x7f -}; \ No newline at end of file +}; diff --git a/quantum/config_common.h b/quantum/config_common.h index 28f68b9c..c88e02d9 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -1,3 +1,19 @@ +/* Copyright 2015-2017 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 . + */ + #ifndef CONFIG_DEFINITIONS_H #define CONFIG_DEFINITIONS_H diff --git a/quantum/dynamic_macro.h b/quantum/dynamic_macro.h index e6dbc5b9..64093f29 100644 --- a/quantum/dynamic_macro.h +++ b/quantum/dynamic_macro.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + /* Author: Wojciech Siewierski < wojciech dot siewierski at onet dot pl > */ #ifndef DYNAMIC_MACROS_H #define DYNAMIC_MACROS_H diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index 6d90781a..4f7bc525 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "keycode_config.h" extern keymap_config_t keymap_config; @@ -71,4 +87,4 @@ uint16_t keycode_config(uint16_t keycode) { default: return keycode; } -} \ No newline at end of file +} diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h index c15b0d32..293fefec 100644 --- a/quantum/keycode_config.h +++ b/quantum/keycode_config.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "eeconfig.h" #include "keycode.h" diff --git a/quantum/keymap.h b/quantum/keymap.h index c000d2da..5d64be19 100644 --- a/quantum/keymap.h +++ b/quantum/keymap.h @@ -1,5 +1,5 @@ /* -Copyright 2012,2013 Jun Wako +Copyright 2012-2016 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 diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 002eabd8..6cf4f031 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -1,5 +1,5 @@ /* -Copyright 2012,2013 Jun Wako +Copyright 2012-2017 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 diff --git a/quantum/keymap_extras/keymap_bepo.h b/quantum/keymap_extras/keymap_bepo.h index e5ef3955..013559e9 100644 --- a/quantum/keymap_extras/keymap_bepo.h +++ b/quantum/keymap_extras/keymap_bepo.h @@ -1,3 +1,18 @@ +/* Copyright 2016 Didier Loiseau + * + * 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 . + */ /* Keymap macros for the French BÉPO layout - http://bepo.fr */ #ifndef KEYMAP_BEPO_H #define KEYMAP_BEPO_H diff --git a/quantum/keymap_extras/keymap_canadian_multilingual.h b/quantum/keymap_extras/keymap_canadian_multilingual.h index 0bc20c7b..1d45bee3 100644 --- a/quantum/keymap_extras/keymap_canadian_multilingual.h +++ b/quantum/keymap_extras/keymap_canadian_multilingual.h @@ -1,3 +1,18 @@ +/* Copyright 2016 Didier Loiseau + * + * 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 KEYMAP_CANADIAN_MULTILINGUAG_H #define KEYMAP_CANADIAN_MULTILINGUAG_H diff --git a/quantum/keymap_extras/keymap_colemak.h b/quantum/keymap_extras/keymap_colemak.h index b8d61574..2d3f9c06 100644 --- a/quantum/keymap_extras/keymap_colemak.h +++ b/quantum/keymap_extras/keymap_colemak.h @@ -1,3 +1,18 @@ +/* Copyright 2015-2016 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 . + */ #ifndef KEYMAP_COLEMAK_H #define KEYMAP_COLEMAK_H diff --git a/quantum/keymap_extras/keymap_dvorak.h b/quantum/keymap_extras/keymap_dvorak.h index a0feed85..b1d5604b 100644 --- a/quantum/keymap_extras/keymap_dvorak.h +++ b/quantum/keymap_extras/keymap_dvorak.h @@ -1,3 +1,18 @@ +/* Copyright 2015-2016 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 . + */ #ifndef KEYMAP_DVORAK_H #define KEYMAP_DVORAK_H diff --git a/quantum/keymap_extras/keymap_dvp.h b/quantum/keymap_extras/keymap_dvp.h index 83f49a52..50e2d1f4 100644 --- a/quantum/keymap_extras/keymap_dvp.h +++ b/quantum/keymap_extras/keymap_dvp.h @@ -1,3 +1,19 @@ +/* Copyright 2016 Artyom Mironov + * + * 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 KEYMAP_DVP_H #define KEYMAP_DVP_H diff --git a/quantum/keymap_extras/keymap_fr_ch.h b/quantum/keymap_extras/keymap_fr_ch.h index 87d4bb24..c0ca832a 100644 --- a/quantum/keymap_extras/keymap_fr_ch.h +++ b/quantum/keymap_extras/keymap_fr_ch.h @@ -1,3 +1,18 @@ +/* Copyright 2016 Vincent Pochet + * + * 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 KEYMAP_FR_CH #define KEYMAP_FR_CH diff --git a/quantum/keymap_extras/keymap_french.h b/quantum/keymap_extras/keymap_french.h index 401bbdf6..3308dc5f 100644 --- a/quantum/keymap_extras/keymap_french.h +++ b/quantum/keymap_extras/keymap_french.h @@ -1,3 +1,18 @@ +/* Copyright 2015-2016 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 . + */ #ifndef KEYMAP_FRENCH_H #define KEYMAP_FRENCH_H diff --git a/quantum/keymap_extras/keymap_french_osx.h b/quantum/keymap_extras/keymap_french_osx.h index 004d73ee..ecade3fe 100644 --- a/quantum/keymap_extras/keymap_french_osx.h +++ b/quantum/keymap_extras/keymap_french_osx.h @@ -1,3 +1,18 @@ +/* Copyright 2016 Sébastien Pérochon + * + * 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 KEYMAP_FRENCH_OSX_H #define KEYMAP_FRENCH_OSX_H @@ -74,4 +89,4 @@ #define FR_PIPE LSFT(LALT(KC_L)) #define FR_BSLS LSFT(LALT(FR_COLN)) -#endif \ No newline at end of file +#endif diff --git a/quantum/keymap_extras/keymap_german.h b/quantum/keymap_extras/keymap_german.h index 7e2e0ed4..e007c26e 100644 --- a/quantum/keymap_extras/keymap_german.h +++ b/quantum/keymap_extras/keymap_german.h @@ -1,3 +1,19 @@ +/* Copyright 2015-2016 Matthias Schmidtt + * + * 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 KEYMAP_GERMAN #define KEYMAP_GERMAN diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h index b66d582a..8332e00a 100644 --- a/quantum/keymap_extras/keymap_german_ch.h +++ b/quantum/keymap_extras/keymap_german_ch.h @@ -1,3 +1,18 @@ +/* Copyright 2016 heartsekai + * + * 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 KEYMAP_SWISS_GERMAN #define KEYMAP_SWISS_GERMAN diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h index f63f0661..798bb757 100644 --- a/quantum/keymap_extras/keymap_german_osx.h +++ b/quantum/keymap_extras/keymap_german_osx.h @@ -1,3 +1,18 @@ +/* Copyright 2016 Stephen Bösebeck + * + * 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 KEYMAP_GERMAN_OSX #define KEYMAP_GERMAN_OSX diff --git a/quantum/keymap_extras/keymap_jp.h b/quantum/keymap_extras/keymap_jp.h index e81b5952..fb74bce8 100644 --- a/quantum/keymap_extras/keymap_jp.h +++ b/quantum/keymap_extras/keymap_jp.h @@ -1,4 +1,19 @@ -/* JP106-layout (Japanese Standard) +/* Copyright 2016 h-youhei + * + * 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 . + * + * JP106-layout (Japanese Standard) * * For more information, see * http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html diff --git a/quantum/keymap_extras/keymap_neo2.h b/quantum/keymap_extras/keymap_neo2.h index 80439af3..174f4a6e 100644 --- a/quantum/keymap_extras/keymap_neo2.h +++ b/quantum/keymap_extras/keymap_neo2.h @@ -1,3 +1,18 @@ +/* Copyright 2016 Matthias Schmitt + * + * 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 KEYMAP_NEO2 #define KEYMAP_NEO2 diff --git a/quantum/keymap_extras/keymap_nordic.h b/quantum/keymap_extras/keymap_nordic.h index 9b0ef35c..6b34db55 100644 --- a/quantum/keymap_extras/keymap_nordic.h +++ b/quantum/keymap_extras/keymap_nordic.h @@ -1,3 +1,18 @@ +/* Copyright 2015-2016 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 . + */ #ifndef KEYMAP_NORDIC_H #define KEYMAP_NORDIC_H diff --git a/quantum/keymap_extras/keymap_norwegian.h b/quantum/keymap_extras/keymap_norwegian.h index 5c4e8c49..b7128973 100644 --- a/quantum/keymap_extras/keymap_norwegian.h +++ b/quantum/keymap_extras/keymap_norwegian.h @@ -1,3 +1,18 @@ +/* Copyright 2016 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 . + */ #ifndef KEYMAP_NORWEGIAN_H #define KEYMAP_NORWEGIAN_H diff --git a/quantum/keymap_extras/keymap_plover.h b/quantum/keymap_extras/keymap_plover.h index 9b88f7d8..de6d8c53 100644 --- a/quantum/keymap_extras/keymap_plover.h +++ b/quantum/keymap_extras/keymap_plover.h @@ -1,3 +1,18 @@ +/* Copyright 2016 James Kay + * + * 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 KEYMAP_PLOVER_H #define KEYMAP_PLOVER_H diff --git a/quantum/keymap_extras/keymap_russian.h b/quantum/keymap_extras/keymap_russian.h deleted file mode 100644 index 237e9abd..00000000 --- a/quantum/keymap_extras/keymap_russian.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef KEYMAP_RUSSIAN_H -#define KEYMAP_RUSSIAN_H - -#include "keymap.h" - -// Normal Chracters // reg SHIFT -#define RU_A KC_F // а and А -#define RU_BE KC_COMM // б and Б -#define RU_VE KC_D // в and В -#define RU_GHE KC_U // г and Г -#define RU_DE KC_L // д and Д -#define RU_IE KC_T // е and Е -#define RU_IO KC_GRV // ё and Ё -#define RU_ZHE KC_SCLN // ж and Ж -#define RU_ZE KC_P // з and З -#define RU_I KC_B // и and И -#define RU_SRT_I KC_Q // й and Й -#define RU_KA KC_R // к and К -#define RU_EL KC_K // л and Л -#define RU_EM KC_V // м and М -#define RU_EN KC_Y // н and Н -#define RU_O KC_J // о and О -#define RU_PE KC_G // п and П -#define RU_ER KC_H // р and Р -#define RU_ES KC_C // с and С -#define RU_TE KC_N // т and Т -#define RU_U KC_E // у and У -#define RU_EF KC_A // ф and Ф -#define RU_HA KC_LBRC // х and Х -#define RU_TSE KC_W // ц and Ц -#define RU_CHE KC_X // ч and Ч -#define RU_SHA KC_I // ш and Ш -#define RU_SHCHA KC_O // щ and Щ -#define RU_HSIGN KC_RBRC // ъ and Ъ -#define RU_YERU KC_S // ы and Ы -#define RU_SSIGN KC_M // ь and Ь -#define RU_E KC_QUOT // э and Э -#define RU_YU KC_DOT // ю and Ю -#define RU_YA KC_Z // я and Я - -#define RU_1 KC_1 // 1 and ! -#define RU_2 KC_2 // 2 and " -#define RU_3 KC_3 // 3 and № -#define RU_4 KC_4 // 4 and ; -#define RU_5 KC_5 // 5 and % -#define RU_6 KC_6 // 6 and : -#define RU_7 KC_7 // 7 and ? -#define RU_8 KC_8 // 8 and * -#define RU_9 KC_9 // 9 and ( -#define RU_0 KC_0 // 0 and ) - -#define RU_MINS KC_MINS // - and _ -#define RU_EQL KC_EQL // = and + -#define RU_BSLS KC_BSLS // \ and / -#define RU_DOT KC_SLSH // . and , - -// Shifted Chracters -#define RU_EXLM LSFT(RU_1) // ! -#define RU_DQUT LSFT(RU_2) // " -#define RU_NMRO LSFT(RU_3) // № -#define RU_SCLN LSFT(RU_4) // ; -#define RU_PERC LSFT(RU_5) // % -#define RU_COLN LSFT(RU_6) // : -#define RU_QUES LSFT(RU_7) // ? -#define RU_ASTR LSFT(RU_8) // * -#define RU_LPRN LSFT(RU_9) // ( -#define RU_RPRN LSFT(RU_0) // ) - -#define RU_UNDR LSFT(RU_MINS) // _ -#define RU_PLUS LSFT(RU_EQL) // + -#define RU_SLSH LSFT(RU_BSLS) // / -#define RU_COMM LSFT(RU_DOT) // , - -// Alt Gr-ed characters -#define RU_RUBL RALT(RU_8) // ₽ - -#endif diff --git a/quantum/keymap_extras/keymap_spanish.h b/quantum/keymap_extras/keymap_spanish.h index 4ba568af..3a5787e9 100644 --- a/quantum/keymap_extras/keymap_spanish.h +++ b/quantum/keymap_extras/keymap_spanish.h @@ -1,3 +1,18 @@ +/* Copyright 2015-2016 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 . + */ #ifndef KEYMAP_SPANISH_H #define KEYMAP_SPANISH_H diff --git a/quantum/keymap_extras/keymap_uk.h b/quantum/keymap_extras/keymap_uk.h index 00c87afc..9d02efe0 100644 --- a/quantum/keymap_extras/keymap_uk.h +++ b/quantum/keymap_extras/keymap_uk.h @@ -1,3 +1,18 @@ +/* Copyright 2015-2016 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 . + */ #ifndef KEYMAP_UK_H #define KEYMAP_UK_H diff --git a/quantum/keymap_extras/keymap_unicode_cyrillic.h b/quantum/keymap_extras/keymap_unicode_cyrillic.h deleted file mode 100644 index a40626d9..00000000 --- a/quantum/keymap_extras/keymap_unicode_cyrillic.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifndef KEYMAP_CYRILLIC_H -#define KEYMAP_CYRILLIC_H - -#include "keymap.h" - -/* - * This is based off of - * https://en.wikipedia.org/wiki/Cyrillic_script - * - * Unicode is iffy, a software implementation is preferred - */ - -// Capital Char russian/ukrainian/bulgarian -#define CY_A UC(0x0410) // А rus ukr bul -#define CY_BE UC(0x0411) // Б rus ukr bul -#define CY_VE UC(0x0412) // В rus ukr bul -#define CY_GHE UC(0x0413) // Г rus ukr bul -#define CY_GHEUP UC(0x0490) // Ґ ukr -#define CY_DE UC(0x0414) // Д rus ukr bul -#define CY_DJE UC(0x0402) // Ђ -#define CY_GJE UC(0x0403) // Ѓ -#define CY_IE UC(0x0415) // Е rus ukr bul -#define CY_IO UC(0x0401) // Ё rus -#define CY_UIE UC(0x0404) // Є ukr -#define CY_ZHE UC(0x0416) // Ж rus ukr bul -#define CY_ZE UC(0x0417) // З rus ukr bul -#define CY_DZE UC(0x0405) // Ѕ -#define CY_I UC(0x0418) // И rus ukr bul -#define CY_B_U_I UC(0x0406) // І ukr -#define CY_YI UC(0x0407) // Ї ukr -#define CY_SRT_I UC(0x0419) // Й rus ukr bul -#define CY_JE UC(0x0408) // Ј -#define CY_KA UC(0x041a) // К rus ukr bul -#define CY_EL UC(0x041b) // Л rus ukr bul -#define CY_LJE UC(0x0409) // Љ -#define CY_EM UC(0x041c) // М rus ukr bul -#define CY_EN UC(0x041d) // Н rus ukr bul -#define CY_NJE UC(0x040a) // Њ -#define CY_O UC(0x041e) // О rus ukr bul -#define CY_PE UC(0x041f) // П rus ukr bul -#define CY_ER UC(0x0420) // Р rus ukr bul -#define CY_ES UC(0x0421) // С rus ukr bul -#define CY_TE UC(0x0422) // Т rus ukr bul -#define CY_TSHE UC(0x040b) // Ћ -#define CY_KJE UC(0x040c) // Ќ -#define CY_U UC(0x0423) // У rus ukr bul -#define CY_SRT_U UC(0x040e) // Ў -#define CY_EF UC(0x0424) // Ф rus ukr bul -#define CY_HA UC(0x0425) // Х rus bul -#define CY_TSE UC(0x0426) // Ц rus ukr bul -#define CY_CHE UC(0x0427) // Ч rus ukr bul -#define CY_DZHE UC(0x040f) // Џ -#define CY_SHA UC(0x0428) // Ш rus ukr bul -#define CY_SHCHA UC(0x0429) // Щ rus ukr bul -#define CY_HSIGN UC(0x042a) // Ъ rus bul -#define CY_YERU UC(0x042b) // Ы rus -#define CY_SSIGN UC(0x042c) // Ь rus ukr bul -#define CY_E UC(0x042d) // Э rus -#define CY_YU UC(0x042e) // Ю rus ukr bul -#define CY_YA UC(0x042f) // Я rus ukr bul -// Important Cyrillic non-Slavic letters -#define CY_PALOCHKA UC(0x04c0) // Ӏ -#define CY_SCHWA UC(0x04d8) // Ә -#define CY_GHE_S UC(0x0492) // Ғ -#define CY_ZE_D UC(0x0498) // Ҙ -#define CY_ES_D UC(0x04aa) // Ҫ -#define CY_BR_KA UC(0x04a0) // Ҡ -#define CY_ZHE_D UC(0x0496) // Җ -#define CY_KA_D UC(0x049a) // Қ -#define CY_EN_D UC(0x04a2) // Ң -#define CY_ENGHE UC(0x04a4) // Ҥ -#define CY_BRD_O UC(0x04e8) // Ө -#define CY_STR_U UC(0x04ae) // Ү -#define CY_S_U_S UC(0x04b0) // Ұ -#define CY_SHHA UC(0x04ba) // Һ -#define CY_HA_D UC(0x04b2) // Ҳ - - -// Small -#define CY_a UC(0x0430) // a rus ukr bul -#define CY_be UC(0x0431) // б rus ukr bul -#define CY_ve UC(0x0432) // в rus ukr bul -#define CY_ghe UC(0x0433) // г rus ukr bul -#define CY_gheup UC(0x0491) // ґ ukr -#define CY_de UC(0x0434) // д rus ukr bul -#define CY_dje UC(0x0452) // ђ -#define CY_gje UC(0x0453) // ѓ -#define CY_ie UC(0x0435) // е rus ukr bul -#define CY_io UC(0x0451) // ё rus -#define CY_uie UC(0x0454) // є ukr -#define CY_zhe UC(0x0436) // ж rus ukr bul -#define CY_ze UC(0x0437) // з rus ukr bul -#define CY_dze UC(0x0455) // ѕ -#define CY_i UC(0x0438) // и rus ukr bul -#define CY_b_u_i UC(0x0456) // і ukr -#define CY_yi UC(0x0457) // ї ukr -#define CY_srt_i UC(0x0439) // й rus ukr bul -#define CY_je UC(0x0458) // ј -#define CY_ka UC(0x043a) // к rus ukr bul -#define CY_el UC(0x043b) // л rus ukr bul -#define CY_lje UC(0x0459) // љ -#define CY_em UC(0x043c) // м rus ukr bul -#define CY_en UC(0x043d) // н rus ukr bul -#define CY_nje UC(0x045a) // њ -#define CY_o UC(0x043e) // о rus ukr bul -#define CY_pe UC(0x043f) // п rus ukr bul -#define CY_er UC(0x0440) // р rus ukr bul -#define CY_es UC(0x0441) // с rus ukr bul -#define CY_te UC(0x0442) // т rus ukr bul -#define CY_tshe UC(0x045b) // ћ -#define CY_kje UC(0x045c) // ќ -#define CY_u UC(0x0443) // у rus ukr bul -#define CY_srt_u UC(0x045e) // ў -#define CY_ef UC(0x0444) // ф rus ukr bul -#define CY_ha UC(0x0445) // х rus ukr bul -#define CY_tse UC(0x0446) // ц rus ukr bul -#define CY_che UC(0x0447) // ч rus ukr bul -#define CY_dzhe UC(0x045f) // џ -#define CY_sha UC(0x0448) // ш rus ukr bul -#define CY_shcha UC(0x0449) // щ rus ukr bul -#define CY_hsign UC(0x044a) // ъ rus bul -#define CY_yeru UC(0x044b) // ы rus -#define CY_ssign UC(0x044c) // ь rus ukr bul -#define CY_e UC(0x044d) // э rus -#define CY_yu UC(0x044e) // ю rus ukr bul -#define CY_ya UC(0x044f) // я rus ukr bul -// Important Cyrillic non-Slavic letters -#define CY_palochka UC(0x04cf) // ӏ -#define CY_schwa UC(0x04d9) // ә -#define CY_ghe_s UC(0x0493) // ғ -#define CY_ze_d UC(0x0499) // ҙ -#define CY_es_d UC(0x04ab) // ҫ -#define CY_br_ka UC(0x04a1) // ҡ -#define CY_zhe_d UC(0x0497) // җ -#define CY_ka_d UC(0x049b) // қ -#define CY_en_d UC(0x04a3) // ң -#define CY_enghe UC(0x04a5) // ҥ -#define CY_brd_o UC(0x04e9) // ө -#define CY_str_u UC(0x04af) // ү -#define CY_s_u_s UC(0x04b1) // ұ -#define CY_shha UC(0x04bb) // һ -#define CY_ha_d UC(0x04b3) // ҳ - - -// Extra -#define CY_slr_ve UC(0x1c80) // ᲀ CYRILLIC SMALL LETTER ROUNDED VE -#define CY_ll_de UC(0x1c81) // ᲁ CYRILLIC SMALL LETTER LONG-LEGGED DE -#define CY_ZEMLYA UC(0xa640) // Ꙁ CYRILLIC CAPITAL LETTER ZEMLYA -#define CY_zemlya UC(0xa641) // ꙁ CYRILLIC SMALL LETTER ZEMLYA -#define CY_RV_DZE UC(0xa644) // Ꙅ CYRILLIC CAPITAL LETTER REVERSED DZE -#define CY_rv_DZE UC(0xa645) // ꙅ CYRILLIC SMALL LETTER REVERSED DZE -#define CY_slw_es UC(0x1c83) // ᲃ CYRILLIC SMALL LETTER WIDE ES -#define CY_st_te UC(0x1c84) // ᲄ CYRILLIC SMALL LETTER TALL TE -#define CY_3l_te UC(0x1c85) // ᲅ CYRILLIC SMALL LETTER THREE-LEGGED TE -#define CY_thsign UC(0x1c86) // ᲆ CYRILLIC SMALL LETTER TALL HARD SIGN -#define CY_YERUBY UC(0xa650) // Ꙑ CYRILLIC CAPITAL LETTER YERU WITH BACK YER -#define CY_yeruby UC(0xa651) // ꙑ CYRILLIC SMALL LETTER YERU WITH BACK YER -#define CY_RUBL UC(0x20bd) // ₽ -#define CY_NMRO UC(0x2116) // № - -// The letters Zje and Sje are made for other letters and accent marks - -#endif diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c index 55bdd9cd..2506e3d8 100755 --- a/quantum/light_ws2812.c +++ b/quantum/light_ws2812.c @@ -7,7 +7,18 @@ * Jan 18th, 2014 v2.0b Initial Version * Nov 29th, 2015 v2.3 Added SK6812RGBW support * -* License: GNU GPL v2 (see License.txt) +* 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 "light_ws2812.h" diff --git a/quantum/light_ws2812.h b/quantum/light_ws2812.h index 2f78c20f..60924a0f 100755 --- a/quantum/light_ws2812.h +++ b/quantum/light_ws2812.h @@ -6,8 +6,18 @@ * * Please do not change this file! All configuration is handled in "ws2812_config.h" * - * License: GNU GPL v2 (see License.txt) - + + * 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 LIGHT_WS2812_H_ diff --git a/quantum/matrix.c b/quantum/matrix.c index ac523482..5337e262 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -1,6 +1,5 @@ /* -Copyright 2012 Jun Wako -Copyright 2014 Jack Humbert +Copyright 2012-2017 Jun Wako, 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 diff --git a/quantum/pincontrol.h b/quantum/pincontrol.h index 36ce29ef..d77977eb 100644 --- a/quantum/pincontrol.h +++ b/quantum/pincontrol.h @@ -1,3 +1,18 @@ +/* Copyright 2016 Wez Furlong + * + * 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 . + */ #pragma once // Some helpers for controlling gpio pins #include diff --git a/quantum/process_keycode/process_chording.c b/quantum/process_keycode/process_chording.c index d7814629..6c6ebe30 100644 --- a/quantum/process_keycode/process_chording.c +++ b/quantum/process_keycode/process_chording.c @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "process_chording.h" bool keys_chord(uint8_t keys[]) { @@ -57,4 +73,4 @@ bool process_chording(uint16_t keycode, keyrecord_t *record) { } } return true; -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_chording.h b/quantum/process_keycode/process_chording.h index 49c97db3..8c0f4862 100644 --- a/quantum/process_keycode/process_chording.h +++ b/quantum/process_keycode/process_chording.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef PROCESS_CHORDING_H #define PROCESS_CHORDING_H @@ -13,4 +29,4 @@ uint8_t chord_key_down = 0; bool process_chording(uint16_t keycode, keyrecord_t *record); -#endif \ No newline at end of file +#endif diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c index e2189ad9..58d45add 100644 --- a/quantum/process_keycode/process_combo.c +++ b/quantum/process_keycode/process_combo.c @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "process_combo.h" #include "print.h" diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h index 847f2b73..a5dbd788 100644 --- a/quantum/process_keycode/process_combo.h +++ b/quantum/process_keycode/process_combo.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef PROCESS_COMBO_H #define PROCESS_COMBO_H diff --git a/quantum/process_keycode/process_leader.c b/quantum/process_keycode/process_leader.c index e53d221e..473906d6 100644 --- a/quantum/process_keycode/process_leader.c +++ b/quantum/process_keycode/process_leader.c @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "process_leader.h" __attribute__ ((weak)) @@ -35,4 +51,4 @@ bool process_leader(uint16_t keycode, keyrecord_t *record) { } } return true; -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_leader.h b/quantum/process_keycode/process_leader.h index c83db8ab..da7a3d2e 100644 --- a/quantum/process_keycode/process_leader.h +++ b/quantum/process_keycode/process_leader.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef PROCESS_LEADER_H #define PROCESS_LEADER_H @@ -20,4 +36,4 @@ void leader_end(void); #define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[5]; extern uint8_t leader_sequence_size #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) -#endif \ No newline at end of file +#endif diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 700c6ce8..9184feaa 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,3 +1,18 @@ +/* Copyright 2016 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 "process_midi.h" #ifdef MIDI_ENABLE diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h index 58b7650c..ccac8981 100644 --- a/quantum/process_keycode/process_midi.h +++ b/quantum/process_keycode/process_midi.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef PROCESS_MIDI_H #define PROCESS_MIDI_H @@ -37,4 +53,4 @@ uint8_t midi_compute_note(uint16_t keycode); #endif // MIDI_ENABLE -#endif \ No newline at end of file +#endif diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index f89a04ee..217dca28 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -1,3 +1,18 @@ +/* Copyright 2016 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 "process_music.h" #ifdef AUDIO_ENABLE diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h index a36514a4..8dfbf041 100644 --- a/quantum/process_keycode/process_music.h +++ b/quantum/process_keycode/process_music.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef PROCESS_MUSIC_H #define PROCESS_MUSIC_H @@ -28,4 +44,4 @@ void matrix_scan_music(void); #endif // defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) -#endif \ No newline at end of file +#endif diff --git a/quantum/process_keycode/process_printer.c b/quantum/process_keycode/process_printer.c index 2e11dd36..807f7a0b 100644 --- a/quantum/process_keycode/process_printer.c +++ b/quantum/process_keycode/process_printer.c @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "process_printer.h" #include "action_util.h" @@ -251,4 +267,4 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return true; -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_printer.h b/quantum/process_keycode/process_printer.h index fdd36d75..aa494ac8 100644 --- a/quantum/process_keycode/process_printer.h +++ b/quantum/process_keycode/process_printer.h @@ -1,3 +1,19 @@ +/* Copyright 2016 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 . + */ + #ifndef PROCESS_PRINTER_H #define PROCESS_PRINTER_H @@ -5,4 +21,4 @@ #include "protocol/serial.h" -#endif \ No newline at end of file +#endif diff --git a/quantum/process_keycode/process_printer_bb.c b/quantum/process_keycode/process_printer_bb.c index 1924d037..55d3b552 100644 --- a/quantum/process_keycode/process_printer_bb.c +++ b/quantum/process_keycode/process_printer_bb.c @@ -1,3 +1,19 @@ +/* Copyright 2016 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 "process_printer.h" #include "action_util.h" @@ -257,4 +273,4 @@ bool process_printer(uint16_t keycode, keyrecord_t *record) { } return true; -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 403dca53..68c8425b 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -1,3 +1,18 @@ +/* Copyright 2016 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 "quantum.h" #include "action_tapping.h" diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h index 726752ec..330809f8 100644 --- a/quantum/process_keycode/process_tap_dance.h +++ b/quantum/process_keycode/process_tap_dance.h @@ -1,3 +1,18 @@ +/* Copyright 2016 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 . + */ #ifndef PROCESS_TAP_DANCE_H #define PROCESS_TAP_DANCE_H diff --git a/quantum/process_keycode/process_ucis.c b/quantum/process_keycode/process_ucis.c index 4ad2533b..86c0937f 100644 --- a/quantum/process_keycode/process_ucis.c +++ b/quantum/process_keycode/process_ucis.c @@ -1,3 +1,19 @@ +/* Copyright 2017 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 "process_ucis.h" qk_ucis_state_t qk_ucis_state; @@ -130,4 +146,4 @@ bool process_ucis (uint16_t keycode, keyrecord_t *record) { return false; } return true; -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_ucis.h b/quantum/process_keycode/process_ucis.h index 4332f57b..3f736a70 100644 --- a/quantum/process_keycode/process_ucis.h +++ b/quantum/process_keycode/process_ucis.h @@ -1,3 +1,19 @@ +/* Copyright 2017 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 . + */ + #ifndef PROCESS_UCIS_H #define PROCESS_UCIS_H diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index ccae6fdc..26571ea0 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -1,3 +1,18 @@ +/* Copyright 2016 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 "process_unicode.h" #include "action_util.h" diff --git a/quantum/process_keycode/process_unicode.h b/quantum/process_keycode/process_unicode.h index 4c21f11e..c525b74f 100644 --- a/quantum/process_keycode/process_unicode.h +++ b/quantum/process_keycode/process_unicode.h @@ -1,3 +1,18 @@ +/* Copyright 2016 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 . + */ #ifndef PROCESS_UNICODE_H #define PROCESS_UNICODE_H diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c index 31bc3b7a..6012b4f0 100644 --- a/quantum/process_keycode/process_unicode_common.c +++ b/quantum/process_keycode/process_unicode_common.c @@ -1,3 +1,19 @@ +/* Copyright 2017 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 "process_unicode_common.h" uint8_t mods; @@ -82,4 +98,4 @@ void register_hex(uint16_t hex) { register_code(hex_to_keycode(digit)); unregister_code(hex_to_keycode(digit)); } -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_unicode_common.h b/quantum/process_keycode/process_unicode_common.h index 864693cd..f5be1da5 100644 --- a/quantum/process_keycode/process_unicode_common.h +++ b/quantum/process_keycode/process_unicode_common.h @@ -1,3 +1,19 @@ +/* Copyright 2017 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 . + */ + #ifndef PROCESS_UNICODE_COMMON_H #define PROCESS_UNICODE_COMMON_H @@ -129,4 +145,4 @@ void register_hex(uint16_t hex); #define UC_TILD UC(0x007E) #define UC_DEL UC(0x007F) -#endif \ No newline at end of file +#endif diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c index 68a593a1..0227fbdd 100644 --- a/quantum/process_keycode/process_unicodemap.c +++ b/quantum/process_keycode/process_unicodemap.c @@ -1,3 +1,19 @@ +/* Copyright 2017 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 "process_unicodemap.h" #include "process_unicode_common.h" @@ -53,4 +69,4 @@ bool process_unicode_map(uint16_t keycode, keyrecord_t *record) { } } return true; -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_unicodemap.h b/quantum/process_keycode/process_unicodemap.h index 64a7a010..929c88c0 100644 --- a/quantum/process_keycode/process_unicodemap.h +++ b/quantum/process_keycode/process_unicodemap.h @@ -1,3 +1,19 @@ +/* Copyright 2017 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 . + */ + #ifndef PROCESS_UNICODEMAP_H #define PROCESS_UNICODEMAP_H @@ -6,4 +22,4 @@ void unicode_map_input_error(void); bool process_unicode_map(uint16_t keycode, keyrecord_t *record); -#endif \ No newline at end of file +#endif diff --git a/quantum/quantum.c b/quantum/quantum.c index 5a9e771a..62d9ef92 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1,3 +1,19 @@ +/* Copyright 2016-2017 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 "quantum.h" #ifdef PROTOCOL_LUFA #include "outputselect.h" diff --git a/quantum/quantum.h b/quantum/quantum.h index 1f1bb0af..2bf18d09 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -1,3 +1,18 @@ +/* Copyright 2016-2017 Erez Zukerman, 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 . + */ #ifndef QUANTUM_H #define QUANTUM_H diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 1e3df9fa..7354ae0d 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -1,3 +1,18 @@ +/* Copyright 2016-2017 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 . + */ #ifndef QUANTUM_KEYCODES_H #define QUANTUM_KEYCODES_H diff --git a/quantum/rgblight.c b/quantum/rgblight.c index dd1b91c6..eff70aae 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -1,3 +1,18 @@ +/* Copyright 2016-2017 Yang Liu + * + * 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 #include diff --git a/quantum/rgblight.h b/quantum/rgblight.h index 2b3e791b..92130192 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -1,3 +1,18 @@ +/* Copyright 2017 Yang Liu + * + * 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 RGBLIGHT_H #define RGBLIGHT_H diff --git a/quantum/serial_link/LICENSE b/quantum/serial_link/LICENSE index d7cc3198..d13cc4b2 100644 --- a/quantum/serial_link/LICENSE +++ b/quantum/serial_link/LICENSE @@ -1,7 +1,5 @@ The MIT License (MIT) -Copyright (c) 2016 Fred Sundvik - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights diff --git a/quantum/template/Makefile b/quantum/template/Makefile index 4e2a6f00..840dc9a2 100644 --- a/quantum/template/Makefile +++ b/quantum/template/Makefile @@ -1,3 +1,18 @@ +# Copyright 2013 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 MAKEFILE_INCLUDED include ../../Makefile -endif \ No newline at end of file +endif diff --git a/quantum/template/config.h b/quantum/template/config.h index 7393097e..dbca4576 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -1,5 +1,5 @@ /* -Copyright 2012 Jun Wako +Copyright 2017 REPLACE_WITH_YOUR_NAME 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 diff --git a/quantum/template/keymaps/default/Makefile b/quantum/template/keymaps/default/Makefile index 29f11bbc..b8879076 100644 --- a/quantum/template/keymaps/default/Makefile +++ b/quantum/template/keymaps/default/Makefile @@ -1,4 +1,20 @@ -# Build Options +# Copyright 2013 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 . + + +# QMK 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 # @@ -18,4 +34,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/quantum/template/keymaps/default/config.h b/quantum/template/keymaps/default/config.h index df06a262..f52a97bb 100644 --- a/quantum/template/keymaps/default/config.h +++ b/quantum/template/keymaps/default/config.h @@ -1,3 +1,19 @@ +/* Copyright 2017 REPLACE_WITH_YOUR_NAME + * + * 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_USER_H #define CONFIG_USER_H @@ -5,4 +21,4 @@ // place overrides here -#endif \ No newline at end of file +#endif diff --git a/quantum/template/keymaps/default/keymap.c b/quantum/template/keymaps/default/keymap.c index e28a4723..a123cd7b 100644 --- a/quantum/template/keymaps/default/keymap.c +++ b/quantum/template/keymaps/default/keymap.c @@ -1,3 +1,18 @@ +/* Copyright 2017 REPLACE_WITH_YOUR_NAME + * + * 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 "%KEYBOARD%.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -41,4 +56,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { void led_set_user(uint8_t usb_led) { -} \ No newline at end of file +} diff --git a/quantum/template/template.c b/quantum/template/template.c index 5ef34958..97f78865 100644 --- a/quantum/template/template.c +++ b/quantum/template/template.c @@ -1,3 +1,18 @@ +/* Copyright 2017 REPLACE_WITH_YOUR_NAME + * + * 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 "%KEYBOARD%.h" void matrix_init_kb(void) { diff --git a/quantum/template/template.h b/quantum/template/template.h index cd78a54e..e912188b 100644 --- a/quantum/template/template.h +++ b/quantum/template/template.h @@ -1,3 +1,18 @@ +/* Copyright 2017 REPLACE_WITH_YOUR_NAME + * + * 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 %KEYBOARD_UPPERCASE%_H #define %KEYBOARD_UPPERCASE%_H diff --git a/quantum/variable_trace.c b/quantum/variable_trace.c index de580244..713747cf 100644 --- a/quantum/variable_trace.c +++ b/quantum/variable_trace.c @@ -1,3 +1,19 @@ +/* Copyright 2016 Fred Sundvik + * + * 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 "variable_trace.h" #include #include diff --git a/quantum/variable_trace.h b/quantum/variable_trace.h index 46bd8278..dacc1385 100644 --- a/quantum/variable_trace.h +++ b/quantum/variable_trace.h @@ -1,3 +1,19 @@ +/* Copyright 2016 Fred Sundvik + * + * 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 VARIABLE_TRACE_H #define VARIABLE_TRACE_H From d6e51d20084921481acacde7546ff08d790b898d Mon Sep 17 00:00:00 2001 From: Rovanion Luckey Date: Wed, 29 Mar 2017 09:34:20 +0200 Subject: [PATCH 170/183] Added link to the teensy linux page. --- keyboards/ergodox/readme.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index d7eed8f4..23e5b862 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -69,8 +69,11 @@ files. Check them out with: The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). -Linux users need to modify udev rules as described on the Teensy Linux page (which page?). -Some distributions provide a binary, maybe called `teensy-loader-cli`. +Linux users need to modify udev rules as described on the [Teensy +Linux page]. Some distributions provide a binary, maybe called +`teensy-loader-cli`. + +[Teensy Linux page]: https://www.pjrc.com/teensy/loader_linux.html To flash the firmware: From 4d2be0281c230fc8d7764e4071d1447c59af2cf7 Mon Sep 17 00:00:00 2001 From: Osamu Aoki Date: Mon, 13 Mar 2017 17:11:05 +0000 Subject: [PATCH 171/183] Typo fix --- quantum/template/template.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/template/template.h b/quantum/template/template.h index cd78a54e..49e6b60e 100644 --- a/quantum/template/template.h +++ b/quantum/template/template.h @@ -5,7 +5,7 @@ // This a shortcut to help you visually see your layout. // The following is an example using the Planck MIT layout -// The first section contains all of the arguements +// The first section contains all of the arguments // The second converts the arguments into a two-dimensional array #define KEYMAP( \ k00, k01, k02, \ From c782b269b6544f63a13b80e9b28f460fded63f67 Mon Sep 17 00:00:00 2001 From: Osamu Aoki Date: Sun, 12 Mar 2017 02:41:47 +0900 Subject: [PATCH 172/183] Update to match QMK keymap --- doc/keymap.md | 232 +++++++++++++++++++++++++++++++------------------- 1 file changed, 143 insertions(+), 89 deletions(-) diff --git a/doc/keymap.md b/doc/keymap.md index 6f2a663f..c127db2b 100644 --- a/doc/keymap.md +++ b/doc/keymap.md @@ -1,15 +1,30 @@ Keymap framework - how to define your keymap ============================================ -***NOTE: This is not final version, may be inconsistent with source code and changed occasionally for a while.*** +***NOTE: This is updated for QMK but this is still work in progress. This may still be inconsistent with the source code.*** + +QMK is based on TMK. Understanding the essential changes made should help you understand variable names etc. + +## TMK vs. QMK + +| Firmware |TMK |QMK | +|-------------------------------------------------|-----------------------|-------------------------| +| Maintainer |hasu |Jack Humbert et al. | +| Build path customization | `TMK_DIR = ...` | `include .../Makefile` | +| `keymaps` data | 3D array of `uint8_t` holding **keycode** | 3D array of `uint16_t` holding **action code** | +| `fn_actions` data | 1D array of `uint16_t` holding **action code** | 3D array of `uint16_t` holding **action code** | + +Since QMK is based on TMK and uses major portion of TMK code as is, understanding the essential changes made should help you understand the code. ## 0. Keymap and layers -**Keymap** is comprised of multiple layers of key layout, you can define **32 layers** at most. -**Layer** is an array of **keycodes** to define **actions** for each physical keys. -respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence. +In QMK, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most. - Keymap: 32 Layers Layer: Keycode matrix +For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**. + +Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence. + + Keymap: 32 Layers Layer: action code matrix ----------------- --------------------- - stack of layers array_of_keycode[row][column] + stack of layers array_of_action_code[row][column] ____________ precedence _______________________ / / | high / ESC / F1 / F2 / F3 .... 31 /___________// | /-----/-----/-----/----- @@ -22,11 +37,15 @@ respective layers can be validated simultaneously. Layers are indexed with 0 to 0 /___________/ V low 0 `-------------------------- +Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history. + +### 0.1 Keymap layer status +Keymap layer has its state in two 32 bit parameters: -### 0.1 Keymap status -Keymap has its state in two parameters: -**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit. +* **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred. +* **`layer_state`** () has current on/off status of the layer on its each bit. +Keymap has its state in two parameter**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit. Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`. To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty. @@ -67,97 +86,132 @@ On the other hand, you shall change `layer_state` to overlay base layer with som ### 0.2 Layer Precedence and Transparency Note that ***higher layer has higher priority on stack of layers***, namely firmware falls down from top layer to bottom to look up keycode. Once it spots keycode other than **`KC_TRNS`**(transparent) on a layer it stops searching and lower layers aren't referred. -You can place `KC_TRNS` on overlay layer changes just part of layout to fall back on lower or base layer. -Key with `KC_TRANS` doesn't has its own keycode and refers to lower valid layers for keycode, instead. +You can place `KC_TRANS` on overlay layer changes just part of layout to fall back on lower or base layer. +Key with `KC_TRANS` (`KC_TRNS` and `_______` are the alias) doesn't has its own keycode and refers to lower valid layers for keycode, instead. See example below. ### 0.3 Keymap Example -Keymap is **`keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array. +Keymap in this QMK is **`static const uint16_t PROGMEM keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array. It holds the 16 bit quantum keycode (action code). + +> Please note that keymap in the TMK, which QMK was forked from, is **`static const uint8_t PROGMEM keymaps[]`** C array which holds the 8 bit keycode (~USB HID usage code). This is a keymap example for [HHKB](http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard) keyboard. -This example has three layers, 'Qwerty' as base layer, 'Cursor' and 'Mousekey'. +This example has three layers, 'QWERTY' as base layer, 'FN' and 'MOUSE'. + In this example, - `Fn0` is a **momentary layer switching** key, you can use keys on Cursor layer while holding the key. + `MO(layer)` is a **momentary layer switching** key. - `Fn1` is a momentary layer switching key with tapping feature, you can get semicolon **';'** with taping the key and switch layers while holding the key. The word **'tap'** or **'tapping'** mean to press and release a key quickly. +You can find other keymap definitions in file `keymap.c` located on project directories. +``` +/* + * dbroqua HHKB Layout + */ +#include "hhkb.h" + +#define BASE 0 +#define FN 1 +#define MOUSE 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE Level: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | 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 | , | . | / | Shift | fn | + * +-----------------------------------------------------------------------------------------+ + * | Gui | Alt | Space | AltGr |Mouse| + * `----------------------------------------------------------------´ + */ + [BASE] = 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, 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, MO(MOUSE) + ), + + /* FN Layer + * ,-----------------------------------------------------------------------------------------. + * | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | Ins | Del| + * |-----------------------------------------------------------------------------------------+ + * | Caps | | | | | | | |PrtSc| Slck| Paus| Up | | | + * |-----------------------------------------------------------------------------------------+ + * | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left |Right| | + * |-----------------------------------------------------------------------------------------+ + * | | Prev| Play| Next| | | + | - | End |PgDwn| Down| | | + * +-----------------------------------------------------------------------------------------+ + * | | | | Stop | | + * `----------------------------------------------------------------´ + */ + [FN] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS + ), + + /* MOUSE Layer + * ,-----------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | WUp | | | | | | | | Btn1| Up | Btn2| | + * |-----------------------------------------------------------------------------------------+ + * | | WLt | WDn | WRt | | | | | | | Left |Right| | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | Btn3| Down| | | + * +-----------------------------------------------------------------------------------------+ + * | | | | | | + * `----------------------------------------------------------------´ + */ + [MOUSE] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, \ + KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_R, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_MS_D, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; - `Fn2` is a **toggle layer switch** key, you can stay switched layer after releasing the key unlike momentary switching. +const uint16_t PROGMEM fn_actions[] = { -You can find other keymap definitions in file `keymap.c` located on project directories. +}; - static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: Qwerty - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L|Fn1| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| - * `-----------------------------------------------------------' - * |Gui|Alt |Space |Alt |Fn2| - * `-------------------------------------------' - */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - LCTL,A, S, D, F, G, H, J, K, L, FN1, QUOT,ENT, \ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,FN0, \ - LGUI,LALT, SPC, RALT,FN2), - /* 1: Cursor(HHKB mode) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * |Shift | | | | | | +| -|End|PgD|Dow|Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt |Space |Alt |Gui| - * `--------------------------------------------' - */ - KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,BSPC, \ - LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ - LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \ - LGUI,LALT, SPC, RALT,RGUI), - /* 2: Mousekey - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs| - * |-----------------------------------------------------------| - * |Contro| | | | | |McL|McD|McU|McR| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt |Mb1 |Alt | | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,BSPC, \ - LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \ - LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,SLSH,RSFT,TRNS, \ - LGUI,LALT, BTN1, RALT,TRNS), - }; +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; +}; +``` - static const uint16_t PROGMEM fn_actions[] = { - ACTION_LAYER_MOMENTARY(1), // FN0 - ACTION_LAYER_TAP_KEY(2, KC_SCLN), // FN1 - ACTION_LAYER_TOGGLE(2), // FN2 - }; +## 1. Keycode +See [`tmk_core/common/keycode.h`](../tmk_core/common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycodes are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) plus special codes in the `0xA5-DF` range. + +Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys. +keymaps[] +In `KEYMAP()` macro, TMK recommends you to keep prefix part `KC_` of keycode to keep keymap compact. For example, just use `A` instead you place `KC_A` in `KEYMAP()`. But this doesn't apply for QMK. -## 1. Keycode -See [`common/keycode.h`](../common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys. +The `KEYMAP()` macro defines correspondence between the physical key location to the electrical key connection. - ***In `KEYMAP()` macro you should omit prefix part `KC_` of keycode to keep keymap compact.*** For example, just use `A` instead you place `KC_A` in `KEYMAP()`. Some keycodes has 4-letter **short name** in addition to descriptive name, you'll prefer short one in `KEYMAP()`. +Some keycodes has 7-letter **short name** such as `KC_COMM` in addition to descriptive name `KC_COMMA`, you'll prefer short one in `KEYMAP()`. ### 1.0 Other key - `KC_NO` for no action @@ -192,7 +246,10 @@ There are 8 modifiers which has discrimination between left and right. - `KC_WSCH`, `KC_WHOM`, `KC_WBAK`, `KC_WFWD`, `KC_WSTP`, `KC_WREF`, `KC_WFAV` for web browser operation ### 1.5 Fn key -`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***32 `Fn` keys can be defined at most.*** +You don't need to use this functionality under QMK since this is a backward compatibility functionality. Unlike TMK, you can write action code itself directly in **`static const uint16_t PROGMEM keymaps[]`** C array using `MO(layer)`, etc. + +`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***Only 32 `Fn` keys can be defined at most.*** + ### 1.6 Keycode Table See keycode table in [`doc/keycode.txt`](./keycode.txt) for description of keycodes. @@ -581,15 +638,11 @@ Similar to layer tap toggle, this works as a momentary modifier when holding, bu ## 5. Legacy Keymap -This was used in prior version and still works due to legacy support code in `common/keymap.c`. Legacy keymap doesn't support many of features that new keymap offers. ***It is not recommended to use Legacy Keymap for new project.*** - -To enable Legacy Keymap support define this macro in `config.h`. - - #define USE_LEGACY_KEYMAP +In QMK, `tmk_core/common/keymap.c` is missing and its replacement `quantum/keymap_common.c` lacks Legacy Keymap support. Legacy Keymap uses two arrays `fn_layer[]` and `fn_keycode[]` to define Fn key. The index of arrays corresponds with postfix number of `Fn` key. Array `fn_layer[]` indicates destination layer to switch and `fn_keycode[]` has keycodes to send when tapping `Fn` key. -In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key. +In the following legacy keymap setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key. static const uint8_t PROGMEM fn_layer[] = { 1, // Fn0 @@ -603,6 +656,7 @@ In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 KC_SPC, // Fn2 }; +Under QMK, these can be realized using action code ACTION_LAYER_TAP_KEY(1, KC_NO), ACTION_LAYER_TAP_KEY(2, KC_NO), and ACTION_LAYER_TAP_KEY(2, KC_SPC) in the `keymaps` directly. ## 6. Terminology ***TBD*** From 71da013995ec72293ab1f3e2518a99d64ec486fb Mon Sep 17 00:00:00 2001 From: Travis La Marr Date: Wed, 29 Mar 2017 23:03:04 -0400 Subject: [PATCH 173/183] Add RN42 Bluetooth module support Added support for sending HID keycodes over the RN42/reflashed HC05 module. Tested on OS X and iOS. --- tmk_core/common.mk | 5 +++++ tmk_core/protocol/lufa.mk | 5 +++++ tmk_core/protocol/lufa/bluetooth.h | 16 +++++++++++++++- tmk_core/protocol/lufa/lufa.c | 19 ++++++++++++++++++- 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 47f6fc57..3e0bd7db 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -107,6 +107,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY endif +ifeq ($(strip $(BLUETOOTH)), RN42) + TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE + TMK_COMMON_DEFS += -DMODULE_RN42 +endif + ifeq ($(strip $(ONEHAND_ENABLE)), yes) TMK_COMMON_DEFS += -DONEHAND_ENABLE endif diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 5b157797..7ce727da 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -36,6 +36,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) $(TMK_DIR)/protocol/serial_uart.c endif +ifeq ($(strip $(BLUETOOTH)), RN42) + LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ + $(TMK_DIR)/protocol/serial_uart.c +endif + ifeq ($(strip $(VIRTSER_ENABLE)), yes) LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c endif diff --git a/tmk_core/protocol/lufa/bluetooth.h b/tmk_core/protocol/lufa/bluetooth.h index 78ece1cd..f4b2f6f8 100644 --- a/tmk_core/protocol/lufa/bluetooth.h +++ b/tmk_core/protocol/lufa/bluetooth.h @@ -62,4 +62,18 @@ void bluefruit_serial_send(uint8_t data); (usage == AC_REFRESH ? 0x0000 : \ (usage == AC_BOOKMARKS ? 0x0000 : 0))))))))))))))))))) -#endif \ No newline at end of file +#define CONSUMER2RN42(usage) \ + (usage == AUDIO_MUTE ? 0x0040 : \ + (usage == AUDIO_VOL_UP ? 0x0010 : \ + (usage == AUDIO_VOL_DOWN ? 0x0020 : \ + (usage == TRANSPORT_NEXT_TRACK ? 0x0100 : \ + (usage == TRANSPORT_PREV_TRACK ? 0x0200 : \ + (usage == TRANSPORT_STOP ? 0x0400 : \ + (usage == TRANSPORT_STOP_EJECT ? 0x0800 : \ + (usage == TRANSPORT_PLAY_PAUSE ? 0x0080 : \ + (usage == AL_EMAIL ? 0x0200 : \ + (usage == AL_LOCAL_BROWSER ? 0x8000 : \ + (usage == AC_SEARCH ? 0x0400 : \ + (usage == AC_HOME ? 0x0100 : 0)))))))))))) + + #endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 60cba8d2..ae6129d1 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -606,6 +606,13 @@ static void send_keyboard(report_keyboard_t *report) if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { #ifdef MODULE_ADAFRUIT_BLE adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); + #elif MODULE_RN42 + bluefruit_serial_send(0xFD); + bluefruit_serial_send(0x09); + bluefruit_serial_send(0x01); + for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { + bluefruit_serial_send(report->raw[i]); + } #else bluefruit_serial_send(0xFD); for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { @@ -726,6 +733,16 @@ static void send_consumer(uint16_t data) if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { #ifdef MODULE_ADAFRUIT_BLE adafruit_ble_send_consumer_key(data, 0); + #elif MODULE_RN42 + static uint16_t last_data = 0; + if (data == last_data) return; + last_data = data; + uint16_t bitmap = CONSUMER2RN42(data); + bluefruit_serial_send(0xFD); + bluefruit_serial_send(0x03); + bluefruit_serial_send(0x03); + bluefruit_serial_send(bitmap&0xFF); + bluefruit_serial_send((bitmap>>8)&0xFF); #else static uint16_t last_data = 0; if (data == last_data) return; @@ -1132,7 +1149,7 @@ int main(void) // midi_send_noteoff(&midi_device, 0, 64, 127); #endif -#ifdef MODULE_ADAFRUIT_EZKEY +#if defined(MODULE_ADAFRUIT_EZKEY) || defined(MODULE_RN42) serial_init(); #endif From d145a1192f5833a427d58d69b355935232fb37fb Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 30 Mar 2017 13:22:16 +0100 Subject: [PATCH 174/183] changed hotkey cluster to accomodate awkward software --- keyboards/planck/keymaps/callum/keymap.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index aede27df..d50b0431 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -14,7 +14,7 @@ extern keymap_config_t keymap_config; #define _FUNC 4 #define ENDASH LALT(KC_MINS) #define POUND LALT(KC_3) -#define H(X) LALT(LCTL(X)) +#define H(X) RALT(X) enum planck_keycodes { MOVE = SAFE_RANGE, @@ -48,19 +48,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. - * | H(3) | H(F1)| H(F2)| H(F3)| H(F4)| H(F5)| H(8) | Home | Up | End | H(7) | Esc | + * | H(F7)| H(F8)| H(6) | H(5) | H(4) | H(F9)|H(F10)| Home | Up | End | H(A) | Esc | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | H(4) | H(F6)| H(F7)| H(F8)| H(F9)|H(F10)| H(9) | Left | Down | Right| Caps | Del | + * | H(F3)| H(F4)| H(3) | H(2) | H(1) | H(F5)| H(F6)| Left | Down | Right| Caps | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | |H(F11)|H(F12)| H(0) | H(1) | H(2) | H(A) | Pg Dn| Pg Up| H(5) | H(6) | | + * | | H(0) | H(9) | H(8) | H(7) | H(F1)| H(F2)| Pg Dn| Pg Up|H(F11)|H(F12)| | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ [_MOVE] = { - {H(KC_3), H(KC_F1),H(KC_F2),H(KC_F3),H(KC_F4),H(KC_F5),H(KC_8), KC_HOME, KC_UP, KC_END, H(KC_7), KC_ESC }, - {H(KC_4), H(KC_F6),H(KC_F7),H(KC_F8),H(KC_F9),H(KC_F10),H(KC_9),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL }, - {_______, H(KC_F11),H(KC_F12),H(KC_0),H(KC_1),H(KC_2), H(KC_A), KC_PGDN, KC_PGUP, H(KC_5), H(KC_6), _______}, + {H(KC_F7),H(KC_F8),H(KC_6), H(KC_5), H(KC_4), H(KC_F9),H(KC_F10),KC_HOME,KC_UP, KC_END, H(KC_A), KC_ESC }, + {H(KC_F3),H(KC_F4),H(KC_3), H(KC_2), H(KC_1), H(KC_F5),H(KC_F6),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL }, + {_______, H(KC_0), H(KC_9), H(KC_8), H(KC_7), H(KC_F1),H(KC_F2),KC_PGDN,KC_PGUP,H(KC_F11),H(KC_F12),_______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, From 3f3f208113abb928209d608d4d763267005d488b Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 30 Mar 2017 14:20:18 +0100 Subject: [PATCH 175/183] changed hotkey cluster to accomodate awkward software... again --- keyboards/planck/keymaps/callum/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index d50b0431..09063cb9 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -14,7 +14,7 @@ extern keymap_config_t keymap_config; #define _FUNC 4 #define ENDASH LALT(KC_MINS) #define POUND LALT(KC_3) -#define H(X) RALT(X) +#define H(X) LALT(LCTL(X)) enum planck_keycodes { MOVE = SAFE_RANGE, From 3a1ee48cda5f185ebb3a4f989b389edf029992bb Mon Sep 17 00:00:00 2001 From: Osamu Aoki Date: Mon, 13 Mar 2017 17:11:05 +0000 Subject: [PATCH 176/183] Typo fix --- quantum/template/template.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/template/template.h b/quantum/template/template.h index e912188b..7e2b14f3 100644 --- a/quantum/template/template.h +++ b/quantum/template/template.h @@ -20,7 +20,7 @@ // This a shortcut to help you visually see your layout. // The following is an example using the Planck MIT layout -// The first section contains all of the arguements +// The first section contains all of the arguments // The second converts the arguments into a two-dimensional array #define KEYMAP( \ k00, k01, k02, \ From ccbdf90f02067bc37975130ca8c4b26d2497dcf7 Mon Sep 17 00:00:00 2001 From: Osamu Aoki Date: Sun, 12 Mar 2017 02:41:47 +0900 Subject: [PATCH 177/183] Update to match QMK keymap --- doc/keymap.md | 232 +++++++++++++++++++++++++++++++------------------- 1 file changed, 143 insertions(+), 89 deletions(-) diff --git a/doc/keymap.md b/doc/keymap.md index 2b0d2cd9..bc780990 100644 --- a/doc/keymap.md +++ b/doc/keymap.md @@ -1,15 +1,30 @@ Keymap framework - how to define your keymap ============================================ -***NOTE: This is not final version, may be inconsistent with source code and changed occasionally for a while.*** +***NOTE: This is updated for QMK but this is still work in progress. This may still be inconsistent with the source code.*** + +QMK is based on TMK. Understanding the essential changes made should help you understand variable names etc. + +## TMK vs. QMK + +| Firmware |TMK |QMK | +|-------------------------------------------------|-----------------------|-------------------------| +| Maintainer |hasu |Jack Humbert et al. | +| Build path customization | `TMK_DIR = ...` | `include .../Makefile` | +| `keymaps` data | 3D array of `uint8_t` holding **keycode** | 3D array of `uint16_t` holding **action code** | +| `fn_actions` data | 1D array of `uint16_t` holding **action code** | 3D array of `uint16_t` holding **action code** | + +Since QMK is based on TMK and uses major portion of TMK code as is, understanding the essential changes made should help you understand the code. ## 0. Keymap and layers -**Keymap** is comprised of multiple layers of key layout, you can define **32 layers** at most. -**Layer** is an array of **keycodes** to define **actions** for each physical keys. -respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence. +In QMK, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most. - Keymap: 32 Layers Layer: Keycode matrix +For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**. + +Respective layers can be validated simultaneously. Layers are indexed with 0 to 31 and higher layer has precedence. + + Keymap: 32 Layers Layer: action code matrix ----------------- --------------------- - stack of layers array_of_keycode[row][column] + stack of layers array_of_action_code[row][column] ____________ precedence _______________________ / / | high / ESC / F1 / F2 / F3 .... 31 /___________// | /-----/-----/-----/----- @@ -22,11 +37,15 @@ respective layers can be validated simultaneously. Layers are indexed with 0 to 0 /___________/ V low 0 `-------------------------- +Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history. + +### 0.1 Keymap layer status +Keymap layer has its state in two 32 bit parameters: -### 0.1 Keymap status -Keymap has its state in two parameters: -**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit. +* **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred. +* **`layer_state`** () has current on/off status of the layer on its each bit. +Keymap has its state in two parameter**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit. Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`. To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty. @@ -67,97 +86,132 @@ On the other hand, you shall change `layer_state` to overlay base layer with som ### 0.2 Layer Precedence and Transparency Note that ***higher layer has higher priority on stack of layers***, namely firmware falls down from top layer to bottom to look up keycode. Once it spots keycode other than **`KC_TRNS`**(transparent) on a layer it stops searching and lower layers aren't referred. -You can place `KC_TRNS` on overlay layer changes just part of layout to fall back on lower or base layer. -Key with `KC_TRANS` doesn't has its own keycode and refers to lower valid layers for keycode, instead. +You can place `KC_TRANS` on overlay layer changes just part of layout to fall back on lower or base layer. +Key with `KC_TRANS` (`KC_TRNS` and `_______` are the alias) doesn't has its own keycode and refers to lower valid layers for keycode, instead. See example below. ### 0.3 Keymap Example -Keymap is **`keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array. +Keymap in this QMK is **`static const uint16_t PROGMEM keymaps[]`** C array in fact and you can define layers in it with **`KEYMAP()`** C macro and keycodes. To use complex actions you need to define `Fn` keycode in **`fn_actions[]`** array. It holds the 16 bit quantum keycode (action code). + +> Please note that keymap in the TMK, which QMK was forked from, is **`static const uint8_t PROGMEM keymaps[]`** C array which holds the 8 bit keycode (~USB HID usage code). This is a keymap example for [HHKB](http://en.wikipedia.org/wiki/Happy_Hacking_Keyboard) keyboard. -This example has three layers, 'Qwerty' as base layer, 'Cursor' and 'Mousekey'. +This example has three layers, 'QWERTY' as base layer, 'FN' and 'MOUSE'. + In this example, - `Fn0` is a **momentary layer switching** key, you can use keys on Cursor layer while holding the key. + `MO(layer)` is a **momentary layer switching** key. - `Fn1` is a momentary layer switching key with tapping feature, you can get semicolon **';'** with taping the key and switch layers while holding the key. The word **'tap'** or **'tapping'** mean to press and release a key quickly. +You can find other keymap definitions in file `keymap.c` located on project directories. +``` +/* + * dbroqua HHKB Layout + */ +#include "hhkb.h" + +#define BASE 0 +#define FN 1 +#define MOUSE 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* BASE Level: Default Layer + * ,-----------------------------------------------------------------------------------------. + * | 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 | , | . | / | Shift | fn | + * +-----------------------------------------------------------------------------------------+ + * | Gui | Alt | Space | AltGr |Mouse| + * `----------------------------------------------------------------´ + */ + [BASE] = 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, 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, MO(MOUSE) + ), + + /* FN Layer + * ,-----------------------------------------------------------------------------------------. + * | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | Ins | Del| + * |-----------------------------------------------------------------------------------------+ + * | Caps | | | | | | | |PrtSc| Slck| Paus| Up | | | + * |-----------------------------------------------------------------------------------------+ + * | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left |Right| | + * |-----------------------------------------------------------------------------------------+ + * | | Prev| Play| Next| | | + | - | End |PgDwn| Down| | | + * +-----------------------------------------------------------------------------------------+ + * | | | | Stop | | + * `----------------------------------------------------------------´ + */ + [FN] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ + KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS + ), + + /* MOUSE Layer + * ,-----------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |-----------------------------------------------------------------------------------------+ + * | | | WUp | | | | | | | | Btn1| Up | Btn2| | + * |-----------------------------------------------------------------------------------------+ + * | | WLt | WDn | WRt | | | | | | | Left |Right| | + * |-----------------------------------------------------------------------------------------+ + * | | | | | | | | | | Btn3| Down| | | + * +-----------------------------------------------------------------------------------------+ + * | | | | | | + * `----------------------------------------------------------------´ + */ + [MOUSE] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, \ + KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_R, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_MS_D, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; - `Fn2` is a **toggle layer switch** key, you can stay switched layer after releasing the key unlike momentary switching. +const uint16_t PROGMEM fn_actions[] = { -You can find other keymap definitions in file `keymap.c` located on project directories. +}; - static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: Qwerty - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs| - * |-----------------------------------------------------------| - * |Contro| A| S| D| F| G| H| J| K| L|Fn1| '|Enter | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn0| - * `-----------------------------------------------------------' - * |Gui|Alt |Space |Alt |Fn2| - * `-------------------------------------------' - */ - KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - LCTL,A, S, D, F, G, H, J, K, L, FN1, QUOT,ENT, \ - LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,FN0, \ - LGUI,LALT, SPC, RALT,FN2), - /* 1: Cursor(HHKB mode) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs| - * |-----------------------------------------------------------| - * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter | - * |-----------------------------------------------------------| - * |Shift | | | | | | +| -|End|PgD|Dow|Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt |Space |Alt |Gui| - * `--------------------------------------------' - */ - KEYMAP(PWR, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, TRNS,BSPC, \ - LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \ - LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \ - LGUI,LALT, SPC, RALT,RGUI), - /* 2: Mousekey - * ,-----------------------------------------------------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs| - * |-----------------------------------------------------------| - * |Contro| | | | | |McL|McD|McU|McR| | |Return | - * |-----------------------------------------------------------| - * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | | - * `-----------------------------------------------------------' - * |Gui |Alt |Mb1 |Alt | | - * `--------------------------------------------' - * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel - */ - KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \ - TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,BSPC, \ - LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \ - LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,SLSH,RSFT,TRNS, \ - LGUI,LALT, BTN1, RALT,TRNS), - }; +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; +}; +``` - static const uint16_t PROGMEM fn_actions[] = { - ACTION_LAYER_MOMENTARY(1), // FN0 - ACTION_LAYER_TAP_KEY(2, KC_SCLN), // FN1 - ACTION_LAYER_TOGGLE(2), // FN2 - }; +## 1. Keycode +See [`tmk_core/common/keycode.h`](../tmk_core/common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycodes are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) plus special codes in the `0xA5-DF` range. + +Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys. +keymaps[] +In `KEYMAP()` macro, TMK recommends you to keep prefix part `KC_` of keycode to keep keymap compact. For example, just use `A` instead you place `KC_A` in `KEYMAP()`. But this doesn't apply for QMK. -## 1. Keycode -See [`common/keycode.h`](../common/keycode.h) or keycode table below for the detail. Keycode is internal **8bit code** to indicate action performed on key in keymap. Keycode has `KC_` prefixed symbol respectively. Most of keycodes like `KC_A` have simple action registers key to host on press and unregister on release, while some of other keycodes has some special actions like `Fn` keys, Media control keys, System control keys and Mousekeys. +The `KEYMAP()` macro defines correspondence between the physical key location to the electrical key connection. - ***In `KEYMAP()` macro you should omit prefix part `KC_` of keycode to keep keymap compact.*** For example, just use `A` instead you place `KC_A` in `KEYMAP()`. Some keycodes has 4-letter **short name** in addition to descriptive name, you'll prefer short one in `KEYMAP()`. +Some keycodes has 7-letter **short name** such as `KC_COMM` in addition to descriptive name `KC_COMMA`, you'll prefer short one in `KEYMAP()`. ### 1.0 Other key - `KC_NO` for no action @@ -192,7 +246,10 @@ There are 8 modifiers which has discrimination between left and right. - `KC_WSCH`, `KC_WHOM`, `KC_WBAK`, `KC_WFWD`, `KC_WSTP`, `KC_WREF`, `KC_WFAV` for web browser operation ### 1.5 Fn key -`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***32 `Fn` keys can be defined at most.*** +You don't need to use this functionality under QMK since this is a backward compatibility functionality. Unlike TMK, you can write action code itself directly in **`static const uint16_t PROGMEM keymaps[]`** C array using `MO(layer)`, etc. + +`KC_FNnn` are keycodes for `Fn` key which not given any actions at the beginning unlike most of keycodes has its own inborn action. To use these keycodes in `KEYMAP()` you need to assign action you want at first. Action of `Fn` key is defined in `fn_actions[]` and its index of the array is identical with number part of `KC_FNnn`. Thus `KC_FN0` keycode indicates the action defined in first element of the array. ***Only 32 `Fn` keys can be defined at most.*** + ### 1.6 Keycode Table See keycode table in [`doc/keycode.txt`](./keycode.txt) for description of keycodes. @@ -584,15 +641,11 @@ Similar to layer tap toggle, this works as a momentary modifier when holding, bu ## 5. Legacy Keymap -This was used in prior version and still works due to legacy support code in `common/keymap.c`. Legacy keymap doesn't support many of features that new keymap offers. ***It is not recommended to use Legacy Keymap for new project.*** - -To enable Legacy Keymap support define this macro in `config.h`. - - #define USE_LEGACY_KEYMAP +In QMK, `tmk_core/common/keymap.c` is missing and its replacement `quantum/keymap_common.c` lacks Legacy Keymap support. Legacy Keymap uses two arrays `fn_layer[]` and `fn_keycode[]` to define Fn key. The index of arrays corresponds with postfix number of `Fn` key. Array `fn_layer[]` indicates destination layer to switch and `fn_keycode[]` has keycodes to send when tapping `Fn` key. -In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key. +In the following legacy keymap setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 respectively. `Fn2` registers `Space` key when tapping while `Fn0` and `Fn1` doesn't send any key. static const uint8_t PROGMEM fn_layer[] = { 1, // Fn0 @@ -606,6 +659,7 @@ In following setting example, `Fn0`, `Fn1` and `Fn2` switch layer to 1, 2 and 2 KC_SPC, // Fn2 }; +Under QMK, these can be realized using action code ACTION_LAYER_TAP_KEY(1, KC_NO), ACTION_LAYER_TAP_KEY(2, KC_NO), and ACTION_LAYER_TAP_KEY(2, KC_SPC) in the `keymaps` directly. ## 6. Terminology ***TBD*** From eedb767279df6c43763cbf37b8fe75cfc224c80c Mon Sep 17 00:00:00 2001 From: Travis La Marr Date: Wed, 29 Mar 2017 23:03:04 -0400 Subject: [PATCH 178/183] Add RN42 Bluetooth module support Added support for sending HID keycodes over the RN42/reflashed HC05 module. Tested on OS X and iOS. --- tmk_core/common.mk | 5 +++++ tmk_core/protocol/lufa.mk | 5 +++++ tmk_core/protocol/lufa/bluetooth.h | 16 +++++++++++++++- tmk_core/protocol/lufa/lufa.c | 19 ++++++++++++++++++- 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 47f6fc57..3e0bd7db 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -107,6 +107,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_EZKEY endif +ifeq ($(strip $(BLUETOOTH)), RN42) + TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE + TMK_COMMON_DEFS += -DMODULE_RN42 +endif + ifeq ($(strip $(ONEHAND_ENABLE)), yes) TMK_COMMON_DEFS += -DONEHAND_ENABLE endif diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 5b157797..7ce727da 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -36,6 +36,11 @@ ifeq ($(strip $(BLUETOOTH)), AdafruitEZKey) $(TMK_DIR)/protocol/serial_uart.c endif +ifeq ($(strip $(BLUETOOTH)), RN42) + LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ + $(TMK_DIR)/protocol/serial_uart.c +endif + ifeq ($(strip $(VIRTSER_ENABLE)), yes) LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c endif diff --git a/tmk_core/protocol/lufa/bluetooth.h b/tmk_core/protocol/lufa/bluetooth.h index 78ece1cd..f4b2f6f8 100644 --- a/tmk_core/protocol/lufa/bluetooth.h +++ b/tmk_core/protocol/lufa/bluetooth.h @@ -62,4 +62,18 @@ void bluefruit_serial_send(uint8_t data); (usage == AC_REFRESH ? 0x0000 : \ (usage == AC_BOOKMARKS ? 0x0000 : 0))))))))))))))))))) -#endif \ No newline at end of file +#define CONSUMER2RN42(usage) \ + (usage == AUDIO_MUTE ? 0x0040 : \ + (usage == AUDIO_VOL_UP ? 0x0010 : \ + (usage == AUDIO_VOL_DOWN ? 0x0020 : \ + (usage == TRANSPORT_NEXT_TRACK ? 0x0100 : \ + (usage == TRANSPORT_PREV_TRACK ? 0x0200 : \ + (usage == TRANSPORT_STOP ? 0x0400 : \ + (usage == TRANSPORT_STOP_EJECT ? 0x0800 : \ + (usage == TRANSPORT_PLAY_PAUSE ? 0x0080 : \ + (usage == AL_EMAIL ? 0x0200 : \ + (usage == AL_LOCAL_BROWSER ? 0x8000 : \ + (usage == AC_SEARCH ? 0x0400 : \ + (usage == AC_HOME ? 0x0100 : 0)))))))))))) + + #endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 60cba8d2..ae6129d1 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -606,6 +606,13 @@ static void send_keyboard(report_keyboard_t *report) if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { #ifdef MODULE_ADAFRUIT_BLE adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); + #elif MODULE_RN42 + bluefruit_serial_send(0xFD); + bluefruit_serial_send(0x09); + bluefruit_serial_send(0x01); + for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { + bluefruit_serial_send(report->raw[i]); + } #else bluefruit_serial_send(0xFD); for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { @@ -726,6 +733,16 @@ static void send_consumer(uint16_t data) if (where == OUTPUT_BLUETOOTH || where == OUTPUT_USB_AND_BT) { #ifdef MODULE_ADAFRUIT_BLE adafruit_ble_send_consumer_key(data, 0); + #elif MODULE_RN42 + static uint16_t last_data = 0; + if (data == last_data) return; + last_data = data; + uint16_t bitmap = CONSUMER2RN42(data); + bluefruit_serial_send(0xFD); + bluefruit_serial_send(0x03); + bluefruit_serial_send(0x03); + bluefruit_serial_send(bitmap&0xFF); + bluefruit_serial_send((bitmap>>8)&0xFF); #else static uint16_t last_data = 0; if (data == last_data) return; @@ -1132,7 +1149,7 @@ int main(void) // midi_send_noteoff(&midi_device, 0, 64, 127); #endif -#ifdef MODULE_ADAFRUIT_EZKEY +#if defined(MODULE_ADAFRUIT_EZKEY) || defined(MODULE_RN42) serial_init(); #endif From 200ae0c519c0bba927e417ec154783ce4fd306fe Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 30 Mar 2017 13:22:16 +0100 Subject: [PATCH 179/183] changed hotkey cluster to accomodate awkward software --- keyboards/planck/keymaps/callum/keymap.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index aede27df..d50b0431 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -14,7 +14,7 @@ extern keymap_config_t keymap_config; #define _FUNC 4 #define ENDASH LALT(KC_MINS) #define POUND LALT(KC_3) -#define H(X) LALT(LCTL(X)) +#define H(X) RALT(X) enum planck_keycodes { MOVE = SAFE_RANGE, @@ -48,19 +48,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* MOVE * ,-----------------------------------------------------------------------------------. - * | H(3) | H(F1)| H(F2)| H(F3)| H(F4)| H(F5)| H(8) | Home | Up | End | H(7) | Esc | + * | H(F7)| H(F8)| H(6) | H(5) | H(4) | H(F9)|H(F10)| Home | Up | End | H(A) | Esc | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | H(4) | H(F6)| H(F7)| H(F8)| H(F9)|H(F10)| H(9) | Left | Down | Right| Caps | Del | + * | H(F3)| H(F4)| H(3) | H(2) | H(1) | H(F5)| H(F6)| Left | Down | Right| Caps | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | |H(F11)|H(F12)| H(0) | H(1) | H(2) | H(A) | Pg Dn| Pg Up| H(5) | H(6) | | + * | | H(0) | H(9) | H(8) | H(7) | H(F1)| H(F2)| Pg Dn| Pg Up|H(F11)|H(F12)| | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ [_MOVE] = { - {H(KC_3), H(KC_F1),H(KC_F2),H(KC_F3),H(KC_F4),H(KC_F5),H(KC_8), KC_HOME, KC_UP, KC_END, H(KC_7), KC_ESC }, - {H(KC_4), H(KC_F6),H(KC_F7),H(KC_F8),H(KC_F9),H(KC_F10),H(KC_9),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL }, - {_______, H(KC_F11),H(KC_F12),H(KC_0),H(KC_1),H(KC_2), H(KC_A), KC_PGDN, KC_PGUP, H(KC_5), H(KC_6), _______}, + {H(KC_F7),H(KC_F8),H(KC_6), H(KC_5), H(KC_4), H(KC_F9),H(KC_F10),KC_HOME,KC_UP, KC_END, H(KC_A), KC_ESC }, + {H(KC_F3),H(KC_F4),H(KC_3), H(KC_2), H(KC_1), H(KC_F5),H(KC_F6),KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, KC_DEL }, + {_______, H(KC_0), H(KC_9), H(KC_8), H(KC_7), H(KC_F1),H(KC_F2),KC_PGDN,KC_PGUP,H(KC_F11),H(KC_F12),_______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, From b9225a28f253e1ec33b8c96798bfef4b8cc0918d Mon Sep 17 00:00:00 2001 From: Callum Oakley Date: Thu, 30 Mar 2017 14:20:18 +0100 Subject: [PATCH 180/183] changed hotkey cluster to accomodate awkward software... again --- keyboards/planck/keymaps/callum/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c index d50b0431..09063cb9 100644 --- a/keyboards/planck/keymaps/callum/keymap.c +++ b/keyboards/planck/keymaps/callum/keymap.c @@ -14,7 +14,7 @@ extern keymap_config_t keymap_config; #define _FUNC 4 #define ENDASH LALT(KC_MINS) #define POUND LALT(KC_3) -#define H(X) RALT(X) +#define H(X) LALT(LCTL(X)) enum planck_keycodes { MOVE = SAFE_RANGE, From 7e54332890f4c376314f942574c6183c87a6e9c8 Mon Sep 17 00:00:00 2001 From: nielsenz Date: Thu, 30 Mar 2017 19:15:43 -0700 Subject: [PATCH 181/183] Pulling and pushing troubles --- quantum/process_keycode/process_unicode.c | 75 ------------------- .../process_keycode/process_unicode_common.c | 15 ++++ 2 files changed, 15 insertions(+), 75 deletions(-) diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index cecfaeee..1f16b9bd 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -16,81 +16,6 @@ #include "process_unicode.h" #include "action_util.h" -static uint8_t input_mode; -static uint8_t first_flag = 0; - -__attribute__((weak)) -uint16_t hex_to_keycode(uint8_t hex) -{ - if (hex == 0x0) { - return KC_0; - } else if (hex < 0xA) { - return KC_1 + (hex - 0x1); - } else { - return KC_A + (hex - 0xA); - } -} - -void set_unicode_input_mode(uint8_t os_target) -{ - input_mode = os_target; - eeprom_update_byte(EECONFIG_UNICODEMODE, os_target); -} - -uint8_t get_unicode_input_mode(void) { - return input_mode; -} - -__attribute__((weak)) -void unicode_input_start (void) { - switch(input_mode) { - case UC_OSX: - register_code(KC_LALT); - break; - case UC_LNX: - register_code(KC_LCTL); - register_code(KC_LSFT); - register_code(KC_U); - unregister_code(KC_U); - unregister_code(KC_LSFT); - unregister_code(KC_LCTL); - break; - case UC_WIN: - register_code(KC_LALT); - register_code(KC_PPLS); - unregister_code(KC_PPLS); - break; - case UC_WINC: - register_code(KC_RALT); - unregister_code(KC_RALT); - register_code(KC_U); - unregister_code(KC_U); - } - wait_ms(UNICODE_TYPE_DELAY); -} - -__attribute__((weak)) -void unicode_input_finish (void) { - switch(input_mode) { - case UC_OSX: - case UC_WIN: - unregister_code(KC_LALT); - break; - case UC_LNX: - register_code(KC_SPC); - unregister_code(KC_SPC); - break; - } -} - -void register_hex(uint16_t hex) { - for(int i = 3; i >= 0; i--) { - uint8_t digit = ((hex >> (i*4)) & 0xF); - register_code(hex_to_keycode(digit)); - unregister_code(hex_to_keycode(digit)); - } -} - bool process_unicode(uint16_t keycode, keyrecord_t *record) { if (keycode > QK_UNICODE && record->event.pressed) { diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c index 6012b4f0..b4d4231d 100644 --- a/quantum/process_keycode/process_unicode_common.c +++ b/quantum/process_keycode/process_unicode_common.c @@ -16,11 +16,14 @@ #include "process_unicode_common.h" +static uint8_t input_mode; +static uint8_t first_flag = 0; uint8_t mods; void set_unicode_input_mode(uint8_t os_target) { input_mode = os_target; + eeprom_update_byte(EECONFIG_UNICODEMODE, os_target); } uint8_t get_unicode_input_mode(void) { @@ -92,6 +95,18 @@ void unicode_input_finish (void) { if (mods & MOD_BIT(KC_RGUI)) register_code(KC_RGUI); } +__attribute__((weak)) +uint16_t hex_to_keycode(uint8_t hex) +{ + if (hex == 0x0) { + return KC_0; + } else if (hex < 0xA) { + return KC_1 + (hex - 0x1); + } else { + return KC_A + (hex - 0xA); + } +} + void register_hex(uint16_t hex) { for(int i = 3; i >= 0; i--) { uint8_t digit = ((hex >> (i*4)) & 0xF); From d1e66e2e0715c680a8da3216525b54fd8f2b671f Mon Sep 17 00:00:00 2001 From: nielsenz Date: Thu, 30 Mar 2017 20:10:34 -0700 Subject: [PATCH 182/183] Worked around some new Makefile issues. --- keyboards/planck/keymaps/zach/Makefile | 2 +- keyboards/planck/keymaps/zach/config.h | 2 +- .../keymaps/zach/zach_common_functions.c | 50 +++++++++---------- keyboards/preonic/keymaps/zach/Makefile | 4 +- keyboards/preonic/keymaps/zach/config.h | 2 +- .../keymaps/zach/zach_common_functions.c | 50 +++++++++---------- quantum/process_keycode/process_tap_dance.c | 2 + quantum/process_keycode/process_unicode.c | 1 + .../process_keycode/process_unicode_common.c | 1 - 9 files changed, 58 insertions(+), 56 deletions(-) diff --git a/keyboards/planck/keymaps/zach/Makefile b/keyboards/planck/keymaps/zach/Makefile index 977f1a90..9d86fc81 100644 --- a/keyboards/planck/keymaps/zach/Makefile +++ b/keyboards/planck/keymaps/zach/Makefile @@ -17,7 +17,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 #VARIABLE_TRACE = no # Debug changes to variable values -UNICODE_ENABLE = yes # Unicode +UNICODE_ENABLE = no # Unicode (can't be used with unicodemap) UNICODEMAP_ENABLE = yes # Enable extended 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. diff --git a/keyboards/planck/keymaps/zach/config.h b/keyboards/planck/keymaps/zach/config.h index 7deb9ebf..d309c949 100644 --- a/keyboards/planck/keymaps/zach/config.h +++ b/keyboards/planck/keymaps/zach/config.h @@ -77,7 +77,7 @@ along with this program. If not, see . /* disable action features */ //#define NO_ACTION_LAYER #define NO_ACTION_TAPPING -#define NO_ACTION_ONESHOT +//#define NO_ACTION_ONESHOT #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION #define PREVENT_STUCK_MODIFIERS diff --git a/keyboards/planck/keymaps/zach/zach_common_functions.c b/keyboards/planck/keymaps/zach/zach_common_functions.c index b77f2b24..2c47b228 100644 --- a/keyboards/planck/keymaps/zach/zach_common_functions.c +++ b/keyboards/planck/keymaps/zach/zach_common_functions.c @@ -141,31 +141,31 @@ qk_tap_dance_action_t tap_dance_actions[] = { }; #endif -#ifdef UNICODE_ENABLE +//#ifdef UNICODE_ENABLE // Unicode shortcuts -#define IBANG UC(0x203D) -#define RAROW UC(0x2192) -#define LAROW UC(0x2190) -#define DEGREE UC(0x00B0) -#define OMEGA UC(0x03A9) -#define WOMEGA UC(0x03C9) -#define MICRO UC(0x00B5) -#define PLUMIN UC(0x00B1) -#define SUPA2 UC(0x00B2) -#define ROMAN1 UC(0x2160) -#define ROMAN2 UC(0x2161) -#define ROMAN3 UC(0x2162) -#define ROMAN4 UC(0x2163) -#define ROMAN5 UC(0x2164) -#define ROMAN6 UC(0x2165) -#define ROMAN7 UC(0x2166) -#define roman1 UC(0x2170) -#define roman2 UC(0x2171) -#define roman3 UC(0x2172) -#define roman4 UC(0x2173) -#define roman5 UC(0x2174) -#define roman6 UC(0x2175) -#define roman7 UC(0x2176) +#define IBANG X(0x203D) +#define RAROW X(0x2192) +#define LAROW X(0x2190) +#define DEGREE X(0x00B0) +#define OMEGA X(0x03A9) +#define WOMEGA X(0x03C9) +#define MICRO X(0x00B5) +#define PLUMIN X(0x00B1) +#define SUPA2 X(0x00B2) +#define ROMAN1 X(0x2160) +#define ROMAN2 X(0x2161) +#define ROMAN3 X(0x2162) +#define ROMAN4 X(0x2163) +#define ROMAN5 X(0x2164) +#define ROMAN6 X(0x2165) +#define ROMAN7 X(0x2166) +#define roman1 X(0x2170) +#define roman2 X(0x2171) +#define roman3 X(0x2172) +#define roman4 X(0x2173) +#define roman5 X(0x2174) +#define roman6 X(0x2175) +#define roman7 X(0x2176) #ifdef UNICODEMAP_ENABLE // For Unicode characters larger than 0x8000. Send with X() enum Ext_Unicode{ @@ -192,7 +192,7 @@ const uint32_t PROGMEM unicode_map[] = { #define TMBL X(TUMBLER) #endif -#endif +//#endif static uint16_t key_timer; static uint8_t caps_status = 0; diff --git a/keyboards/preonic/keymaps/zach/Makefile b/keyboards/preonic/keymaps/zach/Makefile index f0a84aba..eebf4134 100644 --- a/keyboards/preonic/keymaps/zach/Makefile +++ b/keyboards/preonic/keymaps/zach/Makefile @@ -17,8 +17,8 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 #VARIABLE_TRACE = no # Debug changes to variable values -UNICODE_ENABLE = yes # Unicode -UNICODEMAP_ENABLE = no # Enable extended unicode +UNICODE_ENABLE = no # Unicode +UNICODEMAP_ENABLE = yes # Enable extended 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 diff --git a/keyboards/preonic/keymaps/zach/config.h b/keyboards/preonic/keymaps/zach/config.h index 59959524..bb8913c7 100644 --- a/keyboards/preonic/keymaps/zach/config.h +++ b/keyboards/preonic/keymaps/zach/config.h @@ -84,7 +84,7 @@ along with this program. If not, see . /* disable action features */ //#define NO_ACTION_LAYER #define NO_ACTION_TAPPING -#define NO_ACTION_ONESHOT +//#define NO_ACTION_ONESHOT #define NO_ACTION_MACRO #define NO_ACTION_FUNCTION #define PREVENT_STUCK_MODIFIERS diff --git a/keyboards/preonic/keymaps/zach/zach_common_functions.c b/keyboards/preonic/keymaps/zach/zach_common_functions.c index b77f2b24..2c47b228 100644 --- a/keyboards/preonic/keymaps/zach/zach_common_functions.c +++ b/keyboards/preonic/keymaps/zach/zach_common_functions.c @@ -141,31 +141,31 @@ qk_tap_dance_action_t tap_dance_actions[] = { }; #endif -#ifdef UNICODE_ENABLE +//#ifdef UNICODE_ENABLE // Unicode shortcuts -#define IBANG UC(0x203D) -#define RAROW UC(0x2192) -#define LAROW UC(0x2190) -#define DEGREE UC(0x00B0) -#define OMEGA UC(0x03A9) -#define WOMEGA UC(0x03C9) -#define MICRO UC(0x00B5) -#define PLUMIN UC(0x00B1) -#define SUPA2 UC(0x00B2) -#define ROMAN1 UC(0x2160) -#define ROMAN2 UC(0x2161) -#define ROMAN3 UC(0x2162) -#define ROMAN4 UC(0x2163) -#define ROMAN5 UC(0x2164) -#define ROMAN6 UC(0x2165) -#define ROMAN7 UC(0x2166) -#define roman1 UC(0x2170) -#define roman2 UC(0x2171) -#define roman3 UC(0x2172) -#define roman4 UC(0x2173) -#define roman5 UC(0x2174) -#define roman6 UC(0x2175) -#define roman7 UC(0x2176) +#define IBANG X(0x203D) +#define RAROW X(0x2192) +#define LAROW X(0x2190) +#define DEGREE X(0x00B0) +#define OMEGA X(0x03A9) +#define WOMEGA X(0x03C9) +#define MICRO X(0x00B5) +#define PLUMIN X(0x00B1) +#define SUPA2 X(0x00B2) +#define ROMAN1 X(0x2160) +#define ROMAN2 X(0x2161) +#define ROMAN3 X(0x2162) +#define ROMAN4 X(0x2163) +#define ROMAN5 X(0x2164) +#define ROMAN6 X(0x2165) +#define ROMAN7 X(0x2166) +#define roman1 X(0x2170) +#define roman2 X(0x2171) +#define roman3 X(0x2172) +#define roman4 X(0x2173) +#define roman5 X(0x2174) +#define roman6 X(0x2175) +#define roman7 X(0x2176) #ifdef UNICODEMAP_ENABLE // For Unicode characters larger than 0x8000. Send with X() enum Ext_Unicode{ @@ -192,7 +192,7 @@ const uint32_t PROGMEM unicode_map[] = { #define TMBL X(TUMBLER) #endif -#endif +//#endif static uint16_t key_timer; static uint8_t caps_status = 0; diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 68c8425b..b807ec3c 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -16,6 +16,8 @@ #include "quantum.h" #include "action_tapping.h" +uint8_t get_oneshot_mods(void); + static uint16_t last_td; static int8_t highest_td = -1; diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index 1f16b9bd..678a1523 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c @@ -16,6 +16,7 @@ #include "process_unicode.h" #include "action_util.h" +static uint8_t first_flag = 0; bool process_unicode(uint16_t keycode, keyrecord_t *record) { if (keycode > QK_UNICODE && record->event.pressed) { diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c index b4d4231d..1dbdec3e 100644 --- a/quantum/process_keycode/process_unicode_common.c +++ b/quantum/process_keycode/process_unicode_common.c @@ -17,7 +17,6 @@ #include "process_unicode_common.h" static uint8_t input_mode; -static uint8_t first_flag = 0; uint8_t mods; void set_unicode_input_mode(uint8_t os_target) From caab4d7e4576c10e45becea4a8fc69a7c9c064e0 Mon Sep 17 00:00:00 2001 From: Osamu Aoki Date: Sat, 1 Apr 2017 01:39:00 +0900 Subject: [PATCH 183/183] Fix typo --- doc/keymap.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/keymap.md b/doc/keymap.md index bc780990..3ea138ea 100644 --- a/doc/keymap.md +++ b/doc/keymap.md @@ -6,12 +6,12 @@ QMK is based on TMK. Understanding the essential changes made should help you ## TMK vs. QMK -| Firmware |TMK |QMK | -|-------------------------------------------------|-----------------------|-------------------------| -| Maintainer |hasu |Jack Humbert et al. | -| Build path customization | `TMK_DIR = ...` | `include .../Makefile` | -| `keymaps` data | 3D array of `uint8_t` holding **keycode** | 3D array of `uint16_t` holding **action code** | -| `fn_actions` data | 1D array of `uint16_t` holding **action code** | 3D array of `uint16_t` holding **action code** | +| Firmware |TMK |QMK | +|---------------------------|-----------------------|-------------------------| +| Maintainer |hasu |Jack Humbert et al. | +| Build path customization | `TMK_DIR = ...` | `include .../Makefile` | +| `keymaps` data | 3D array of `uint8_t` holding **keycode** | 3D array of `uint16_t` holding **action code** | +| `fn_actions` data | 1D array of `uint16_t` holding **action code** | 1D array of `uint16_t` holding **action code** | Since QMK is based on TMK and uses major portion of TMK code as is, understanding the essential changes made should help you understand the code. @@ -45,7 +45,7 @@ Keymap layer has its state in two 32 bit parameters: * **`default_layer_state`** indicates a base keymap layer(0-31) which is always valid and to be referred. * **`layer_state`** () has current on/off status of the layer on its each bit. -Keymap has its state in two parameter**`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit. +Keymap has its state in two parameter **`default_layer`** indicates a base keymap layer(0-31) which is always valid and to be referred, **`keymap_stat`** is 16bit variable which has current on/off status of layers on its each bit. Keymap layer '0' is usually `default_layer` and which is the only valid layer and other layers is initially off after boot up firmware, though, you can configured them in `config.h`. To change `default_layer` will be useful when you switch key layout completely, say you want Colmak instead of Qwerty.

    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 literal 0 HcmV?d00001 diff --git a/keyboards/clueboard/keymaps/skully/readme.md b/keyboards/clueboard/keymaps/skully/readme.md index c1182123..08255dfb 100644 --- a/keyboards/clueboard/keymaps/skully/readme.md +++ b/keyboards/clueboard/keymaps/skully/readme.md @@ -1,3 +1,14 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +![Clueboard Layout Image](layout.png) + # skullY's Clueboard Layout This layout is what I (@skullydazed) use on my personal Clueboards. I mostly use it for programming, CAD, and general typing. diff --git a/keyboards/clueboard/keymaps/unix_optimized/keymap.c b/keyboards/clueboard/keymaps/unix_optimized/keymap.c new file mode 100644 index 00000000..9fbd7724 --- /dev/null +++ b/keyboards/clueboard/keymaps/unix_optimized/keymap.c @@ -0,0 +1,83 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = KEYMAP( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ + KC_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_LGUI, KC_LALT, KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_INS, \ + _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, KC_DEL, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD,RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(0), // Calls action_function() +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t mods_pressed; + + 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) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} diff --git a/keyboards/clueboard/keymaps/unix_optimized/layout.png b/keyboards/clueboard/keymaps/unix_optimized/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7d30e35735472aaa4b619ceb13879ab4132c4c GIT binary patch literal 111171 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 literal 0 HcmV?d00001 diff --git a/keyboards/clueboard/keymaps/unix_optimized/readme.md b/keyboards/clueboard/keymaps/unix_optimized/readme.md new file mode 100644 index 00000000..3510e138 --- /dev/null +++ b/keyboards/clueboard/keymaps/unix_optimized/readme.md @@ -0,0 +1,15 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +![Clueboard Layout Image](layout.png) + +# Default Clueboard Layout + +This is the default layout except that Caps Lock has been changed to Control +and Insert and Delete have been put into the Fn layer. diff --git a/keyboards/clueboard/keymaps/win_optimized/keymap.c b/keyboards/clueboard/keymaps/win_optimized/keymap.c new file mode 100644 index 00000000..a85f0824 --- /dev/null +++ b/keyboards/clueboard/keymaps/win_optimized/keymap.c @@ -0,0 +1,83 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = KEYMAP( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_INS, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \ + _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(0), // Calls action_function() +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t mods_pressed; + + 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) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} diff --git a/keyboards/clueboard/keymaps/win_optimized/layout.png b/keyboards/clueboard/keymaps/win_optimized/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8c82da7c1893905a9a41cbfeedbe0bee6b8932 GIT binary patch literal 110405 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 Date: Thu, 16 Feb 2017 14:04:04 -0800 Subject: [PATCH 015/183] Add the mouse_keys layout --- keyboards/clueboard/keymaps/mouse_keys/Makefile | 1 + keyboards/clueboard/keymaps/mouse_keys/keymap.c | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 keyboards/clueboard/keymaps/mouse_keys/Makefile diff --git a/keyboards/clueboard/keymaps/mouse_keys/Makefile b/keyboards/clueboard/keymaps/mouse_keys/Makefile new file mode 100644 index 00000000..6c605dae --- /dev/null +++ b/keyboards/clueboard/keymaps/mouse_keys/Makefile @@ -0,0 +1 @@ +MOUSEKEY_ENABLE = yes diff --git a/keyboards/clueboard/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/keymaps/mouse_keys/keymap.c index 37f00e8d..a9c5cebd 100644 --- a/keyboards/clueboard/keymaps/mouse_keys/keymap.c +++ b/keyboards/clueboard/keymaps/mouse_keys/keymap.c @@ -11,6 +11,7 @@ #define _BL 0 #define _FL 1 #define _CL 2 +#define _ML 3 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: Base Layer (Default Layer) @@ -39,6 +40,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), + + /* Keymap _ML: Mouse layer + */ + [_ML] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \ + _______, _______, KC_BTN3,KC_BTN2,KC_BTN1,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_MS_U, \ + _______, _______, _______,_______, LT(_ML, KC_SPC),LT(_ML, KC_SPC), _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_MS_L, KC_MS_D,KC_MS_R), }; /* This is a list of user defined functions. F(N) corresponds to item N From db1e9a469a8dda068a913fe570c86a1fefc1b4cd Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 19 Feb 2017 00:11:55 -0500 Subject: [PATCH 016/183] helps to save before committing --- quantum/quantum.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/quantum/quantum.c b/quantum/quantum.c index 761ba37f..582f8920 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -7,14 +7,12 @@ #define TAPPING_TERM 200 #endif -<<<<<<< HEAD #include "backlight.h" extern backlight_config_t backlight_config; -======= + #ifdef FAUXCLICKY_ENABLE #include "fauxclicky.h" #endif ->>>>>>> 49e72632d2200fc3bf71d5ced2aa43058da3b2e0 static void do_code16 (uint16_t code, void (*f) (uint8_t)) { switch (code) { From 5ae1411fc387a682d3e22f5cddfe1102e3312af5 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Thu, 16 Feb 2017 20:49:02 -0800 Subject: [PATCH 017/183] Expand MIDI key codes --- quantum/quantum_keycodes.h | 114 ++++++++++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 63b62692..3728fa36 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -107,10 +107,122 @@ enum quantum_keycodes { MUV_IN, MUV_DE, - // Midi mode on/off +#ifdef MIDI_ENABLE + // Midi MIDI_ON, MIDI_OFF, + MIDI_TONE_MIN, + + MI_C = MIDI_TONE_MIN, + MI_Cs, + MI_Db = MI_Cs, + MI_D, + MI_Ds, + MI_Eb = MI_Ds, + MI_E, + MI_F, + MI_Fs, + MI_Gb = MI_Fs, + MI_G, + MI_Gs, + MI_Ab = MI_Gs, + MI_A, + MI_As, + MI_Bb = MI_As, + MI_B, + + MI_C_1, + MI_Cs_1, + MI_Db_1 = MI_Cs_1, + MI_D_1, + MI_Ds_1, + MI_Eb_1 = MI_Ds_1, + MI_E_1, + MI_F_1, + MI_Fs_1, + MI_Gb_1 = MI_Fs_1, + MI_G_1, + MI_Gs_1, + MI_Ab_1 = MI_Gs_1, + MI_A_1, + MI_As_1, + MI_Bb_1 = MI_As_1, + MI_B_1, + + MI_C_2, + MI_Cs_2, + MI_Db_2 = MI_Cs_2, + MI_D_2, + MI_Ds_2, + MI_Eb_2 = MI_Ds_2, + MI_E_2, + MI_F_2, + MI_Fs_2, + MI_Gb_2 = MI_Fs_2, + MI_G_2, + MI_Gs_2, + MI_Ab_2 = MI_Gs_2, + MI_A_2, + MI_As_2, + MI_Bb_2 = MI_As_2, + MI_B_2, + + MIDI_TONE_MAX = MI_B_2, + + MIDI_OCTAVE_MIN, + MI_OCT_N2 = MIDI_OCTAVE_MIN, + MI_OCT_N1, + MI_OCT_0, + MI_OCT_1, + MI_OCT_2, + MI_OCT_3, + MI_OCT_4, + MI_OCT_5, + MI_OCT_6, + MI_OCT_7, + MIDI_OCTAVE_MAX = MI_OCT_7, + MI_OCTD, // octave down + MI_OCTU, // octave up + + MIDI_VELOCITY_MIN, + MI_VEL_1 = MIDI_VELOCITY_MIN, + MI_VEL_2, + MI_VEL_3, + MI_VEL_5, + MI_VEL_6, + MI_VEL_7, + MI_VEL_8, + MI_VEL_9, + MI_VEL_10, + MIDI_VELOCITY_MAX = MI_VEL_10, + MI_VELD, // velocity down + MI_VELU, // velocity up + + MIDI_CHANNEL_MIN, + MI_CH1 = MIDI_CHANNEL_MIN, + MI_CH2, + MI_CH3, + MI_CH4, + MI_CH5, + MI_CH6, + MI_CH7, + MI_CH8, + MI_CH9, + MI_CH10, + MI_CH11, + MI_CH12, + MI_CH13, + MI_CH14, + MI_CH15, + MI_CH16, + MIDI_CHANNEL_MAX = MI_CH16, + MI_CHD, // previous channel + MI_CHU, // next channel + + MI_SUS, // sustain +#endif + // Backlight functionality BL_0, BL_1, From e405ab4bc6ff47d189d99c4d51aadf60a642d82a Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 03:12:13 -0800 Subject: [PATCH 018/183] initial implementation of polyphony using variable length array of notes on --- quantum/process_keycode/process_midi.c | 199 ++++++++++++++++++++++++- quantum/process_keycode/process_midi.h | 3 + quantum/quantum_keycodes.h | 1 + tmk_core/protocol/lufa/lufa.c | 13 +- tmk_core/protocol/lufa/lufa.h | 2 +- 5 files changed, 211 insertions(+), 7 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 577dad43..bc48b390 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,10 +1,204 @@ #include "process_midi.h" +#if 0 bool midi_activated = false; uint8_t midi_starting_note = 0x0C; int midi_offset = 7; +#endif + +typedef union { + uint16_t raw; + struct { + uint8_t octave :4; + uint8_t velocity :4; + uint8_t channel :4; + }; +} midi_config_t; + +midi_config_t midi_config; + +#define MIDI_INVALID_NOTE 0xFF + +#if 0 +typedef struct { + uint64_t low; + uint64_t high; +} uint128_t; + +#if 0 +static void right_shift_uint128_t(uint128_t* val, uint8_t shift) +{ + uint64_t high_mask = ~0 >> (64 - shift); + uint64_t high_bits = (val->high & high_mask) << (64 - shift); + val->high = val->high >> shift; + val->low = (val->low >> shift) | high_bits; +} +#endif + +static uint64_t left_shift_uint64_t(uint64_t val, uint8_t shift) +{ + dprintf("left_shift_uint64_t(val, %c) ...\n", val, shift); + while (shift > 16u) { + dprintf(" left_shift_uint64_t: val=?, shift=%c\n", val, shift); + val <<= 16; + shift -= 16; + } + dprintf(" left_shift_uint64_t: val=?, shift=%c\n", val, shift); + val <<= shift; + return val; +} + +static void set_bit_uint128_t(uint128_t* val, uint8_t shift) +{ + uint64_t x = 1u; + + if (shift < 64) + { + x = left_shift_uint64_t(x, shift); + dprintf("x: %d\n", x); + dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, 0, x); + val->low = val->low | left_shift_uint64_t(1u, shift); + } + else + { + x = left_shift_uint64_t(x, shift - 64); + dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, x, 0); + val->high = val->high | left_shift_uint64_t(1u, shift - 64); + } +} + +static void clear_bit_uint128_t(uint128_t* val, uint8_t shift) +{ + if (shift < 64) + { + val->low = val->low & ~left_shift_uint64_t(1u, shift); + } + else + { + val->high = val->high & ~left_shift_uint64_t(1u, shift - 64); + } +} -bool process_midi(uint16_t keycode, keyrecord_t *record) { +static bool is_bit_set_uint128_t(const uint128_t* val, uint8_t shift) +{ + if (shift < 64) + { + return !!(val->low & (1u << shift)); + } + else + { + return !!(val->high & (1u << (shift - 64))); + } +} + +uint128_t note_status = { 0, 0 }; +#endif + + +#define MIDI_MAX_NOTES_ON 10 + +typedef struct { + uint8_t note; + uint8_t tone; +} midi_notes_on_array_entry_t; + +typedef struct { + uint8_t length; + midi_notes_on_array_entry_t values[MIDI_MAX_NOTES_ON]; +} midi_notes_on_array_t; + +static midi_notes_on_array_t notes_on; + +inline uint8_t compute_velocity(uint8_t setting) +{ + return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1)); +} + +void midi_init(void) +{ + midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; + midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN); + midi_config.channel = 0; + notes_on.length = 0; +} + +bool process_midi(uint16_t keycode, keyrecord_t *record) +{ + switch (keycode) { + case MIDI_TONE_MIN ... MIDI_TONE_MAX: + { + uint8_t channel = midi_config.channel; + uint8_t tone = keycode - MIDI_TONE_MIN; + uint8_t velocity = compute_velocity(midi_config.velocity); + if (record->event.pressed && notes_on.length < MIDI_MAX_NOTES_ON) { + uint8_t note = 12 * midi_config.octave + tone; + midi_send_noteon(&midi_device, channel, note, velocity); + dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity); + notes_on.values[notes_on.length].note = note; + notes_on.values[notes_on.length].tone = tone; + notes_on.length++; + } + else { + for (uint8_t i = 0; i < notes_on.length; i++) { + uint8_t note = notes_on.values[i].note; + if (tone == notes_on.values[i].tone) { + midi_send_noteoff(&midi_device, channel, note, velocity); + dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity); + + for (uint8_t j=i; j < notes_on.length - 1; j++) + { + notes_on.values[j] = notes_on.values[j + 1]; + } + + notes_on.length--; + break; + } + } + } + return false; + } + case MIDI_OCTAVE_MIN ... MIDI_OCTAVE_MAX: + if (record->event.pressed) + midi_config.octave = keycode - MIDI_OCTAVE_MIN; + return false; + case MI_OCTD: + if (record->event.pressed && midi_config.octave > 0) + midi_config.octave--; + return false; + case MI_OCTU: + if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN)) + midi_config.octave++; + return false; + case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX: + if (record->event.pressed) + midi_config.velocity = keycode - MIDI_VELOCITY_MIN; + return false; + case MI_VELD: + if (record->event.pressed && midi_config.velocity > 0) + midi_config.velocity--; + return false; + case MI_VELU: + if (record->event.pressed) + midi_config.velocity++; + return false; + case MIDI_CHANNEL_MIN ... MIDI_CHANNEL_MAX: + if (record->event.pressed) + midi_config.channel = keycode - MIDI_CHANNEL_MIN; + return false; + case MI_CHD: + if (record->event.pressed) + midi_config.channel--; + return false; + case MI_CHU: + if (record->event.pressed) + midi_config.channel++; + return false; + case MI_SUS: + //TODO + return false; + }; + +#if 0 if (keycode == MI_ON && record->event.pressed) { midi_activated = true; #ifdef AUDIO_ENABLE @@ -64,5 +258,6 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) { if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through return false; } - return true; +#endif + return true; } diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h index acd4fc1b..b0e0aeb8 100644 --- a/quantum/process_keycode/process_midi.h +++ b/quantum/process_keycode/process_midi.h @@ -2,6 +2,9 @@ #define PROCESS_MIDI_H #include "quantum.h" +#include "midi.h" + +void midi_init(void); bool process_midi(uint16_t keycode, keyrecord_t *record); diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 3728fa36..a024a963 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -189,6 +189,7 @@ enum quantum_keycodes { MI_VEL_1 = MIDI_VELOCITY_MIN, MI_VEL_2, MI_VEL_3, + MI_VEL_4, MI_VEL_5, MI_VEL_6, MI_VEL_7, diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index ba49284c..fb60658d 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1101,16 +1101,21 @@ void cc_callback(MidiDevice * device, uint8_t chan, uint8_t num, uint8_t val); void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data); + +void setup_midi(void) +{ + midi_init(); + midi_device_init(&midi_device); + midi_device_set_send_func(&midi_device, usb_send_func); + midi_device_set_pre_input_process_func(&midi_device, usb_get_midi); +} #endif int main(void) __attribute__ ((weak)); int main(void) { - #ifdef MIDI_ENABLE - midi_device_init(&midi_device); - midi_device_set_send_func(&midi_device, usb_send_func); - midi_device_set_pre_input_process_func(&midi_device, usb_get_midi); + setup_midi(); #endif setup_mcu(); diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h index a049fd43..a5157378 100644 --- a/tmk_core/protocol/lufa/lufa.h +++ b/tmk_core/protocol/lufa/lufa.h @@ -49,7 +49,7 @@ #include #include "host.h" #ifdef MIDI_ENABLE - #include "midi.h" + #include "process_midi.h" #endif #ifdef __cplusplus extern "C" { From f2b2e05f126403c8a6f0fc3d542beddac7974e9b Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 03:13:43 -0800 Subject: [PATCH 019/183] clean up commented code --- quantum/process_keycode/process_midi.c | 137 ------------------------- 1 file changed, 137 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index bc48b390..acaae7c3 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -19,82 +19,6 @@ midi_config_t midi_config; #define MIDI_INVALID_NOTE 0xFF -#if 0 -typedef struct { - uint64_t low; - uint64_t high; -} uint128_t; - -#if 0 -static void right_shift_uint128_t(uint128_t* val, uint8_t shift) -{ - uint64_t high_mask = ~0 >> (64 - shift); - uint64_t high_bits = (val->high & high_mask) << (64 - shift); - val->high = val->high >> shift; - val->low = (val->low >> shift) | high_bits; -} -#endif - -static uint64_t left_shift_uint64_t(uint64_t val, uint8_t shift) -{ - dprintf("left_shift_uint64_t(val, %c) ...\n", val, shift); - while (shift > 16u) { - dprintf(" left_shift_uint64_t: val=?, shift=%c\n", val, shift); - val <<= 16; - shift -= 16; - } - dprintf(" left_shift_uint64_t: val=?, shift=%c\n", val, shift); - val <<= shift; - return val; -} - -static void set_bit_uint128_t(uint128_t* val, uint8_t shift) -{ - uint64_t x = 1u; - - if (shift < 64) - { - x = left_shift_uint64_t(x, shift); - dprintf("x: %d\n", x); - dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, 0, x); - val->low = val->low | left_shift_uint64_t(1u, shift); - } - else - { - x = left_shift_uint64_t(x, shift - 64); - dprintf("set_bit_uint128_t (%d): 0x%016X%016X\n", shift, x, 0); - val->high = val->high | left_shift_uint64_t(1u, shift - 64); - } -} - -static void clear_bit_uint128_t(uint128_t* val, uint8_t shift) -{ - if (shift < 64) - { - val->low = val->low & ~left_shift_uint64_t(1u, shift); - } - else - { - val->high = val->high & ~left_shift_uint64_t(1u, shift - 64); - } -} - -static bool is_bit_set_uint128_t(const uint128_t* val, uint8_t shift) -{ - if (shift < 64) - { - return !!(val->low & (1u << shift)); - } - else - { - return !!(val->high & (1u << (shift - 64))); - } -} - -uint128_t note_status = { 0, 0 }; -#endif - - #define MIDI_MAX_NOTES_ON 10 typedef struct { @@ -198,66 +122,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) return false; }; -#if 0 - if (keycode == MI_ON && record->event.pressed) { - midi_activated = true; -#ifdef AUDIO_ENABLE - music_scale_user(); -#endif - return false; - } - - if (keycode == MI_OFF && record->event.pressed) { - midi_activated = false; - midi_send_cc(&midi_device, 0, 0x7B, 0); - return false; - } - - if (midi_activated) { - if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - midi_starting_note++; // Change key - midi_send_cc(&midi_device, 0, 0x7B, 0); - } - return false; - } - if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - midi_starting_note--; // Change key - midi_send_cc(&midi_device, 0, 0x7B, 0); - } - return false; - } - if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - midi_offset++; // Change scale - midi_send_cc(&midi_device, 0, 0x7B, 0); - return false; - } - if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - midi_offset--; // Change scale - midi_send_cc(&midi_device, 0, 0x7B, 0); - return false; - } - // basic - // uint8_t note = (midi_starting_note + SCALE[record->event.key.col + midi_offset])+12*(MATRIX_ROWS - record->event.key.row); - // advanced - // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+12*(MATRIX_ROWS - record->event.key.row); - // guitar - uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+5*(MATRIX_ROWS - record->event.key.row); - // violin - // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+7*(MATRIX_ROWS - record->event.key.row); - - if (record->event.pressed) { - // midi_send_noteon(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127); - midi_send_noteon(&midi_device, 0, note, 127); - } else { - // midi_send_noteoff(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127); - midi_send_noteoff(&midi_device, 0, note, 127); - } - - if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through - return false; - } -#endif return true; } From a4163466cb09144a96e2ea7bc697af1af8a5e770 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 03:40:49 -0800 Subject: [PATCH 020/183] Alternative version with a tone array tone array: text data bss dec hex filename 0 25698 0 25698 6462 satan_newsboytko.hex 0x6480 bytes written into 0x7000 bytes memory (89.73%). note on array: text data bss dec hex filename 0 25802 0 25802 64ca satan_newsboytko.hex 0x6500 bytes written into 0x7000 bytes memory (90.18%). --- quantum/process_keycode/process_midi.c | 109 +++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index acaae7c3..4fbb2881 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -19,6 +19,10 @@ midi_config_t midi_config; #define MIDI_INVALID_NOTE 0xFF +#define MIDI_USE_NOTE_ON_ARRAY + +#ifdef MIDI_USE_NOTE_ON_ARRAY + #define MIDI_MAX_NOTES_ON 10 typedef struct { @@ -33,6 +37,15 @@ typedef struct { static midi_notes_on_array_t notes_on; +#else + +#define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1) +static uint8_t tone_status[MIDI_TONE_COUNT]; + +#endif + + + inline uint8_t compute_velocity(uint8_t setting) { return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1)); @@ -43,7 +56,14 @@ void midi_init(void) midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN); midi_config.channel = 0; + #ifdef MIDI_USE_NOTE_ON_ARRAY notes_on.length = 0; + #else + for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++) + { + tone_status[i] = MIDI_INVALID_NOTE; + } + #endif } bool process_midi(uint16_t keycode, keyrecord_t *record) @@ -54,15 +74,31 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) uint8_t channel = midi_config.channel; uint8_t tone = keycode - MIDI_TONE_MIN; uint8_t velocity = compute_velocity(midi_config.velocity); + #ifdef MIDI_USE_NOTE_ON_ARRAY if (record->event.pressed && notes_on.length < MIDI_MAX_NOTES_ON) { + #else + if (record->event.pressed) { + #endif uint8_t note = 12 * midi_config.octave + tone; midi_send_noteon(&midi_device, channel, note, velocity); dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity); + + #ifdef MIDI_USE_NOTE_ON_ARRAY + notes_on.values[notes_on.length].note = note; notes_on.values[notes_on.length].tone = tone; notes_on.length++; + + #else + + tone_status[tone] = note; + + #endif } else { + + #ifdef MIDI_USE_NOTE_ON_ARRAY + for (uint8_t i = 0; i < notes_on.length; i++) { uint8_t note = notes_on.values[i].note; if (tone == notes_on.values[i].tone) { @@ -78,6 +114,18 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) break; } } + + #else + + uint8_t note = tone_status[tone]; + if (note != MIDI_INVALID_NOTE) + { + midi_send_noteoff(&midi_device, channel, note, velocity); + dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity); + } + tone_status[tone] = MIDI_INVALID_NOTE; + + #endif } return false; } @@ -122,5 +170,66 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) return false; }; +#if 0 + if (keycode == MI_ON && record->event.pressed) { + midi_activated = true; +#ifdef AUDIO_ENABLE + music_scale_user(); +#endif + return false; + } + + if (keycode == MI_OFF && record->event.pressed) { + midi_activated = false; + midi_send_cc(&midi_device, 0, 0x7B, 0); + return false; + } + + if (midi_activated) { + if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) { + if (record->event.pressed) { + midi_starting_note++; // Change key + midi_send_cc(&midi_device, 0, 0x7B, 0); + } + return false; + } + if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) { + if (record->event.pressed) { + midi_starting_note--; // Change key + midi_send_cc(&midi_device, 0, 0x7B, 0); + } + return false; + } + if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { + midi_offset++; // Change scale + midi_send_cc(&midi_device, 0, 0x7B, 0); + return false; + } + if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { + midi_offset--; // Change scale + midi_send_cc(&midi_device, 0, 0x7B, 0); + return false; + } + // basic + // uint8_t note = (midi_starting_note + SCALE[record->event.key.col + midi_offset])+12*(MATRIX_ROWS - record->event.key.row); + // advanced + // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+12*(MATRIX_ROWS - record->event.key.row); + // guitar + uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+5*(MATRIX_ROWS - record->event.key.row); + // violin + // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+7*(MATRIX_ROWS - record->event.key.row); + + if (record->event.pressed) { + // midi_send_noteon(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127); + midi_send_noteon(&midi_device, 0, note, 127); + } else { + // midi_send_noteoff(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127); + midi_send_noteoff(&midi_device, 0, note, 127); + } + + if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through + return false; + } +#endif return true; } From f67aefc522dd8b72711e7fc5280e1cae1470d1c5 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 03:43:30 -0800 Subject: [PATCH 021/183] remove disabled code --- quantum/process_keycode/process_midi.c | 129 ------------------------- 1 file changed, 129 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 4fbb2881..2ce7418e 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,11 +1,5 @@ #include "process_midi.h" -#if 0 -bool midi_activated = false; -uint8_t midi_starting_note = 0x0C; -int midi_offset = 7; -#endif - typedef union { uint16_t raw; struct { @@ -19,33 +13,9 @@ midi_config_t midi_config; #define MIDI_INVALID_NOTE 0xFF -#define MIDI_USE_NOTE_ON_ARRAY - -#ifdef MIDI_USE_NOTE_ON_ARRAY - -#define MIDI_MAX_NOTES_ON 10 - -typedef struct { - uint8_t note; - uint8_t tone; -} midi_notes_on_array_entry_t; - -typedef struct { - uint8_t length; - midi_notes_on_array_entry_t values[MIDI_MAX_NOTES_ON]; -} midi_notes_on_array_t; - -static midi_notes_on_array_t notes_on; - -#else - #define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1) static uint8_t tone_status[MIDI_TONE_COUNT]; -#endif - - - inline uint8_t compute_velocity(uint8_t setting) { return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1)); @@ -74,49 +44,13 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) uint8_t channel = midi_config.channel; uint8_t tone = keycode - MIDI_TONE_MIN; uint8_t velocity = compute_velocity(midi_config.velocity); - #ifdef MIDI_USE_NOTE_ON_ARRAY - if (record->event.pressed && notes_on.length < MIDI_MAX_NOTES_ON) { - #else if (record->event.pressed) { - #endif uint8_t note = 12 * midi_config.octave + tone; midi_send_noteon(&midi_device, channel, note, velocity); dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity); - - #ifdef MIDI_USE_NOTE_ON_ARRAY - - notes_on.values[notes_on.length].note = note; - notes_on.values[notes_on.length].tone = tone; - notes_on.length++; - - #else - tone_status[tone] = note; - - #endif } else { - - #ifdef MIDI_USE_NOTE_ON_ARRAY - - for (uint8_t i = 0; i < notes_on.length; i++) { - uint8_t note = notes_on.values[i].note; - if (tone == notes_on.values[i].tone) { - midi_send_noteoff(&midi_device, channel, note, velocity); - dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity); - - for (uint8_t j=i; j < notes_on.length - 1; j++) - { - notes_on.values[j] = notes_on.values[j + 1]; - } - - notes_on.length--; - break; - } - } - - #else - uint8_t note = tone_status[tone]; if (note != MIDI_INVALID_NOTE) { @@ -124,8 +58,6 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity); } tone_status[tone] = MIDI_INVALID_NOTE; - - #endif } return false; } @@ -170,66 +102,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) return false; }; -#if 0 - if (keycode == MI_ON && record->event.pressed) { - midi_activated = true; -#ifdef AUDIO_ENABLE - music_scale_user(); -#endif - return false; - } - - if (keycode == MI_OFF && record->event.pressed) { - midi_activated = false; - midi_send_cc(&midi_device, 0, 0x7B, 0); - return false; - } - - if (midi_activated) { - if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - midi_starting_note++; // Change key - midi_send_cc(&midi_device, 0, 0x7B, 0); - } - return false; - } - if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) { - if (record->event.pressed) { - midi_starting_note--; // Change key - midi_send_cc(&midi_device, 0, 0x7B, 0); - } - return false; - } - if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - midi_offset++; // Change scale - midi_send_cc(&midi_device, 0, 0x7B, 0); - return false; - } - if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) { - midi_offset--; // Change scale - midi_send_cc(&midi_device, 0, 0x7B, 0); - return false; - } - // basic - // uint8_t note = (midi_starting_note + SCALE[record->event.key.col + midi_offset])+12*(MATRIX_ROWS - record->event.key.row); - // advanced - // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+12*(MATRIX_ROWS - record->event.key.row); - // guitar - uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+5*(MATRIX_ROWS - record->event.key.row); - // violin - // uint8_t note = (midi_starting_note + record->event.key.col + midi_offset)+7*(MATRIX_ROWS - record->event.key.row); - - if (record->event.pressed) { - // midi_send_noteon(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127); - midi_send_noteon(&midi_device, 0, note, 127); - } else { - // midi_send_noteoff(&midi_device, record->event.key.row, midi_starting_note + SCALE[record->event.key.col], 127); - midi_send_noteoff(&midi_device, 0, note, 127); - } - - if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through - return false; - } -#endif return true; } From 7c5e510fe2e57d1b3c0f98612f1f89d413c07525 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 04:25:17 -0800 Subject: [PATCH 022/183] add support for pedal cc messages --- quantum/process_keycode/process_midi.c | 61 +++++++++++++++++++++----- quantum/quantum_keycodes.h | 11 ++--- 2 files changed, 57 insertions(+), 15 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 2ce7418e..f7a8b665 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -62,43 +62,84 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) return false; } case MIDI_OCTAVE_MIN ... MIDI_OCTAVE_MAX: - if (record->event.pressed) + if (record->event.pressed) { midi_config.octave = keycode - MIDI_OCTAVE_MIN; + dprintf("midi octave %d\n", midi_config.octave); + } return false; case MI_OCTD: - if (record->event.pressed && midi_config.octave > 0) + if (record->event.pressed && midi_config.octave > 0) { midi_config.octave--; + dprintf("midi octave %d\n", midi_config.octave); + } return false; case MI_OCTU: - if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN)) + if (record->event.pressed && midi_config.octave < (MIDI_OCTAVE_MAX - MIDI_OCTAVE_MIN)) { midi_config.octave++; + dprintf("midi octave %d\n", midi_config.octave); + } return false; case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX: - if (record->event.pressed) + if (record->event.pressed) { midi_config.velocity = keycode - MIDI_VELOCITY_MIN; + dprintf("midi velocity %d\n", midi_config.velocity); + } return false; case MI_VELD: - if (record->event.pressed && midi_config.velocity > 0) + if (record->event.pressed && midi_config.velocity > 0) { midi_config.velocity--; + dprintf("midi velocity %d\n", midi_config.velocity); + } return false; case MI_VELU: - if (record->event.pressed) + if (record->event.pressed) { midi_config.velocity++; + dprintf("midi velocity %d\n", midi_config.velocity); + } return false; case MIDI_CHANNEL_MIN ... MIDI_CHANNEL_MAX: - if (record->event.pressed) + if (record->event.pressed) { midi_config.channel = keycode - MIDI_CHANNEL_MIN; + dprintf("midi channel %d\n", midi_config.channel); + } return false; case MI_CHD: - if (record->event.pressed) + if (record->event.pressed) { midi_config.channel--; + dprintf("midi channel %d\n", midi_config.channel); + } return false; case MI_CHU: - if (record->event.pressed) + if (record->event.pressed) { midi_config.channel++; + dprintf("midi channel %d\n", midi_config.channel); + } + return false; + case MI_OFF: + if (record->event.pressed) { + midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0); + dprintf("midi off\n"); + } return false; case MI_SUS: - //TODO + midi_send_cc(&midi_device, midi_config.channel, 0x40, record->event.pressed ? 127 : 0); + dprintf("midi sustain %d\n", record->event.pressed); + return false; + case MI_PORT: + midi_send_cc(&midi_device, midi_config.channel, 0x41, record->event.pressed ? 127 : 0); + dprintf("midi portamento %d\n", record->event.pressed); + return false; + case MI_SOST: + midi_send_cc(&midi_device, midi_config.channel, 0x42, record->event.pressed ? 127 : 0); + dprintf("midi sostenuto %d\n", record->event.pressed); + return false; + case MI_SOFT: + midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0); + dprintf("midi soft %d\n", record->event.pressed); + return false; + case MI_LEG: + midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0); + dprintf("midi legato %d\n", record->event.pressed); return false; }; diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index a024a963..f2b9509b 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -109,8 +109,6 @@ enum quantum_keycodes { #ifdef MIDI_ENABLE // Midi - MIDI_ON, - MIDI_OFF, MIDI_TONE_MIN, @@ -221,7 +219,13 @@ enum quantum_keycodes { MI_CHD, // previous channel MI_CHU, // next channel + MI_OFF, // all notes off + MI_SUS, // sustain + MI_PORT, // portamento + MI_SOST, // sostenuto + MI_SOFT, // soft + MI_LEG, // legato #endif // Backlight functionality @@ -394,9 +398,6 @@ enum quantum_keycodes { #define BL_ON BL_9 #define BL_OFF BL_0 -#define MI_ON MIDI_ON -#define MI_OFF MIDI_OFF - // GOTO layer - 16 layers max // when: // ON_PRESS = 1 From dd8f8e6baeb1549735403edf2a2f04f07edb4bf2 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 05:32:55 -0800 Subject: [PATCH 023/183] implement modulation --- quantum/process_keycode/process_midi.c | 58 ++++++- quantum/process_keycode/process_midi.h | 201 +------------------------ quantum/quantum_keycodes.h | 6 +- tmk_core/protocol/lufa/lufa.c | 2 +- 4 files changed, 61 insertions(+), 206 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index f7a8b665..d09aa0b3 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,4 +1,5 @@ #include "process_midi.h" +#include "timer.h" typedef union { uint16_t raw; @@ -6,6 +7,7 @@ typedef union { uint8_t octave :4; uint8_t velocity :4; uint8_t channel :4; + uint8_t modulation_interval :4; }; } midi_config_t; @@ -16,6 +18,10 @@ midi_config_t midi_config; #define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1) static uint8_t tone_status[MIDI_TONE_COUNT]; +static uint8_t midi_modulation; +static int8_t midi_modulation_step; +static uint16_t midi_modulation_timer; + inline uint8_t compute_velocity(uint8_t setting) { return (setting + 1) * (128 / (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN + 1)); @@ -26,14 +32,40 @@ void midi_init(void) midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN); midi_config.channel = 0; - #ifdef MIDI_USE_NOTE_ON_ARRAY - notes_on.length = 0; - #else + midi_config.modulation_interval = 8; + for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++) { tone_status[i] = MIDI_INVALID_NOTE; } - #endif + + midi_modulation = 0; + midi_modulation_step = 0; + midi_modulation_timer = 0; +} + +void midi_task(void) +{ + if (timer_elapsed(midi_modulation_timer) < midi_config.modulation_interval) + return; + midi_modulation_timer = timer_read(); + + if (midi_modulation_step != 0) + { + dprintf("midi modulation %d\n", midi_modulation); + midi_send_cc(&midi_device, midi_config.channel, 0x1, midi_modulation); + + if (midi_modulation_step < 0 && midi_modulation < -midi_modulation_step) { + midi_modulation = 0; + midi_modulation_step = 0; + return; + } + + midi_modulation += midi_modulation_step; + + if (midi_modulation > 127) + midi_modulation = 127; + } } bool process_midi(uint16_t keycode, keyrecord_t *record) @@ -141,6 +173,24 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) midi_send_cc(&midi_device, midi_config.channel, 0x43, record->event.pressed ? 127 : 0); dprintf("midi legato %d\n", record->event.pressed); return false; + case MI_MOD: + midi_modulation_step = record->event.pressed ? 1 : -1; + return false; + case MI_MODSD: + if (record->event.pressed) { + midi_config.modulation_interval++; + // prevent overflow + if (midi_config.modulation_interval == 0) + midi_config.modulation_interval--; + dprintf("midi modulation interval %d\n", midi_config.modulation_interval); + } + return false; + case MI_MODSU: + if (record->event.pressed && midi_config.modulation_interval > 0) { + midi_config.modulation_interval--; + dprintf("midi modulation interval %d\n", midi_config.modulation_interval); + } + return false; }; return true; diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h index b0e0aeb8..66ce60b0 100644 --- a/quantum/process_keycode/process_midi.h +++ b/quantum/process_keycode/process_midi.h @@ -5,206 +5,7 @@ #include "midi.h" void midi_init(void); - +void midi_task(void); bool process_midi(uint16_t keycode, keyrecord_t *record); -#define MIDI(n) ((n) | 0x6000) -#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 - -#define CHNL(note, channel) (note + (channel << 8)) - -#define SCALE (int8_t []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ - 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ - 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ - 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ - 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } - -#define N_CN1 (0x600C + (12 * -1) + 0 ) -#define N_CN1S (0x600C + (12 * -1) + 1 ) -#define N_DN1F (0x600C + (12 * -1) + 1 ) -#define N_DN1 (0x600C + (12 * -1) + 2 ) -#define N_DN1S (0x600C + (12 * -1) + 3 ) -#define N_EN1F (0x600C + (12 * -1) + 3 ) -#define N_EN1 (0x600C + (12 * -1) + 4 ) -#define N_FN1 (0x600C + (12 * -1) + 5 ) -#define N_FN1S (0x600C + (12 * -1) + 6 ) -#define N_GN1F (0x600C + (12 * -1) + 6 ) -#define N_GN1 (0x600C + (12 * -1) + 7 ) -#define N_GN1S (0x600C + (12 * -1) + 8 ) -#define N_AN1F (0x600C + (12 * -1) + 8 ) -#define N_AN1 (0x600C + (12 * -1) + 9 ) -#define N_AN1S (0x600C + (12 * -1) + 10) -#define N_BN1F (0x600C + (12 * -1) + 10) -#define N_BN1 (0x600C + (12 * -1) + 11) -#define N_C0 (0x600C + (12 * 0) + 0 ) -#define N_C0S (0x600C + (12 * 0) + 1 ) -#define N_D0F (0x600C + (12 * 0) + 1 ) -#define N_D0 (0x600C + (12 * 0) + 2 ) -#define N_D0S (0x600C + (12 * 0) + 3 ) -#define N_E0F (0x600C + (12 * 0) + 3 ) -#define N_E0 (0x600C + (12 * 0) + 4 ) -#define N_F0 (0x600C + (12 * 0) + 5 ) -#define N_F0S (0x600C + (12 * 0) + 6 ) -#define N_G0F (0x600C + (12 * 0) + 6 ) -#define N_G0 (0x600C + (12 * 0) + 7 ) -#define N_G0S (0x600C + (12 * 0) + 8 ) -#define N_A0F (0x600C + (12 * 0) + 8 ) -#define N_A0 (0x600C + (12 * 0) + 9 ) -#define N_A0S (0x600C + (12 * 0) + 10) -#define N_B0F (0x600C + (12 * 0) + 10) -#define N_B0 (0x600C + (12 * 0) + 11) -#define N_C1 (0x600C + (12 * 1) + 0 ) -#define N_C1S (0x600C + (12 * 1) + 1 ) -#define N_D1F (0x600C + (12 * 1) + 1 ) -#define N_D1 (0x600C + (12 * 1) + 2 ) -#define N_D1S (0x600C + (12 * 1) + 3 ) -#define N_E1F (0x600C + (12 * 1) + 3 ) -#define N_E1 (0x600C + (12 * 1) + 4 ) -#define N_F1 (0x600C + (12 * 1) + 5 ) -#define N_F1S (0x600C + (12 * 1) + 6 ) -#define N_G1F (0x600C + (12 * 1) + 6 ) -#define N_G1 (0x600C + (12 * 1) + 7 ) -#define N_G1S (0x600C + (12 * 1) + 8 ) -#define N_A1F (0x600C + (12 * 1) + 8 ) -#define N_A1 (0x600C + (12 * 1) + 9 ) -#define N_A1S (0x600C + (12 * 1) + 10) -#define N_B1F (0x600C + (12 * 1) + 10) -#define N_B1 (0x600C + (12 * 1) + 11) -#define N_C2 (0x600C + (12 * 2) + 0 ) -#define N_C2S (0x600C + (12 * 2) + 1 ) -#define N_D2F (0x600C + (12 * 2) + 1 ) -#define N_D2 (0x600C + (12 * 2) + 2 ) -#define N_D2S (0x600C + (12 * 2) + 3 ) -#define N_E2F (0x600C + (12 * 2) + 3 ) -#define N_E2 (0x600C + (12 * 2) + 4 ) -#define N_F2 (0x600C + (12 * 2) + 5 ) -#define N_F2S (0x600C + (12 * 2) + 6 ) -#define N_G2F (0x600C + (12 * 2) + 6 ) -#define N_G2 (0x600C + (12 * 2) + 7 ) -#define N_G2S (0x600C + (12 * 2) + 8 ) -#define N_A2F (0x600C + (12 * 2) + 8 ) -#define N_A2 (0x600C + (12 * 2) + 9 ) -#define N_A2S (0x600C + (12 * 2) + 10) -#define N_B2F (0x600C + (12 * 2) + 10) -#define N_B2 (0x600C + (12 * 2) + 11) -#define N_C3 (0x600C + (12 * 3) + 0 ) -#define N_C3S (0x600C + (12 * 3) + 1 ) -#define N_D3F (0x600C + (12 * 3) + 1 ) -#define N_D3 (0x600C + (12 * 3) + 2 ) -#define N_D3S (0x600C + (12 * 3) + 3 ) -#define N_E3F (0x600C + (12 * 3) + 3 ) -#define N_E3 (0x600C + (12 * 3) + 4 ) -#define N_F3 (0x600C + (12 * 3) + 5 ) -#define N_F3S (0x600C + (12 * 3) + 6 ) -#define N_G3F (0x600C + (12 * 3) + 6 ) -#define N_G3 (0x600C + (12 * 3) + 7 ) -#define N_G3S (0x600C + (12 * 3) + 8 ) -#define N_A3F (0x600C + (12 * 3) + 8 ) -#define N_A3 (0x600C + (12 * 3) + 9 ) -#define N_A3S (0x600C + (12 * 3) + 10) -#define N_B3F (0x600C + (12 * 3) + 10) -#define N_B3 (0x600C + (12 * 3) + 11) -#define N_C4 (0x600C + (12 * 4) + 0 ) -#define N_C4S (0x600C + (12 * 4) + 1 ) -#define N_D4F (0x600C + (12 * 4) + 1 ) -#define N_D4 (0x600C + (12 * 4) + 2 ) -#define N_D4S (0x600C + (12 * 4) + 3 ) -#define N_E4F (0x600C + (12 * 4) + 3 ) -#define N_E4 (0x600C + (12 * 4) + 4 ) -#define N_F4 (0x600C + (12 * 4) + 5 ) -#define N_F4S (0x600C + (12 * 4) + 6 ) -#define N_G4F (0x600C + (12 * 4) + 6 ) -#define N_G4 (0x600C + (12 * 4) + 7 ) -#define N_G4S (0x600C + (12 * 4) + 8 ) -#define N_A4F (0x600C + (12 * 4) + 8 ) -#define N_A4 (0x600C + (12 * 4) + 9 ) -#define N_A4S (0x600C + (12 * 4) + 10) -#define N_B4F (0x600C + (12 * 4) + 10) -#define N_B4 (0x600C + (12 * 4) + 11) -#define N_C5 (0x600C + (12 * 5) + 0 ) -#define N_C5S (0x600C + (12 * 5) + 1 ) -#define N_D5F (0x600C + (12 * 5) + 1 ) -#define N_D5 (0x600C + (12 * 5) + 2 ) -#define N_D5S (0x600C + (12 * 5) + 3 ) -#define N_E5F (0x600C + (12 * 5) + 3 ) -#define N_E5 (0x600C + (12 * 5) + 4 ) -#define N_F5 (0x600C + (12 * 5) + 5 ) -#define N_F5S (0x600C + (12 * 5) + 6 ) -#define N_G5F (0x600C + (12 * 5) + 6 ) -#define N_G5 (0x600C + (12 * 5) + 7 ) -#define N_G5S (0x600C + (12 * 5) + 8 ) -#define N_A5F (0x600C + (12 * 5) + 8 ) -#define N_A5 (0x600C + (12 * 5) + 9 ) -#define N_A5S (0x600C + (12 * 5) + 10) -#define N_B5F (0x600C + (12 * 5) + 10) -#define N_B5 (0x600C + (12 * 5) + 11) -#define N_C6 (0x600C + (12 * 6) + 0 ) -#define N_C6S (0x600C + (12 * 6) + 1 ) -#define N_D6F (0x600C + (12 * 6) + 1 ) -#define N_D6 (0x600C + (12 * 6) + 2 ) -#define N_D6S (0x600C + (12 * 6) + 3 ) -#define N_E6F (0x600C + (12 * 6) + 3 ) -#define N_E6 (0x600C + (12 * 6) + 4 ) -#define N_F6 (0x600C + (12 * 6) + 5 ) -#define N_F6S (0x600C + (12 * 6) + 6 ) -#define N_G6F (0x600C + (12 * 6) + 6 ) -#define N_G6 (0x600C + (12 * 6) + 7 ) -#define N_G6S (0x600C + (12 * 6) + 8 ) -#define N_A6F (0x600C + (12 * 6) + 8 ) -#define N_A6 (0x600C + (12 * 6) + 9 ) -#define N_A6S (0x600C + (12 * 6) + 10) -#define N_B6F (0x600C + (12 * 6) + 10) -#define N_B6 (0x600C + (12 * 6) + 11) -#define N_C7 (0x600C + (12 * 7) + 0 ) -#define N_C7S (0x600C + (12 * 7) + 1 ) -#define N_D7F (0x600C + (12 * 7) + 1 ) -#define N_D7 (0x600C + (12 * 7) + 2 ) -#define N_D7S (0x600C + (12 * 7) + 3 ) -#define N_E7F (0x600C + (12 * 7) + 3 ) -#define N_E7 (0x600C + (12 * 7) + 4 ) -#define N_F7 (0x600C + (12 * 7) + 5 ) -#define N_F7S (0x600C + (12 * 7) + 6 ) -#define N_G7F (0x600C + (12 * 7) + 6 ) -#define N_G7 (0x600C + (12 * 7) + 7 ) -#define N_G7S (0x600C + (12 * 7) + 8 ) -#define N_A7F (0x600C + (12 * 7) + 8 ) -#define N_A7 (0x600C + (12 * 7) + 9 ) -#define N_A7S (0x600C + (12 * 7) + 10) -#define N_B7F (0x600C + (12 * 7) + 10) -#define N_B7 (0x600C + (12 * 7) + 11) -#define N_C8 (0x600C + (12 * 8) + 0 ) -#define N_C8S (0x600C + (12 * 8) + 1 ) -#define N_D8F (0x600C + (12 * 8) + 1 ) -#define N_D8 (0x600C + (12 * 8) + 2 ) -#define N_D8S (0x600C + (12 * 8) + 3 ) -#define N_E8F (0x600C + (12 * 8) + 3 ) -#define N_E8 (0x600C + (12 * 8) + 4 ) -#define N_F8 (0x600C + (12 * 8) + 5 ) -#define N_F8S (0x600C + (12 * 8) + 6 ) -#define N_G8F (0x600C + (12 * 8) + 6 ) -#define N_G8 (0x600C + (12 * 8) + 7 ) -#define N_G8S (0x600C + (12 * 8) + 8 ) -#define N_A8F (0x600C + (12 * 8) + 8 ) -#define N_A8 (0x600C + (12 * 8) + 9 ) -#define N_A8S (0x600C + (12 * 8) + 10) -#define N_B8F (0x600C + (12 * 8) + 10) -#define N_B8 (0x600C + (12 * 8) + 11) -#define N_C8 (0x600C + (12 * 8) + 0 ) -#define N_C8S (0x600C + (12 * 8) + 1 ) -#define N_D8F (0x600C + (12 * 8) + 1 ) -#define N_D8 (0x600C + (12 * 8) + 2 ) -#define N_D8S (0x600C + (12 * 8) + 3 ) -#define N_E8F (0x600C + (12 * 8) + 3 ) -#define N_E8 (0x600C + (12 * 8) + 4 ) -#define N_F8 (0x600C + (12 * 8) + 5 ) -#define N_F8S (0x600C + (12 * 8) + 6 ) -#define N_G8F (0x600C + (12 * 8) + 6 ) -#define N_G8 (0x600C + (12 * 8) + 7 ) -#define N_G8S (0x600C + (12 * 8) + 8 ) -#define N_A8F (0x600C + (12 * 8) + 8 ) -#define N_A8 (0x600C + (12 * 8) + 9 ) -#define N_A8S (0x600C + (12 * 8) + 10) -#define N_B8F (0x600C + (12 * 8) + 10) -#define N_B8 (0x600C + (12 * 8) + 11) - #endif \ No newline at end of file diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index f2b9509b..4423d25e 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -224,8 +224,12 @@ enum quantum_keycodes { MI_SUS, // sustain MI_PORT, // portamento MI_SOST, // sostenuto - MI_SOFT, // soft + MI_SOFT, // soft pedal MI_LEG, // legato + + MI_MOD, // modulation + MI_MODSD, // decrease modulation speed + MI_MODSU, // increase modulation speed #endif // Backlight functionality diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index fb60658d..bd249805 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1180,7 +1180,7 @@ int main(void) #ifdef MIDI_ENABLE midi_device_process(&midi_device); - // MIDI_Task(); + midi_task(); #endif #if defined(RGBLIGHT_ANIMATIONS) & defined(RGBLIGHT_ENABLE) From 5e6097f0154403dccb9b5658390c84441aa509bc Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 06:19:48 -0800 Subject: [PATCH 024/183] add keycodes for transpose range --- quantum/process_keycode/process_midi.c | 37 +++++++++++++++++++++----- quantum/quantum_keycodes.h | 18 +++++++++++++ 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index d09aa0b3..4d60aefb 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -2,12 +2,13 @@ #include "timer.h" typedef union { - uint16_t raw; + uint32_t raw; struct { - uint8_t octave :4; - uint8_t velocity :4; - uint8_t channel :4; - uint8_t modulation_interval :4; + uint8_t octave :4; + int8_t transpose :4; + uint8_t velocity :4; + uint8_t channel :4; + uint8_t modulation_interval :4; }; } midi_config_t; @@ -29,7 +30,8 @@ inline uint8_t compute_velocity(uint8_t setting) void midi_init(void) { - midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN; + midi_config.octave = MI_OCT_2 - MIDI_OCTAVE_MIN; + midi_config.transpose = 0; midi_config.velocity = (MIDI_VELOCITY_MAX - MIDI_VELOCITY_MIN); midi_config.channel = 0; midi_config.modulation_interval = 8; @@ -77,7 +79,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) uint8_t tone = keycode - MIDI_TONE_MIN; uint8_t velocity = compute_velocity(midi_config.velocity); if (record->event.pressed) { - uint8_t note = 12 * midi_config.octave + tone; + uint8_t note = 12 * midi_config.octave + tone + midi_config.transpose; midi_send_noteon(&midi_device, channel, note, velocity); dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity); tone_status[tone] = note; @@ -111,6 +113,27 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) dprintf("midi octave %d\n", midi_config.octave); } return false; + case MIDI_TRANSPOSE_MIN ... MIDI_TRANSPOSE_MAX: + if (record->event.pressed) { + midi_config.transpose = keycode - MI_TRNS_0; + dprintf("midi transpose %d\n", midi_config.transpose); + } + return false; + case MI_TRNSD: + if (record->event.pressed && midi_config.transpose > (MIDI_TRANSPOSE_MIN - MI_TRNS_0)) { + midi_config.transpose--; + dprintf("midi transpose %d\n", midi_config.transpose); + } + return false; + case MI_TRNSU: + if (record->event.pressed && midi_config.transpose < (MIDI_TRANSPOSE_MAX - MI_TRNS_0)) { + const bool positive = midi_config.transpose > 0; + midi_config.transpose++; + if (positive && midi_config.transpose < 0) + midi_config.transpose--; + dprintf("midi transpose %d\n", midi_config.transpose); + } + return false; case MIDI_VELOCITY_MIN ... MIDI_VELOCITY_MAX: if (record->event.pressed) { midi_config.velocity = keycode - MIDI_VELOCITY_MIN; diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 4423d25e..30cc9abd 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -183,6 +183,24 @@ enum quantum_keycodes { MI_OCTD, // octave down MI_OCTU, // octave up + MIDI_TRANSPOSE_MIN, + MI_TRNS_N6 = MIDI_TRANSPOSE_MIN, + MI_TRNS_N5, + MI_TRNS_N4, + MI_TRNS_N3, + MI_TRNS_N2, + MI_TRNS_N1, + MI_TRNS_0, + MI_TRNS_1, + MI_TRNS_2, + MI_TRNS_3, + MI_TRNS_4, + MI_TRNS_5, + MI_TRNS_6, + MIDI_TRANSPOSE_MAX = MI_TRNS_6, + MI_TRNSD, // transpose down + MI_TRNSU, // transpose up + MIDI_VELOCITY_MIN, MI_VEL_1 = MIDI_VELOCITY_MIN, MI_VEL_2, From ae0752dff552a07fb52e08c7057979959959d247 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 18 Feb 2017 21:07:07 -0800 Subject: [PATCH 025/183] expose midi_config --- quantum/process_keycode/process_midi.c | 23 ++++++----------------- quantum/process_keycode/process_midi.h | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 4d60aefb..9190fa04 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,22 +1,6 @@ #include "process_midi.h" #include "timer.h" -typedef union { - uint32_t raw; - struct { - uint8_t octave :4; - int8_t transpose :4; - uint8_t velocity :4; - uint8_t channel :4; - uint8_t modulation_interval :4; - }; -} midi_config_t; - -midi_config_t midi_config; - -#define MIDI_INVALID_NOTE 0xFF - -#define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1) static uint8_t tone_status[MIDI_TONE_COUNT]; static uint8_t midi_modulation; @@ -70,6 +54,11 @@ void midi_task(void) } } +uint8_t midi_compute_note(uint16_t keycode) +{ + return 12 * midi_config.octave + (keycode - MIDI_TONE_MIN) + midi_config.transpose; +} + bool process_midi(uint16_t keycode, keyrecord_t *record) { switch (keycode) { @@ -79,7 +68,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) uint8_t tone = keycode - MIDI_TONE_MIN; uint8_t velocity = compute_velocity(midi_config.velocity); if (record->event.pressed) { - uint8_t note = 12 * midi_config.octave + tone + midi_config.transpose; + uint8_t note = midi_compute_note(keycode); midi_send_noteon(&midi_device, channel, note, velocity); dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity); tone_status[tone] = note; diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h index 66ce60b0..ffd41579 100644 --- a/quantum/process_keycode/process_midi.h +++ b/quantum/process_keycode/process_midi.h @@ -4,8 +4,26 @@ #include "quantum.h" #include "midi.h" +typedef union { + uint32_t raw; + struct { + uint8_t octave :4; + int8_t transpose :4; + uint8_t velocity :4; + uint8_t channel :4; + uint8_t modulation_interval :4; + }; +} midi_config_t; + +midi_config_t midi_config; + void midi_init(void); void midi_task(void); bool process_midi(uint16_t keycode, keyrecord_t *record); +#define MIDI_INVALID_NOTE 0xFF +#define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1) + +uint8_t midi_compute_note(uint16_t keycode); + #endif \ No newline at end of file From d1fe24ad9f85768774ae50465c71f3757a33cc00 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sun, 19 Feb 2017 17:18:05 -0800 Subject: [PATCH 026/183] Allow customization of the number of tone keycodes and add example keymap --- keyboards/satan/keymaps/midi/Makefile | 21 +++++++ keyboards/satan/keymaps/midi/config.h | 11 ++++ keyboards/satan/keymaps/midi/keymap.c | 60 ++++++++++++++++++ keyboards/satan/keymaps/midi/readme.md | 1 + quantum/quantum_keycodes.h | 84 ++++++++++++++++++++++++++ quantum/template/config.h | 3 + 6 files changed, 180 insertions(+) create mode 100644 keyboards/satan/keymaps/midi/Makefile create mode 100644 keyboards/satan/keymaps/midi/config.h create mode 100644 keyboards/satan/keymaps/midi/keymap.c create mode 100644 keyboards/satan/keymaps/midi/readme.md diff --git a/keyboards/satan/keymaps/midi/Makefile b/keyboards/satan/keymaps/midi/Makefile new file mode 100644 index 00000000..5cbda96c --- /dev/null +++ b/keyboards/satan/keymaps/midi/Makefile @@ -0,0 +1,21 @@ +# 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 = yes # 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/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h new file mode 100644 index 00000000..e345d40c --- /dev/null +++ b/keyboards/satan/keymaps/midi/config.h @@ -0,0 +1,11 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +/* override number of MIDI tone keycodes (each octave adds 12 bytes) */ +#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c new file mode 100644 index 00000000..ac972593 --- /dev/null +++ b/keyboards/satan/keymaps/midi/keymap.c @@ -0,0 +1,60 @@ +#include "satan.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 _BL 0 +#define _ML 1 + +// readability +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: (Base Layer) Default Layer + * ,-----------------------------------------------------------. + * |Esc | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |-----------------------------------------------------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | + * |-----------------------------------------------------------| + * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return | + * |-----------------------------------------------------------| + * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | + * |-----------------------------------------------------------| + * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | + * `-----------------------------------------------------------' + */ +[_BL] = KEYMAP_ANSI( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_BSLS, \ + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \ + KC_LSFT, KC_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, KC_SPC, KC_RALT,KC_RGUI, TG(_ML), KC_RCTL), + +/* Keymap _ML: MIDI Layer + * ,------------------------------------------------------------------------. + * | Exit | | | | | | | | | | | | | | + * |------------------------------------------------------------------------| + * | Ch+ | | C# | D# | | F# | G# | A# | | C# | D# | | | | + * |------------------------------------------------------------------------| + * | Mod | C | D | E | F | G | A | B | C | D | E | F |>>OnStage| + * |------------------------------------------------------------------------| + * | Sustain |Oct-|Oct+|Mod-|Mod+| | | |Tns-|Tns+|Tns0| Sustain | + * |------------------------------------------------------------------------| + * | | | | All notes off | | | | | + * `------------------------------------------------------------------------' + * + * Foot switches: + * ,--------. ,--------. + * | | | | + * | | | | + * `--------' `--------' + */ +[_ML] = KEYMAP_ANSI( + TG(_ML), MI_VEL_1, MI_VEL_2, MI_VEL_3, MI_VEL_4, MI_VEL_5, MI_VEL_6, MI_VEL_7, MI_VEL_8, MI_VEL_9, MI_VEL_10, XXXXXXX, XXXXXXX, XXXXXXX, \ + MI_CHU, XXXXXXX, MI_Cs, MI_Ds, XXXXXXX, MI_Fs, MI_Gs, MI_As, XXXXXXX, MI_Cs_1, MI_Ds_1, XXXXXXX, XXXXXXX, XXXXXXX, \ + MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, _______, \ + MI_SUS, MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0, MI_SUS, \ + _______, _______, _______, MI_OFF, _______, _______, _______, _______), +}; \ No newline at end of file diff --git a/keyboards/satan/keymaps/midi/readme.md b/keyboards/satan/keymaps/midi/readme.md new file mode 100644 index 00000000..87844a85 --- /dev/null +++ b/keyboards/satan/keymaps/midi/readme.md @@ -0,0 +1 @@ +# Satan GH60 layout demonstrating MIDI key mapping diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 30cc9abd..6d143805 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -2,6 +2,12 @@ #ifndef QUANTUM_KEYCODES_H #define QUANTUM_KEYCODES_H +#ifdef MIDI_ENABLE +#ifndef MIDI_TONE_KEYCODE_OCTAVES +#define MIDI_TONE_KEYCODE_OCTAVES 3 +#endif +#endif + enum quantum_keycodes { // Ranges used in shortucuts - not to be used directly QK_TMK = 0x0000, @@ -112,6 +118,7 @@ enum quantum_keycodes { MIDI_TONE_MIN, +#if MIDI_TONE_KEYCODE_OCTAVES > 0 MI_C = MIDI_TONE_MIN, MI_Cs, MI_Db = MI_Cs, @@ -129,7 +136,9 @@ enum quantum_keycodes { MI_As, MI_Bb = MI_As, MI_B, +#endif +#if MIDI_TONE_KEYCODE_OCTAVES > 1 MI_C_1, MI_Cs_1, MI_Db_1 = MI_Cs_1, @@ -147,7 +156,9 @@ enum quantum_keycodes { MI_As_1, MI_Bb_1 = MI_As_1, MI_B_1, +#endif +#if MIDI_TONE_KEYCODE_OCTAVES > 2 MI_C_2, MI_Cs_2, MI_Db_2 = MI_Cs_2, @@ -165,8 +176,81 @@ enum quantum_keycodes { MI_As_2, MI_Bb_2 = MI_As_2, MI_B_2, +#endif +#if MIDI_TONE_KEYCODE_OCTAVES > 3 + MI_C_3, + MI_Cs_3, + MI_Db_3 = MI_Cs_3, + MI_D_3, + MI_Ds_3, + MI_Eb_3 = MI_Ds_3, + MI_E_3, + MI_F_3, + MI_Fs_3, + MI_Gb_3 = MI_Fs_3, + MI_G_3, + MI_Gs_3, + MI_Ab_3 = MI_Gs_3, + MI_A_3, + MI_As_3, + MI_Bb_3 = MI_As_3, + MI_B_3, +#endif + +#if MIDI_TONE_KEYCODE_OCTAVES > 4 + MI_C_4, + MI_Cs_4, + MI_Db_4 = MI_Cs_4, + MI_D_4, + MI_Ds_4, + MI_Eb_4 = MI_Ds_4, + MI_E_4, + MI_F_4, + MI_Fs_4, + MI_Gb_4 = MI_Fs_4, + MI_G_4, + MI_Gs_4, + MI_Ab_4 = MI_Gs_4, + MI_A_4, + MI_As_4, + MI_Bb_4 = MI_As_4, + MI_B_4, +#endif + +#if MIDI_TONE_KEYCODE_OCTAVES > 5 + MI_C_5, + MI_Cs_5, + MI_Db_5 = MI_Cs_5, + MI_D_5, + MI_Ds_5, + MI_Eb_5 = MI_Ds_5, + MI_E_5, + MI_F_5, + MI_Fs_5, + MI_Gb_5 = MI_Fs_5, + MI_G_5, + MI_Gs_5, + MI_Ab_5 = MI_Gs_5, + MI_A_5, + MI_As_5, + MI_Bb_5 = MI_As_5, + MI_B_5, +#endif + +#if MIDI_TONE_KEYCODE_OCTAVES > 5 + MIDI_TONE_MAX = MI_B_5, +#elif MIDI_TONE_KEYCODE_OCTAVES > 4 + MIDI_TONE_MAX = MI_B_4, +#elif MIDI_TONE_KEYCODE_OCTAVES > 3 + MIDI_TONE_MAX = MI_B_3, +#elif MIDI_TONE_KEYCODE_OCTAVES > 2 MIDI_TONE_MAX = MI_B_2, +#elif MIDI_TONE_KEYCODE_OCTAVES > 1 + MIDI_TONE_MAX = MI_B_1, +#elif MIDI_TONE_KEYCODE_OCTAVES > 0 + MIDI_TONE_MAX = MI_B, +#endif MIDI_OCTAVE_MIN, MI_OCT_N2 = MIDI_OCTAVE_MIN, diff --git a/quantum/template/config.h b/quantum/template/config.h index c61c4a61..d0bee0d8 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -159,4 +159,7 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION +/* override number of MIDI tone keycodes (each octave adds 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 1 + #endif From ed15973a3ffff6e18e62f81654632b97961f18d2 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sun, 19 Feb 2017 17:45:08 -0800 Subject: [PATCH 027/183] Document size added by MIDI_ENABLE (~3800 bytes according to my experiments) satan/keymaps/midi MIDI_ENABLE = no text data bss dec hex filename 0 17080 0 17080 42b8 satan_midi.hex MIDI_ENABLE = yes #define MIDI_TONE_KEYCODE_OCTAVES 3 // default text data bss dec hex filename 0 20846 0 20846 516e satan_midi.hex MIDI_ENABLE = yes #define MIDI_TONE_KEYCODE_OCTAVES 2 // fewer octaves text data bss dec hex filename 0 20846 0 20846 516e satan_midi.hex --- keyboards/satan/keymaps/midi/Makefile | 2 +- keyboards/satan/keymaps/midi/config.h | 2 +- keyboards/satan/keymaps/midi/keymap.c | 2 ++ quantum/process_keycode/process_midi.c | 2 ++ quantum/template/config.h | 2 +- quantum/template/keymaps/default/Makefile | 2 +- 6 files changed, 8 insertions(+), 4 deletions(-) diff --git a/keyboards/satan/keymaps/midi/Makefile b/keyboards/satan/keymaps/midi/Makefile index 5cbda96c..4e2d9d2f 100644 --- a/keyboards/satan/keymaps/midi/Makefile +++ b/keyboards/satan/keymaps/midi/Makefile @@ -9,7 +9,7 @@ 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 = yes # MIDI controls +MIDI_ENABLE = yes # MIDI support (+3800) AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h index e345d40c..0dbdb5cb 100644 --- a/keyboards/satan/keymaps/midi/config.h +++ b/keyboards/satan/keymaps/midi/config.h @@ -5,7 +5,7 @@ // place overrides here -/* override number of MIDI tone keycodes (each octave adds 12 bytes) */ +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ #define MIDI_TONE_KEYCODE_OCTAVES 2 #endif \ No newline at end of file diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c index ac972593..004690f4 100644 --- a/keyboards/satan/keymaps/midi/keymap.c +++ b/keyboards/satan/keymaps/midi/keymap.c @@ -32,6 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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, KC_SPC, KC_RALT,KC_RGUI, TG(_ML), KC_RCTL), +#ifdef MIDI_ENABLE /* Keymap _ML: MIDI Layer * ,------------------------------------------------------------------------. * | Exit | | | | | | | | | | | | | | @@ -57,4 +58,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, _______, \ MI_SUS, MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0, MI_SUS, \ _______, _______, _______, MI_OFF, _______, _______, _______, _______), +#endif }; \ No newline at end of file diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 9190fa04..5530ea97 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,3 +1,5 @@ +#define MIDI_TONE_KEYCODE_OCTAVES 2 + #include "process_midi.h" #include "timer.h" diff --git a/quantum/template/config.h b/quantum/template/config.h index d0bee0d8..cd6dfa2c 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -159,7 +159,7 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -/* override number of MIDI tone keycodes (each octave adds 12 bytes) */ +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ //#define MIDI_TONE_KEYCODE_OCTAVES 1 #endif diff --git a/quantum/template/keymaps/default/Makefile b/quantum/template/keymaps/default/Makefile index f4671a9d..24442db3 100644 --- a/quantum/template/keymaps/default/Makefile +++ b/quantum/template/keymaps/default/Makefile @@ -9,7 +9,7 @@ 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 = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls +MIDI_ENABLE = no # MIDI support (+3800) AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID From 64eecfc5303788bd82bf2fb466ec4a6f1bd0c028 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sun, 19 Feb 2017 22:23:06 -0800 Subject: [PATCH 028/183] fix typos in keymap --- keyboards/satan/keymaps/midi/keymap.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c index 004690f4..397fe097 100644 --- a/keyboards/satan/keymaps/midi/keymap.c +++ b/keyboards/satan/keymaps/midi/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------| * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | * |-----------------------------------------------------------| - * |Ctrl|Gui |Alt | Space |Alt |Gui |FN |Ctrl | + * |Ctrl|Gui |Alt | Space |Alt |Gui |Midi|Ctrl | * `-----------------------------------------------------------' */ [_BL] = KEYMAP_ANSI( @@ -39,18 +39,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------------------------------------------------------------------------| * | Ch+ | | C# | D# | | F# | G# | A# | | C# | D# | | | | * |------------------------------------------------------------------------| - * | Mod | C | D | E | F | G | A | B | C | D | E | F |>>OnStage| + * | Mod | C | D | E | F | G | A | B | C | D | E | F | | * |------------------------------------------------------------------------| * | Sustain |Oct-|Oct+|Mod-|Mod+| | | |Tns-|Tns+|Tns0| Sustain | * |------------------------------------------------------------------------| * | | | | All notes off | | | | | * `------------------------------------------------------------------------' - * - * Foot switches: - * ,--------. ,--------. - * | | | | - * | | | | - * `--------' `--------' */ [_ML] = KEYMAP_ANSI( TG(_ML), MI_VEL_1, MI_VEL_2, MI_VEL_3, MI_VEL_4, MI_VEL_5, MI_VEL_6, MI_VEL_7, MI_VEL_8, MI_VEL_9, MI_VEL_10, XXXXXXX, XXXXXXX, XXXXXXX, \ From 525be99ee938aa6e48448d7dd6ea6e6fe50bb36d Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 25 Feb 2017 15:02:43 -0800 Subject: [PATCH 029/183] Split MIDI functionality into MIDI_BASIC and MIDI_ADVANCED MIDI_ENABLE = no text data bss dec hex filename 0 17080 0 17080 42b8 satan_midi.hex MIDI_ENABLE = yes MIDI_BASIC undefined MIDI_ADVANCED undefined text data bss dec hex filename 0 19494 0 19494 4c26 satan_midi.hex MIDI_ENABLE = yes #define MIDI_BASIC MIDI_ADVANCED undefined text data bss dec hex filename 0 19788 0 19788 4d4c satan_midi.hex MIDI_ENABLE = yes MIDI_BASIC undefined #define MIDI_ADVANCED text data bss dec hex filename 0 20846 0 20846 516e satan_midi.hex MIDI_ENABLE = yes #define MIDI_BASIC #define MIDI_ADVANCED text data bss dec hex filename 0 21140 0 21140 5294 satan_midi.hex --- build_keyboard.mk | 1 + keyboards/satan/keymaps/midi/config.h | 17 ++++++++++++++++- keyboards/satan/keymaps/midi/keymap.c | 4 ++-- quantum/process_keycode/process_midi.c | 9 ++++++--- quantum/process_keycode/process_music.c | 22 ++++++++++++++++++++++ quantum/quantum.c | 4 ++-- quantum/quantum_keycodes.h | 13 ++++++++++--- quantum/template/config.h | 17 +++++++++++++++++ tmk_core/protocol/lufa/lufa.c | 4 ++++ 9 files changed, 80 insertions(+), 11 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index 4a6fc098..eea8d591 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -141,6 +141,7 @@ endif ifeq ($(strip $(MIDI_ENABLE)), yes) OPT_DEFS += -DMIDI_ENABLE + SRC += $(QUANTUM_DIR)/process_keycode/process_music.c SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c endif diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h index 0dbdb5cb..59250b49 100644 --- a/keyboards/satan/keymaps/midi/config.h +++ b/keyboards/satan/keymaps/midi/config.h @@ -3,7 +3,22 @@ #include "../../config.h" -// place overrides here +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +#define MIDI_ADVANCED /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ #define MIDI_TONE_KEYCODE_OCTAVES 2 diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c index 397fe097..349391c3 100644 --- a/keyboards/satan/keymaps/midi/keymap.c +++ b/keyboards/satan/keymaps/midi/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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, KC_SPC, KC_RALT,KC_RGUI, TG(_ML), KC_RCTL), -#ifdef MIDI_ENABLE +#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) /* Keymap _ML: MIDI Layer * ,------------------------------------------------------------------------. * | Exit | | | | | | | | | | | | | | @@ -51,6 +51,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MI_CHU, XXXXXXX, MI_Cs, MI_Ds, XXXXXXX, MI_Fs, MI_Gs, MI_As, XXXXXXX, MI_Cs_1, MI_Ds_1, XXXXXXX, XXXXXXX, XXXXXXX, \ MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, _______, \ MI_SUS, MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0, MI_SUS, \ - _______, _______, _______, MI_OFF, _______, _______, _______, _______), + _______, _______, _______, MI_ALLOFF, _______, _______, _______, _______), #endif }; \ No newline at end of file diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 5530ea97..161f04a2 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,6 +1,7 @@ -#define MIDI_TONE_KEYCODE_OCTAVES 2 - #include "process_midi.h" + +#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) + #include "timer.h" static uint8_t tone_status[MIDI_TONE_COUNT]; @@ -161,7 +162,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) dprintf("midi channel %d\n", midi_config.channel); } return false; - case MI_OFF: + case MI_ALLOFF: if (record->event.pressed) { midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0); dprintf("midi off\n"); @@ -209,3 +210,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) return true; } + +#endif // MIDI_ADVANCED diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index 1e2648bf..ac906b62 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -17,6 +17,7 @@ static uint16_t music_sequence_interval = 100; bool process_music(uint16_t keycode, keyrecord_t *record) { + #ifdef AUDIO_ENABLE if (keycode == AU_ON && record->event.pressed) { audio_on(); return false; @@ -38,6 +39,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { } return false; } + #endif // AUDIO_ENABLE if (keycode == MU_ON && record->event.pressed) { music_on(); @@ -61,6 +63,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { return false; } + #ifdef AUDIO_ENABLE if (keycode == MUV_IN && record->event.pressed) { voice_iterate(); music_scale_user(); @@ -72,11 +75,14 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { music_scale_user(); return false; } + #endif // AUDIO_ENABLE if (music_activated) { if (keycode == KC_LCTL && record->event.pressed) { // Start recording + #ifdef AUDIO_ENABLE stop_all_notes(); + #endif music_sequence_recording = true; music_sequence_recorded = false; music_sequence_playing = false; @@ -85,7 +91,9 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { } if (keycode == KC_LALT && record->event.pressed) { // Stop recording/playing + #ifdef AUDIO_ENABLE stop_all_notes(); + #endif if (music_sequence_recording) { // was recording music_sequence_recorded = true; } @@ -95,7 +103,9 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { } if (keycode == KC_LGUI && record->event.pressed && music_sequence_recorded) { // Start playing + #ifdef AUDIO_ENABLE stop_all_notes(); + #endif music_sequence_recording = false; music_sequence_playing = true; music_sequence_position = 0; @@ -116,6 +126,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { } #define MUSIC_MODE_GUITAR + #ifdef AUDIO_ENABLE #ifdef MUSIC_MODE_CHROMATIC float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(MATRIX_ROWS - record->event.key.row)); #elif defined(MUSIC_MODE_GUITAR) @@ -125,15 +136,20 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { #else float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + SCALE[record->event.key.col + music_offset])/12.0+(MATRIX_ROWS - record->event.key.row)); #endif + #endif // AUDIO_ENABLE if (record->event.pressed) { + #ifdef AUDIO_ENABLE play_note(freq, 0xF); if (music_sequence_recording) { music_sequence[music_sequence_count] = freq; music_sequence_count++; } + #endif } else { + #ifdef AUDIO_ENABLE stop_note(freq); + #endif } if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through @@ -161,15 +177,19 @@ void music_on(void) { void music_off(void) { music_activated = 0; + #ifdef AUDIO_ENABLE stop_all_notes(); + #endif } __attribute__ ((weak)) void music_on_user() {} +#ifdef AUDIO_ENABLE __attribute__ ((weak)) void audio_on_user() {} +#endif __attribute__ ((weak)) void music_scale_user() {} @@ -178,8 +198,10 @@ void matrix_scan_music(void) { if (music_sequence_playing) { if ((music_sequence_timer == 0) || (timer_elapsed(music_sequence_timer) > music_sequence_interval)) { music_sequence_timer = timer_read(); + #ifdef AUDIO_ENABLE stop_note(music_sequence[(music_sequence_position - 1 < 0)?(music_sequence_position - 1 + music_sequence_count):(music_sequence_position - 1)]); play_note(music_sequence[music_sequence_position], 0xF); + #endif music_sequence_position = (music_sequence_position + 1) % music_sequence_count; } } diff --git a/quantum/quantum.c b/quantum/quantum.c index 4a6d0355..83fa8770 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -150,10 +150,10 @@ bool process_record_quantum(keyrecord_t *record) { if (!( process_record_kb(keycode, record) && - #ifdef MIDI_ENABLE + #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) process_midi(keycode, record) && #endif - #ifdef AUDIO_ENABLE + #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) process_music(keycode, record) && #endif #ifdef TAP_DANCE_ENABLE diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 6d143805..3b82b720 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -2,7 +2,7 @@ #ifndef QUANTUM_KEYCODES_H #define QUANTUM_KEYCODES_H -#ifdef MIDI_ENABLE +#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) #ifndef MIDI_TONE_KEYCODE_OCTAVES #define MIDI_TONE_KEYCODE_OCTAVES 3 #endif @@ -116,6 +116,12 @@ enum quantum_keycodes { #ifdef MIDI_ENABLE // Midi +#ifdef MIDI_BASIC + MI_ON, // send midi notes when music mode is enabled + MI_OFF, // don't send midi notes when music mode is enabled +#endif + +#ifdef MIDI_ADVANCED MIDI_TONE_MIN, #if MIDI_TONE_KEYCODE_OCTAVES > 0 @@ -321,7 +327,7 @@ enum quantum_keycodes { MI_CHD, // previous channel MI_CHU, // next channel - MI_OFF, // all notes off + MI_ALLOFF, // all notes off MI_SUS, // sustain MI_PORT, // portamento @@ -332,7 +338,8 @@ enum quantum_keycodes { MI_MOD, // modulation MI_MODSD, // decrease modulation speed MI_MODSU, // increase modulation speed -#endif +#endif // MIDI_ADVANCED +#endif // MIDI_ENABLE // Backlight functionality BL_0, diff --git a/quantum/template/config.h b/quantum/template/config.h index cd6dfa2c..54db4f24 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -159,6 +159,23 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +//#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ //#define MIDI_TONE_KEYCODE_OCTAVES 1 diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index bd249805..651a0f34 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1104,7 +1104,9 @@ void sysex_callback(MidiDevice * device, void setup_midi(void) { +#ifdef MIDI_ADVANCED midi_init(); +#endif midi_device_init(&midi_device); midi_device_set_send_func(&midi_device, usb_send_func); midi_device_set_pre_input_process_func(&midi_device, usb_get_midi); @@ -1180,8 +1182,10 @@ int main(void) #ifdef MIDI_ENABLE midi_device_process(&midi_device); +#ifdef MIDI_ADVANCED midi_task(); #endif +#endif #if defined(RGBLIGHT_ANIMATIONS) & defined(RGBLIGHT_ENABLE) rgblight_task(); From 1000799d1ef594bf9f48076986ec300ef9e536db Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 25 Feb 2017 19:25:33 -0800 Subject: [PATCH 030/183] Factor basic note processing into respective processors --- build_keyboard.mk | 1 + quantum/process_keycode/process_audio.c | 62 +++++++++++ quantum/process_keycode/process_audio.h | 11 ++ quantum/process_keycode/process_midi.c | 28 ++++- quantum/process_keycode/process_midi.h | 13 ++- quantum/process_keycode/process_music.c | 137 ++++++++++-------------- quantum/process_keycode/process_music.h | 5 +- quantum/quantum.c | 3 + quantum/quantum.h | 7 +- 9 files changed, 184 insertions(+), 83 deletions(-) create mode 100644 quantum/process_keycode/process_audio.c create mode 100644 quantum/process_keycode/process_audio.h diff --git a/build_keyboard.mk b/build_keyboard.mk index eea8d591..07dfe85b 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -157,6 +157,7 @@ endif ifeq ($(strip $(AUDIO_ENABLE)), yes) OPT_DEFS += -DAUDIO_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_music.c + SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c SRC += $(QUANTUM_DIR)/audio/audio.c SRC += $(QUANTUM_DIR)/audio/voices.c SRC += $(QUANTUM_DIR)/audio/luts.c diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c new file mode 100644 index 00000000..5b5da546 --- /dev/null +++ b/quantum/process_keycode/process_audio.c @@ -0,0 +1,62 @@ +#include "process_audio.h" +#include "audio.h" + +static float compute_freq_for_midi_note(uint8_t note) +{ + // https://en.wikipedia.org/wiki/MIDI_tuning_standard + return pow(2.0, (note - 69) / 12.0) * 440.0f; +} + +bool process_audio(uint16_t keycode, keyrecord_t *record) { + + if (keycode == AU_ON && record->event.pressed) { + audio_on(); + return false; + } + + if (keycode == AU_OFF && record->event.pressed) { + audio_off(); + return false; + } + + if (keycode == AU_TOG && record->event.pressed) { + if (is_audio_on()) + { + audio_off(); + } + else + { + audio_on(); + } + return false; + } + + if (keycode == MUV_IN && record->event.pressed) { + voice_iterate(); + music_scale_user(); + return false; + } + + if (keycode == MUV_DE && record->event.pressed) { + voice_deiterate(); + music_scale_user(); + return false; + } + + return true +} + +void process_audio_noteon(uint8_t note) { + play_note(compute_freq_for_midi_note(note), 0xF); +} + +void process_audio_noteoff(uint8_t note) { + stop_note(compute_freq_for_midi_note(note)); +} + +void process_audio_stop_all_notes(void) { + stop_all_notes(); +} + +__attribute__ ((weak)) +void audio_on_user() {} \ No newline at end of file diff --git a/quantum/process_keycode/process_audio.h b/quantum/process_keycode/process_audio.h new file mode 100644 index 00000000..59a17725 --- /dev/null +++ b/quantum/process_keycode/process_audio.h @@ -0,0 +1,11 @@ +#ifndef PROCESS_AUDIO_H +#define PROCESS_AUDIO_H + +bool process_audio(uint16_t keycode, keyrecord_t *record); +void process_audio_noteon(uint8_t note); +void process_audio_noteoff(uint8_t note); +void process_audio_stop_all_notes(void); + +void audio_on_user(void); + +#endif \ No newline at end of file diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 161f04a2..214bba90 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -1,6 +1,28 @@ #include "process_midi.h" -#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) +#ifdef MIDI_ENABLE +#include "midi.h" + +#ifdef MIDI_BASIC + +void process_midi_basic_noteon(uint8_t note) +{ + midi_send_noteon(&midi_device, 0, note, 128); +} + +void process_midi_basic_noteoff(uint8_t note) +{ + midi_send_noteoff(&midi_device, 0, note, 0); +} + +void process_midi_basic_stop_all_notes(void) +{ + midi_send_cc(&midi_device, 0, 0x7B, 0); +} + +#endif // MIDI_BASIC + +#ifdef MIDI_ADVANCED #include "timer.h" @@ -165,7 +187,7 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) case MI_ALLOFF: if (record->event.pressed) { midi_send_cc(&midi_device, midi_config.channel, 0x7B, 0); - dprintf("midi off\n"); + dprintf("midi all notes off\n"); } return false; case MI_SUS: @@ -212,3 +234,5 @@ bool process_midi(uint16_t keycode, keyrecord_t *record) } #endif // MIDI_ADVANCED + +#endif // MIDI_ENABLE diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h index ffd41579..0f559ec2 100644 --- a/quantum/process_keycode/process_midi.h +++ b/quantum/process_keycode/process_midi.h @@ -2,8 +2,16 @@ #define PROCESS_MIDI_H #include "quantum.h" -#include "midi.h" +#ifdef MIDI_ENABLE + +#ifdef MIDI_BASIC +void process_midi_basic_noteon(uint8_t note); +void process_midi_basic_noteoff(uint8_t note); +void process_midi_basic_stop_all_notes(void); +#endif + +#ifdef MIDI_ADVANCED typedef union { uint32_t raw; struct { @@ -25,5 +33,8 @@ bool process_midi(uint16_t keycode, keyrecord_t *record); #define MIDI_TONE_COUNT (MIDI_TONE_MAX - MIDI_TONE_MIN + 1) uint8_t midi_compute_note(uint16_t keycode); +#endif // MIDI_ADVANCED + +#endif // MIDI_ENABLE #endif \ No newline at end of file diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index ac906b62..a1e270df 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -1,5 +1,14 @@ #include "process_music.h" +#ifdef AUDIO_ENABLE +#include "process_audio.h" +#endif +#if defined(MIDI_ENABLE) && defined(MIDI_BASIC) +#include "process_midi.h" +#endif + +#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) + bool music_activated = false; uint8_t music_starting_note = 0x0C; int music_offset = 7; @@ -8,38 +17,41 @@ int music_offset = 7; static bool music_sequence_recording = false; static bool music_sequence_recorded = false; static bool music_sequence_playing = false; -static float music_sequence[16] = {0}; +static uint8_t music_sequence[16] = {0}; static uint8_t music_sequence_count = 0; static uint8_t music_sequence_position = 0; static uint16_t music_sequence_timer = 0; static uint16_t music_sequence_interval = 100; -bool process_music(uint16_t keycode, keyrecord_t *record) { +static void music_noteon(uint8_t note) { + #ifdef AUDIO_ENABLE + process_audio_noteon(note); + #endif + #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) + process_midi_basic_noteon(note); + #endif +} - #ifdef AUDIO_ENABLE - if (keycode == AU_ON && record->event.pressed) { - audio_on(); - return false; - } +static void music_noteoff(uint8_t note) { + #ifdef AUDIO_ENABLE + process_audio_noteoff(note); + #endif + #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) + process_midi_basic_noteoff(note); + #endif +} - if (keycode == AU_OFF && record->event.pressed) { - audio_off(); - return false; - } +static void music_all_notes_off(void) { + #ifdef AUDIO_ENABLE + process_audio_stop_all_notes(); + #endif + #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) + process_midi_basic_stop_all_notes(); + #endif +} - if (keycode == AU_TOG && record->event.pressed) { - if (is_audio_on()) - { - audio_off(); - } - else - { - audio_on(); - } - return false; - } - #endif // AUDIO_ENABLE +bool process_music(uint16_t keycode, keyrecord_t *record) { if (keycode == MU_ON && record->event.pressed) { music_on(); @@ -63,26 +75,10 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { return false; } - #ifdef AUDIO_ENABLE - if (keycode == MUV_IN && record->event.pressed) { - voice_iterate(); - music_scale_user(); - return false; - } - - if (keycode == MUV_DE && record->event.pressed) { - voice_deiterate(); - music_scale_user(); - return false; - } - #endif // AUDIO_ENABLE - if (music_activated) { if (keycode == KC_LCTL && record->event.pressed) { // Start recording - #ifdef AUDIO_ENABLE - stop_all_notes(); - #endif + music_all_notes_off(); music_sequence_recording = true; music_sequence_recorded = false; music_sequence_playing = false; @@ -91,9 +87,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { } if (keycode == KC_LALT && record->event.pressed) { // Stop recording/playing - #ifdef AUDIO_ENABLE - stop_all_notes(); - #endif + music_all_notes_off(); if (music_sequence_recording) { // was recording music_sequence_recorded = true; } @@ -103,9 +97,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { } if (keycode == KC_LGUI && record->event.pressed && music_sequence_recorded) { // Start playing - #ifdef AUDIO_ENABLE - stop_all_notes(); - #endif + music_all_notes_off(); music_sequence_recording = false; music_sequence_playing = true; music_sequence_position = 0; @@ -124,32 +116,27 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { music_sequence_interval+=10; return false; } + #define MUSIC_MODE_GUITAR - #ifdef AUDIO_ENABLE #ifdef MUSIC_MODE_CHROMATIC - float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(MATRIX_ROWS - record->event.key.row)); + uint8_t note = (music_starting_note + record->event.key.col + music_offset - 3)+12*(MATRIX_ROWS - record->event.key.row); #elif defined(MUSIC_MODE_GUITAR) - float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(float)(MATRIX_ROWS - record->event.key.row + 7)*5.0/12); + uint8_t note = (music_starting_note + record->event.key.col + music_offset + 32)+5*(MATRIX_ROWS - record->event.key.row); #elif defined(MUSIC_MODE_VIOLIN) - float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + record->event.key.col + music_offset)/12.0+(float)(MATRIX_ROWS - record->event.key.row + 5)*7.0/12); + uint8_t note = (music_starting_note + record->event.key.col + music_offset + 32)+7*(MATRIX_ROWS - record->event.key.row); #else - float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + SCALE[record->event.key.col + music_offset])/12.0+(MATRIX_ROWS - record->event.key.row)); + uint8_t note = (music_starting_note + SCALE[record->event.key.col + music_offset] - 3)+12*(MATRIX_ROWS - record->event.key.row); #endif - #endif // AUDIO_ENABLE if (record->event.pressed) { - #ifdef AUDIO_ENABLE - play_note(freq, 0xF); + music_noteon(note); if (music_sequence_recording) { - music_sequence[music_sequence_count] = freq; + music_sequence[music_sequence_count] = note; music_sequence_count++; } - #endif } else { - #ifdef AUDIO_ENABLE - stop_note(freq); - #endif + music_noteoff(note); } if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through @@ -177,32 +164,26 @@ void music_on(void) { void music_off(void) { music_activated = 0; - #ifdef AUDIO_ENABLE - stop_all_notes(); - #endif + music_all_notes_off(); } - -__attribute__ ((weak)) -void music_on_user() {} - -#ifdef AUDIO_ENABLE -__attribute__ ((weak)) -void audio_on_user() {} -#endif - -__attribute__ ((weak)) -void music_scale_user() {} - void matrix_scan_music(void) { if (music_sequence_playing) { if ((music_sequence_timer == 0) || (timer_elapsed(music_sequence_timer) > music_sequence_interval)) { music_sequence_timer = timer_read(); - #ifdef AUDIO_ENABLE - stop_note(music_sequence[(music_sequence_position - 1 < 0)?(music_sequence_position - 1 + music_sequence_count):(music_sequence_position - 1)]); - play_note(music_sequence[music_sequence_position], 0xF); - #endif + uint8_t prev_note = music_sequence[(music_sequence_position - 1 < 0)?(music_sequence_position - 1 + music_sequence_count):(music_sequence_position - 1)]; + uint8_t next_note = music_sequence[music_sequence_position]; + music_noteoff(prev_note); + music_noteon(next_note); music_sequence_position = (music_sequence_position + 1) % music_sequence_count; } } } + +__attribute__ ((weak)) +void music_on_user() {} + +__attribute__ ((weak)) +void music_scale_user() {} + +#endif // defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) \ No newline at end of file diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h index 318b3e38..69913b27 100644 --- a/quantum/process_keycode/process_music.h +++ b/quantum/process_keycode/process_music.h @@ -3,6 +3,8 @@ #include "quantum.h" +#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) + bool process_music(uint16_t keycode, keyrecord_t *record); bool is_music_on(void); @@ -10,7 +12,6 @@ void music_toggle(void); void music_on(void); void music_off(void); -void audio_on_user(void); void music_on_user(void); void music_scale_user(void); @@ -24,4 +25,6 @@ void matrix_scan_music(void); 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } #endif +#endif // defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) + #endif \ No newline at end of file diff --git a/quantum/quantum.c b/quantum/quantum.c index 83fa8770..7a27a568 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -153,6 +153,9 @@ bool process_record_quantum(keyrecord_t *record) { #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) process_midi(keycode, record) && #endif + #ifdef AUDIO_ENABLE + process_audio(keycode, record) && + #endif #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) process_music(keycode, record) && #endif diff --git a/quantum/quantum.h b/quantum/quantum.h index 580d5120..77732d43 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -35,11 +35,16 @@ extern uint32_t default_layer_state; #ifdef MIDI_ENABLE #include +#ifdef MIDI_ADVANCED #include "process_midi.h" #endif +#endif // MIDI_ENABLE #ifdef AUDIO_ENABLE - #include "audio.h" + #include "process_audio.h" +#endif + +#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) #include "process_music.h" #endif From ea14ed122fb5c1b3be5f5d6edda9b39b151692e5 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 25 Feb 2017 19:37:33 -0800 Subject: [PATCH 031/183] Add basic layer to sample MIDI keycap --- keyboards/satan/keymaps/midi/keymap.c | 23 ++++++++++++++++++++++- quantum/process_keycode/process_audio.c | 2 +- quantum/process_keycode/process_music.c | 3 ++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/keyboards/satan/keymaps/midi/keymap.c b/keyboards/satan/keymaps/midi/keymap.c index 349391c3..8378b4e4 100644 --- a/keyboards/satan/keymaps/midi/keymap.c +++ b/keyboards/satan/keymaps/midi/keymap.c @@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, TG(_ML), KC_RCTL), #if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) -/* Keymap _ML: MIDI Layer +/* Keymap _ML: MIDI Layer (Advanced) * ,------------------------------------------------------------------------. * | Exit | | | | | | | | | | | | | | * |------------------------------------------------------------------------| @@ -52,5 +52,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MI_MOD, MI_C, MI_D, MI_E, MI_F, MI_G, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, _______, \ MI_SUS, MI_OCTD, MI_OCTU, MI_MODSD, MI_MODSU, XXXXXXX, XXXXXXX, XXXXXXX, MI_TRNSD, MI_TRNSU, MI_TRNS_0, MI_SUS, \ _______, _______, _______, MI_ALLOFF, _______, _______, _______, _______), +#elif defined(MIDI_ENABLE) && defined(MIDI_BASIC) +/* Keymap _ML: MIDI Layer (Advanced) + * ,------------------------------------------------------------------------. + * | Exit | | | | | | | | | | | | | | + * |------------------------------------------------------------------------| + * | | | | | | | | | | | | | | | + * |------------------------------------------------------------------------| + * | | | | | | | | | | | | | | + * |------------------------------------------------------------------------| + * | |MuOn|MuOf|MiOn|MiOf| | | | | | | | + * |------------------------------------------------------------------------| + * | | | | | | | | | + * `------------------------------------------------------------------------' + */ + +[_ML] = KEYMAP_ANSI( + TG(_ML), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______), #endif }; \ No newline at end of file diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c index 5b5da546..d45242c9 100644 --- a/quantum/process_keycode/process_audio.c +++ b/quantum/process_keycode/process_audio.c @@ -28,7 +28,7 @@ bool process_audio(uint16_t keycode, keyrecord_t *record) { { audio_on(); } - return false; + return false; } if (keycode == MUV_IN && record->event.pressed) { diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index a1e270df..43bcf973 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -142,7 +142,8 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { if (keycode < 0xFF) // ignores all normal keycodes, but lets RAISE, LOWER, etc through return false; } - return true; + + return true; } bool is_music_on(void) { From a64ae1066250d3aafb6e9670bf617237ec4338e7 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 25 Feb 2017 20:41:13 -0800 Subject: [PATCH 032/183] Update existing keymaps Update existing keymaps to enable MIDI_BASIC functionality. Also added an option MIDI_ENABLE_STRICT to be strict about keycode use (which also reduces memory footprint at runtime) --- keyboards/planck/keymaps/dbroqua/config.h | 29 +++++++++++++++++++ keyboards/planck/keymaps/default/config.h | 29 +++++++++++++++++++ .../planck/keymaps/experimental/config.h | 23 +++++++++++++++ keyboards/planck/keymaps/impossible/config.h | 29 +++++++++++++++++++ keyboards/planck/keymaps/jeebak/config.h | 29 +++++++++++++++++++ keyboards/planck/keymaps/jhenahan/config.h | 23 +++++++++++++++ keyboards/planck/keymaps/premek/config.h | 29 +++++++++++++++++++ keyboards/planck/keymaps/sgoodwin/config.h | 29 +++++++++++++++++++ keyboards/planck/keymaps/smt/config.h | 29 +++++++++++++++++++ .../planck/keymaps/thermal_printer/config.h | 23 +++++++++++++++ keyboards/planck/keymaps/unicode/config.h | 29 +++++++++++++++++++ keyboards/planck/keymaps/xyverz/config.h | 29 +++++++++++++++++++ .../preonic/keymaps/CMD-Preonic/config.h | 29 +++++++++++++++++++ keyboards/preonic/keymaps/default/config.h | 29 +++++++++++++++++++ keyboards/preonic/keymaps/smt/config.h | 29 +++++++++++++++++++ keyboards/satan/keymaps/midi/config.h | 3 ++ keyboards/subatomic/keymaps/default/config.h | 29 +++++++++++++++++++ quantum/process_keycode/process_audio.c | 4 +-- quantum/process_keycode/process_music.c | 2 +- quantum/process_keycode/process_music.h | 1 + quantum/quantum.c | 4 +-- quantum/quantum_keycodes.h | 28 +++++++++--------- quantum/template/config.h | 3 ++ 23 files changed, 472 insertions(+), 19 deletions(-) create mode 100644 keyboards/planck/keymaps/dbroqua/config.h create mode 100644 keyboards/planck/keymaps/default/config.h create mode 100644 keyboards/planck/keymaps/impossible/config.h create mode 100644 keyboards/planck/keymaps/jeebak/config.h create mode 100644 keyboards/planck/keymaps/premek/config.h create mode 100644 keyboards/planck/keymaps/sgoodwin/config.h create mode 100644 keyboards/planck/keymaps/smt/config.h create mode 100644 keyboards/planck/keymaps/unicode/config.h create mode 100644 keyboards/planck/keymaps/xyverz/config.h create mode 100644 keyboards/preonic/keymaps/CMD-Preonic/config.h create mode 100644 keyboards/preonic/keymaps/default/config.h create mode 100644 keyboards/preonic/keymaps/smt/config.h create mode 100644 keyboards/subatomic/keymaps/default/config.h diff --git a/keyboards/planck/keymaps/dbroqua/config.h b/keyboards/planck/keymaps/dbroqua/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/dbroqua/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/default/config.h b/keyboards/planck/keymaps/default/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/default/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/experimental/config.h b/keyboards/planck/keymaps/experimental/config.h index cc093bee..492490ca 100644 --- a/keyboards/planck/keymaps/experimental/config.h +++ b/keyboards/planck/keymaps/experimental/config.h @@ -14,4 +14,27 @@ #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + #endif diff --git a/keyboards/planck/keymaps/impossible/config.h b/keyboards/planck/keymaps/impossible/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/impossible/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/jeebak/config.h b/keyboards/planck/keymaps/jeebak/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/jeebak/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/jhenahan/config.h b/keyboards/planck/keymaps/jhenahan/config.h index cd3adc41..1e42b92b 100644 --- a/keyboards/planck/keymaps/jhenahan/config.h +++ b/keyboards/planck/keymaps/jhenahan/config.h @@ -6,4 +6,27 @@ #define FORCE_NKRO #define WORKMAN_SOUND COLEMAK_SOUND +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + #endif diff --git a/keyboards/planck/keymaps/premek/config.h b/keyboards/planck/keymaps/premek/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/premek/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/sgoodwin/config.h b/keyboards/planck/keymaps/sgoodwin/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/sgoodwin/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/smt/config.h b/keyboards/planck/keymaps/smt/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/smt/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/thermal_printer/config.h b/keyboards/planck/keymaps/thermal_printer/config.h index 430b6493..bcd09893 100644 --- a/keyboards/planck/keymaps/thermal_printer/config.h +++ b/keyboards/planck/keymaps/thermal_printer/config.h @@ -20,4 +20,27 @@ sei(); \ } while(0) +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + #endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/unicode/config.h b/keyboards/planck/keymaps/unicode/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/unicode/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/xyverz/config.h b/keyboards/planck/keymaps/xyverz/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/planck/keymaps/xyverz/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/preonic/keymaps/CMD-Preonic/config.h b/keyboards/preonic/keymaps/CMD-Preonic/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/preonic/keymaps/CMD-Preonic/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/preonic/keymaps/default/config.h b/keyboards/preonic/keymaps/default/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/preonic/keymaps/default/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/preonic/keymaps/smt/config.h b/keyboards/preonic/keymaps/smt/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/preonic/keymaps/smt/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/satan/keymaps/midi/config.h b/keyboards/satan/keymaps/midi/config.h index 59250b49..8e10b04e 100644 --- a/keyboards/satan/keymaps/midi/config.h +++ b/keyboards/satan/keymaps/midi/config.h @@ -7,6 +7,9 @@ * MIDI options */ +/* Prevent use of disabled MIDI features in the keymap */ +#define MIDI_ENABLE_STRICT 1 + /* enable basic MIDI features: - MIDI notes can be sent when in Music mode is on */ diff --git a/keyboards/subatomic/keymaps/default/config.h b/keyboards/subatomic/keymaps/default/config.h new file mode 100644 index 00000000..4c615819 --- /dev/null +++ b/keyboards/subatomic/keymaps/default/config.h @@ -0,0 +1,29 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c index d45242c9..71c0297e 100644 --- a/quantum/process_keycode/process_audio.c +++ b/quantum/process_keycode/process_audio.c @@ -1,5 +1,5 @@ -#include "process_audio.h" #include "audio.h" +#include "process_audio.h" static float compute_freq_for_midi_note(uint8_t note) { @@ -43,7 +43,7 @@ bool process_audio(uint16_t keycode, keyrecord_t *record) { return false; } - return true + return true; } void process_audio_noteon(uint8_t note) { diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index 43bcf973..4b86b91f 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -42,7 +42,7 @@ static void music_noteoff(uint8_t note) { #endif } -static void music_all_notes_off(void) { +void music_all_notes_off(void) { #ifdef AUDIO_ENABLE process_audio_stop_all_notes(); #endif diff --git a/quantum/process_keycode/process_music.h b/quantum/process_keycode/process_music.h index 69913b27..a36514a4 100644 --- a/quantum/process_keycode/process_music.h +++ b/quantum/process_keycode/process_music.h @@ -14,6 +14,7 @@ void music_off(void); void music_on_user(void); void music_scale_user(void); +void music_all_notes_off(void); void matrix_scan_music(void); diff --git a/quantum/quantum.c b/quantum/quantum.c index 7a27a568..a4a12061 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -95,8 +95,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { void reset_keyboard(void) { clear_keyboard(); -#ifdef AUDIO_ENABLE - stop_all_notes(); +#if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_ENABLE_BASIC)) + music_all_notes_off(); shutdown_user(); #endif wait_ms(250); diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 3b82b720..56228f27 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -1,8 +1,11 @@ - #ifndef QUANTUM_KEYCODES_H #define QUANTUM_KEYCODES_H -#if defined(MIDI_ENABLE) && defined(MIDI_ADVANCED) +#ifndef MIDI_ENABLE_STRICT +#define MIDI_ENABLE_STRICT 0 +#endif + +#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)) #ifndef MIDI_TONE_KEYCODE_OCTAVES #define MIDI_TONE_KEYCODE_OCTAVES 3 #endif @@ -113,18 +116,16 @@ enum quantum_keycodes { MUV_IN, MUV_DE, -#ifdef MIDI_ENABLE // Midi - -#ifdef MIDI_BASIC +#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) MI_ON, // send midi notes when music mode is enabled MI_OFF, // don't send midi notes when music mode is enabled #endif -#ifdef MIDI_ADVANCED +#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)) MIDI_TONE_MIN, -#if MIDI_TONE_KEYCODE_OCTAVES > 0 +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 0 MI_C = MIDI_TONE_MIN, MI_Cs, MI_Db = MI_Cs, @@ -144,7 +145,7 @@ enum quantum_keycodes { MI_B, #endif -#if MIDI_TONE_KEYCODE_OCTAVES > 1 +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 1 MI_C_1, MI_Cs_1, MI_Db_1 = MI_Cs_1, @@ -164,7 +165,7 @@ enum quantum_keycodes { MI_B_1, #endif -#if MIDI_TONE_KEYCODE_OCTAVES > 2 +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 2 MI_C_2, MI_Cs_2, MI_Db_2 = MI_Cs_2, @@ -184,7 +185,7 @@ enum quantum_keycodes { MI_B_2, #endif -#if MIDI_TONE_KEYCODE_OCTAVES > 3 +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 3 MI_C_3, MI_Cs_3, MI_Db_3 = MI_Cs_3, @@ -204,7 +205,7 @@ enum quantum_keycodes { MI_B_3, #endif -#if MIDI_TONE_KEYCODE_OCTAVES > 4 +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 4 MI_C_4, MI_Cs_4, MI_Db_4 = MI_Cs_4, @@ -224,7 +225,7 @@ enum quantum_keycodes { MI_B_4, #endif -#if MIDI_TONE_KEYCODE_OCTAVES > 5 +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 5 MI_C_5, MI_Cs_5, MI_Db_5 = MI_Cs_5, @@ -244,7 +245,7 @@ enum quantum_keycodes { MI_B_5, #endif -#if MIDI_TONE_KEYCODE_OCTAVES > 5 +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 5 MIDI_TONE_MAX = MI_B_5, #elif MIDI_TONE_KEYCODE_OCTAVES > 4 MIDI_TONE_MAX = MI_B_4, @@ -339,7 +340,6 @@ enum quantum_keycodes { MI_MODSD, // decrease modulation speed MI_MODSU, // increase modulation speed #endif // MIDI_ADVANCED -#endif // MIDI_ENABLE // Backlight functionality BL_0, diff --git a/quantum/template/config.h b/quantum/template/config.h index 54db4f24..7393097e 100644 --- a/quantum/template/config.h +++ b/quantum/template/config.h @@ -163,6 +163,9 @@ along with this program. If not, see . * MIDI options */ +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + /* enable basic MIDI features: - MIDI notes can be sent when in Music mode is on */ From b911e1966f6e9077df01c01d77b4e2018b582eb0 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 25 Feb 2017 21:13:47 -0800 Subject: [PATCH 033/183] Fix redundant process_music.c in sources --- build_keyboard.mk | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index 07dfe85b..82464d58 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -23,9 +23,9 @@ ifdef master MASTER = $(master) endif -ifeq ($(MASTER),right) +ifeq ($(MASTER),right) OPT_DEFS += -DMASTER_IS_ON_RIGHT -else +else ifneq ($(MASTER),left) $(error MASTER does not have a valid value(left/right)) endif @@ -38,7 +38,7 @@ KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c ifneq ("$(wildcard $(KEYBOARD_C))","") include $(KEYBOARD_PATH)/rules.mk -else +else $(error "$(KEYBOARD_C)" does not exist) endif @@ -49,7 +49,7 @@ ifneq ($(SUBPROJECT),) ifneq ("$(wildcard $(SUBPROJECT_C))","") OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) include $(SUBPROJECT_PATH)/rules.mk - else + else $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) endif endif @@ -83,7 +83,7 @@ ifneq ($(SUBPROJECT),) endif endif -# Save the defines and includes here, so we don't include any keymap specific ones +# Save the defines and includes here, so we don't include any keymap specific ones PROJECT_DEFS := $(OPT_DEFS) PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH) PROJECT_CONFIG := $(CONFIG_H) @@ -139,12 +139,27 @@ ifeq ($(strip $(API_SYSEX_ENABLE)), yes) MIDI_ENABLE=yes endif +MUSIC_ENABLE := 0 + +ifeq ($(strip $(AUDIO_ENABLE)), yes) + OPT_DEFS += -DAUDIO_ENABLE + MUSIC_ENABLE := 1 + SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c + SRC += $(QUANTUM_DIR)/audio/audio.c + SRC += $(QUANTUM_DIR)/audio/voices.c + SRC += $(QUANTUM_DIR)/audio/luts.c +endif + ifeq ($(strip $(MIDI_ENABLE)), yes) OPT_DEFS += -DMIDI_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_music.c + MUSIC_ENABLE := 1 SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c endif +ifeq ($(MUSIC_ENABLE), 1) + SRC += $(QUANTUM_DIR)/process_keycode/process_music.c +endif + ifeq ($(strip $(COMBO_ENABLE)), yes) OPT_DEFS += -DCOMBO_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c @@ -154,15 +169,6 @@ ifeq ($(strip $(VIRTSER_ENABLE)), yes) OPT_DEFS += -DVIRTSER_ENABLE endif -ifeq ($(strip $(AUDIO_ENABLE)), yes) - OPT_DEFS += -DAUDIO_ENABLE - SRC += $(QUANTUM_DIR)/process_keycode/process_music.c - SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c - SRC += $(QUANTUM_DIR)/audio/audio.c - SRC += $(QUANTUM_DIR)/audio/voices.c - SRC += $(QUANTUM_DIR)/audio/luts.c -endif - ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes) OPT_DEFS += -DFAUXCLICKY_ENABLE SRC += $(QUANTUM_DIR)/fauxclicky.c @@ -252,7 +258,7 @@ endif OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) $(KEYMAP_OUTPUT)_SRC := $(SRC) -$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" +$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) From 976c856966841cd0be6e514c6365c73164f5b96d Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Sat, 25 Feb 2017 21:38:35 -0800 Subject: [PATCH 034/183] Update size estimates in the Makefile MIDI_ENABLE = no text data bss dec hex filename 0 17080 0 17080 42b8 satan_midi.hex MIDI_ENABLE = yes MIDI_BASIC undefined MIDI_ADVANCED undefined text data bss dec hex filename 0 19494 0 19494 4c26 satan_midi.hex +2414 bytes (vs. MIDI_ENABLE = no) MIDI_ENABLE = yes 0 20846 0 20846 516e satan_midi.hex +1352 bytes (vs. MIDI_ENABLE = yes, MIDI_BASIC off, MIDI_ADVANCED off) MIDI_ENABLE = yes #define MIDI_BASIC #define MIDI_ADVANCED text data bss dec hex filename 0 21292 0 21292 532c satan_midi.hex +1798 bytes (vs. MIDI_ENABLE = yes, MIDI_BASIC off, MIDI_ADVANCED off) Conclusion: +2400 to 4200, depending on config --- keyboards/satan/keymaps/midi/Makefile | 2 +- quantum/template/rules.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/satan/keymaps/midi/Makefile b/keyboards/satan/keymaps/midi/Makefile index 4e2d9d2f..89c34b39 100644 --- a/keyboards/satan/keymaps/midi/Makefile +++ b/keyboards/satan/keymaps/midi/Makefile @@ -9,7 +9,7 @@ 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 = yes # MIDI support (+3800) +MIDI_ENABLE = yes # MIDI support (+2400 to 4200, depending on config) AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/quantum/template/rules.mk b/quantum/template/rules.mk index bad3387b..a1f9377d 100644 --- a/quantum/template/rules.mk +++ b/quantum/template/rules.mk @@ -61,7 +61,7 @@ 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 +MIDI_ENABLE ?= no # MIDI support (+2400 to 4200, depending on config) UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE ?= no # Audio output on port C6 From c370c1e1f3c27027c0a6513d34a749a1a88603fc Mon Sep 17 00:00:00 2001 From: Gunther Gruber Date: Mon, 27 Feb 2017 09:48:58 +0100 Subject: [PATCH 035/183] guni keymap --- keyboard/ergodox_ez/keymaps/guni/keymap.c | 176 ++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/guni/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/guni/keymap.c b/keyboard/ergodox_ez/keymaps/guni/keymap.c new file mode 100644 index 00000000..fc8567e6 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/guni/keymap.c @@ -0,0 +1,176 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + KEYMAP( // layer 0 : default + // left hand + KC_EQL , KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, + KC_FN25 , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, + KC_FN27 , KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_PGUP, + KC_LGUI , KC_GRV,KC_LEFT,KC_RGHT,KC_LALT, + KC_NO , KC_NO , + KC_NO , + KC_BSPC,KC_DEL ,KC_FN23, + // right hand + KC_RBRC , KC_6, KC_7 , KC_8, KC_9, KC_0, KC_MINS, + KC_END , KC_Y, KC_U , KC_I, KC_O, KC_P, KC_FN28, + KC_H , KC_J, KC_K , KC_L, KC_SCLN,KC_FN30, + KC_PGDN , KC_N, KC_M , KC_COMM,KC_DOT, KC_SLSH,KC_FN29, + KC_RALT , KC_DOWN,KC_UP, KC_NO ,KC_RGUI, + KC_NO , KC_NO, + KC_NO , + KC_FN29,KC_ENT ,KC_SPC + ), + + KEYMAP( // layer 1 : function and symbol keys + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, + KC_TRNS,KC_AT,KC_UNDS ,KC_LBRC,KC_RBRC,KC_CIRC ,KC_TRNS, + KC_TRNS,KC_BSLS,KC_SLSH,KC_LCBR ,KC_RCBR ,KC_ASTR, + KC_TRNS,KC_HASH ,KC_DLR ,KC_PIPE ,KC_TILD ,KC_GRV ,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_FN1, + // right hand + KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS,KC_EXLM,LSFT(KC_COMM),LSFT(KC_DOT),KC_EQL,KC_AMPR, KC_TRNS, + LSFT(KC_SLSH),KC_LPRN,KC_RPRN,KC_MINS,LSFT(KC_SCLN),KC_TRNS, + KC_TRNS,KC_PLUS,LSFT(KC_5),LSFT(KC_QUOT),KC_QUOT,KC_SCLN,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + + KEYMAP( // layer 2: navigation + // left hand + KC_NO,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_PGUP,KC_HOME,KC_UP ,KC_END,KC_NO ,KC_TRNS, + KC_TRNS,KC_PGDN,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO, + KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO,KC_NO,KC_NO, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_FN1 , + // right hand + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS ,KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_END ,KC_TRNS, + KC_NO, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,KC_TRNS, + KC_TRNS,KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP,KC_TRNS, + KC_LEFT, KC_DOWN,KC_RGHT,KC_PGDN,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + KEYMAP( // layer 3 : teensy bootloader functions + // left hand + KC_FN0, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_FN1 , + // 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_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + + + KEYMAP( // layer 4: numpad + // left hand + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS,KC_NLCK,KC_PSLS,KC_PAST,KC_PAST,KC_PMNS,KC_BSPC, + KC_TRNS,KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS,KC_BSPC, + KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS,KC_PENT, + KC_TRNS,KC_NO, KC_P1, KC_P2, KC_P3, KC_PPLS,KC_PENT, + KC_P0, KC_PDOT,KC_SLSH,KC_PENT,KC_PENT, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS + ), + +}; + +/* id for user defined functions */ +enum function_id { + TEENSY_KEY, +}; + +/* + * Fn action definition + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key + [1] = ACTION_LAYER_SET(0, ON_PRESS), + //[11] = ACTION_MODS_KEY(MOD_LSFT, KC_COMM), + //[12] = ACTION_MODS_KEY(MOD_LSFT, KC_DOT), + + //[14] = ACTION_MODS_KEY(MOD_LSFT, KC_SLSH), + //[17] = ACTION_MODS_KEY(MOD_LSFT, KC_SCLN), + //[20] = ACTION_MODS_KEY(MOD_LSFT, KC_5), + //[21] = ACTION_MODS_KEY(MOD_LSFT, KC_QUOT), + [23] = ACTION_LAYER_SET(3, ON_PRESS), + [24] = ACTION_LAYER_SET(2, ON_PRESS), + [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB), + [26] = ACTION_LAYER_SET(1, ON_PRESS), + [27] = ACTION_LAYER_TAP_KEY(1, KC_CAPS), + [28] = ACTION_MODS_TAP_KEY(MOD_RCTL,KC_BSLS), + //[29] = ACTION_LAYER_TOGGLE(4), + [29] = ACTION_MODS_TAP_KEY(MOD_RSFT,KC_ESC), + [30] = ACTION_LAYER_TAP_KEY(1, KC_QUOT), + [31] = ACTION_LAYER_MOMENTARY(2), + //[] = ACTION_LAYER_TAP_KEY(4, KC_S), +}; + + +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) { + +}; + + +void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) +{ + + if (id == TEENSY_KEY) { + clear_keyboard(); + print("\n\nJump to bootloader... "); + _delay_ms(250); + bootloader_jump(); // should not return + print("not supported.\n"); + } +} From 38cf08697b571e5efd55428a4682e248295091fb Mon Sep 17 00:00:00 2001 From: Gunther Gruber Date: Mon, 27 Feb 2017 09:55:24 +0100 Subject: [PATCH 036/183] small changes in guni.c keymap to work with new qmk_firmware packet --- .../ergodox_ez => keyboards/ergodox}/keymaps/guni/keymap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) rename {keyboard/ergodox_ez => keyboards/ergodox}/keymaps/guni/keymap.c (98%) diff --git a/keyboard/ergodox_ez/keymaps/guni/keymap.c b/keyboards/ergodox/keymaps/guni/keymap.c similarity index 98% rename from keyboard/ergodox_ez/keymaps/guni/keymap.c rename to keyboards/ergodox/keymaps/guni/keymap.c index fc8567e6..f33829b8 100644 --- a/keyboard/ergodox_ez/keymaps/guni/keymap.c +++ b/keyboards/ergodox/keymaps/guni/keymap.c @@ -1,6 +1,7 @@ -#include "ergodox_ez.h" +#include "ergodox.h" #include "debug.h" #include "action_layer.h" +#include "bootloader.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KEYMAP( // layer 0 : default @@ -158,7 +159,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) }; // Runs just one time when the keyboard initializes. -void * matrix_init_user(void) { +void matrix_init_user(void) { }; From 748401e5c180e91181bc10a80491d7d5568c008a Mon Sep 17 00:00:00 2001 From: milestogo Date: Tue, 28 Feb 2017 21:53:42 -0800 Subject: [PATCH 037/183] keymap and C6 audio testing --- .../keymaps/milestogo/Makefile | 2 +- .../keymaps/milestogo/config.h | 1 - .../keymaps/milestogo/keymap.c | 150 +++++++++++++++--- 3 files changed, 125 insertions(+), 28 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile index a82d80de..1209ad78 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/Makefile @@ -10,7 +10,7 @@ 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 = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +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. diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h index 8893d122..aaf0077b 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -4,5 +4,4 @@ #include "../../config.h" // place overrides here - #endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index 0551fbde..244d52dc 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -1,11 +1,26 @@ #include "MS-sculpt-mobile.h" +#include "action_layer.h" + +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif #define _QWR 0 -#define _CDH 1 -#define _SYM 2 -#define _MOV 3 -#define _NUM 4 -#define _TRAN 9 +#define _CDH 2 +#define _SYM 3 +#define _MOV 4 +#define _TRAN 5 + + +enum layer_keycodes { +QWR, +CDH, +SYM, +MOV, +NUM, +TRAN +}; + // Shorter spacing #define XXXX KC_NO @@ -15,31 +30,36 @@ /* Fn Keys */ #define TT_SYM MO(_SYM) -#define TO_CDH TG(_CDH) #define TT_MOV KC_FN2 #define TT_NUM MO(_NUM) #define SSFT ACTION_MODS_ONESHOT(MOD_LSFT) +enum macro_keycodes { +DHPASTE=1, +VIBRK, +TO_CDH, +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* QWERTY * -* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|Mute| +* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|_CDH| * -------------------------------------------------------------------------------' -* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del | -* -------------------------------------------------------------------------- -* | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | | +* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| +* --------------------------------------------------------------------------- +* | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ | | * -------------------------------------------------------------------------------' -* | caps | a | s | d | f | g | h | j | k | l | ; | ' | enter |PgUp| +* |Bak/Mov| a | s | d | f | g | h | j | k | l | ; | ' | enter |PgUp| * -------------------------------------------------------------------------------- * |Lsft | z | x | c | v | b | n | m | , | . | / | Rsft| Up| PgDn| * --------------------------------------------------------------------------------- -* |Lctl |Lgui |Lalt | Space |Ralt | FN | Rctl |Left|Down|Rght| +* |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| * --------------------------------------------------------------------------------- */ [_QWR] = 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_VOLD, KC_VOLU, TO_CDH,\ + 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_VOLD, KC_VOLU, CDH,\ KC_ESC, KC_1, KC_2, KC_3 ,KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQL, KC_BSPC, KC_DEL,\ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\ TT_MOV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,\ @@ -48,29 +68,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_CDH] = KEYMAP (\ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, QWR, \ KC_ESC, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, ____, ____, ____,\ TT_MOV, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, ____,\ - KC_LSFT, KC_Z, KC_X, KC_C, M(1), KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, ____,\ + KC_LSFT, KC_Z, KC_X, KC_C, M(DHPASTE), KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, ____,\ ____, ____, ____ , KC_FN1, ____, ____, ____, ____, ____, ____ ), + +/* SYM +* +* |ESC | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10| F11| F12|Vol-|Vol+|_CDH| +* -------------------------------------------------------------------------------' +* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace|Del | +* -------------------------------------------------------------------------- +* | ESC: | ^ | { | } | @ | % | | [ | ( | ) | _ | [ | ] | \ | | +* -------------------------------------------------------------------------------' +* |Bak/Mov| ! | # | 0 | = | | * | - | 1 | + | ] | ` | enter |PgUp| +* -------------------------------------------------------------------------------- +* |Lsft | ; | ~ | : | ~ | "|"| $ | ~ | | | / | Rsft| Up| PgDn| +* --------------------------------------------------------------------------------- +* |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| +* --------------------------------------------------------------------------------- +*/ + [_SYM] = KEYMAP (\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC, ____, KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS, ____, ____, ____,\ - ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, ____, KC_ASTR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ - ____, ____, ____, ____, KC_TILDE, KC_PIPE, KC_DLR, ____, ____, ____, ____, ____, ____, ____,\ + M(VIBRK), KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC, ____, KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS, ____, ____, ____,\ + ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, ____, KC_ASTR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ + ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_TILDE,____, ____, KC_SLSH, ____, ____, ____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), [_MOV] = KEYMAP (\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, KC_LEFT,KC_DOWN, KC_UP, KC_RIGHT, ____, ____,____,____,\ + ____, ____,RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, ____, KC_UP, ____, ____, ____, ____, ____, \ + ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, ____, KC_LEFT,KC_DOWN, KC_RIGHT, ____, ____,____,____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), @@ -88,9 +125,54 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_TAP_KEY(_SYM,KC_SPACE), -[2] = ACTION_LAYER_TAP_KEY(_MOV,KC_BSPC), +[2] = ACTION_LAYER_TAP_KEY(_MOV,KC_BSPC) }; +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +#endif + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWR: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + layer_off(_CDH); + } + return false; + break; + + case CDH: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + layer_on(_CDH); + } + return false; + break; + + case SYM: + if (record->event.pressed) { + layer_on(_SYM); + } else { + layer_off(_SYM); + } + return false; + break; + + } + return true; + +} + + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function @@ -104,7 +186,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; - case 1 : + case DHPASTE: if(keyboard_report->mods & MOD_BIT(KC_LGUI) ) { if (record->event.pressed) { clear_keyboard_but_mods(); @@ -121,12 +203,29 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - + case VIBRK: // vi esc: + if (record->event.pressed) { + return MACRO( T(E),D(LSFT),T(SCLN),U(LSFT), END ); + } + break; } + + return MACRO_NONE; }; +#ifdef AUDIO_ENABLE + + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} +#endif + + void matrix_init_user(void) { } @@ -135,10 +234,9 @@ 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) { } + + From 0834c520c0c4adf0d4f59f4b149116b95726aec6 Mon Sep 17 00:00:00 2001 From: milestogo Date: Tue, 28 Feb 2017 21:54:35 -0800 Subject: [PATCH 038/183] missed config.h stuck modifiers change --- keyboards/handwired/MS-sculpt-mobile/config.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/config.h b/keyboards/handwired/MS-sculpt-mobile/config.h index 1ac40f99..d85c5c62 100644 --- a/keyboards/handwired/MS-sculpt-mobile/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/config.h @@ -24,7 +24,7 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 -#define MANUFACTURER Microsoft+abit +#define MANUFACTURER Microsoftplus #define PRODUCT sculpt mobile #define DESCRIPTION 6000 @@ -44,7 +44,7 @@ along with this program. If not, see . /* 0 1 2 3 4 5 6 7 */ #define MATRIX_ROW_PINS { F7,F6,F4,F5,F3,F2,F1,F0} /* A B C D E F G H I J K L M N O P Q R */ -#define MATRIX_COL_PINS { B7, D0, D1, D2, D3, D4, D5, D6, D7, E0,E1,C1, C0, C3, C2, C5, C4,C6} +#define MATRIX_COL_PINS { B7, D0, D1, D2, D3, D4, D5, D6, D7, E0,E1,C1, C0, C3, C2, C5, C4,C7} #define UNUSED_PINS { B6,B5,B4,B3,B2,B1,B0 } @@ -96,4 +96,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION +#define PREVENT_STUCK_MODIFIERS + #endif From b80c97b712de41871be1a25a30d6ec838ea9eda3 Mon Sep 17 00:00:00 2001 From: milestogo Date: Tue, 28 Feb 2017 23:27:49 -0800 Subject: [PATCH 039/183] clean up babblepaste --- .../handwired/MS-sculpt-mobile/babblePaste.c | 468 +++++++++++++++++ .../handwired/MS-sculpt-mobile/babblePaste.h | 72 +++ .../MS-sculpt-mobile/babblePaste.txt | 489 ++++++++++++++++++ 3 files changed, 1029 insertions(+) create mode 100644 keyboards/handwired/MS-sculpt-mobile/babblePaste.c create mode 100644 keyboards/handwired/MS-sculpt-mobile/babblePaste.h create mode 100644 keyboards/handwired/MS-sculpt-mobile/babblePaste.txt diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c new file mode 100644 index 00000000..00e8416f --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c @@ -0,0 +1,468 @@ +/* A library to output the right key shortcut in any common app. +Given a global variable babble_mode to show the environment and a +key that calls the paste macro, do the right type of paste. +Setting the context is done by another macro, or TBD interaction with the host. + +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 "action_layer.h" + +// GLOBAL variable. Sets startup default if no eeppom +char babble_mode = MAC_MODE ; + + +const static macro_t *babblePaste (keyrecord_t *record, uint16_t shortcut) { + + switch(babble_mode) { + +#ifdef MS_MODE + case MS_MODE: + switch(shortcut) { + + case BABL_DEL_RIGHT_1C: + return (static macro_t *) MACRO( D(DEL), END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); + case BABL_GO_START_LINE: + return MACRO( T(HOME), END ); + case BABL_GO_START_DOC: + return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); + case BABL_GO_END_LINE: + return MACRO( T(END), END ); + case BABL_GO_END_DOC: + return MACRO( D(LCTRL),T(END), U(LCTRL),END ); + case BABL_GO_NEXT_LINE: + return MACRO( T(DOWN), END ); + case BABL_GO_PREV_LINE: + return MACRO( T(UP), END ); + case BABL_PGDN: + return MACRO( T(PGDN), END ); + case BABL_PGUP: + return MACRO( T(PGUP), END ); +#ifndef BABL_MOVEMENTONLY + case BABL_UNDO: + return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); + case BABL_REDO: + return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); + case BABL_CUT: + return MACRO( D(LCTRL), T(X), U(LCTRL), END ); + case BABL_COPY: + return MACRO( D(LCTRL), T(C), U(LCTRL), END ); + case BABL_PASTE: + return MACRO( D(LCTRL), T(V), U(LCTRL), END ); + case BABL_SELECT_ALL: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_UNDO: + return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); + case BABL_REDO: + return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); + case BABL_CUT: + return MACRO( D(LCTRL), T(X), U(LCTRL), END ); + case BABL_COPY: + return MACRO( D(LCTRL), T(C), U(LCTRL), END ); + case BABL_PASTE: + return MACRO( D(LCTRL), T(V), U(LCTRL), END ); + case BABL_SELECT_ALL: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_FIND: + return MACRO( D(LCTRL),T(F), U(LCTRL),END ); + case BABL_FIND_NEXT: + return MACRO( T(F3),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LCTRL),T(H), U(LCTRL),END ); + case BABL_RUNAPP: + return MACRO( D(LGUI),T(R), U(LGUI),END ); + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LALT),T(TAB), U(LALT),END ); + case BABL_SWITCH_APP_LAST: + return MACRO( D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); + case BABL_CLOSE_APP: + return MACRO( D(LALT),T(F4), U(LALT),END ); + case BABL_HELP: + return MACRO( T(F1),END ); +#endif + break; + + return MACRO_NONE; + } + +#endif +#ifdef LINUX_MODE + case LINUX_MODE: + switch(shortcut) { + + case BABL_DEL_RIGHT_1C: + return MACRO( D(DEL), END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); + case BABL_GO_START_LINE: + return MACRO( T(HOME), END ); + case BABL_GO_START_DOC: + return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); + case BABL_GO_END_LINE: + return MACRO( T(END), END ); + case BABL_GO_END_DOC: + return MACRO( D(LCTRL),T(END), U(LCTRL),END ); + case BABL_GO_NEXT_LINE: + return MACRO( T(DOWN), END ); + case BABL_GO_PREV_LINE: + return MACRO( T(UP), END ); + case BABL_PGDN: + return MACRO( T(PGDN), END ); + case BABL_PGUP: + return MACRO( T(PGUP), END ); +#ifndef BABL_MOVEMENTONLY + case BABL_UNDO: + return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); + case BABL_REDO: + return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); + case BABL_CUT: + return MACRO( D(LCTRL), T(X), U(LCTRL), END ); + case BABL_COPY: + return MACRO( D(LCTRL), T(C), U(LCTRL), END ); + case BABL_PASTE: + return MACRO( D(LCTRL), T(V), U(LCTRL), END ); + case BABL_SELECT_ALL: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + + case BABL_FIND: + return MACRO( D(LCTRL),T(F), U(LCTRL),END ); + case BABL_FIND_NEXT: + /* return MACRO( T(F3),END ); KDE */ + return MACRO( D(LCTRL),T(G), U(LCTRL),END ); // Gnome*/ + case BABL_FIND_REPLACE: + /* return MACRO( D(LCTRL),T(R), U(LCTRL),END ); KDE */ + return MACRO( D(LCTRL),T(H), U(LCTRL),END ); // Gnome*/ + case BABL_RUNAPP: + return MACRO( D(LALT),T(F2), U(LALT),END ); + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LCTL),T(TAB), U(LCTL),END ); + case BABL_SWITCH_APP_LAST: + return MACRO( D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); + case BABL_CLOSE_APP: + return MACRO( D(LALT),T(F4), U(LALT),END ); + case BABL_HELP: + return MACRO_NONE; +#endif + break; + + return MACRO_NONE; + } + +#endif + +#ifdef MAC_MODE + case MAC_MODE: + switch(shortcut) { + + + case BABL_DEL_RIGHT_1C: + return MACRO( D(DEL), END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LALT), T(BSPACE), U(LALT), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LALT), T(DEL), U(LALT), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LALT), T(LEFT), U(LALT), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LALT), T(RIGHT), U(LALT), END ); + case BABL_GO_START_LINE: + return MACRO( D(LGUI), T(LEFT), U(LGUI), END ); + case BABL_GO_START_DOC: + return MACRO( D(LGUI),T(UP), U(LGUI),END ); + case BABL_GO_END_LINE: + return MACRO( D(LGUI), T(RIGHT), U(LGUI), END ); + case BABL_GO_END_DOC: + return MACRO( D(LGUI),T(DOWN), U(LGUI),END ); + case BABL_GO_NEXT_LINE: + return MACRO( T(DOWN), END ); + case BABL_GO_PREV_LINE: + return MACRO( T(UP), END ); + case BABL_PGDN: + return MACRO( D(LALT), T(DOWN), U(LALT), END ); + case BABL_PGUP: + return MACRO( D(LALT), T(UP), U(LALT), END ); +#ifndef BABL_MOVEMENTONLY + case BABL_UNDO: + return MACRO( D(LGUI), T(Z), U(LGUI), END ); + case BABL_REDO: + return MACRO( D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); + case BABL_CUT: + return MACRO( D(LGUI), T(X), U(LGUI), END ); + case BABL_COPY: + return MACRO( D(LGUI), T(C), U(LGUI), END ); + case BABL_PASTE: + return MACRO( D(LGUI), T(V), U(LGUI), END ); + case BABL_SELECT_ALL: + return MACRO( D(LGUI), T(A), U(LGUI), END ); + case BABL_FIND: + return MACRO( D(LGUI),T(F), U(LGUI),END ); + case BABL_FIND_NEXT: + return MACRO( D(LGUI),T(G), U(LGUI),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LGUI),T(F), U(LGUI),END ); + case BABL_RUNAPP: + return MACRO( D(LGUI),T(R), U(LGUI),END ); + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LGUI),T(TAB), U(LGUI),END ); + case BABL_SWITCH_APP_LAST: + return MACRO( D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); + case BABL_CLOSE_APP: + return MACRO( D(LGUI),T(Q), U(LGUI),END ); + case BABL_HELP: + return MACRO( D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); +#endif + break; + + return MACRO_NONE; + } + +#endif + +#ifdef EMACS_MODE + case EMACS_MODE: + switch(shortcut) { +//probably should allow meta to not be ALT + + case BABL_DEL_RIGHT_1C: + return MACRO( D(LCTL), T(D), U(LCTL),END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTL), T(BSPACE), U(LCTL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LALT), T(D), U(LALT), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LALT), T(B), U(LALT), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LALT), T(F), U(LALT), END ); + case BABL_GO_START_LINE: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_GO_START_DOC: + return MACRO( D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); + case BABL_GO_END_LINE: + return MACRO( D(LCTRL), T(E), U(LCTRL), END ); + case BABL_GO_END_DOC: + return MACRO( D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END ); + case BABL_GO_NEXT_LINE: + return MACRO( D(LCTRL), T(N), U(LCTRL), END ); + case BABL_GO_PREV_LINE: + return MACRO( D(LCTRL), T(P), U(LCTRL), END ); + case BABL_PGDN: + return MACRO(D(LCTRL), T(V), U(LCTRL), END ); + case BABL_PGUP: + return MACRO( D(LALT), T(V), U(LALT), END ); +#ifndef BABL_MOVEMENTONLY + case BABL_UNDO: + return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); + case BABL_REDO: + return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + case BABL_CUT: + return MACRO( D(LCTL), T(W), U(LCTL), END ); + case BABL_COPY: + return MACRO( D(LALT), T(W), U(LALT), END ); //really? + case BABL_PASTE: + return MACRO( D(LCTL), T(Y), U(LCTL), END ); + case BABL_SELECT_ALL: + return MACRO(D(LCTL), T(X), U(LCTL),T(H), END ); + case BABL_FIND: + return MACRO( D(LCTRL), T(S), U(LCTRL),END ); + case BABL_FIND_NEXT: + return MACRO( D(LCTRL), T(S), U(LCTRL),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + case BABL_RUNAPP: + return MACRO( D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably + case BABL_SWITCH_APP_LAST: + return MACRO( D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably + case BABL_CLOSE_APP: + return MACRO(D(LCTL), T(X), U(LCTL),T(C),END ); + case BABL_HELP: + return MACRO( D(LCTL),T(H), U(LCTL),T(A),END); // start search in help +#endif + break; + + return MACRO_NONE; + } + +#endif +#ifdef VI_MODE + case VI_MODE: + switch(shortcut) { +//assume esc is already called + + case BABL_DEL_RIGHT_1C: + return MACRO( T(X),END ); + case BABL_DEL_LEFT_WORD: + return MACRO( T(D),T(G),T(E),END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( T(D),T(W),END ); + case BABL_GO_LEFT_1C: + return MACRO( T(H), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(L), END ); + case BABL_GO_LEFT_WORD: + return MACRO( T(B),END ); + case BABL_GO_RIGHT_WORD: + return MACRO( T(W), END ); + case BABL_GO_START_LINE: + return MACRO( D(LSFT), T(6),U(LSFT), END ); //^ + case BABL_GO_START_DOC: + return MACRO( T(G),T(G) ,END ); + case BABL_GO_END_LINE: + return MACRO( D(LSFT), T(4),U(LSFT) , END ); //$ + case BABL_GO_END_DOC: + return MACRO( D(LSFT), T(G),U(LSFT),END ); + case BABL_GO_NEXT_LINE: + return MACRO( T(J), END ); + case BABL_GO_PREV_LINE: + return MACRO( T(K), END ); + case BABL_PGDN: + return MACRO(D(LCTRL), T(F), U(LCTRL), END ); + case BABL_PGUP: + return MACRO( D(LCTRL), T(B), U(LCTRL), END ); +#ifndef BABL_MOVEMENTONLY + case BABL_UNDO: + return MACRO( T(U), END ); + case BABL_REDO: + return MACRO( D(LCTL), T(R), U(LCTL), END ); + case BABL_CUT: + return MACRO( T(X), END ); + case BABL_COPY: + return MACRO( T(Y),END ); + case BABL_PASTE: + return MACRO( T(P), END ); + case BABL_SELECT_ALL: + return MACRO( D(LSFT), T(SCLN),U(LSFT),D(LSFT), T(5),U(LSFT),T(Y), END ); // wrong but helpful? + case BABL_FIND: + return MACRO( T(SLASH),END ); + case BABL_FIND_NEXT: + return MACRO( T(N),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + case BABL_RUNAPP: + return MACRO_NONE; + case BABL_SWITCH_APP_NEXT: + return MACRO_NONE; + case BABL_SWITCH_APP_LAST: + return MACRO_NONE; + case BABL_CLOSE_APP: + return MACRO(D(LSFT), T(SCLN),U(LSFT), T(Q), D(RSFT), T(1),U(RSFT), END ); + case BABL_HELP: + return MACRO(D(LSFT), T(SCLN),U(LSFT),T(H),END); // start search in help + break; +#endif + return MACRO_NONE; + } + +#endif +#ifdef READMUX_MODE +// Readline command line editing + tmux windowing +// I havent decided how much to do readline and how much tmux + case READMUX_MODE: + switch(shortcut) { + + case BABL_DEL_RIGHT_1C: + return MACRO( D(LCTL), T(D), U(LCTL),END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTL), T(W), U(LCTL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LALT), T(D), U(LALT), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LALT), T(B), U(LALT), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LALT), T(F), U(LALT), END ); + case BABL_GO_START_LINE: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_GO_START_DOC: + return MACRO_NONE; // tmux? + case BABL_GO_END_LINE: + return MACRO( D(LCTRL), T(E), U(LCTRL), END ); + case BABL_GO_END_DOC: + return MACRO_NONE; // tmux? + case BABL_GO_NEXT_LINE: + return MACRO( D(LCTRL), T(N), U(LCTRL), END ); + case BABL_GO_PREV_LINE: + return MACRO( D(LCTRL), T(P), U(LCTRL), END ); + case BABL_PGDN: + return MACRO( T(PGDN), END ); + case BABL_PGUP: + return MACRO( T(PGUP), END ); +#ifndef BABL_MOVEMENTONLY + case BABL_UNDO: + return MACRO( D(LALT), T(R), U(LALT) , END ); + case BABL_REDO: + return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + case BABL_CUT: + return MACRO( D(LCTL), T(K), U(LCTL), END ); // wrong half the time + case BABL_COPY: + return MACRO_NONE; + case BABL_PASTE: + return MACRO( D(LCTL), T(Y), U(LCTL), END ); + case BABL_SELECT_ALL: + return MACRO(D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); + case BABL_FIND: + return MACRO( D(LCTRL), T(R), U(LCTRL), END ); // search history + case BABL_FIND_NEXT: + eturn MACRO( D(LCTRL), T(S), U(LCTRL), END ); + case BABL_FIND_REPLACE: + return MACRO_NONE; // tmux? + case BABL_RUNAPP: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(C),END ); //tmux + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(N),END ); //tmux + case BABL_SWITCH_APP_LAST: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(P),END ); //tmux + case BABL_CLOSE_APP: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(D),END); // usually what I want + break; + case BABL_HELP: + return MACRO_NONE; +#endif + break; + + return MACRO_NONE; + } + +#endif + return MACRO_NONE; + } + + +} + diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h new file mode 100644 index 00000000..63b79a20 --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h @@ -0,0 +1,72 @@ +/* A library to output the right key shortcut in any common app. +Given a global variable babble_mode to show the environment and a +key that calls the paste macro, do the right type of paste. + +Setting the bable_mode is done by another macro, or TBD interaction with the host. + +Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts +and jeebak & algernon's keymap +*/ +#ifndef _babblePaste_h_included__ +#define _babblePaste_h_included__ + + +/* Add this to your config.h +// Uncomment any modes you want. +// Windows. +//#define MS_MODE 0 +//#define MAC_MODE 1 +//aka gnome+KDE +//#define LINUX_MODE 2 +//#define EMACS_MODE 3 +//#define VI_MODE 4 +//#define WORDSTAR_MODE 5 +// Readline and tmux +//#define READMUX 6 +*/ + +/* Macros handled by babblepaste. Most should be available for all platforms. */ +enum { + + // Movement + BABL_DEL_RIGHT_1C=200, + BABL_DEL_LEFT_WORD, + BABL_DEL_RIGHT_WORD, + BABL_GO_LEFT_1C, + BABL_GO_RIGHT_1C, + BABL_GO_LEFT_WORD, + BABL_GO_RIGHT_WORD, + BABL_GO_START_LINE, + BABL_GO_END_LINE, + BABL_GO_START_DOC, + BABL_GO_END_DOC, + BABL_GO_NEXT_LINE, + BABL_GO_PREV_LINE, + BABL_PGDN, + BABL_PGUP, +#ifndef BABL_MOVEMENTONLY + // Cut & Paste + BABL_UNDO, + BABL_REDO, + BABL_CUT, + BABL_COPY, + BABL_PASTE, + BABL_SELECT_ALL, + // GUI or app + BABL_FIND, + BABL_FIND_NEXT, + BABL_FIND_REPLACE, + BABL_RUNAPP, + BABL_SWITCH_APP_NEXT, + BABL_SWITCH_APP_LAST, // previous + BABL_CLOSE_APP, + BABL_HELP +#endif +}; + + + + +//static macro_t *babblePaste(keyrecord_t *record, uint16_t shortcut) + + #endif \ No newline at end of file diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt new file mode 100644 index 00000000..6170ec7a --- /dev/null +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt @@ -0,0 +1,489 @@ +/* A library to output the right key shortcut in any common app. +Given a global variable babble_mode to show the environment and a +key that calls the paste macro, do the right type of paste. +Setting the context is done by another macro, or TBD interaction with the host. + +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 "eeconfig.h" + + +// Comment out anything you will never use. +// Windows. +#define MS_MODE 0 +#define MAC_MODE 1 +//aka gnome+KDE +#define LINUX_MODE 2 +#define EMACS_MODE 3 +#define VI_MODE 4 +//#define WORDSTAR_MODE 5 +// Readline and tmux +#define READMUX 6 + +// GLOBAL variable. Sets startup default if no eeppom +char babble_mode = MAC_MODE ; + + +/* minimum set required for babble: + // Cut & Paste + BABL_UNDO + BABL_REDO + BABL_CUT + BABL_COPY + BABL_PASTE + BABL_SELECT_ALL + + // Movement + BABL_DEL_RIGHT_1C + BABL_DEL_RIGHT_1C + BABL_DEL_LEFT_WORD + BABL_DEL_RIGHT_WORD + BABL_GO_LEFT_1C + BABL_GO_LEFT_WORD + BABL_GO_RIGHT_WORD + BABL_GOTO_START_LINE + BABL_GOTO_START_DOC + BABL_GOTO_END_LINE + BABL_GOTO_END_DOC + BABL_GOTO_NEXT_LINE // down arrow will do. + BABL_GOTO_PREV_LINE // up arrow will do. + BABL_PGDN + BABL_PGUP + + // GUI + BABL_FIND + BABL_FIND_NEXT + BABL_FIND_REPLACE + BABL_RUNAPP + BABL_SWITCH_NEXT + BABL_SWITCH_LAST // previous + BABL_CLOSE_APP + BABL_HELP +*/ + + + + +static macro_t *babblePaste (keyrecord_t *record, uint16_t shortcut) { + + switch(babble_mode) { + +#ifdef MS_MODE + case MS_MODE: + switch(shortcut) { + + case BABL_UNDO: + return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); + case BABL_REDO: + return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); + case BABL_CUT: + return MACRO( D(LCTRL), T(X), U(LCTRL), END ); + case BABL_COPY: + return MACRO( D(LCTRL), T(C), U(LCTRL), END ); + case BABL_PASTE: + return MACRO( D(LCTRL), T(V), U(LCTRL), END ); + case BABL_SELECT_ALL: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_DEL_RIGHT_1C: + return MACRO( D(DEL), END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); + case BABL_GOTO_START_LINE: + return MACRO( T(HOME), END ); + case BABL_GOTO_START_DOC: + return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); + case BABL_GOTO_END_LINE: + return MACRO( T(END), END ); + case BABL_GOTO_END_DOC: + return MACRO( D(LCTRL),T(END), U(LCTRL),END ); + case BABL_GOTO_NEXT_LINE: + return MACRO( T(DOWN), END ); + case BABL_GOTO_PREV_LINE: + return MACRO( T(UP), END ); + case BABL_PGDN: + return MACRO( T(PGDN), END ); + case BABL_PGUP: + return MACRO( T(PGUP), END ); + case BABL_FIND: + return MACRO( D(LCTRL),T(F), U(LCTRL),END ); + case BABL_FIND_NEXT: + return MACRO( T(F3),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LCTRL),T(H), U(LCTRL),END ); + case BABL_RUNAPP: + return MACRO( D(LGUI),T(R), U(LGUI),END ); + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LALT),T(TAB), U(LALT),END ); + case BABL_SWITCH_APP_LAST: + return MACRO( D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); + case BABL_CLOSE_APP: + return MACRO( D(LALT),T(F4), U(LALT),END ); + case BABL_HELP: + return MACRO( T(F1),END ); + break; + + return MACRO_NONE; + } + +#endif +#ifdef LINUX_MODE + case LINUX_MODE: + switch(shortcut) { + + case BABL_UNDO: + return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); + case BABL_REDO: + return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); + case BABL_CUT: + return MACRO( D(LCTRL), T(X), U(LCTRL), END ); + case BABL_COPY: + return MACRO( D(LCTRL), T(C), U(LCTRL), END ); + case BABL_PASTE: + return MACRO( D(LCTRL), T(V), U(LCTRL), END ); + case BABL_SELECT_ALL: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_DEL_RIGHT_1C: + return MACRO( D(DEL), END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); + case BABL_GOTO_START_LINE: + return MACRO( T(HOME), END ); + case BABL_GOTO_START_DOC: + return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); + case BABL_GOTO_END_LINE: + return MACRO( T(END), END ); + case BABL_GOTO_END_DOC: + return MACRO( D(LCTRL),T(END), U(LCTRL),END ); + case BABL_GOTO_NEXT_LINE: + return MACRO( T(DOWN), END ); + case BABL_GOTO_PREV_LINE: + return MACRO( T(UP), END ); + case BABL_PGDN: + return MACRO( T(PGDN), END ); + case BABL_PGUP: + return MACRO( T(PGUP), END ); + case BABL_FIND: + return MACRO( D(LCTRL),T(F), U(LCTRL),END ); + case BABL_FIND_NEXT: + /* return MACRO( T(F3),END ); KDE */ + return MACRO( D(LCTRL),T(G), U(LCTRL),END ); // Gnome*/ + case BABL_FIND_REPLACE: + /* return MACRO( D(LCTRL),T(R), U(LCTRL),END ); KDE */ + return MACRO( D(LCTRL),T(H), U(LCTRL),END ); // Gnome*/ + case BABL_RUNAPP: + return MACRO( D(LALT),T(F2), U(LALT),END ); + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LCTL),T(TAB), U(LCTL),END ); + case BABL_SWITCH_APP_LAST: + return MACRO( D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); + case BABL_CLOSE_APP: + return MACRO( D(LALT),T(F4), U(LALT),END ); + case BABL_HELP: + return MACRO_NONE; + break; + + return MACRO_NONE; + } + +#endif + + + +#ifdef MAC_MODE + case MAC_MODE: + switch(shortcut) { + + case BABL_UNDO: + return MACRO( D(LGUI), T(Z), U(LGUI), END ); + case BABL_REDO: + return MACRO( D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); + case BABL_CUT: + return MACRO( D(LGUI), T(X), U(LGUI), END ); + case BABL_COPY: + return MACRO( D(LGUI), T(C), U(LGUI), END ); + case BABL_PASTE: + return MACRO( D(LGUI), T(V), U(LGUI), END ); + case BABL_SELECT_ALL: + return MACRO( D(LGUI), T(A), U(LGUI), END ); + case BABL_DEL_RIGHT_1C: + return MACRO( D(DEL), END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LALT), T(BSPACE), U(LALT), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LALT), T(DEL), U(LALT), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LALT), T(LEFT), U(LALT), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LALT), T(RIGHT), U(LALT), END ); + case BABL_GOTO_START_LINE: + return MACRO( D(LGUI), T(LEFT), U(LGUI), END ); + case BABL_GOTO_START_DOC: + return MACRO( D(LGUI),T(UP), U(LGUI),END ); + case BABL_GOTO_END_LINE: + return MACRO( D(LGUI), T(RIGHT), U(LGUI), END ); + case BABL_GOTO_END_DOC: + return MACRO( D(LGUI),T(DOWN), U(LGUI),END ); + case BABL_GOTO_NEXT_LINE: + return MACRO( T(DOWN), END ); + case BABL_GOTO_PREV_LINE: + return MACRO( T(UP), END ); + case BABL_PGDN: + return MACRO( D(LALT), T(DOWN), U(LALT), END ); + case BABL_PGUP: + return MACRO( D(LALT), T(UP), U(LALT), END ); + case BABL_FIND: + return MACRO( D(LGUI),T(F), U(LGUI),END ); + case BABL_FIND_NEXT: + return MACRO( D(LGUI),T(G), U(LGUI),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LGUI),T(F), U(LGUI),END ); + case BABL_RUNAPP: + return MACRO( D(LGUI),T(R), U(LGUI),END ); + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LGUI),T(TAB), U(LGUI),END ); + case BABL_SWITCH_APP_LAST: + return MACRO( D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); + case BABL_CLOSE_APP: + return MACRO( D(LGUI),T(Q), U(LGUI),END ); + case BABL_HELP: + return MACRO( D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); + break; + + return MACRO_NONE; + } + +#endif + +#ifdef EMACS_MODE + case EMACS_MODE: + switch(shortcut) { +//probably should allow meta to not be ALT + case BABL_UNDO: + return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); + case BABL_REDO: + return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + case BABL_CUT: + return MACRO( D(LCTL), T(W), U(LCTL), END ); + case BABL_COPY: + return MACRO( D(LALT), T(W), U(LALT), END ); + case BABL_PASTE: + return MACRO( D(LCTL), T(Y), U(LCTL), END ); + case BABL_SELECT_ALL: + return MACRO(D(LCTL), T(X), U(LCTL),T(H), END ); + case BABL_DEL_RIGHT_1C: + return MACRO( D(LCTL), T(D), U(LCTL),END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTL), T(BSPACE), U(LCTL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LALT), T(D), U(LALT), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LALT), T(B), U(LALT), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LALT), T(F), U(LALT), END ); + case BABL_GOTO_START_LINE: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_GOTO_START_DOC: + return MACRO( D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); + case BABL_GOTO_END_LINE: + return MACRO( D(LCTRL), T(E), U(LCTRL), END ); + case BABL_GOTO_END_DOC: + return MACRO( D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END ); + case BABL_GOTO_NEXT_LINE: + return MACRO( D(LCTRL), T(N), U(LCTRL), END ); + case BABL_GOTO_PREV_LINE: + rreturn MACRO( D(LCTRL), T(P), U(LCTRL), END ); + case BABL_PGDN: + return MACRO(D(LCTRL), T(V), U(LCTRL), END ); + case BABL_PGUP: + return MACRO( D(LALT), T(V), U(LALT), END ); + case BABL_FIND: + return MACRO( D(LCTRL), T(S), U(LCTRL),END ); + case BABL_FIND_NEXT: + return MACRO( D(LCTRL), T(S), U(LCTRL),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + case BABL_RUNAPP: + return MACRO( D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably + case BABL_SWITCH_APP_LAST: + return MACRO( D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably + case BABL_CLOSE_APP: + return MACRO(D(LCTL), T(X), U(LCTL),T(C),END ); + case BABL_HELP: + return MACRO( D(LCTL),T(H), U(LCTL),T(A),END); // start search in help + break; + + return MACRO_NONE; + } + +#endif +#ifdef VI_MODE + case VI_MODE: + switch(shortcut) { +//assume esc is already called + case BABL_UNDO: + return MACRO( T(U), END ); + case BABL_REDO: + return MACRO( D(LCTL), T(R), U(LCTL), END ); + case BABL_CUT: + return MACRO( T(X), END ); + case BABL_COPY: + return MACRO( T(Y),END ); + case BABL_PASTE: + return MACRO( T(P), END ); + case BABL_SELECT_ALL: + return MACRO( T(COLN),T(PERC),T(Y), END ); // wrong but helpful? + case BABL_DEL_RIGHT_1C: + return MACRO( T(X),END ); + case BABL_DEL_LEFT_WORD: + return MACRO( T(D),T(G),T(E),END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( T(D),T(W),END ); + case BABL_GO_LEFT_1C: + return MACRO( T(H), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(L), END ); + case BABL_GO_LEFT_WORD: + return MACRO( T(B),END ); + case BABL_GO_RIGHT_WORD: + return MACRO( T(W), END ); + case BABL_GOTO_START_LINE: + return MACRO( T(CIRC), END ); + case BABL_GOTO_START_DOC: + return MACRO( T(G),T(G) ,END ); + case BABL_GOTO_END_LINE: + return MACRO( T(DLR), END ); + case BABL_GOTO_END_DOC: + return MACRO( D(LSFT), T(G),U(LSFT), ,END ); + case BABL_GOTO_NEXT_LINE: + return MACRO( T(J), END ); + case BABL_GOTO_PREV_LINE: + rreturn MACRO( T(K), END ); + case BABL_PGDN: + return MACRO(D(LCTRL), T(F), U(LCTRL), END ); + case BABL_PGUP: + return MACRO( D(LCTRL), T(B), U(LCTRL), END ); + case BABL_FIND: + return MACRO( T(SLASH),END ); + case BABL_FIND_NEXT: + return MACRO( T(N),END ); + case BABL_FIND_REPLACE: + return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + case BABL_RUNAPP: + return MACRO_NONE; + case BABL_SWITCH_APP_NEXT: + return MACRO_NONE; + case BABL_SWITCH_APP_LAST: + return MACRO_NONE; + case BABL_CLOSE_APP: + return MACRO(T(COLN), T(Q), T(EXLM),END ); + case BABL_HELP: + return MACRO(T(COLN),T(H),END); // start search in help + break; + + return MACRO_NONE; + } + +#endif +#ifdef READMUX_MODE +// I havent decided how much to do bash and how much tmux + case READMUX_MODE: + switch(shortcut) { + case BABL_UNDO: + return MACRO( D(LALT), T(R), U(LALT) , END ); + case BABL_REDO: + return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + case BABL_CUT: + return MACRO( D(LCTL), T(K), U(LCTL), END ); // wrong half the time + case BABL_COPY: + return MACRO_NONE; + case BABL_PASTE: + return MACRO( D(LCTL), T(Y), U(LCTL), END ); + case BABL_SELECT_ALL: + return MACRO(D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); // should this be tmux all? + case BABL_DEL_RIGHT_1C: + return MACRO( D(LCTL), T(D), U(LCTL),END ); + case BABL_DEL_LEFT_WORD: + return MACRO( D(LCTL), T(W), U(LCTL), END ); + case BABL_DEL_RIGHT_WORD: + return MACRO( D(LALT), T(D), U(LALT), END ); + case BABL_GO_LEFT_1C: + return MACRO( T(LEFT), END ); + case BABL_GO_RIGHT_1C: + return MACRO( T(RIGHT), END ); + case BABL_GO_LEFT_WORD: + return MACRO( D(LALT), T(B), U(LALT), END ); + case BABL_GO_RIGHT_WORD: + return MACRO( D(LALT), T(F), U(LALT), END ); + case BABL_GOTO_START_LINE: + return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + case BABL_GOTO_START_DOC: + return MACRO_NONE; // tmux? + case BABL_GOTO_END_LINE: + return MACRO( D(LCTRL), T(E), U(LCTRL), END ); + case BABL_GOTO_END_DOC: + return MACRO_NONE; // tmux? + case BABL_GOTO_NEXT_LINE: + return MACRO( D(LCTRL), T(N), U(LCTRL), END ); + case BABL_GOTO_PREV_LINE: + return MACRO( D(LCTRL), T(P), U(LCTRL), END ); + case BABL_PGDN: + return MACRO( T(PGDN), END ); + case BABL_PGUP: + return MACRO( T(PGUP), END ); + case BABL_FIND: + return MACRO( D(LCTRL), T(R), U(LCTRL), END ); // search history + case BABL_FIND_NEXT: + eturn MACRO( D(LCTRL), T(S), U(LCTRL), END ); + case BABL_FIND_REPLACE: + return MACRO_NONE; // tmux? + case BABL_RUNAPP: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(C),END ); //tmux + case BABL_SWITCH_APP_NEXT: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(N),END ); //tmux + case BABL_SWITCH_APP_LAST: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(P),END ); //tmux + case BABL_CLOSE_APP: + return MACRO( D(LCTRL), T(B), U(LCTRL), T(D),END); // usually what I want + break; + case BABL_HELP: + return MACRO_NONE; + break; + + return MACRO_NONE; + } + +#endif + return MACRO_NONE; +} \ No newline at end of file From d11962aeb27c73b87f8154d7f2cee747c8858d09 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Thu, 2 Mar 2017 11:40:06 -0800 Subject: [PATCH 040/183] fix 'stop_all_notes' naming to be more consistent --- quantum/process_keycode/process_audio.c | 2 +- quantum/process_keycode/process_audio.h | 2 +- quantum/process_keycode/process_midi.c | 2 +- quantum/process_keycode/process_midi.h | 2 +- quantum/process_keycode/process_music.c | 4 ++-- quantum/template/keymaps/default/Makefile | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/quantum/process_keycode/process_audio.c b/quantum/process_keycode/process_audio.c index 71c0297e..0b6380ed 100644 --- a/quantum/process_keycode/process_audio.c +++ b/quantum/process_keycode/process_audio.c @@ -54,7 +54,7 @@ void process_audio_noteoff(uint8_t note) { stop_note(compute_freq_for_midi_note(note)); } -void process_audio_stop_all_notes(void) { +void process_audio_all_notes_off(void) { stop_all_notes(); } diff --git a/quantum/process_keycode/process_audio.h b/quantum/process_keycode/process_audio.h index 59a17725..7ac15b73 100644 --- a/quantum/process_keycode/process_audio.h +++ b/quantum/process_keycode/process_audio.h @@ -4,7 +4,7 @@ bool process_audio(uint16_t keycode, keyrecord_t *record); void process_audio_noteon(uint8_t note); void process_audio_noteoff(uint8_t note); -void process_audio_stop_all_notes(void); +void process_audio_all_notes_off(void); void audio_on_user(void); diff --git a/quantum/process_keycode/process_midi.c b/quantum/process_keycode/process_midi.c index 214bba90..700c6ce8 100644 --- a/quantum/process_keycode/process_midi.c +++ b/quantum/process_keycode/process_midi.c @@ -15,7 +15,7 @@ void process_midi_basic_noteoff(uint8_t note) midi_send_noteoff(&midi_device, 0, note, 0); } -void process_midi_basic_stop_all_notes(void) +void process_midi_all_notes_off(void) { midi_send_cc(&midi_device, 0, 0x7B, 0); } diff --git a/quantum/process_keycode/process_midi.h b/quantum/process_keycode/process_midi.h index 0f559ec2..58b7650c 100644 --- a/quantum/process_keycode/process_midi.h +++ b/quantum/process_keycode/process_midi.h @@ -8,7 +8,7 @@ #ifdef MIDI_BASIC void process_midi_basic_noteon(uint8_t note); void process_midi_basic_noteoff(uint8_t note); -void process_midi_basic_stop_all_notes(void); +void process_midi_all_notes_off(void); #endif #ifdef MIDI_ADVANCED diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index 4b86b91f..f89a04ee 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -44,10 +44,10 @@ static void music_noteoff(uint8_t note) { void music_all_notes_off(void) { #ifdef AUDIO_ENABLE - process_audio_stop_all_notes(); + process_audio_all_notes_off(); #endif #if defined(MIDI_ENABLE) && defined(MIDI_BASIC) - process_midi_basic_stop_all_notes(); + process_midi_all_notes_off(); #endif } diff --git a/quantum/template/keymaps/default/Makefile b/quantum/template/keymaps/default/Makefile index 24442db3..29f11bbc 100644 --- a/quantum/template/keymaps/default/Makefile +++ b/quantum/template/keymaps/default/Makefile @@ -9,7 +9,7 @@ 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 = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI support (+3800) +MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID From 0734f569409974624b40735fcd498dac9adba2d2 Mon Sep 17 00:00:00 2001 From: Gabriel Young Date: Thu, 2 Mar 2017 12:28:12 -0800 Subject: [PATCH 041/183] add debug messages to audio --- quantum/audio/audio.c | 322 +++++++++++++++++++++--------------------- 1 file changed, 164 insertions(+), 158 deletions(-) diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 2a315fd1..e1e81fd2 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -89,15 +89,15 @@ void audio_init() } audio_config.raw = eeconfig_read_audio(); - // Set port PC6 (OC3A and /OC4A) as output + // Set port PC6 (OC3A and /OC4A) as output DDRC |= _BV(PORTC6); DISABLE_AUDIO_COUNTER_3_ISR; - // TCCR3A / TCCR3B: Timer/Counter #3 Control Registers - // Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6 - // Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14 (Period = ICR3, Duty Cycle = OCR3A) - // Clock Select (CS3n) = 0b010 = Clock / 8 + // TCCR3A / TCCR3B: Timer/Counter #3 Control Registers + // Compare Output Mode (COM3An) = 0b00 = Normal port operation, OC3A disconnected from PC6 + // Waveform Generation Mode (WGM3n) = 0b1110 = Fast PWM Mode 14 (Period = ICR3, Duty Cycle = OCR3A) + // Clock Select (CS3n) = 0b010 = Clock / 8 TCCR3A = (0 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30); TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30); @@ -106,6 +106,8 @@ void audio_init() void stop_all_notes() { + dprintf("audio stop all notes"); + if (!audio_initialized) { audio_init(); } @@ -128,6 +130,8 @@ void stop_all_notes() void stop_note(float freq) { + dprintf("audio stop note freq=%d", (int)freq); + if (playing_note) { if (!audio_initialized) { audio_init(); @@ -183,159 +187,161 @@ float vibrato(float average_freq) { ISR(TIMER3_COMPA_vect) { - float freq; - - if (playing_note) { - if (voices > 0) { - if (polyphony_rate > 0) { - if (voices > 1) { - voice_place %= voices; - if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) { - voice_place = (voice_place + 1) % voices; - place = 0.0; - } - } - - #ifdef VIBRATO_ENABLE - if (vibrato_strength > 0) { - freq = vibrato(frequencies[voice_place]); - } else { - freq = frequencies[voice_place]; - } - #else - freq = frequencies[voice_place]; - #endif - } else { - if (glissando) { - if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) { - frequency = frequency * pow(2, 440/frequency/12/2); - } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) { - frequency = frequency * pow(2, -440/frequency/12/2); - } else { - frequency = frequencies[voices - 1]; - } - } else { - frequency = frequencies[voices - 1]; - } - - #ifdef VIBRATO_ENABLE - if (vibrato_strength > 0) { - freq = vibrato(frequency); - } else { - freq = frequency; - } - #else - freq = frequency; - #endif - } - - if (envelope_index < 65535) { - envelope_index++; - } - - freq = voice_envelope(freq); - - if (freq < 30.517578125) { - freq = 30.52; - } - - TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER)); - TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); - } - } - - if (playing_notes) { - if (note_frequency > 0) { - #ifdef VIBRATO_ENABLE - if (vibrato_strength > 0) { - freq = vibrato(note_frequency); - } else { - freq = note_frequency; - } - #else - freq = note_frequency; - #endif - - if (envelope_index < 65535) { - envelope_index++; - } - freq = voice_envelope(freq); - - TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER)); - TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); - } else { - TIMER_3_PERIOD = 0; - TIMER_3_DUTY_CYCLE = 0; - } - - note_position++; - bool end_of_note = false; - if (TIMER_3_PERIOD > 0) { - end_of_note = (note_position >= (note_length / TIMER_3_PERIOD * 0xFFFF)); - } else { - end_of_note = (note_position >= (note_length * 0x7FF)); - } - - if (end_of_note) { - current_note++; - if (current_note >= notes_count) { - if (notes_repeat) { - current_note = 0; - } else { - DISABLE_AUDIO_COUNTER_3_ISR; - DISABLE_AUDIO_COUNTER_3_OUTPUT; - playing_notes = false; - return; - } - } - if (!note_resting && (notes_rest > 0)) { - note_resting = true; - note_frequency = 0; - note_length = notes_rest; - current_note--; - } else { - note_resting = false; - envelope_index = 0; - note_frequency = (*notes_pointer)[current_note][0]; - note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); - } - - note_position = 0; - } - } - - if (!audio_config.enable) { - playing_notes = false; - playing_note = false; - } + float freq; + + if (playing_note) { + if (voices > 0) { + if (polyphony_rate > 0) { + if (voices > 1) { + voice_place %= voices; + if (place++ > (frequencies[voice_place] / polyphony_rate / CPU_PRESCALER)) { + voice_place = (voice_place + 1) % voices; + place = 0.0; + } + } + + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(frequencies[voice_place]); + } else { + freq = frequencies[voice_place]; + } + #else + freq = frequencies[voice_place]; + #endif + } else { + if (glissando) { + if (frequency != 0 && frequency < frequencies[voices - 1] && frequency < frequencies[voices - 1] * pow(2, -440/frequencies[voices - 1]/12/2)) { + frequency = frequency * pow(2, 440/frequency/12/2); + } else if (frequency != 0 && frequency > frequencies[voices - 1] && frequency > frequencies[voices - 1] * pow(2, 440/frequencies[voices - 1]/12/2)) { + frequency = frequency * pow(2, -440/frequency/12/2); + } else { + frequency = frequencies[voices - 1]; + } + } else { + frequency = frequencies[voices - 1]; + } + + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(frequency); + } else { + freq = frequency; + } + #else + freq = frequency; + #endif + } + + if (envelope_index < 65535) { + envelope_index++; + } + + freq = voice_envelope(freq); + + if (freq < 30.517578125) { + freq = 30.52; + } + + TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER)); + TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); + } + } + + if (playing_notes) { + if (note_frequency > 0) { + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(note_frequency); + } else { + freq = note_frequency; + } + #else + freq = note_frequency; + #endif + + if (envelope_index < 65535) { + envelope_index++; + } + freq = voice_envelope(freq); + + TIMER_3_PERIOD = (uint16_t)(((float)F_CPU) / (freq * CPU_PRESCALER)); + TIMER_3_DUTY_CYCLE = (uint16_t)((((float)F_CPU) / (freq * CPU_PRESCALER)) * note_timbre); + } else { + TIMER_3_PERIOD = 0; + TIMER_3_DUTY_CYCLE = 0; + } + + note_position++; + bool end_of_note = false; + if (TIMER_3_PERIOD > 0) { + end_of_note = (note_position >= (note_length / TIMER_3_PERIOD * 0xFFFF)); + } else { + end_of_note = (note_position >= (note_length * 0x7FF)); + } + + if (end_of_note) { + current_note++; + if (current_note >= notes_count) { + if (notes_repeat) { + current_note = 0; + } else { + DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_OUTPUT; + playing_notes = false; + return; + } + } + if (!note_resting && (notes_rest > 0)) { + note_resting = true; + note_frequency = 0; + note_length = notes_rest; + current_note--; + } else { + note_resting = false; + envelope_index = 0; + note_frequency = (*notes_pointer)[current_note][0]; + note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); + } + + note_position = 0; + } + } + + if (!audio_config.enable) { + playing_notes = false; + playing_note = false; + } } void play_note(float freq, int vol) { + dprintf("audio play note freq=%d vol=%d", (int)freq, vol); + if (!audio_initialized) { audio_init(); } - if (audio_config.enable && voices < 8) { - DISABLE_AUDIO_COUNTER_3_ISR; + if (audio_config.enable && voices < 8) { + DISABLE_AUDIO_COUNTER_3_ISR; - // Cancel notes if notes are playing - if (playing_notes) - stop_all_notes(); + // Cancel notes if notes are playing + if (playing_notes) + stop_all_notes(); - playing_note = true; + playing_note = true; - envelope_index = 0; + envelope_index = 0; - if (freq > 0) { - frequencies[voices] = freq; - volumes[voices] = vol; - voices++; - } + if (freq > 0) { + frequencies[voices] = freq; + volumes[voices] = vol; + voices++; + } ENABLE_AUDIO_COUNTER_3_ISR; ENABLE_AUDIO_COUNTER_3_OUTPUT; - } + } } @@ -346,37 +352,37 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat, float n_rest) audio_init(); } - if (audio_config.enable) { + if (audio_config.enable) { - DISABLE_AUDIO_COUNTER_3_ISR; + DISABLE_AUDIO_COUNTER_3_ISR; - // Cancel note if a note is playing - if (playing_note) - stop_all_notes(); + // Cancel note if a note is playing + if (playing_note) + stop_all_notes(); - playing_notes = true; + playing_notes = true; - notes_pointer = np; - notes_count = n_count; - notes_repeat = n_repeat; - notes_rest = n_rest; + notes_pointer = np; + notes_count = n_count; + notes_repeat = n_repeat; + notes_rest = n_rest; - place = 0; - current_note = 0; + place = 0; + current_note = 0; note_frequency = (*notes_pointer)[current_note][0]; note_length = ((*notes_pointer)[current_note][1] / 4) * (((float)note_tempo) / 100); - note_position = 0; + note_position = 0; ENABLE_AUDIO_COUNTER_3_ISR; ENABLE_AUDIO_COUNTER_3_OUTPUT; - } + } } bool is_playing_notes(void) { - return playing_notes; + return playing_notes; } bool is_audio_on(void) { From 515b4dd1f7c941f9e96790f7433015fc9bd385bf Mon Sep 17 00:00:00 2001 From: "Trevor Joynson (trevorj)" Date: Thu, 2 Mar 2017 18:21:45 -0800 Subject: [PATCH 042/183] Allow to specify serial to dfu-util flash --- tmk_core/chibios.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index 062a712b..eb0c4013 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -143,8 +143,13 @@ MCUFLAGS = -mcpu=$(MCU) DEBUG = gdb +DFU_ARGS = +ifneq ("$(SERIAL)","") + DFU_ARGS += -S $(SERIAL) +endif + # List any extra directories to look for libraries here. EXTRALIBDIRS = $(RULESPATH)/ld dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter - dfu-util -D $(BUILD_DIR)/$(TARGET).bin \ No newline at end of file + dfu-util $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin From 2f677c24a8fcf936e92a0a5acfbbf95b5f47fdb7 Mon Sep 17 00:00:00 2001 From: milestogo Date: Mon, 6 Mar 2017 00:16:44 -0800 Subject: [PATCH 043/183] working with preprocessor macros for babblepaste --- .../handwired/MS-sculpt-mobile/babblePaste.c | 609 +++++++----------- .../handwired/MS-sculpt-mobile/babblePaste.h | 57 +- .../keymaps/milestogo/config.h | 20 + .../keymaps/milestogo/keymap.c | 136 ++-- keyboards/handwired/MS-sculpt-mobile/rules.mk | 4 + 5 files changed, 395 insertions(+), 431 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c index 00e8416f..93ff486e 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c @@ -8,242 +8,159 @@ and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jee */ #include "babblePaste.h" -#include "action_layer.h" +#include "action_macro.h" -// GLOBAL variable. Sets startup default if no eeppom -char babble_mode = MAC_MODE ; +#ifdef USE_BABLPASTE +// GLOBAL variable to determine mode. Sets startup default if no eeppom +uint8_t babble_mode =0 ; -const static macro_t *babblePaste (keyrecord_t *record, uint16_t shortcut) { + +// Today I learned that the preprocessor can not create a switch statement label from an argument +// 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; } - switch(babble_mode) { - + +const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { +/* this function runs the appropriate babblepaste macro, given +the global babble_mode, and a shortcut from the ENUM in babblePaste.h +TODO, the pointers in this function should be stored in a PROGMEM array, not ram. +But that requires even more clever preprocessor foo. +*/ + + if ( shortcut < BABL_START_NUM || \ + shortcut >= (BABL_START_NUM + BABL_NUM_MACROS ) ) { + return MACRO_NONE; + } + + + switch(babble_mode) { + #ifdef MS_MODE - case MS_MODE: - switch(shortcut) { - - case BABL_DEL_RIGHT_1C: - return (static macro_t *) MACRO( D(DEL), END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); - case BABL_GO_START_LINE: - return MACRO( T(HOME), END ); - case BABL_GO_START_DOC: - return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); - case BABL_GO_END_LINE: - return MACRO( T(END), END ); - case BABL_GO_END_DOC: - return MACRO( D(LCTRL),T(END), U(LCTRL),END ); - case BABL_GO_NEXT_LINE: - return MACRO( T(DOWN), END ); - case BABL_GO_PREV_LINE: - return MACRO( T(UP), END ); - case BABL_PGDN: - return MACRO( T(PGDN), END ); - case BABL_PGUP: - return MACRO( T(PGUP), END ); + + case MS_MODE: + BABLM( BABL_DEL_RIGHT_1C, T(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD, D(LCTRL), T(BSPACE), U(LCTRL), END ); + BABLM( BABL_DEL_RIGHT_WORD,D(LCTRL), T(DEL), U(LCTRL), END ); + BABLM( BABL_GO_LEFT_1C, T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD, D(LCTRL), T(LEFT), U(LCTRL), END ); + BABLM( BABL_GO_RIGHT_WORD, D(LCTRL), T(RIGHT), U(LCTRL), END ); + BABLM( BABL_GO_START_LINE, T(HOME), END ); + BABLM( BABL_GO_START_DOC, D(LCTRL),T(HOME), U(LCTRL),END ); + BABLM( BABL_GO_END_LINE, T(END), END ); + BABLM( BABL_GO_END_DOC, D(LCTRL),T(END), U(LCTRL),END ); + BABLM( BABL_GO_NEXT_LINE, T(DOWN), END ); + BABLM( BABL_GO_PREV_LINE, T(UP), END ); + BABLM( BABL_PGDN, T(PGDN), END ); + BABLM( BABL_PGUP, T(PGUP), END ); #ifndef BABL_MOVEMENTONLY - case BABL_UNDO: - return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); - case BABL_REDO: - return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); - case BABL_CUT: - return MACRO( D(LCTRL), T(X), U(LCTRL), END ); - case BABL_COPY: - return MACRO( D(LCTRL), T(C), U(LCTRL), END ); - case BABL_PASTE: - return MACRO( D(LCTRL), T(V), U(LCTRL), END ); - case BABL_SELECT_ALL: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - case BABL_UNDO: - return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); - case BABL_REDO: - return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); - case BABL_CUT: - return MACRO( D(LCTRL), T(X), U(LCTRL), END ); - case BABL_COPY: - return MACRO( D(LCTRL), T(C), U(LCTRL), END ); - case BABL_PASTE: - return MACRO( D(LCTRL), T(V), U(LCTRL), END ); - case BABL_SELECT_ALL: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - case BABL_FIND: - return MACRO( D(LCTRL),T(F), U(LCTRL),END ); - case BABL_FIND_NEXT: - return MACRO( T(F3),END ); - case BABL_FIND_REPLACE: - return MACRO( D(LCTRL),T(H), U(LCTRL),END ); - case BABL_RUNAPP: - return MACRO( D(LGUI),T(R), U(LGUI),END ); - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LALT),T(TAB), U(LALT),END ); - case BABL_SWITCH_APP_LAST: - return MACRO( D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); - case BABL_CLOSE_APP: - return MACRO( D(LALT),T(F4), U(LALT),END ); - case BABL_HELP: - return MACRO( T(F1),END ); + BABLM( BABL_UNDO, D(LCTRL), T(Z), U(LCTRL), END ); + BABLM( BABL_REDO, D(LCTRL), T(Y), U(LCTRL), END ); + BABLM( BABL_CUT, D(LCTRL), T(X), U(LCTRL), END ); + BABLM( BABL_COPY, D(LCTRL), T(C), U(LCTRL), END ); + BABLM( BABL_PASTE, D(LCTRL), T(V), U(LCTRL), END ); + BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); + BABLM( BABL_UNDO, D(LCTRL), T(Z), U(LCTRL), END ); + BABLM( BABL_REDO, D(LCTRL), T(Y), U(LCTRL), END ); + BABLM( BABL_CUT, D(LCTRL), T(X), U(LCTRL), END ); + BABLM( BABL_COPY, D(LCTRL), T(C), U(LCTRL), END ); + BABLM( BABL_PASTE, D(LCTRL), T(V), U(LCTRL), END ); + BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); + BABLM( BABL_FIND, D(LCTRL),T(F), U(LCTRL),END ); + BABLM( BABL_FIND_NEXT, T(F3),END ); + BABLM( BABL_FIND_REPLACE, D(LCTRL),T(H), U(LCTRL),END ); + BABLM( BABL_RUNAPP, D(LGUI),T(R), U(LGUI),END ); + BABLM( BABL_SWITCH_APP_NEXT, D(LALT),T(TAB), U(LALT),END ); + BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); + BABLM( BABL_CLOSE_APP, D(LALT),T(F4), U(LALT),END ); + BABLM( BABL_HELP, T(F1),END ); #endif - break; - - return MACRO_NONE; - } - -#endif + + + return MACRO_NONE; + + +#endif /* MS_MODE*/ + + #ifdef LINUX_MODE case LINUX_MODE: - switch(shortcut) { - - case BABL_DEL_RIGHT_1C: - return MACRO( D(DEL), END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTRL), T(BSPACE), U(LCTRL), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LCTRL), T(DEL), U(LCTRL), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LCTRL), T(LEFT), U(LCTRL), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LCTRL), T(RIGHT), U(LCTRL), END ); - case BABL_GO_START_LINE: - return MACRO( T(HOME), END ); - case BABL_GO_START_DOC: - return MACRO( D(LCTRL),T(HOME), U(LCTRL),END ); - case BABL_GO_END_LINE: - return MACRO( T(END), END ); - case BABL_GO_END_DOC: - return MACRO( D(LCTRL),T(END), U(LCTRL),END ); - case BABL_GO_NEXT_LINE: - return MACRO( T(DOWN), END ); - case BABL_GO_PREV_LINE: - return MACRO( T(UP), END ); - case BABL_PGDN: - return MACRO( T(PGDN), END ); - case BABL_PGUP: - return MACRO( T(PGUP), END ); + + BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD , D(LCTRL), T(BSPACE), U(LCTRL), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LCTRL), T(DEL), U(LCTRL), END ); + BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD , D(LCTRL), T(LEFT), U(LCTRL), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LCTRL), T(RIGHT), U(LCTRL), END ); + BABLM( BABL_GO_START_LINE , T(HOME), END ); + BABLM( BABL_GO_START_DOC , D(LCTRL),T(HOME), U(LCTRL),END ); + BABLM( BABL_GO_END_LINE , T(END), END ); + BABLM( BABL_GO_END_DOC , D(LCTRL),T(END), U(LCTRL),END ); + BABLM( BABL_GO_NEXT_LINE , T(DOWN), END ); + BABLM( BABL_GO_PREV_LINE , T(UP), END ); + BABLM( BABL_PGDN , T(PGDN), END ); + BABLM( BABL_PGUP , T(PGUP), END ); #ifndef BABL_MOVEMENTONLY - case BABL_UNDO: - return MACRO( D(LCTRL), T(Z), U(LCTRL), END ); - case BABL_REDO: - return MACRO( D(LCTRL), T(Y), U(LCTRL), END ); - case BABL_CUT: - return MACRO( D(LCTRL), T(X), U(LCTRL), END ); - case BABL_COPY: - return MACRO( D(LCTRL), T(C), U(LCTRL), END ); - case BABL_PASTE: - return MACRO( D(LCTRL), T(V), U(LCTRL), END ); - case BABL_SELECT_ALL: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - - case BABL_FIND: - return MACRO( D(LCTRL),T(F), U(LCTRL),END ); - case BABL_FIND_NEXT: - /* return MACRO( T(F3),END ); KDE */ - return MACRO( D(LCTRL),T(G), U(LCTRL),END ); // Gnome*/ - case BABL_FIND_REPLACE: - /* return MACRO( D(LCTRL),T(R), U(LCTRL),END ); KDE */ - return MACRO( D(LCTRL),T(H), U(LCTRL),END ); // Gnome*/ - case BABL_RUNAPP: - return MACRO( D(LALT),T(F2), U(LALT),END ); - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LCTL),T(TAB), U(LCTL),END ); - case BABL_SWITCH_APP_LAST: - return MACRO( D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); - case BABL_CLOSE_APP: - return MACRO( D(LALT),T(F4), U(LALT),END ); - case BABL_HELP: - return MACRO_NONE; + BABLM( BABL_UNDO , D(LCTRL), T(Z), U(LCTRL), END ); + BABLM( BABL_REDO , D(LCTRL), T(Y), U(LCTRL), END ); + BABLM( BABL_CUT , D(LCTRL), T(X), U(LCTRL), END ); + BABLM( BABL_COPY , D(LCTRL), T(C), U(LCTRL), END ); + BABLM( BABL_PASTE , D(LCTRL), T(V), U(LCTRL), END ); + BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); + BABLM( BABL_FIND, D(LCTRL),T(F), U(LCTRL),END ); + /* BABLM(BABL_FIND_NEXT , T(F3),END ); KDE */ + BABLM( BABL_FIND_NEXT, D(LCTRL),T(G), U(LCTRL),END ); // Gnome*/ + /* BABLM( , D(LCTRL),T(R), U(LCTRL),END ); KDE */ + BABLM( BABL_FIND_REPLACE, D(LCTRL),T(H), U(LCTRL),END ); // Gnome*/ + BABLM( BABL_RUNAPP, D(LALT),T(F2), U(LALT),END ); + BABLM( BABL_SWITCH_APP_NEXT, D(LCTL),T(TAB), U(LCTL),END ); + BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); + BABLM( BABL_CLOSE_APP, D(LALT),T(F4), U(LALT),END ); + BABLM( BABL_HELP, END ); #endif - break; - return MACRO_NONE; - } #endif #ifdef MAC_MODE case MAC_MODE: - switch(shortcut) { - - - case BABL_DEL_RIGHT_1C: - return MACRO( D(DEL), END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LALT), T(BSPACE), U(LALT), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LALT), T(DEL), U(LALT), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LALT), T(LEFT), U(LALT), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LALT), T(RIGHT), U(LALT), END ); - case BABL_GO_START_LINE: - return MACRO( D(LGUI), T(LEFT), U(LGUI), END ); - case BABL_GO_START_DOC: - return MACRO( D(LGUI),T(UP), U(LGUI),END ); - case BABL_GO_END_LINE: - return MACRO( D(LGUI), T(RIGHT), U(LGUI), END ); - case BABL_GO_END_DOC: - return MACRO( D(LGUI),T(DOWN), U(LGUI),END ); - case BABL_GO_NEXT_LINE: - return MACRO( T(DOWN), END ); - case BABL_GO_PREV_LINE: - return MACRO( T(UP), END ); - case BABL_PGDN: - return MACRO( D(LALT), T(DOWN), U(LALT), END ); - case BABL_PGUP: - return MACRO( D(LALT), T(UP), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD , D(LALT), T(BSPACE), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_WORD, D(LALT), T(DEL), U(LALT), END ); + BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C, T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD , D(LALT), T(LEFT), U(LALT), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(RIGHT), U(LALT), END ); + BABLM( BABL_GO_START_LINE , D(LGUI), T(LEFT), U(LGUI), END ); + BABLM( BABL_GO_START_DOC , D(LGUI),T(UP), U(LGUI),END ); + BABLM( BABL_GO_END_LINE , D(LGUI), T(RIGHT), U(LGUI), END ); + BABLM( BABL_GO_END_DOC , D(LGUI),T(DOWN), U(LGUI),END ); + BABLM( BABL_GO_NEXT_LINE , T(DOWN), END ); + BABLM( BABL_GO_PREV_LINE , T(UP), END ); + BABLM( BABL_PGDN , D(LALT),T(DOWN), U(LALT), END ); + BABLM( BABL_PGUP , D(LALT),T(UP), U(LALT), END ); #ifndef BABL_MOVEMENTONLY - case BABL_UNDO: - return MACRO( D(LGUI), T(Z), U(LGUI), END ); - case BABL_REDO: - return MACRO( D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); - case BABL_CUT: - return MACRO( D(LGUI), T(X), U(LGUI), END ); - case BABL_COPY: - return MACRO( D(LGUI), T(C), U(LGUI), END ); - case BABL_PASTE: - return MACRO( D(LGUI), T(V), U(LGUI), END ); - case BABL_SELECT_ALL: - return MACRO( D(LGUI), T(A), U(LGUI), END ); - case BABL_FIND: - return MACRO( D(LGUI),T(F), U(LGUI),END ); - case BABL_FIND_NEXT: - return MACRO( D(LGUI),T(G), U(LGUI),END ); - case BABL_FIND_REPLACE: - return MACRO( D(LGUI),T(F), U(LGUI),END ); - case BABL_RUNAPP: - return MACRO( D(LGUI),T(R), U(LGUI),END ); - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LGUI),T(TAB), U(LGUI),END ); - case BABL_SWITCH_APP_LAST: - return MACRO( D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); - case BABL_CLOSE_APP: - return MACRO( D(LGUI),T(Q), U(LGUI),END ); - case BABL_HELP: - return MACRO( D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); + BABLM( BABL_UNDO , D(1), D(LGUI), T(Z), U(LGUI), END ); + BABLM( BABL_REDO , D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); + BABLM( BABL_CUT , D(LGUI), T(X), U(LGUI), END ); + BABLM( BABL_COPY , D(LGUI), T(C), U(LGUI), END ); + BABLM( BABL_PASTE , D(LGUI), T(V), U(LGUI), END ); + BABLM( BABL_SELECT_ALL , D(LGUI), T(A), U(LGUI), END ); + BABLM( BABL_FIND , D(LGUI),T(F), U(LGUI),END ); + BABLM( BABL_FIND_NEXT, D(LGUI),T(G), U(LGUI),END ); + BABLM( BABL_FIND_REPLACE, D(LGUI),T(F), U(LGUI),END ); + BABLM( BABL_RUNAPP , D(LGUI),T(R), U(LGUI),END ); + BABLM( BABL_SWITCH_APP_NEXT , D(LGUI),T(TAB), U(LGUI),END ); + BABLM( BABL_SWITCH_APP_LAST , D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); + BABLM( BABL_CLOSE_APP , D(LGUI),T(Q), U(LGUI),END ); + BABLM( BABL_HELP , D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); #endif - break; - + return MACRO_NONE; - } - #endif #ifdef EMACS_MODE @@ -252,64 +169,64 @@ const static macro_t *babblePaste (keyrecord_t *record, uint16_t shortcut) { //probably should allow meta to not be ALT case BABL_DEL_RIGHT_1C: - return MACRO( D(LCTL), T(D), U(LCTL),END ); + BABLM( , D(LCTL), T(D), U(LCTL),END ); case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTL), T(BSPACE), U(LCTL), END ); + BABLM( , D(LCTL), T(BSPACE), U(LCTL), END ); case BABL_DEL_RIGHT_WORD: - return MACRO( D(LALT), T(D), U(LALT), END ); + BABLM( , D(LALT), T(D), U(LALT), END ); case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); + BABLM( , T(LEFT), END ); case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); + BABLM( , T(RIGHT), END ); case BABL_GO_LEFT_WORD: - return MACRO( D(LALT), T(B), U(LALT), END ); + BABLM( , D(LALT), T(B), U(LALT), END ); case BABL_GO_RIGHT_WORD: - return MACRO( D(LALT), T(F), U(LALT), END ); + BABLM( , D(LALT), T(F), U(LALT), END ); case BABL_GO_START_LINE: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); + BABLM( , D(LCTRL), T(A), U(LCTRL), END ); case BABL_GO_START_DOC: - return MACRO( D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); + BABLM( , D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); case BABL_GO_END_LINE: - return MACRO( D(LCTRL), T(E), U(LCTRL), END ); + BABLM( , D(LCTRL), T(E), U(LCTRL), END ); case BABL_GO_END_DOC: - return MACRO( D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END ); + BABLM( , D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END ); case BABL_GO_NEXT_LINE: - return MACRO( D(LCTRL), T(N), U(LCTRL), END ); + BABLM( , D(LCTRL), T(N), U(LCTRL), END ); case BABL_GO_PREV_LINE: - return MACRO( D(LCTRL), T(P), U(LCTRL), END ); + BABLM( , D(LCTRL), T(P), U(LCTRL), END ); case BABL_PGDN: - return MACRO(D(LCTRL), T(V), U(LCTRL), END ); + BABLM( ,D(LCTRL), T(V), U(LCTRL), END ); case BABL_PGUP: - return MACRO( D(LALT), T(V), U(LALT), END ); + BABLM( , D(LALT), T(V), U(LALT), END ); #ifndef BABL_MOVEMENTONLY case BABL_UNDO: - return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); + BABLM( , D(LCTL), T(X), U(LCTL),T(C), END ); case BABL_REDO: - return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + BABLM( , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably case BABL_CUT: - return MACRO( D(LCTL), T(W), U(LCTL), END ); + BABLM( , D(LCTL), T(W), U(LCTL), END ); case BABL_COPY: - return MACRO( D(LALT), T(W), U(LALT), END ); //really? + BABLM( , D(LALT), T(W), U(LALT), END ); //really? case BABL_PASTE: - return MACRO( D(LCTL), T(Y), U(LCTL), END ); + BABLM( , D(LCTL), T(Y), U(LCTL), END ); case BABL_SELECT_ALL: - return MACRO(D(LCTL), T(X), U(LCTL),T(H), END ); + BABLM( ,D(LCTL), T(X), U(LCTL),T(H), END ); case BABL_FIND: - return MACRO( D(LCTRL), T(S), U(LCTRL),END ); + BABLM( , D(LCTRL), T(S), U(LCTRL),END ); case BABL_FIND_NEXT: - return MACRO( D(LCTRL), T(S), U(LCTRL),END ); + BABLM( , D(LCTRL), T(S), U(LCTRL),END ); case BABL_FIND_REPLACE: - return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + BABLM( , D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); case BABL_RUNAPP: - return MACRO( D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably + BABLM( , D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably case BABL_SWITCH_APP_NEXT: - return MACRO( D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably + BABLM( , D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably case BABL_SWITCH_APP_LAST: - return MACRO( D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably + BABLM( , D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably case BABL_CLOSE_APP: - return MACRO(D(LCTL), T(X), U(LCTL),T(C),END ); + BABLM( ,D(LCTL), T(X), U(LCTL),T(C),END ); case BABL_HELP: - return MACRO( D(LCTL),T(H), U(LCTL),T(A),END); // start search in help + BABLM( , D(LCTL),T(H), U(LCTL),T(A),END); // start search in help #endif break; @@ -319,150 +236,90 @@ const static macro_t *babblePaste (keyrecord_t *record, uint16_t shortcut) { #endif #ifdef VI_MODE case VI_MODE: - switch(shortcut) { //assume esc is already called - case BABL_DEL_RIGHT_1C: - return MACRO( T(X),END ); - case BABL_DEL_LEFT_WORD: - return MACRO( T(D),T(G),T(E),END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( T(D),T(W),END ); - case BABL_GO_LEFT_1C: - return MACRO( T(H), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(L), END ); - case BABL_GO_LEFT_WORD: - return MACRO( T(B),END ); - case BABL_GO_RIGHT_WORD: - return MACRO( T(W), END ); - case BABL_GO_START_LINE: - return MACRO( D(LSFT), T(6),U(LSFT), END ); //^ - case BABL_GO_START_DOC: - return MACRO( T(G),T(G) ,END ); - case BABL_GO_END_LINE: - return MACRO( D(LSFT), T(4),U(LSFT) , END ); //$ - case BABL_GO_END_DOC: - return MACRO( D(LSFT), T(G),U(LSFT),END ); - case BABL_GO_NEXT_LINE: - return MACRO( T(J), END ); - case BABL_GO_PREV_LINE: - return MACRO( T(K), END ); - case BABL_PGDN: - return MACRO(D(LCTRL), T(F), U(LCTRL), END ); - case BABL_PGUP: - return MACRO( D(LCTRL), T(B), U(LCTRL), END ); + BABLM( BABL_DEL_RIGHT_1C , T(X),END ); + BABLM( BABL_DEL_LEFT_WORD , T(D),T(G),T(E),END ); + BABLM( BABL_DEL_RIGHT_WORD , T(D),T(W),END ); + BABLM( BABL_GO_LEFT_1C , T(H), END ); + BABLM( BABL_GO_RIGHT_1C , T(L), END ); + BABLM( BABL_GO_LEFT_WORD , T(B),END ); + BABLM( BABL_GO_RIGHT_WORD , T(W), END ); + BABLM( BABL_GO_START_LINE , D(LSFT), T(6),U(LSFT), END ); //^ + BABLM( BABL_GO_START_DOC , T(G),T(G) ,END ); + BABLM( BABL_GO_END_LINE , D(LSFT), T(4),U(LSFT) , END ); //$ + BABLM( BABL_GO_END_DOC , D(LSFT), T(G),U(LSFT),END ); + BABLM( BABL_GO_NEXT_LINE , T(J), END ); + BABLM( BABL_GO_PREV_LINE, T(K), END ); + BABLM( BABL_PGDN ,D(LCTRL), T(F), U(LCTRL), END ); + BABLM( BABL_PGUP , D(LCTRL), T(B), U(LCTRL), END ); #ifndef BABL_MOVEMENTONLY - case BABL_UNDO: - return MACRO( T(U), END ); - case BABL_REDO: - return MACRO( D(LCTL), T(R), U(LCTL), END ); - case BABL_CUT: - return MACRO( T(X), END ); - case BABL_COPY: - return MACRO( T(Y),END ); - case BABL_PASTE: - return MACRO( T(P), END ); - case BABL_SELECT_ALL: - return MACRO( D(LSFT), T(SCLN),U(LSFT),D(LSFT), T(5),U(LSFT),T(Y), END ); // wrong but helpful? - case BABL_FIND: - return MACRO( T(SLASH),END ); - case BABL_FIND_NEXT: - return MACRO( T(N),END ); - case BABL_FIND_REPLACE: - return MACRO( D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); - case BABL_RUNAPP: - return MACRO_NONE; - case BABL_SWITCH_APP_NEXT: - return MACRO_NONE; - case BABL_SWITCH_APP_LAST: - return MACRO_NONE; - case BABL_CLOSE_APP: - return MACRO(D(LSFT), T(SCLN),U(LSFT), T(Q), D(RSFT), T(1),U(RSFT), END ); - case BABL_HELP: - return MACRO(D(LSFT), T(SCLN),U(LSFT),T(H),END); // start search in help - break; + BABLM( BABL_UNDO , T(U), END ); + BABLM( BABL_REDO , D(LCTL), T(R), U(LCTL), END ); + BABLM( BABL_CUT , T(X), END ); + BABLM( BABL_COPY , T(Y),END ); + BABLM( BABL_PASTE , T(P), END ); + BABLM( BABL_SELECT_ALL , D(LSFT), T(SCLN),U(LSFT),D(LSFT), T(5),U(LSFT),T(Y), END ); // wrong but helpful? + BABLM( BABL_FIND , T(SLASH),END ); + BABLM( BABL_FIND_NEXT , T(N),END ); + BABLM( BABL_FIND_REPLACE , D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + BABLM( BABL_RUNAPP,END ); + BABLM( BABL_SWITCH_APP_NEXT ,END ); + BABLM( BABL_SWITCH_APP_LAST ,END ); + BABLM(BABL_CLOSE_APP, D(LSFT), T(SCLN),U(LSFT), T(Q), D(RSFT), T(1),U(RSFT), END ); + BABLM(BABL_HELP, D(LSFT), T(SCLN),U(LSFT),T(H),END); // start search in help #endif - return MACRO_NONE; - } - + return MACRO_NONE; #endif + + + + #ifdef READMUX_MODE // Readline command line editing + tmux windowing // I havent decided how much to do readline and how much tmux - case READMUX_MODE: - switch(shortcut) { - - case BABL_DEL_RIGHT_1C: - return MACRO( D(LCTL), T(D), U(LCTL),END ); - case BABL_DEL_LEFT_WORD: - return MACRO( D(LCTL), T(W), U(LCTL), END ); - case BABL_DEL_RIGHT_WORD: - return MACRO( D(LALT), T(D), U(LALT), END ); - case BABL_GO_LEFT_1C: - return MACRO( T(LEFT), END ); - case BABL_GO_RIGHT_1C: - return MACRO( T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - return MACRO( D(LALT), T(B), U(LALT), END ); - case BABL_GO_RIGHT_WORD: - return MACRO( D(LALT), T(F), U(LALT), END ); - case BABL_GO_START_LINE: - return MACRO( D(LCTRL), T(A), U(LCTRL), END ); - case BABL_GO_START_DOC: - return MACRO_NONE; // tmux? - case BABL_GO_END_LINE: - return MACRO( D(LCTRL), T(E), U(LCTRL), END ); - case BABL_GO_END_DOC: - return MACRO_NONE; // tmux? - case BABL_GO_NEXT_LINE: - return MACRO( D(LCTRL), T(N), U(LCTRL), END ); - case BABL_GO_PREV_LINE: - return MACRO( D(LCTRL), T(P), U(LCTRL), END ); - case BABL_PGDN: - return MACRO( T(PGDN), END ); - case BABL_PGUP: - return MACRO( T(PGUP), END ); + case READMUX_MODE: + BABLM( BABL_DEL_RIGHT_1C , D(LCTL), T(D), U(LCTL),END ); + BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(W), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END ); + BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD , D(LALT), T(B), U(LALT), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END ); + BABLM( BABL_GO_START_LINE , D(LCTRL), T(A), U(LCTRL), END ); + BABLM( BABL_GO_START_DOC ,END );// tmux? + BABLM( BABL_GO_END_LINE , D(LCTRL), T(E), U(LCTRL), END ); + BABLM( BABL_GO_END_DOC ,END ); // tmux? + BABLM( BABL_GO_NEXT_LINE , D(LCTRL), T(N), U(LCTRL), END ); + BABLM( BABL_GO_PREV_LINE , D(LCTRL), T(P), U(LCTRL), END ); + BABLM( BABL_PGDN , T(PGDN), END ); + BABLM( BABL_PGUP , T(PGUP), END ); #ifndef BABL_MOVEMENTONLY - case BABL_UNDO: - return MACRO( D(LALT), T(R), U(LALT) , END ); - case BABL_REDO: - return MACRO( D(LCTL), T(X), U(LCTL),T(C), END ); // arguably - case BABL_CUT: - return MACRO( D(LCTL), T(K), U(LCTL), END ); // wrong half the time - case BABL_COPY: - return MACRO_NONE; - case BABL_PASTE: - return MACRO( D(LCTL), T(Y), U(LCTL), END ); - case BABL_SELECT_ALL: - return MACRO(D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); - case BABL_FIND: - return MACRO( D(LCTRL), T(R), U(LCTRL), END ); // search history - case BABL_FIND_NEXT: - eturn MACRO( D(LCTRL), T(S), U(LCTRL), END ); - case BABL_FIND_REPLACE: - return MACRO_NONE; // tmux? - case BABL_RUNAPP: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(C),END ); //tmux - case BABL_SWITCH_APP_NEXT: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(N),END ); //tmux - case BABL_SWITCH_APP_LAST: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(P),END ); //tmux - case BABL_CLOSE_APP: - return MACRO( D(LCTRL), T(B), U(LCTRL), T(D),END); // usually what I want - break; - case BABL_HELP: - return MACRO_NONE; + BABLM( BABL_UNDO , D(LALT), T(R), U(LALT) , END ); + BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + BABLM( BABL_CUT , D(LCTL), T(K), U(LCTL), END ); // wrong half the time + BABLM( BABL_COPY ,END ); + BABLM( BABL_PASTE , D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_SELECT_ALL ,D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); + BABLM( BABL_FIND , D(LCTRL), T(R), U(LCTRL), END ); // search history + BABLM(BABL_FIND_NEXT, D(LCTRL), T(S), U(LCTRL), END ); + BABLM( BABL_FIND_REPLACE ,END ); + BABLM( BABL_RUNAPP , D(LCTRL), T(B), U(LCTRL), T(C),END ); //tmux + BABLM( BABL_SWITCH_APP_NEXT , D(LCTRL), T(B), U(LCTRL), T(N),END ); //tmux + BABLM( BABL_SWITCH_APP_LAST , D(LCTRL), T(B), U(LCTRL), T(P),END ); //tmux + BABLM( BABL_CLOSE_APP , D(LCTRL), T(B), U(LCTRL), T(D),END); // usually what I want + BABLM( BABL_HELP ,END ); #endif - break; - - return MACRO_NONE; - } + + return MACRO_NONE; #endif - return MACRO_NONE; - } + default: + return MACRO_NONE; + } } + +#endif \ No newline at end of file diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h index 63b79a20..313fa80e 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h @@ -9,27 +9,39 @@ and jeebak & algernon's keymap */ #ifndef _babblePaste_h_included__ #define _babblePaste_h_included__ +#include "action_layer.h" +#ifdef USE_BABLPASTE -/* Add this to your config.h -// Uncomment any modes you want. -// Windows. -//#define MS_MODE 0 +/* *************************** + +// Uncomment any modes you want. Whatever mode = 0 will be the default on boot + +//#define MS_MODE 0 // Windows. //#define MAC_MODE 1 -//aka gnome+KDE -//#define LINUX_MODE 2 +//#define LINUX_MODE 2 //aka gnome+KDE //#define EMACS_MODE 3 //#define VI_MODE 4 //#define WORDSTAR_MODE 5 -// Readline and tmux -//#define READMUX 6 -*/ +//#define READMUX 6 // Readline and tmux +****************************/ + + +// Uncomment if you need more free flash space +// It removes everything but cursor movement +//#define BABL_MOVEMENTONLY -/* Macros handled by babblepaste. Most should be available for all platforms. */ + +// Define starting number for BABL macros in the macro range. +// Probably can start the default even lower +#define BABL_START_NUM 50 + +/* Macros handled by babblepaste. Most should be available for all platforms. +Whatever isn't defined will NOP */ enum { // Movement - BABL_DEL_RIGHT_1C=200, + BABL_DEL_RIGHT_1C= BABL_START_NUM, BABL_DEL_LEFT_WORD, BABL_DEL_RIGHT_WORD, BABL_GO_LEFT_1C, @@ -64,9 +76,26 @@ enum { #endif }; +// How many macros/ how many array elements? +#define BABL_NUM_MACROS 28 +/* from action_macro.h +typedef uint8_t macro_t; + +#define MACRO_NONE (macro_t*)0 +#define MACRO(...) ({ static const macro_t __m[] PROGMEM = { __VA_ARGS__ }; &__m[0]; }) +#define MACRO_GET(p) pgm_read_byte(p) + +#define BABL_MSTART (entry, os, macro...) ( const macro_t bablDict[entry][os] PROGMEM = { macro... }; ) + +*/ + +const macro_t *babblePaste(keyrecord_t *record, uint8_t shortcut); + +macro_t* switch_babble_mode( uint8_t id); + + +#endif +#endif -//static macro_t *babblePaste(keyrecord_t *record, uint16_t shortcut) - - #endif \ No newline at end of file diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h index aaf0077b..7ad1b0f0 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -3,5 +3,25 @@ #include "../../config.h" +#define USE_BABLPASTE + +#ifdef USE_BABLPASTE +//define BabblePaste maps +// Windows. +//#define MS_MODE 1 +#define MAC_MODE 0 +//aka gnome+KDE +//#define LINUX_MODE 2 +//#define EMACS_MODE 3 +//#define VI_MODE 4 +//#define WORDSTAR_MODE 5 +// Readline and tmux +#define READMUX_MODE 6 +#endif + +// Uncomment if you need more free flash space +// It removes everything but cursor movement +//#define BABL_MOVEMENTONLY + // place overrides here #endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index 244d52dc..3a162db8 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -1,5 +1,7 @@ #include "MS-sculpt-mobile.h" #include "action_layer.h" +#include "action_util.h" +#include "babblePaste.h" #ifdef AUDIO_ENABLE #include "audio.h" @@ -12,6 +14,13 @@ #define _TRAN 5 + + +// adjust babblemode default +extern uint8_t babble_mode; + + + enum layer_keycodes { QWR, CDH, @@ -37,7 +46,11 @@ TRAN enum macro_keycodes { DHPASTE=1, VIBRK, -TO_CDH, +B_LNX, +B_WIN, +B_MAC, +B_VI, +B_READ , }; @@ -71,8 +84,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, QWR, \ KC_ESC, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, ____, ____, ____,\ - TT_MOV, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, ____,\ - KC_LSFT, KC_Z, KC_X, KC_C, M(DHPASTE), KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, ____,\ + TT_MOV, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_2,\ + KC_LSFT, KC_Z, KC_X, KC_C, M(DHPASTE), KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ____, KC_1,\ ____, ____, ____ , KC_FN1, ____, ____, ____, ____, ____, ____ ), @@ -86,9 +99,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * -------------------------------------------------------------------------- * | ESC: | ^ | { | } | @ | % | | [ | ( | ) | _ | [ | ] | \ | | * -------------------------------------------------------------------------------' -* |Bak/Mov| ! | # | 0 | = | | * | - | 1 | + | ] | ` | enter |PgUp| +* |Bak/Mov| ! | # | 0 | = | { | } | - | 1 | + | ] | ` | enter |PgUp| * -------------------------------------------------------------------------------- -* |Lsft | ; | ~ | : | ~ | "|"| $ | ~ | | | / | Rsft| Up| PgDn| +* |Lsft | ; | ~ | : | ~ | "|"| $ | * | | . | / | Rsft| Up| PgDn| * --------------------------------------------------------------------------------- * |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| * --------------------------------------------------------------------------------- @@ -98,16 +111,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ M(VIBRK), KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC, ____, KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS, ____, ____, ____,\ - ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, ____, KC_ASTR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ - ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_TILDE,____, ____, KC_SLSH, ____, ____, ____,\ + ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, KC_LCBR, KC_RCBR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ + ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), [_MOV] = KEYMAP (\ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____,RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, ____, KC_UP, ____, ____, ____, ____, ____, \ - ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, ____, KC_LEFT,KC_DOWN, KC_RIGHT, ____, ____,____,____,\ + ____, M(B_WIN),M(B_MAC),M(B_READ), M(B_VI), ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, M(BABL_UNDO), ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____,RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, M(BABL_DEL_LEFT_WORD), KC_UP, M(BABL_DEL_RIGHT_WORD), ____, ____, ____, ____, \ + ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, M(BABL_GO_START_LINE), KC_LEFT,KC_DOWN, KC_RIGHT, M(BABL_GO_END_LINE), ____,____,____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), @@ -122,7 +135,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; - const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_TAP_KEY(_SYM,KC_SPACE), [2] = ACTION_LAYER_TAP_KEY(_MOV,KC_BSPC) @@ -171,10 +183,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } - - + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + +/* If this is in the range of BABL macros, call a separate function */ +#ifdef USE_BABLPASTE + if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { + if (record->event.pressed) { // is there a case where this isn't desired? + + babblePaste ( record, id ); + return MACRO_NONE; + } + } +#endif + // MACRODOWN only works in this function switch(id) { case 0: @@ -185,49 +208,72 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } break; - - case DHPASTE: - if(keyboard_report->mods & MOD_BIT(KC_LGUI) ) { - if (record->event.pressed) { - clear_keyboard_but_mods(); - register_code(KC_V); - } else { - unregister_code(KC_V); - } - }else { - if (record->event.pressed) { - register_code(KC_D); + /* Colemak mod-dh moves the D key to the qwerty V position + This hack makes apple-V_position do what I mean */ + case DHPASTE: + if(keyboard_report->mods & MOD_BIT(KC_LGUI) ) { + if (record->event.pressed) { + clear_keyboard_but_mods(); + register_code(KC_V); + } else { + unregister_code(KC_V); + } + } else { + if (record->event.pressed) { + register_code(KC_D); } else { - unregister_code(KC_D); - } - } + unregister_code(KC_D); + } + } break; case VIBRK: // vi esc: if (record->event.pressed) { - return MACRO( T(E),D(LSFT),T(SCLN),U(LSFT), END ); + return MACRO( T(ESC),D(LSFT),T(SCLN),U(LSFT), END ); } break; - } - return MACRO_NONE; -}; + +#ifdef USE_BABLPASTE -#ifdef AUDIO_ENABLE +#ifdef LINUX_MODE + case B_LNX: + return switch_babble_mode(LINUX_MODE); +#endif +#ifdef MS_MODE + case B_WIN: + return switch_babble_mode(MS_MODE); +#endif +#ifdef MAC_MODE + case B_MAC: + return switch_babble_mode(MAC_MODE); +#endif +#ifdef VI_MODE + case B_VI: + return switch_babble_mode(VI_MODE); +#endif +#ifdef READMUX_MODE + case B_READ: + return switch_babble_mode(READMUX_MODE); +#endif +#endif -void startup_user() -{ - _delay_ms(20); // gets rid of tick - PLAY_NOTE_ARRAY(tone_startup, false, 0); -} -#endif + default: + return MACRO_NONE; + } -void matrix_init_user(void) { +return MACRO_NONE; +}; + + + + +void matrix_init_user(void) { } void matrix_scan_user(void) { @@ -240,3 +286,11 @@ void led_set_user(uint8_t usb_led) { } +macro_t* switch_babble_mode( uint8_t id) { + babble_mode= id; + return MACRO_NONE; //less typing above +} + + + + diff --git a/keyboards/handwired/MS-sculpt-mobile/rules.mk b/keyboards/handwired/MS-sculpt-mobile/rules.mk index cb9d5813..34ac78da 100644 --- a/keyboards/handwired/MS-sculpt-mobile/rules.mk +++ b/keyboards/handwired/MS-sculpt-mobile/rules.mk @@ -1,5 +1,9 @@ #CFLAGS=-D ASTAR +## Project specific files +SRC= babblePaste.c + + ifdef ASTAR OPT_DEFS += -DBOOTLOADER_SIZE=4096 MCU = atmega32u4 From 08cba6c09b505340ec6c1932df4b17aab1816d97 Mon Sep 17 00:00:00 2001 From: Joshua Colbeck Date: Tue, 7 Mar 2017 09:43:08 -0600 Subject: [PATCH 044/183] Fixed minor error in ergodox infinity section. --- keyboards/ergodox/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/readme.md b/keyboards/ergodox/readme.md index 45b3354c..5e50548b 100644 --- a/keyboards/ergodox/readme.md +++ b/keyboards/ergodox/readme.md @@ -100,7 +100,7 @@ for the left and right halves seperately. To flash them: - Install the firmware with `sudo make infinity-keymapname-dfu-util` - - Build left hand firmware with `make infinity-keymapname MASTER=right` + - Build right hand firmware with `make infinity-keymapname MASTER=right` - Plug in the right hand keyboard only. From 1023a47be6b91282b92b9a44f4492aa88375bf8e Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Wed, 22 Feb 2017 16:51:25 -0500 Subject: [PATCH 045/183] Copy CMD60 as starting point and rename files --- keyboards/handwired/magicforce68/README.md | 35 ++++ keyboards/handwired/magicforce68/config.h | 162 ++++++++++++++++++ .../magicforce68/keymaps/default/keymap.c | 66 +++++++ .../handwired/magicforce68/magicforce68.c | 8 + .../handwired/magicforce68/magicforce68.h | 20 +++ keyboards/handwired/magicforce68/rules.mk | 73 ++++++++ 6 files changed, 364 insertions(+) create mode 100644 keyboards/handwired/magicforce68/README.md create mode 100644 keyboards/handwired/magicforce68/config.h create mode 100644 keyboards/handwired/magicforce68/keymaps/default/keymap.c create mode 100644 keyboards/handwired/magicforce68/magicforce68.c create mode 100644 keyboards/handwired/magicforce68/magicforce68.h create mode 100644 keyboards/handwired/magicforce68/rules.mk diff --git a/keyboards/handwired/magicforce68/README.md b/keyboards/handwired/magicforce68/README.md new file mode 100644 index 00000000..83e37154 --- /dev/null +++ b/keyboards/handwired/magicforce68/README.md @@ -0,0 +1,35 @@ +CMD60 keyboard firmware +====================== + +##CMD60 + +This layout has been designed to optimize use of the left-hand, and it focussed specifically on programmers who work +with text editors like SublimeText and Atom. It utilizes the power of Space_fn, and features a caps lock swap for Fn2 +and enter key on tap. These features allow you to keep your right hand on the mouse more and should enable you to +achieve a higher level of productivity if you take the time to learn its function layers. + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/handwired/CMD60 folder. +Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use +the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make`. + +### Other Keymaps + +To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: + +``` +$ make keymap=[default|jack|] +``` + +Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` diff --git a/keyboards/handwired/magicforce68/config.h b/keyboards/handwired/magicforce68/config.h new file mode 100644 index 00000000..9671b66b --- /dev/null +++ b/keyboards/handwired/magicforce68/config.h @@ -0,0 +1,162 @@ +/* +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 Hexwire +#define PRODUCT Magicforce 68 +#define DESCRIPTION Advanced Programming Keeb Layout + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 14 + +/* + * 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 { F0, F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, C6, D7, B4, B5, B6 } +#define UNUSED_PINS + +/* 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/handwired/magicforce68/keymaps/default/keymap.c b/keyboards/handwired/magicforce68/keymaps/default/keymap.c new file mode 100644 index 00000000..9f9cbcd6 --- /dev/null +++ b/keyboards/handwired/magicforce68/keymaps/default/keymap.c @@ -0,0 +1,66 @@ +#include "CMD60.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = KEYMAP( /* CMD60 - 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_BSPC, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ + LT(3, KC_ENT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_NO, KC_RSFT, \ + KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), MO(3), MO(4), MO(5), TG(1) \ + ), + [1] = KEYMAP( /* CMD60 - GameMode */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \ + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_RSFT, \ + KC_TRNS, KC_NO, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), + [2] = KEYMAP( /* CMD60 - Arrows */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), + [3] = KEYMAP( /* CMD60 - Functions */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ + KC_AUDIO_MUTE, KC_BSPC, KC_PGUP, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_PAUSE, KC_SLCK, KC_PSCREEN, \ + KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_INSERT, KC_NO, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), + [4] = KEYMAP( /* CMD60 - Mouse */ + KC_SYSTEM_SLEEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_NO, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_NO, KC_NO, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), + [5] = KEYMAP( /* CMD60 - Media */ + KC_SYSTEM_WAKE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_MEDIA_PLAY_PAUSE, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WWW_BACK, KC_WWW_FORWARD, KC_NO, KC_NO, KC_WWW_REFRESH, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + ), +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/handwired/magicforce68/magicforce68.c b/keyboards/handwired/magicforce68/magicforce68.c new file mode 100644 index 00000000..84b1007e --- /dev/null +++ b/keyboards/handwired/magicforce68/magicforce68.c @@ -0,0 +1,8 @@ +#include "magicforce68.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} diff --git a/keyboards/handwired/magicforce68/magicforce68.h b/keyboards/handwired/magicforce68/magicforce68.h new file mode 100644 index 00000000..de465a82 --- /dev/null +++ b/keyboards/handwired/magicforce68/magicforce68.h @@ -0,0 +1,20 @@ +#ifndef MAGICFORCE68_H +#define MAGICFORCE68_H + +#include "quantum.h" + +#define KEYMAP( \ + 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, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + 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, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO,K4A, K4B, K4C, K4D } \ +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/magicforce68/rules.mk b/keyboards/handwired/magicforce68/rules.mk new file mode 100644 index 00000000..71175991 --- /dev/null +++ b/keyboards/handwired/magicforce68/rules.mk @@ -0,0 +1,73 @@ + +# MCU name +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=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# 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 +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + + From 6ee823a821d9c89a67c53f65ecf4d745223694a0 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Sun, 26 Feb 2017 10:16:24 -0500 Subject: [PATCH 046/183] Add rule for flashing microcontroller using avrdude --- keyboards/handwired/magicforce68/rules.mk | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/keyboards/handwired/magicforce68/rules.mk b/keyboards/handwired/magicforce68/rules.mk index 71175991..e897ef25 100644 --- a/keyboards/handwired/magicforce68/rules.mk +++ b/keyboards/handwired/magicforce68/rules.mk @@ -70,4 +70,14 @@ ifndef QUANTUM_DIR include ../../../Makefile endif +avrdude: build + ls /dev/tty* > /tmp/1; \ + echo "Reset your Pro Micro now"; \ + while [[ -z $$USB ]]; do \ + sleep 1; \ + ls /dev/tty* > /tmp/2; \ + USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ + done; \ + avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex +.PHONY: avrdude From f3aef727e174279e69d8d5831d859d00802eb8c4 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 11:41:10 -0500 Subject: [PATCH 047/183] Set pinout and layout --- keyboards/handwired/magicforce68/config.h | 6 +- .../magicforce68/keymaps/default/keymap.c | 90 ++++++++++--------- .../handwired/magicforce68/magicforce68.h | 20 ++--- 3 files changed, 61 insertions(+), 55 deletions(-) diff --git a/keyboards/handwired/magicforce68/config.h b/keyboards/handwired/magicforce68/config.h index 9671b66b..8a49b093 100644 --- a/keyboards/handwired/magicforce68/config.h +++ b/keyboards/handwired/magicforce68/config.h @@ -30,7 +30,7 @@ along with this program. If not, see . /* key matrix size */ #define MATRIX_ROWS 5 -#define MATRIX_COLS 14 +#define MATRIX_COLS 15 /* * Keyboard Matrix Assignments @@ -42,8 +42,8 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { F0, F4, F5, F6, F7 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, C6, D7, B4, B5, B6 } +#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 } +#define MATRIX_COL_PINS { B2, B0, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B7, D6 } #define UNUSED_PINS /* COL2ROW or ROW2COL */ diff --git a/keyboards/handwired/magicforce68/keymaps/default/keymap.c b/keyboards/handwired/magicforce68/keymaps/default/keymap.c index 9f9cbcd6..628249c2 100644 --- a/keyboards/handwired/magicforce68/keymaps/default/keymap.c +++ b/keyboards/handwired/magicforce68/keymaps/default/keymap.c @@ -1,52 +1,58 @@ -#include "CMD60.h" +#include "magicforce68.h" + +#define _QWERTY 0 +#define _FN1 1 +#define _FN2 2 +#define KC_ KC_TRNS const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = KEYMAP( /* CMD60 - 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_BSPC, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ - LT(3, KC_ENT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_NO, KC_RSFT, \ - KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), MO(3), MO(4), MO(5), TG(1) \ - ), - [1] = KEYMAP( /* CMD60 - GameMode */ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \ - KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_RSFT, \ - KC_TRNS, KC_NO, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ - ), - [2] = KEYMAP( /* CMD60 - Arrows */ - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ - KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \ - KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ - ), - [3] = KEYMAP( /* CMD60 - Functions */ - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ - KC_AUDIO_MUTE, KC_BSPC, KC_PGUP, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_PAUSE, KC_SLCK, KC_PSCREEN, \ - KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_INSERT, KC_NO, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + [_QWERTY] = KEYMAP( + /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ + ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL , BSPC , INS ,PGUP, + /*|----`----`----`----`----`----`----`----`----`----`----`----`----`--------| |----`----| */ + TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, BSLS , DEL ,PGDN, + /*|------`----`----`----`----`----`----`----`----`----`----`----`----`------| `----`----' */ + FN0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, ENTER , + /*|-------`----`----`----`----`----`----`----`----`----`----`----`----------| ,----. */ + LSFT , Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, RSFT , UP , + /*|---------`----`----`----`----`----`----`----`----`----`----`-------------.--|----|----. */ + LCTL ,LGUI ,LALT , SPACE , FN1 ,RALT ,RCTL , LEFT,DOWN,RGHT + /*`-----+-----+-----+------------------------------+------+-----+-----' `----+----+----' */ ), - [4] = KEYMAP( /* CMD60 - Mouse */ - KC_SYSTEM_SLEEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_NO, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_NO, KC_NO, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ - ), - [5] = KEYMAP( /* CMD60 - Media */ - KC_SYSTEM_WAKE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_MEDIA_PLAY_PAUSE, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WWW_BACK, KC_WWW_FORWARD, KC_NO, KC_NO, KC_WWW_REFRESH, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + + [_FN1] = KEYMAP( + /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ + GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , VOLU,HOME, + /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */ + , , , UP , , , , , , , , , , , VOLD,END, + /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */ + , ,LEFT,DOWN,RGHT, , , , , , , , , + /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */ + , , , , , , ,MUTE, , , , , MUTE, + /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */ + , , , , , , , MPRV,MPLY,MNXT + /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */ ), + + [_FN2] = KEYMAP( + /*,----+----+----+----+----+----+----+----+----+----+----+----+----+--------. ,----+----. */ + GRV , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 , BSPC , VOLU,HOME, + /*|esc-`-1--`-2--`-3--`-4--`-5--`-6--`-7--`-8--`-9--`-0--`mnus`plus`--bksp--| |ins-`pgup| */ + , , , UP , , , , 7 , 8 , 9 , , , , , VOLD,END, + /*|tab---`-q--`-w--`-e--`-r--`-t--`-y--`-u--`-i--`-o--`-p--`-{--`-}--`--|---| `del-`pgdn' */ + , ,LEFT,DOWN,RGHT, , , 4 , 5 , 6 , , , , + /*|caps---`-a--`-s--`-d--`-f--`-g--`-h--`-j--`-k--`-l--`-;--`-'--`----enter-| ,----. */ + , , , , , , 0 , 1 , 2 , 3 , , , MUTE, + /*|shift----`-z--`-x--`-c--`-v--`-b--`-n--`-m--`-,--`-.--`-/--`-------shift-.--|-up-|----. */ + , , , , , , , MPRV,MPLY,MNXT + /*`ctrl-+-gui-+-alt-+----------space---------------+-fn---+-alt-+ctrl-' `left+down+rght' */ + ) }; const uint16_t PROGMEM fn_actions[] = { - + [0] = LT(KC_FN2, KC_GRV), + [1] = MO(_FN1), + [2] = MO(_FN2), }; diff --git a/keyboards/handwired/magicforce68/magicforce68.h b/keyboards/handwired/magicforce68/magicforce68.h index de465a82..cfcdce38 100644 --- a/keyboards/handwired/magicforce68/magicforce68.h +++ b/keyboards/handwired/magicforce68/magicforce68.h @@ -4,17 +4,17 @@ #include "quantum.h" #define KEYMAP( \ - 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, K2C, K2D, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4D \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K2E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K3E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, \ + K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4E \ ) { \ - { 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, K2C, K2D }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ - { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO,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_##K1E }, \ + { 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_NO, KC_##K2E }, \ + { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_NO, KC_##K3C, KC_##K3D, KC_##K3E }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E } \ } #endif \ No newline at end of file From 2cd2ac02d1c215167a1d82d675dc7cab1d5d90be Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 12:19:29 -0500 Subject: [PATCH 048/183] Add readme file --- keyboards/handwired/magicforce68/README.md | 39 ++++++------------ .../handwired/magicforce68/wiring-layout.png | Bin 0 -> 73739 bytes 2 files changed, 12 insertions(+), 27 deletions(-) create mode 100644 keyboards/handwired/magicforce68/wiring-layout.png diff --git a/keyboards/handwired/magicforce68/README.md b/keyboards/handwired/magicforce68/README.md index 83e37154..4f0ccecf 100644 --- a/keyboards/handwired/magicforce68/README.md +++ b/keyboards/handwired/magicforce68/README.md @@ -1,35 +1,20 @@ -CMD60 keyboard firmware -====================== +Magicforce 68 Handwired +======================= -##CMD60 +This firmware is for a Magicforce 68 that's had its PCB removed and is handwired with an Arduino Micro. NOTE: The Arduino Micro is different than the Arduino *Pro* Micro. -This layout has been designed to optimize use of the left-hand, and it focussed specifically on programmers who work -with text editors like SublimeText and Atom. It utilizes the power of Space_fn, and features a caps lock swap for Fn2 -and enter key on tap. These features allow you to keep your right hand on the mouse more and should enable you to -achieve a higher level of productivity if you take the time to learn its function layers. +## Wiring Layout -## Quantum MK Firmware +![Wiring Layout](wiring-layout.png) -For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). +## Pinout -## Building +The following pins are used: +- Columns 1-15: B2, B0, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B7, D6 +- Rows 1-5: F0, F1, F4, F5, F6 -Download or clone the whole firmware and navigate to the keyboards/handwired/CMD60 folder. -Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use -the Teensy Loader to program your .hex file. +## Compiling and loading the firmware -Depending on which keymap you would like to use, you will have to compile slightly differently. +To build the firmware, run `make`. -### Default - -To build with the default keymap, simply run `make`. - -### Other Keymaps - -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: - -``` -$ make keymap=[default|jack|] -``` - -Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` +To flash the firemware onto the microcontroller, run `make avrdude`, and press the reset button. diff --git a/keyboards/handwired/magicforce68/wiring-layout.png b/keyboards/handwired/magicforce68/wiring-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..816b10b2b5394e95cc1b78b64a505f39878bc64a GIT binary patch literal 73739 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

  • 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∨f(cqtWO$F_zPiEv{FYU7_1L}8DpD+ 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 z@aDevent.pressed) { + /* The key is being pressed. + */ + if (mods_pressed) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} diff --git a/keyboards/clueboard/keymaps/mouse_keys/layout.png b/keyboards/clueboard/keymaps/mouse_keys/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..52e5c4581b8623e46f4cb11be8070642a862a350 GIT binary patch literal 143816 zcmcG#b97|gx-T4cY}>Z2j?=MiRBSsP+qOEkosQM9?T*oLMK|v`_nxzN?=imrz8b5> zsG853kLR-{ek(#zUJ?No7ZwBr1VLI#Oc?|OJQxJz3o3}L`o`@s){A%NbjS*SD-K$n6k)~6jgw*2omU5-tccy)CGg-$g1b# zJJ7LTFi_~pc+r&{R8KXL;ndOb9$;9h%gzjchK>sw!tiwh+^652?Jlo2+_&E@U$$PR z+CdaAZzvLN(jkRoxixTc4kn@%q)hj`K_QTZ!7%$mnc}6nQBVp%7K=YB1vkVSl{Om) zD(|nBKPnf3%UMA|6d}fGL^6n>4)@EN;mGH7L68>$ZVGkBu+s`A;|mcAeJrBqsoH#_ zRVbexJmg)9iN?V}kg0uo*a<-Xc(YGUq7@gpQo|=-42dLQoB1bqf5Gt~8UI4PesDmK zy-!B1Q~auubJx2dtF&}*JDEiaS?m3g^#Gx-{nKD=L-N=;Lp>27bCwwlSZRh3-OKyE}3jEHT=% zs762t?OCZ)N;WNAc;*4S60v*YEnDF}C659+pLL>{mQq(azL1$NZJg>uHYI|pph>Jv z1sABlRrN;n@lHA6UdkJ^${TpHqhmCyLE>3u70p;|`l%3~6i(WqIL*~BaiKctse>>v z*~JLOOQdTkP-65qmap&*5O#f_+<}J3saYK!=UI?`aO5(@g?G`qlu!a3<+3%JhJXQ= zCU*yL!*h7~u08k1;c3ib>Ga6M5)fuIU!nLBReBh`R#!F<_K)&(m{aKokZeoj(GpKI zmdO<&Oo7#k0MMpDL1u~RHior4x@!oVrhQ~&#KNy&=}-{F;0GWynh>dhi}}dtLB9<7 zsG+=n`YD1V1{LMwWPVt;(>Jbh*OJX|;!WvRVA{qY0 zQxsH@8Xbm0cubL(JoI3O)q+74K1KL&Mz9PMh+!2nC7hOTcPzL7hah5Kz{CuuVhC9U zmGzU&5OXrn(}A5IOFj&%|Jebw3xzR=ZdcR+%?GjvY&#I+TE+t#6dGq%3?4-%IOK_B zSBf+-R4M^O3Pm|mmGoW;Z!Tg(1bvk5fDJONz$6`8Cz^^98!ZUM5Yt%QkkfFSg(IDE zl4p`ZmdPCYmOy6c)VR8yP?M39Fe_Fsm|-y0xUw#0<#vT{#qS&nAF(uoZKQqoyCY1S z?1u6NTB67>}G41$>h7gh^@rVhd$TOOEnr zRRvxJFEKAk%A}al%Y#)@6i70_zx6{=(;PY6C%mo?b%WBg_B?oQ!DWVIv7F6Dd)>0WC6hlX{7eVQGXA%0kN@V~dkZ8^xZg zw>3v;mR|GR^U9^wdFnzJM@@0s^UW*T<=W!f2-@yVJr-=u;7yH9trlF?LQ6l7HBTm& zw2B)ge|Jq)osiLq&9cqAezgsFj1KmZPnu>(=Zt}?6w*wv54eO`mYztmIX7}Qx|;to2S3t2(!KS$ z<-L`}RD~mo3c*alY-MmvrJtam*i7ZBGNi+*gs+6HJX@-3u52FlYISWzSQ_4xuu-v` zH<777Tsc}@T76ivTnkyNuD5RS78o#<*o$Uh;|2J%y4O#)2pN9NeBC4&G>Q?;8qkrX zlMFNo*|(*tP|2VFR*G55HMKNVKINT#)jp%wue;Rl(&ppr>YUQC)QQ-U(MHjE;dExi zqKQ(4P!)Bl>2C0ta!IuzqhM+(GAicraxD( zib&xw)JPtv7U=1OnpoWE2dGW#WdhiElW<$88v~2`ux-s71<0-Oha|r}(Dl)4vme