From 5ac0e6e6aee64c9b8fade79aaf22bc839e2c6b47 Mon Sep 17 00:00:00 2001 From: milestogo Date: Thu, 9 Feb 2017 23:23:39 -0800 Subject: [PATCH 01/34] 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 02/34] 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 03/34] 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 334edc3c7d594674a44bc66e70fb08e45b27e644 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Thu, 16 Feb 2017 14:32:24 -0500 Subject: [PATCH 04/34] 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 05/34] 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 db1e9a469a8dda068a913fe570c86a1fefc1b4cd Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 19 Feb 2017 00:11:55 -0500 Subject: [PATCH 06/34] 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 748401e5c180e91181bc10a80491d7d5568c008a Mon Sep 17 00:00:00 2001 From: milestogo Date: Tue, 28 Feb 2017 21:53:42 -0800 Subject: [PATCH 07/34] 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 08/34] 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 09/34] 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 2f677c24a8fcf936e92a0a5acfbbf95b5f47fdb7 Mon Sep 17 00:00:00 2001 From: milestogo Date: Mon, 6 Mar 2017 00:16:44 -0800 Subject: [PATCH 10/34] 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 01980c96e9c1e8ab5aad0e89d03c0e15417712c8 Mon Sep 17 00:00:00 2001 From: milestogo Date: Wed, 8 Mar 2017 01:06:25 -0800 Subject: [PATCH 11/34] added browser babble, removed code from keymap --- .../handwired/MS-sculpt-mobile/babblePaste.c | 408 +++++++++++------- .../handwired/MS-sculpt-mobile/babblePaste.h | 151 ++++++- .../keymaps/milestogo/config.h | 13 +- .../keymaps/milestogo/keymap.c | 78 ++-- 4 files changed, 438 insertions(+), 212 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c index 93ff486e0d..491a79333e 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c @@ -15,6 +15,13 @@ and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jee // GLOBAL variable to determine mode. Sets startup default if no eeppom uint8_t babble_mode =0 ; +// small function that we might also want to call from a keymap. + +macro_t* switch_babble_mode( uint8_t id) { + babble_mode= id; + return MACRO_NONE; //less typing above +} + // Today I learned that the preprocessor can not create a switch statement label from an argument // And else statements have problems, see https://gcc.gnu.org/onlinedocs/gcc-3.0.1/cpp_3.html#SEC15 @@ -23,63 +30,80 @@ uint8_t babble_mode =0 ; { action_macro_play( MACRO(macro)); return MACRO_NONE; } -const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { /* this function runs the appropriate babblepaste macro, given the global babble_mode, and a shortcut from the ENUM in babblePaste.h TODO, the pointers in this function should be stored in a PROGMEM array, not ram. But that requires even more clever preprocessor foo. */ - +const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { +/* if ( shortcut < BABL_START_NUM || \ shortcut >= (BABL_START_NUM + BABL_NUM_MACROS ) ) { return MACRO_NONE; } - - +*/ switch(babble_mode) { - -#ifdef MS_MODE + + +#ifdef MS_MODE + if ( BABL_WINDOWS == shortcut ) { return switch_babble_mode(MS_MODE); } + case MS_MODE: - BABLM( BABL_DEL_RIGHT_1C, T(DEL), END ); - BABLM( BABL_DEL_LEFT_WORD, D(LCTRL), T(BSPACE), U(LCTRL), END ); - BABLM( BABL_DEL_RIGHT_WORD,D(LCTRL), T(DEL), U(LCTRL), END ); BABLM( BABL_GO_LEFT_1C, T(LEFT), END ); BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); - BABLM( BABL_GO_LEFT_WORD, D(LCTRL), T(LEFT), U(LCTRL), END ); - BABLM( BABL_GO_RIGHT_WORD, D(LCTRL), T(RIGHT), U(LCTRL), END ); + BABLM( BABL_GO_LEFT_WORD, D(LCTL), T(LEFT), U(LCTL), END ); + BABLM( BABL_GO_RIGHT_WORD, D(LCTL), T(RIGHT), U(LCTL), END ); BABLM( BABL_GO_START_LINE, T(HOME), END ); - BABLM( BABL_GO_START_DOC, D(LCTRL),T(HOME), U(LCTRL),END ); BABLM( BABL_GO_END_LINE, T(END), END ); - BABLM( BABL_GO_END_DOC, D(LCTRL),T(END), U(LCTRL),END ); + BABLM( BABL_GO_START_DOC, D(LCTL),T(HOME), U(LCTL),END ); + BABLM( BABL_GO_END_DOC, D(LCTL),T(END), U(LCTL),END ); BABLM( BABL_GO_NEXT_LINE, T(DOWN), END ); BABLM( BABL_GO_PREV_LINE, T(UP), END ); BABLM( BABL_PGDN, T(PGDN), END ); BABLM( BABL_PGUP, T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_1C, T(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD, D(LCTL), T(BSPACE), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_WORD, D(LCTL), T(DEL), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_END, D(RSFT), T(HOME), U(RSFT), T(DEL), END); + BABLM( BABL_DEL_TO_LINE_START, D(RSFT), T(END), U(RSFT), T(DEL), END ); #ifndef BABL_MOVEMENTONLY - BABLM( BABL_UNDO, D(LCTRL), T(Z), U(LCTRL), END ); - BABLM( BABL_REDO, D(LCTRL), T(Y), U(LCTRL), END ); - BABLM( BABL_CUT, D(LCTRL), T(X), U(LCTRL), END ); - BABLM( BABL_COPY, D(LCTRL), T(C), U(LCTRL), END ); - BABLM( BABL_PASTE, D(LCTRL), T(V), U(LCTRL), END ); - BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_UNDO, D(LCTRL), T(Z), U(LCTRL), END ); - BABLM( BABL_REDO, D(LCTRL), T(Y), U(LCTRL), END ); - BABLM( BABL_CUT, D(LCTRL), T(X), U(LCTRL), END ); - BABLM( BABL_COPY, D(LCTRL), T(C), U(LCTRL), END ); - BABLM( BABL_PASTE, D(LCTRL), T(V), U(LCTRL), END ); - BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_FIND, D(LCTRL),T(F), U(LCTRL),END ); + BABLM( BABL_UNDO, D(LCTL), T(Z), U(LCTL), END ); + BABLM( BABL_REDO, D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_CUT, D(LCTL), T(X), U(LCTL), END ); + BABLM( BABL_COPY, D(LCTL), T(C), U(LCTL), END ); + BABLM( BABL_PASTE, D(LCTL), T(V), U(LCTL), END ); + BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_FIND, D(LCTL),T(F), U(LCTL),END ); BABLM( BABL_FIND_NEXT, T(F3),END ); - BABLM( BABL_FIND_REPLACE, D(LCTRL),T(H), U(LCTRL),END ); + BABLM( BABL_FIND_REPLACE, D(LCTL),T(H), U(LCTL),END ); BABLM( BABL_RUNAPP, D(LGUI),T(R), U(LGUI),END ); BABLM( BABL_SWITCH_APP_NEXT, D(LALT),T(TAB), U(LALT),END ); BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END ); BABLM( BABL_CLOSE_APP, D(LALT),T(F4), U(LALT),END ); BABLM( BABL_HELP, T(F1),END ); +#ifndef BABL_NOBROWSER + BABLM( BABL_BROWSER_NEW_TAB, D(LCTL), T(T), U(LCTL),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LCTL), T(W), U(LCTL),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LCTL), T(TAB), U(LCTL),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LCTL), T(L), U(LCTL),END ); + BABLM( BABL_BROWSER_FORWARD, D(LALT), T(RIGHT), U(LALT),END ); + BABLM( BABL_BROWSER_BACK, D(LALT), T(LEFT), U(LALT),END ); + BABLM( BABL_BROWSER_FIND, D(LCTL), T(F), U(LCTL),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LCTL), T(D), U(LCTL),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LCTL),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LCTL), T(T), U(LCTL),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, T(F11),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LCTL), D(RSFT), T(EQL), U(RSFT), U(LCTL),END ); // ctr+ + + BABLM( BABL_BROWSER_ZOOM_OUT, D(LCTL), T(MINS), U(LCTL),END ); +#endif #endif - + // Todo, ring bell, flash light, show user this isn't supported return MACRO_NONE; @@ -87,62 +111,87 @@ But that requires even more clever preprocessor foo. #ifdef LINUX_MODE + if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE); } + case LINUX_MODE: - - BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); - BABLM( BABL_DEL_LEFT_WORD , D(LCTRL), T(BSPACE), U(LCTRL), END ); - BABLM( BABL_DEL_RIGHT_WORD , D(LCTRL), T(DEL), U(LCTRL), END ); BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); - BABLM( BABL_GO_LEFT_WORD , D(LCTRL), T(LEFT), U(LCTRL), END ); - BABLM( BABL_GO_RIGHT_WORD , D(LCTRL), T(RIGHT), U(LCTRL), END ); + BABLM( BABL_GO_LEFT_WORD , D(LCTL), T(LEFT), U(LCTL), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LCTL), T(RIGHT), U(LCTL), END ); BABLM( BABL_GO_START_LINE , T(HOME), END ); - BABLM( BABL_GO_START_DOC , D(LCTRL),T(HOME), U(LCTRL),END ); BABLM( BABL_GO_END_LINE , T(END), END ); - BABLM( BABL_GO_END_DOC , D(LCTRL),T(END), U(LCTRL),END ); + BABLM( BABL_GO_START_DOC , D(LCTL),T(HOME), U(LCTL),END ); + BABLM( BABL_GO_END_DOC , D(LCTL),T(END), U(LCTL),END ); BABLM( BABL_GO_NEXT_LINE , T(DOWN), END ); BABLM( BABL_GO_PREV_LINE , T(UP), END ); BABLM( BABL_PGDN , T(PGDN), END ); BABLM( BABL_PGUP , T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(BSPACE), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LCTL), T(DEL), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_END, D(RSFT), T(HOME), U(RSFT), T(DEL), END); + BABLM( BABL_DEL_TO_LINE_START, D(RSFT), T(END), U(RSFT), T(DEL), END ); #ifndef BABL_MOVEMENTONLY - BABLM( BABL_UNDO , D(LCTRL), T(Z), U(LCTRL), END ); - BABLM( BABL_REDO , D(LCTRL), T(Y), U(LCTRL), END ); - BABLM( BABL_CUT , D(LCTRL), T(X), U(LCTRL), END ); - BABLM( BABL_COPY , D(LCTRL), T(C), U(LCTRL), END ); - BABLM( BABL_PASTE , D(LCTRL), T(V), U(LCTRL), END ); - BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_FIND, D(LCTRL),T(F), U(LCTRL),END ); + BABLM( BABL_UNDO , D(LCTL), T(Z), U(LCTL), END ); + BABLM( BABL_REDO , D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_CUT , D(LCTL), T(X), U(LCTL), END ); + BABLM( BABL_COPY , D(LCTL), T(C), U(LCTL), END ); + BABLM( BABL_PASTE , D(LCTL), T(V), U(LCTL), END ); + BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_FIND, D(LCTL),T(F), U(LCTL),END ); /* BABLM(BABL_FIND_NEXT , T(F3),END ); KDE */ - BABLM( BABL_FIND_NEXT, D(LCTRL),T(G), U(LCTRL),END ); // Gnome*/ - /* BABLM( , D(LCTRL),T(R), U(LCTRL),END ); KDE */ - BABLM( BABL_FIND_REPLACE, D(LCTRL),T(H), U(LCTRL),END ); // Gnome*/ + BABLM( BABL_FIND_NEXT, D(LCTL),T(G), U(LCTL),END ); // Gnome*/ + /* BABLM( , D(LCTL),T(R), U(LCTL),END ); KDE */ + BABLM( BABL_FIND_REPLACE, D(LCTL),T(H), U(LCTL),END ); // Gnome*/ BABLM( BABL_RUNAPP, D(LALT),T(F2), U(LALT),END ); BABLM( BABL_SWITCH_APP_NEXT, D(LCTL),T(TAB), U(LCTL),END ); BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END ); BABLM( BABL_CLOSE_APP, D(LALT),T(F4), U(LALT),END ); - BABLM( BABL_HELP, END ); + //BABLM( BABL_HELP, END ); + +#ifndef BABL_NOBROWSER + BABLM( BABL_BROWSER_NEW_TAB, D(LCTL), T(T), U(LCTL),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LCTL), T(W), U(LCTL),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LCTL), T(TAB), U(LCTL),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LCTL), T(L), U(LCTL),END ); + BABLM( BABL_BROWSER_FORWARD, D(LALT), T(RIGHT), U(LALT),END ); + BABLM( BABL_BROWSER_BACK, D(LALT), T(LEFT), U(LALT),END ); + BABLM( BABL_BROWSER_FIND, D(LCTL), T(F), U(LCTL),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LCTL), T(D), U(LCTL),END ); + BABLM( BABL_BROWSER_DEV_TOOLS, D(LCTL), T(T), U(LCTL),END ); // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, T(F11),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LCTL), T(PLUS), U(LCTL),END ); + BABLM( BABL_BROWSER_ZOOM_OUT, D(LCTL), T(MINS), U(LCTL),END ); +#endif #endif return MACRO_NONE; #endif #ifdef MAC_MODE + if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE); } + case MAC_MODE: - BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); - BABLM( BABL_DEL_LEFT_WORD , D(LALT), T(BSPACE), U(LALT), END ); - BABLM( BABL_DEL_RIGHT_WORD, D(LALT), T(DEL), U(LALT), END ); BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); BABLM( BABL_GO_RIGHT_1C, T(RIGHT), END ); BABLM( BABL_GO_LEFT_WORD , D(LALT), T(LEFT), U(LALT), END ); BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(RIGHT), U(LALT), END ); BABLM( BABL_GO_START_LINE , D(LGUI), T(LEFT), U(LGUI), END ); - BABLM( BABL_GO_START_DOC , D(LGUI),T(UP), U(LGUI),END ); BABLM( BABL_GO_END_LINE , D(LGUI), T(RIGHT), U(LGUI), END ); + BABLM( BABL_GO_START_DOC , D(LGUI),T(UP), U(LGUI),END ); BABLM( BABL_GO_END_DOC , D(LGUI),T(DOWN), U(LGUI),END ); BABLM( BABL_GO_NEXT_LINE , T(DOWN), END ); BABLM( BABL_GO_PREV_LINE , T(UP), END ); BABLM( BABL_PGDN , D(LALT),T(DOWN), U(LALT), END ); BABLM( BABL_PGUP , D(LALT),T(UP), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_1C , D(DEL), END ); + BABLM( BABL_DEL_LEFT_WORD , D(LALT), T(BSPACE), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_WORD, D(LALT), T(DEL), U(LALT), END ); + BABLM( BABL_DEL_TO_LINE_END, D(LCTL), T(K), U(LCTL), END );// there must be another way + BABLM( BABL_DEL_TO_LINE_START, D(LGUI), T(BSPACE), U(LGUI), END ); #ifndef BABL_MOVEMENTONLY BABLM( BABL_UNDO , D(1), D(LGUI), T(Z), U(LGUI), END ); BABLM( BABL_REDO , D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END ); @@ -158,75 +207,92 @@ But that requires even more clever preprocessor foo. BABLM( BABL_SWITCH_APP_LAST , D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END ); BABLM( BABL_CLOSE_APP , D(LGUI),T(Q), U(LGUI),END ); BABLM( BABL_HELP , D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END ); + +#ifndef BABL_NOBROWSER + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ + + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +#endif #endif return MACRO_NONE; #endif #ifdef EMACS_MODE + + if ( BABL_EMACS == shortcut ) { return switch_babble_mode(EMACS_MODE); } + case EMACS_MODE: switch(shortcut) { //probably should allow meta to not be ALT - - case BABL_DEL_RIGHT_1C: - BABLM( , D(LCTL), T(D), U(LCTL),END ); - case BABL_DEL_LEFT_WORD: - BABLM( , D(LCTL), T(BSPACE), U(LCTL), END ); - case BABL_DEL_RIGHT_WORD: - BABLM( , D(LALT), T(D), U(LALT), END ); - case BABL_GO_LEFT_1C: - BABLM( , T(LEFT), END ); - case BABL_GO_RIGHT_1C: - BABLM( , T(RIGHT), END ); - case BABL_GO_LEFT_WORD: - BABLM( , D(LALT), T(B), U(LALT), END ); - case BABL_GO_RIGHT_WORD: - BABLM( , D(LALT), T(F), U(LALT), END ); - case BABL_GO_START_LINE: - BABLM( , D(LCTRL), T(A), U(LCTRL), END ); - case BABL_GO_START_DOC: - BABLM( , D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); - case BABL_GO_END_LINE: - BABLM( , D(LCTRL), T(E), U(LCTRL), END ); - case BABL_GO_END_DOC: - BABLM( , D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END ); - case BABL_GO_NEXT_LINE: - BABLM( , D(LCTRL), T(N), U(LCTRL), END ); - case BABL_GO_PREV_LINE: - BABLM( , D(LCTRL), T(P), U(LCTRL), END ); - case BABL_PGDN: - BABLM( ,D(LCTRL), T(V), U(LCTRL), END ); - case BABL_PGUP: - BABLM( , D(LALT), T(V), U(LALT), END ); + + BABLM( BABL_GO_LEFT_1C, T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C, T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD, D(LALT), T(B), U(LALT), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END ); + BABLM( BABL_GO_START_LINE , D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_GO_END_LINE , D(LCTL), T(E), U(LCTL), END ); + BABLM( BABL_GO_START_DOC , D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END ); + BABLM( BABL_GO_END_DOC , D(LALT), D(LSFT), T(DOT), U(LSFT), U(LALT) ,END ); + BABLM( BABL_GO_NEXT_LINE , D(LCTL), T(N), U(LCTL), END ); + BABLM( BABL_GO_PREV_LINE , D(LCTL), T(P), U(LCTL), END ); + BABLM( BABL_PGDN , D(LCTL), T(V), U(LCTL), END ); + BABLM( BABL_PGUP , D(LALT), T(V), U(LALT), END ); + BABLM( BABL_DEL_RIGHT_1C, D(LCTL), T(D), U(LCTL),END ); + BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(BSPACE), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END ); + BABLM( BABL_DEL_TO_LINE_END, D(LCTL), T(K), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_START, T(ESC), T(0), D(LCTL), T(K), U(LCTL), END ); #ifndef BABL_MOVEMENTONLY - case BABL_UNDO: - BABLM( , D(LCTL), T(X), U(LCTL),T(C), END ); - case BABL_REDO: - BABLM( , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably - case BABL_CUT: - BABLM( , D(LCTL), T(W), U(LCTL), END ); - case BABL_COPY: - BABLM( , D(LALT), T(W), U(LALT), END ); //really? - case BABL_PASTE: - BABLM( , D(LCTL), T(Y), U(LCTL), END ); - case BABL_SELECT_ALL: - BABLM( ,D(LCTL), T(X), U(LCTL),T(H), END ); - case BABL_FIND: - BABLM( , D(LCTRL), T(S), U(LCTRL),END ); - case BABL_FIND_NEXT: - BABLM( , D(LCTRL), T(S), U(LCTRL),END ); - case BABL_FIND_REPLACE: - BABLM( , D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); - case BABL_RUNAPP: - BABLM( , D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably - case BABL_SWITCH_APP_NEXT: - BABLM( , D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably - case BABL_SWITCH_APP_LAST: - BABLM( , D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably - case BABL_CLOSE_APP: - BABLM( ,D(LCTL), T(X), U(LCTL),T(C),END ); - case BABL_HELP: - BABLM( , D(LCTL),T(H), U(LCTL),T(A),END); // start search in help + BABLM( BABL_UNDO , D(LCTL), T(X), U(LCTL),T(C), END ); + BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + BABLM( BABL_CUT , D(LCTL), T(W), U(LCTL), END ); + BABLM( BABL_COPY , D(LALT), T(W), U(LALT), END ); //really? + BABLM( BABL_PASTE , D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_SELECT_ALL ,D(LCTL), T(X), U(LCTL),T(H), END ); + BABLM( BABL_FIND , D(LCTL), T(S), U(LCTL),END ); + BABLM( BABL_FIND_NEXT , D(LCTL), T(S), U(LCTL),END ); + BABLM( BABL_FIND_REPLACE , D(LALT),D(LSFT), T(5),U(LSFT), U(LALT), END ); + BABLM( BABL_RUNAPP , D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably + BABLM( BABL_SWITCH_APP_NEXT , D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably + BABLM( BABL_SWITCH_APP_LAST , D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably + BABLM( BABL_CLOSE_APP , D(LCTL), T(X), U(LCTL),T(C),END ); + BABLM( BABL_HELP , D(LCTL),T(H), U(LCTL),T(A),END); // start search in help +#ifndef BABL_NOBROWSER +/* you get to figure w3 out + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ + + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif #endif break; @@ -234,25 +300,31 @@ But that requires even more clever preprocessor foo. } #endif + + #ifdef VI_MODE + if ( BABL_VI == shortcut ) { return switch_babble_mode(VI_MODE); } case VI_MODE: -//assume esc is already called +// you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell) + - BABLM( BABL_DEL_RIGHT_1C , T(X),END ); - BABLM( BABL_DEL_LEFT_WORD , T(D),T(G),T(E),END ); - BABLM( BABL_DEL_RIGHT_WORD , T(D),T(W),END ); BABLM( BABL_GO_LEFT_1C , T(H), END ); BABLM( BABL_GO_RIGHT_1C , T(L), END ); BABLM( BABL_GO_LEFT_WORD , T(B),END ); BABLM( BABL_GO_RIGHT_WORD , T(W), END ); BABLM( BABL_GO_START_LINE , D(LSFT), T(6),U(LSFT), END ); //^ - BABLM( BABL_GO_START_DOC , T(G),T(G) ,END ); BABLM( BABL_GO_END_LINE , D(LSFT), T(4),U(LSFT) , END ); //$ + BABLM( BABL_GO_START_DOC , T(G),T(G) ,END ); BABLM( BABL_GO_END_DOC , D(LSFT), T(G),U(LSFT),END ); BABLM( BABL_GO_NEXT_LINE , T(J), END ); BABLM( BABL_GO_PREV_LINE, T(K), END ); - BABLM( BABL_PGDN ,D(LCTRL), T(F), U(LCTRL), END ); - BABLM( BABL_PGUP , D(LCTRL), T(B), U(LCTRL), END ); + BABLM( BABL_PGDN ,D(LCTL), T(F), U(LCTL), END ); + BABLM( BABL_PGUP , D(LCTL), T(B), U(LCTL), END ); + BABLM( BABL_DEL_RIGHT_1C , T(X),END ); + BABLM( BABL_DEL_LEFT_WORD , T(D),T(G),T(E),END ); + BABLM( BABL_DEL_RIGHT_WORD , T(D),T(W),END ); + BABLM( BABL_DEL_TO_LINE_END, T(D),D(LSFT), T(4),U(LSFT) ,END ); // d$ + BABLM( BABL_DEL_TO_LINE_START, T(D),D(LSFT), T(6),U(LSFT) ,END ); #ifndef BABL_MOVEMENTONLY BABLM( BABL_UNDO , T(U), END ); BABLM( BABL_REDO , D(LCTL), T(R), U(LCTL), END ); @@ -268,6 +340,27 @@ But that requires even more clever preprocessor foo. BABLM( BABL_SWITCH_APP_LAST ,END ); BABLM(BABL_CLOSE_APP, D(LSFT), T(SCLN),U(LSFT), T(Q), D(RSFT), T(1),U(RSFT), END ); BABLM(BABL_HELP, D(LSFT), T(SCLN),U(LSFT),T(H),END); // start search in help +#ifndef BABL_NOBROWSER +/* you get to figure this out + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), T(PLUS), U(LGUI),END ); + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif #endif return MACRO_NONE; #endif @@ -278,37 +371,62 @@ But that requires even more clever preprocessor foo. #ifdef READMUX_MODE // Readline command line editing + tmux windowing // I havent decided how much to do readline and how much tmux + if ( BABL_READLINE == shortcut ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; } case READMUX_MODE: - BABLM( BABL_DEL_RIGHT_1C , D(LCTL), T(D), U(LCTL),END ); + + BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); + BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); + BABLM( BABL_GO_LEFT_WORD , D(LALT), T(B), U(LALT), END ); + BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END ); + BABLM( BABL_GO_START_LINE , D(LCTL), T(A), U(LCTL), END ); + BABLM( BABL_GO_END_LINE , D(LCTL), T(E), U(LCTL), END ); + //BABLM( BABL_GO_START_DOC ,END );// tmux? + //BABLM( BABL_GO_END_DOC ,END ); // tmux? + BABLM( BABL_GO_NEXT_LINE , D(LCTL), T(N), U(LCTL), END ); + BABLM( BABL_GO_PREV_LINE , D(LCTL), T(P), U(LCTL), END ); + BABLM( BABL_PGDN , T(PGDN), END ); + BABLM( BABL_PGUP , T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_1C , D(LCTL), T(D), U(LCTL),END ); BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(W), U(LCTL), END ); - BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END ); - BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); - BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END ); - BABLM( BABL_GO_LEFT_WORD , D(LALT), T(B), U(LALT), END ); - BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END ); - BABLM( BABL_GO_START_LINE , D(LCTRL), T(A), U(LCTRL), END ); - BABLM( BABL_GO_START_DOC ,END );// tmux? - BABLM( BABL_GO_END_LINE , D(LCTRL), T(E), U(LCTRL), END ); - BABLM( BABL_GO_END_DOC ,END ); // tmux? - BABLM( BABL_GO_NEXT_LINE , D(LCTRL), T(N), U(LCTRL), END ); - BABLM( BABL_GO_PREV_LINE , D(LCTRL), T(P), U(LCTRL), END ); - BABLM( BABL_PGDN , T(PGDN), END ); - BABLM( BABL_PGUP , T(PGUP), END ); + BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END ); + BABLM( BABL_DEL_TO_LINE_END, D(LCTL), T(K), U(LCTL), END ); + BABLM( BABL_DEL_TO_LINE_START, D(LCTL), T(U), U(LCTL), END ); #ifndef BABL_MOVEMENTONLY - BABLM( BABL_UNDO , D(LALT), T(R), U(LALT) , END ); - BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably - BABLM( BABL_CUT , D(LCTL), T(K), U(LCTL), END ); // wrong half the time - BABLM( BABL_COPY ,END ); - BABLM( BABL_PASTE , D(LCTL), T(Y), U(LCTL), END ); - BABLM( BABL_SELECT_ALL ,D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); - BABLM( BABL_FIND , D(LCTRL), T(R), U(LCTRL), END ); // search history - BABLM(BABL_FIND_NEXT, D(LCTRL), T(S), U(LCTRL), END ); - BABLM( BABL_FIND_REPLACE ,END ); - BABLM( BABL_RUNAPP , D(LCTRL), T(B), U(LCTRL), T(C),END ); //tmux - BABLM( BABL_SWITCH_APP_NEXT , D(LCTRL), T(B), U(LCTRL), T(N),END ); //tmux - BABLM( BABL_SWITCH_APP_LAST , D(LCTRL), T(B), U(LCTRL), T(P),END ); //tmux - BABLM( BABL_CLOSE_APP , D(LCTRL), T(B), U(LCTRL), T(D),END); // usually what I want - BABLM( BABL_HELP ,END ); + BABLM( BABL_UNDO , D(LALT), T(R), U(LALT) , END ); + BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably + BABLM( BABL_CUT , D(LCTL), T(K), U(LCTL), END ); // wrong half the time + //BABLM( BABL_COPY ,END ); + BABLM( BABL_PASTE , D(LCTL), T(Y), U(LCTL), END ); + BABLM( BABL_SELECT_ALL , D(LCTL), T(A), T(K), T(Y), U(LCTL) , END ); + BABLM( BABL_FIND , D(LCTL), T(R), U(LCTL), END ); // search history + BABLM(BABL_FIND_NEXT, D(LCTL), T(S), U(LCTL), END ); + //BABLM( BABL_FIND_REPLACE ,END ); + BABLM( BABL_RUNAPP , D(LCTL), T(B), U(LCTL), T(C),END ); //tmux + BABLM( BABL_SWITCH_APP_NEXT , D(LCTL), T(B), U(LCTL), T(N),END ); //tmux + BABLM( BABL_SWITCH_APP_LAST , D(LCTL), T(B), U(LCTL), T(P),END ); //tmux + BABLM( BABL_CLOSE_APP , D(LCTL), T(B), U(LCTL), T(D),END); // usually what I want + // BABLM( BABL_HELP ,END ); +#ifndef BABL_NOBROWSER +/* Add lynx shortcuts? + BABLM( BABL_BROWSER_NEW_TAB, D(LGUI), T(T), U(LGUI),END ); + BABLM( BABL_BROWSER_CLOSE_TAB, D(LGUI), T(W), U(LGUI),END ); + BABLM( BABL_BROWSER_REOPEN_LAST_TAB, D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END ); + BABLM( BABL_BROWSER_NEXT_TAB, D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END ); + BABLM( BABL_BROWSER_PREV_TAB, D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END ); + BABLM( BABL_BROWSER_URL_BAR, D(LGUI), T(L), U(LGUI),END ); + BABLM( BABL_BROWSER_FORWARD, D(LGUI), T(RIGHT), U(LGUI),END ); + BABLM( BABL_BROWSER_BACK, D(LGUI), T(LEFT), U(LGUI),END ); + BABLM( BABL_BROWSER_FIND, D(LGUI), T(F), U(LGUI),END ); + BABLM( BABL_BROWSER_BOOKMARK, D(LGUI), T(D), U(LGUI),END ); + //BABLM( BABL_BROWSER_DEV_TOOLS, T(F12), U(LGUI),END ); // EDGE + BABLM( BABL_BROWSER_DEV_TOOLS, D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END ); // Chrome + // Chrome + BABLM( BABL_BROWSER_RELOAD, D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache + BABLM( BABL_BROWSER_FULLSCREEN, D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F + BABLM( BABL_BROWSER_ZOOM_IN, D(LGUI), T(PLUS), U(LGUI),END ); + BABLM( BABL_BROWSER_ZOOM_OUT, D(LGUI), T(MINS), U(LGUI),END ); +*/ +#endif #endif return MACRO_NONE; diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h index 313fa80ec4..67153fb0d8 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h @@ -10,6 +10,8 @@ and jeebak & algernon's keymap #ifndef _babblePaste_h_included__ #define _babblePaste_h_included__ #include "action_layer.h" +#include "quantum_keycodes.h" +#include "config.h" #ifdef USE_BABLPASTE @@ -39,23 +41,28 @@ and jeebak & algernon's keymap /* Macros handled by babblepaste. Most should be available for all platforms. Whatever isn't defined will NOP */ enum { - - // Movement - BABL_DEL_RIGHT_1C= BABL_START_NUM, - BABL_DEL_LEFT_WORD, - BABL_DEL_RIGHT_WORD, - BABL_GO_LEFT_1C, +// Movement macros + // left & right + BABL_GO_LEFT_1C= BABL_START_NUM, BABL_GO_RIGHT_1C, - BABL_GO_LEFT_WORD, + BABL_GO_LEFT_WORD, BABL_GO_RIGHT_WORD, BABL_GO_START_LINE, BABL_GO_END_LINE, + // now up & down BABL_GO_START_DOC, BABL_GO_END_DOC, BABL_GO_NEXT_LINE, BABL_GO_PREV_LINE, BABL_PGDN, BABL_PGUP, + // And the delete options + //BABL_DEL_LEFT_1C == backspace, so why bother. + BABL_DEL_RIGHT_1C, // usually = Del + BABL_DEL_LEFT_WORD, + BABL_DEL_RIGHT_WORD, + BABL_DEL_TO_LINE_END, // delete from cursor to end of line + BABL_DEL_TO_LINE_START, // delete from cursor to begining line #ifndef BABL_MOVEMENTONLY // Cut & Paste BABL_UNDO, @@ -64,20 +71,142 @@ enum { BABL_COPY, BABL_PASTE, BABL_SELECT_ALL, - // GUI or app + /* not yet implemented + BABL_SWAP_LAST2C // swap last characters before the cursor + BABL_SWAP_LAST2W // Swap the last two words before the cursor + */ + // find & replace BABL_FIND, BABL_FIND_NEXT, BABL_FIND_REPLACE, + // GUI or app BABL_RUNAPP, BABL_SWITCH_APP_NEXT, BABL_SWITCH_APP_LAST, // previous BABL_CLOSE_APP, - BABL_HELP + BABL_HELP, + +#ifndef BABL_NOBROWSER + BABL_BROWSER_NEW_TAB, + BABL_BROWSER_CLOSE_TAB, + BABL_BROWSER_REOPEN_LAST_TAB, + BABL_BROWSER_NEXT_TAB, + BABL_BROWSER_PREV_TAB, + BABL_BROWSER_URL_BAR, + BABL_BROWSER_FORWARD, + BABL_BROWSER_BACK, + BABL_BROWSER_FIND, + BABL_BROWSER_BOOKMARK, + BABL_BROWSER_DEV_TOOLS, // hard one to remember + BABL_BROWSER_RELOAD, + BABL_BROWSER_FULLSCREEN, + BABL_BROWSER_ZOOM_IN, + BABL_BROWSER_ZOOM_OUT, + #endif + +#endif +// Macros for mode switching +#ifdef MS_MODE + BABL_WINDOWS, +#endif +#ifdef MAC_MODE + BABL_MAC, +#endif +#ifdef LINUX_MODE + BABL_LINUX, +#endif +#ifdef EMACS_MODE + BABL_EMACS, +#endif +#ifdef VI_MODE + BABL_VI, +#endif +#ifdef READMUX_MODE + BABL_READLINE, +#endif + + }; -// How many macros/ how many array elements? -#define BABL_NUM_MACROS 28 +// BUG, used to jump to babble functiion. Surely there is a way to calculate size of enum? +#define BABL_NUM_MACROS 48 + 4 // 48 + # of defined modes. + +/* And all the shorthand keymap ready versions */ +// First the mode switching macros +#ifdef MS_MODE +#define B_WIN M(BABL_WINDOWS) +#endif +#ifdef MAC_MODE +#define B_MAC M(BABL_MAC) +#endif +#ifdef LINUX_MODE +#define B_LNX M(BABL_LINUX) +#endif +#ifdef EMACS_MODE +#define B_EMAX M(BABL_EMACS) +#endif +#ifdef VI_MODE +#define B_VI M(BABL_VI) +#endif +#ifdef READMUX_MODE +#define B_READ M(BABL_READLINE) +#endif + +// and all the movement & action. + +#define B_L1C M(BABL_GO_LEFT_1C) +#define B_R1C M(BABL_GO_RIGHT_1C) +#define B_L1W M(BABL_GO_LEFT_WORD) +#define B_R1W M(BABL_GO_RIGHT_WORD) +#define B_GSOL M(BABL_GO_START_LINE) +#define B_GEOL M(BABL_GO_END_LINE) +#define B_GTOP M(BABL_GO_START_DOC) +#define B_GEND M(BABL_GO_END_DOC) +#define B_DOWN M(BABL_GO_NEXT_LINE) +#define B_UP M(BABL_GO_PREV_LINE) +#define B_PGDN M(BABL_PGDN) +#define B_PGUP M(BABL_PGUP) +//#define B_BKSP M(BABL_DEL_LEFT_1C) == backspace so why bother. +#define B_DEL M(BABL_DEL_RIGHT_1C) // usually = Del +#define B_DLW M(BABL_DEL_LEFT_WORD) +#define B_DRW M(BABL_DEL_RIGHT_WORD) +#define B_DEOL M(BABL_DEL_TO_LINE_END) // delete from cursor to end of line +#define B_DSOL M(BABL_DEL_TO_LINE_START) // delete from cursor to begining line +#define B_UNDO M(BABL_UNDO) +#define B_REDO M(BABL_REDO) +#define B_CUT M(BABL_CUT) +#define B_COPY M(BABL_COPY) +#define B_PAST M(BABL_PASTE) +#define B_SELA M(BABL_SELECT_ALL) +#define B_FIND M(BABL_FIND) +#define B_FINDN M(BABL_FIND_NEXT) +#define B_FINDR M(BABL_FIND_REPLACE) +#define B_RAPP M(BABL_RUNAPP) +#define B_NAPP M(BABL_SWITCH_APP_NEXT) +#define B_PAPP M(BABL_SWITCH_APP_LAST) // previous +#define B_CAPP M(BABL_CLOSE_APP) +#define B_HELP M(BABL_HELP) +#define B_NTAB M(BABL_BROWSER_NEW_TAB) +#define B_CTAB M(BABL_BROWSER_CLOSE_TAB) +#define B_ROTB M(BABL_BROWSER_REOPEN_LAST_TAB) +#define B_NXTB M(BABL_BROWSER_NEXT_TAB) +#define B_PTAB M(BABL_BROWSER_PREV_TAB) +#define B_NURL M(BABL_BROWSER_URL_BAR) +#define B_BFWD M(BABL_BROWSER_FORWARD) +#define B_BBAK M(BABL_BROWSER_BACK) +#define B_BFND M(BABL_BROWSER_FIND) +#define B_BOOK M(BABL_BROWSER_BOOKMARK) +#define B_BDEV M(BABL_BROWSER_DEV_TOOLS) // hard one to remember +#define B_BRLD M(BABL_BROWSER_RELOAD) +#define B_BFUlL M(BABL_BROWSER_FULLSCREEN) +#define B_ZMIN M(BABL_BROWSER_ZOOM_IN) +#define B_ZMOT M(BABL_BROWSER_ZOOM_OUT) + + + + + /* from action_macro.h diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h index 7ad1b0f0f5..9f9b050944 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -5,23 +5,28 @@ #define USE_BABLPASTE +// Expect to get errors if you comment a feature out and leave it in your keymap. + #ifdef USE_BABLPASTE //define BabblePaste maps // Windows. -//#define MS_MODE 1 -#define MAC_MODE 0 +#define MS_MODE 0 +#define MAC_MODE 1 //aka gnome+KDE //#define LINUX_MODE 2 //#define EMACS_MODE 3 -//#define VI_MODE 4 +#define VI_MODE 4 //#define WORDSTAR_MODE 5 // Readline and tmux #define READMUX_MODE 6 #endif // Uncomment if you need more free flash space -// It removes everything but cursor movement + +// This removes everything but cursor movement //#define BABL_MOVEMENTONLY +// and this just removes browser shortcuts +//#define BABL_NOBROWSER // place overrides here #endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index 3a162db864..a662825475 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -14,13 +14,6 @@ #define _TRAN 5 - - -// adjust babblemode default -extern uint8_t babble_mode; - - - enum layer_keycodes { QWR, CDH, @@ -46,11 +39,6 @@ TRAN enum macro_keycodes { DHPASTE=1, VIBRK, -B_LNX, -B_WIN, -B_MAC, -B_VI, -B_READ , }; @@ -115,24 +103,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), +/* +* |ESC | Win| MAC|RdLn| VI | | | | | | | | | | | | +* -------------------------------------------------------------------------------' +* | | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| +* --------------------------------------------------------------------------- +* | tab | q | w |Find| |pTab |DSOL|DelW| Up |DelW|DEOL| [ | ] | \ | | +* -------------------------------------------------------------------------------' +* |Bak/Mov| a | s | d | |nTab |GSOL| <- | Dwn | -> | EOL | ' | enter |PgUp| +* -------------------------------------------------------------------------------- +* |Lsft |Undo| Cut|Copy|Pste| b | n | m | , | . | / | Rsft| Up| PgDn| +* --------------------------------------------------------------------------------- +* |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| +* --------------------------------------------------------------------------------- +*/ [_MOV] = KEYMAP (\ - ____, M(B_WIN),M(B_MAC),M(B_READ), M(B_VI), ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, M(BABL_UNDO), ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____,RGUI(KC_TAB), ____, ____, RCTL(KC_B), ____, M(BABL_DEL_LEFT_WORD), KC_UP, M(BABL_DEL_RIGHT_WORD), ____, ____, ____, ____, \ - ____, RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____, M(BABL_GO_START_LINE), KC_LEFT,KC_DOWN, KC_RIGHT, M(BABL_GO_END_LINE), ____,____,____,\ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, B_MAC,B_WIN,B_READ, B_VI, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, B_PAPP, B_NAPP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, B_UNDO, ____, B_BFND, ____, B_PTAB, B_DSOL, B_DLW, B_UP, B_DRW, B_DEOL, ____, ____, ____, \ + ____, B_SELA, B_BRLD, ____, ____, B_NXTB, B_GSOL, B_L1C, B_DOWN, B_R1C,B_GEOL, ____, ____, ____,\ + ____, B_UNDO,B_CUT, B_COPY, B_PAST, B_PAST, ____, ____, ____, ____, ____, ____, ____, ____, \ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), [_TRAN] = KEYMAP (\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ -) + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ +) }; const uint16_t PROGMEM fn_actions[] = { @@ -188,6 +190,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { /* If this is in the range of BABL macros, call a separate function */ +/* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ #ifdef USE_BABLPASTE if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { if (record->event.pressed) { // is there a case where this isn't desired? @@ -235,31 +238,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) - -#ifdef USE_BABLPASTE - -#ifdef LINUX_MODE - case B_LNX: - return switch_babble_mode(LINUX_MODE); -#endif -#ifdef MS_MODE - case B_WIN: - return switch_babble_mode(MS_MODE); -#endif -#ifdef MAC_MODE - case B_MAC: - return switch_babble_mode(MAC_MODE); -#endif -#ifdef VI_MODE - case B_VI: - return switch_babble_mode(VI_MODE); -#endif -#ifdef READMUX_MODE - case B_READ: - return switch_babble_mode(READMUX_MODE); -#endif -#endif - default: return MACRO_NONE; @@ -286,10 +264,6 @@ void led_set_user(uint8_t usb_led) { } -macro_t* switch_babble_mode( uint8_t id) { - babble_mode= id; - return MACRO_NONE; //less typing above -} From 89aba30c7f50aa733262f4add253817e2fb84e8a Mon Sep 17 00:00:00 2001 From: milestogo Date: Wed, 8 Mar 2017 01:25:33 -0800 Subject: [PATCH 12/34] fix stupid error w/ mode switch --- .../handwired/MS-sculpt-mobile/babblePaste.c | 38 +++++++++++++------ .../handwired/MS-sculpt-mobile/babblePaste.h | 10 ++++- keyboards/handwired/MS-sculpt-mobile/config.h | 5 +-- .../MS-sculpt-mobile/keymaps/default/Makefile | 2 +- .../keymaps/milestogo/config.h | 10 ++--- .../keymaps/milestogo/keymap.c | 4 +- .../handwired/MS-sculpt-mobile/readme.md | 2 +- keyboards/handwired/MS-sculpt-mobile/rules.mk | 5 ++- 8 files changed, 51 insertions(+), 25 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c index 491a79333e..3a9b86997d 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.c +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.c @@ -19,7 +19,7 @@ uint8_t babble_mode =0 ; macro_t* switch_babble_mode( uint8_t id) { babble_mode= id; - return MACRO_NONE; //less typing above + return MACRO_NONE; //less typing where called } @@ -42,12 +42,32 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { return MACRO_NONE; } */ - switch(babble_mode) { - - + + +#ifdef MS_MODE + if ( BABL_WINDOWS == shortcut ) { return switch_babble_mode(MS_MODE); } +#endif +#ifdef MAC_MODE + if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE); } +#endif +#ifdef LINUX_MODE + if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE); } +#endif + #ifdef READMUX_MODE + if ( BABL_READLINE == shortcut ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; } +#endif +#ifdef VI_MODE + if ( BABL_VI == shortcut ) { return switch_babble_mode(VI_MODE); } +#endif +#ifdef EMACS_MODE + if ( BABL_EMACS == shortcut ) { return switch_babble_mode(EMACS_MODE); } +#endif + + + + switch(babble_mode) { #ifdef MS_MODE - if ( BABL_WINDOWS == shortcut ) { return switch_babble_mode(MS_MODE); } case MS_MODE: BABLM( BABL_GO_LEFT_1C, T(LEFT), END ); @@ -111,7 +131,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef LINUX_MODE - if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE); } case LINUX_MODE: BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); @@ -172,7 +191,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #endif #ifdef MAC_MODE - if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE); } case MAC_MODE: BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); @@ -234,8 +252,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef EMACS_MODE - if ( BABL_EMACS == shortcut ) { return switch_babble_mode(EMACS_MODE); } - case EMACS_MODE: switch(shortcut) { //probably should allow meta to not be ALT @@ -303,7 +319,6 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef VI_MODE - if ( BABL_VI == shortcut ) { return switch_babble_mode(VI_MODE); } case VI_MODE: // you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell) @@ -371,7 +386,8 @@ const macro_t *babblePaste (keyrecord_t *record, uint8_t shortcut) { #ifdef READMUX_MODE // Readline command line editing + tmux windowing // I havent decided how much to do readline and how much tmux - if ( BABL_READLINE == shortcut ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; } + + case READMUX_MODE: BABLM( BABL_GO_LEFT_1C , T(LEFT), END ); diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h index 67153fb0d8..3067c854de 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.h +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.h @@ -18,6 +18,9 @@ and jeebak & algernon's keymap /* *************************** // Uncomment any modes you want. Whatever mode = 0 will be the default on boot +// Expect to get errors if you comment a feature out and leave it in your keymap. + +#define USE_BABLPASTE //#define MS_MODE 0 // Windows. //#define MAC_MODE 1 @@ -26,6 +29,11 @@ and jeebak & algernon's keymap //#define VI_MODE 4 //#define WORDSTAR_MODE 5 //#define READMUX 6 // Readline and tmux + +// This removes everything but cursor movement +//#define BABL_MOVEMENTONLY +// and this just removes browser shortcuts +//#define BABL_NOBROWSER ****************************/ @@ -130,7 +138,7 @@ enum { }; // BUG, used to jump to babble functiion. Surely there is a way to calculate size of enum? -#define BABL_NUM_MACROS 48 + 4 // 48 + # of defined modes. +#define BABL_NUM_MACROS 48+4 // 48 + # of defined modes. /* And all the shorthand keymap ready versions */ // First the mode switching macros diff --git a/keyboards/handwired/MS-sculpt-mobile/config.h b/keyboards/handwired/MS-sculpt-mobile/config.h index d85c5c6233..f89514278d 100644 --- a/keyboards/handwired/MS-sculpt-mobile/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/config.h @@ -25,7 +25,6 @@ along with this program. If not, see . #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 #define MANUFACTURER Microsoftplus -#define PRODUCT sculpt mobile #define DESCRIPTION 6000 /* key matrix size */ @@ -33,14 +32,14 @@ along with this program. If not, see . #define MATRIX_COLS 18 #ifdef ASTAR - +#define PRODUCT sculpt mobile astar /*0 1 2 3 4 5 6 7 8 */ #define MATRIX_ROW_PINS {D7, C6, D4, D0, D1, D3, D2, E2} /* A B C D E F G H I J K L M N O P Q R */ #define MATRIX_COL_PINS {B4, B5, E6, B7, B6, D6, C7, F7, F6, F4,F5, F1,F0, D5, B0, B1, B2, B3} #else - +#define PRODUCT sculpt mobile teensypp /* 0 1 2 3 4 5 6 7 */ #define MATRIX_ROW_PINS { F7,F6,F4,F5,F3,F2,F1,F0} /* A B C D E F G H I J K L M N O P Q R */ diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile index 9d3df5964f..8b829218b2 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/default/Makefile @@ -17,5 +17,5 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR - include ../../../../Makefile + include ../../../../../Makefile endif diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h index 9f9b050944..8cf4202cda 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h @@ -10,15 +10,15 @@ #ifdef USE_BABLPASTE //define BabblePaste maps // Windows. -#define MS_MODE 0 -#define MAC_MODE 1 +#define MAC_MODE 0 +#define MS_MODE 1 //aka gnome+KDE //#define LINUX_MODE 2 //#define EMACS_MODE 3 -#define VI_MODE 4 -//#define WORDSTAR_MODE 5 +#define VI_MODE 3 // Readline and tmux -#define READMUX_MODE 6 +#define READMUX_MODE 2 +//#define WORDSTAR_MODE 5 #endif // Uncomment if you need more free flash space diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index a662825475..3b2f53a0c1 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), /* -* |ESC | Win| MAC|RdLn| VI | | | | | | | | | | | | +* |ESC | MAC| Win|RdLn| VI | | | | | | | | | | | | * -------------------------------------------------------------------------------' * | | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| * --------------------------------------------------------------------------- @@ -192,6 +192,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) /* If this is in the range of BABL macros, call a separate function */ /* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ #ifdef USE_BABLPASTE + if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { if (record->event.pressed) { // is there a case where this isn't desired? @@ -201,6 +202,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } #endif + // MACRODOWN only works in this function switch(id) { case 0: diff --git a/keyboards/handwired/MS-sculpt-mobile/readme.md b/keyboards/handwired/MS-sculpt-mobile/readme.md index 58029b50db..d435b449fb 100644 --- a/keyboards/handwired/MS-sculpt-mobile/readme.md +++ b/keyboards/handwired/MS-sculpt-mobile/readme.md @@ -53,6 +53,6 @@ The Astar mini has all pins exposed , so you can do 18x8 If you want a speaker, LEDs &etc, you'll need to free up a pin. I recommend joining columns R and L to the same pin. -Building - edit rules.mk to set ASTAR=1 or comment it out for teensy2++ +Building - add ASTAR=1 to the compile line or leave out for teensy2++ diff --git a/keyboards/handwired/MS-sculpt-mobile/rules.mk b/keyboards/handwired/MS-sculpt-mobile/rules.mk index 34ac78da81..680389c846 100644 --- a/keyboards/handwired/MS-sculpt-mobile/rules.mk +++ b/keyboards/handwired/MS-sculpt-mobile/rules.mk @@ -1,10 +1,10 @@ -#CFLAGS=-D ASTAR ## Project specific files SRC= babblePaste.c ifdef ASTAR + CFLAGS=-D ASTAR OPT_DEFS += -DBOOTLOADER_SIZE=4096 MCU = atmega32u4 OPT_DEFS += -DCATERINA_BOOTLOADER @@ -40,7 +40,8 @@ BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE ?= no # Audio output on port C6 -USB ?= /dev/cu.usbmodem1421 +USB ?= /dev/cu.usbmodem14141 + upload: build From 88e862e4728343fab4ed7e8dc44ae5594b702955 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Wed, 8 Mar 2017 16:00:23 -0500 Subject: [PATCH 13/34] Update smt keymaps for consistency --- keyboards/lets_split/keymaps/smt/keymap.c | 52 +++---- keyboards/planck/keymaps/smt/keymap.c | 56 ++++---- keyboards/preonic/keymaps/smt/keymap.c | 159 ++++++++++++++-------- keyboards/tv44/keymaps/smt/keymap.c | 24 ++-- 4 files changed, 171 insertions(+), 120 deletions(-) diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c index 5ba5417a96..b7db699fdb 100644 --- a/keyboards/lets_split/keymaps/smt/keymap.c +++ b/keyboards/lets_split/keymaps/smt/keymap.c @@ -28,6 +28,12 @@ enum custom_keycodes { #define _______ KC_TRNS #define XXXXXXX KC_NO +// Custom macros +#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl +#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift +#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty @@ -42,10 +48,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = KEYMAP( \ - ALL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ - CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \ - MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, \ + MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Colemak @@ -60,10 +66,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = KEYMAP( \ - ALL_T(KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ - CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ - SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \ - MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, \ + MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Dvorak @@ -78,28 +84,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_DVORAK] = KEYMAP( \ - ALL_T(KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ - CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, \ - SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT), \ - MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \ + MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT ), /* Lower * ,-----------------------------------------------------------------------------------. * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| + * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_LOWER] = KEYMAP( \ - KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ - KC_DLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_HOME, KC_PGUP, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_END, KC_PGDN, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + CTL_T(KC_DLR), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, _______, _______, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY ), /* Raise @@ -110,14 +116,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | - | / | = | [ | ] | \ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | Play | + * | | | | | | | | | Home |PageDn|PageUp| End | * `-----------------------------------------------------------------------------------' */ [_RAISE] = KEYMAP( \ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ - _______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ - _______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ + _______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS), \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END ), /* Adjust (Lower + Raise) diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c index afc82b49f9..2e1c355477 100644 --- a/keyboards/planck/keymaps/smt/keymap.c +++ b/keyboards/planck/keymaps/smt/keymap.c @@ -31,6 +31,12 @@ enum planck_keycodes { #define _______ KC_TRNS #define XXXXXXX KC_NO +// Custom macros +#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl +#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift +#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty @@ -45,10 +51,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = { - {ALL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, - {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Colemak @@ -63,10 +69,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = { - {ALL_T(KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, - {SFT_T(KC_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)}, - {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -81,17 +87,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_DVORAK] = { - {ALL_T(KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {CTL_T(KC_ESC), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, - {SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, - {MEH_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -99,10 +105,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_LOWER] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_HOME, KC_PGUP}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_END, KC_PGDN}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {CTL_T(KC_DLR), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Raise @@ -113,19 +119,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | - | / | = | [ | ] | \ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | + * | | | | | | | | | Home |PageDn|PageUp| End | * `-----------------------------------------------------------------------------------' */ [_RAISE] = { - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, - {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS)}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END} }, /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | + * | | Reset| | | | | | | | | | Reset| * |------+------+------+------+------+-------------+------+------+------+------+------| * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -135,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_ADJUST] = { - {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c index ba05d9ad53..690feca472 100644 --- a/keyboards/preonic/keymaps/smt/keymap.c +++ b/keyboards/preonic/keymaps/smt/keymap.c @@ -9,15 +9,17 @@ // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. -#define _DVORAK 0 -#define _QWERTY 1 -#define _LOWER 2 -#define _RAISE 3 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 #define _ADJUST 16 enum preonic_keycodes { - DVORAK = SAFE_RANGE, - QWERTY, + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, LOWER, RAISE, BACKLIT @@ -27,28 +29,13 @@ enum preonic_keycodes { #define _______ KC_TRNS #define XXXXXXX KC_NO -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// Custom macros +#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl +#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift +#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) -/* Dvorak - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | - | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_DVORAK] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, - {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, - {SFT_T(KC_ESC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_ENT)}, - {ALL_T(KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} -}, +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty * ,-----------------------------------------------------------------------------------. @@ -60,24 +47,66 @@ 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_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, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | 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] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | - | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT}, + {MEH_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| * |------+------+------+------+------+------|------+------+------+------+------+------| * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -85,11 +114,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_LOWER] = { - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, - {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_HOME, KC_PGUP}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_END, KC_PGDN}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {CTL_T(KC_DLR), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Raise @@ -102,24 +131,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | - | / | = | [ | ] | \ | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | + * | | | | | | | | | Home |PageDn|PageUp| End | * `-----------------------------------------------------------------------------------' */ [_RAISE] = { - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, - {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, - {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {_______, _______, _______, _______, _______, _______, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, _______, _______, _______, _______, _______, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS)}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END} }, /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | Reset| | | | | | | | | | Del | + * | | Reset| | | | | | | | | | Reset| * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty| | | | + * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -128,8 +157,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = { {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, - {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, DVORAK, QWERTY, _______, _______, _______}, + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -145,8 +174,9 @@ float tone_startup[][2] = { {NOTE_B6, 8} }; -float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_goodbye[][2] = SONG(GOODBYE_SOUND); @@ -160,15 +190,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 @@ -178,6 +199,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); diff --git a/keyboards/tv44/keymaps/smt/keymap.c b/keyboards/tv44/keymaps/smt/keymap.c index de5ce03e25..532e74de08 100644 --- a/keyboards/tv44/keymaps/smt/keymap.c +++ b/keyboards/tv44/keymaps/smt/keymap.c @@ -32,8 +32,8 @@ enum planck_keycodes { // Custom macros #define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl #define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift -#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper -#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt +#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt (Ctrl+Alt+Shift) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -117,13 +117,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LOWER] = KEYMAP_TV45( /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ - KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL , +ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL , /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ - KC_DLR , KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_ASTR, KC_4, KC_5, KC_6, KC_DOT, KC_PGUP , +CTL_T(KC_DLR), KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_ASTR, KC_4, KC_5, KC_6, KC_DOT, KC_PGUP , /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ - KC_EQL , KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_SLSH, KC_1, KC_2, KC_3, KC_UP, KC_PGDN , +SFT_T(KC_EQL), KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_SLSH, KC_1, KC_2, KC_3, KC_UP, SFT_T(KC_PGDN), /*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ - BACKLIT , _______ , _______ , KC_HOME , KC_END , _______ , KC_LEFT, KC_DOWN, KC_RGHT ), +ALT_T(BACKLIT), _______ , _______ , KC_HOME , KC_END , _______ , KC_LEFT, KC_DOWN, KC_RGHT ), /*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/ /* Raise @@ -139,18 +139,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RAISE] = KEYMAP_TV45( /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ - KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , +ALL_T(KC_TILD),KC_EXLM,KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE , +CTL_T(KC_F1), KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE , /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS , + SFT_T(KC_F7), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, SFT_T(KC_BSLS), /*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/ - BACKLIT , _______ , _______ , KC_MPLY , KC_MNXT , _______ , KC_MUTE, KC_VOLD, KC_VOLU ), +ALT_T(BACKLIT), _______ , _______ , KC_MPLY , KC_MNXT , _______ , KC_MUTE, KC_VOLD, KC_VOLU ), /*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/ /* Adjust (Lower + Raise) * ,---------+------+------+------+------+------+------+------+------+------+------+---------. - * | | Reset| | | | | | | | | | Del | + * | | Reset| | | | | | | | | | Reset | * |---------`------`------`------`------`------`------`------`------`------`------`---------| * | | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |----------`------`------`------`------`------`------`------`------`------`------`--------| @@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = KEYMAP_TV45( /*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/ - _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , + _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET , /*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/ _______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______ , /*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/ From b5bfb5104b63766ab9a54509302a3f4b0b1d7b16 Mon Sep 17 00:00:00 2001 From: milestogo Date: Wed, 8 Mar 2017 15:48:39 -0800 Subject: [PATCH 14/34] docs for babblepaste --- .../MS-sculpt-mobile/babblePaste.txt | 602 ++++-------------- .../keymaps/milestogo/keymap.c | 10 +- 2 files changed, 123 insertions(+), 489 deletions(-) diff --git a/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt index 6170ec7af5..cf75e153e8 100644 --- a/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt +++ b/keyboards/handwired/MS-sculpt-mobile/babblePaste.txt @@ -1,489 +1,123 @@ -/* A library to output the right key shortcut in any common app. -Given a global variable babble_mode to show the environment and a -key that calls the paste macro, do the right type of paste. -Setting the context is done by another macro, or TBD interaction with the host. + BabblePaste is a library of common macros used to make sure that +you can have one "paste" button on one layer, and it will do the +right thing on any OS or app. Windows=Ctrl-V. Mac = Command-V and so on. -Huge thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts -and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c -*/ - -#include "eeconfig.h" +The babblepaste library looks for the current status in a babble_mode global variable. +To switch modes, run the switch_babble_mode() function, or a pre defined macro. +Currently supported are Windows, OS X, Gnome/kde, Emacs, VI and readline, +across 42+ common macro actions. -// 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 +###To use the library +1) Paste the following into your config.h. + +//////Begin////// +#define USE_BABLPASTE 1 + +#ifdef USE_BABLPASTE +/* define BabblePaste maps. Whatever = 0 will be the default. */ +// MAC_MODE 0 +// MS_MODE 1 +// LINUX_MODE 2 +// EMACS_MODE 3 +// VI_MODE 3 // Readline and tmux -#define READMUX 6 - -// 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; - } - +// READMUX_MODE 2 +// WORDSTAR_MODE 5 #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 + +// Uncomment these to remove options an free up flash space + +// This removes everything but cursor movement +// BABL_MOVEMENTONLY +// and this just removes browser shortcuts +// BABL_NOBROWSER +///////End/////// + +2) Add the following to your keymap in the action_get_macro + +//////Begin////// +#ifdef USE_BABLPASTE + + if( id >= BABL_START_NUM && id < (BABL_START_NUM + BABL_NUM_MACROS ) ) { + if (record->event.pressed) { // is there a case where this isn't desired? + + babblePaste ( record, id ); + return MACRO_NONE; + } + } +#endif +///////End/////// + +3) add Babbelpaste actions to your keymap. See the full list in babblePaste.h, or the +list below +B_L1C // go left 1 char +B_R1C // go Right 1 char + B_L1W //GO_LEFT_1 WORD + B_R1W //BABL_GO_RIGHT_1 WORD + B_GSOL // BABL_GOTO_START of _LINE + B_GEOL // BABL_GOTO_END_LINE + B_GTOP //BABL_GOTO_START_DOC + B_GEND //BABL_GO_END_DOC + B_DOWN //BABL_GO_NEXT_LINE + B_UP // BABL_GO_PREV_LINE + B_PGDN //PGDN + B_PGUP //PGUP +// B_BKSP //backspace so why bother. + B_DEL // DEL_RIGHT_1 Char // usually = Del + B_DLW // DEL_LEFT_ 1 WORD) + B_DRW //DEL_RIGHT_1 WORD + B_DEOL // delete from cursor to end of line + B_DSOL // delete from cursor to begining line + B_UNDO //UNDO + B_REDO // REDO + B_CUT // CUT) + B_COPY // COPY) + B_PAST // PASTE) + B_SELA // SELECT_ALL + B_FIND // FIND) + B_FINDN //FIND_NEXT) + B_FINDR // FIND_REPLACE) + B_RAPP // open application launcher + B_NAPP // switch to next app + B_PAPP // switch to previous app + B_CAPP // CLOSE_APP) + B_HELP // HELP) + B_NTAB // BROWSER_NEW_TAB) + B_CTAB //BROWSER_CLOSE_TAB) + B_ROTB //BROWSER_REOPEN_LAST_TAB) + B_NXTB //BROWSER_NEXT_TAB) + B_PTAB //BROWSER_PREV_TAB) + B_NURL //BROWSER_jump to URL_BAR) + B_BFWD // BROWSER_FORWARD (in history) + B_BBAK //BROWSER_BACK (in history) + B_BFND // BROWSER_FIND) + B_BOOK //BROWSER_New BOOKMARK) + B_BDEV //BROWSER_ Open DEV_TOOLS) // hard one to remember + B_BRLD // BROWSER_RELOAD Page + B_BFUlL // BROWSER_FULLSCREEN) + B_ZMIN // BROWSER_ZOOM_IN) + B_ZMOT //BROWSER_ZOOM_OUT) + + +#### Development notes +-Why a new function? Because it would make the keymap too ugly to put it there. +-Why not return the macro to action_get_macro? Because I kept running into scope problems +and pointers to the wrong type. +-Why not an array of arrays as a lookup instead of a function? That would allow you +to store the lookup table in PROGMEM. True, but that takes more pre-processor skill +than I had. + +-Have you tested this on every platform? No. Submit a patch. + + +### Next steps for someone. +Make it easier to pair macros with modifiers. So key foo will jump to start of line, and +Shift(foo) will jump to the first tab in a browser. + +## Thanks + +Thanks to https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts +and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jeebak/keymap.c +And of course QMK... + diff --git a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c index 3b2f53a0c1..395a9fb470 100644 --- a/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c +++ b/keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c @@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, \ M(VIBRK), KC_CIRC, KC_LCBR, KC_RCBR,KC_AT, KC_PERC, ____, KC_LBRC,KC_LPRN,KC_RPRN,KC_UNDS, ____, ____, ____,\ ____, KC_EXLM, KC_HASH, KC_0, KC_EQL, KC_LCBR, KC_RCBR,KC_MINS,KC_1, KC_PLUS,KC_RBRC, KC_GRV, ____, ____,\ - ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ + ____, KC_SCLN, KC_TILDE, KC_COLN, KC_TILDE, KC_PIPE, KC_DLR, KC_ASTR, ____, KC_DOT , KC_SLSH, ____, ____, ____,\ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____ ), /* @@ -108,11 +108,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * -------------------------------------------------------------------------------' * | | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bakspace| Del| * --------------------------------------------------------------------------- -* | tab | q | w |Find| |pTab |DSOL|DelW| Up |DelW|DEOL| [ | ] | \ | | +* | tab | | |Find| |pTab |DSOL|DelW| Up |DelW|DEOL| [ | ] | \ | | * -------------------------------------------------------------------------------' -* |Bak/Mov| a | s | d | |nTab |GSOL| <- | Dwn | -> | EOL | ' | enter |PgUp| +* |Bak/Mov| | | | |nTab |GSOL| <- | Dwn | -> | EOL | ' | enter |PgUp| * -------------------------------------------------------------------------------- -* |Lsft |Undo| Cut|Copy|Pste| b | n | m | , | . | / | Rsft| Up| PgDn| +* |Lsft |Undo| Cut|Copy|Pste| | | | | | / | Rsft| Up| PgDn| * --------------------------------------------------------------------------------- * |Lctl |Lgui |Lalt | Space/Sym | GUI | Sym | Rctl |Left|Down|Rght| * --------------------------------------------------------------------------------- @@ -189,7 +189,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { -/* If this is in the range of BABL macros, call a separate function */ +/* If id is in the range of BABL macros, call the babl function */ /* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/ #ifdef USE_BABLPASTE From 8d4bc714e4e69dd89b0ef7f1bad60e6ca6c0f791 Mon Sep 17 00:00:00 2001 From: Stephen Tudor Date: Wed, 8 Mar 2017 23:16:58 -0500 Subject: [PATCH 15/34] Update smt keymap READMEs --- keyboards/lets_split/keymaps/smt/keymap.c | 108 ++++++++++----------- keyboards/lets_split/keymaps/smt/readme.md | 88 +++++++++++++++++ keyboards/planck/keymaps/smt/keymap.c | 4 +- keyboards/planck/keymaps/smt/readme.md | 91 ++++++++++------- keyboards/preonic/keymaps/smt/keymap.c | 4 +- keyboards/preonic/keymaps/smt/readme.md | 91 ++++++++++------- 6 files changed, 259 insertions(+), 127 deletions(-) create mode 100644 keyboards/lets_split/keymaps/smt/readme.md diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c index b7db699fdb..c4bdb7ebc4 100644 --- a/keyboards/lets_split/keymaps/smt/keymap.c +++ b/keyboards/lets_split/keymaps/smt/keymap.c @@ -37,15 +37,15 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `-----------------------------------------' */ [_QWERTY] = KEYMAP( \ HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ @@ -55,15 +55,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | R | S | T | D | | H | N | E | I | O | " | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `-----------------------------------------' */ [_COLEMAK] = KEYMAP( \ HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ @@ -73,15 +73,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | - | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | O | E | U | I | | D | H | T | N | S | - | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------' `-----------------------------------------' */ [_DVORAK] = KEYMAP( \ HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ @@ -91,15 +91,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Lower - * ,-----------------------------------------------------------------------------------. - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | 0 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | $ | F1 | F2 | F3 | F4 | F5 | | F6 | 4 | 5 | 6 | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | | F12 | 1 | 2 | 3 | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------' `-----------------------------------------' */ [_LOWER] = KEYMAP( \ ALL_T(KC_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ @@ -109,15 +109,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Raise - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | | | | | _ | ? | + | { | } | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | - | / | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | Home |PageDn|PageUp| End | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | _ | ? | + | { | } | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | - | / | = | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | Home |PageDn|PageUp| End | + * `-----------------------------------------' `-----------------------------------------' */ [_RAISE] = KEYMAP( \ ALL_T(KC_TILD), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \ @@ -127,15 +127,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), /* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Reset| - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' + * ,-----------------------------------------. ,-----------------------------------------. + * | | Reset| | | | | | | | | | | Reset| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-----------------------------------------' `-----------------------------------------' */ [_ADJUST] = KEYMAP( \ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \ diff --git a/keyboards/lets_split/keymaps/smt/readme.md b/keyboards/lets_split/keymaps/smt/readme.md new file mode 100644 index 0000000000..20bc662f0a --- /dev/null +++ b/keyboards/lets_split/keymaps/smt/readme.md @@ -0,0 +1,88 @@ +# smt's Let's Split keymap + +This keymap is ported from my Planck keymap. + + +## Qwerty + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc | A | S | D | F | G | | H | J | K | L | ; | " | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Colemak + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc | A | R | S | T | D | | H | N | E | I | O | " | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift| Z | X | C | V | B | | K | M | , | . | / |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------. ,-----------------------------------------. +| Tab | " | , | . | P | Y | | F | G | C | R | L | Bksp | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Esc | A | O | E | U | I | | D | H | T | N | S | - | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------' `-----------------------------------------' +``` + +## Lower + +``` +,-----------------------------------------. ,-----------------------------------------. +| 0 | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| $ | F1 | F2 | F3 | F4 | F5 | | F6 | 4 | 5 | 6 | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | F7 | F8 | F9 | F10 | F11 | | F12 | 1 | 2 | 3 | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | Next | Vol- | Vol+ | Play | +`-----------------------------------------' `-----------------------------------------' +``` + +## Raise + +``` +,-----------------------------------------. ,-----------------------------------------. +| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | _ | ? | + | { | } | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | - | / | = | [ | ] | \ | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | Home |PageDn|PageUp| End | +`-----------------------------------------' `-----------------------------------------' +``` + +## Adjust (Lower + Raise) + +``` +,-----------------------------------------. ,-----------------------------------------. +| | Reset| | | | | | | | | | | Reset| +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | |Aud on|Audoff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak| | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | | | | | +|------+------+------+------+------+------| |------+------+------+------+------+------| +| | | | | | | | | | | | | | +`-----------------------------------------' `-----------------------------------------' +``` diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c index 2e1c355477..708f699da9 100644 --- a/keyboards/planck/keymaps/smt/keymap.c +++ b/keyboards/planck/keymaps/smt/keymap.c @@ -97,9 +97,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| + * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' diff --git a/keyboards/planck/keymaps/smt/readme.md b/keyboards/planck/keymaps/smt/readme.md index 0e955a5742..dc7c9cf9f1 100644 --- a/keyboards/planck/keymaps/smt/readme.md +++ b/keyboards/planck/keymaps/smt/readme.md @@ -4,27 +4,62 @@ This keymap is primarily based on the default Planck keymap. Notable differences from the default are: -1. **Dvorak by default** +- **[Mod-Tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys** - I happen to type in Dvorak, and prefer that layer to be the default on my keyboard. This is easy enough to switch around with Qwerty, Colemak, or whatever. + - `Esc/Ctrl` -2. **Right Shift** + I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... - I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. + - `Enter/Shift` - Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome! + I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. -3. Escape + - `Tab/Hyper` (Super+Ctrl+Shift+Alt) - I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... + It's great to be able to use Tab as a custom modifier key. I tend to use [Hyper](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) commands for various OS-specific operations depending on what machine I'm working on. -4. Backtick + - `Backtick/Meh` (Ctrl+Shift+Alt) - I don't currently have LEDs on any of my keyboards, and even if I did, I don't think I would want their controls on a base layer. + Why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. The "Meh" mapping is just a less-cool "Hyper"; the same, just without Super. - So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. +- **Swapped responsibilities of "lower" and "raise" layers** -## Dvorak (default) + I prefer to use symbols via the "raise" layer, and numbers via the "lower" layer. + +- **Removed Plover layer** + + I don't intend to use stenography anytime soon, so Plover just didn't have a place in my keymap. + + +## Qwerty + +``` +,-----------------------------------------------------------------------------------. +| Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc | A | S | D | F | G | H | J | K | L | ; | " | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| Z | X | C | V | B | N | M | , | . | / |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + +## Colemak + +``` +,-----------------------------------------------------------------------------------. +| Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc | A | R | S | T | D | H | N | E | I | O | " | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| Z | X | C | V | B | K | M | , | . | / |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + +## Dvorak ``` ,-----------------------------------------------------------------------------------. @@ -38,31 +73,17 @@ Notable differences from the default are: `-----------------------------------------------------------------------------------' ``` -## Qwerty (same as default) - -``` -,-----------------------------------------------------------------------------------. -| 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 |Raise | Left | Down | Up |Right | -`-----------------------------------------------------------------------------------' -``` - ## Lower -This is where I put the number row, a numpad cluster, function keys, and some light navigation via Home/End/PageUp/PageDn. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. +This is where I put the number row, a numpad cluster, function keys, and media controls. ``` ,-----------------------------------------------------------------------------------. -| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | |------+------+------+------+------+-------------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| +| $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | |------+------+------+------+------+------|------+------+------+------+------+------| -| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| +| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | Next | Vol- | Vol+ | Play | `-----------------------------------------------------------------------------------' @@ -70,7 +91,7 @@ This is where I put the number row, a numpad cluster, function keys, and some li ## Raise -As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. +As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. I've also added cursorkeys to correspond to the arrows. I haven't completely filled this layer, which leaves room for future mappings and macros. @@ -82,21 +103,21 @@ I haven't completely filled this layer, which leaves room for future mappings an |------+------+------+------+------+------|------+------+------+------+------+------| | | | | | | | - | / | = | [ | ] | \ | |------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | Next | Vol- | Vol+ | Play | +| | | | | | | | | Home |PageDn|PageUp| End | `-----------------------------------------------------------------------------------' ``` ## Adjust (Lower + Raise) -Utility layer. This is where I'd switch to Qwerty, or ~~fool around with~~ adjust the audio/music settings. +Utility layer. This is where I'd switch between Qwerty and Dvorak, ~~fool around with~~ adjust the audio/music settings, or put the Planck into bootloader mode. ``` ,-----------------------------------------------------------------------------------. -| | Reset| | | | | | | | | | Del | +| | Reset| | | | | | | | | | Reset| |------+------+------+------+------+-------------+------+------+------+------+------| -| | | |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty| | | | +| | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | |------+------+------+------+------+------|------+------+------+------+------+------| -| |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | +| |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | | | | | `-----------------------------------------------------------------------------------' diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c index 690feca472..a10deb7500 100644 --- a/keyboards/preonic/keymaps/smt/keymap.c +++ b/keyboards/preonic/keymaps/smt/keymap.c @@ -106,9 +106,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| + * | $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| + * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' diff --git a/keyboards/preonic/keymaps/smt/readme.md b/keyboards/preonic/keymaps/smt/readme.md index 016da7b01f..2ec2603f3e 100644 --- a/keyboards/preonic/keymaps/smt/readme.md +++ b/keyboards/preonic/keymaps/smt/readme.md @@ -4,43 +4,34 @@ This keymap is primarily based on the default Preonic keymap, which in turn is d Notable differences from the default are: -1. **Dvorak by default** +- **[Mod-Tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys** - I happen to type in Dvorak, and prefer that layer to be the default on my keyboard. This is easy enough to switch around with Qwerty, Colemak, or whatever. + - `Esc/Ctrl` -2. **Right Shift** + I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... - I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. + - `Enter/Shift` - Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome! + I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory. -3. Escape + - `Tab/Hyper` (Super+Ctrl+Shift+Alt) - I am experimenting with using Left Shift as a mod-tap key for Escape, similar to how I use the Enter key. It's set up like this on my Minivan, so in the interest of consistency... + It's great to be able to use Tab as a custom modifier key. I tend to use [Hyper](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) commands for various OS-specific operations depending on what machine I'm working on. -4. Backtick + - `Backtick/Meh` (Ctrl+Shift+Alt) - I don't currently have LEDs on any of my keyboards, and even if I did, I don't think I would want their controls on a base layer. + Why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. The "Meh" mapping is just a less-cool "Hyper"; the same, just without Super. - So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for me. +- **Swapped responsibilities of "lower" and "raise" layers** -## Dvorak (default) + I prefer to use symbols via the "raise" layer, and numbers via the "lower" layer. -``` -,-----------------------------------------------------------------------------------. -| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | -|------+------+------+------+------+------+------+------+------+------+------+------| -| Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | -|------+------+------+------+------+-------------+------+------+------+------+------| -| Esc | A | O | E | U | I | D | H | T | N | S | - | -|------+------+------+------+------+------|------+------+------+------+------+------| -| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | -|------+------+------+------+------+------+------+------+------+------+------+------| -| ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | -`-----------------------------------------------------------------------------------' -``` +- **Removed Plover layer** -## Qwerty (same as default) + I don't intend to use stenography anytime soon, so Plover just didn't have a place in my keymap. + + +## Qwerty ``` ,-----------------------------------------------------------------------------------. @@ -56,19 +47,51 @@ Notable differences from the default are: `-----------------------------------------------------------------------------------' ``` +## Colemak + +``` +,-----------------------------------------------------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc | A | R | S | T | D | H | N | E | I | O | " | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| Z | X | C | V | B | K | M | , | . | / |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + +## Dvorak + +``` +,-----------------------------------------------------------------------------------. +| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | +|------+------+------+------+------+------+------+------+------+------+------+------| +| Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | +|------+------+------+------+------+-------------+------+------+------+------+------| +| Esc | A | O | E | U | I | D | H | T | N | S | - | +|------+------+------+------+------+------|------+------+------+------+------+------| +| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | +|------+------+------+------+------+------+------+------+------+------+------+------| +| ` | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | +`-----------------------------------------------------------------------------------' +``` + ## Lower -This is where I put the number row, a numpad cluster, function keys, and some light navigation via Home/End/PageUp/PageDn. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. +This is where I put the number row, a numpad cluster, function keys, and media controls. Like the "Raise" layer, the top row is redundant to help with Planck compatibility. ``` ,-----------------------------------------------------------------------------------. | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | |------+------+------+------+------+------+------+------+------+------+------+------| -| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | |------+------+------+------+------+-------------+------+------+------+------+------| -| | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | Home |PageUp| +| $ | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | | | |------+------+------+------+------+------|------+------+------+------+------+------| -| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | End |PageDn| +| | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | | | |------+------+------+------+------+------+------+------+------+------+------+------| | | | | | | | | Next | Vol- | Vol+ | Play | `-----------------------------------------------------------------------------------' @@ -76,7 +99,7 @@ This is where I put the number row, a numpad cluster, function keys, and some li ## Raise -As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. +As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets really helps a lot. I've also added cursorkeys to correspond to the arrows. I haven't completely filled this layer, which leaves room for future mappings and macros. @@ -90,21 +113,21 @@ I haven't completely filled this layer, which leaves room for future mappings an |------+------+------+------+------+------|------+------+------+------+------+------| | | | | | | | - | / | = | [ | ] | \ | |------+------+------+------+------+------+------+------+------+------+------+------| -| | | | | | | | Next | Vol- | Vol+ | Play | +| | | | | | | | | Home |PageDn|PageUp| End | `-----------------------------------------------------------------------------------' ``` ## Adjust (Lower + Raise) -Utility layer. This is where I'd switch to Qwerty, or ~~fool around with~~ adjust the audio/music settings. +Utility layer. This is where I'd switch between Qwerty and Dvorak, ~~fool around with~~ adjust the audio/music settings, or put the Preonic into bootloader mode. ``` ,-----------------------------------------------------------------------------------. | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |------+------+------+------+------+------+------+------+------+------+------+------| -| | Reset| | | | | | | | | | Del | +| | Reset| | | | | | | | | | Reset| |------+------+------+------+------+-------------+------+------+------+------+------| -| | | |Aud on|AudOff|AGnorm|AGswap|Dvorak|Qwerty| | | | +| | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | |------+------+------+------+------+------|------+------+------+------+------+------| | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | | |------+------+------+------+------+------+------+------+------+------+------+------| From 06e4b3fe1abbc938678a3e3abcddf5658ca5dca2 Mon Sep 17 00:00:00 2001 From: Kevin Hogeland Date: Thu, 9 Mar 2017 02:40:01 -0800 Subject: [PATCH 16/34] Colemak layout for Clueboard --- keyboards/clueboard/keymaps/colemak/keymap.c | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 keyboards/clueboard/keymaps/colemak/keymap.c diff --git a/keyboards/clueboard/keymaps/colemak/keymap.c b/keyboards/clueboard/keymaps/colemak/keymap.c new file mode 100644 index 0000000000..6b1fc7c9c6 --- /dev/null +++ b/keyboards/clueboard/keymaps/colemak/keymap.c @@ -0,0 +1,83 @@ +#include "clueboard.h" + +// Helpful defines +#define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) +#define _______ KC_TRNS + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _BL 0 +#define _FL 1 +#define _CL 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = KEYMAP( + F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \ + KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, \ + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \ + KC_LCTL, MO(_FL), KC_LGUI,KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT), + + /* Keymap _FL: Function Layer + */ +[_FL] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_CAPS, BL_STEP, \ + _______, _______, _______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END, _______, _______, _______, _______, \ + KC_DEL, _______, MO(_CL),_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, _______, _______, _______, \ + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \ + _______, _______, _______,_______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END), + + /* Keymap _CL: Control layer + */ +[_CL] = KEYMAP( + _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \ + _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD, \ + _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \ + MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI, \ + _______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI), +}; + +/* This is a list of user defined functions. F(N) corresponds to item N + of this list. + */ +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(0), // Calls action_function() +}; + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t mods_pressed; + + switch (id) { + case 0: + /* Handle the combined Grave/Esc key + */ + mods_pressed = get_mods()&GRAVE_MODS; // Check to see what mods are pressed + + if (record->event.pressed) { + /* The key is being pressed. + */ + if (mods_pressed) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + /* The key is being released. + */ + if (mods_pressed) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} From 718b9648061be99a82e6dddfdebd3eb2e5386f19 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 13:30:32 -0500 Subject: [PATCH 17/34] =?UTF-8?q?Add=20hexwire=20layout=20for=20Let?= =?UTF-8?q?=E2=80=99s=20Split?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/lets_split/keymaps/hexwire/config.h | 29 +++ keyboards/lets_split/keymaps/hexwire/keymap.c | 230 ++++++++++++++++++ 2 files changed, 259 insertions(+) create mode 100644 keyboards/lets_split/keymaps/hexwire/config.h create mode 100644 keyboards/lets_split/keymaps/hexwire/keymap.c diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h new file mode 100644 index 0000000000..cd766cc4f1 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +#define USE_SERIAL + +#define EE_HANDS + + +#ifdef SUBPROJECT_rev1 + #include "../../rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "../../rev2/config.h" +#endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c new file mode 100644 index 0000000000..403987dbe8 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -0,0 +1,230 @@ +#include "lets_split.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _FN3 5 +#define _FN4 6 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + FN3, + FN4, + ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen +#define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen +#define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen +#define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \ + MT(MOD_LCTL,KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT,KC_ENT) , \ + LT(_FN3,KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | - | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINS, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ + KC_DEL, KC_CAPP, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, \ + _______, KC_CPYP, _______, _______, KC_DOWN, KC_LCBR, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, \ + _______, _______, _______, _______, _______, _______, KC_DEL, KC_P0, KC_PDOT, _______, _______, _______ \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ + KC_DEL, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL , KC_HOME, _______, _______, _______, KC_BSLS, \ + _______, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_PLUS, KC_END, _______, _______, _______, _______, \ + _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______ \ +), + +[_FN3] = KEYMAP( \ + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F9, KC_F10, KC_F11, \ + _______, _______, _______, _______, _______, KC_F8, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} \ No newline at end of file From 74c6c3d277bc76c319b5d28d578fbda9009efcbf Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 7 Mar 2017 15:39:59 -0500 Subject: [PATCH 18/34] Convert keymap to compact version --- .../keymaps/hexwire/compact_keymap.h | 23 +++ keyboards/lets_split/keymaps/hexwire/keymap.c | 183 ++++++++---------- 2 files changed, 102 insertions(+), 104 deletions(-) create mode 100644 keyboards/lets_split/keymaps/hexwire/compact_keymap.h diff --git a/keyboards/lets_split/keymaps/hexwire/compact_keymap.h b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h new file mode 100644 index 0000000000..d9d063fbfe --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/compact_keymap.h @@ -0,0 +1,23 @@ +#ifndef COMPACT_KEYMAP_H +#define COMPACT_KEYMAP_H + +#define COMPACT_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ + k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ + ) \ + { \ + { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05 }, \ + { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15 }, \ + { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25 }, \ + { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35 }, \ + { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45 }, \ + { KC_##k50, KC_##k51, KC_##k52, KC_##k53, KC_##k54, KC_##k55 }, \ + { KC_##k60, KC_##k61, KC_##k62, KC_##k63, KC_##k64, KC_##k65 }, \ + { KC_##k70, KC_##k71, KC_##k72, KC_##k73, KC_##k74, KC_##k75 } \ + } + +#define KC_ KC_TRNS + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c index 403987dbe8..bae2e687e6 100644 --- a/keyboards/lets_split/keymaps/hexwire/keymap.c +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -1,13 +1,10 @@ #include "lets_split.h" #include "action_layer.h" #include "eeconfig.h" +#include "compact_keymap.h" extern keymap_config_t keymap_config; -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. #define _QWERTY 0 #define _COLEMAK 1 #define _DVORAK 2 @@ -28,113 +25,91 @@ enum custom_keycodes { ADJUST, }; -// Fillers to make layering more clear #define _______ KC_TRNS -#define XXXXXXX KC_NO #define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen #define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen #define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen #define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen +#define KC_X0 MT(MOD_LCTL, KC_ESC) +#define KC_X1 LOWER +#define KC_X2 RAISE +#define KC_X3 LT(_FN3, KC_GRV) +#define KC_X4 MT(MOD_LSFT, KC_ENT) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_QWERTY] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \ - MT(MOD_LCTL,KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MT(MOD_LSFT,KC_ENT) , \ - LT(_FN3,KC_GRV), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), + [_QWERTY] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, X4 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_COLEMAK] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS, \ - KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), + [_COLEMAK] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , R , S , T , D , H , N , E , I , O ,QUOT, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , K , M ,COMM,DOT ,SLSH, X4 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), -/* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | - | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | ` | Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_DVORAK] = KEYMAP( \ - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_MINS, \ - KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ - KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), + [_DVORAK] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , O , E , U , I , D , H , R , N , S ,SLSH, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT,SCLN, Q , J , K , X , B , M , W , V , Z , X4 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), -/* Lower - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_LOWER] = KEYMAP( \ - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ - KC_DEL, KC_CAPP, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE, \ - _______, KC_CPYP, _______, _______, KC_DOWN, KC_LCBR, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______, \ - _______, _______, _______, _______, _______, _______, KC_DEL, KC_P0, KC_PDOT, _______, _______, _______ \ -), + [_LOWER] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,CAPP,LEFT,RGHT, UP ,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , DEL , P0 ,PDOT, , , + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), -/* Raise - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = KEYMAP( \ - _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ - KC_DEL, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL , KC_HOME, _______, _______, _______, KC_BSLS, \ - _______, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_PLUS, KC_END, _______, _______, _______, _______, \ - _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______ \ -), + [_RAISE] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, + //|----+----+----+----+----+----| |----+----+----+----+----+----| + ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , ,MUTE, , , , , , , + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), -[_FN3] = KEYMAP( \ - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_UP, KC_F9, KC_F10, KC_F11, \ - _______, _______, _______, _______, _______, KC_F8, KC_F12, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -), + [_FN3] = COMPACT_KEYMAP( + //,----+----+----+----+----+----. ,----+----+----+----+----+----. + F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , + //|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , + //`----+----+----+----+----+----' `----+----+----+----+----+----' + ), /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. @@ -147,12 +122,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -) + [_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + ) }; @@ -227,4 +202,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; } return true; -} \ No newline at end of file +} From 3df35f712eca0fddcd3aabf62de7f32d8a5cb11b Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 9 Mar 2017 09:52:33 -0500 Subject: [PATCH 19/34] Add readme for layout --- .../lets_split/keymaps/hexwire/README.md | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 keyboards/lets_split/keymaps/hexwire/README.md diff --git a/keyboards/lets_split/keymaps/hexwire/README.md b/keyboards/lets_split/keymaps/hexwire/README.md new file mode 100644 index 0000000000..2dc0446466 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/README.md @@ -0,0 +1,108 @@ +Hexwire's Let's Split Layout +============================ + +### Changes from default layout + +- Main layer + - The right space bar key has been changed to backspace, as I only hit space with my left thumb + - Backtick is at the lower right and also serves goes to the 3rd function layer when held + - Enter key acts as shift when held + - Escape key acts as control when held + - Minus key at upper right +- Lower layer + - Numbers are on the lower layer, to make it easier to use a numpad on the right hand + - Arrow keys + - Straight and curly brackets in the middle two columns + - Screenshot keys for MacOS +- Upper layer + - Symbols are on the upper layer + - Media keys + - Page Up/Down, Home/End +- 3rd function layer + - Function keys + +## Layouts + +### Qwerty + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, +|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, X4 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Colemak + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , R , S , T , D , H , N , E , I , O ,QUOT, +|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT, Z , X , C , V , B , K , M ,COMM,DOT ,SLSH, X4 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Dvorak + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + X0 , A , O , E , U , I , D , H , R , N , S ,SLSH, +|----+----+----+----+----+----| |----+----+----+----+----+----| + LSFT,SCLN, Q , J , K , X , B , M , W , V , Z , X4 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + X3 ,LCTL,LALT,LGUI, X1 ,SPC , BSPC, X2 ,LEFT,DOWN, UP ,RGHT +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Lower + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,CAPP,LEFT,RGHT, UP ,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE, +|----+----+----+----+----+----| |----+----+----+----+----+----| + ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , DEL , P0 ,PDOT, , , +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### Raise + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, , +|----+----+----+----+----+----| |----+----+----+----+----+----| + DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, +|----+----+----+----+----+----| |----+----+----+----+----+----| + ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , ,MUTE, , , , , , , +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` + +### 3rd function layer + +``` +,----+----+----+----+----+----. ,----+----+----+----+----+----. + F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , , +|----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , +`----+----+----+----+----+----' `----+----+----+----+----+----' +``` From a8f872e728cde990f7b272306480eedc96a7f3f7 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 9 Mar 2017 09:21:25 -0500 Subject: [PATCH 20/34] Initial commit for handwired numpad --- keyboards/handwired/numpad20/Makefile | 3 + keyboards/handwired/numpad20/config.h | 162 ++++++++++++++++++ .../numpad20/keymaps/default/keymap.c | 16 ++ keyboards/handwired/numpad20/numpad20.c | 8 + keyboards/handwired/numpad20/numpad20.h | 20 +++ keyboards/handwired/numpad20/rules.mk | 83 +++++++++ 6 files changed, 292 insertions(+) create mode 100644 keyboards/handwired/numpad20/Makefile create mode 100644 keyboards/handwired/numpad20/config.h create mode 100644 keyboards/handwired/numpad20/keymaps/default/keymap.c create mode 100644 keyboards/handwired/numpad20/numpad20.c create mode 100644 keyboards/handwired/numpad20/numpad20.h create mode 100644 keyboards/handwired/numpad20/rules.mk diff --git a/keyboards/handwired/numpad20/Makefile b/keyboards/handwired/numpad20/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/numpad20/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/numpad20/config.h b/keyboards/handwired/numpad20/config.h new file mode 100644 index 0000000000..847f2111f5 --- /dev/null +++ b/keyboards/handwired/numpad20/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBB80 +#define PRODUCT_ID 0x0504 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Hexwire +#define PRODUCT Numpad 20 +#define DESCRIPTION Handwired 4x5 numpad + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F6, B1, B3, B6, B5 } +#define MATRIX_COL_PINS { D1, D0, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/handwired/numpad20/keymaps/default/keymap.c b/keyboards/handwired/numpad20/keymaps/default/keymap.c new file mode 100644 index 0000000000..37031206a9 --- /dev/null +++ b/keyboards/handwired/numpad20/keymaps/default/keymap.c @@ -0,0 +1,16 @@ +#include "numpad20.h" + +#define KC_ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = COMPACT_KEYMAP( + LEFT,RGHT, UP ,DOWN, \ + P7 , P8 , P9 ,PLUS, \ + P4 , P5 , P6 ,MINS, \ + P1 , P2 , P3 , ENT, \ + P0 ,DOT ,RGHT, TAB \ + ) +}; + +const uint16_t PROGMEM fn_actions[] = { +}; diff --git a/keyboards/handwired/numpad20/numpad20.c b/keyboards/handwired/numpad20/numpad20.c new file mode 100644 index 0000000000..101cf2cb4b --- /dev/null +++ b/keyboards/handwired/numpad20/numpad20.c @@ -0,0 +1,8 @@ +#include "numpad20.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} diff --git a/keyboards/handwired/numpad20/numpad20.h b/keyboards/handwired/numpad20/numpad20.h new file mode 100644 index 0000000000..191979be0d --- /dev/null +++ b/keyboards/handwired/numpad20/numpad20.h @@ -0,0 +1,20 @@ +#ifndef NUMPAD20_H +#define NUMPAD20_H + +#include "quantum.h" + +#define COMPACT_KEYMAP( \ + K00, K01, K02, K03, \ + K10, K11, K12, K13, \ + K20, K21, K22, K23, \ + K30, K31, K32, K33, \ + K40, K41, K42, K43 \ + ) { \ + { KC_##K00, KC_##K01, KC_##K02, KC_##K03 }, \ + { KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \ + { KC_##K20, KC_##K21, KC_##K22, KC_##K23 }, \ + { KC_##K30, KC_##K31, KC_##K32, KC_##K33 }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_##K43 } \ +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/numpad20/rules.mk b/keyboards/handwired/numpad20/rules.mk new file mode 100644 index 0000000000..e897ef2523 --- /dev/null +++ b/keyboards/handwired/numpad20/rules.mk @@ -0,0 +1,83 @@ + +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +avrdude: build + ls /dev/tty* > /tmp/1; \ + echo "Reset your Pro Micro now"; \ + while [[ -z $$USB ]]; do \ + sleep 1; \ + ls /dev/tty* > /tmp/2; \ + USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ + done; \ + avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude From 20a48e0198b02a246dce2b729c14809ccaa471c6 Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Thu, 9 Mar 2017 12:02:05 -0500 Subject: [PATCH 21/34] Add handwired 5x13 ortholinear keyboard --- keyboards/handwired/ortho5x13/Makefile | 3 + keyboards/handwired/ortho5x13/config.h | 162 ++++++++++ .../ortho5x13/keymaps/default/keymap.c | 289 ++++++++++++++++++ keyboards/handwired/ortho5x13/ortho5x13.c | 8 + keyboards/handwired/ortho5x13/ortho5x13.h | 36 +++ keyboards/handwired/ortho5x13/rules.mk | 83 +++++ 6 files changed, 581 insertions(+) create mode 100644 keyboards/handwired/ortho5x13/Makefile create mode 100644 keyboards/handwired/ortho5x13/config.h create mode 100644 keyboards/handwired/ortho5x13/keymaps/default/keymap.c create mode 100644 keyboards/handwired/ortho5x13/ortho5x13.c create mode 100644 keyboards/handwired/ortho5x13/ortho5x13.h create mode 100644 keyboards/handwired/ortho5x13/rules.mk diff --git a/keyboards/handwired/ortho5x13/Makefile b/keyboards/handwired/ortho5x13/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/ortho5x13/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/config.h b/keyboards/handwired/ortho5x13/config.h new file mode 100644 index 0000000000..f85159596c --- /dev/null +++ b/keyboards/handwired/ortho5x13/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xBB80 +#define PRODUCT_ID 0x050D +#define DEVICE_VER 0x0001 +#define MANUFACTURER Hexwire +#define PRODUCT Ortho 5x13 +#define DESCRIPTION Handwired 5x13 ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 13 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4 } +#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c new file mode 100644 index 0000000000..c1262a83d7 --- /dev/null +++ b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c @@ -0,0 +1,289 @@ +#include "ortho5x13.h" +#include "action_layer.h" +#include "eeconfig.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + BACKLIT +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +#define KC_L1 LOWER +#define KC_L2 RAISE + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,------------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | + * |------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | + * |------+------+------+------+------+-------------+------+------+------+------+------+------| + * | ` | A | S | D | F | G | H | J | K | L | ; | ' | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | Up | + * |------+------+------+------+------+------+------+------+------+------+------+------+------| + * | Hyper| Ctrl | Alt | GUI |Lower | Space |Raise | Bksp |Shift | Left | Down |Right | + * `------------------------------------------------------------------------------------------' + */ +[_QWERTY] = COMPACT_KEYMAP( + //,----+----+----+----+----+----+----+----+----+----+----+----+----. + ESC , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS,EQL , + //|----+----+----+----+----+----+----+----+----+----+----+----+----| + TAB , Q , W , E , R , T , Y , U , I , O , P ,LBRC,RBRC, + //|----+----+----+----+----+----+----+----+----+----+----+----+----| + GRV , A , S , D , F , G , H , J , K , L ,SCLN,QUOT,BSLS, + //|----+----+----+----+----+----+----+----+----+----+----+----+----| + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,ENT , UP , + //|----+----+----+----+----+---------+----+----+----+----+----+----| + HYPR,LCTL,LALT,LGUI, L1 , SPACE , L2 ,BSPC,RSFT,LEFT,RGHT,DOWN + //`----+----+----+----+----+---------+----+----+----+----+----+----' + ), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Musoff|Mus on| | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12}, + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = { + {NOTE_B5, 20}, + {NOTE_B6, 8}, + {NOTE_DS6, 20}, + {NOTE_B6, 8} +}; + +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); + +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + } + return true; +}; + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/ortho5x13.c b/keyboards/handwired/ortho5x13/ortho5x13.c new file mode 100644 index 0000000000..cf8352cc43 --- /dev/null +++ b/keyboards/handwired/ortho5x13/ortho5x13.c @@ -0,0 +1,8 @@ +#include "ortho5x13.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} diff --git a/keyboards/handwired/ortho5x13/ortho5x13.h b/keyboards/handwired/ortho5x13/ortho5x13.h new file mode 100644 index 0000000000..d442212fe9 --- /dev/null +++ b/keyboards/handwired/ortho5x13/ortho5x13.h @@ -0,0 +1,36 @@ +#ifndef ORTHO5X13_H +#define ORTHO5X13_H + +#include "quantum.h" + +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \ + { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b, k3c }, \ + { k40, k41, k42, k43, k44, k45, KC_NO, k47, k48, k49, k4a, k4b, k4c } \ +} + +#define COMPACT_KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ + { KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, KC_##k0c }, \ + { KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, KC_##k1c }, \ + { KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, KC_##k2c }, \ + { KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k35, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b, KC_##k3c }, \ + { KC_##k40, KC_##k41, KC_##k42, KC_##k43, KC_##k44, KC_##k45, KC_NO, KC_##k47, KC_##k48, KC_##k49, KC_##k4a, KC_##k4b, KC_##k4c } \ +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/ortho5x13/rules.mk b/keyboards/handwired/ortho5x13/rules.mk new file mode 100644 index 0000000000..e897ef2523 --- /dev/null +++ b/keyboards/handwired/ortho5x13/rules.mk @@ -0,0 +1,83 @@ + +# MCU name +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +avrdude: build + ls /dev/tty* > /tmp/1; \ + echo "Reset your Pro Micro now"; \ + while [[ -z $$USB ]]; do \ + sleep 1; \ + ls /dev/tty* > /tmp/2; \ + USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ + done; \ + avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude From 8b09fd8b55f94f3e88609ed2196270ea9b678b5e Mon Sep 17 00:00:00 2001 From: Lukas Stiebig Date: Thu, 9 Mar 2017 19:41:14 +0100 Subject: [PATCH 22/34] readme keymap.h to quantum_keycodes.h Changed the quantum/keymap.h to quantum/quantum_keycodes.h because this seems to be the file where they keycodes are defined. --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 21bb79a49d..7ce3d03757 100644 --- a/readme.md +++ b/readme.md @@ -35,5 +35,5 @@ This is not a tiny project. While this is the main readme, there are many other * The readme for your own keyboard: This is found under `keyboards//`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on. * The list of possible keycodes you can use in your keymap is actually spread out in a few different places: * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes. - * [quantum/keymap.h](quantum/keymap.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `keymap.h` is where they're actually defined. + * [quantum/quantum_keycodes.h](quantum/quantum_keycodes.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `quantum_keycodes.h` is where they're actually defined. * The [TMK documentation](doc/TMK_README.md). QMK is based on TMK, and this explains how it works internally. From e66b31a648080ec7dde4a265014bf71dfd6a4114 Mon Sep 17 00:00:00 2001 From: Brendan Johan Lee Date: Sat, 11 Mar 2017 12:22:38 +0100 Subject: [PATCH 23/34] [deadcyclo layout] Added second unicode layer, more sane layer switches --- .../images/deadcyclo-base-layout.png | Bin 79488 -> 97053 bytes .../deadcyclo-layer-2-media-and-mouse.png | Bin 62258 -> 66254 bytes .../images/deadcyclo-layer-3-navigation.png | Bin 58886 -> 0 bytes .../images/deadcyclo-layer-3-unicode.png | Bin 0 -> 73624 bytes .../images/deadcyclo-layer-4-unicode-2.png | Bin 0 -> 66132 bytes keyboards/ergodox/keymaps/deadcyclo/keymap.c | 84 ++++++++++++++---- keyboards/ergodox/keymaps/deadcyclo/readme.md | 9 +- 7 files changed, 73 insertions(+), 20 deletions(-) delete mode 100644 keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png create mode 100644 keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-unicode.png create mode 100644 keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-4-unicode-2.png diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-base-layout.png index 2c03af58186308c91864bad7f9a57f41bd196629..273a49778e69342b28bda0b667dba784ff2fff89 100644 GIT binary patch literal 97053 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 Ci#k;R literal 79488 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

