P T Withington wrote:
This looks good to me.

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

This should be resolved when André gets the complete fix in - he's breaking my (large) fix across a series of changes to improve testability.

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.

This would be nice, but LZX developers are most used to the behavior in SWF - and expect DHTML to act exactly the same. So, we're in the position of emulating swf(8!) behavior for now!

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 barg...@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



--
Regards,
Max Carlson
OpenLaszlo.org

Reply via email to