uint csInputEventHelper::GetButton (iEventNameRegistry *reg, const iEvent* event) { CS_ASSERT(CS_IS_INPUT_EVENT(reg, *event)); if (CS_IS_MOUSE_EVENT(reg, *event)) { return csMouseEventHelper::GetButton(event); } else if (CS_IS_JOYSTICK_EVENT(reg, *event)) { return csJoystickEventHelper::GetButton(event); } else if (CS_IS_KEYBOARD_EVENT(reg, *event)) { return 0; } else { return 0; } }
bool csInputEventHelper::GetButtonState (iEventNameRegistry *reg, const iEvent* event) { CS_ASSERT(CS_IS_INPUT_EVENT(reg, *event)); if (CS_IS_MOUSE_EVENT(reg, *event)) { return csMouseEventHelper::GetButtonState (event); } else if (CS_IS_JOYSTICK_EVENT(reg, *event)) { return csJoystickEventHelper::GetButtonState (event); } else if (CS_IS_KEYBOARD_EVENT(reg, *event)) { return ((csKeyEventHelper::GetEventType (event) == csKeyEventTypeDown) ?true:false); } else { return false; } }
bool EventTest::HandleEvent (iEvent &ev) { csRef<iEventNameRegistry> namereg = csEventNameRegistry::GetRegistry ( GetObjectRegistry ()); if (CS_IS_KEYBOARD_EVENT (namereg, ev)) { utf32_char key = csKeyEventHelper::GetRawCode (&ev); utf32_char cooked = csKeyEventHelper::GetCookedCode (&ev); bool autorep = csKeyEventHelper::GetAutoRepeat (&ev); csKeyModifiers key_modifiers; csKeyEventHelper::GetModifiers (&ev, key_modifiers); uint32 modifiers = csKeyEventHelper::GetModifiersBits (key_modifiers); uint32 type = csKeyEventHelper::GetEventType (&ev); csString str = csInputDefinition::GetKeyString (namereg, key, &key_modifiers, true); printf ("Key %s: raw=%" PRId32 "(%c) " "cooked=%" PRId32 "(%c) rep=%d mods=%08" PRIu32 " desc='%s'\n", type == csKeyEventTypeUp ? "UP" : "DO", key, (key >= 32 && key < 128) ? (char)key : '-', cooked, (cooked >= 32 && cooked < 128) ? (char)cooked : '-', autorep, modifiers, str.GetData ()); fflush (stdout); } else if (CS_IS_MOUSE_EVENT (namereg, ev)) { uint device = csMouseEventHelper::GetNumber (&ev); csMouseEventType type = csMouseEventHelper::GetEventType (&ev); csKeyModifiers key_modifiers; csKeyEventHelper::GetModifiers (&ev, key_modifiers); uint32 modifiers = csMouseEventHelper::GetModifiers (&ev); csMouseEventData data; csMouseEventHelper::GetEventData (&ev, data); int x = csMouseEventHelper::GetX (&ev); int y = csMouseEventHelper::GetY (&ev); uint but = csMouseEventHelper::GetButton (&ev); bool butstate = csMouseEventHelper::GetButtonState (&ev); uint32 butmask = csMouseEventHelper::GetButtonMask (&ev); csInputDefinition def (namereg, &ev, modifiers, true); //do we want cooked? csString str = def.ToString (); printf ("Mouse %s: but=%d(state=%d,mask=%08" PRIu32 ") " "device=%d x=%d y=%d mods=%08" PRIu32 " desc='%s'\n", type == csMouseEventTypeMove ? "MOVE" : type == csMouseEventTypeUp ? "UP" : type == csMouseEventTypeDown ? "DO" : type == csMouseEventTypeClick ? "CLICK" : type == csMouseEventTypeDoubleClick ? "DBL" : "?", but, butstate, butmask, device, x, y, modifiers, str.GetData ()); fflush (stdout); } else if (CS_IS_JOYSTICK_EVENT (namereg, ev)) { uint device = csJoystickEventHelper::GetNumber (&ev); csKeyModifiers key_modifiers; csKeyEventHelper::GetModifiers (&ev, key_modifiers); uint32 modifiers = csJoystickEventHelper::GetModifiers (&ev); csJoystickEventData data; csJoystickEventHelper::GetEventData (&ev, data); csInputDefinition def (namereg, &ev, modifiers, true); csString str = def.ToString (false); csString desc (""); if (CS_IS_JOYSTICK_BUTTON_EVENT (namereg, ev, device)) { uint but = csJoystickEventHelper::GetButton (&ev); bool butstate = csJoystickEventHelper::GetButtonState (&ev); uint32 butmask = csJoystickEventHelper::GetButtonMask (&ev); printf ("Joystick %s: device=%d but=%d(state=%d,mask=%08" PRIu32 ") " "mods=%08" PRIu32 " desc='%s'\n", butstate ? "DO" : "UP", device, but, butstate, butmask, modifiers, str.GetData ()); } else if (CS_IS_JOYSTICK_MOVE_EVENT (namereg, ev, device)) { size_t pos = str.Find ("Axis"); str.SubString (desc, pos + 4, (size_t)-1); uint axisnum = atoi(desc.GetData ()); printf ("Joystick MOVE: device=%d axis=%" PRId32 " value=%d " "mods=%08" PRIu32 " desc='%s'\n", device, axisnum, data.axes[axisnum], modifiers, str.GetData ()); } fflush(stdout); } csBaseEventHandler::HandleEvent(ev); return false; }