rLOym?3c@ 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 D@(@@v diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png index a267ff23d223eff976ce032965d301886d759825..798952aa917e3a2767933d463f492adde62c7143 100644 GIT binary patch literal 66254 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 z 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 F0swo#SY-eJ diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-3-navigation.png deleted file mode 100644 index c8c90cf5c4fae139592d6a19dd28f89472a751c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58886 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 z 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

!v^%F0BD)YciuJy{5kS9-` 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

Boibx;uaU`~4nt?0jKiq3~)wr`eZZ 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 Date: Sat, 11 Mar 2017 12:27:46 +0100 Subject: [PATCH 24/34] [deadcyclo layout] fix an error in layer illustration --- .../deadcyclo-layer-2-media-and-mouse.png | Bin 66254 -> 65740 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png b/keyboards/ergodox/keymaps/deadcyclo/images/deadcyclo-layer-2-media-and-mouse.png index 798952aa917e3a2767933d463f492adde62c7143..5930e38acaeebcca1effd70e47116c135869966e 100644 GIT binary patch literal 65740 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 bd%OQLmB|`Dz2#^n4wCnD^>bP0l+XkK)2=}S literal 66254 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 z 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 Date: Mon, 13 Mar 2017 12:12:09 -0400 Subject: [PATCH 25/34] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 21bb79a49d..7871a12cbf 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ # Quantum Mechanical Keyboard Firmware -[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/jackhumbert/qmk_firmware) [![Gitter](https://badges.gitter.im/qmk/qmk_firmware.svg)](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware) [![Gitter](https://badges.gitter.im/qmk/qmk_firmware.svg)](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). From 52ea58805a74fd4310f3c6a26271245001127cce Mon Sep 17 00:00:00 2001 From: Danny Nguyen Date: Tue, 14 Mar 2017 09:51:48 -0400 Subject: [PATCH 26/34] Add RGB underglow, move keys to allow Adjust layer to be reached --- keyboards/lets_split/keymaps/hexwire/Makefile | 1 + keyboards/lets_split/keymaps/hexwire/README.md | 6 +++--- keyboards/lets_split/keymaps/hexwire/config.h | 6 ++++++ keyboards/lets_split/keymaps/hexwire/keymap.c | 10 +++++----- 4 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 keyboards/lets_split/keymaps/hexwire/Makefile diff --git a/keyboards/lets_split/keymaps/hexwire/Makefile b/keyboards/lets_split/keymaps/hexwire/Makefile new file mode 100644 index 0000000000..1e3cebb145 --- /dev/null +++ b/keyboards/lets_split/keymaps/hexwire/Makefile @@ -0,0 +1 @@ +RGBLIGHT_ENABLE = yes diff --git a/keyboards/lets_split/keymaps/hexwire/README.md b/keyboards/lets_split/keymaps/hexwire/README.md index 2dc0446466..edf2b66276 100644 --- a/keyboards/lets_split/keymaps/hexwire/README.md +++ b/keyboards/lets_split/keymaps/hexwire/README.md @@ -75,7 +75,7 @@ Hexwire's Let's Split Layout |----+----+----+----+----+----| |----+----+----+----+----+----| ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , |----+----+----+----+----+----| |----+----+----+----+----+----| - , , , , , , DEL , P0 ,PDOT, , , + , , , , , , DEL , , P0 ,PDOT, , `----+----+----+----+----+----' `----+----+----+----+----+----' ``` @@ -87,9 +87,9 @@ Hexwire's Let's Split Layout |----+----+----+----+----+----| |----+----+----+----+----+----| DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, |----+----+----+----+----+----| |----+----+----+----+----+----| - ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , + MUTE,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , |----+----+----+----+----+----| |----+----+----+----+----+----| - , , , ,MUTE, , , , , , , + , , , , , , , , , , , `----+----+----+----+----+----' `----+----+----+----+----+----' ``` diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index cd766cc4f1..b45214fe08 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -20,6 +20,12 @@ along with this program. If not, see . #define EE_HANDS +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 8 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 #ifdef SUBPROJECT_rev1 #include "../../rev1/config.h" diff --git a/keyboards/lets_split/keymaps/hexwire/keymap.c b/keyboards/lets_split/keymaps/hexwire/keymap.c index bae2e687e6..796a1fcab0 100644 --- a/keyboards/lets_split/keymaps/hexwire/keymap.c +++ b/keyboards/lets_split/keymaps/hexwire/keymap.c @@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|----+----+----+----+----+----| |----+----+----+----+----+----| ,CPYP, , ,DOWN,LCBR, RCBR, P1 , P2 , P3 ,MINS, , //|----+----+----+----+----+----| |----+----+----+----+----+----| - , , , , , , DEL , P0 ,PDOT, , , + , , , , , , DEL , , P0 ,PDOT, , //`----+----+----+----+----+----' `----+----+----+----+----+----' ), @@ -93,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|----+----+----+----+----+----| |----+----+----+----+----+----| DEL ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, //|----+----+----+----+----+----| |----+----+----+----+----+----| - ,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , + MUTE,MSTP,MPLY,VOLD,PGDN,MINS, PLUS,END , , , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| - , , , ,MUTE, , , , , , , + , , , , , , , , , , , //`----+----+----+----+----+----' `----+----+----+----+----+----' ), @@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | + * | | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn| | | * |------+------+------+------+------+-------------+------+------+------+------+------| * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| @@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ From 2e34d4bd85cc748c48e907154ea438f3d9653430 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 15 Mar 2017 10:57:24 -0400 Subject: [PATCH 27/34] update for infinity --- keyboards/ergodox/keymaps/guni/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/guni/keymap.c b/keyboards/ergodox/keymaps/guni/keymap.c index f33829b8a4..9d9191f627 100644 --- a/keyboards/ergodox/keymaps/guni/keymap.c +++ b/keyboards/ergodox/keymaps/guni/keymap.c @@ -170,7 +170,7 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) if (id == TEENSY_KEY) { clear_keyboard(); print("\n\nJump to bootloader... "); - _delay_ms(250); + wait_ms(250); bootloader_jump(); // should not return print("not supported.\n"); } From c043d1cc4709fa03e91942d9b769278994985af2 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 15 Mar 2017 23:49:38 -0400 Subject: [PATCH 28/34] Update config.h --- keyboards/lets_split/keymaps/hexwire/config.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index b45214fe08..3d600d64d7 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -32,4 +32,7 @@ along with this program. If not, see . #endif #ifdef SUBPROJECT_rev2 #include "../../rev2/config.h" -#endif \ No newline at end of file +#endif +#ifdef SUBPROJECT_rev2fliphalf + #include "../../rev2fliphalf/config.h" +#endif From c36a4496eb190c72c492000f38ab4e98a3681fe4 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 15 Mar 2017 23:51:56 -0400 Subject: [PATCH 29/34] Update config.h --- keyboards/lets_split/keymaps/hexwire/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/lets_split/keymaps/hexwire/config.h b/keyboards/lets_split/keymaps/hexwire/config.h index 3d600d64d7..983f8e352e 100644 --- a/keyboards/lets_split/keymaps/hexwire/config.h +++ b/keyboards/lets_split/keymaps/hexwire/config.h @@ -21,6 +21,7 @@ along with this program. If not, see . #define EE_HANDS #undef RGBLED_NUM +#define RGB_DI_PIN B0 #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 #define RGBLIGHT_HUE_STEP 8 From 9e0ca927f950d1d396e3f45f02e0a3e7dd5b0fff Mon Sep 17 00:00:00 2001 From: tengg Date: Wed, 22 Mar 2017 00:03:30 -0400 Subject: [PATCH 30/34] fixed a bug related to mod + Grave with combined ESC/Grave key This only applies to keymaps that has combined esc/grave. Here we call it theKEY. Think about the motion when we do shift + theKEY (typing ~), or CMD + theKEY (switching window on MAC). Based on the original code, we must do following sequence: press shift -> press theKEY -> release theKEY -> release shift. However, it is very possible and natural that we do this stroke sequence instead: press shift -> press theKEY -> release shift -> release theKEY. If we do the 2nd stroke sequence, the code will del_key(ESC) instead of (GRV) when we release theKEY. This caused some inconvenient issues and ghost typing. By adding a flag, this issue is eliminated and will not affect any other functions. --- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index 59f7ff2436..bb1a5d3cb5 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mods_flag; switch (id) { case 0: @@ -62,6 +63,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { */ if (mods_pressed) { add_key(KC_GRV); + mod_flag = true; send_keyboard_report(); } else { add_key(KC_ESC); @@ -70,8 +72,9 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { del_key(KC_GRV); + mod_flag = false; send_keyboard_report(); } else { del_key(KC_ESC); From a89998b977ccb707767149c0fa4bbf614d4eefea Mon Sep 17 00:00:00 2001 From: tengg Date: Wed, 22 Mar 2017 00:28:59 -0400 Subject: [PATCH 31/34] fix typo --- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index bb1a5d3cb5..bd9a76dc86 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -49,7 +49,7 @@ const uint16_t PROGMEM fn_actions[] = { }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t mods_pressed; + static uint8_t mod_pressed; static bool mods_flag; switch (id) { From 3cba7a43d976be973a4fe32a058b98f092f2e26e Mon Sep 17 00:00:00 2001 From: tengg Date: Wed, 22 Mar 2017 00:33:44 -0400 Subject: [PATCH 32/34] typo fixed --- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index bd9a76dc86..4a18e9a758 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -49,8 +49,8 @@ const uint16_t PROGMEM fn_actions[] = { }; void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { - static uint8_t mod_pressed; - static bool mods_flag; + static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: From 452949f9139a04d46748e6abc03e92d65d74eb30 Mon Sep 17 00:00:00 2001 From: skullY Date: Tue, 21 Mar 2017 22:06:47 -0700 Subject: [PATCH 33/34] Add #1170 to all the clueboard keymaps --- keyboards/clueboard/keymaps/caps_fn/keymap.c | 5 ++++- keyboards/clueboard/keymaps/colemak/keymap.c | 5 ++++- keyboards/clueboard/keymaps/default/keymap.c | 5 ++++- keyboards/clueboard/keymaps/mac_optimized/keymap.c | 4 ++-- keyboards/clueboard/keymaps/mouse_keys/keymap.c | 5 ++++- keyboards/clueboard/keymaps/shift_fn/keymap.c | 5 ++++- keyboards/clueboard/keymaps/skully/keymap.c | 5 ++++- keyboards/clueboard/keymaps/unix_optimized/keymap.c | 5 ++++- keyboards/clueboard/keymaps/win_optimized/keymap.c | 5 ++++- 9 files changed, 34 insertions(+), 10 deletions(-) diff --git a/keyboards/clueboard/keymaps/caps_fn/keymap.c b/keyboards/clueboard/keymaps/caps_fn/keymap.c index 37f00e8d80..01779446ce 100644 --- a/keyboards/clueboard/keymaps/caps_fn/keymap.c +++ b/keyboards/clueboard/keymaps/caps_fn/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static boot mod_flag; switch (id) { case 0: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/colemak/keymap.c b/keyboards/clueboard/keymaps/colemak/keymap.c index 6b1fc7c9c6..42c85ff9d8 100644 --- a/keyboards/clueboard/keymaps/colemak/keymap.c +++ b/keyboards/clueboard/keymaps/colemak/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/default/keymap.c b/keyboards/clueboard/keymaps/default/keymap.c index 37f00e8d80..7fad9c1b21 100644 --- a/keyboards/clueboard/keymaps/default/keymap.c +++ b/keyboards/clueboard/keymaps/default/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/keymaps/mac_optimized/keymap.c index 4a18e9a758..7ea02d27e8 100644 --- a/keyboards/clueboard/keymaps/mac_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/mac_optimized/keymap.c @@ -62,8 +62,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { - add_key(KC_GRV); mod_flag = true; + add_key(KC_GRV); send_keyboard_report(); } else { add_key(KC_ESC); @@ -73,8 +73,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being released. */ if (mod_flag) { - del_key(KC_GRV); mod_flag = false; + del_key(KC_GRV); send_keyboard_report(); } else { del_key(KC_ESC); diff --git a/keyboards/clueboard/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/keymaps/mouse_keys/keymap.c index a9c5cebd0c..d3108d1e2b 100644 --- a/keyboards/clueboard/keymaps/mouse_keys/keymap.c +++ b/keyboards/clueboard/keymaps/mouse_keys/keymap.c @@ -60,6 +60,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: @@ -71,6 +72,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -80,7 +82,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/shift_fn/keymap.c b/keyboards/clueboard/keymaps/shift_fn/keymap.c index f21b9b5895..c4fae03698 100644 --- a/keyboards/clueboard/keymaps/shift_fn/keymap.c +++ b/keyboards/clueboard/keymaps/shift_fn/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/skully/keymap.c b/keyboards/clueboard/keymaps/skully/keymap.c index 295090352d..077d214fac 100644 --- a/keyboards/clueboard/keymaps/skully/keymap.c +++ b/keyboards/clueboard/keymaps/skully/keymap.c @@ -47,6 +47,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: @@ -58,6 +59,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -67,7 +69,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/unix_optimized/keymap.c b/keyboards/clueboard/keymaps/unix_optimized/keymap.c index 9fbd772405..7c1359954b 100644 --- a/keyboards/clueboard/keymaps/unix_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/unix_optimized/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { diff --git a/keyboards/clueboard/keymaps/win_optimized/keymap.c b/keyboards/clueboard/keymaps/win_optimized/keymap.c index a85f0824f1..c5553ff1fb 100644 --- a/keyboards/clueboard/keymaps/win_optimized/keymap.c +++ b/keyboards/clueboard/keymaps/win_optimized/keymap.c @@ -50,6 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; + static bool mod_flag; switch (id) { case 0: @@ -61,6 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { /* The key is being pressed. */ if (mods_pressed) { + mod_flag = true; add_key(KC_GRV); send_keyboard_report(); } else { @@ -70,7 +72,8 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { } else { /* The key is being released. */ - if (mods_pressed) { + if (mod_flag) { + mod_flag = false; del_key(KC_GRV); send_keyboard_report(); } else { From 7a9437a2e3a2597e8eef1ea293bfb3c394f588b9 Mon Sep 17 00:00:00 2001 From: skullY Date: Tue, 21 Mar 2017 22:24:34 -0700 Subject: [PATCH 34/34] Fix a typo --- keyboards/clueboard/keymaps/caps_fn/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/clueboard/keymaps/caps_fn/keymap.c b/keyboards/clueboard/keymaps/caps_fn/keymap.c index 01779446ce..7fad9c1b21 100644 --- a/keyboards/clueboard/keymaps/caps_fn/keymap.c +++ b/keyboards/clueboard/keymaps/caps_fn/keymap.c @@ -50,7 +50,7 @@ const uint16_t PROGMEM fn_actions[] = { void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint8_t mods_pressed; - static boot mod_flag; + static bool mod_flag; switch (id) { case 0: