handleKey method

bool handleKey(
  1. String keyCode
)

Implementation

bool handleKey(String keyCode) {
  final keyUpper = keyCode.toUpperCase();
  if (keyUpper == 'RIGHT' ||
      keyUpper == 'CURSOR_RIGHT' ||
      keyUpper == 'LEFT' ||
      keyUpper == 'CURSOR_LEFT' ||
      keyUpper == 'UP' ||
      keyUpper == 'CURSOR_UP' ||
      keyUpper == 'DOWN' ||
      keyUpper == 'CURSOR_DOWN') {
    moveFocus(keyUpper);
    return true;
  }

  if (keyUpper == 'ENTER' || keyUpper == 'OK' || keyUpper == 'SELECT') {
    handleSelection(null, 'ENTER');
    return true;
  }

  bool triggeredAny = false;
  for (var media in getActiveMedia()) {
    if (media.id != null) {
      final links = scheduler.getLinksForComponent(media.id!);
      final hasLink = links.any((l) => l.children.whereType<Bind>().any((b) =>
          (b.role == 'onSelection' || b.role == 'onSelect') &&
          b.component == media.id &&
          (b.children.whereType<BindParam>().any((bp) =>
                  (bp.name == 'keyCode' || bp.name == 'key') &&
                  bp.value?.toUpperCase() == keyUpper) ||
              l.children.whereType<BindParam>().any((bp) =>
                  (bp.name == 'keyCode' || bp.name == 'key') &&
                  bp.value?.toUpperCase() == keyUpper))));
      if (hasLink) {
        scheduler.triggerSelection(media.id!, keyUpper);
        triggeredAny = true;
      }
    }
  }
  return triggeredAny;
}