sbc.dart 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import 'package:xterm/terminal/terminal.dart';
  2. typedef SbcHandler = void Function(int, Terminal);
  3. final sbcHandlers = _sbcHandlers();
  4. // build single byte character lookup table
  5. List<SbcHandler?> _sbcHandlers() {
  6. final result = List<SbcHandler?>.filled(0x0f, null);
  7. result[0x05] = _voidHandler;
  8. result[0x07] = _bellHandler;
  9. result[0x08] = _backspaceReturnHandler;
  10. result[0x09] = _tabHandler;
  11. result[0x0a] = _newLineHandler;
  12. result[0x0b] = _newLineHandler;
  13. result[0x0c] = _newLineHandler;
  14. result[0x0d] = _carriageReturnHandler;
  15. result[0x0e] = _shiftOutHandler;
  16. result[0x0f] = _shiftInHandler;
  17. return result;
  18. }
  19. void _bellHandler(int code, Terminal terminal) {
  20. terminal.onBell();
  21. }
  22. void _voidHandler(int code, Terminal terminal) {
  23. // unsupported.
  24. }
  25. void _newLineHandler(int code, Terminal terminal) {
  26. terminal.buffer.newLine();
  27. }
  28. void _carriageReturnHandler(int code, Terminal terminal) {
  29. terminal.buffer.carriageReturn();
  30. }
  31. void _backspaceReturnHandler(int code, Terminal terminal) {
  32. terminal.buffer.backspace();
  33. }
  34. void _shiftOutHandler(int code, Terminal terminal) {
  35. terminal.buffer.charset.use(1);
  36. }
  37. void _shiftInHandler(int code, Terminal terminal) {
  38. terminal.buffer.charset.use(0);
  39. }
  40. void _tabHandler(int code, Terminal terminal) {
  41. terminal.tab();
  42. }