Hi.

Here's a patch which does it.  It's quick and dirty hardcoded; it'd be nicer
to have an rc.xml-configurable option, but I couldn't be bothered.

Index: openbox/event.c
===================================================================
--- openbox/event.c     (revision 5500)
+++ openbox/event.c     (working copy)
@@ -1210,6 +1210,15 @@
     ObMenuFrame *f;
     ObMenuEntryFrame *e;
 
+    static guint h, j, k, l;
+    if (h == 0 && j == 0 && k == 0 && l == 0) {
+        int nil;
+        translate_key("h", &nil, &h);
+        translate_key("j", &nil, &j);
+        translate_key("k", &nil, &k);
+        translate_key("l", &nil, &l);
+    }
+
     switch (ev->type) {
     case ButtonRelease:
         if (menu_can_hide) {
@@ -1246,19 +1255,23 @@
             ObMenuFrame *f;
             if ((f = find_active_menu()))
                 menu_entry_frame_execute(f->selected, ev->xkey.state);
-        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_LEFT)) {
+        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_LEFT) ||
+                   ev->xkey.keycode == h) {
             ObMenuFrame *f;
             if ((f = find_active_or_last_menu()) && f->parent)
                 menu_frame_select(f, NULL);
-        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_RIGHT)) {
+        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_RIGHT) ||
+                   ev->xkey.keycode == l) {
             ObMenuFrame *f;
             if ((f = find_active_or_last_menu()) && f->child)
                 menu_frame_select_next(f->child);
-        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_UP)) {
+        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_UP) ||
+                   ev->xkey.keycode == k) {
             ObMenuFrame *f;
             if ((f = find_active_or_last_menu()))
                 menu_frame_select_previous(f);
-        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_DOWN)) {
+        } else if (ev->xkey.keycode == ob_keycode(OB_KEY_DOWN) ||
+                   ev->xkey.keycode == j) {
             ObMenuFrame *f;
             if ((f = find_active_or_last_menu()))
                 menu_frame_select_next(f);


-- 
Jonas Kölker <[EMAIL PROTECTED]> <URL:http://jonaskoelker.homeunix.org>

Attachment: signature.asc
Description: Digital signature

Reply via email to