diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6c40c2c4..b2edb438 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -359,13 +359,13 @@ jobs: - name: Cache APT packages uses: awalsh128/cache-apt-pkgs-action@latest with: - packages: clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libasound2-dev libmpv-dev mpv keybinder-3.0 ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick + packages: clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libasound2-dev libmpv-dev mpv ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick version: 1.1 - name: Install Linux dependencies run: | sudo apt-get update - sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libasound2-dev libmpv-dev mpv keybinder-3.0 ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick + sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libasound2-dev libmpv-dev mpv ruby ruby-dev rubygems build-essential rpm libarchive-tools imagemagick - name: Install fpm run: sudo gem install fpm diff --git a/lib/models/hotkey_model.dart b/lib/models/hotkey_model.dart new file mode 100644 index 00000000..3c0c6367 --- /dev/null +++ b/lib/models/hotkey_model.dart @@ -0,0 +1,157 @@ +import 'dart:io' show Platform; + +import 'package:flutter/services.dart'; + +/// Modifier keys that can be combined with a primary key to form a hotkey. +/// +/// Each value holds the physical keys that correspond to it (e.g. shift maps +/// to both shiftLeft and shiftRight). The [name] strings are used for +/// serialization and must stay stable across versions. +enum HotKeyModifier { + alt([PhysicalKeyboardKey.altLeft, PhysicalKeyboardKey.altRight]), + capsLock([PhysicalKeyboardKey.capsLock]), + control([PhysicalKeyboardKey.controlLeft, PhysicalKeyboardKey.controlRight]), + fn([PhysicalKeyboardKey.fn]), + meta([PhysicalKeyboardKey.metaLeft, PhysicalKeyboardKey.metaRight]), + shift([PhysicalKeyboardKey.shiftLeft, PhysicalKeyboardKey.shiftRight]); + + const HotKeyModifier(this.physicalKeys); + + final List physicalKeys; +} + +/// A keyboard shortcut consisting of a primary [key] and optional [modifiers]. +class HotKey { + const HotKey({required this.key, this.modifiers}); + + final PhysicalKeyboardKey key; + final List? modifiers; +} + +/// Whether to use macOS keyboard symbols. +final bool _isMacOS = Platform.isMacOS; + +/// Human-readable label for a [PhysicalKeyboardKey]. +/// +/// On macOS, returns standard symbols (⌘, ⇧, ⌥, ⌃, ←, etc.). +/// Keyed by [PhysicalKeyboardKey.usbHidUsage] (an int) so maps can be const. +String physicalKeyLabel(PhysicalKeyboardKey key) { + if (_isMacOS) { + final macLabel = _macKeyLabels[key.usbHidUsage]; + if (macLabel != null) return macLabel; + } + return _knownKeyLabels[key.usbHidUsage] ?? key.debugName ?? 'Unknown'; +} + +/// macOS-specific overrides for keys that have standard symbols. +const _macKeyLabels = { + 0x00070028: '\u21a9', // enter → ↩ + 0x00070029: '\u238b', // escape → ⎋ + 0x0007002a: '\u232b', // backspace → ⌫ + 0x0007002b: '\u21e5', // tab → ⇥ + 0x00070039: '\u21ea', // capsLock → ⇪ + 0x0007004a: '\u2196', // home → ↖ + 0x0007004b: '\u21de', // pageUp → ⇞ + 0x0007004c: '\u2326', // delete → ⌦ + 0x0007004d: '\u2198', // end → ↘ + 0x0007004e: '\u21df', // pageDown → ⇟ + 0x0007004f: '\u2192', // arrowRight → → + 0x00070050: '\u2190', // arrowLeft → ← + 0x00070051: '\u2193', // arrowDown → ↓ + 0x00070052: '\u2191', // arrowUp → ↑ + 0x000700e0: '\u2303', // controlLeft → ⌃ + 0x000700e1: '\u21e7', // shiftLeft → ⇧ + 0x000700e2: '\u2325', // altLeft (Option) → ⌥ + 0x000700e3: '\u2318', // metaLeft (Command) → ⌘ + 0x000700e4: '\u2303', // controlRight → ⌃ + 0x000700e5: '\u21e7', // shiftRight → ⇧ + 0x000700e6: '\u2325', // altRight (Option) → ⌥ + 0x000700e7: '\u2318', // metaRight (Command) → ⌘ + 0x00000012: 'fn', // fn +}; + +const _knownKeyLabels = { + 0x00070004: 'A', // keyA + 0x00070005: 'B', // keyB + 0x00070006: 'C', // keyC + 0x00070007: 'D', // keyD + 0x00070008: 'E', // keyE + 0x00070009: 'F', // keyF + 0x0007000a: 'G', // keyG + 0x0007000b: 'H', // keyH + 0x0007000c: 'I', // keyI + 0x0007000d: 'J', // keyJ + 0x0007000e: 'K', // keyK + 0x0007000f: 'L', // keyL + 0x00070010: 'M', // keyM + 0x00070011: 'N', // keyN + 0x00070012: 'O', // keyO + 0x00070013: 'P', // keyP + 0x00070014: 'Q', // keyQ + 0x00070015: 'R', // keyR + 0x00070016: 'S', // keyS + 0x00070017: 'T', // keyT + 0x00070018: 'U', // keyU + 0x00070019: 'V', // keyV + 0x0007001a: 'W', // keyW + 0x0007001b: 'X', // keyX + 0x0007001c: 'Y', // keyY + 0x0007001d: 'Z', // keyZ + 0x0007001e: '1', // digit1 + 0x0007001f: '2', // digit2 + 0x00070020: '3', // digit3 + 0x00070021: '4', // digit4 + 0x00070022: '5', // digit5 + 0x00070023: '6', // digit6 + 0x00070024: '7', // digit7 + 0x00070025: '8', // digit8 + 0x00070026: '9', // digit9 + 0x00070027: '0', // digit0 + 0x00070028: 'Enter', // enter + 0x00070029: 'Escape', // escape + 0x0007002a: 'Backspace', // backspace + 0x0007002b: 'Tab', // tab + 0x0007002c: 'Space', // space + 0x0007002d: '=', // equal + 0x0007002e: '-', // minus + 0x0007002f: '[', // bracketLeft + 0x00070030: ']', // bracketRight + 0x00070031: r'\', // backslash + 0x00070033: ';', // semicolon + 0x00070034: "'", // quote + 0x00070035: '`', // backquote + 0x00070036: ',', // comma + 0x00070037: '.', // period + 0x00070038: '/', // slash + 0x00070039: 'CapsLock', // capsLock + 0x0007003a: 'F1', + 0x0007003b: 'F2', + 0x0007003c: 'F3', + 0x0007003d: 'F4', + 0x0007003e: 'F5', + 0x0007003f: 'F6', + 0x00070040: 'F7', + 0x00070041: 'F8', + 0x00070042: 'F9', + 0x00070043: 'F10', + 0x00070044: 'F11', + 0x00070045: 'F12', + 0x0007004a: 'Home', // home + 0x0007004b: 'Page Up', // pageUp + 0x0007004c: 'Delete', // delete + 0x0007004d: 'End', // end + 0x0007004e: 'Page Down', // pageDown + 0x0007004f: 'Arrow Right', // arrowRight + 0x00070050: 'Arrow Left', // arrowLeft + 0x00070051: 'Arrow Down', // arrowDown + 0x00070052: 'Arrow Up', // arrowUp + 0x000700e0: 'Ctrl', // controlLeft + 0x000700e1: 'Shift', // shiftLeft + 0x000700e2: 'Alt', // altLeft + 0x000700e3: 'Meta', // metaLeft + 0x000700e4: 'Ctrl', // controlRight + 0x000700e5: 'Shift', // shiftRight + 0x000700e6: 'Alt', // altRight + 0x000700e7: 'Meta', // metaRight + 0x00000012: 'Fn', // fn +}; diff --git a/lib/screens/settings/hotkey_recorder_widget.dart b/lib/screens/settings/hotkey_recorder_widget.dart index 9d019b9f..c60d93a3 100644 --- a/lib/screens/settings/hotkey_recorder_widget.dart +++ b/lib/screens/settings/hotkey_recorder_widget.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:plezy/widgets/app_icon.dart'; import 'package:material_symbols_icons/symbols.dart'; -import 'package:hotkey_manager/hotkey_manager.dart'; +import '../../models/hotkey_model.dart'; +import '../../widgets/hotkey_recorder.dart'; import '../../i18n/strings.g.dart'; class HotKeyRecorderWidget extends StatefulWidget { diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index 1899356d..d2cb8005 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:plezy/widgets/app_icon.dart'; import 'package:material_symbols_icons/symbols.dart'; -import 'package:hotkey_manager/hotkey_manager.dart'; +import '../../models/hotkey_model.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/lib/services/keyboard_shortcuts_service.dart b/lib/services/keyboard_shortcuts_service.dart index 859aadff..7b0cdc00 100644 --- a/lib/services/keyboard_shortcuts_service.dart +++ b/lib/services/keyboard_shortcuts_service.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:hotkey_manager/hotkey_manager.dart'; +import '../models/hotkey_model.dart'; import '../i18n/strings.g.dart'; import '../mpv/mpv.dart'; import 'settings_service.dart'; @@ -91,64 +91,36 @@ class KeyboardShortcutsService { String formatHotkey(HotKey? hotKey) { if (hotKey == null) return 'No shortcut set'; - final modifiers = []; - for (final modifier in hotKey.modifiers ?? []) { - switch (modifier) { - case HotKeyModifier.alt: - modifiers.add('Alt'); - break; - case HotKeyModifier.control: - modifiers.add('Ctrl'); - break; - case HotKeyModifier.shift: - modifiers.add('Shift'); - break; - case HotKeyModifier.meta: - modifiers.add('Meta'); - break; - case HotKeyModifier.capsLock: - modifiers.add('CapsLock'); - break; - case HotKeyModifier.fn: - modifiers.add('Fn'); - break; - } - } + final isMac = Platform.isMacOS; - // Format the key name - String keyName = hotKey.key.keyLabel; - if (keyName.startsWith('PhysicalKeyboardKey#')) { - keyName = keyName.substring(20, keyName.length - 1); - } - if (keyName.startsWith('key')) { - keyName = keyName.substring(3).toUpperCase(); - } + // macOS standard modifier order: ⌃ ⌥ ⇧ ⌘ + const macModifierLabels = { + HotKeyModifier.control: '\u2303', + HotKeyModifier.alt: '\u2325', + HotKeyModifier.shift: '\u21e7', + HotKeyModifier.meta: '\u2318', + HotKeyModifier.capsLock: '\u21ea', + HotKeyModifier.fn: 'fn', + }; - // Special cases for common keys - switch (keyName.toLowerCase()) { - case 'space': - keyName = 'Space'; - break; - case 'arrowup': - keyName = 'Arrow Up'; - break; - case 'arrowdown': - keyName = 'Arrow Down'; - break; - case 'arrowleft': - keyName = 'Arrow Left'; - break; - case 'arrowright': - keyName = 'Arrow Right'; - break; - case 'equal': - keyName = 'Plus'; - break; - case 'minus': - keyName = 'Minus'; - break; - } + const defaultModifierLabels = { + HotKeyModifier.alt: 'Alt', + HotKeyModifier.control: 'Ctrl', + HotKeyModifier.shift: 'Shift', + HotKeyModifier.meta: 'Meta', + HotKeyModifier.capsLock: 'CapsLock', + HotKeyModifier.fn: 'Fn', + }; + final labels = isMac ? macModifierLabels : defaultModifierLabels; + final modifiers = (hotKey.modifiers ?? []).map((m) => labels[m] ?? m.name).toList(); + + // The key label already uses macOS symbols via physicalKeyLabel() + final keyName = physicalKeyLabel(hotKey.key); + + if (isMac) { + return [...modifiers, keyName].join(); + } return modifiers.isEmpty ? keyName : '${modifiers.join(' + ')} + $keyName'; } diff --git a/lib/services/settings_service.dart b/lib/services/settings_service.dart index 035a4289..1bf1ad8d 100644 --- a/lib/services/settings_service.dart +++ b/lib/services/settings_service.dart @@ -1,6 +1,6 @@ import 'dart:convert'; import 'package:flutter/services.dart'; -import 'package:hotkey_manager/hotkey_manager.dart'; +import '../models/hotkey_model.dart'; import 'package:plezy/utils/app_logger.dart'; import '../i18n/strings.g.dart'; import '../models/mpv_config_models.dart'; @@ -517,8 +517,7 @@ class SettingsService extends BaseSharedPreferencesService { Map _serializeHotKey(HotKey hotKey) { // Use USB HID code for reliable serialization across debug/release modes - final physicalKey = hotKey.key as PhysicalKeyboardKey; - final usbHidCode = physicalKey.usbHidUsage.toRadixString(16).padLeft(8, '0'); + final usbHidCode = hotKey.key.usbHidUsage.toRadixString(16).padLeft(8, '0'); return {'key': usbHidCode, 'modifiers': hotKey.modifiers?.map((m) => m.name).toList() ?? []}; } diff --git a/lib/widgets/hotkey_recorder.dart b/lib/widgets/hotkey_recorder.dart new file mode 100644 index 00000000..98607dd4 --- /dev/null +++ b/lib/widgets/hotkey_recorder.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../models/hotkey_model.dart'; + +/// Captures a key combination from the user and calls [onHotKeyRecorded]. +class HotKeyRecorder extends StatefulWidget { + const HotKeyRecorder({super.key, this.initalHotKey, required this.onHotKeyRecorded}); + + final HotKey? initalHotKey; + final ValueChanged onHotKeyRecorded; + + @override + State createState() => _HotKeyRecorderState(); +} + +class _HotKeyRecorderState extends State { + HotKey? _hotKey; + + @override + void initState() { + super.initState(); + _hotKey = widget.initalHotKey; + HardwareKeyboard.instance.addHandler(_handleKeyEvent); + } + + @override + void dispose() { + HardwareKeyboard.instance.removeHandler(_handleKeyEvent); + super.dispose(); + } + + bool _handleKeyEvent(KeyEvent keyEvent) { + if (keyEvent is KeyUpEvent) return false; + + final physicalKeysPressed = HardwareKeyboard.instance.physicalKeysPressed; + final PhysicalKeyboardKey key = keyEvent.physicalKey; + + // Detect which modifiers are currently held down, excluding the primary key + List modifiers = HotKeyModifier.values + .where((m) => m.physicalKeys.any(physicalKeysPressed.contains)) + .where((m) => !m.physicalKeys.contains(key)) + .toList(); + + _hotKey = HotKey(key: key, modifiers: modifiers.isNotEmpty ? modifiers : null); + widget.onHotKeyRecorded(_hotKey!); + setState(() {}); + return true; + } + + @override + Widget build(BuildContext context) { + if (_hotKey == null) return const SizedBox.shrink(); + return HotKeyVirtualView(hotKey: _hotKey!); + } +} + +/// Renders a [HotKey] as a row of styled key label chips. +class HotKeyVirtualView extends StatelessWidget { + const HotKeyVirtualView({super.key, required this.hotKey}); + + final HotKey hotKey; + + @override + Widget build(BuildContext context) { + return Wrap( + spacing: 8, + children: [ + for (final modifier in hotKey.modifiers ?? []) + _VirtualKeyView(keyLabel: physicalKeyLabel(modifier.physicalKeys.first)), + _VirtualKeyView(keyLabel: physicalKeyLabel(hotKey.key)), + ], + ); + } +} + +class _VirtualKeyView extends StatelessWidget { + const _VirtualKeyView({required this.keyLabel}); + + final String keyLabel; + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 3), + decoration: BoxDecoration( + color: Theme.of(context).canvasColor, + border: Border.all(color: Theme.of(context).dividerColor), + borderRadius: BorderRadius.circular(3), + boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.3), offset: const Offset(0.0, 1.0))], + ), + child: Text(keyLabel, style: TextStyle(color: Theme.of(context).textTheme.bodyMedium?.color, fontSize: 12)), + ); + } +} diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 7bc92601..69e7208d 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,7 +7,6 @@ #include "generated_plugin_registrant.h" #include -#include #include #include #include @@ -19,9 +18,6 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin"); flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar); - g_autoptr(FlPluginRegistrar) hotkey_manager_linux_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "HotkeyManagerLinuxPlugin"); - hotkey_manager_linux_plugin_register_with_registrar(hotkey_manager_linux_registrar); g_autoptr(FlPluginRegistrar) os_media_controls_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "OsMediaControlsPlugin"); os_media_controls_plugin_register_with_registrar(os_media_controls_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index bc8ad390..a560d685 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,7 +4,6 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_webrtc - hotkey_manager_linux os_media_controls screen_retriever_linux sqlite3_flutter_libs diff --git a/linux/packaging/build-packages.py b/linux/packaging/build-packages.py index d0269f0e..2290b75d 100755 --- a/linux/packaging/build-packages.py +++ b/linux/packaging/build-packages.py @@ -36,7 +36,6 @@ DISTROS = { "libgtk-3-0", "libmpv2 | libmpv1", "libepoxy0", - "libkeybinder-3.0-0", "libasound2", "libglib2.0-0", ], @@ -51,7 +50,6 @@ DISTROS = { "gtk3", "mpv-libs", "libepoxy", - "keybinder3", "alsa-lib", "glib2", ], @@ -66,7 +64,6 @@ DISTROS = { "gtk3", "mpv", "libepoxy", - "keybinder3", "alsa-lib", "glib2", ], diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index b8e75870..5e16df69 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,7 +9,6 @@ import connectivity_plus import device_info_plus import file_picker import flutter_webrtc -import hotkey_manager_macos import in_app_review import os_media_controls import package_info_plus @@ -28,7 +27,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) - HotkeyManagerMacosPlugin.register(with: registry.registrar(forPlugin: "HotkeyManagerMacosPlugin")) InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin")) OsMediaControlsPlugin.register(with: registry.registrar(forPlugin: "OsMediaControlsPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 6e23a4fb..2db07d38 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -9,10 +9,6 @@ PODS: - FlutterMacOS - WebRTC-SDK (= 137.7151.04) - FlutterMacOS (1.0.0) - - HotKey (0.2.1) - - hotkey_manager_macos (0.0.1): - - FlutterMacOS - - HotKey - in_app_review (2.0.0): - FlutterMacOS - os_media_controls (0.0.1): @@ -71,7 +67,6 @@ DEPENDENCIES: - file_picker (from `Flutter/ephemeral/.symlinks/plugins/file_picker/macos`) - flutter_webrtc (from `Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - - hotkey_manager_macos (from `Flutter/ephemeral/.symlinks/plugins/hotkey_manager_macos/macos`) - in_app_review (from `Flutter/ephemeral/.symlinks/plugins/in_app_review/macos`) - os_media_controls (from `Flutter/ephemeral/.symlinks/plugins/os_media_controls/macos`) - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) @@ -87,7 +82,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - - HotKey - sqlite3 - WebRTC-SDK @@ -102,8 +96,6 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos FlutterMacOS: :path: Flutter/ephemeral - hotkey_manager_macos: - :path: Flutter/ephemeral/.symlinks/plugins/hotkey_manager_macos/macos in_app_review: :path: Flutter/ephemeral/.symlinks/plugins/in_app_review/macos os_media_controls: @@ -135,8 +127,6 @@ SPEC CHECKSUMS: file_picker: 7584aae6fa07a041af2b36a2655122d42f578c1a flutter_webrtc: 718eae22a371cd94e5d56aa4f301443ebc5bb737 FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1 - HotKey: 400beb7caa29054ea8d864c96f5ba7e5b4852277 - hotkey_manager_macos: a4317849af96d2430fa89944d3c58977ca089fbe in_app_review: 66e7680752b632d83f4f0e88b34d52ed303fbff4 os_media_controls: c07c04c4afdf59dda0a3f398457a46823c4ce0ed package_info_plus: f0052d280d17aa382b932f399edf32507174e870 diff --git a/pubspec.lock b/pubspec.lock index 07fad22b..f5c95c5a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -517,46 +517,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" - hotkey_manager: - dependency: "direct main" - description: - name: hotkey_manager - sha256: "06f0655b76c8dd322fb7101dc615afbdbf39c3d3414df9e059c33892104479cd" - url: "https://pub.dev" - source: hosted - version: "0.2.3" - hotkey_manager_linux: - dependency: transitive - description: - name: hotkey_manager_linux - sha256: "83676bda8210a3377bc6f1977f193bc1dbdd4c46f1bdd02875f44b6eff9a8473" - url: "https://pub.dev" - source: hosted - version: "0.2.0" - hotkey_manager_macos: - dependency: transitive - description: - name: hotkey_manager_macos - sha256: "03b5967e64357b9ac05188ea4a5df6fe4ed4205762cb80aaccf8916ee1713c96" - url: "https://pub.dev" - source: hosted - version: "0.2.0" - hotkey_manager_platform_interface: - dependency: transitive - description: - name: hotkey_manager_platform_interface - sha256: "98ffca25b8cc9081552902747b2942e3bc37855389a4218c9d50ca316b653b13" - url: "https://pub.dev" - source: hosted - version: "0.2.0" - hotkey_manager_windows: - dependency: transitive - description: - name: hotkey_manager_windows - sha256: "0d03ced9fe563ed0b68f0a0e1b22c9ffe26eb8053cb960e401f68a4f070e0117" - url: "https://pub.dev" - source: hosted - version: "0.2.0" html: dependency: transitive description: @@ -1299,14 +1259,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" - uni_platform: - dependency: transitive - description: - name: uni_platform - sha256: e02213a7ee5352212412ca026afd41d269eb00d982faa552f419ffc2debfad84 - url: "https://pub.dev" - source: hosted - version: "0.1.3" universal_gamepad: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index ef5ecb07..19b6d7e5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,7 +21,6 @@ dependencies: package_info_plus: ^9.0.0 device_info_plus: ^11.0.0 provider: ^6.1.2 - hotkey_manager: ^0.2.3 flex_color_picker: ^3.6.0 qr_flutter: ^4.1.0 slang: ^4.12.0 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 5f835ebe..88e1c798 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,7 +8,6 @@ #include #include -#include #include #include #include @@ -21,8 +20,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FlutterWebRTCPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterWebRTCPlugin")); - HotkeyManagerWindowsPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("HotkeyManagerWindowsPluginCApi")); OsMediaControlsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("OsMediaControlsPluginCApi")); ScreenRetrieverWindowsPluginCApiRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index fd5c102b..1dca6fac 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,7 +5,6 @@ list(APPEND FLUTTER_PLUGIN_LIST connectivity_plus flutter_webrtc - hotkey_manager_windows os_media_controls screen_retriever_windows sqlite3_flutter_libs