Macro Key Simulation


I already used the Arduino Micro as a keyboard simulator, inputing simple text and functionality keys (mute, pause, etc.). However, I was wondering if also macro keys can be simulated.

For example:
I'm using an HP Omen Keyboard with a lot of macro keys (M1-12, MX1-12, L1-4) which can be modified using 'SteelSeries Engine 3'. This approach will ease the process of reconfiguring, allowing for quick profile switches and enhanced functionality (Application Startup, OS-nodes, etc.)

Has anyone ever done a similar project?
What are possible approaches? (Read the input to the computer by the keyboard while pressing such a button? - How would I do this?)

Thank you!

I am not really understanding theproblem.

What do you mean you use the Arduino as a keyboard simulator?
Is the Arduino outputting keys, if so how do you tell it what to output?

Where does the 'real' keyboard fit into to this?

Maybe you should define what all the devices are, how they are connected, and what flows between each device and in which direction.

There is no reason that an Arduino cannot output multiple characters in response to some stimulus to do so.


@Platygator wants to use an Arduino Micro to send the same data to a PC as the HP keyboard does when he/she presses a macro key. So Arduino Micro as a second keyboard (with probably limited functionality).

I have no idea about the solution except for possibly using an USB sniffer.

I will explain the idea a little further:

The HP keyboard with macro keys is always connected to the PC.
Additionally I want to connect a Arduino Micro, which is recognized as a 2nd keyboard.
There are several buttons connected to the Arduino.
When I press one of the buttons the exact same happens as with a button press of a macro keyboard - as @sterretje correctly described.
In 'SteelSeries Engine 3' different actions can be assinged to a marco key.

The Arduino just represents a additional, copied macro button.

Using this exact programm or mimic an HP keyboard is not necessary. Convenient reassignment of Arduino buttons will do the job, I just thought it would be an interesting thing to do

The arduino outputs data, which gets handeld the same way as a press of the keyboard's makro, so the direction is from the arduino to the pc, no back communication.

Haven't worked or heard of USB sniffer, I will do some research

Thanks for your help so far

When you press a button attached to the Arduino the Arduino can output any string of characters you want it to.
You will need to write a sketch though so that the Arduino outputs the characters you want.

The USB sniffer would let you monitor what characters are sent by the real keyboard when a macro key is pressed.
That way you could write your Arduino sketch to output the same characters.

I don't know if 'SteelSeries Engine 3'is actually configuring the marco keys on your real keyboard.
If it is then getting it to tell the Arduino what charcters to send in reponse to a button being pressed woul dbe a whole different task.