
Hello Stacey and the list since this includes a patch.
I could not reproduce the behaviour, but I can clearly see where it
fits in. The problem for me is that I cannot currently change the
repeat rate (because of a bug in evdev) and my repeat rate is
obviously too low for the bug to appear, but that is another issue.
The problem is as you stated that ungrab-grab is run between key
presses, so I moved the ungrab till after the selected command has
been run. This should result in "grab new"-"ungrab old" behaviour and
fix your problem, I think, but I haven't actually reproduced the bug
so please check if this works and report the success or failure.
It all seems to work for me, but I would like some feedback from
someone a little bit more experienced than me since I'm rather new to
haskell and xmonad myself.
First question: It is okay to run grabKeyboard in a nested way like this, right?
Second question: I dunno, is it just me, or is
grabKeyboard/ungrabKeyboard not defined ANYWHERE? It must come from
somewhere... But I could not find it when I tried to follow the import
chain.
/Anders Engström
2009/4/26 Stacey Sheldon
I'm trying to use the submapDefault functionality that you contributed to XMonad, and I'm running into a small problem with it. Any assistance that you can offer on this would be very much appreciated. If there are any additional details that you require, I'd be happy to provide them.
[Goal]
I want to trigger a sticky submap, and then be able to move a floating window around with the arrow keys. When I hit enter or escape, I want to return to the normal keybindings. The basic functionality works as expected so I think I've got the various moving parts connected properly.
[Problem]
When I use the arrow keys to move the windows around, I typically hold down the arrow key until the window ends up in the right position. I've noticed that some of the repeats of the arrow key are leaking through to the focused window rather than being captured by the submap. This is especially noticeable if I switch to using vi keys (h,j,k,l) rather than the arrow keys to push the floating windows around. I then get a string of these leaked h's in the focused window.
I suspect this is caused by the ungrabKeyboard that (I think) happens between handling one keypress and handling the next (repeating) one. If the ungrab only occurred once the "exit" key had been pressed, maybe this problem would go away.
I'm not a complete haskell noob but I still don't quite have a handle on how monads work. I have no idea how to fix this.
[Context]
I'm fairly certain that the issue that I'm seeing is unrelated to the particular versions that I'm using but I'll give you the context anyway. I'm using XMonad 0.8-1 on Ubuntu Intrepid (8.10) as the base version. I've pulled the definition for submapDefault from the latest darcs revision into my xmonad.hs file since your patch isn't in the ubuntu release.
I'm using submapDefault like this in my xmonad.hs file:
entersub = submapDefault entersub sublist sublist = M.fromList $ [ -- Window floating stuff ((0, xK_Return), return ()) , ((0, xK_Escape), return ()) , ((0, xK_t ), withFocused $ windows . W.sink) , ((0, xK_Left ), (withFocused (keysMoveWindow (-20,0))) >> entersub) , ((0, xK_Right ), (withFocused (keysMoveWindow (20,0))) >> entersub) , ((0, xK_Up ), (withFocused (keysMoveWindow (0,-20))) >> entersub) , ((0, xK_Down ), (withFocused (keysMoveWindow (0,20))) >> entersub) ]
If you've got the time to look at this, I'd be happy to try any suggestions for how to fix this.
Thanks.
Stacey.