Send string keycode tweaks (#7471)

This commit is contained in:
fauxpark 2019-11-26 18:16:58 +11:00 committed by Drashna Jaelre
parent a2cedf4555
commit 5a6737a778
10 changed files with 58 additions and 45 deletions

View File

@ -22,10 +22,10 @@ void matrix_scan_user(void) {
SEND_STRING("QMK is awesome."); SEND_STRING("QMK is awesome.");
} }
SEQ_TWO_KEYS(KC_D, KC_D) { SEQ_TWO_KEYS(KC_D, KC_D) {
SEND_STRING(SS_LCTRL("a")SS_LCTRL("c")); SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
} }
SEQ_THREE_KEYS(KC_D, KC_D, KC_S) { SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
SEND_STRING("https://start.duckduckgo.com"SS_TAP(X_ENTER)); SEND_STRING("https://start.duckduckgo.com\n");
} }
SEQ_TWO_KEYS(KC_A, KC_S) { SEQ_TWO_KEYS(KC_A, KC_S) {
register_code(KC_LGUI); register_code(KC_LGUI);
@ -115,11 +115,11 @@ void matrix_scan_user(void) {
SEQ_ONE_KEY(KC_E) { SEQ_ONE_KEY(KC_E) {
// Anything you can do in a macro. // Anything you can do in a macro.
SEND_STRING(SS_LCTRL(SS_LSFT("t"))); SEND_STRING(SS_LCTL(SS_LSFT("t")));
did_leader_succeed = true; did_leader_succeed = true;
} else } else
SEQ_TWO_KEYS(KC_E, KC_D) { SEQ_TWO_KEYS(KC_E, KC_D) {
SEND_STRING(SS_LGUI("r")"cmd"SS_TAP(KC_ENTER)SS_LCTRL("c")); SEND_STRING(SS_LGUI("r") "cmd\n" SS_LCTL("c"));
did_leader_succeed = true; did_leader_succeed = true;
} }
leader_end(); leader_end();

View File

@ -67,14 +67,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case QMKURL: case QMKURL:
if (record->event.pressed) { if (record->event.pressed) {
// when keycode QMKURL is pressed // when keycode QMKURL is pressed
SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); SEND_STRING("https://qmk.fm/\n");
} else { } else {
// when keycode QMKURL is released // when keycode QMKURL is released
} }
break; break;
case MY_OTHER_MACRO: case MY_OTHER_MACRO:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING(SS_LCTRL("ac")); // selects all and copies SEND_STRING(SS_LCTL("ac")); // selects all and copies
} }
break; break;
} }
@ -109,18 +109,21 @@ Which would send "VE" followed by a `KC_HOME` tap, and "LO" (spelling "LOVE" if
There's also a couple of mod shortcuts you can use: There's also a couple of mod shortcuts you can use:
* `SS_LCTRL(string)` * `SS_LCTL(string)`
* `SS_LGUI(string)`
* `SS_LALT(string)`
* `SS_LSFT(string)` * `SS_LSFT(string)`
* `SS_RALT(string)` * `SS_LALT(string)`
* `SS_LGUI(string)`, `SS_LCMD(string)` or `SS_LWIN(string)`
* `SS_RCTL(string)`
* `SS_RSFT(string)`
* `SS_RALT(string)` or `SS_ALGR(string)`
* `SS_RGUI(string)`, `SS_RCMD(string)` or `SS_RWIN(string)`
These press the respective modifier, send the supplied string and then release the modifier. These press the respective modifier, send the supplied string and then release the modifier.
They can be used like this: They can be used like this:
SEND_STRING(SS_LCTRL("a")); SEND_STRING(SS_LCTL("a"));
Which would send LCTRL+a (LCTRL down, a, LCTRL up) - notice that they take strings (eg `"k"`), and not the `X_K` keycodes. Which would send Left Control+`a` (Left Control down, `a`, Left Control up) - notice that they take strings (eg `"k"`), and not the `X_K` keycodes.
### Alternative Keymaps ### Alternative Keymaps

View File

@ -208,15 +208,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
clear_mods(); clear_oneshot_mods(); clear_mods(); clear_oneshot_mods();
SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP); SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);
#ifndef FLASH_BOOTLOADER #ifndef FLASH_BOOTLOADER
if ( (temp_mod | temp_osm) & MOD_MASK_SHIFT ) if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
#endif #endif
{ // {
SEND_STRING(":flash"); SEND_STRING(":flash");
} }
if ( (temp_mod | temp_osm) & MOD_MASK_CTRL) { if ((temp_mod | temp_osm) & MOD_MASK_CTRL) {
SEND_STRING(" -j8 --output-sync"); SEND_STRING(" -j8 --output-sync");
} }
SEND_STRING(SS_TAP(X_ENTER)); tap_code(KC_ENT);
set_mods(temp_mod); set_mods(temp_mod);
} }
break; break;

View File

@ -73,7 +73,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break; break;
case MCR_04: case MCR_04:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v")); SEND_STRING(SS_LCTL("c") SS_TAP(X_RIGHT) SS_LCTL("v"));
} }
break; break;
} }

View File

@ -73,7 +73,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break; break;
case MCR_04: case MCR_04:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v")); SEND_STRING(SS_LCTL("c") SS_TAP(X_RIGHT) SS_LCTL("v"));
} }
break; break;
} }

View File

