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;
      }
    }
Пример #3
0
    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;
      }
    }