[Laszlo-dev] For Review: Change 20090602-bargull-GPN Summary: DHTML: add "updateControlKeys" to LzKeyboardKernel

P T Withington ptw at pobox.com
Tue Jun 2 14:55:44 PDT 2009


This looks good to me.

I'm hoping Max can answer the question about canceling events and  
LPP-8200.

I believe meta should be treated like any other "shift key".  It is  
annoying that in swf runtimes it is mapped to control.  Presumably  
this is because sometime back in the mid-80's Apple computers did not  
have a control key.  Maybe Adobe ought to be told that it is not 1980  
any more.  In the mean time, I would treat the (broken) keymapping in  
the swf runtime as a quirk of swf, not as something that should be  
duplicated in the DHTML runtime.

Presumably people writing DHTML apps will benefit if they can  
distinguish more shift keys.

---

Something that is really a mystery to me is the internal protocol  
between the keyboard kernel and LzKeys.  The kernel sends both a map  
of the abstract keys that have changed state, _and_ the last physical  
key code.  LzKeys maps the abstract keys to Flash physical keycodes,  
but if it finds any abstract key that does not have a flash mapping,  
it uses the platform physical code (which may or may not intersect  
with a Flash physical code).  I'm guessing this was an attempt to make  
LZX code more portable, but it's a pretty messy transformation (and  
looks to me like it could cause some bugs because of the way the  
exception code works).  In the long run, it would seem like a better  
approach would be to create a new set of LzKeys interfaces that dealt  
in abstract keys (as in Unicode characters + strings to represent keys  
that do not correspond to characters, like F1, Page-up, etc.) plus  
shift key states, which would be uniform across platforms; and  
eventually deprecate the interfaces that deal with Flash keycodes.

On 2009-06-02, at 10:27EDT, André Bargull wrote:

> These are just the changes for LzKeyboardKernel. We still need to  
> decide whether "updateControlKeys()" needs to handle the 'metaKey'  
> for LPP-8210.
>
>
> Change 20090602-bargull-GPN by bargull at dell--p4--2-53 on 2009-06-02  
> 15:54:52
> in /home/Admin/src/svn/openlaszlo/trunk
> for http://svn.openlaszlo.org/openlaszlo/trunk
>
> Summary: DHTML: add "updateControlKeys" to LzKeyboardKernel
>
> New Features:
>
> Bugs Fixed: LPP-8218 - DHTML: issues with contextmenu onmenuopen,  
> dragging (partial)
>
> Technical Reviewer: max, ptw
> QA Reviewer: hqm
> Doc Reviewer: (pending)
>
> Documentation:
>
> Release Notes:
>
> Details:
> Call "updateControlKeys()" instead of "__keyboardEvent()" for mouse- 
> events.
> Set "cancelBubble" and "returnValue" after invoking  
> "updateControlKeys()" to mimic old behaviour (this is actually  
> wrong, see LPP-8200, but reduces testing effort right now).  
> "keyCode" is set to 0 for mouse-events in IE, Opera, Safari, so you  
> only need to test for keyCode==0 (Firefox is irrelevant in this  
> case, because it sets keyCode to `undefined` for mouse-events).
>
>
>
> Tests:
> test/lfc/legals/keyboardandmouse.lzx?lzr=dhtml still works as expected
>
>
> Files:
> M WEB-INF/lps/lfc/kernel/dhtml/LzKeyboardKernel.js
> M WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
> M WEB-INF/lps/lfc/kernel/dhtml/LzMouseKernel.js
>
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20090602-bargull-GPN.tar
>




More information about the Laszlo-dev mailing list