 803610a284
			
		
	
	
		803610a284
		
			
		
	
	
	
	
		
			
			* initial user directory * fix missing endif in vi mode * fix includes per drashna and a few typos. I have not tested the userspace keymap, it is just there to help keep the user space and keymap in sync * move babblepaste docs to md format * clean up block quotes * TIL clang-format - miles2go userspace
		
			
				
	
	
		
			125 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*  A library to output the right key shortcut in any common app.
 | |
| Given a global variable babble_mode to show the environment and a
 | |
| key that calls the paste macro, do the right type of paste.
 | |
| Setting the context is done by another macro, or TBD interaction with the host.
 | |
| 
 | |
| Huge 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
 | |
| */
 | |
| 
 | |
| #include QMK_KEYBOARD_H
 | |
| 
 | |
| #ifdef USE_BABBLEPASTE
 | |
| #    include "babblePaste.h"
 | |
| 
 | |
| // small function that we might also want to call from a keymap.
 | |
| 
 | |
| // GLOBAL variable to determine mode.  Sets startup default if no eeppom
 | |
| uint8_t babble_mode = 0;
 | |
| 
 | |
| // function to tell the user that the mode has changed
 | |
| __attribute__((weak)) void babble_led_user(void) {}
 | |
| 
 | |
| void set_babble_mode(uint8_t id) { babble_mode = id; }
 | |
| 
 | |
| void babble_mode_increment() {
 | |
|     babble_mode += 1;
 | |
|     if (babble_mode >= BABL_MODEMAX) {
 | |
|         babble_mode = 0;
 | |
|     }
 | |
| }
 | |
| 
 | |
| void babble_mode_decrement() {
 | |
|     if (babble_mode >= 1) {
 | |
|         babble_mode -= 1;
 | |
|     } else {
 | |
|         babble_mode = BABL_MODEMAX - 1;
 | |
|     }
 | |
| }
 | |
| 
 | |
| /* this function runs the appropriate babblepaste macro, given
 | |
| the global babble_mode and a keycode defined in the babble_keycodes enum.
 | |
| 
 | |
| This could be made faster by splitting into two functions sorted by keycode range
 | |
| But that makes for a *lot* of ifdefs.
 | |
| */
 | |
| bool babblePaste(uint16_t keycode) {
 | |
|     // handle the OS/mode  switching first
 | |
| 
 | |
| #    ifdef BABL_MAC
 | |
|     if (keycode == BABL_DO_MAC) {
 | |
|         set_babble_mode(BABL_MAC_MODE);
 | |
|         babble_led_user();
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     if (babble_mode == BABL_MAC_MODE) {
 | |
|         babblePaste_mac(keycode);
 | |
|     }
 | |
| #    endif
 | |
| 
 | |
| #    ifdef BABL_VI
 | |
|     if (keycode == BABL_DO_VI) {
 | |
|         set_babble_mode(BABL_VI_MODE);
 | |
|         babble_led_user();
 | |
|         return true;
 | |
|     }
 | |
|     if (babble_mode == BABL_VI_MODE) {
 | |
|         babblePaste_vi(keycode);
 | |
|     }
 | |
| #    endif
 | |
| #    ifdef BABL_WINDOWS
 | |
|     if (keycode == BABL_DO_WINDOWS) {
 | |
|         set_babble_mode(BABL_WINDOWS_MODE);
 | |
|         babble_led_user();
 | |
|         return true;
 | |
|     }
 | |
|     if (babble_mode == BABL_WINDOWS_MODE) {
 | |
|         babblePaste_win(keycode);
 | |
|     }
 | |
| #    endif
 | |
| #    ifdef BABL_LINUX
 | |
|     if (keycode == BABL_DO_LINUX) {
 | |
|         set_babble_mode(BABL_LINUX_MODE);
 | |
|         babble_led_user();
 | |
|         return true;
 | |
|     }
 | |
|     if (babble_mode == BABL_LINUX_MODE) {
 | |
|         babblePaste_linux(keycode);
 | |
|     }
 | |
| #    endif
 | |
| #    ifdef BABL_EMACS
 | |
|     if (keycode == BABL_DO_EMACS) {
 | |
|         set_babble_mode(BABL_EMACS_MODE);
 | |
|         babble_led_user();
 | |
|         return true;
 | |
|     }
 | |
|     if (babble_mode == BABL_EMACS_MODE) {
 | |
|         babblePaste_emacs(keycode);
 | |
|     }
 | |
| #    endif
 | |
| #    ifdef BABL_CHROME
 | |
|     if (keycode == BABL_DO_CHROMEOS) {
 | |
|         set_babble_mode(BABL_CHROMEOS_MODE);
 | |
|         babble_led_user();
 | |
|         return true;
 | |
|     }
 | |
|     if (babble_mode == BABL_CHROMEOS_MODE) {
 | |
|         babblePaste_readmux(keycode);
 | |
|     }
 | |
| #    endif
 | |
| #    ifdef BABL_READMUX
 | |
|     if (keycode == BABL_DO_READMUX) {
 | |
|         set_babble_mode(BABL_READMUX_MODE);
 | |
|         babble_led_user();
 | |
|         return true;
 | |
|     }
 | |
|     if (babble_mode == BABL_READMUX_MODE) {
 | |
|         babblePaste_readmux(keycode);
 | |
|     }
 | |
| #    endif
 | |
| 
 | |
|     return false;
 | |
| }
 | |
| 
 | |
| #endif  // USE_BABBLEPASTE
 |