^Arrow behave like Option-Arrow

I’m having difficulty getting ^Arrow macros to simulate Option-Arrow. The hot key macro triggered by ^Right Arrow does not seem to execute the “Type the (Opt)Right Arrow Keystroke” action. (Goal is to move to next/previous word.)

Any suggestions?

A macro with trigger Control-Arrow, and action Type a Keystroke Option-Arrow should work fine.

There are a variety of possible issues with remapping keys though.

What macro are you trying to use?

Sorry, still don’t know why it isn’t working.

The macro is “triggered by any of the following: This hot key:” (I’ve entered ^Left Arrow), then "Will execute…actions: Type the ⌥Left Arrow Keystroke Simulate keystroke: ⌥Left Arrow

Check the Keyboard Maestro log and ensure the macro is firing and no other macros are firing.

Check the behaviour of Control-Arrow and Option-Arrow with the macro disabled and verify they behave as expected and are not being changed.

Check in various applications and ensure the issue is not specific to one application.

The ^Arrow keys work as expected (switching desktops) whether the macro is enabled or not. Option Arrow also works fine and as expected.

Not application specific, i.e. Notes and Word and Safari do not register ^Arrow but do receive Opt-Arrow.

How do I check the log?

Ahh, the Spaces API may be stealing the Control-Arrow then, turn that off in the System Preferences, Keyboard, Shortcuts.

That worked, thank you!

While I’m on this, ^C ^X ^V and ^Z substitutions were spotty until I changed the action from simulating a keystroke to the specific copy, paste, etc. actions KM supplies, now they work great. But there is no KM action for Undo, so the ^Z still only works sometimes as a simulated keystroke.

Any suggestions?

The only difference between

Type a Keystroke: Command-C

and

Copy

is that the latter has a built in pause to wait until the clipboard changes. It’s essentially:

Save CLIPBOARDSEED()
Command-C
Pause Until CLIPBOARDSEED() changes

There is no equivalent concept for Undo.

I suggest simply adding a pause after the keystroke.