mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-25 10:44:59 +06:00
Send string keycode tweaks (#7471)
This commit is contained in:
parent
a2cedf4555
commit
5a6737a778
@ -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();
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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];
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user