Re: Execute recorded keys with @@


I often use @@ to perform last @ command. When doing this in ViEmu nothing happends. Is it implemented or is it just something crazy with my installation?



Re: Execute recorded keys with @@


It is indeed implemented and should work fine. I've just tested it to work in the latest build. These are the detailed steps I follow, in case I'm not understanding the use-case scenario:

1) Type qa to start recording macro "a"
2) Do something, for example, "ihello<esc>" (where <esc> means pressing the Escape key)
3) Type q to end recording

Now, register "a" contains the sequence of keypresses. If you do "ap you will see the contents of the register ("ihello<escape>")

In order to play it back, type @a. This should insert "hello" at the cursor position.

Now, you can use @@ as a shortcut to replay the last played back macro, and it should do the same.

Maybe I'm missing something? Or there is some other interaction?

The @ command should show no interference with Visual Studio commands, as it's a regular ASCII character.

Please let me know the exact sequence in which @@ is not behaving properly.




Re: Execute recorded keys with @@

Hello everyone,

Together with the customer I have determined this to be a bug in ViEmu's handling of the AltGr key in international keyboard layouts. I am investigating a way to fix it in a further build of ViEmu. I am including my last email to him with all the details, in case anyone stumbles into the same problem.

I hope to have a new build with a fix for this in the next few days.

Best regards,



I have determined that, indeed, there is a bug in ViEmu´s handling of the AltGr key. I have been able to fully reproduce it. So it has nothing to do with ClearCase - ViEmu 2.0 features a completely new keyboard input management, it was necessary in order to support mapping of any keypress in the new mapping commands. Unfortunately, I did not contemplate international keyboards using the AltGr key, and I goofed up.

The fix is not obvious, so it will take a few days while I investigate it and come up with a correct keyboard handling scheme.

In case you´re interested in the technical details, in order to map all keypresses reliably, ViEmu ignores Windows-kbd-driver-generated WM_CHARs for Ctrl+<alpha> combinations, paying attention only to WM_KEYDOWNs for keys including only the Ctrl, but assumes that any keypress with both Ctrl and Alt presses won't generate a WM_CHAR message. This is true in the US layout, but it is not true in international layouts including the AltGr key. Thus, ViEmu reads the AltGr keypress as two distinct ones: <Ctrl+Alt+'2'> and <Ctrl+'@'>, one coming from the WM_KEYDOWN message and the other one from the WM_CHAR message, and thus it is processed with a beep as an invalid command. I can not use only WM_KEYDOWN or WM_CHAR input, as none of them covers the whole range of key combinations, and I have to reliably determine where to process the key.

I'll let you know as soon as I have a fix for this.

Thanks for the detailed feedback,



Re: Execute recorded keys with @@

I have provided a build which fixes this, 2.0.37:


Best regards,