summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dmenu.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/dmenu.c b/dmenu.c
index 9fc07f7..a50e138 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -417,10 +417,30 @@ keypress(XKeyEvent *ev)
goto draw;
case XK_g: ksym = XK_Home; break;
case XK_G: ksym = XK_End; break;
- case XK_h: ksym = XK_Up; break;
- case XK_j: ksym = XK_Next; break;
- case XK_k: ksym = XK_Prior; break;
- case XK_l: ksym = XK_Down; break;
+ case XK_h:
+ if(lines > 0)
+ ksym = XK_Prior;
+ else
+ ksym = XK_Up;
+ break;
+ case XK_j:
+ if(lines > 0)
+ ksym = XK_Down;
+ else
+ ksym = XK_Next;
+ break;
+ case XK_k:
+ if(lines > 0)
+ ksym = XK_Up;
+ else
+ ksym = XK_Prior;
+ break;
+ case XK_l:
+ if(lines > 0)
+ ksym = XK_Next;
+ else
+ ksym = XK_Down;
+ break;
default:
return;
}