onKeySetChange method

dynamic onKeySetChange(
  1. dynamic _
)

Implementation

onKeySetChange(_) {
  ctrlPressed = false;
  altPressed = false;
  shiftPressed = false;

  var keys = key?.split("-");

  // lookup logical keys
  if (keys != null) {
    for (var keyLabel in keys) {
      // lookup the logical key
      keyLabel = keyLabel.trim();

      // control key?
      LogicalKeyboardKey? key;
      if (keyLabel.toUpperCase() == "CTRL") {
        key = LogicalKeyboardKey.control;
        ctrlPressed = true;
      } else if (keyLabel.toUpperCase() == "ALT") {
        key = LogicalKeyboardKey.alt;
        altPressed = true;
      } else if (keyLabel.toUpperCase() == "SHIFT") {
        key = LogicalKeyboardKey.shift;
        shiftPressed = true;
      }

      // other key?
      else {
        // lookup key
        key = LogicalKeyboardKey.knownLogicalKeys.firstWhereOrNull((k) {
          if (k.keyLabel == keyLabel) return true;
          if (k.keyLabel.toUpperCase() == keyLabel.toUpperCase()) return true;
          for (var s in k.synonyms) {
            if (s.keyLabel == keyLabel) return true;
            if (s.keyLabel.toUpperCase() == keyLabel.toUpperCase()) {
              return true;
            }
          }
          return false;
        });
      }

      // no corresponding key
      if (key == null) {
        keySequence.clear();
        break;
      }

      // add logical key to the set
      if (!ShortcutHandler.isControlKey(key)) {
        keySequence.add(key);
      }
    }
  }
}