sbc.dart 1.3 KB

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