k(k as text)

Problem description:
The above code works just fine. But that's not how I want it to work.
I want set verb to set the arguments as well.

The idea being -
I'm setting up a custom macro system; but since BYOND doesn't support it, I have found I need to set each key as itself in the .dmf file.
E.g. the macro for x is k "x", for the verb: k(k as text)
The end goal being players can click a button to set a new key bind, and whatever key they press next binds a command to THAT key.

e.g. binding SAY to space bar.
*Player clicks button for binding say
*Prompt asks player to press any key
*Whatever key is pressed will now be the SAY hotkey.

In response to A.T.H.K
That's where I started off; when I got into unfamiliar territory (which is always very fast with .BLOODYdmf files), I sought help. And now I keep getting obscure tips, seemingly helpful but I'm being pulled in all sorts of directions and I don't know whos tips were right, and who's were folly.

EDIT - bear in mind that I need the button detector proc to detect all keys. Not just a-z 0-9.
i.e. if you press F7, it knows you pressed F7 and you dont have to type "F" "7"
Would having a 2nd macro set that swaps in @ the moment of selecting a hotkey be a good idea?
linked to a verb that returns the key pressed?