I’m doing some extra research in case this is something I can implement.
Seems like ducky encoders explicitly define multi-key combos via:
const dsSyntaxMap = {
(...)
'CTRL-ALT': handleDSModifier,
'CTRL-SHIFT': handleDSModifier,
'ALT-SHIFT': handleDSModifier,
'COMMAND': handleDSModifier,
'COMMAND-CTRL': handleDSModifier,
'COMMAND-CTRL-SHIFT': handleDSModifier,
'COMMAND-OPTION': handleDSModifier,
'COMMAND-OPTION-SHIFT': handleDSModifier
};
In our case we do that via:
static const DuckyKey ducky_keys[] = {
{"CTRL-ALT", KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_ALT},
{"CTRL-SHIFT", KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT},
{"ALT-SHIFT", KEY_MOD_LEFT_ALT | KEY_MOD_LEFT_SHIFT},
{"ALT-GUI", KEY_MOD_LEFT_ALT | KEY_MOD_LEFT_GUI},
(...)
};
Our list is simply shorter.
git ref
So on the surface is seems that we can at least easily allow extra options by replicating options they have with correct references. I have to read up more about it to see if this is as simple as adding extra options and rest of code can handle it.
I’ve also noticed that we are missing COMMAND
I’m assuming this is fully handed over to GUI
but it may be worth adding it anyway in case someone would like to have it explicit (eg. swapped CTRL and COMMAND)