You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
932 B

  1. #include "seq.h"
  2. static char buffer[32];
  3. static uint8_t buffer_size = 0;
  4. void seq_start(void) {
  5. buffer_size = 0;
  6. SEND_STRING(":");
  7. }
  8. bool seq_feed(uint16_t keycode) {
  9. if (keycode == KC_ENTER) {
  10. for (int i = 0; i < buffer_size + 1; i++) {
  11. tap_code(KC_BSPACE);
  12. }
  13. for (int i = 0; i < seq_config_size; i++) {
  14. seq_t item = seq_config[i];
  15. if (strncmp(item.sequence, buffer, buffer_size) == 0) {
  16. send_unicode_string(item.result);
  17. }
  18. }
  19. buffer_size = 0;
  20. return false;
  21. } else if (keycode == KC_BSPACE) {
  22. if (buffer_size) {
  23. buffer_size--;
  24. tap_code(keycode);
  25. }
  26. return true;
  27. } else {
  28. if (keycode >= KC_A && keycode <= KC_Z) {
  29. buffer[buffer_size++] = keycode - KC_A + 'a';
  30. tap_code(keycode);
  31. }
  32. return true;
  33. }
  34. }