Package: alltray
Version: 0.69-2
Severity: wishlist
Tags: patch

Please apply this patch allowing several modifiers.
New syntax:  -k Modifier:Modifier:...:keycode .

-- System Information:
Debian Release: 4.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-4-686
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)

Versions of packages alltray depends on:
ii  libatk1.0-0               1.12.4-2       The ATK accessibility toolkit
ii  libc6                     2.3.6.ds1-12   GNU C Library: Shared libraries
ii  libcairo2                 1.2.4-4        The Cairo 2D vector graphics libra
ii  libfontconfig1            2.4.2-1        generic font configuration library
ii  libfreetype6              2.2.1-5        FreeType 2 font engine, shared lib
ii  libgconf2-4               2.16.0-3       GNOME configuration database syste
ii  libglib2.0-0              2.12.6-2       The GLib library of C routines
ii  libgtk2.0-0               2.8.20-5       The GTK+ graphical user interface 
ii  liborbit2                 1:2.14.4-1     libraries for ORBit2 - a CORBA ORB
ii  libpango1.0-0             1.14.8-5       Layout and rendering of internatio
ii  libpng12-0                1.2.15~beta5-1 PNG library - runtime
ii  libx11-6                  2:1.0.3-5      X11 client-side library
ii  libxcursor1               1.1.7-4        X cursor management library
ii  libxext6                  1:1.0.1-2      X11 miscellaneous extension librar
ii  libxfixes3                1:4.0.1-5      X11 miscellaneous 'fixes' extensio
ii  libxi6                    1:1.0.1-4      X11 Input extension library
ii  libxinerama1              1:1.0.1-4.1    X11 Xinerama extension library
ii  libxrandr2                2:1.1.0.2-5    X11 RandR extension library
ii  libxrender1               1:0.9.1-3      X Rendering Extension client libra
ii  zlib1g                    1:1.2.3-13     compression library - runtime

alltray recommends no packages.

-- no debconf information
diff -u -Nru alltray-0.69/src/shortcut.c alltray-0.69.new/src/shortcut.c
--- alltray-0.69/src/shortcut.c	2006-07-06 17:42:23.000000000 +0200
+++ alltray-0.69.new/src/shortcut.c	2007-02-19 09:41:58.000000000 +0100
@@ -44,13 +44,27 @@
 #include "common.h"
 #include "utils.h"
 
+struct {
+  gchar* name;
+  unsigned int mask;
+} modifiers[] = {
+  { "Shift", ShiftMask },
+  { "Control", ControlMask },
+  { "Alt", Mod1Mask },
+  { "Winkey_right", Mod4Mask },
+  { "AltGr", Mod5Mask },
+  { NULL, 0}
+};
+
+
 gboolean parse_shortcut (gchar *string, 
     unsigned int *key_return, unsigned int *modifier_return)
 {
 
   gchar *tmp=NULL;
   gchar *colon=NULL;
-  gchar *modifier=NULL;
+  gchar *current=NULL;
+  int i;
 
 
   if (debug) printf ("parse_shortcut\n");
@@ -59,74 +73,34 @@
     return FALSE;
 
   tmp=g_strdup (string);
-  
-  colon=strstr (tmp,":");
 
-  if (colon) {
-    if (debug) printf ("colon: %s\n", colon);
+  *modifier_return=0;
+  for (current=tmp; (colon=strchr (current,':')) != NULL; current=colon+1) {
 
-    *key_return =atoi (++colon);
-    
-    if (*key_return == 0)
-      *key_return=XKeysymToKeycode(GDK_DISPLAY(), XStringToKeysym(colon));
-
-   *(--colon)=0;
-   modifier=tmp;
-  
-   if (debug) printf ("modifier: %s\n", modifier);
-
-   do {
-    
-    if (!strcmp (modifier, "Shift")) {
-      if (debug) printf ("found Shift\n");
-      *modifier_return=ShiftMask;
-      break;
-    }
-    
-    if (!strcmp (modifier, "Control")) {
-      if (debug) printf ("found Control\n");
-      *modifier_return=ControlMask;
-      break;
-    }
-  
-    if (!strcmp (modifier, "Alt")) {
-      if (debug) printf ("found Alt\n");
-      *modifier_return=Mod1Mask;
-      break;
-    }
-    
-    if (!strcmp (modifier, "Winkey_right")) {
-      if (debug) printf ("found Winkey_right\n");
-      *modifier_return=Mod4Mask;
-      break;
-    }   
+   *colon=0;
 
-    if (!strcmp (modifier, "AltGr")) {
-      if (debug) printf ("found AltGr\n");
-      *modifier_return=Mod5Mask;
-      break;
-    }       
+   if (debug) printf ("modifier: %s\n", current);
 
+   for (i = 0; modifiers[i].name; ++i) {
+    if (!strcmp (current, modifiers[i].name)) {
+      if (debug) printf ("found %s\n", modifiers[i].name);
+      *modifier_return|=modifiers[i].mask;
+      break;
+    }
+   }
 
+   if (!modifiers[i].name) {
     printf ("\n\nAllTray: unknown modifier!"\
     " (Only \"Shift\", \"Control\" \"Alt\" or \"AltGr\" is allowed).\n\n");
-    
     g_free (tmp);
     return FALSE;
+   }
+  }
 
-  } while (0);
- 
-           
-  } else {
-
-    *key_return =atoi (tmp);
-    
-    if (*key_return == 0) 
-      *key_return=XKeysymToKeycode(GDK_DISPLAY(), XStringToKeysym(tmp));
+  *key_return = atoi (current);
 
-    *modifier_return=AnyModifier;
-  
-  }
+  if (*key_return == 0) 
+   *key_return=XKeysymToKeycode(GDK_DISPLAY(), XStringToKeysym(current));
 
   g_free (tmp);
 

Reply via email to