#58 Brighton: Computer-kbd key-repeat dies when Bristol starts

admin
closed-fixed
5
2009-11-24
2009-11-09
No

Bristol disables ascii-key-repeat within its window, which I can understand, for playing notes via the zxcvbnm keys.
Unfortunately, key-repeat also dies in other windows, and remains dead even after bristol exits, which makes normal editing sessions, arrow-key navigation etc. very difficult (until reboot).
I'm using bristol-0.40.6 on xorg, fvwm1, debian lenny.

Discussion

  • Nick Copeland

    Nick Copeland - 2009-11-10

    Hi Peter,

    The logic is that when the mouse enters the bristol window I turn off key repeat, when the mouse exits then I re-enable it. In short, when you move from one window to another it should not lose state. Now that does depend on your window manager - if I am not given window Leave events then I cannot reset the state and I admit that I am not in control of that.

    There are only a couple of cases that I know of where bristol does not reset the repeat state but those concern unexpected exit conditions, not mouse movements between windows.

    I need to get your input on how to proceed: I can add an option not to reset key repeat but that implies dropping support for QWERTY control of the synth - having both is a royal pain in the butt but you know that. The second option is that I add debug code to try and track down what fvwm does provide for Leave events and allow me to reset state (I actually like fvwm, it is extremely powerful for keyboard shortcuts and similarly efficient). This might take a while but try the following to get me some input:

    xev

    Then put your mouse into the little window that is opened, then move it out - I am interested in the last events that are displayed when the mouse leaves the XEV window - here are the last three from my system:

    LeaveNotify event, serial 33, synthetic NO, window 0x3e00001,
    root 0xa1, subw 0x0, time 4502249, (78,180), root:(83,202),
    mode NotifyNormal, detail NotifyAncestor, same_screen YES,
    focus YES, state 0

    FocusOut event, serial 33, synthetic NO, window 0x3e00001,
    mode NotifyNormal, detail NotifyNonlinear

    VisibilityNotify event, serial 33, synthetic NO, window 0x3e00001,
    state VisibilityPartiallyObscured

    I use the LeaveNotify to put reactivate key repeat but I can code it into other events such as FocusOut too. For the known case of bristol not resetting repeat state when it dies, I can try and remedy the couple of cases I know of. There is some danger that if I exit due to segfaults then I should not really try things like disk activity however display activity should not be a problem.

    You shouldn't need to reboot to recover - try 'xset r on', that should return the key repeat condition, this is a server option, nothing to do with the window manager per se.

    Kind regards, nick.

     
  • Nick Copeland

    Nick Copeland - 2009-11-10

    Ah, what kind of mouse tracking do you use: is it click-to-focus or follow-mouse? These would give different conditions. That should not matter for XEV: enter the window, then move the mouse to another window and click, then send me the last sequence of events from XEV. I would not be surprised if 'click-to-focus' sends a different event stream.

    Kind regards, nick.

     
  • Nick Copeland

    Nick Copeland - 2009-11-11

    This is reproducable. The fvwm has two ways to remove a window, Kill and Destroy. Destroy leaves me without the LeaveNotify to reset keyrepeat but I can pick up on one of the other events I think.

     
  • Nick Copeland

    Nick Copeland - 2009-11-11

    Submitted a couple of changes to 0.50.0 so that key repeat is re-enabled on the Client message that causes the window to be killed. This should cover this case and most of the others as well. The window manager was just calling a wmDelete request without the Leave function. The other changes regard some extra debuging for X11 events after they are sent to B11 admittedly.

     
  • Nick Copeland

    Nick Copeland - 2009-11-11
    • labels: --> Brighton GUI
    • assigned_to: nobody --> ncopeland
    • milestone: --> admin
     
  • Nick Copeland

    Nick Copeland - 2009-11-11
    • summary: Computer-kbd key-repeat dies when Bristol starts --> Brighton: Computer-kbd key-repeat dies when Bristol starts
     
  • Nick Copeland

    Nick Copeland - 2009-11-12

    Fixes to return the key repeat state were submitted to 0.50 and backported to 0.40.7 due out presently. The code will now return status on connection failures, these are distribute to the X11 server if that was not the cause of the connection issue (typically not the case). These were previously omitted.

     
  • Nick Copeland

    Nick Copeland - 2009-11-12
    • status: open --> pending-fixed
     
  • Nick Copeland

    Nick Copeland - 2009-11-24

    Fixes will be distributed with the 0.50 and 0.40.7 code.

     
  • Nick Copeland

    Nick Copeland - 2009-11-24
    • status: pending-fixed --> closed-fixed
     

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks