Keyboard layout mapping for Flutter
Features
- Supports macOS, Windows and Linux
- Allows mapping between physical keys, logical keys and platform specific key codes according to current keyboard layout.
- Notification for keyboard layout changes.
Getting started
super_keyboard_layout
uses Rust internally to implement low-level platform specific functionality.
If you don't have Rust installed, the plugin will automatically download precompiled binaries for target platform.
If you want to have the Rust code compiled from source instead, you can install Rust through rustup. The presence of rustup will be detected during build automatically.
For macOS or Linux, execute the following command in Terminal.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
For Windows, you can use the Rust Installer.
In case you have Rust already installed, make sure to update it to latest version:
rustup update
That is it. The build integration will automatically install required Rust targets and other dependencies. This also means that first build might take a little bit longer.
Usage
import 'package:super_keyboard_layout/super_keyboard_layout.dart';
void main() async {
final manager = await KeyboardLayoutManager.instance();
if (manager.supported) {
// Running on supported platform
manager.onLayoutChanged.addListener(() {
// Keyboard layout changed
print('Keyboard layout changed');
});
}
final layout = manager.currentLayout;
// Getting logical key for physical key 1 with shift for current layout
final logicalKey = layout.getLogicalKeyForPhysicalKey(PhysicalKeyboardKey.digit1, shift: true);
// Getting physical key for logical key
final physicalKey = layout.getPhysicalKeyForLogicalKey(LogicalKeyboardKey.keyA);
// Getting platform spcific key code for either logical or physical key
final playformCode = layout.getPlatformKeyCode(PhysicalKeyboardKey.digit1);
}
Running the example
Example project is available at super_keyboard_layout/example
.
flutter pub global activate melos # if you don't have melos already installed
git clone https://github.com/superlistapp/super_native_extensions.git
cd super_native_extensions
melos bootstrap
After this you can open the folder in VSCode and run the super_keyboard_layout
launcher configuration.
TODO(knopp): Add Intellij launcher configuration
Additional information
This plugin is in a very early stages of development and quite experimental.
PRs and bug reports are welcome!