From 7fc229fbe43204d56fbe88665d049359a8cc5ea9 Mon Sep 17 00:00:00 2001 From: stalin Date: Sun, 26 Sep 2021 16:07:52 +0800 Subject: [PATCH 1/2] enable backspace for mobile platform. I think it's bad idea to totally reject key stroke. It made many functional keybinding not usable. Just accept it as PC does and throw those situation to application developer is more resonable. --- lib/frontend/input_behavior_mobile.dart | 27 +++---------------------- 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/lib/frontend/input_behavior_mobile.dart b/lib/frontend/input_behavior_mobile.dart index aa78c400..56209e29 100644 --- a/lib/frontend/input_behavior_mobile.dart +++ b/lib/frontend/input_behavior_mobile.dart @@ -1,5 +1,4 @@ import 'package:flutter/services.dart'; -import 'package:flutter/widgets.dart'; import 'package:xterm/frontend/input_behavior_default.dart'; import 'package:xterm/input/keys.dart'; import 'package:xterm/xterm.dart'; @@ -7,30 +6,10 @@ import 'package:xterm/xterm.dart'; class InputBehaviorMobile extends InputBehaviorDefault { InputBehaviorMobile(); - final acceptKeyStroke = false; - - final initEditingState = const TextEditingValue( - text: ' ', - selection: TextSelection.collapsed(offset: 1), - ); - - TextEditingValue onTextEdit( - TextEditingValue value, TerminalUiInteraction terminal) { - if (value.text.length > initEditingState.text.length) { - terminal.raiseOnInput(value.text.substring(1, value.text.length - 1)); - } else if (value.text.length < initEditingState.text.length) { - terminal.keyInput(TerminalKey.backspace); - } else { - if (value.selection.baseOffset < 1) { - terminal.keyInput(TerminalKey.arrowLeft); - } else if (value.selection.baseOffset > 1) { - terminal.keyInput(TerminalKey.arrowRight); - } - } - - return initEditingState; - } + @override + final acceptKeyStroke = true; + @override void onAction(TextInputAction action, TerminalUiInteraction terminal) { print('action $action'); switch (action) { From c7ba8be0076dd2915846dae689b4661ac45a27ab Mon Sep 17 00:00:00 2001 From: stalin Date: Wed, 29 Sep 2021 09:57:00 +0800 Subject: [PATCH 2/2] add oTextEdit back --- lib/frontend/input_behavior_mobile.dart | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/frontend/input_behavior_mobile.dart b/lib/frontend/input_behavior_mobile.dart index 56209e29..6533f1bd 100644 --- a/lib/frontend/input_behavior_mobile.dart +++ b/lib/frontend/input_behavior_mobile.dart @@ -1,4 +1,5 @@ import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; import 'package:xterm/frontend/input_behavior_default.dart'; import 'package:xterm/input/keys.dart'; import 'package:xterm/xterm.dart'; @@ -6,10 +7,30 @@ import 'package:xterm/xterm.dart'; class InputBehaviorMobile extends InputBehaviorDefault { InputBehaviorMobile(); - @override final acceptKeyStroke = true; - @override + final initEditingState = const TextEditingValue( + text: ' ', + selection: TextSelection.collapsed(offset: 1), + ); + + TextEditingValue onTextEdit( + TextEditingValue value, TerminalUiInteraction terminal) { + if (value.text.length > initEditingState.text.length) { + terminal.raiseOnInput(value.text.substring(1, value.text.length - 1)); + } else if (value.text.length < initEditingState.text.length) { + terminal.keyInput(TerminalKey.backspace); + } else { + if (value.selection.baseOffset < 1) { + terminal.keyInput(TerminalKey.arrowLeft); + } else if (value.selection.baseOffset > 1) { + terminal.keyInput(TerminalKey.arrowRight); + } + } + + return initEditingState; + } + void onAction(TextInputAction action, TerminalUiInteraction terminal) { print('action $action'); switch (action) {