Files
flutter_server_box/lib/data/provider/virtual_keyboard.dart
2023-06-05 16:39:54 +08:00

50 lines
1.0 KiB
Dart

import 'package:flutter/widgets.dart';
import 'package:toolbox/data/store/setting.dart';
import 'package:toolbox/locator.dart';
import 'package:xterm/core.dart';
class VirtualKeyboard extends TerminalInputHandler with ChangeNotifier {
VirtualKeyboard();
bool _ctrl = false;
bool get ctrl => _ctrl;
set ctrl(bool value) {
if (value != _ctrl) {
_ctrl = value;
notifyListeners();
}
}
bool _alt = false;
bool get alt => _alt;
set alt(bool value) {
if (value != _alt) {
_alt = value;
notifyListeners();
}
}
final _setting = locator<SettingStore>();
void reset(TerminalKeyboardEvent e) {
if (e.ctrl) {
ctrl = false;
}
if (e.alt) {
alt = false;
}
notifyListeners();
}
@override
String? call(TerminalKeyboardEvent event) {
final e = event.copyWith(
ctrl: event.ctrl || ctrl,
alt: event.alt || alt,
);
if (_setting.sshVirtualKeyAutoOff.fetch()!) {
reset(e);
}
return defaultInputHandler.call(e);
}
}