Update of /cvsroot/tmux/tmux
In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv4563

Modified Files:
        xterm-keys.c 
Log Message:
Sync OpenBSD patchset 757:

Simplify xterm modifier detection by treating as a bitmask + 1. Spotted
by and diff from Emanuele Giaquinta.


Index: xterm-keys.c
===================================================================
RCS file: /cvsroot/tmux/tmux/xterm-keys.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- xterm-keys.c        4 Dec 2009 22:14:47 -0000       1.5
+++ xterm-keys.c        7 Sep 2010 13:21:18 -0000       1.6
@@ -114,27 +114,21 @@
 xterm_keys_modifiers(const char *template, const char *buf, size_t len)
 {
        size_t  idx;
+       int     param, modifiers;
 
        idx = strcspn(template, "_");
        if (idx >= len)
                return (0);
-       switch (buf[idx]) {
-       case '2':
-               return (KEYC_SHIFT);
-       case '3':
-               return (KEYC_ESCAPE);
-       case '4':
-               return (KEYC_SHIFT|KEYC_ESCAPE);
-       case '5':
-               return (KEYC_CTRL);
-       case '6':
-               return (KEYC_SHIFT|KEYC_CTRL);
-       case '7':
-               return (KEYC_ESCAPE|KEYC_CTRL);
-       case '8':
-               return (KEYC_SHIFT|KEYC_ESCAPE|KEYC_CTRL);
-       }
-       return (0);
+       param = buf[idx] - '1';
+
+       modifiers = 0;
+       if (param & 1)
+               modifiers |= KEYC_SHIFT;
+       if (param & 2)
+               modifiers |= KEYC_ESCAPE;
+       if (param & 4)
+               modifiers |= KEYC_CTRL;
+       return (modifiers);
 }
 
 /*
@@ -171,30 +165,19 @@
        int                      modifiers;
        char                    *out;
 
-#define KEY_MODIFIERS(key, modifiers) \
-       (((key) & (KEYC_SHIFT|KEYC_ESCAPE|KEYC_CTRL)) == (modifiers))
-       modifiers = 0;
-       if (KEY_MODIFIERS(key, KEYC_SHIFT))
-               modifiers = 2;
-       else if (KEY_MODIFIERS(key, KEYC_ESCAPE))
-               modifiers = 3;
-       else if (KEY_MODIFIERS(key, KEYC_SHIFT|KEYC_ESCAPE))
-               modifiers = 4;
-       else if (KEY_MODIFIERS(key, KEYC_CTRL))
-               modifiers = 5;
-       else if (KEY_MODIFIERS(key, KEYC_SHIFT|KEYC_CTRL))
-               modifiers = 6;
-       else if (KEY_MODIFIERS(key, KEYC_ESCAPE|KEYC_CTRL))
-               modifiers = 7;
-       else if (KEY_MODIFIERS(key, KEYC_SHIFT|KEYC_ESCAPE|KEYC_CTRL))
-               modifiers = 8;
-#undef KEY_MODIFIERS
+       modifiers = 1;
+       if (key & KEYC_SHIFT)
+               modifiers += 1;
+       if (key & KEYC_ESCAPE)
+               modifiers += 2;
+       if (key & KEYC_CTRL)
+               modifiers += 4;
 
        /*
         * If the key has no modifiers, return NULL and let it fall through to
         * the normal lookup.
         */
-       if (modifiers == 0)
+       if (modifiers == 1)
                return (NULL);
 
        /* Otherwise, find the key in the table. */


------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
tmux-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to