module scone.input.keyboard_event; import scone.input.scone_key : SK; import scone.input.scone_control_key : SCK; import scone.core.flags : hasFlag; struct KeyboardEvent { auto hasControlKey(SCK ck) { return controlKey.hasFlag(ck); } public SK key; public SCK controlKey; version (Windows) public bool pressed = true; } unittest { assert(KeyboardEvent(SK.a, SCK.none).key == SK.a); assert(KeyboardEvent(SK.a, SCK.ctrl).controlKey == SCK.ctrl); version (Windows) { assert(KeyboardEvent(SK.a, SCK.none, false).pressed == false); assert(KeyboardEvent(SK.a, SCK.none, true).pressed == true); } auto keyboardEvent = KeyboardEvent(SK.a, SCK.ctrl | SCK.alt); assert(keyboardEvent.hasControlKey(SCK.ctrl)); assert(keyboardEvent.hasControlKey(SCK.alt)); assert(!keyboardEvent.hasControlKey(SCK.shift)); }