Skip to content

Latest commit

 

History

History
54 lines (42 loc) · 2.1 KB

README.md

File metadata and controls

54 lines (42 loc) · 2.1 KB

Galactic Hotkeys

A Flutter package that simplifies the implementation of keyboard shortcuts in your Flutter applications.

Usage

To use Galactic Hotkeys, wrap your main widget with the GalacticHotkeys widget and provide the desired shortcuts and a callback function to handle when a shortcut is pressed.

GalacticHotkeys<String>(
  shortcuts: {
    'Save': [
      [LogicalKeyboardKey.controlLeft, LogicalKeyboardKey.keyS],
      [LogicalKeyboardKey.metaLeft, LogicalKeyboardKey.keyS],
    ],
    'Copy': [
      [LogicalKeyboardKey.controlLeft, LogicalKeyboardKey.keyC],
      [LogicalKeyboardKey.metaLeft, LogicalKeyboardKey.keyC],
    ],
    // Add more shortcuts as needed
  },
  onShortcutPressed: (String identifier, List<LogicalKeyboardKey> pressedKeys) {
    // Handle the shortcut press
    print('Shortcut pressed: $identifier');
  },
  child: const Container(),
)

In this example, the GalacticHotkeys widget is used to capture keyboard shortcuts and trigger the onShortcutPressed callback with the corresponding identifier.

Additionally, you can use the GalacticHotkeysBuilder widget to build your UI based on the currently pressed keys.

GalacticHotkeysBuilder(
  builder: (context, List<LogicalKeyboardKey> pressedKeys) {
    // Example: Check if only the Control key is pressed
    final onlyControlIsPressed = pressedKeys.length == 1 && pressedKeys.first == LogicalKeyboardKey.controlLeft;
    
    // Use the pressedKeys information to build your UI accordingly
    return YourCustomWidget(
      showControlMessage: onlyControlIsPressed,
    );
  },
)

In this example, GalacticHotkeysBuilder is used to get the list of currently pressed keys and build a custom widget based on the condition that only the Control key is pressed. Customize the builder function as needed for your application. Note: GalacticHotkeysBuilder should have a parent GalacticHotkeys widget in the widget tree to function correctly. Ensure that you have wrapped your main widget with GalacticHotkeys or its equivalent ancestor using a Provider

License

This project is licensed under the BSD 3-Clause License.