import 'dart:io'; import 'package:flutter/services.dart'; import 'package:uni_platform/uni_platform.dart'; final Map _knownKeyLabels = { PhysicalKeyboardKey.keyA: 'A', PhysicalKeyboardKey.keyB: 'B', PhysicalKeyboardKey.keyC: 'C', PhysicalKeyboardKey.keyD: 'D', PhysicalKeyboardKey.keyE: 'E', PhysicalKeyboardKey.keyF: 'F', PhysicalKeyboardKey.keyG: 'G', PhysicalKeyboardKey.keyH: 'H', PhysicalKeyboardKey.keyI: 'I', PhysicalKeyboardKey.keyJ: 'J', PhysicalKeyboardKey.keyK: 'K', PhysicalKeyboardKey.keyL: 'L', PhysicalKeyboardKey.keyM: 'M', PhysicalKeyboardKey.keyN: 'N', PhysicalKeyboardKey.keyO: 'O', PhysicalKeyboardKey.keyP: 'P', PhysicalKeyboardKey.keyQ: 'Q', PhysicalKeyboardKey.keyR: 'R', PhysicalKeyboardKey.keyS: 'S', PhysicalKeyboardKey.keyT: 'T', PhysicalKeyboardKey.keyU: 'U', PhysicalKeyboardKey.keyV: 'V', PhysicalKeyboardKey.keyW: 'W', PhysicalKeyboardKey.keyX: 'X', PhysicalKeyboardKey.keyY: 'Y', PhysicalKeyboardKey.keyZ: 'Z', PhysicalKeyboardKey.digit1: '1', PhysicalKeyboardKey.digit2: '2', PhysicalKeyboardKey.digit3: '3', PhysicalKeyboardKey.digit4: '4', PhysicalKeyboardKey.digit5: '5', PhysicalKeyboardKey.digit6: '6', PhysicalKeyboardKey.digit7: '7', PhysicalKeyboardKey.digit8: '8', PhysicalKeyboardKey.digit9: '9', PhysicalKeyboardKey.digit0: '0', PhysicalKeyboardKey.enter: 'ENTER', PhysicalKeyboardKey.escape: 'ESCAPE', PhysicalKeyboardKey.backspace: 'BACKSPACE', PhysicalKeyboardKey.tab: 'TAB', PhysicalKeyboardKey.space: 'SPACE', PhysicalKeyboardKey.minus: '-', PhysicalKeyboardKey.equal: '=', PhysicalKeyboardKey.bracketLeft: '[', PhysicalKeyboardKey.bracketRight: ']', PhysicalKeyboardKey.backslash: '\\', PhysicalKeyboardKey.semicolon: ';', PhysicalKeyboardKey.quote: '"', PhysicalKeyboardKey.backquote: '`', PhysicalKeyboardKey.comma: ',', PhysicalKeyboardKey.period: '.', PhysicalKeyboardKey.slash: '/', PhysicalKeyboardKey.capsLock: 'CAPSLOCK', PhysicalKeyboardKey.f1: 'F1', PhysicalKeyboardKey.f2: 'F2', PhysicalKeyboardKey.f3: 'F3', PhysicalKeyboardKey.f4: 'F4', PhysicalKeyboardKey.f5: 'F5', PhysicalKeyboardKey.f6: 'F6', PhysicalKeyboardKey.f7: 'F7', PhysicalKeyboardKey.f8: 'F8', PhysicalKeyboardKey.f9: 'F9', PhysicalKeyboardKey.f10: 'F10', PhysicalKeyboardKey.f11: 'F11', PhysicalKeyboardKey.f12: 'F12', PhysicalKeyboardKey.home: 'HOME', PhysicalKeyboardKey.pageUp: 'PAGEUP', PhysicalKeyboardKey.delete: 'DELETE', PhysicalKeyboardKey.end: 'END', PhysicalKeyboardKey.pageDown: 'PAGEDOWN', PhysicalKeyboardKey.arrowRight: '→', PhysicalKeyboardKey.arrowLeft: '←', PhysicalKeyboardKey.arrowDown: '↓', PhysicalKeyboardKey.arrowUp: '↑', PhysicalKeyboardKey.controlLeft: "CTRL", PhysicalKeyboardKey.shiftLeft: 'SHIFT', PhysicalKeyboardKey.altLeft: "ALT", PhysicalKeyboardKey.metaLeft: Platform.isMacOS ? '⌘' : 'WIN', PhysicalKeyboardKey.controlRight: "CTRL", PhysicalKeyboardKey.shiftRight: 'SHIFT', PhysicalKeyboardKey.altRight: "ALT", PhysicalKeyboardKey.metaRight: Platform.isMacOS ? '⌘' : 'WIN', PhysicalKeyboardKey.fn: 'FN', }; extension KeyboardKeyExt on KeyboardKey { String get label { PhysicalKeyboardKey? physicalKey; if (this is LogicalKeyboardKey) { physicalKey = (this as LogicalKeyboardKey).physicalKey; } else if (this is PhysicalKeyboardKey) { physicalKey = this as PhysicalKeyboardKey; } return _knownKeyLabels[physicalKey] ?? physicalKey?.debugName ?? 'Unknown'; } }