input_behavior_mobile.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import 'package:flutter/services.dart';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:xterm/frontend/input_behavior_default.dart';
  4. import 'package:xterm/input/keys.dart';
  5. import 'package:xterm/xterm.dart';
  6. class InputBehaviorMobile extends InputBehaviorDefault {
  7. const InputBehaviorMobile();
  8. static const _placeholder = ' ';
  9. bool get acceptKeyStroke => false;
  10. TextEditingValue onTextEdit(TextEditingValue value, Terminal terminal) {
  11. if (value.text.length > _placeholder.length) {
  12. terminal.onInput(value.text.substring(1, value.text.length - 1));
  13. } else if (value.text.length < _placeholder.length) {
  14. terminal.keyInput(TerminalKey.backspace);
  15. } else {
  16. if (value.selection.baseOffset < 1) {
  17. terminal.keyInput(TerminalKey.arrowLeft);
  18. } else if (value.selection.baseOffset > 1) {
  19. terminal.keyInput(TerminalKey.arrowRight);
  20. }
  21. }
  22. return TextEditingValue(
  23. text: _placeholder,
  24. selection: TextSelection.collapsed(offset: 1),
  25. );
  26. }
  27. void onAction(TextInputAction action, Terminal terminal) {
  28. print('action $action');
  29. switch (action) {
  30. case TextInputAction.done:
  31. terminal.keyInput(TerminalKey.enter);
  32. break;
  33. default:
  34. print('unknown action $action');
  35. }
  36. }
  37. }