Package: icewm
Version: 1.2.28-1
Severity: wishlist

Hi Eduard,

can you apply this patch to icewm? It adds AltGr as a key symbol. This
makes it possible to use AltGr+Tab as KeySysSwitchNext. This patch was
posted on the ice-user mailinglist and I did not encounter any problems.

#v+
diff -u -r icewm-1.2.28/src/wmswitch.cc icewm-1.2.28~/src/wmswitch.cc
--- icewm-1.2.28/src/wmswitch.cc        2006-09-10 18:12:11.000000000 +0200
+++ icewm-1.2.28~/src/wmswitch.cc       2006-10-05 01:43:54.402483249 +0200
@@ -592,7 +592,7 @@
 void SwitchWindow::begin(bool zdown, int mods) {
     modsDown = mods & (xapp->AltMask | xapp->MetaMask |
                        xapp->HyperMask | xapp->SuperMask |
-                       ControlMask);
+                       xapp->ModeSwitchMask | ControlMask);
 
     if (isUp) {
         cancelPopup();
@@ -721,14 +721,17 @@
         k == XK_Alt_L     || k == XK_Alt_R     ||
         k == XK_Meta_L    || k == XK_Meta_R    ||
         k == XK_Super_L   || k == XK_Super_R   ||
-        k == XK_Hyper_L   || k == XK_Hyper_R)
+        k == XK_Hyper_L   || k == XK_Hyper_R   ||
+        k == XK_ISO_Level3_Shift       || k == XK_Mode_switch)
         return true;
 
     return false;
 }
 
 bool SwitchWindow::modDown(int mod) {
-    int m = mod & (xapp->AltMask | xapp->MetaMask | xapp->HyperMask | 
xapp->SuperMask | ControlMask);
+    int m = mod & (xapp->AltMask | xapp->MetaMask | xapp->HyperMask |
+                  xapp->SuperMask | xapp->ModeSwitchMask | ControlMask);
 
     if ((m & modsDown) != modsDown)
         return false;
diff -u -r icewm-1.2.28/src/yconfig.cc icewm-1.2.28~/src/yconfig.cc
--- icewm-1.2.28/src/yconfig.cc 2006-09-10 18:12:10.000000000 +0200
+++ icewm-1.2.28~/src/yconfig.cc        2006-10-05 01:43:59.674483249 +0200
@@ -183,6 +183,9 @@
         } else if (strncmp("Hyper+", arg, 6) == 0) {
             *mod |= kfHyper;
             arg += 6;
+        } else if (strncmp("AltGr+", arg, 6) == 0) {
+            *mod |= kfAltGr;
+            arg += 6;
         } else
             break;
     }
diff -u -r icewm-1.2.28/src/yconfig.h icewm-1.2.28~/src/yconfig.h
--- icewm-1.2.28/src/yconfig.h  2006-09-10 18:12:10.000000000 +0200
+++ icewm-1.2.28~/src/yconfig.h 2006-10-05 01:43:57.234483249 +0200
@@ -63,6 +63,7 @@
 #define kfMeta   8
 #define kfSuper  16
 #define kfHyper  32
+#define kfAltGr  64
 
 #ifdef GENPREF
 ///typedef unsigned int KeySym;
diff -u -r icewm-1.2.28/src/ywindow.cc icewm-1.2.28~/src/ywindow.cc
--- icewm-1.2.28/src/ywindow.cc 2006-09-10 18:12:11.000000000 +0200
+++ icewm-1.2.28~/src/ywindow.cc        2006-10-05 01:43:59.938483249 +0200
@@ -1616,13 +1616,16 @@
        m |= xapp->SuperMask;
     if (vm & kfHyper)
        m |= xapp->HyperMask;
+    if (vm & kfAltGr)
+        m |= xapp->ModeSwitchMask;
 
     MSG(("grabVKey %d %d %d", key, vm, m));
     if (key != 0 && (vm == 0 || m != 0)) {
         if ((!(vm & kfMeta) || xapp->MetaMask) &&
             (!(vm & kfAlt) || xapp->AltMask) &&
            (!(vm & kfSuper) || xapp->SuperMask) &&
-            (!(vm & kfHyper) || xapp->HyperMask))
+            (!(vm & kfHyper) || xapp->HyperMask) &&
+            (!(vm & kfAltGr) || xapp->ModeSwitchMask))
         {
             grabKey(key, m);
         }
@@ -1639,6 +1642,8 @@
                 m |= xapp->SuperMask;
             if (vm & kfHyper)
                 m |= xapp->HyperMask;
+            if (vm & kfAltGr)
+                m |= xapp->ModeSwitchMask;
             grabKey(key, m);
         }
     }
