CLIM mail archive


Detecting modifier keystrokes

    Date: Fri, 3 Sep 1993 16:46 EDT
    From: bha <>

    > Date: Fri, 3 Sep 1993 14:23 -0400
    > From: Scott McKay <>
    > Mmdf-Warning:  Parse error in original version of preceding line at BBN.COM
    >     Date: Fri, 3 Sep 1993 13:23 EDT
    >     From: bha <>
    >     CLIM 2.0beta2
    >     ACL 4.2beta2
    >     > Date: Thu, 02 Sep 93 16:20:12 -0700
    >     > From: Chris Richardson <cer@Franz.COM>
    >     > 
    >     > 
    >     > Checkout port-modifier-state and pointer-button-state
    >     > 
    >     > 
    >     OK.  That allows me to query to current state of the keyboard
    >     modifiers from anywhere in my application.
    >     Now, what I *really* want to do is drive clim:tracking-pointer with
    >     keyboard modifier state *changes*.  Maybe a clause in
    >     clim:tracking-pointer such as :keyboard-event (event) similar to
    >     :pointer-button-press (event) or change/modify the existing :keyboard
    >     clause to pass a keyboard event would be handy.  If the :keyboard
    >     clause was similar to the :pointer-button-press clause, one could then
    >     use clim:event-matches-gesture-name-p to match keyboard gestures,
    >     clim:keyboard-event-character to obtain the character and
    >     clim:event-modifier-state to query the modifier state in a manner
    >     consistent with pointer events.  The only problem might be -
    >     are/should modifier state *changes* delivered as events?
    > It would be useful to know what it is you are "really really" trying to
    > do.  If you are genuinely interested in tracking events as closely as
    > you say, it may be more effective to specialize one of the CLIM stream
    > pane classes and write your own HANDLE-EVENT methods on it.

    I "really, really, really" want to implement a set of pointer input
    mechanisms such as pointer-input-rectangle, pointer-input-line, etc.
    Then, in true MacDraw style, I want to use the shift key to enforce
    some constraint (such as constraint pointer-input-rectangle to return
    a square).  I also want these input mechanisms to scroll the viewport
    as required when one tracks the pointer at the edge of the window.

    So does clim:tracking-pointer use its own stream with specialized
    mechanisms for handle-event and "attach" it to the real stream in
    order to handle events in a specialized way?

No, you would have to make your own window class and add methods that do
this.  The original Silica in CLIM 0.9 had a more flexible "distributor"
mechanism that might have been able to do what you want, but it didn't
survive into CLIM 2.0 for various reasons.

Main Index | Thread Index