]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
added browser babble, removed code from keymap
authormilestogo <milestogo@users.noreply.github.com>
Wed, 8 Mar 2017 09:06:25 +0000 (01:06 -0800)
committermilestogo <milestogo@users.noreply.github.com>
Wed, 8 Mar 2017 09:06:25 +0000 (01:06 -0800)
keyboards/handwired/MS-sculpt-mobile/babblePaste.c
keyboards/handwired/MS-sculpt-mobile/babblePaste.h
keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/config.h
keyboards/handwired/MS-sculpt-mobile/keymaps/milestogo/keymap.c

index 93ff486e0dce9ec19e88fd1afe5e4d06b563345f..491a79333eb7a140156b8fc5635f03fc4261d87f 100644 (file)
@@ -15,6 +15,13 @@ and https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/jee
 // GLOBAL variable to determine mode.  Sets startup default if no eeppom
 uint8_t babble_mode =0 ;
 
+// small function that we might also want to call from a keymap. 
+
+macro_t* switch_babble_mode( uint8_t id) {
+ babble_mode= id;
+ return MACRO_NONE; //less typing above
+}
+
                
 // Today I learned that the preprocessor can not create a switch statement label from an argument
 // And else statements have problems, see https://gcc.gnu.org/onlinedocs/gcc-3.0.1/cpp_3.html#SEC15
@@ -23,63 +30,80 @@ uint8_t babble_mode =0 ;
                 {  action_macro_play( MACRO(macro)); return MACRO_NONE; }   
 
 
