NumLock x ALT-TAB (fvwm95+RH42)
Pavel Kankovsky
peak na kerberos.troja.mff.cuni.cz
Čtvrtek Únor 19 11:07:17 CET 1998
On Thu, 19 Feb 1998, Michal Fadljevic wrote:
> mam drobny problem. V X-win mi prestane fungovat ALT-TAB, kdyz zapnu
> NumLock. Nevite prosim co s tim ? RH4.2 + fvwm95
To je takovy evergreen, ze uz to bude asi potreba opravit :)
problemova cast je v events.c
unsigned int mods_used = (ShiftMask | ControlMask | Mod1Mask |
Mod2Mask| Mod3Mask| Mod4Mask| Mod5Mask);
...
modifier = (Event.xkey.state & mods_used);
...
((key->Modifier == (modifier&(~LockMask)))||
(key->Modifier == AnyModifier)) &&
[a jeste jednou posledni dva kusy kodu pro mysoidni udalosti]
to, ze zahadnych duvodu de facto zdvojeno odstraneni CapsLocku
(jednou pred mods_used a jednou explicitne) ponechme stranou
NumLock je umisten na nektery z modifikatoru Mod2-5 (Mod1 je
typicky Meta/Alt, viz xmodmap -pm) a jeho zapnutim dojde k tomu,
ze vsechny "bindings", co nemaji AnyModifier (a nemaji prislusny
modifikator explicitne uvedeny) prestanou fungovat
navic tohle
if((Tmp_win)&&(Tmp_win->flags & ClickToFocus)&&(Tmp_win != Scr.Ungrabbed)&&
((Event.xbutton.state&
(ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) == 0))
zpusobi, ze se ztrati schopnost prepinat fokus kliknutim
nejjednodussi (paneboze, to slovo ma opravdu zdvojene dve hlasky!) reseni
je omezit mnozinu modifikatoru branych v uvahu
pokud nevadi, ze to nelze konfigurovat (jinak nez prekompilovanim), tak
lze pouzit prilozeny patch (pouze na vlastni nebezpeci, samozrejme)
--Pavel Kankovsky aka Peak [ Boycott Microsoft -- http://www.vcnet.com/bms ]
--patch--
--- fvwm/events.c.orig Sat Jul 6 18:09:21 1996
+++ fvwm/events.c Thu Feb 19 10:28:21 1998
@@ -65,8 +65,7 @@
#endif /* SHAPE */
#include "module.h"
-unsigned int mods_used = (ShiftMask | ControlMask | Mod1Mask |
- Mod2Mask| Mod3Mask| Mod4Mask| Mod5Mask);
+unsigned int mods_used = (ShiftMask | ControlMask | Mod1Mask);
extern int menuFromFrameOrWindowOrTitlebar;
@@ -421,7 +420,7 @@
for (key = Scr.AllBindings; key != NULL; key = key->NextBinding)
{
if ((key->Button_Key == Event.xkey.keycode) &&
- ((key->Modifier == (modifier&(~LockMask)))||
+ ((key->Modifier == modifier)||
(key->Modifier == AnyModifier)) &&
(key->Context & Context)&&
(key->IsMouse == 0))
@@ -995,8 +994,7 @@
/* click to focus stuff goes here */
if((Tmp_win)&&(Tmp_win->flags & ClickToFocus)&&(Tmp_win != Scr.Ungrabbed)&&
- ((Event.xbutton.state&
- (ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) == 0))
+ ((Event.xbutton.state&mods_used) == 0))
{
if(Tmp_win)
{
@@ -1055,7 +1053,7 @@
(MouseEntry->Button_Key == 0))&&
(MouseEntry->Context & Context)&&
((MouseEntry->Modifier == AnyModifier)||
- (MouseEntry->Modifier == (modifier& (~LockMask))))&&
+ (MouseEntry->Modifier == modifier))&&
(MouseEntry->IsMouse == 1))
{
/* got a match, now process it */
Další informace o konferenci Linux