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.

86 lines
3.3 KiB

  1. // Readline command line editing + tmux windowing
  2. // I haven't decided how much to do readline and how much tmux
  3. // see https://tiswww.case.edu/php/chet/readline/rluserman.html for other possible
  4. // keybindings.
  5. #include QMK_KEYBOARD_H
  6. #ifdef USE_BABBLEPASTE
  7. # include "babblePaste.h"
  8. # ifdef BABL_READMUX
  9. // Redefine if you use something other than CTRL-B to activate tmux.
  10. # define TMUX SS_LCTL("b")
  11. bool babblePaste_readmux(uint16_t keycode) {
  12. # ifdef BABL_MOVE
  13. BABLM(BABL_GO_LEFT_1C, SS_TAP(X_LEFT));
  14. BABLM(BABL_GO_RIGHT_1C, SS_TAP(X_RIGHT));
  15. BABLM(BABL_GO_LEFT_WORD, SS_LALT("b"));
  16. BABLM(BABL_GO_RIGHT_WORD, SS_LALT("f"));
  17. BABLM(BABL_GO_START_LINE, SS_LCTL("a"));
  18. BABLM(BABL_GO_END_LINE, SS_LCTL("e"));
  19. // BABLM( BABL_GO_START_DOC ,END );// tmux?
  20. // BABLM( BABL_GO_END_DOC ,END ); // tmux?
  21. BABLM(BABL_GO_NEXT_LINE, SS_LCTL("n"));
  22. BABLM(BABL_GO_PREV_LINE, SS_LCTL("p"));
  23. // BABLM( BABL_GO_PARA_START, // undefined
  24. // BABLM( BABL_GO_PARA_END, // undefinedBABLM( BABL_PGDN ,
  25. BABLM(BABL_PGUP, SS_TAP(X_PGUP));
  26. BABLM(BABL_PGDN, SS_TAP(X_PGDOWN));
  27. BABLM(BABL_DEL_RIGHT_1C, SS_LCTL("d"));
  28. BABLM(BABL_DEL_LEFT_WORD, SS_LCTL("w")); // meta-DEL instead?
  29. BABLM(BABL_DEL_RIGHT_WORD, SS_LALT("d"));
  30. BABLM(BABL_DEL_TO_LINE_END, SS_LCTL("k"));
  31. BABLM(BABL_DEL_TO_LINE_START, SS_LCTL("u"));
  32. BABLM(BABL_MODE, "Readline ");
  33. # endif
  34. # ifdef BABL_OSKEYS
  35. BABLM(BABL_UNDO, SS_LALT("r"));
  36. BABLM(BABL_REDO, SS_LCTL("x") "c"); // arguably
  37. BABLM(BABL_CUT, SS_LCTL("k")); // wrong half the time
  38. // BABLM( BABL_COPY ,END );
  39. BABLM(BABL_PASTE, SS_LCTL("y"));
  40. BABLM(BABL_SELECT_ALL, SS_LCTL("aky"));
  41. BABLM(BABL_FIND, SS_LCTL("r")); // search history
  42. BABLM(BABL_FIND_NEXT, SS_LCTL("r"));
  43. BABLM(BABL_FIND_PREV, SS_LCTL("s"));
  44. // BABLM( BABL_FIND_REPLACE ,END ); // not offered in readline
  45. BABLM(BABL_RUNAPP, TMUX "c"); // tmux
  46. BABLM(BABL_SWITCH_APP_NEXT, TMUX "n"); // tmux
  47. BABLM(BABL_SWITCH_APP_LAST, TMUX "p"); // tmux
  48. BABLM(BABL_CLOSE_APP, TMUX "d"); // usually what I want
  49. BABLM(BABL_HELP, TMUX IMSFT(X_SLASH));
  50. BABLM(BABL_LOCK, TMUX "L"); // assuming you set up VLOCK yourself
  51. BABLM(BABL_SCREENCAPTURE, TMUX ":capture-pane");
  52. # endif
  53. # ifdef BABL_BROWSER
  54. /* Add lynx shortcuts, brow.sh?
  55. */
  56. # ifdef BABL_MAC
  57. // this is stock OS X Terminal, alter for windows &etc.
  58. BABLM(BABL_BROWSER_NEW_TAB, IMGUI(X_T));
  59. BABLM(BABL_BROWSER_CLOSE_TAB, SS_LGUI("w"));
  60. BABLM(BABL_BROWSER_NEXT_TAB, IMCTL(X_TAB));
  61. BABLM(BABL_BROWSER_PREV_TAB, OMSFT(IMCTL(X_TAB)));
  62. # endif
  63. # endif
  64. # ifdef BABL_APP
  65. // Save makes no sense here
  66. BABLM(BABL_SPLIT_FRAME_VERT, TMUX IMSFT(X_5));
  67. // BUG - misleading. This is currently set to convert frame to a window.
  68. BABLM(BABL_UNSPLIT_FRAME_VERT, TMUX IMSFT(X_1));
  69. BABLM(BABL_SPLIT_FRAME_HORIZONTAL, TMUX IMSFT(X_QUOTE));
  70. // This one closes the current pane.
  71. BABLM(BABL_UNSPLIT_FRAME_HORIZONTAL, SS_LCTL("b") "x");
  72. BABLM(BABL_NEXT_FRAME, SS_LCTL("b") "o");
  73. BABLM(BABL_PREV_FRAME, SS_LCTL("w") SS_TAP(X_SCOLON));
  74. # endif
  75. // Todo, ring bell, flash light, show user this isn't supported
  76. return false;
  77. }
  78. # endif /* readmux*/
  79. #endif