@@ -1659,6 +1664,8 @@
        m |= xapp->SuperMask;
     if (vm & kfHyper)
        m |= xapp->HyperMask;
+    if (vm & kfAltGr)
+       m |= xapp->ModeSwitchMask;
 
     MSG(("grabVButton %d %d %d", button, vm, m));
 
@@ -1666,7 +1673,8 @@
         if ((!(vm & kfMeta) || xapp->MetaMask) &&
             (!(vm & kfAlt) || xapp->AltMask) &&
            (!(vm & kfSuper) || xapp->SuperMask) &&
-            (!(vm & kfHyper) || xapp->HyperMask))
+            (!(vm & kfHyper) || xapp->HyperMask) &&
+            (!(vm & kfAltGr) || xapp->ModeSwitchMask))
         {
             grabButton(button, m);
         }
@@ -1683,6 +1691,8 @@
                 m |= xapp->SuperMask;
             if (vm & kfHyper)
                 m |= xapp->HyperMask;
+            if (vm & kfAltGr)
+                m |= xapp->ModeSwitchMask;
             grabButton(button, m);
         }
     }
@@ -1712,6 +1722,8 @@
        vm |= kfSuper;
     if (m1 & xapp->HyperMask)
        vm |= kfHyper;
+    if (m1 & xapp->ModeSwitchMask)
+       vm |= kfAltGr;
 
     return vm;
 }
diff -u -r icewm-1.2.28/src/yxapp.cc icewm-1.2.28~/src/yxapp.cc
--- icewm-1.2.28/src/yxapp.cc   2006-09-10 18:12:10.000000000 +0200
+++ icewm-1.2.28~/src/yxapp.cc  2006-10-05 01:43:59.202483249 +0200
@@ -381,7 +381,7 @@
                     SuperMask = (1 << m);
                 if ((kc == XK_Hyper_L || kc == XK_Hyper_R) && HyperMask == 0)
                     HyperMask = (1 << m);
-                if (kc == XK_Mode_switch && ModeSwitchMask == 0)
+                if ((kc == XK_Mode_switch || kc == XK_ISO_Level3_Shift) && 
ModeSwitchMask == 0)
                     ModeSwitchMask = (1 << m);
             }
 
@@ -417,6 +417,9 @@
     if (AltMask == 0)
         AltMask = Mod1Mask;
 
+    if (ModeSwitchMask & (AltMask | MetaMask | SuperMask | HyperMask))
+       ModeSwitchMask = 0;
+
     PRECONDITION(xapp->AltMask != 0);
     PRECONDITION(xapp->AltMask != ShiftMask);
     PRECONDITION(xapp->AltMask != ControlMask);
#v-

Bye, Jörg.

-- System Information:
Debian Release: unstable/experimental
  APT prefers unstable
  APT policy: (990, 'unstable'), (1, 'experimental')
Architecture: powerpc (ppc)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.18
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)

Versions of packages icewm depends on:
ii  icewm-common            1.2.28-1         wonderful Win95-OS/2-Motif-like wi
ii  imlib11                 1.9.14-31        Imlib is an imaging library for X 
ii  libaudiofile0           0.2.6-6          Open-source version of SGI's audio
ii  libc6                   2.3.6.ds1-4      GNU C Library: Shared libraries
ii  libesd0                 0.2.36-3         Enlightened Sound Daemon - Shared 
ii  libfontconfig1          2.4.1-2          generic font configuration library
ii  libfreetype6            2.2.1-5          FreeType 2 font engine, shared lib
ii  libgcc1                 1:4.2-20060709-1 GCC support library
ii  libice6                 1:1.0.1-2        X11 Inter-Client Exchange library
ii  libjpeg62               6b-13            The Independent JPEG Group's JPEG 
ii  libpng12-0              1.2.8rel-5.2     PNG library - runtime
ii  libsm6                  1:1.0.1-3        X11 Session Management library
ii  libtiff4                3.8.2-6          Tag Image File Format (TIFF) libra
ii  libungif4g              4.1.4-4          shared library for GIF images
ii  libx11-6                2:1.0.0-9        X11 client-side library
ii  libxext6                1:1.0.1-2        X11 miscellaneous extension librar
ii  libxft2                 2.1.8.2-8        FreeType-based font drawing librar
ii  libxinerama1            1:1.0.1-4.1      X11 Xinerama extension library
ii  libxrandr2              2:1.1.0.2-4      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

icewm recommends no packages.

-- no debconf information

Attachment: pgpQKSvIfT74z.pgp
Description: PGP signature

Reply via email to