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 cd3a610b4d..f42f255389 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 d8caa346f9..280dc7ab67 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 0000000000..b0009147ac --- /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 0000000000..1be800545a --- /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 0000000000..d3cde5bb9d --- /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 0000000000..f01929f5d7 --- /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 0000000000..bd49d142c9 --- /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 0000000000..59959524fa --- /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 0000000000..423ca4b868 --- /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 0000000000..f01929f5d7 --- /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 b0009147ac..977f1a9013 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 1be800545a..7deb9ebfe8 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 f01929f5d7..7d14dcf3f0 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 bd49d142c9..f0a84abac4 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 f01929f5d7..7d14dcf3f0 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 8022ca6729..623f24f324 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 d3cde5bb9d..710477df54 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 7d14dcf3f0..1f907e6cbc 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 423ca4b868..6ce37840b9 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 7d14dcf3f0..1f907e6cbc 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 1f907e6cbc..b77f2b2418 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 1f907e6cbc..b77f2b2418 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 ca3eeba59b..d7eed8f435 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 0000000000..18d2280d69 --- /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 0000000000..d0338fb7e9 --- /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 0000000000..487deb0862 --- /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 0000000000..9b30caf349 --- /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 0000000000..4c735a6c29 --- /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 0000000000..1583dea6e8 --- /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 0000000000..bd09e5885d --- /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 0000000000..1ac40f9964 --- /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 0000000000..9d3df5964f --- /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 0000000000..8893d122e0 --- /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 0000000000..ab09dcdd1c --- /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 0000000000..e67ddc6fec --- /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 0000000000..9d3df5964f --- /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 0000000000..8893d122e0 --- /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 0000000000..a80d5beaad --- /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 0000000000..96ee0e77a5 --- /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 0000000000..58029b50db --- /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 0000000000..cb9d5813cf --- /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 9d3df5964f..a82d80deee 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 a80d5beaad..0551fbde72 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 4423d422f6..6776062f6d 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 62473e3564..6be5b55bcd 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 45ea8cb73c..95f06d95d4 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 18f072189d..2470d8c7da 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 6f2a663fc8..2b0d2cd959 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 e16e11be7f..66044d8bce 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 0000000000..ba271d1ac6 --- /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 0000000000..5ba5417a96 --- /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 | 110 ++++++++++++++++---------- 1 file changed, 70 insertions(+), 40 deletions(-) diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c index 51e5a40bfe..afc82b49f9 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,24 +33,6 @@ enum planck_keycodes { 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 |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 * ,-----------------------------------------------------------------------------------. * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | @@ -57,14 +41,50 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | 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] = { - {_______, 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, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + {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] = { + {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,15 +163,6 @@ void persistant_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - 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 QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE @@ -160,6 +172,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } 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); 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 0000000000..37f00e8d80 --- /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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
u>bk?g0SCz2q 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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 0000000000..74ad01fca8 --- /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 01f158bf0f..37f00e8d80 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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

wWm}Mc_a4!=$&tY?eYF4qSeJruqB@{*SZF{9NzW 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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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 z%0A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 HN@xNA?Nc4M literal 0 HcmV?d00001 diff --git a/keyboards/clueboard/keymaps/mac_optimized/readme.md b/keyboards/clueboard/keymaps/mac_optimized/readme.md new file mode 100644 index 0000000000..940e09125d --- /dev/null +++ b/keyboards/clueboard/keymaps/mac_optimized/readme.md @@ -0,0 +1,15 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +![Clueboard Layout Image](layout.png) + +# Default Clueboard Layout for Mac + +This is the default Clueboard layout with Alt and GUI switched to match Mac +conventions. diff --git a/keyboards/clueboard/keymaps/max/Makefile b/keyboards/clueboard/keymaps/max/Makefile deleted file mode 100644 index 950dadf841..0000000000 --- a/keyboards/clueboard/keymaps/max/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#---------------------------------------------------------------------------- -# On command line: -# -# make all = Make software. -# -# make clean = Clean out built project files. -# -# make coff = Convert ELF to AVR COFF. -# -# make extcoff = Convert ELF to AVR Extended COFF. -# -# make program = Download the hex file to the device. -# Please customize your programmer settings(PROGRAM_CMD) -# -# make teensy = Download the hex file to the device, using teensy_loader_cli. -# (must have teensy_loader_cli installed). -# -# make dfu = Download the hex file to the device, using dfu-programmer (must -# have dfu-programmer installed). -# -# make flip = Download the hex file to the device, using Atmel FLIP (must -# have Atmel FLIP installed). -# -# make dfu-ee = Download the eeprom file to the device, using dfu-programmer -# (must have dfu-programmer installed). -# -# make flip-ee = Download the eeprom file to the device, using Atmel FLIP -# (must have Atmel FLIP installed). -# -# make debug = Start either simulavr or avarice as specified for debugging, -# with avr-gdb or avr-insight as the front end for debugging. -# -# make filename.s = Just compile filename.c into the assembler code only. -# -# make filename.i = Create a preprocessed source file for use in submitting -# bug reports to the GCC project. -# -# To rebuild project do "make clean" then "make all". -#---------------------------------------------------------------------------- - -# Build Options -# change to "no" to disable the options, or define them in the makefile.mk in -# the appropriate keymap folder that will get included automatically -# -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif \ No newline at end of file diff --git a/keyboards/clueboard/keymaps/max/keymap.c b/keyboards/clueboard/keymaps/max/keymap.c deleted file mode 100644 index 193809840b..0000000000 --- a/keyboards/clueboard/keymaps/max/keymap.c +++ /dev/null @@ -1,85 +0,0 @@ -#include "clueboard.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 _BL 0 -#define _FL 1 -#define _RS 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| Alt| Gui| MHen| Space| Space| Hen| Gui| Alt| Ctrl|Left|Down|Rght| - * `----------------------------------------------------------------------------------' - */ -[_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_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, \ - MO(_FL), 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(_FL), KC_UP, \ - KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - /* Keymap _FL: Function Layer - * ,--------------------------------------------------------------------------. ,----. - * | `| 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_TRNS,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, \ - 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), KC_PGUP, \ - KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), - - /* Keymap _RS: Reset/Underlight layer - * ,--------------------------------------------------------------------------. ,----. - * | | | | | | | | | | | | | | | | | | - * |--------------------------------------------------------------------------| |----| - * | | | | |RESET| | | | | | | | | | | | - * |--------------------------------------------------------------------------| `----' - * | | | _RS| | | | | | | | | | | | - * |-----------------------------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |------------------------------------------------------------------------|----|----. - * | | | | | | | | | | _FL| | | | - * `----------------------------------------------------------------------------------' - */ -[_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 { -};*/ - -const uint16_t PROGMEM fn_actions[] = { -}; - -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - switch (id) { - } -} diff --git a/keyboards/clueboard/keymaps/maximised/keymap.c b/keyboards/clueboard/keymaps/maximised/keymap.c new file mode 100644 index 0000000000..ebaefa6690 --- /dev/null +++ b/keyboards/clueboard/keymaps/maximised/keymap.c @@ -0,0 +1,47 @@ +#include "clueboard.h" + +// Helpful defines +#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( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_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, \ + MO(_FL), 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(_FL), KC_UP, \ + KC_LCTL, KC_LALT, KC_LGUI,KC_MHEN, KC_SPC, KC_SPC, KC_HENK, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), KC_PGUP, \ + _______, _______, _______,_______, _______,_______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Reset/Underlight 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), +}; + +const uint16_t PROGMEM fn_actions[] = { +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { +}; diff --git a/keyboards/clueboard/keymaps/maximised/layout.png b/keyboards/clueboard/keymaps/maximised/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc5d76239b8434f227d73f319b61793e660aa0c GIT binary patch literal 111157 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%0Aq#t?VHmd#vqnbj<<@ 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 LtDnm{r-UW|4W6yO literal 0 HcmV?d00001 diff --git a/keyboards/clueboard/keymaps/maximised/readme.md b/keyboards/clueboard/keymaps/maximised/readme.md new file mode 100644 index 0000000000..b95d1750f4 --- /dev/null +++ b/keyboards/clueboard/keymaps/maximised/readme.md @@ -0,0 +1,14 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +![Clueboard Layout Image](layout.png) + +# Maximised Clueboard Layout + +This layout is intended for a board with one or both shifts split. The outside key on the split shift is an Fn, while the inside is shift. The bottom row has all the mods on both sides, optimised for a Mac. diff --git a/keyboards/clueboard/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/keymaps/mouse_keys/keymap.c new file mode 100644 index 0000000000..37f00e8d80 --- /dev/null +++ b/keyboards/clueboard/keymaps/mouse_keys/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/mouse_keys/layout.png b/keyboards/clueboard/keymaps/mouse_keys/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..52e5c4581b8623e46f4cb11be8070642a862a350 GIT binary patch literal 143816 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 s3kfJ};QS$wr}Yh?Nevent.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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

oW9nUq|0cdVFC;gh+VUf)@|;7b&eh$_E}( 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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 c1182123d9..08255dfbc5 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 0000000000..9fbd772405 --- /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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 z 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�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 nGHUT53s_!+$#*C){g*GBsW$o2event.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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 literal 0 HcmV?d00001 diff --git a/keyboards/clueboard/keymaps/win_optimized/readme.md b/keyboards/clueboard/keymaps/win_optimized/readme.md new file mode 100644 index 0000000000..cede17ee17 --- /dev/null +++ b/keyboards/clueboard/keymaps/win_optimized/readme.md @@ -0,0 +1,17 @@ +``` + ___ _____ _ _ _ __ __ _ __ +|__ \ / ____| | | | | | / / / /(_) / / + ||) | | | | |_ _ ___| |__ ___ __ _ _ __ __| | / /_ / /_ / / + |/ / | | | | | | |/ _ \ '_ \ / _ \ / _` | '__/ _` | | '_ \| '_ \ / / + |_| | |____| | |_| | __/ |_) | (_) | (_| | | | (_| | | (_) | (_) / / _ + (_) \_____|_|\__,_|\___|_.__/ \___/ \__,_|_| \__,_| \___/ \___/_/ (_) +``` + +![Clueboard Layout Image](layout.png) + +# Default Clueboard Layout + +This is the default layout that comes flashed on every Clueboard. For the most +part it's a straightforward and easy to follow layout. The only unusual key is +the key in the upper left, which sends Escape normally, but Grave when any of +the Ctrl, Alt, or GUI modifiers are held down. diff --git a/keyboards/clueboard/rules.mk b/keyboards/clueboard/rules.mk index 3909fbd5cb..7ce096ba8b 100644 --- a/keyboards/clueboard/rules.mk +++ b/keyboards/clueboard/rules.mk @@ -90,14 +90,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +EXTRAKEY_ENABLE ?= no # Audio control and System control(+450) CONSOLE_ENABLE ?= yes # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration +COMMAND_ENABLE ?= yes # Commands for debug and configuration NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work AUDIO_ENABLE ?= no -RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality +RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality MIDI_ENABLE ?= no # MIDI controls UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID \ No newline at end of file +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID From 1d87df5262331bee3cd27995ba17b035db2bef42 Mon Sep 17 00:00:00 2001 From: skullY 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 0000000000..6c605daecf --- /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 37f00e8d80..a9c5cebd0c 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 761ba37f37..582f8920b1 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 63b626926d..3728fa3664 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 577dad43ac..bc48b39059 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 -bool process_midi(uint16_t keycode, keyrecord_t *record) { +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); + } +} + +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 acd4fc1b16..b0e0aeb832 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 3728fa3664..a024a96395 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 ba49284c9b..fb60658df7 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 a049fd43c9..a515737862 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 bc48b39059..acaae7c30a 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 acaae7c30a..4fbb288162 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 4fbb288162..2ce7418ea7 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 2ce7418ea7..f7a8b6650f 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 a024a96395..f2b9509b56 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 f7a8b6650f..d09aa0b382 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 b0e0aeb832..66ce60b0e5 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 f2b9509b56..4423d25eff 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 fb60658df7..bd24980573 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 d09aa0b382..4d60aefb1c 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 4423d25eff..30cc9abdb4 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 4d60aefb1c..9190fa0471 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 66ce60b0e5..ffd41579f2 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 0000000000..5cbda96cee --- /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 0000000000..e345d40c96 --- /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 0000000000..ac97259331 --- /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 0000000000..87844a854b --- /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 30cc9abdb4..6d1438051e 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 c61c4a6181..d0bee0d89a 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 5cbda96cee..4e2d9d2f7c 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 e345d40c96..0dbdb5cbcd 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 ac97259331..004690f413 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 9190fa0471..5530ea97c4 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 d0bee0d89a..cd6dfa2c6a 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 f4671a9d11..24442db37d 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 004690f413..397fe097bd 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 4a6fc0980f..eea8d5919a 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 0dbdb5cbcd..59250b49e2 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 397fe097bd..349391c3bf 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 5530ea97c4..161f04a245 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 1e2648bff5..ac906b6281 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 4a6d0355fa..83fa877088 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 6d1438051e..3b82b7208c 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 cd6dfa2c6a..54db4f242f 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 bd24980573..651a0f3477 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 | 141 ++++++++++-------------- quantum/process_keycode/process_music.h | 5 +- quantum/quantum.c | 3 + quantum/quantum.h | 7 +- 9 files changed, 186 insertions(+), 85 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 eea8d5919a..07dfe85b45 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 0000000000..5b5da546ea --- /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 0000000000..59a17725a7 --- /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 161f04a245..214bba9020 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 ffd41579f2..0f559ec23a 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 ac906b6281..a1e270df17 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,39 +17,42 @@ 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; +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 +} + +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 +} + +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 +} + bool process_music(uint16_t keycode, keyrecord_t *record) { - #ifdef AUDIO_ENABLE - 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; - } - #endif // AUDIO_ENABLE - if (keycode == MU_ON && record->event.pressed) { music_on(); return false; @@ -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 318b3e3875..69913b2761 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 83fa877088..7a27a568ac 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 580d51202a..77732d43f2 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 349391c3bf..8378b4e4b9 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 5b5da546ea..d45242c9e0 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 a1e270df17..43bcf973e9 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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 cc093bee49..492490ca1c 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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 cd3adc41cc..1e42b92b9c 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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 430b6493cf..bcd0989306 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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 0000000000..4c61581993 --- /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 59250b49e2..8e10b04ec2 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 0000000000..4c61581993 --- /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 d45242c9e0..71c0297ee2 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 43bcf973e9..4b86b91f00 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 69913b2761..a36514a44f 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 7a27a568ac..a4a12061b3 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 3b82b7208c..56228f2767 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 54db4f242f..7393097e1e 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 07dfe85b45..82464d5830 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 4e2d9d2f7c..89c34b3946 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 bad3387bf4..a1f9377d87 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 0000000000..fc8567e68c --- /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 fc8567e68c..f33829b8a4 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 a82d80deee..1209ad7814 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 8893d122e0..aaf0077b14 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 0551fbde72..244d52dc56 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 1ac40f9964..d85c5c6233 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 0000000000..00e8416f41 --- /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 0000000000..63b79a2055 --- /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 0000000000..6170ec7af5 --- /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 71c0297ee2..0b6380ed39 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 59a17725a7..7ac15b7330 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 214bba9020..700c6ce8e6 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 0f559ec23a..58b7650c67 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 4b86b91f00..f89a04ee31 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 24442db37d..29f11bbc77 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 | 294 +++++++++++++++++++++--------------------- 1 file changed, 150 insertions(+), 144 deletions(-) diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 2a315fd168..e1e81fd2b8 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; + 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; - } - } + 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(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 - } + #ifdef VIBRATO_ENABLE + if (vibrato_strength > 0) { + freq = vibrato(frequency); + } else { + freq = frequency; + } + #else + freq = frequency; + #endif + } - if (envelope_index < 65535) { - envelope_index++; - } + if (envelope_index < 65535) { + envelope_index++; + } - freq = voice_envelope(freq); + freq = voice_envelope(freq); - if (freq < 30.517578125) { - freq = 30.52; - } + 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); - } - } + 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 (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); + 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; - } + 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)); - } + 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); - } + 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; - } - } + note_position = 0; + } + } - if (!audio_config.enable) { - playing_notes = false; - playing_note = false; - } + 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 062a712bd1..eb0c40138a 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 | 138 ++-- keyboards/handwired/MS-sculpt-mobile/rules.mk | 4 + 5 files changed, 396 insertions(+), 432 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c index 00e8416f41..93ff486e0d 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 ; + + +// 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; } -const static macro_t *babblePaste (keyrecord_t *record, uint16_t shortcut) { +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. +*/ - switch(babble_mode) { - + 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 63b79a2055..313fa80ec4 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 +****************************/ -/* Macros handled by babblepaste. Most should be available for all platforms. */ + +// Uncomment if you need more free flash space +// It removes everything but cursor movement +//#define BABL_MOVEMENTONLY + + +// 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 aaf0077b14..7ad1b0f0f5 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 244d52dc56..3a162db864 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 - - -void startup_user() -{ - _delay_ms(20); // gets rid of tick - PLAY_NOTE_ARRAY(tone_startup, false, 0); -} +#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 matrix_init_user(void) { + default: + return MACRO_NONE; + } + +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 cb9d5813cf..34ac78da81 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 45b3354c1c..5e50548be3 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 0000000000..83e371543e --- /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 0000000000..9671b66bad --- /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 0000000000..9f9cbcd661 --- /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 0000000000..84b1007e2c --- /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 0000000000..de465a828f --- /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 0000000000..7117599173 --- /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 7117599173..e897ef2523 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 9671b66bad..8a49b09353 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 9f9cbcd661..628249c2d8 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) \ + [_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 + /*`-----+-----+-----+------------------------------+------+-----+-----' `----+----+----' */ ), - [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 \ + + [_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 de465a828f..cfcdce38d5 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 83e371543e..4f0ccecf99 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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

94aoWTt>pELIU|rcf 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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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