void PointingRelativeToScroll::add(AddDataType datatype, AddValue newval) { switch (datatype) { case BRIDGE_DATATYPE_MODIFIERFLAG: case BRIDGE_DATATYPE_MODIFIERFLAGS_END: { switch (index_type_) { case INDEX_TYPE_DEFAULT: fromModifierFlags_.push_back(ModifierFlag(datatype, newval)); keytokey_.add(datatype, newval); break; case INDEX_TYPE_TOFLAGS: toModifierFlags_.push_back(ModifierFlag(datatype, newval)); break; case INDEX_TYPE_TOKEYS: keytokey_.add(datatype, newval); break; } break; } case BRIDGE_DATATYPE_KEYCODE: case BRIDGE_DATATYPE_CONSUMERKEYCODE: case BRIDGE_DATATYPE_POINTINGBUTTON: { switch (index_type_) { case INDEX_TYPE_DEFAULT: fromEvent_ = FromEvent(datatype, newval); toEvent_ = ToEvent(datatype, newval); break; case INDEX_TYPE_TOKEYS: keytokey_.add(datatype, newval); break; default: IOLOG_ERROR("PointingRelativeToScroll::add invalid BRIDGE_DATATYPE_POINTINGBUTTON\n"); break; } break; } case BRIDGE_DATATYPE_OPTION: { Option option(newval); if (Option::POINTINGRELATIVETOSCROLL_TOFLAGS == option) { index_type_ = INDEX_TYPE_TOFLAGS; } if (Option::POINTINGRELATIVETOSCROLL_TOKEYS == option) { index_type_ = INDEX_TYPE_TOKEYS; isToKeysDefined_ = true; } break; } default: IOLOG_ERROR("PointingRelativeToScroll::add invalid datatype:%u\n", static_cast<unsigned int>(datatype)); break; } }
void PointingRelativeToScroll::add(unsigned int datatype, unsigned int newval) { switch (datatype) { case BRIDGE_DATATYPE_FLAGS: { switch (index_type_) { case INDEX_TYPE_DEFAULT: fromFlags_ = Flags(newval); break; case INDEX_TYPE_TOFLAGS: toFlags_ = Flags(newval); break; case INDEX_TYPE_TOKEYS: keytokey_.add(datatype, newval); break; } break; } case BRIDGE_DATATYPE_KEYCODE: case BRIDGE_DATATYPE_CONSUMERKEYCODE: case BRIDGE_DATATYPE_POINTINGBUTTON: { switch (index_type_) { case INDEX_TYPE_DEFAULT: fromEvent_ = FromEvent(datatype, newval); toEvent_ = ToEvent(datatype, newval); break; case INDEX_TYPE_TOKEYS: keytokey_.add(datatype, newval); break; default: IOLOG_ERROR("PointingRelativeToScroll::add invalid BRIDGE_DATATYPE_POINTINGBUTTON\n"); break; } break; } case BRIDGE_DATATYPE_OPTION: { Option option(newval); if (Option::POINTINGRELATIVETOSCROLL_TOFLAGS == option) { index_type_ = INDEX_TYPE_TOFLAGS; } if (Option::POINTINGRELATIVETOSCROLL_TOKEYS == option) { index_type_ = INDEX_TYPE_TOKEYS; isToKeysDefined_ = true; keytokey_.add(KeyCode::VK_PSEUDO_KEY); keytokey_.add(fromFlags_); } break; } default: IOLOG_ERROR("PointingRelativeToScroll::add invalid datatype:%d\n", datatype); break; } }
void KeyToKey::add(AddDataType datatype, AddValue newval) { switch (datatype) { case BRIDGE_DATATYPE_KEYCODE: case BRIDGE_DATATYPE_CONSUMERKEYCODE: case BRIDGE_DATATYPE_POINTINGBUTTON: { switch (index_) { case 0: fromEvent_ = FromEvent(datatype, newval); break; default: getCurrentToEvent().push_back(ToEvent(datatype, newval)); break; } ++index_; break; } case BRIDGE_DATATYPE_MODIFIERFLAG: case BRIDGE_DATATYPE_MODIFIERFLAGS_END: { switch (index_) { case 0: IOLOG_ERROR("Invalid KeyToKey::add\n"); break; case 1: { ModifierFlag modifierFlag(datatype, newval); fromModifierFlags_.push_back(modifierFlag); if (fromEvent_.getModifierFlag() != modifierFlag) { pureFromModifierFlags_.push_back(modifierFlag); } break; } default: if (! getCurrentToEvent().empty()) { getCurrentToEvent().back().addModifierFlag(datatype, newval); } break; } break; } case BRIDGE_DATATYPE_OPTION: { Option option(newval); if (Option::NOREPEAT == option) { isRepeatEnabled_ = false; } else if (Option::KEYTOKEY_BEFORE_KEYDOWN == option) { currentToEvent_ = CurrentToEvent::BEFOREKEYS; } else if (Option::KEYTOKEY_AFTER_KEYUP == option) { currentToEvent_ = CurrentToEvent::AFTERKEYS; } else if (Option::USE_SEPARATOR == option || Option::SEPARATOR == option) { // do nothing } else { IOLOG_ERROR("KeyToKey::add unknown option:%u\n", static_cast<unsigned int>(newval)); } break; } case BRIDGE_DATATYPE_DELAYUNTILREPEAT: { delayUntilRepeat_ = newval; break; } case BRIDGE_DATATYPE_KEYREPEAT: { keyRepeat_ = newval; break; } default: IOLOG_ERROR("KeyToKey::add invalid datatype:%u\n", static_cast<unsigned int>(datatype)); break; } }