TerminalUtil.cs
上传用户:szltgg
上传日期:2019-05-16
资源大小:604k
文件大小:2k
源码类别:

Telnet服务器

开发平台:

C#

  1. /*
  2. * Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3. * $Id: TerminalUtil.cs,v 1.2 2005/04/20 08:45:48 okajima Exp $
  4. */
  5. using System;
  6. using System.IO;
  7. using System.Net;
  8. using System.Net.Sockets;
  9. using System.Text;
  10. using System.Windows.Forms;
  11. using Granados.SSHC;
  12. using Poderosa.Config;
  13. using Poderosa.ConnectionParam;
  14. using Poderosa.Toolkit;
  15. using Poderosa.Communication;
  16. using Poderosa.SSH;
  17. namespace Poderosa.Terminal {
  18. public enum TerminalMode { Normal, Application }
  19. public class TerminalUtil {
  20. public static char[] NewLineChars(NewLine nl) {
  21. switch(nl) {
  22. case NewLine.CR:
  23. return new char[1] { 'r' };
  24. case NewLine.LF:
  25. return new char[1] { 'n' };
  26. case NewLine.CRLF:
  27. return new char[2] { 'r','n' };
  28. default:
  29. throw new ArgumentException("Unknown NewLine "+nl);
  30. }
  31. }
  32. public static NewLine NextNewLineOption(NewLine nl) {
  33. switch(nl) {
  34. case NewLine.CR:
  35. return NewLine.LF;
  36. case NewLine.LF:
  37. return NewLine.CRLF;
  38. case NewLine.CRLF:
  39. return NewLine.CR;
  40. default:
  41. throw new ArgumentException("Unknown NewLine "+nl);
  42. }
  43. }
  44. //桳岠側儃乕儗乕僩偺儕僗僩
  45. public static string[] BaudRates {
  46. get {
  47. return new string[] {"110", "300", "600", "1200", "2400", "4800",
  48. "9600", "14400", "19200", "38400", "57600", "115200"};
  49. }
  50. }
  51. }
  52. //偙傟偲摨摍偺張棟偼ToAscii API傪巊偭偰傕偱偒傞偑丄偪傚偭偲傗傝偯傜偄偺偱媡堷偒儅僢僾傪static偵帩偭偰偍偔
  53. internal class KeyboardInfo {
  54. public static char[] _defaultGroup;
  55. public static char[] _shiftGroup;
  56. public static void Init() {
  57. _defaultGroup = new char[256];
  58. _shiftGroup   = new char[256];
  59. for(int i=32; i<128; i++) {
  60. short v = Win32.VkKeyScan((char)i);
  61. bool shift = (v & 0x0100)!=0;
  62. short body = (short)(v & 0x00FF);
  63. if(shift)
  64. _shiftGroup[body] = (char)i;
  65. else
  66. _defaultGroup[body] = (char)i;
  67. }
  68. }
  69. public static char Scan(Keys body, bool shift) {
  70. if(_defaultGroup==null) Init();
  71. //惂屼暥帤偺偆偪扨昳偺僉乕偱憲怣偱偒傞傕偺
  72. if(body==Keys.Escape)
  73. return (char)0x1B;
  74. else if(body==Keys.Tab)
  75. return (char)0x09;
  76. else if(body==Keys.Back)
  77. return (char)0x08;
  78. else if(body==Keys.Delete)
  79. return (char)0x7F;
  80. if(shift)
  81. return _shiftGroup[(int)body];
  82. else
  83. return _defaultGroup[(int)body];
  84. }
  85. }
  86. }