ID:119140
 
Resolved
Macros will now fire if extra modifier keys (shift/ctrl/alt) are pressed. That is, shift+arrow will now behave like a regular arrow key in most games. Also, when changing from one repeating macro to another using the same key but different modifiers, the original repeater's key-up macro will fire.
BYOND Version:490
Operating System:Windows 7 Home Premium
Web Browser:Firefox 8.0
Applies to:Dream Seeker
Status: Resolved (490)

This issue has been resolved.
Descriptive Problem Summary:
While holding the Shift/Alt/Ctrl key, Dream Seeker will not take anymore additional keyboard commands. The Shift/Alt/Ctrl keys do not have to be active macros for this problem to occur.

Numbered Steps to Reproduce Problem:
1. Open up Dream Seeker.
2. Hold Shift/Alt/Ctrl.
3. Try to press something else on the keyboard that executes a command, such as your arrows keys or F1, while holding Shift/Alt/Ctrl.

Expected Results:
You would expect the command to execute even while the Shift/Alt/Ctrl key is being held down.

Actual Results:
Nothing happens.

When does the problem NOT occur?
This problem doesn't occur when you take the above steps and go the other way.

As an example, these work just fine:
Hold up arrow > Hold Shift.
Hold up arrow > Hold Shift > Release Shift. (Your mob is still moving north.)

As contrast, this does not:
Hold up arrow > Hold Shift > Release up arrow > Press up arrow. (Nothing happens after you release the up arrow.)

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked?
The only version this affects is 490.1112, as this introduced the ability to make Shift/Alt/Ctrl as macros.

Workarounds:
If you insist on using the Shift/Alt/Ctrl key as a macro, there is no workaround. Of course, the most sensible workaround is to not use those keys as macros.

Macros don't execute if a modifier key is being held down that they don't use; that hasn't changed. What you probably wanted was for the other key to be completely independent of modifiers, which presently is not done. If you actually had a shift+north macro defined, it would work perfectly. The workaround, therefore, is to define macros for those modifier keys as well.

However since I recognize the need for independent keys here, I'll work something out.

[edit]
Just to clarify, I ran several tests on other versions and on the current version before responding earlier. The behavior you are seeing is not new; the expectation that the key would behave independently of the modifier when it never has before is new. That expectation is justifiable and I'm sure for that reason Tom will agree this probably should stay listed as a bug, but macros have always required the apporopriate modifiers to fire before and I have not seen changed behavior in any projects.

My debug project defines both arrow and shift+arrow macros and has all the modifiers as macros. As expected, in earlier versions the arrow keys act fine on their own, and shift+arrow is fine, but ctrl+arrow and alt+arrow do nothing. In 490.1112, this behavior is exactly the same.

My gameplan for meeting the new expectation is to add a modifier called "Any" which will fire the macro regardless of its modifier keys.
Two changes have been made to deal with the issue you mentioned. Tom agreed this counted as buggy behavior because it was inconsistent, even though it isn't new.

The first change is that holding down extra keys like Shift, Ctrl, or Alt will still allow a macro to fire even if it doesn't use all those modifiers. So hitting Ctrl+A will fire the A macro if you have no Ctrl+A macro to supercede it. Hitting just A without Ctrl will not fire Ctrl+A.

The second change is that if you have repeating macros for the same key with two different modifier combos, changing modifiers will fire the original's key-up macro. For instance say you have macros for East+REP and SHIFT+East+REP, and East+UP and Shift+East+UP. If you're holding down East+REP and then hold down Shift, East+UP will fire and then SHIFT+East+REP takes over the repeating. When you let go of Shift, SHIFT+East+UP will fire and then East+REP repeats again.
Ah, that's interesting. I hadn't realized, with the old behavior, that keys were binded to modifiers even when they weren't being used. Though... it does make sense now looking back on how macros (+modifiers) are displayed in the interface.

Those changes sound good.
I doubt this is a bug, so I figured I'd just post it here: If you define a macro for F4, pressing Alt+F4 won't close the window (even if you don't have a macro defined for Alt). In 490.1109 it would close the window but in 490.1113 it doesn't.