I reserved event MU_DYNAMIC_KEYBD for it, nothing more. Didnt spent further thoughts about it at the time. Presumely it was my intention to send the event when either a key was pressed or released. A bit in kstate could be spent.
As for detection of single press of CTRL, ALT, SHIFT: This requires facilitating in low level keyboard driver (IKBD). Normally these states are only supplied in combination with scancode generating keys.
I wasn't aware that those keys were handled that differently, but changing the keyboard driver to give the information doesn't sound like a bad idea.
I did implement the use of NKCC by XaAES via event MU_NORMKEYBD. In stead of scancodes you get normalized ASCII character values. This might be a good place to look into.