ID:1936218
 
Resolved
Key-up macros didn't fire if the message was not received by the right window and there was no associated key-down macro with the repeat flag.
BYOND Version:508
Operating System:Windows 7 Ultimate 64-bit
Web Browser:Chrome 45.0.2454.85
Applies to:Dream Seeker
Status: Resolved (509.1303)

This issue has been resolved.
Descriptive Problem Summary:

Currently, if you change focus to an interface element that does not support the macro set or consumes keyboard events, any KeyUp/KeyDown macros will not be fired. It is completely fine that when a browser has focus, the loaded page's DOM handles the KeyUp/KeyDown business and doesn't tell the parent element that a key has been pressed or released. This makes complete sense.

However, There is a major problem where when you switch focus to a browser, KeyUp events are never registered at all. This causes some major issues where players will keep walking forever, etc.

Not only this, even if you account for this behavior manually and kill all ongoing events through softcode, when you switch back to the root element, DS still thinks the key is being pressed, so the next time you press the key, the KeyDown event won't fire. The only way to start moving again is to press the key, release the key, thus triggering the hung KeyUp event, and then press the key again finally triggering the KeyDown event.

Expected Results:

Changing focus to a browser shouldn't completely upend the keyboard input state of the client.

Changing the macro set shouldn't break the keyboard input state of the client.

Actual Results:

Total chaos.

Workarounds:

I've investigated a number of workarounds, but nothing I do seems to address this issue.
when you switch back to the root element, DS still thinks the key is being pressed, so the next time you press the key, the KeyDown event won't fire. The only way to start moving again is to press the key, release the key, thus triggering the hung KeyUp event, and then press the key again finally triggering the KeyDown event.

Welcome to iframes, assuming you're using BYOND.com/blah blah to load the webclient.

A good test for this case is to not load it on the iframe, you can do so by going to

http://IP:PORT/play
This report concerns DS.
Sorry, totally missed that...
Lummox JR resolved issue with message:
Key-up macros didn't fire if the message was not received by the right window and there was no associated key-down macro with the repeat flag.