forked from forks/qmk_firmware
124 lines
3.6 KiB
Plaintext
124 lines
3.6 KiB
Plaintext
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.
|
|
|
|
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.
|
|
|
|
|
|
###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
|
|
// READMUX_MODE 2
|
|
// WORDSTAR_MODE 5
|
|
#endif
|
|
|
|
// 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...
|
|
|