-const  macro_t *babblePaste (keyrecord_t *record,  uint8_t shortcut) {
 /* this function runs the appropriate babblepaste macro, given
 the global babble_mode, and a shortcut from the ENUM in babblePaste.h 
 TODO, the pointers in this function should be stored in a PROGMEM array, not ram. 
 But that requires even more clever preprocessor foo.
 */
-
+const  macro_t *babblePaste (keyrecord_t *record,  uint8_t shortcut) {
+/*
         if ( shortcut < BABL_START_NUM || \
                         shortcut >= (BABL_START_NUM + BABL_NUM_MACROS ) ) {
                        return MACRO_NONE;
                }
-
-
+*/
   switch(babble_mode) {
-       
-#ifdef MS_MODE
+     
+     
 
+#ifdef MS_MODE
+               if ( BABL_WINDOWS  == shortcut ) { return switch_babble_mode(MS_MODE);  } 
+               
         case MS_MODE:  
-               BABLM( BABL_DEL_RIGHT_1C,       T(DEL), END );
-               BABLM( BABL_DEL_LEFT_WORD,      D(LCTRL), T(BSPACE), U(LCTRL), END );
-               BABLM( BABL_DEL_RIGHT_WORD,D(LCTRL), T(DEL), U(LCTRL), END );
                BABLM( BABL_GO_LEFT_1C, T(LEFT), END );
                BABLM( BABL_GO_RIGHT_1C ,       T(RIGHT), END );
-               BABLM( BABL_GO_LEFT_WORD,       D(LCTRL), T(LEFT), U(LCTRL), END );
-               BABLM( BABL_GO_RIGHT_WORD, D(LCTRL), T(RIGHT), U(LCTRL), END );
+               BABLM( BABL_GO_LEFT_WORD,       D(LCTL), T(LEFT), U(LCTL), END );
+               BABLM( BABL_GO_RIGHT_WORD, D(LCTL), T(RIGHT), U(LCTL), END );
                BABLM( BABL_GO_START_LINE,      T(HOME), END );
-               BABLM( BABL_GO_START_DOC,       D(LCTRL),T(HOME),  U(LCTRL),END );
                BABLM( BABL_GO_END_LINE,        T(END), END );
-               BABLM( BABL_GO_END_DOC, D(LCTRL),T(END),  U(LCTRL),END );
+               BABLM( BABL_GO_START_DOC,       D(LCTL),T(HOME),  U(LCTL),END );
+               BABLM( BABL_GO_END_DOC, D(LCTL),T(END),  U(LCTL),END );
                BABLM( BABL_GO_NEXT_LINE,       T(DOWN), END );
                BABLM( BABL_GO_PREV_LINE,       T(UP), END );
                BABLM( BABL_PGDN,                       T(PGDN), END );
                BABLM( BABL_PGUP,                       T(PGUP), END );
+               BABLM( BABL_DEL_RIGHT_1C,       T(DEL), END );
+               BABLM( BABL_DEL_LEFT_WORD,      D(LCTL), T(BSPACE), U(LCTL), END );
+               BABLM( BABL_DEL_RIGHT_WORD,             D(LCTL), T(DEL), U(LCTL), END );
+               BABLM( BABL_DEL_TO_LINE_END,    D(RSFT), T(HOME), U(RSFT), T(DEL),  END);
+               BABLM( BABL_DEL_TO_LINE_START,  D(RSFT), T(END), U(RSFT), T(DEL),  END );
 #ifndef BABL_MOVEMENTONLY
-               BABLM( BABL_UNDO,               D(LCTRL), T(Z), U(LCTRL), END );
-               BABLM( BABL_REDO,               D(LCTRL), T(Y), U(LCTRL), END );
-               BABLM( BABL_CUT,                D(LCTRL), T(X), U(LCTRL), END );
-               BABLM( BABL_COPY,               D(LCTRL), T(C), U(LCTRL), END );
-               BABLM( BABL_PASTE,              D(LCTRL), T(V), U(LCTRL), END );                
-               BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END );
-               BABLM( BABL_UNDO,               D(LCTRL), T(Z), U(LCTRL), END );
-               BABLM( BABL_REDO,               D(LCTRL), T(Y), U(LCTRL), END );
-               BABLM( BABL_CUT,                D(LCTRL), T(X), U(LCTRL), END );
-               BABLM( BABL_COPY,               D(LCTRL), T(C), U(LCTRL), END );
-               BABLM( BABL_PASTE,              D(LCTRL), T(V), U(LCTRL), END );                        
-               BABLM( BABL_SELECT_ALL,                 D(LCTRL), T(A), U(LCTRL), END );
-               BABLM( BABL_FIND,               D(LCTRL),T(F),  U(LCTRL),END );
+               BABLM( BABL_UNDO,               D(LCTL), T(Z), U(LCTL), END );
+               BABLM( BABL_REDO,               D(LCTL), T(Y), U(LCTL), END );
+               BABLM( BABL_CUT,                D(LCTL), T(X), U(LCTL), END );
+               BABLM( BABL_COPY,               D(LCTL), T(C), U(LCTL), END );
+               BABLM( BABL_PASTE,              D(LCTL), T(V), U(LCTL), END );          
+               BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END );
+               BABLM( BABL_FIND,               D(LCTL),T(F),  U(LCTL),END );
                BABLM( BABL_FIND_NEXT,                  T(F3),END );
-               BABLM( BABL_FIND_REPLACE,               D(LCTRL),T(H),  U(LCTRL),END );
+               BABLM( BABL_FIND_REPLACE,               D(LCTL),T(H),  U(LCTL),END );
                BABLM( BABL_RUNAPP,     D(LGUI),T(R),  U(LGUI),END );
                BABLM( BABL_SWITCH_APP_NEXT, D(LALT),T(TAB), U(LALT),END );
                BABLM( BABL_SWITCH_APP_LAST, D(LSFT),D(LALT),T(TAB), U(LALT), U(LSFT),END );
                BABLM( BABL_CLOSE_APP,  D(LALT),T(F4), U(LALT),END );
                BABLM( BABL_HELP,               T(F1),END );
+#ifndef BABL_NOBROWSER
+               BABLM( BABL_BROWSER_NEW_TAB,            D(LCTL), T(T), U(LCTL),END );
+               BABLM( BABL_BROWSER_CLOSE_TAB,          D(LCTL), T(W), U(LCTL),END );
+               BABLM( BABL_BROWSER_REOPEN_LAST_TAB,            D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END );
+               BABLM( BABL_BROWSER_NEXT_TAB,           D(LCTL), T(TAB), U(LCTL),END );
+               BABLM( BABL_BROWSER_PREV_TAB,           D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END );
+               BABLM( BABL_BROWSER_URL_BAR,            D(LCTL), T(L), U(LCTL),END );
+               BABLM( BABL_BROWSER_FORWARD,            D(LALT), T(RIGHT), U(LALT),END );
+               BABLM( BABL_BROWSER_BACK,                       D(LALT), T(LEFT), U(LALT),END );
+               BABLM( BABL_BROWSER_FIND,                       D(LCTL), T(F), U(LCTL),END );
+               BABLM( BABL_BROWSER_BOOKMARK,           D(LCTL), T(D), U(LCTL),END );
+               //BABLM( BABL_BROWSER_DEV_TOOLS,        T(F12), U(LCTL),END  ); // EDGE 
+               BABLM( BABL_BROWSER_DEV_TOOLS,          D(LCTL), T(T), U(LCTL),END  ); // Chrome
+               // Chrome
+               BABLM( BABL_BROWSER_RELOAD,                     D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache
+               BABLM( BABL_BROWSER_FULLSCREEN,         T(F11),END ); //command shift F
+               BABLM( BABL_BROWSER_ZOOM_IN,            D(LCTL), D(RSFT), T(EQL), U(RSFT), U(LCTL),END ); // ctr+ +
+               BABLM( BABL_BROWSER_ZOOM_OUT,           D(LCTL), T(MINS), U(LCTL),END );
+#endif
 #endif
 
-
+               // Todo, ring bell, flash light, show user this isn't supported
                return MACRO_NONE;
                
                
@@ -87,62 +111,87 @@ But that requires even more clever preprocessor foo.
 
 
 #ifdef LINUX_MODE
+       if ( BABL_LINUX == shortcut ) { return switch_babble_mode(LINUX_MODE);  } 
+
         case LINUX_MODE:
-       
-               BABLM( BABL_DEL_RIGHT_1C  ,     D(DEL), END );   
-               BABLM( BABL_DEL_LEFT_WORD  ,    D(LCTRL), T(BSPACE), U(LCTRL), END );
-               BABLM( BABL_DEL_RIGHT_WORD  , D(LCTRL), T(DEL), U(LCTRL), END );
                BABLM( BABL_GO_LEFT_1C  ,       T(LEFT), END );
                BABLM( BABL_GO_RIGHT_1C  ,      T(RIGHT), END );
-               BABLM( BABL_GO_LEFT_WORD  ,     D(LCTRL), T(LEFT), U(LCTRL), END );
-               BABLM( BABL_GO_RIGHT_WORD  , D(LCTRL), T(RIGHT), U(LCTRL), END );
+               BABLM( BABL_GO_LEFT_WORD  ,     D(LCTL), T(LEFT), U(LCTL), END );
+               BABLM( BABL_GO_RIGHT_WORD  , D(LCTL), T(RIGHT), U(LCTL), END );
                BABLM( BABL_GO_START_LINE ,     T(HOME), END );
-               BABLM( BABL_GO_START_DOC  ,     D(LCTRL),T(HOME),  U(LCTRL),END );
                BABLM( BABL_GO_END_LINE  ,      T(END), END );
-               BABLM( BABL_GO_END_DOC  ,       D(LCTRL),T(END),  U(LCTRL),END );
+               BABLM( BABL_GO_START_DOC  ,     D(LCTL),T(HOME),  U(LCTL),END );
+               BABLM( BABL_GO_END_DOC  ,       D(LCTL),T(END),  U(LCTL),END );
                BABLM( BABL_GO_NEXT_LINE  ,     T(DOWN), END );
                BABLM( BABL_GO_PREV_LINE  ,     T(UP), END );
                BABLM( BABL_PGDN  ,                     T(PGDN), END );
                BABLM( BABL_PGUP  ,                     T(PGUP), END );
+               BABLM( BABL_DEL_RIGHT_1C  ,     D(DEL), END );   
+               BABLM( BABL_DEL_LEFT_WORD  ,    D(LCTL), T(BSPACE), U(LCTL), END );
+               BABLM( BABL_DEL_RIGHT_WORD  , D(LCTL), T(DEL), U(LCTL), END );
+               BABLM( BABL_DEL_TO_LINE_END,    D(RSFT), T(HOME), U(RSFT), T(DEL),  END);
+               BABLM( BABL_DEL_TO_LINE_START,  D(RSFT), T(END), U(RSFT), T(DEL),  END );
 #ifndef BABL_MOVEMENTONLY
-               BABLM( BABL_UNDO  ,     D(LCTRL), T(Z), U(LCTRL), END );
-               BABLM( BABL_REDO  ,     D(LCTRL), T(Y), U(LCTRL), END );
-               BABLM( BABL_CUT  ,      D(LCTRL), T(X), U(LCTRL), END );
-               BABLM( BABL_COPY  ,     D(LCTRL), T(C), U(LCTRL), END );
-               BABLM( BABL_PASTE  ,    D(LCTRL), T(V), U(LCTRL), END );                        
-               BABLM( BABL_SELECT_ALL, D(LCTRL), T(A), U(LCTRL), END );        
-               BABLM( BABL_FIND,       D(LCTRL),T(F),  U(LCTRL),END );
+               BABLM( BABL_UNDO  ,     D(LCTL), T(Z), U(LCTL), END );
+               BABLM( BABL_REDO  ,     D(LCTL), T(Y), U(LCTL), END );
+               BABLM( BABL_CUT  ,      D(LCTL), T(X), U(LCTL), END );
+               BABLM( BABL_COPY  ,     D(LCTL), T(C), U(LCTL), END );
+               BABLM( BABL_PASTE  ,    D(LCTL), T(V), U(LCTL), END );                  
+               BABLM( BABL_SELECT_ALL, D(LCTL), T(A), U(LCTL), END );  
+               BABLM( BABL_FIND,       D(LCTL),T(F),  U(LCTL),END );
                /* BABLM(BABL_FIND_NEXT  , T(F3),END ); KDE */
-               BABLM( BABL_FIND_NEXT,  D(LCTRL),T(G),  U(LCTRL),END ); // Gnome*/
-               /* BABLM(  , D(LCTRL),T(R),  U(LCTRL),END ); KDE */
-               BABLM( BABL_FIND_REPLACE,       D(LCTRL),T(H),  U(LCTRL),END ); // Gnome*/
+               BABLM( BABL_FIND_NEXT,  D(LCTL),T(G),  U(LCTL),END ); // Gnome*/
+               /* BABLM(  , D(LCTL),T(R),  U(LCTL),END ); KDE */
+               BABLM( BABL_FIND_REPLACE,       D(LCTL),T(H),  U(LCTL),END ); // Gnome*/
                BABLM( BABL_RUNAPP,                     D(LALT),T(F2),  U(LALT),END );
                BABLM( BABL_SWITCH_APP_NEXT,    D(LCTL),T(TAB), U(LCTL),END );
                BABLM( BABL_SWITCH_APP_LAST,    D(LSFT),D(LCTL),T(TAB), U(LCTL), U(LSFT),END );
                BABLM( BABL_CLOSE_APP,  D(LALT),T(F4), U(LALT),END );
-               BABLM( BABL_HELP,               END ); 
+               //BABLM( BABL_HELP,             END ); 
+
+#ifndef BABL_NOBROWSER
+               BABLM( BABL_BROWSER_NEW_TAB,            D(LCTL), T(T), U(LCTL),END );
+               BABLM( BABL_BROWSER_CLOSE_TAB,          D(LCTL), T(W), U(LCTL),END );
+               BABLM( BABL_BROWSER_REOPEN_LAST_TAB,            D(LCTL), D(RSFT),T(T), U(RSFT),U(LCTL),END );
+               BABLM( BABL_BROWSER_NEXT_TAB,           D(LCTL), T(TAB), U(LCTL),END );
+               BABLM( BABL_BROWSER_PREV_TAB,           D(LCTL), D(RSFT), T(TAB), U(RSFT), U(LCTL),END );
+               BABLM( BABL_BROWSER_URL_BAR,            D(LCTL), T(L), U(LCTL),END );
+               BABLM( BABL_BROWSER_FORWARD,            D(LALT), T(RIGHT), U(LALT),END );
+               BABLM( BABL_BROWSER_BACK,                       D(LALT), T(LEFT), U(LALT),END );
+               BABLM( BABL_BROWSER_FIND,                       D(LCTL), T(F), U(LCTL),END );
+               BABLM( BABL_BROWSER_BOOKMARK,           D(LCTL), T(D), U(LCTL),END );
+               BABLM( BABL_BROWSER_DEV_TOOLS,          D(LCTL), T(T), U(LCTL),END  ); // Chrome
+               BABLM( BABL_BROWSER_RELOAD,                     D(LCTL), T(F5), U(LCTL),END ); // hard reload w/o cache
+               BABLM( BABL_BROWSER_FULLSCREEN,         T(F11),END ); //command shift F
+               BABLM( BABL_BROWSER_ZOOM_IN,            D(LCTL), T(PLUS), U(LCTL),END );
+               BABLM( BABL_BROWSER_ZOOM_OUT,           D(LCTL), T(MINS), U(LCTL),END );
+#endif
 #endif
         return MACRO_NONE;
        
 #endif 
          
 #ifdef MAC_MODE
+       if ( BABL_MAC == shortcut) { return switch_babble_mode(MAC_MODE);  } 
+
         case MAC_MODE:
-               BABLM( BABL_DEL_RIGHT_1C ,      D(DEL), END );   
-               BABLM( BABL_DEL_LEFT_WORD ,     D(LALT), T(BSPACE), U(LALT), END );
-               BABLM( BABL_DEL_RIGHT_WORD,     D(LALT), T(DEL), U(LALT), END );
                BABLM( BABL_GO_LEFT_1C ,        T(LEFT), END );
                BABLM( BABL_GO_RIGHT_1C,        T(RIGHT), END );
                BABLM( BABL_GO_LEFT_WORD ,      D(LALT), T(LEFT), U(LALT), END );
                BABLM( BABL_GO_RIGHT_WORD ,     D(LALT), T(RIGHT), U(LALT), END );
                BABLM( BABL_GO_START_LINE ,     D(LGUI), T(LEFT), U(LGUI),  END );
-               BABLM( BABL_GO_START_DOC ,      D(LGUI),T(UP),  U(LGUI),END );
                BABLM( BABL_GO_END_LINE ,       D(LGUI), T(RIGHT), U(LGUI), END );
+               BABLM( BABL_GO_START_DOC ,      D(LGUI),T(UP),  U(LGUI),END );
                BABLM( BABL_GO_END_DOC ,        D(LGUI),T(DOWN),  U(LGUI),END );
                BABLM( BABL_GO_NEXT_LINE ,      T(DOWN), END );
                BABLM( BABL_GO_PREV_LINE ,      T(UP), END );
                BABLM( BABL_PGDN ,              D(LALT),T(DOWN), U(LALT), END );
                BABLM( BABL_PGUP ,      D(LALT),T(UP), U(LALT), END );
+               BABLM( BABL_DEL_RIGHT_1C ,      D(DEL), END );   
+               BABLM( BABL_DEL_LEFT_WORD ,     D(LALT), T(BSPACE), U(LALT), END );
+               BABLM( BABL_DEL_RIGHT_WORD,     D(LALT), T(DEL), U(LALT), END );
+               BABLM( BABL_DEL_TO_LINE_END,    D(LCTL), T(K), U(LCTL), END );// there must be another way
+               BABLM( BABL_DEL_TO_LINE_START,  D(LGUI), T(BSPACE), U(LGUI),   END );
 #ifndef BABL_MOVEMENTONLY
                BABLM( BABL_UNDO ,              D(1), D(LGUI), T(Z), U(LGUI), END );
                BABLM( BABL_REDO ,              D(LSFT),D(LGUI), T(Z), U(LSFT),U(LGUI), END );
@@ -158,75 +207,92 @@ But that requires even more clever preprocessor foo.
                BABLM( BABL_SWITCH_APP_LAST ,   D(LSFT),D(LGUI),T(TAB), U(LGUI), U(LSFT),END );
                BABLM( BABL_CLOSE_APP ,                 D(LGUI),T(Q),  U(LGUI),END );
                BABLM( BABL_HELP ,                              D(LSFT),D(LGUI),T(SLASH), U(LGUI), U(LSFT),END );
+
+#ifndef BABL_NOBROWSER
+               BABLM( BABL_BROWSER_NEW_TAB,            D(LGUI), T(T), U(LGUI),END );
+               BABLM( BABL_BROWSER_CLOSE_TAB,          D(LGUI), T(W), U(LGUI),END );
+               BABLM( BABL_BROWSER_REOPEN_LAST_TAB,            D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END );
+               BABLM( BABL_BROWSER_NEXT_TAB,           D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END );
+               BABLM( BABL_BROWSER_PREV_TAB,           D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_URL_BAR,            D(LGUI), T(L), U(LGUI),END );
+               BABLM( BABL_BROWSER_FORWARD,            D(LGUI), T(RIGHT), U(LGUI),END );
+               BABLM( BABL_BROWSER_BACK,                       D(LGUI), T(LEFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_FIND,                       D(LGUI), T(F), U(LGUI),END );
+               BABLM( BABL_BROWSER_BOOKMARK,           D(LGUI), T(D), U(LGUI),END );
+               //BABLM( BABL_BROWSER_DEV_TOOLS,        T(F12), U(LGUI),END  ); // EDGE 
+               BABLM( BABL_BROWSER_DEV_TOOLS,          D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome
+               // Chrome
+               BABLM( BABL_BROWSER_RELOAD,                     D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache
+               BABLM( BABL_BROWSER_FULLSCREEN,         D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F
+               BABLM( BABL_BROWSER_ZOOM_IN,            D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ +
+               BABLM( BABL_BROWSER_ZOOM_OUT,           D(LGUI), T(MINS), U(LGUI),END );
+#endif
 #endif
                        
         return MACRO_NONE;
 #endif         
        
 #ifdef EMACS_MODE
+
+       if ( BABL_EMACS == shortcut  ) { return switch_babble_mode(EMACS_MODE);   }
+
         case EMACS_MODE:
                switch(shortcut) {
 //probably should allow meta to not be ALT
-                       
-                       case BABL_DEL_RIGHT_1C:
-                                BABLM(  , D(LCTL), T(D), U(LCTL),END );         
-                       case BABL_DEL_LEFT_WORD:
-                               BABLM(  , D(LCTL), T(BSPACE), U(LCTL), END );
-                       case BABL_DEL_RIGHT_WORD:
-                               BABLM(  , D(LALT), T(D), U(LALT), END );
-                       case BABL_GO_LEFT_1C:
-                               BABLM(  , T(LEFT), END );
-                       case BABL_GO_RIGHT_1C:
-                               BABLM(  , T(RIGHT), END );
-                       case BABL_GO_LEFT_WORD:
-                               BABLM(  , D(LALT), T(B), U(LALT), END );
-                       case BABL_GO_RIGHT_WORD:
-                               BABLM(  , D(LALT), T(F), U(LALT), END );
-                       case BABL_GO_START_LINE:
-                               BABLM(  ,  D(LCTRL), T(A), U(LCTRL),  END );
-                       case BABL_GO_START_DOC:
-                               BABLM(  , D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END );
-                       case BABL_GO_END_LINE:
-                               BABLM(  ,  D(LCTRL), T(E), U(LCTRL), END );
-                       case BABL_GO_END_DOC:
-                               BABLM(  , D(LALT), D(LSFT), T(DOT),U(LSFT), U(LALT) ,END );
-                       case BABL_GO_NEXT_LINE:
-                               BABLM(  ,  D(LCTRL), T(N), U(LCTRL), END );
-                       case BABL_GO_PREV_LINE:
-                               BABLM(  ,  D(LCTRL), T(P), U(LCTRL), END );
-                       case BABL_PGDN:
-                               BABLM(  ,D(LCTRL), T(V), U(LCTRL), END );
-                       case BABL_PGUP:
-                               BABLM(  ,  D(LALT), T(V), U(LALT), END );
+
+               BABLM( BABL_GO_LEFT_1C,                 T(LEFT), END );
+               BABLM( BABL_GO_RIGHT_1C,                T(RIGHT), END );
+               BABLM( BABL_GO_LEFT_WORD,               D(LALT), T(B), U(LALT), END );
+               BABLM( BABL_GO_RIGHT_WORD ,             D(LALT), T(F), U(LALT), END );
+               BABLM( BABL_GO_START_LINE ,     D(LCTL), T(A), U(LCTL),  END );
+               BABLM( BABL_GO_END_LINE ,               D(LCTL), T(E), U(LCTL), END );
+               BABLM( BABL_GO_START_DOC ,              D(LALT), D(LSFT), T(COMM),U(LSFT), U(LALT) ,END );
+               BABLM( BABL_GO_END_DOC ,                D(LALT), D(LSFT), T(DOT), U(LSFT), U(LALT) ,END );
+               BABLM( BABL_GO_NEXT_LINE ,              D(LCTL), T(N), U(LCTL), END );
+               BABLM( BABL_GO_PREV_LINE ,      D(LCTL), T(P), U(LCTL), END );
+               BABLM( BABL_PGDN ,                              D(LCTL), T(V), U(LCTL), END );
+               BABLM( BABL_PGUP ,                      D(LALT), T(V), U(LALT), END );
+               BABLM( BABL_DEL_RIGHT_1C,               D(LCTL), T(D), U(LCTL),END );    
+               BABLM( BABL_DEL_LEFT_WORD ,     D(LCTL), T(BSPACE), U(LCTL), END );
+               BABLM( BABL_DEL_RIGHT_WORD ,    D(LALT), T(D), U(LALT), END );
+               BABLM( BABL_DEL_TO_LINE_END,    D(LCTL), T(K), U(LCTL), END ); 
+               BABLM( BABL_DEL_TO_LINE_START,  T(ESC),  T(0), D(LCTL), T(K), U(LCTL),  END );
 #ifndef BABL_MOVEMENTONLY
-                       case BABL_UNDO:
-                                       BABLM(  , D(LCTL), T(X), U(LCTL),T(C), END );
-                       case BABL_REDO:
-                                       BABLM(  , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably
-                       case BABL_CUT:
-                                       BABLM(  , D(LCTL), T(W), U(LCTL), END );
-                       case BABL_COPY:
-                                       BABLM(  , D(LALT), T(W), U(LALT), END ); //really?
-                       case BABL_PASTE:
-                                       BABLM(  ,  D(LCTL), T(Y), U(LCTL), END );                       
-                       case BABL_SELECT_ALL:
-                                       BABLM(  ,D(LCTL), T(X), U(LCTL),T(H), END );     
-                       case BABL_FIND:
-                               BABLM(  , D(LCTRL), T(S), U(LCTRL),END );
-                       case BABL_FIND_NEXT:
-                               BABLM(  , D(LCTRL), T(S), U(LCTRL),END );
-                       case BABL_FIND_REPLACE:
-                               BABLM(  ,  D(LALT),D(LSFT), T(5),U(LSFT),  U(LALT), END );
-                       case BABL_RUNAPP:
-                               BABLM(  , D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably
-                       case BABL_SWITCH_APP_NEXT:
-                               BABLM(  , D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably
-                       case BABL_SWITCH_APP_LAST:
-                               BABLM(  , D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably
-                       case BABL_CLOSE_APP:
-                               BABLM(  ,D(LCTL), T(X), U(LCTL),T(C),END );
-                       case BABL_HELP:
-                               BABLM(  , D(LCTL),T(H), U(LCTL),T(A),END); // start search in help
+               BABLM( BABL_UNDO ,              D(LCTL), T(X), U(LCTL),T(C), END );
+               BABLM( BABL_REDO ,              D(LCTL), T(X), U(LCTL),T(C), END ); // arguably
+               BABLM( BABL_CUT ,               D(LCTL), T(W), U(LCTL), END );
+               BABLM( BABL_COPY ,              D(LALT), T(W), U(LALT), END ); //really?
+               BABLM( BABL_PASTE ,     D(LCTL), T(Y), U(LCTL), END );                  
+               BABLM( BABL_SELECT_ALL ,D(LCTL), T(X), U(LCTL),T(H), END );      
+               BABLM( BABL_FIND ,              D(LCTL), T(S), U(LCTL),END );
+               BABLM( BABL_FIND_NEXT , D(LCTL), T(S), U(LCTL),END );
+               BABLM( BABL_FIND_REPLACE ,              D(LALT),D(LSFT), T(5),U(LSFT),  U(LALT), END );
+               BABLM( BABL_RUNAPP ,                    D(LALT), T(X), U(LALT),T(S),T(H),T(E),T(L),T(L),END );// arguably
+               BABLM( BABL_SWITCH_APP_NEXT ,   D(LCTL), T(X), U(LCTL),T(RIGHT), END ); // arguably
+               BABLM( BABL_SWITCH_APP_LAST ,   D(LCTL), T(X), U(LCTL),T(LEFT), END ); // arguably
+               BABLM( BABL_CLOSE_APP ,                 D(LCTL), T(X), U(LCTL),T(C),END );
+               BABLM( BABL_HELP ,                              D(LCTL),T(H), U(LCTL),T(A),END); // start search in help
+#ifndef BABL_NOBROWSER
+/* you get to figure w3 out 
+               BABLM( BABL_BROWSER_NEW_TAB,            D(LGUI), T(T), U(LGUI),END );
+               BABLM( BABL_BROWSER_CLOSE_TAB,          D(LGUI), T(W), U(LGUI),END );
+               BABLM( BABL_BROWSER_REOPEN_LAST_TAB,            D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END );
+               BABLM( BABL_BROWSER_NEXT_TAB,           D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END );
+               BABLM( BABL_BROWSER_PREV_TAB,           D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_URL_BAR,            D(LGUI), T(L), U(LGUI),END );
+               BABLM( BABL_BROWSER_FORWARD,            D(LGUI), T(RIGHT), U(LGUI),END );
+               BABLM( BABL_BROWSER_BACK,                       D(LGUI), T(LEFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_FIND,                       D(LGUI), T(F), U(LGUI),END );
+               BABLM( BABL_BROWSER_BOOKMARK,           D(LGUI), T(D), U(LGUI),END );
+               //BABLM( BABL_BROWSER_DEV_TOOLS,        T(F12), U(LGUI),END  ); // EDGE 
+               BABLM( BABL_BROWSER_DEV_TOOLS,          D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome
+               // Chrome
+               BABLM( BABL_BROWSER_RELOAD,                     D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache
+               BABLM( BABL_BROWSER_FULLSCREEN,         D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F
+               BABLM( BABL_BROWSER_ZOOM_IN,            D(LGUI), D(RSFT), T(EQL), U(RSFT), U(LGUI),END ); // ctr+ +
+               BABLM( BABL_BROWSER_ZOOM_OUT,           D(LGUI), T(MINS), U(LGUI),END );
+*/
+#endif
 #endif
                                break;
         
@@ -234,25 +300,31 @@ But that requires even more clever preprocessor foo.
        }
        
 #endif         
+
+
 #ifdef VI_MODE
+       if ( BABL_VI == shortcut  ) { return switch_babble_mode(VI_MODE);   }
         case VI_MODE:
-//assume esc is already called
+// you have to track the modes yourself. Otherwise motion is awful (bell, bell, bell)
+                       
                        
-                       BABLM( BABL_DEL_RIGHT_1C ,  T(X),END );  
-                       BABLM( BABL_DEL_LEFT_WORD ,  T(D),T(G),T(E),END );
-                       BABLM( BABL_DEL_RIGHT_WORD ,  T(D),T(W),END );
                        BABLM( BABL_GO_LEFT_1C , T(H), END );
                        BABLM( BABL_GO_RIGHT_1C , T(L), END );
                        BABLM( BABL_GO_LEFT_WORD , T(B),END );
                        BABLM( BABL_GO_RIGHT_WORD , T(W), END );
                        BABLM( BABL_GO_START_LINE , D(LSFT), T(6),U(LSFT), END ); //^
-                       BABLM( BABL_GO_START_DOC , T(G),T(G) ,END );
                        BABLM( BABL_GO_END_LINE ,   D(LSFT), T(4),U(LSFT) , END ); //$
+                       BABLM( BABL_GO_START_DOC , T(G),T(G) ,END );
                        BABLM( BABL_GO_END_DOC , D(LSFT), T(G),U(LSFT),END );
                        BABLM( BABL_GO_NEXT_LINE ,  T(J), END );
                        BABLM( BABL_GO_PREV_LINE,  T(K), END );
-                       BABLM( BABL_PGDN ,D(LCTRL), T(F), U(LCTRL), END );
-                       BABLM( BABL_PGUP , D(LCTRL), T(B), U(LCTRL), END );
+                       BABLM( BABL_PGDN ,D(LCTL), T(F), U(LCTL), END );
+                       BABLM( BABL_PGUP , D(LCTL), T(B), U(LCTL), END );
+                       BABLM( BABL_DEL_RIGHT_1C ,  T(X),END );  
+                       BABLM( BABL_DEL_LEFT_WORD ,  T(D),T(G),T(E),END );
+                       BABLM( BABL_DEL_RIGHT_WORD ,  T(D),T(W),END );
+                       BABLM( BABL_DEL_TO_LINE_END,    T(D),D(LSFT), T(4),U(LSFT) ,END ); // d$
+                       BABLM( BABL_DEL_TO_LINE_START,  T(D),D(LSFT), T(6),U(LSFT) ,END ); 
 #ifndef BABL_MOVEMENTONLY
                        BABLM( BABL_UNDO , T(U), END );
                        BABLM( BABL_REDO ,  D(LCTL), T(R), U(LCTL), END );  
@@ -268,6 +340,27 @@ But that requires even more clever preprocessor foo.
                        BABLM( BABL_SWITCH_APP_LAST             ,END );
                        BABLM(BABL_CLOSE_APP,   D(LSFT), T(SCLN),U(LSFT), T(Q), D(RSFT), T(1),U(RSFT), END );
                        BABLM(BABL_HELP,         D(LSFT), T(SCLN),U(LSFT),T(H),END); // start search in help
+#ifndef BABL_NOBROWSER
+/* you get to figure this out 
+               BABLM( BABL_BROWSER_NEW_TAB,            D(LGUI), T(T), U(LGUI),END );
+               BABLM( BABL_BROWSER_CLOSE_TAB,          D(LGUI), T(W), U(LGUI),END );
+               BABLM( BABL_BROWSER_REOPEN_LAST_TAB,            D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END );
+               BABLM( BABL_BROWSER_NEXT_TAB,           D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END );
+               BABLM( BABL_BROWSER_PREV_TAB,           D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_URL_BAR,            D(LGUI), T(L), U(LGUI),END );
+               BABLM( BABL_BROWSER_FORWARD,            D(LGUI), T(RIGHT), U(LGUI),END );
+               BABLM( BABL_BROWSER_BACK,                       D(LGUI), T(LEFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_FIND,                       D(LGUI), T(F), U(LGUI),END );
+               BABLM( BABL_BROWSER_BOOKMARK,           D(LGUI), T(D), U(LGUI),END );
+               //BABLM( BABL_BROWSER_DEV_TOOLS,        T(F12), U(LGUI),END  ); // EDGE 
+               BABLM( BABL_BROWSER_DEV_TOOLS,          D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome
+               // Chrome
+               BABLM( BABL_BROWSER_RELOAD,                     D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache
+               BABLM( BABL_BROWSER_FULLSCREEN,         D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F
+               BABLM( BABL_BROWSER_ZOOM_IN,            D(LGUI), T(PLUS), U(LGUI),END );
+               BABLM( BABL_BROWSER_ZOOM_OUT,           D(LGUI), T(MINS), U(LGUI),END );
+*/
+#endif
 #endif  
                 return MACRO_NONE;     
 #endif
@@ -278,37 +371,62 @@ But that requires even more clever preprocessor foo.
 #ifdef READMUX_MODE
 // Readline command line editing + tmux windowing
 // I havent decided how much to do readline and how much tmux
+       if ( BABL_READLINE == shortcut  ) { switch_babble_mode(READMUX_MODE); return MACRO_NONE; }
        case READMUX_MODE:              
-               BABLM( BABL_DEL_RIGHT_1C , D(LCTL), T(D), U(LCTL),END );         
+               
+               BABLM( BABL_GO_LEFT_1C ,                T(LEFT), END );
+               BABLM( BABL_GO_RIGHT_1C ,               T(RIGHT), END );
+               BABLM( BABL_GO_LEFT_WORD ,              D(LALT), T(B), U(LALT), END );
+               BABLM( BABL_GO_RIGHT_WORD ,     D(LALT), T(F), U(LALT), END );
+               BABLM( BABL_GO_START_LINE ,     D(LCTL), T(A), U(LCTL),  END );
+               BABLM( BABL_GO_END_LINE ,               D(LCTL), T(E), U(LCTL), END );
+               //BABLM( BABL_GO_START_DOC              ,END );// tmux?
+               //BABLM( BABL_GO_END_DOC                ,END );  // tmux?
+               BABLM( BABL_GO_NEXT_LINE ,      D(LCTL), T(N), U(LCTL), END );
+               BABLM( BABL_GO_PREV_LINE ,      D(LCTL), T(P), U(LCTL), END );
+               BABLM( BABL_PGDN ,                      T(PGDN), END );
+               BABLM( BABL_PGUP ,                      T(PGUP), END );
+               BABLM( BABL_DEL_RIGHT_1C ,      D(LCTL), T(D), U(LCTL),END );    
                BABLM( BABL_DEL_LEFT_WORD , D(LCTL), T(W), U(LCTL), END );
-               BABLM( BABL_DEL_RIGHT_WORD , D(LALT), T(D), U(LALT), END );
-               BABLM( BABL_GO_LEFT_1C , T(LEFT), END );
-               BABLM( BABL_GO_RIGHT_1C , T(RIGHT), END );
-               BABLM( BABL_GO_LEFT_WORD , D(LALT), T(B), U(LALT), END );
-               BABLM( BABL_GO_RIGHT_WORD , D(LALT), T(F), U(LALT), END );
-               BABLM( BABL_GO_START_LINE ,  D(LCTRL), T(A), U(LCTRL),  END );
-               BABLM( BABL_GO_START_DOC                ,END );// tmux?
-               BABLM( BABL_GO_END_LINE ,  D(LCTRL), T(E), U(LCTRL), END );
-               BABLM( BABL_GO_END_DOC          ,END );  // tmux?
-               BABLM( BABL_GO_NEXT_LINE ,  D(LCTRL), T(N), U(LCTRL), END );
-               BABLM( BABL_GO_PREV_LINE ,  D(LCTRL), T(P), U(LCTRL), END );
-               BABLM( BABL_PGDN , T(PGDN), END );
-               BABLM( BABL_PGUP , T(PGUP), END );
+               BABLM( BABL_DEL_RIGHT_WORD ,    D(LALT), T(D), U(LALT), END );
+               BABLM( BABL_DEL_TO_LINE_END,    D(LCTL), T(K), U(LCTL), END ); 
+               BABLM( BABL_DEL_TO_LINE_START,  D(LCTL), T(U), U(LCTL),  END );
 #ifndef BABL_MOVEMENTONLY
-               BABLM( BABL_UNDO , D(LALT), T(R), U(LALT) , END );
-               BABLM( BABL_REDO , D(LCTL), T(X), U(LCTL),T(C), END ); // arguably
-               BABLM( BABL_CUT , D(LCTL), T(K), U(LCTL), END ); // wrong half the time
-               BABLM( BABL_COPY                ,END ); 
-               BABLM( BABL_PASTE ,  D(LCTL), T(Y), U(LCTL), END );                     
-               BABLM( BABL_SELECT_ALL ,D(LCTL), T(A), T(K), T(Y), U(LCTL) , END );      
-               BABLM( BABL_FIND ,  D(LCTRL), T(R), U(LCTRL), END ); // search history
-               BABLM(BABL_FIND_NEXT,  D(LCTRL), T(S), U(LCTRL), END );
-               BABLM( BABL_FIND_REPLACE                ,END ); 
-               BABLM( BABL_RUNAPP ,  D(LCTRL), T(B), U(LCTRL),  T(C),END );  //tmux
-               BABLM( BABL_SWITCH_APP_NEXT ,  D(LCTRL), T(B), U(LCTRL),  T(N),END );  //tmux
-               BABLM( BABL_SWITCH_APP_LAST ,  D(LCTRL), T(B), U(LCTRL),  T(P),END );  //tmux
-               BABLM( BABL_CLOSE_APP , D(LCTRL), T(B), U(LCTRL),  T(D),END); // usually what I want
-               BABLM( BABL_HELP                ,END ); 
+               BABLM( BABL_UNDO ,                      D(LALT), T(R), U(LALT) , END );
+               BABLM( BABL_REDO ,                      D(LCTL), T(X), U(LCTL),T(C), END ); // arguably
+               BABLM( BABL_CUT ,                       D(LCTL), T(K), U(LCTL), END ); // wrong half the time
+               //BABLM( BABL_COPY              ,END ); 
+               BABLM( BABL_PASTE ,             D(LCTL), T(Y), U(LCTL), END );                  
+               BABLM( BABL_SELECT_ALL ,        D(LCTL), T(A), T(K), T(Y), U(LCTL) , END );      
+               BABLM( BABL_FIND ,              D(LCTL), T(R), U(LCTL), END ); // search history
+               BABLM(BABL_FIND_NEXT,           D(LCTL), T(S), U(LCTL), END );
+               //BABLM( BABL_FIND_REPLACE              ,END ); 
+               BABLM( BABL_RUNAPP ,            D(LCTL), T(B), U(LCTL),  T(C),END );  //tmux
+               BABLM( BABL_SWITCH_APP_NEXT ,  D(LCTL), T(B), U(LCTL),  T(N),END );  //tmux
+               BABLM( BABL_SWITCH_APP_LAST ,  D(LCTL), T(B), U(LCTL),  T(P),END );  //tmux
+               BABLM( BABL_CLOSE_APP ,                 D(LCTL), T(B), U(LCTL),  T(D),END); // usually what I want
+               // BABLM( BABL_HELP             ,END ); 
+#ifndef BABL_NOBROWSER
+/* Add lynx shortcuts? 
+               BABLM( BABL_BROWSER_NEW_TAB,            D(LGUI), T(T), U(LGUI),END );
+               BABLM( BABL_BROWSER_CLOSE_TAB,          D(LGUI), T(W), U(LGUI),END );
+               BABLM( BABL_BROWSER_REOPEN_LAST_TAB,            D(LGUI), D(RSFT),T(T), U(RSFT),U(LGUI),END );
+               BABLM( BABL_BROWSER_NEXT_TAB,           D(LGUI),D(LALT), T(RIGHT),U(LALT), U(LGUI),END );
+               BABLM( BABL_BROWSER_PREV_TAB,           D(LGUI), D(RSFT), T(LEFT), U(RSFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_URL_BAR,            D(LGUI), T(L), U(LGUI),END );
+               BABLM( BABL_BROWSER_FORWARD,            D(LGUI), T(RIGHT), U(LGUI),END );
+               BABLM( BABL_BROWSER_BACK,                       D(LGUI), T(LEFT), U(LGUI),END );
+               BABLM( BABL_BROWSER_FIND,                       D(LGUI), T(F), U(LGUI),END );
+               BABLM( BABL_BROWSER_BOOKMARK,           D(LGUI), T(D), U(LGUI),END );
+               //BABLM( BABL_BROWSER_DEV_TOOLS,        T(F12), U(LGUI),END  ); // EDGE 
+               BABLM( BABL_BROWSER_DEV_TOOLS,          D(LGUI), D(LALT), T(I), U(LALT),U(LGUI),END  ); // Chrome
+               // Chrome
+               BABLM( BABL_BROWSER_RELOAD,                     D(LGUI), T(R), U(LGUI),END ); // add shift for reload w/o cache
+               BABLM( BABL_BROWSER_FULLSCREEN,         D(LGUI), D(LCTL), T(P), U(LCTL), U(LGUI),END ); //command shift F
+               BABLM( BABL_BROWSER_ZOOM_IN,            D(LGUI), T(PLUS), U(LGUI),END );
+               BABLM( BABL_BROWSER_ZOOM_OUT,           D(LGUI), T(MINS), U(LGUI),END );
+*/
+#endif
 #endif
                
        return MACRO_NONE;
index 313fa80ec49cc0afcce7e546671292695047c1d1..67153fb0d8e7a48811c45403d8211e938659bcb0 100644 (file)
@@ -10,6 +10,8 @@ and jeebak & algernon's keymap
 #ifndef _babblePaste_h_included__
 #define _babblePaste_h_included__
 #include "action_layer.h"
+#include "quantum_keycodes.h"
+#include "config.h"
 
 #ifdef USE_BABLPASTE
 
@@ -39,23 +41,28 @@ and jeebak & algernon's keymap
 /* Macros handled by babblepaste. Most should be available for all platforms.
 Whatever isn't defined will NOP  */
 enum  {
-       // Movement
-       BABL_DEL_RIGHT_1C= BABL_START_NUM,
-       BABL_DEL_LEFT_WORD,
-       BABL_DEL_RIGHT_WORD,
-       BABL_GO_LEFT_1C,
+// Movement macros
+       // left & right
+       BABL_GO_LEFT_1C= BABL_START_NUM,
        BABL_GO_RIGHT_1C,
-       BABL_GO_LEFT_WORD,
+       BABL_GO_LEFT_WORD,      
        BABL_GO_RIGHT_WORD,
        BABL_GO_START_LINE,
        BABL_GO_END_LINE,
+       // now up & down
        BABL_GO_START_DOC,
        BABL_GO_END_DOC,
        BABL_GO_NEXT_LINE,
        BABL_GO_PREV_LINE,
        BABL_PGDN,
        BABL_PGUP,
+       // And the delete options
+       //BABL_DEL_LEFT_1C == backspace, so why bother. 
+       BABL_DEL_RIGHT_1C, // usually = Del
+       BABL_DEL_LEFT_WORD,
+       BABL_DEL_RIGHT_WORD,
+       BABL_DEL_TO_LINE_END, // delete from cursor to end of line
+       BABL_DEL_TO_LINE_START, // delete from cursor to begining line
 #ifndef BABL_MOVEMENTONLY
           // Cut & Paste
     BABL_UNDO,
@@ -64,20 +71,142 @@ enum  {
        BABL_COPY,
        BABL_PASTE,
        BABL_SELECT_ALL,
-       // GUI or app
+       /* not yet implemented
+       BABL_SWAP_LAST2C // swap last characters before the cursor
+       BABL_SWAP_LAST2W // Swap the last two words before the cursor
+       */
+               // find & replace
        BABL_FIND,
        BABL_FIND_NEXT,
        BABL_FIND_REPLACE,
+               // GUI or app
        BABL_RUNAPP,
        BABL_SWITCH_APP_NEXT,
        BABL_SWITCH_APP_LAST, // previous
        BABL_CLOSE_APP,
-       BABL_HELP
+       BABL_HELP,
+
+#ifndef BABL_NOBROWSER
+       BABL_BROWSER_NEW_TAB,
+       BABL_BROWSER_CLOSE_TAB,
+       BABL_BROWSER_REOPEN_LAST_TAB,
+       BABL_BROWSER_NEXT_TAB,
+       BABL_BROWSER_PREV_TAB,
+       BABL_BROWSER_URL_BAR,
+       BABL_BROWSER_FORWARD,
+       BABL_BROWSER_BACK,
+       BABL_BROWSER_FIND,
+       BABL_BROWSER_BOOKMARK,
+       BABL_BROWSER_DEV_TOOLS, // hard one to remember
+       BABL_BROWSER_RELOAD,
+       BABL_BROWSER_FULLSCREEN,
+       BABL_BROWSER_ZOOM_IN,
+       BABL_BROWSER_ZOOM_OUT,
+       
+#endif
+
 #endif
+// Macros for mode switching
+#ifdef MS_MODE
+       BABL_WINDOWS,
+#endif
+#ifdef MAC_MODE
+       BABL_MAC,
+#endif
+#ifdef LINUX_MODE
+       BABL_LINUX,
+#endif
+#ifdef EMACS_MODE
+       BABL_EMACS,
+#endif
+#ifdef VI_MODE
+       BABL_VI,
+#endif
+#ifdef READMUX_MODE
+       BABL_READLINE,
+#endif
+
+
 };
 
-// How many macros/ how many array elements?
-#define BABL_NUM_MACROS 28
+// BUG, used to jump to babble functiion. Surely there is a way to calculate size of enum? 
+#define BABL_NUM_MACROS 48 + 4 // 48 + # of defined modes. 
+
+/* And all the shorthand keymap ready versions */
+// First the mode switching macros
+#ifdef MS_MODE
+#define B_WIN          M(BABL_WINDOWS)
+#endif
+#ifdef MAC_MODE
+#define B_MAC  M(BABL_MAC)
+#endif
+#ifdef LINUX_MODE
+#define B_LNX  M(BABL_LINUX)
+#endif
+#ifdef EMACS_MODE
+#define B_EMAX  M(BABL_EMACS)
+#endif
+#ifdef VI_MODE
+#define B_VI   M(BABL_VI)
+#endif
+#ifdef READMUX_MODE
+#define B_READ  M(BABL_READLINE)
+#endif
+
+// and all the movement & action. 
+
+#define B_L1C  M(BABL_GO_LEFT_1C)
+#define B_R1C  M(BABL_GO_RIGHT_1C)
+#define B_L1W  M(BABL_GO_LEFT_WORD)
+#define B_R1W  M(BABL_GO_RIGHT_WORD)
+#define B_GSOL  M(BABL_GO_START_LINE)
+#define B_GEOL  M(BABL_GO_END_LINE)
+#define B_GTOP  M(BABL_GO_START_DOC)
+#define B_GEND  M(BABL_GO_END_DOC)
+#define B_DOWN  M(BABL_GO_NEXT_LINE)
+#define B_UP  M(BABL_GO_PREV_LINE)
+#define B_PGDN  M(BABL_PGDN)
+#define B_PGUP  M(BABL_PGUP)
+//#define B_BKSP  M(BABL_DEL_LEFT_1C) == backspace so why bother. 
+#define B_DEL  M(BABL_DEL_RIGHT_1C) // usually = Del
+#define B_DLW  M(BABL_DEL_LEFT_WORD)
+#define B_DRW  M(BABL_DEL_RIGHT_WORD)
+#define B_DEOL  M(BABL_DEL_TO_LINE_END) // delete from cursor to end of line
+#define B_DSOL  M(BABL_DEL_TO_LINE_START) // delete from cursor to begining line
+#define B_UNDO  M(BABL_UNDO)
+#define B_REDO  M(BABL_REDO)
+#define B_CUT  M(BABL_CUT)
+#define B_COPY  M(BABL_COPY)
+#define B_PAST  M(BABL_PASTE)
+#define B_SELA  M(BABL_SELECT_ALL)
+#define B_FIND  M(BABL_FIND)
+#define B_FINDN  M(BABL_FIND_NEXT)
+#define B_FINDR  M(BABL_FIND_REPLACE)
+#define B_RAPP  M(BABL_RUNAPP)
+#define B_NAPP  M(BABL_SWITCH_APP_NEXT)
+#define B_PAPP M(BABL_SWITCH_APP_LAST) // previous
+#define B_CAPP  M(BABL_CLOSE_APP)
+#define B_HELP  M(BABL_HELP)
+#define B_NTAB  M(BABL_BROWSER_NEW_TAB)
+#define B_CTAB  M(BABL_BROWSER_CLOSE_TAB)
+#define B_ROTB  M(BABL_BROWSER_REOPEN_LAST_TAB)
+#define B_NXTB  M(BABL_BROWSER_NEXT_TAB)
+#define B_PTAB  M(BABL_BROWSER_PREV_TAB)
+#define B_NURL M(BABL_BROWSER_URL_BAR)
+#define B_BFWD  M(BABL_BROWSER_FORWARD)
+#define B_BBAK  M(BABL_BROWSER_BACK)
+#define B_BFND  M(BABL_BROWSER_FIND)
+#define B_BOOK  M(BABL_BROWSER_BOOKMARK)
+#define B_BDEV  M(BABL_BROWSER_DEV_TOOLS) // hard one to remember
+#define B_BRLD  M(BABL_BROWSER_RELOAD)
+#define B_BFUlL  M(BABL_BROWSER_FULLSCREEN)
+#define B_ZMIN  M(BABL_BROWSER_ZOOM_IN)
+#define B_ZMOT  M(BABL_BROWSER_ZOOM_OUT)
+
+
+
 
 
 /*  from action_macro.h
index 7ad1b0f0f51b27fdafaec2f88554c19d3d03001f..9f9b050944f73789f6b2fb550f907c038ee5d4a2 100644 (file)
@@ -5,23 +5,28 @@
 
 #define USE_BABLPASTE
 
+// Expect to get errors if you comment a feature out and leave it in your keymap. 
+
 #ifdef USE_BABLPASTE
 //define BabblePaste maps
 // Windows. 
-//#define MS_MODE 1
-#define MAC_MODE   0
+#define MS_MODE 0
+#define MAC_MODE   1
 //aka gnome+KDE
 //#define LINUX_MODE 2 
 //#define EMACS_MODE 3
-//#define VI_MODE 4
+#define VI_MODE 4
 //#define WORDSTAR_MODE 5
 // Readline and tmux
 #define READMUX_MODE 6 
 #endif
 
 // Uncomment if you need more free flash space
-// It removes everything but cursor movement
+
+// This removes everything but cursor movement
 //#define BABL_MOVEMENTONLY
+// and this just removes browser shortcuts
+//#define BABL_NOBROWSER
 
 // place overrides here
 #endif
index 3a162db864cc4305085130445b6a1f66d956d3e1..a6628254758d3b1a2b4607a8bb5c7175ef4be062 100644 (file)
 #define _TRAN 5
 
 
-
-
-// adjust babblemode default
-extern uint8_t babble_mode;
-
-
-
 enum layer_keycodes {
 QWR,
 CDH,
@@ -46,11 +39,6 @@ TRAN
 enum macro_keycodes {
 DHPASTE=1,
 VIBRK,
-B_LNX,
-B_WIN,
-B_MAC,
-B_VI,
-B_READ ,
 };
 
 
@@ -115,24 +103,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   ____,    KC_SCLN, KC_TILDE,  KC_COLN,  KC_TILDE,  KC_PIPE,          KC_DLR, KC_ASTR, ____,  KC_DOT ,   KC_SLSH,     ____, ____, ____,\
   ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____
 ),
+/* 
+* |ESC | Win| MAC|RdLn| VI |    |    |    |    |    |    |    |    |    |    |    |
+*  -------------------------------------------------------------------------------'
+* |     |    |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |Bakspace| Del|
+* ---------------------------------------------------------------------------
+* | tab  |  q |  w |Find|    |pTab |DSOL|DelW| Up |DelW|DEOL|  [ |  ] |  \    |    |
+*  -------------------------------------------------------------------------------'
+* |Bak/Mov|  a |  s |  d |    |nTab |GSOL| <- | Dwn | -> | EOL |  ' | enter     |PgUp|
+* --------------------------------------------------------------------------------     
+* |Lsft    |Undo| Cut|Copy|Pste|  b |  n |  m |  , |  . |  / |      Rsft| Up| PgDn|
+* ---------------------------------------------------------------------------------    
+* |Lctl   |Lgui  |Lalt |       Space/Sym      | GUI |  Sym |  Rctl |Left|Down|Rght|
+* ---------------------------------------------------------------------------------    
+*/
 
 [_MOV] = KEYMAP (\
-  ____,     M(B_WIN),M(B_MAC),M(B_READ), M(B_VI), ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,     ____,  \
-  ____,     M(BABL_UNDO), ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,   \
-  ____,     ____,RGUI(KC_TAB), ____,  ____, RCTL(KC_B), ____, M(BABL_DEL_LEFT_WORD), KC_UP,   M(BABL_DEL_RIGHT_WORD),   ____,  ____,     ____,   ____, \
-  ____,     RCTL(KC_A), KC_S, RCTL(KC_K), RCTL(KC_E), ____,   M(BABL_GO_START_LINE), KC_LEFT,KC_DOWN, KC_RIGHT,  M(BABL_GO_END_LINE), ____,____,____,\
-  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____, \
+  ____,    B_MAC,B_WIN,B_READ, B_VI, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,     ____,  \
+  ____,      ____, B_PAPP, B_NAPP, ____, ____,      ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,   \
+  ____,     B_UNDO, ____, B_BFND, ____, B_PTAB,     B_DSOL, B_DLW, B_UP,   B_DRW, B_DEOL,  ____,  ____,   ____, \
+  ____,     B_SELA, B_BRLD, ____, ____, B_NXTB,     B_GSOL, B_L1C, B_DOWN, B_R1C,B_GEOL,   ____, ____, ____,\
+  ____,     B_UNDO,B_CUT, B_COPY, B_PAST, B_PAST,    ____, ____, ____, ____, ____,       ____,  ____,   ____, \
   ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____
 ),
 
 [_TRAN] = KEYMAP (\
   ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,     ____,  \
-  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____,    ____,   \
-  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____, \
-  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____, \
-  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____, ____,    ____,     ____,   ____, \
-  ____,     ____, ____, ____, ____, ____, ____, ____, ____,   ____
-)
+  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, ____,   \
+  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, \
+  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, \
+  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____, ____,    ____, ____,   ____, \
+  ____,     ____, ____, ____, ____, ____,      ____, ____, ____, ____
+) 
 };
 
 const uint16_t PROGMEM fn_actions[] = {
@@ -188,6 +190,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 {
 
 /* If this is in the range of BABL macros, call a separate function */
+/* Any clever remapping with modifiers should happen here e.g. shift bablkey does opposite*/
 #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?
@@ -235,31 +238,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 
 
 
-#ifdef USE_BABLPASTE
-
-#ifdef LINUX_MODE
-       case B_LNX:
-               return switch_babble_mode(LINUX_MODE);
-#endif
-#ifdef MS_MODE 
-       case B_WIN:
-               return switch_babble_mode(MS_MODE);
-#endif
-#ifdef MAC_MODE
-       case B_MAC:
-               return switch_babble_mode(MAC_MODE);
-#endif
-#ifdef VI_MODE
-       case B_VI:
-               return switch_babble_mode(VI_MODE);
-#endif
-#ifdef READMUX_MODE
-       case B_READ:
-               return switch_babble_mode(READMUX_MODE);
-#endif
-#endif
-
 
        default:
        return MACRO_NONE;
@@ -286,10 +264,6 @@ void led_set_user(uint8_t usb_led) {
 }
 
 
-macro_t* switch_babble_mode( uint8_t id) {
- babble_mode= id;
- return MACRO_NONE; //less typing above
-}