]> git.decadent.org.uk Git - ion3.git/blobdiff - ioncore/conf-bindings.c
[svn-upgrade] Integrating new upstream version, ion3 (20070506)
[ion3.git] / ioncore / conf-bindings.c
index 56d679e6dd54458a4e4b305bb203e0f6191f3bc4..c449a87cdbf740f3e4a69e1b80cca6dd9810d8ab 100644 (file)
@@ -3,10 +3,7 @@
  *
  * Copyright (c) Tuomo Valkonen 1999-2007. 
  *
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
  */
 
 #include <string.h>
@@ -199,12 +196,13 @@ static bool do_submap(WBindmap *bindmap, const char *str,
                       ExtlTab subtab, uint action, uint mod, uint ksb)
 {
     WBinding binding, *bnd;
-    uint kcb;
+    uint kcb=0;
 
     if(action!=BINDING_KEYPRESS)
         return FALSE;
     
     kcb=XKeysymToKeycode(ioncore_g.dpy, ksb);
+    
     bnd=bindmap_lookup_binding(bindmap, action, mod, kcb);
     
     if(bnd!=NULL && bnd->submap!=NULL && bnd->state==mod)
@@ -239,6 +237,9 @@ static StringIntMap action_map[]={
     {"mclick", BINDING_BUTTONCLICK},
     {"mdblclick", BINDING_BUTTONDBLCLICK},
     {"mdrag", BINDING_BUTTONMOTION},
+    {"submap_enter", BINDING_SUBMAP_ENTER},
+    {"submap_wait", BINDING_SUBMAP_RELEASEMOD},
+    /*{"submap_leave", BINDING_SUBMAP_LEAVE},*/
     {NULL, 0}
 };
 
@@ -271,14 +272,16 @@ static bool do_entry(WBindmap *bindmap, ExtlTab tab,
             goto fail;
         }
     }
+    
+    if(!BINDING_IS_PSEUDO(action)){
+        if(!extl_table_gets_s(tab, "kcb", &ksb_str))
+            goto fail;
 
-    if(!extl_table_gets_s(tab, "kcb", &ksb_str))
-        goto fail;
-
-    if(!ioncore_parse_keybut(ksb_str, &mod, &ksb,
-                             (action!=BINDING_KEYPRESS && action!=-1), 
-                             init_any)){
-        goto fail;
+        if(!ioncore_parse_keybut(ksb_str, &mod, &ksb,
+                                 (action!=BINDING_KEYPRESS && action!=-1), 
+                                 init_any)){
+            goto fail;
+        }
     }
     
     if(extl_table_gets_t(tab, "submap", &subtab)){