summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené Neumann <rene.neumann@in.tum.de>2013-06-03 15:07:09 +0200
committerRené Neumann <rene.neumann@in.tum.de>2013-06-03 15:07:09 +0200
commit23bd442354de380e32e9db73e8924f36a5a908c8 (patch)
treeca5f02ea00e79b4a41f10f380e9b49de8a06e28a
parentf68f4a2b17de046be926045ea5c255e1ca7fb7f3 (diff)
downloadoverlay-23bd442354de380e32e9db73e8924f36a5a908c8.tar.gz
overlay-23bd442354de380e32e9db73e8924f36a5a908c8.tar.bz2
overlay-23bd442354de380e32e9db73e8924f36a5a908c8.zip
dunst: numlock.patch
-rw-r--r--x11-misc/dunst/Manifest3
-rw-r--r--x11-misc/dunst/dunst-1.0.0.ebuild4
-rw-r--r--x11-misc/dunst/files/dunst-1.0.0-numlock.patch130
3 files changed, 136 insertions, 1 deletions
diff --git a/x11-misc/dunst/Manifest b/x11-misc/dunst/Manifest
index bf9a2c0..551f95e 100644
--- a/x11-misc/dunst/Manifest
+++ b/x11-misc/dunst/Manifest
@@ -1,2 +1,3 @@
+AUX dunst-1.0.0-numlock.patch 5898 SHA256 f48b56b74a7bae8191d0aebc2235677d23a4b26c3cb35266a0e73af4ca1e8b3e SHA512 1ddb9779f09acce1267158fef6e451cc2532c9f4bda7b4fd16ebe08603ea6c3ee05f5aabdace85667dd50ff997c0906ce7c9a17728a0b1f967a5d9ccc0faffd5 WHIRLPOOL 4bffa04c74d0cc392bbb36d6b80f74076a1bd8681d0f801a0f7380eea4937c796f6fcaa77f0488483252c8676f38af44cba77696dfce708d4d4e912d619a1652
DIST dunst-1.0.0.tar.bz2 75306 SHA256 5c79ef11165421a4828453a42dfe9c60a4cb9d8743f970186a90c67e277f5280 SHA512 81490597ef8354d2c32838c72e03b121cf09d61e0fbef697a8adfb0c4783e45b3bb05790bf94cc1d0ed41e7f4b5f13a8edfdc65fec5569dc29966edd0807bfe1 WHIRLPOOL 724295fec6d284cc512944435a93df8c55b214d59d2b2b33c3fbf83e6a51db40b6ca15ce68446988dbeab695b0a907a4301124f35fb6748bed8c8143042b0bd9
-EBUILD dunst-1.0.0.ebuild 1032 SHA256 788c5894046c0fd5eef6d3d3bdbfe42ebd532eb7dbd805f6626399cbd571da6d SHA512 edd37151b948fd7e66ca3f4f24482e314c9878a12bc86f9e04ba6fee6c1e48b6e76dd203b5b97fe042195feb5b5aa4d468f734843f2b2c4662ca4275791ea00c WHIRLPOOL bc86b19f6629482d524274753dfb6323519a24e6554827ebd766df5048b826d79d76758517b9967a4a5d1e042478aa49cf92adc9ba0189919309cc5a1a1fec5f
+EBUILD dunst-1.0.0.ebuild 1097 SHA256 cb4a18d62a5f989da62d1a0e8d2d1ec477abee650fc37f191ea92d666ea980af SHA512 419c38b3ed6908c719f9556f48943effea7214644730319a62c48c7c555c331d532ecde90b5a88748625f2695ac1c2951948a5c4406a278dafe9d0eb1f30407b WHIRLPOOL 81a05b2463a84fd15a4ae1053bed80cdf71c859314a19aa090d5f39b0c5ae9692be7a94981040f97ba727541db44921a5faa31983651c76b8b85e3ed90e4bdaf
diff --git a/x11-misc/dunst/dunst-1.0.0.ebuild b/x11-misc/dunst/dunst-1.0.0.ebuild
index d43798a..3e7ac00 100644
--- a/x11-misc/dunst/dunst-1.0.0.ebuild
+++ b/x11-misc/dunst/dunst-1.0.0.ebuild
@@ -4,6 +4,8 @@
EAPI=5
+inherit eutils
+
DESCRIPTION="customizable and lightweight notification-daemon"
HOMEPAGE="http://www.knopwob.org/dunst/"
SRC_URI="http://www.knopwob.org/public/dunst-release/${P}.tar.bz2"
@@ -37,6 +39,8 @@ src_prepare() {
# don't build dunstify: it pulls in deps but is not being installed
sed -ie "/^all:/ s:dunstify::" Makefile || die "sed failed"
+
+ epatch "${FILESDIR}"/dunst-1.0.0-numlock.patch
}
src_install() {
diff --git a/x11-misc/dunst/files/dunst-1.0.0-numlock.patch b/x11-misc/dunst/files/dunst-1.0.0-numlock.patch
new file mode 100644
index 0000000..e6b4d9a
--- /dev/null
+++ b/x11-misc/dunst/files/dunst-1.0.0-numlock.patch
@@ -0,0 +1,130 @@
+diff --git a/x.c b/x.c
+index 2ad74d3..4248082 100644
+--- a/x.c
++++ b/x.c
+@@ -458,6 +458,53 @@ static void setopacity(Window win, unsigned long opacity)
+
+
+
++ /*
++ * Returns the modifier which is NumLock.
++ */
++static KeySym x_numlock_mod()
++{
++ const KeyCode nl = XKeysymToKeycode(xctx.dpy, XStringToKeysym("Num_Lock"));
++
++ int mod;
++ KeySym sym = 0;
++ XModifierKeymap * map = XGetModifierMapping(xctx.dpy);
++
++ for (mod = 0; mod < 8; mod++) {
++ for (int j = 0; j < map->max_keypermod; j++) {
++ if (map->modifiermap[mod*map->max_keypermod+j] == nl) {
++ switch (mod) {
++ case ShiftMapIndex:
++ sym = ShiftMask;
++ break;
++ case LockMapIndex:
++ sym = LockMask;
++ break;
++ case ControlMapIndex:
++ sym = ControlMask;
++ break;
++ case Mod1MapIndex:
++ sym = Mod1Mask;
++ break;
++ case Mod2MapIndex:
++ sym = Mod2Mask;
++ break;
++ case Mod3MapIndex:
++ sym = Mod3Mask;
++ break;
++ case Mod4MapIndex:
++ sym = Mod4Mask;
++ break;
++ case Mod5MapIndex:
++ sym = Mod5Mask;
++ break;
++ }
++ }
++ }
++ }
++
++ XFreeModifiermap(map);
++ return sym;
++}
+
+ /*
+ * Helper function to use glib's mainloop mechanic
+@@ -488,6 +535,7 @@ gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ gpointer user_data)
+ {
+ XEvent ev;
++ unsigned int state;
+ while (XPending(xctx.dpy) > 0) {
+ XNextEvent(xctx.dpy, &ev);
+ switch (ev.type) {
+@@ -508,10 +556,13 @@ gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ }
+ break;
+ case KeyPress:
++ state = ev.xkey.state;
++ /* NumLock is also encoded in the state. Remove it. */
++ state &= ~x_numlock_mod();
+ if (settings.close_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.close_ks.sym
+- && settings.close_ks.mask == ev.xkey.state) {
++ && settings.close_ks.mask == state) {
+ if (displayed) {
+ notification *n = g_queue_peek_head(displayed);
+ if (n)
+@@ -521,19 +572,19 @@ gboolean x_mainloop_fd_dispatch(GSource * source, GSourceFunc callback,
+ if (settings.history_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.history_ks.sym
+- && settings.history_ks.mask == ev.xkey.state) {
++ && settings.history_ks.mask == state) {
+ history_pop();
+ }
+ if (settings.close_all_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.close_all_ks.sym
+- && settings.close_all_ks.mask == ev.xkey.state) {
++ && settings.close_all_ks.mask == state) {
+ move_all_to_history();
+ }
+ if (settings.context_ks.str
+ && XLookupKeysym(&ev.xkey,
+ 0) == settings.context_ks.sym
+- && settings.context_ks.mask == ev.xkey.state) {
++ && settings.context_ks.mask == state) {
+ context_menu();
+ }
+ break;
+@@ -926,9 +977,12 @@ int x_shortcut_grab(keyboard_shortcut * ks)
+
+ x_shortcut_setup_error_handler();
+
+- if (ks->is_valid)
++ if (ks->is_valid) {
+ XGrabKey(xctx.dpy, ks->code, ks->mask, root,
+ true, GrabModeAsync, GrabModeAsync);
++ XGrabKey(xctx.dpy, ks->code, ks->mask | x_numlock_mod() , root,
++ true, GrabModeAsync, GrabModeAsync);
++ }
+
+ if (x_shortcut_tear_down_error_handler()) {
+ fprintf(stderr, "Unable to grab key \"%s\"\n", ks->str);
+@@ -945,8 +999,10 @@ void x_shortcut_ungrab(keyboard_shortcut * ks)
+ {
+ Window root;
+ root = RootWindow(xctx.dpy, DefaultScreen(xctx.dpy));
+- if (ks->is_valid)
++ if (ks->is_valid) {
+ XUngrabKey(xctx.dpy, ks->code, ks->mask, root);
++ XUngrabKey(xctx.dpy, ks->code, ks->mask | x_numlock_mod(), root);
++ }
+ }
+
+ /*