| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import 'package:xterm/mouse/position.dart';
- import 'package:xterm/terminal/terminal.dart';
- abstract class MouseMode {
- const MouseMode();
- static const none = MouseModeNone();
- // static const x10 = MouseModeX10();
- // static const vt200 = MouseModeX10();
- // static const buttonEvent = MouseModeX10();
- void onTap(Terminal terminal, Position offset);
- void onPanStart(Terminal terminal, Position offset) {}
- void onPanUpdate(Terminal terminal, Position offset) {}
- }
- class MouseModeNone extends MouseMode {
- const MouseModeNone();
- @override
- void onTap(Terminal terminal, Position offset) {
- terminal.debug.onMsg('tap: $offset');
- terminal.selection.clear();
- }
- @override
- void onPanStart(Terminal terminal, Position offset) {
- terminal.selection.init(offset);
- }
- @override
- void onPanUpdate(Terminal terminal, Position offset) {
- terminal.selection.update(offset);
- }
- }
- class MouseModeX10 extends MouseMode {
- const MouseModeX10();
- @override
- void onTap(Terminal terminal, Position offset) {
- final btn = 1;
- final px = offset.x + 1;
- final py = terminal.buffer.convertRawLineToViewLine(offset.y) + 1;
- final buffer = StringBuffer();
- buffer.writeCharCode(0x1b);
- buffer.write('[M');
- buffer.writeCharCode(btn + 32);
- buffer.writeCharCode(px + 32);
- buffer.writeCharCode(py + 32);
- if (terminal.onInput != null) {
- terminal.onInput(buffer.toString());
- }
- }
- }
|