@ -73,7 +73,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break; break;
case MCR_04: case MCR_04:
if (record->event.pressed) { if (record->event.pressed) {
SEND_STRING(SS_LCTRL("c") SS_TAP(X_RIGHT) SS_LCTRL("v")); SEND_STRING(SS_LCTL("c") SS_TAP(X_RIGHT) SS_LCTL("v"));
} }
break; break;
} }

View File

@ -61,7 +61,7 @@ void enable_terminal(void) {
memset(cmd_buffer, 0, CMD_BUFF_SIZE * 80); memset(cmd_buffer, 0, CMD_BUFF_SIZE * 80);
for (int i = 0; i < 6; i++) strcpy(arguments[i], ""); for (int i = 0; i < 6; i++) strcpy(arguments[i], "");
// select all text to start over // select all text to start over
// SEND_STRING(SS_LCTRL("a")); // SEND_STRING(SS_LCTL("a"));
send_string(terminal_prompt); send_string(terminal_prompt);
} }

View File

@ -182,30 +182,8 @@ typedef ioline_t pin_t;
# define readPin(pin) palReadLine(pin) # define readPin(pin) palReadLine(pin)
#endif #endif
// Send string macros
#define STRINGIZE(z) #z
#define ADD_SLASH_X(y) STRINGIZE(\x##y)
#define SYMBOL_STR(x) ADD_SLASH_X(x)
#define SS_TAP_CODE 1
#define SS_DOWN_CODE 2
#define SS_UP_CODE 3
#define SS_TAP(keycode) "\1" SYMBOL_STR(keycode)
#define SS_DOWN(keycode) "\2" SYMBOL_STR(keycode)
#define SS_UP(keycode) "\3" SYMBOL_STR(keycode)
// `string` arguments must not be parenthesized
#define SS_LCTRL(string) SS_DOWN(X_LCTRL) string SS_UP(X_LCTRL)
#define SS_LGUI(string) SS_DOWN(X_LGUI) string SS_UP(X_LGUI)
#define SS_LCMD(string) SS_LGUI(string)
#define SS_LWIN(string) SS_LGUI(string)
#define SS_LALT(string) SS_DOWN(X_LALT) string SS_UP(X_LALT)
#define SS_LSFT(string) SS_DOWN(X_LSHIFT) string SS_UP(X_LSHIFT)
#define SS_RALT(string) SS_DOWN(X_RALT) string SS_UP(X_RALT)
#define SS_ALGR(string) SS_RALT(string)
#define SEND_STRING(string) send_string_P(PSTR(string)) #define SEND_STRING(string) send_string_P(PSTR(string))
#define SEND_STRING_DELAY(string, interval) send_string_with_delay_P(PSTR(string), interval)
extern const bool ascii_to_shift_lut[128]; extern const bool ascii_to_shift_lut[128];
extern const bool ascii_to_altgr_lut[128]; extern const bool ascii_to_altgr_lut[128];

View File

@ -340,3 +340,35 @@
#define X_MEDIA_REWIND bc #define X_MEDIA_REWIND bc
#define X_BRIGHTNESS_UP bd #define X_BRIGHTNESS_UP bd
#define X_BRIGHTNESS_DOWN be #define X_BRIGHTNESS_DOWN be
// Send string macros
#define STRINGIZE(z) #z
#define ADD_SLASH_X(y) STRINGIZE(\x##y)
#define SYMBOL_STR(x) ADD_SLASH_X(x)
#define SS_TAP_CODE 1
#define SS_DOWN_CODE 2
#define SS_UP_CODE 3
#define SS_TAP(keycode) "\1" SYMBOL_STR(keycode)
#define SS_DOWN(keycode) "\2" SYMBOL_STR(keycode)
#define SS_UP(keycode) "\3" SYMBOL_STR(keycode)
// `string` arguments must not be parenthesized
#define SS_LCTL(string) SS_DOWN(X_LCTL) string SS_UP(X_LCTL)
#define SS_LSFT(string) SS_DOWN(X_LSFT) string SS_UP(X_LSFT)
#define SS_LALT(string) SS_DOWN(X_LALT) string SS_UP(X_LALT)
#define SS_LGUI(string) SS_DOWN(X_LGUI) string SS_UP(X_LGUI)
#define SS_LCMD(string) SS_LGUI(string)
#define SS_LWIN(string) SS_LGUI(string)
#define SS_RCTL(string) SS_DOWN(X_RCTL) string SS_UP(X_RCTL)
#define SS_RSFT(string) SS_DOWN(X_RSFT) string SS_UP(X_RSFT)
#define SS_RALT(string) SS_DOWN(X_RALT) string SS_UP(X_RALT)
#define SS_RGUI(string) SS_DOWN(X_RGUI) string SS_UP(X_RGUI)
#define SS_ALGR(string) SS_RALT(string)
#define SS_RCMD(string) SS_RGUI(string)
#define SS_RWIN(string) SS_RGUI(string)
// DEPRECATED
#define SS_LCTRL(string) SS_LCTL(string)

View File

@ -52,7 +52,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case QMKURL: case QMKURL:
if (record->event.pressed) { if (record->event.pressed) {
// when keycode QMKURL is pressed // when keycode QMKURL is pressed
SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); SEND_STRING("https://qmk.fm/\n");
} else { } else {
// when keycode QMKURL is released // when keycode QMKURL is released
} }