node-pty 1.2.0-beta.6 → 1.2.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/README.md +3 -5
  2. package/binding.gyp +0 -20
  3. package/lib/terminal.test.js +4 -4
  4. package/lib/terminal.test.js.map +1 -1
  5. package/lib/unixTerminal.test.js +16 -14
  6. package/lib/unixTerminal.test.js.map +1 -1
  7. package/lib/windowsPtyAgent.js +32 -95
  8. package/lib/windowsPtyAgent.js.map +1 -1
  9. package/lib/windowsTerminal.js +1 -1
  10. package/lib/windowsTerminal.js.map +1 -1
  11. package/lib/windowsTerminal.test.js +13 -14
  12. package/lib/windowsTerminal.test.js.map +1 -1
  13. package/package.json +1 -1
  14. package/prebuilds/darwin-arm64/pty.node +0 -0
  15. package/prebuilds/darwin-arm64/spawn-helper +0 -0
  16. package/prebuilds/darwin-x64/pty.node +0 -0
  17. package/prebuilds/darwin-x64/spawn-helper +0 -0
  18. package/prebuilds/win32-arm64/conpty.node +0 -0
  19. package/prebuilds/win32-arm64/conpty.pdb +0 -0
  20. package/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  21. package/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  22. package/prebuilds/win32-x64/conpty.node +0 -0
  23. package/prebuilds/win32-x64/conpty.pdb +0 -0
  24. package/prebuilds/win32-x64/conpty_console_list.node +0 -0
  25. package/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  26. package/scripts/post-install.js +1 -5
  27. package/src/interfaces.ts +8 -0
  28. package/src/native.d.ts +0 -17
  29. package/src/terminal.test.ts +4 -4
  30. package/src/unixTerminal.test.ts +8 -4
  31. package/src/win/conpty.cc +1 -2
  32. package/src/windowsPtyAgent.ts +31 -91
  33. package/src/windowsTerminal.test.ts +13 -13
  34. package/src/windowsTerminal.ts +1 -1
  35. package/typings/node-pty.d.ts +9 -8
  36. package/deps/winpty/.drone.yml +0 -17
  37. package/deps/winpty/.gitattributes +0 -19
  38. package/deps/winpty/LICENSE +0 -21
  39. package/deps/winpty/Makefile +0 -166
  40. package/deps/winpty/README.md +0 -151
  41. package/deps/winpty/RELEASES.md +0 -280
  42. package/deps/winpty/VERSION.txt +0 -1
  43. package/deps/winpty/configure +0 -167
  44. package/deps/winpty/misc/BufferResizeTests.cc +0 -90
  45. package/deps/winpty/misc/ChangeScreenBuffer.cc +0 -53
  46. package/deps/winpty/misc/ClearConsole.cc +0 -72
  47. package/deps/winpty/misc/ConinMode.cc +0 -117
  48. package/deps/winpty/misc/ConinMode.ps1 +0 -116
  49. package/deps/winpty/misc/ConoutMode.cc +0 -113
  50. package/deps/winpty/misc/DebugClient.py +0 -42
  51. package/deps/winpty/misc/DebugServer.py +0 -63
  52. package/deps/winpty/misc/DumpLines.py +0 -5
  53. package/deps/winpty/misc/EnableExtendedFlags.txt +0 -46
  54. package/deps/winpty/misc/Font-Report-June2016/CP437-Consolas.txt +0 -528
  55. package/deps/winpty/misc/Font-Report-June2016/CP437-Lucida.txt +0 -633
  56. package/deps/winpty/misc/Font-Report-June2016/CP932.txt +0 -630
  57. package/deps/winpty/misc/Font-Report-June2016/CP936.txt +0 -630
  58. package/deps/winpty/misc/Font-Report-June2016/CP949.txt +0 -630
  59. package/deps/winpty/misc/Font-Report-June2016/CP950.txt +0 -630
  60. package/deps/winpty/misc/Font-Report-June2016/MinimumWindowWidths.txt +0 -16
  61. package/deps/winpty/misc/Font-Report-June2016/Results.txt +0 -4
  62. package/deps/winpty/misc/Font-Report-June2016/Windows10SetFontBugginess.txt +0 -144
  63. package/deps/winpty/misc/FontSurvey.cc +0 -100
  64. package/deps/winpty/misc/FormatChar.h +0 -21
  65. package/deps/winpty/misc/FreezePerfTest.cc +0 -62
  66. package/deps/winpty/misc/GetCh.cc +0 -20
  67. package/deps/winpty/misc/GetConsolePos.cc +0 -41
  68. package/deps/winpty/misc/GetFont.cc +0 -261
  69. package/deps/winpty/misc/IdentifyConsoleWindow.ps1 +0 -51
  70. package/deps/winpty/misc/IsNewConsole.cc +0 -87
  71. package/deps/winpty/misc/MouseInputNotes.txt +0 -90
  72. package/deps/winpty/misc/MoveConsoleWindow.cc +0 -34
  73. package/deps/winpty/misc/Notes.txt +0 -219
  74. package/deps/winpty/misc/OSVersion.cc +0 -27
  75. package/deps/winpty/misc/ScreenBufferFreezeInactive.cc +0 -101
  76. package/deps/winpty/misc/ScreenBufferTest.cc +0 -671
  77. package/deps/winpty/misc/ScreenBufferTest2.cc +0 -151
  78. package/deps/winpty/misc/SelectAllTest.cc +0 -45
  79. package/deps/winpty/misc/SetBufferSize.cc +0 -32
  80. package/deps/winpty/misc/SetCursorPos.cc +0 -10
  81. package/deps/winpty/misc/SetFont.cc +0 -145
  82. package/deps/winpty/misc/SetWindowRect.cc +0 -36
  83. package/deps/winpty/misc/ShowArgv.cc +0 -12
  84. package/deps/winpty/misc/ShowConsoleInput.cc +0 -40
  85. package/deps/winpty/misc/Spew.py +0 -5
  86. package/deps/winpty/misc/TestUtil.cc +0 -172
  87. package/deps/winpty/misc/UnicodeDoubleWidthTest.cc +0 -102
  88. package/deps/winpty/misc/UnicodeWideTest1.cc +0 -246
  89. package/deps/winpty/misc/UnicodeWideTest2.cc +0 -130
  90. package/deps/winpty/misc/UnixEcho.cc +0 -89
  91. package/deps/winpty/misc/Utf16Echo.cc +0 -46
  92. package/deps/winpty/misc/VeryLargeRead.cc +0 -122
  93. package/deps/winpty/misc/VkEscapeTest.cc +0 -56
  94. package/deps/winpty/misc/Win10ResizeWhileFrozen.cc +0 -52
  95. package/deps/winpty/misc/Win10WrapTest1.cc +0 -57
  96. package/deps/winpty/misc/Win10WrapTest2.cc +0 -30
  97. package/deps/winpty/misc/Win32Echo1.cc +0 -26
  98. package/deps/winpty/misc/Win32Echo2.cc +0 -19
  99. package/deps/winpty/misc/Win32Test1.cc +0 -46
  100. package/deps/winpty/misc/Win32Test2.cc +0 -70
  101. package/deps/winpty/misc/Win32Test3.cc +0 -78
  102. package/deps/winpty/misc/Win32Write1.cc +0 -44
  103. package/deps/winpty/misc/WindowsBugCrashReader.cc +0 -27
  104. package/deps/winpty/misc/WriteConsole.cc +0 -106
  105. package/deps/winpty/misc/build32.sh +0 -9
  106. package/deps/winpty/misc/build64.sh +0 -9
  107. package/deps/winpty/misc/color-test.sh +0 -212
  108. package/deps/winpty/misc/font-notes.txt +0 -300
  109. package/deps/winpty/misc/winbug-15048.cc +0 -201
  110. package/deps/winpty/ship/build-pty4j-libpty.bat +0 -36
  111. package/deps/winpty/ship/common_ship.py +0 -53
  112. package/deps/winpty/ship/make_msvc_package.py +0 -165
  113. package/deps/winpty/ship/ship.py +0 -108
  114. package/deps/winpty/src/agent/Agent.cc +0 -613
  115. package/deps/winpty/src/agent/Agent.h +0 -103
  116. package/deps/winpty/src/agent/AgentCreateDesktop.cc +0 -84
  117. package/deps/winpty/src/agent/AgentCreateDesktop.h +0 -28
  118. package/deps/winpty/src/agent/ConsoleFont.cc +0 -632
  119. package/deps/winpty/src/agent/ConsoleFont.h +0 -28
  120. package/deps/winpty/src/agent/ConsoleInput.cc +0 -852
  121. package/deps/winpty/src/agent/ConsoleInput.h +0 -109
  122. package/deps/winpty/src/agent/ConsoleInputReencoding.cc +0 -121
  123. package/deps/winpty/src/agent/ConsoleInputReencoding.h +0 -36
  124. package/deps/winpty/src/agent/ConsoleLine.cc +0 -152
  125. package/deps/winpty/src/agent/ConsoleLine.h +0 -41
  126. package/deps/winpty/src/agent/Coord.h +0 -87
  127. package/deps/winpty/src/agent/DebugShowInput.cc +0 -239
  128. package/deps/winpty/src/agent/DebugShowInput.h +0 -32
  129. package/deps/winpty/src/agent/DefaultInputMap.cc +0 -422
  130. package/deps/winpty/src/agent/DefaultInputMap.h +0 -28
  131. package/deps/winpty/src/agent/DsrSender.h +0 -30
  132. package/deps/winpty/src/agent/EventLoop.cc +0 -99
  133. package/deps/winpty/src/agent/EventLoop.h +0 -47
  134. package/deps/winpty/src/agent/InputMap.cc +0 -246
  135. package/deps/winpty/src/agent/InputMap.h +0 -114
  136. package/deps/winpty/src/agent/LargeConsoleRead.cc +0 -71
  137. package/deps/winpty/src/agent/LargeConsoleRead.h +0 -68
  138. package/deps/winpty/src/agent/NamedPipe.cc +0 -378
  139. package/deps/winpty/src/agent/NamedPipe.h +0 -125
  140. package/deps/winpty/src/agent/Scraper.cc +0 -699
  141. package/deps/winpty/src/agent/Scraper.h +0 -103
  142. package/deps/winpty/src/agent/SimplePool.h +0 -75
  143. package/deps/winpty/src/agent/SmallRect.h +0 -143
  144. package/deps/winpty/src/agent/Terminal.cc +0 -535
  145. package/deps/winpty/src/agent/Terminal.h +0 -69
  146. package/deps/winpty/src/agent/UnicodeEncoding.h +0 -157
  147. package/deps/winpty/src/agent/UnicodeEncodingTest.cc +0 -189
  148. package/deps/winpty/src/agent/Win32Console.cc +0 -107
  149. package/deps/winpty/src/agent/Win32Console.h +0 -67
  150. package/deps/winpty/src/agent/Win32ConsoleBuffer.cc +0 -193
  151. package/deps/winpty/src/agent/Win32ConsoleBuffer.h +0 -99
  152. package/deps/winpty/src/agent/main.cc +0 -114
  153. package/deps/winpty/src/agent/subdir.mk +0 -61
  154. package/deps/winpty/src/configurations.gypi +0 -60
  155. package/deps/winpty/src/debugserver/DebugServer.cc +0 -117
  156. package/deps/winpty/src/debugserver/subdir.mk +0 -41
  157. package/deps/winpty/src/include/winpty.h +0 -242
  158. package/deps/winpty/src/include/winpty_constants.h +0 -131
  159. package/deps/winpty/src/libwinpty/AgentLocation.cc +0 -75
  160. package/deps/winpty/src/libwinpty/AgentLocation.h +0 -28
  161. package/deps/winpty/src/libwinpty/LibWinptyException.h +0 -54
  162. package/deps/winpty/src/libwinpty/WinptyInternal.h +0 -72
  163. package/deps/winpty/src/libwinpty/subdir.mk +0 -46
  164. package/deps/winpty/src/libwinpty/winpty.cc +0 -970
  165. package/deps/winpty/src/shared/AgentMsg.h +0 -38
  166. package/deps/winpty/src/shared/BackgroundDesktop.cc +0 -122
  167. package/deps/winpty/src/shared/BackgroundDesktop.h +0 -73
  168. package/deps/winpty/src/shared/Buffer.cc +0 -103
  169. package/deps/winpty/src/shared/Buffer.h +0 -102
  170. package/deps/winpty/src/shared/DebugClient.cc +0 -187
  171. package/deps/winpty/src/shared/DebugClient.h +0 -38
  172. package/deps/winpty/src/shared/GenRandom.cc +0 -138
  173. package/deps/winpty/src/shared/GenRandom.h +0 -55
  174. package/deps/winpty/src/shared/GetCommitHash.bat +0 -13
  175. package/deps/winpty/src/shared/Mutex.h +0 -54
  176. package/deps/winpty/src/shared/OsModule.h +0 -63
  177. package/deps/winpty/src/shared/OwnedHandle.cc +0 -36
  178. package/deps/winpty/src/shared/OwnedHandle.h +0 -45
  179. package/deps/winpty/src/shared/PrecompiledHeader.h +0 -43
  180. package/deps/winpty/src/shared/StringBuilder.h +0 -227
  181. package/deps/winpty/src/shared/StringBuilderTest.cc +0 -114
  182. package/deps/winpty/src/shared/StringUtil.cc +0 -55
  183. package/deps/winpty/src/shared/StringUtil.h +0 -80
  184. package/deps/winpty/src/shared/TimeMeasurement.h +0 -63
  185. package/deps/winpty/src/shared/UnixCtrlChars.h +0 -45
  186. package/deps/winpty/src/shared/UpdateGenVersion.bat +0 -20
  187. package/deps/winpty/src/shared/WindowsSecurity.cc +0 -460
  188. package/deps/winpty/src/shared/WindowsSecurity.h +0 -104
  189. package/deps/winpty/src/shared/WindowsVersion.cc +0 -252
  190. package/deps/winpty/src/shared/WindowsVersion.h +0 -29
  191. package/deps/winpty/src/shared/WinptyAssert.cc +0 -55
  192. package/deps/winpty/src/shared/WinptyAssert.h +0 -64
  193. package/deps/winpty/src/shared/WinptyException.cc +0 -57
  194. package/deps/winpty/src/shared/WinptyException.h +0 -43
  195. package/deps/winpty/src/shared/WinptyVersion.cc +0 -42
  196. package/deps/winpty/src/shared/WinptyVersion.h +0 -27
  197. package/deps/winpty/src/shared/winpty_snprintf.h +0 -99
  198. package/deps/winpty/src/subdir.mk +0 -5
  199. package/deps/winpty/src/tests/subdir.mk +0 -28
  200. package/deps/winpty/src/tests/trivial_test.cc +0 -158
  201. package/deps/winpty/src/unix-adapter/InputHandler.cc +0 -114
  202. package/deps/winpty/src/unix-adapter/InputHandler.h +0 -56
  203. package/deps/winpty/src/unix-adapter/OutputHandler.cc +0 -80
  204. package/deps/winpty/src/unix-adapter/OutputHandler.h +0 -53
  205. package/deps/winpty/src/unix-adapter/Util.cc +0 -86
  206. package/deps/winpty/src/unix-adapter/Util.h +0 -31
  207. package/deps/winpty/src/unix-adapter/WakeupFd.cc +0 -70
  208. package/deps/winpty/src/unix-adapter/WakeupFd.h +0 -42
  209. package/deps/winpty/src/unix-adapter/main.cc +0 -729
  210. package/deps/winpty/src/unix-adapter/subdir.mk +0 -41
  211. package/deps/winpty/src/winpty.gyp +0 -236
  212. package/deps/winpty/vcbuild.bat +0 -83
  213. package/prebuilds/win32-arm64/pty.node +0 -0
  214. package/prebuilds/win32-arm64/pty.pdb +0 -0
  215. package/prebuilds/win32-arm64/winpty-agent.exe +0 -0
  216. package/prebuilds/win32-arm64/winpty-agent.pdb +0 -0
  217. package/prebuilds/win32-arm64/winpty.dll +0 -0
  218. package/prebuilds/win32-arm64/winpty.pdb +0 -0
  219. package/prebuilds/win32-x64/pty.node +0 -0
  220. package/prebuilds/win32-x64/pty.pdb +0 -0
  221. package/prebuilds/win32-x64/winpty-agent.exe +0 -0
  222. package/prebuilds/win32-x64/winpty-agent.pdb +0 -0
  223. package/prebuilds/win32-x64/winpty.dll +0 -0
  224. package/prebuilds/win32-x64/winpty.pdb +0 -0
  225. package/src/win/winpty.cc +0 -333
@@ -1,109 +0,0 @@
1
- // Copyright (c) 2011-2015 Ryan Prichard
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to
5
- // deal in the Software without restriction, including without limitation the
6
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
- // sell copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
- // IN THE SOFTWARE.
20
-
21
- #ifndef CONSOLEINPUT_H
22
- #define CONSOLEINPUT_H
23
-
24
- #include <windows.h>
25
- #include <stdint.h>
26
-
27
- #include <memory>
28
- #include <string>
29
- #include <vector>
30
-
31
- #include "Coord.h"
32
- #include "InputMap.h"
33
- #include "SmallRect.h"
34
-
35
- class Win32Console;
36
- class DsrSender;
37
-
38
- class ConsoleInput
39
- {
40
- public:
41
- ConsoleInput(HANDLE conin, int mouseMode, DsrSender &dsrSender,
42
- Win32Console &console);
43
- void writeInput(const std::string &input);
44
- void flushIncompleteEscapeCode();
45
- void setMouseWindowRect(SmallRect val) { m_mouseWindowRect = val; }
46
- void updateInputFlags(bool forceTrace=false);
47
- bool shouldActivateTerminalMouse();
48
-
49
- private:
50
- void doWrite(bool isEof);
51
- void flushInputRecords(std::vector<INPUT_RECORD> &records);
52
- int scanInput(std::vector<INPUT_RECORD> &records,
53
- const char *input,
54
- int inputSize,
55
- bool isEof);
56
- int scanMouseInput(std::vector<INPUT_RECORD> &records,
57
- const char *input,
58
- int inputSize);
59
- void appendUtf8Char(std::vector<INPUT_RECORD> &records,
60
- const char *charBuffer,
61
- int charLen,
62
- bool terminalAltEscape);
63
- void appendKeyPress(std::vector<INPUT_RECORD> &records,
64
- uint16_t virtualKey,
65
- uint32_t winCodePointDn,
66
- uint32_t winCodePointUp,
67
- uint16_t winKeyState,
68
- uint32_t vtCodePoint,
69
- uint16_t vtKeyState);
70
-
71
- public:
72
- static void appendCPInputRecords(std::vector<INPUT_RECORD> &records,
73
- BOOL keyDown,
74
- uint16_t virtualKey,
75
- uint32_t codePoint,
76
- uint16_t keyState);
77
- static void appendInputRecord(std::vector<INPUT_RECORD> &records,
78
- BOOL keyDown,
79
- uint16_t virtualKey,
80
- wchar_t utf16Char,
81
- uint16_t keyState);
82
-
83
- private:
84
- DWORD inputConsoleMode();
85
-
86
- private:
87
- Win32Console &m_console;
88
- HANDLE m_conin = nullptr;
89
- int m_mouseMode = 0;
90
- DsrSender &m_dsrSender;
91
- bool m_dsrSent = false;
92
- std::string m_byteQueue;
93
- InputMap m_inputMap;
94
- DWORD m_lastWriteTick = 0;
95
- DWORD m_mouseButtonState = 0;
96
- struct DoubleClickDetection {
97
- DWORD button = 0;
98
- Coord pos;
99
- DWORD tick = 0;
100
- bool released = false;
101
- } m_doubleClick;
102
- bool m_enableExtendedEnabled = false;
103
- bool m_mouseInputEnabled = false;
104
- bool m_quickEditEnabled = false;
105
- bool m_escapeInputEnabled = false;
106
- SmallRect m_mouseWindowRect;
107
- };
108
-
109
- #endif // CONSOLEINPUT_H
@@ -1,121 +0,0 @@
1
- // Copyright (c) 2016 Ryan Prichard
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to
5
- // deal in the Software without restriction, including without limitation the
6
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
- // sell copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
- // IN THE SOFTWARE.
20
-
21
- #include "ConsoleInputReencoding.h"
22
-
23
- #include "ConsoleInput.h"
24
-
25
- namespace {
26
-
27
- static void outch(std::vector<INPUT_RECORD> &out, wchar_t ch) {
28
- ConsoleInput::appendInputRecord(out, TRUE, 0, ch, 0);
29
- }
30
-
31
- } // anonymous namespace
32
-
33
- void reencodeEscapedKeyPress(
34
- std::vector<INPUT_RECORD> &out,
35
- uint16_t virtualKey,
36
- uint32_t codePoint,
37
- uint16_t keyState) {
38
-
39
- struct EscapedKey {
40
- enum { None, Numeric, Letter } kind;
41
- wchar_t content[2];
42
- };
43
-
44
- EscapedKey escapeCode = {};
45
- switch (virtualKey) {
46
- case VK_UP: escapeCode = { EscapedKey::Letter, {'A'} }; break;
47
- case VK_DOWN: escapeCode = { EscapedKey::Letter, {'B'} }; break;
48
- case VK_RIGHT: escapeCode = { EscapedKey::Letter, {'C'} }; break;
49
- case VK_LEFT: escapeCode = { EscapedKey::Letter, {'D'} }; break;
50
- case VK_CLEAR: escapeCode = { EscapedKey::Letter, {'E'} }; break;
51
- case VK_F1: escapeCode = { EscapedKey::Numeric, {'1', '1'} }; break;
52
- case VK_F2: escapeCode = { EscapedKey::Numeric, {'1', '2'} }; break;
53
- case VK_F3: escapeCode = { EscapedKey::Numeric, {'1', '3'} }; break;
54
- case VK_F4: escapeCode = { EscapedKey::Numeric, {'1', '4'} }; break;
55
- case VK_F5: escapeCode = { EscapedKey::Numeric, {'1', '5'} }; break;
56
- case VK_F6: escapeCode = { EscapedKey::Numeric, {'1', '7'} }; break;
57
- case VK_F7: escapeCode = { EscapedKey::Numeric, {'1', '8'} }; break;
58
- case VK_F8: escapeCode = { EscapedKey::Numeric, {'1', '9'} }; break;
59
- case VK_F9: escapeCode = { EscapedKey::Numeric, {'2', '0'} }; break;
60
- case VK_F10: escapeCode = { EscapedKey::Numeric, {'2', '1'} }; break;
61
- case VK_F11: escapeCode = { EscapedKey::Numeric, {'2', '3'} }; break;
62
- case VK_F12: escapeCode = { EscapedKey::Numeric, {'2', '4'} }; break;
63
- case VK_HOME: escapeCode = { EscapedKey::Letter, {'H'} }; break;
64
- case VK_INSERT: escapeCode = { EscapedKey::Numeric, {'2'} }; break;
65
- case VK_DELETE: escapeCode = { EscapedKey::Numeric, {'3'} }; break;
66
- case VK_END: escapeCode = { EscapedKey::Letter, {'F'} }; break;
67
- case VK_PRIOR: escapeCode = { EscapedKey::Numeric, {'5'} }; break;
68
- case VK_NEXT: escapeCode = { EscapedKey::Numeric, {'6'} }; break;
69
- }
70
- if (escapeCode.kind != EscapedKey::None) {
71
- int flags = 0;
72
- if (keyState & SHIFT_PRESSED) { flags |= 0x1; }
73
- if (keyState & LEFT_ALT_PRESSED) { flags |= 0x2; }
74
- if (keyState & LEFT_CTRL_PRESSED) { flags |= 0x4; }
75
- outch(out, L'\x1b');
76
- outch(out, L'[');
77
- if (escapeCode.kind == EscapedKey::Numeric) {
78
- for (wchar_t ch : escapeCode.content) {
79
- if (ch != L'\0') {
80
- outch(out, ch);
81
- }
82
- }
83
- } else if (flags != 0) {
84
- outch(out, L'1');
85
- }
86
- if (flags != 0) {
87
- outch(out, L';');
88
- outch(out, L'1' + flags);
89
- }
90
- if (escapeCode.kind == EscapedKey::Numeric) {
91
- outch(out, L'~');
92
- } else {
93
- outch(out, escapeCode.content[0]);
94
- }
95
- return;
96
- }
97
-
98
- switch (virtualKey) {
99
- case VK_BACK:
100
- if (keyState & LEFT_ALT_PRESSED) {
101
- outch(out, L'\x1b');
102
- }
103
- outch(out, L'\x7f');
104
- return;
105
- case VK_TAB:
106
- if (keyState & SHIFT_PRESSED) {
107
- outch(out, L'\x1b');
108
- outch(out, L'[');
109
- outch(out, L'Z');
110
- return;
111
- }
112
- break;
113
- }
114
-
115
- if (codePoint != 0) {
116
- if (keyState & LEFT_ALT_PRESSED) {
117
- outch(out, L'\x1b');
118
- }
119
- ConsoleInput::appendCPInputRecords(out, TRUE, 0, codePoint, 0);
120
- }
121
- }
@@ -1,36 +0,0 @@
1
- // Copyright (c) 2016 Ryan Prichard
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to
5
- // deal in the Software without restriction, including without limitation the
6
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
- // sell copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
- // IN THE SOFTWARE.
20
-
21
- #ifndef AGENT_CONSOLE_INPUT_REENCODING_H
22
- #define AGENT_CONSOLE_INPUT_REENCODING_H
23
-
24
- #include <windows.h>
25
-
26
- #include <stdint.h>
27
-
28
- #include <vector>
29
-
30
- void reencodeEscapedKeyPress(
31
- std::vector<INPUT_RECORD> &records,
32
- uint16_t virtualKey,
33
- uint32_t codePoint,
34
- uint16_t keyState);
35
-
36
- #endif // AGENT_CONSOLE_INPUT_REENCODING_H
@@ -1,152 +0,0 @@
1
- // Copyright (c) 2015 Ryan Prichard
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to
5
- // deal in the Software without restriction, including without limitation the
6
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
- // sell copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
- // IN THE SOFTWARE.
20
-
21
- //
22
- // ConsoleLine
23
- //
24
- // This data structure keep tracks of the previous CHAR_INFO content of an
25
- // output line and determines when a line has changed. Detecting line changes
26
- // is made complicated by terminal resizing.
27
- //
28
-
29
- #include "ConsoleLine.h"
30
-
31
- #include <algorithm>
32
-
33
- #include "../shared/WinptyAssert.h"
34
-
35
- static CHAR_INFO blankChar(WORD attributes)
36
- {
37
- // N.B.: As long as we write to UnicodeChar rather than AsciiChar, there
38
- // are no padding bytes that could contain uninitialized bytes. This fact
39
- // is important for efficient comparison.
40
- CHAR_INFO ret;
41
- ret.Attributes = attributes;
42
- ret.Char.UnicodeChar = L' ';
43
- return ret;
44
- }
45
-
46
- static bool isLineBlank(const CHAR_INFO *line, int length, WORD attributes)
47
- {
48
- for (int col = 0; col < length; ++col) {
49
- if (line[col].Attributes != attributes ||
50
- line[col].Char.UnicodeChar != L' ') {
51
- return false;
52
- }
53
- }
54
- return true;
55
- }
56
-
57
- static inline bool areLinesEqual(
58
- const CHAR_INFO *line1,
59
- const CHAR_INFO *line2,
60
- int length)
61
- {
62
- return memcmp(line1, line2, sizeof(CHAR_INFO) * length) == 0;
63
- }
64
-
65
- ConsoleLine::ConsoleLine() : m_prevLength(0)
66
- {
67
- }
68
-
69
- void ConsoleLine::reset()
70
- {
71
- m_prevLength = 0;
72
- m_prevData.clear();
73
- }
74
-
75
- // Determines whether the given line is sufficiently different from the
76
- // previously seen line as to justify reoutputting the line. The function
77
- // also sets the `ConsoleLine` to the given line, exactly as if `setLine` had
78
- // been called.
79
- bool ConsoleLine::detectChangeAndSetLine(const CHAR_INFO *const line, const int newLength)
80
- {
81
- ASSERT(newLength >= 1);
82
- ASSERT(m_prevLength <= static_cast<int>(m_prevData.size()));
83
-
84
- if (newLength == m_prevLength) {
85
- bool equalLines = areLinesEqual(m_prevData.data(), line, newLength);
86
- if (!equalLines) {
87
- setLine(line, newLength);
88
- }
89
- return !equalLines;
90
- } else {
91
- if (m_prevLength == 0) {
92
- setLine(line, newLength);
93
- return true;
94
- }
95
-
96
- ASSERT(m_prevLength >= 1);
97
- const WORD prevBlank = m_prevData[m_prevLength - 1].Attributes;
98
- const WORD newBlank = line[newLength - 1].Attributes;
99
-
100
- bool equalLines = false;
101
- if (newLength < m_prevLength) {
102
- // The line has become shorter. The lines are equal if the common
103
- // part is equal, and if the newly truncated characters were blank.
104
- equalLines =
105
- areLinesEqual(m_prevData.data(), line, newLength) &&
106
- isLineBlank(m_prevData.data() + newLength,
107
- m_prevLength - newLength,
108
- newBlank);
109
- } else {
110
- //
111
- // The line has become longer. The lines are equal if the common
112
- // part is equal, and if both the extra characters and any
113
- // potentially reexposed characters are blank.
114
- //
115
- // Two of the most relevant terminals for winpty--mintty and
116
- // jediterm--don't (currently) erase the obscured content when a
117
- // line is cleared, so we should anticipate its existence when
118
- // making a terminal wider and reoutput the line. See:
119
- //
120
- // * https://github.com/mintty/mintty/issues/480
121
- // * https://github.com/JetBrains/jediterm/issues/118
122
- //
123
- ASSERT(newLength > m_prevLength);
124
- equalLines =
125
- areLinesEqual(m_prevData.data(), line, m_prevLength) &&
126
- isLineBlank(m_prevData.data() + m_prevLength,
127
- std::min<int>(m_prevData.size(), newLength) - m_prevLength,
128
- prevBlank) &&
129
- isLineBlank(line + m_prevLength,
130
- newLength - m_prevLength,
131
- prevBlank);
132
- }
133
- setLine(line, newLength);
134
- return !equalLines;
135
- }
136
- }
137
-
138
- void ConsoleLine::setLine(const CHAR_INFO *const line, const int newLength)
139
- {
140
- if (static_cast<int>(m_prevData.size()) < newLength) {
141
- m_prevData.resize(newLength);
142
- }
143
- memcpy(m_prevData.data(), line, sizeof(CHAR_INFO) * newLength);
144
- m_prevLength = newLength;
145
- }
146
-
147
- void ConsoleLine::blank(WORD attributes)
148
- {
149
- m_prevData.resize(1);
150
- m_prevData[0] = blankChar(attributes);
151
- m_prevLength = 1;
152
- }
@@ -1,41 +0,0 @@
1
- // Copyright (c) 2015 Ryan Prichard
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to
5
- // deal in the Software without restriction, including without limitation the
6
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
- // sell copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
- // IN THE SOFTWARE.
20
-
21
- #ifndef CONSOLE_LINE_H
22
- #define CONSOLE_LINE_H
23
-
24
- #include <windows.h>
25
-
26
- #include <vector>
27
-
28
- class ConsoleLine
29
- {
30
- public:
31
- ConsoleLine();
32
- void reset();
33
- bool detectChangeAndSetLine(const CHAR_INFO *line, int newLength);
34
- void setLine(const CHAR_INFO *line, int newLength);
35
- void blank(WORD attributes);
36
- private:
37
- int m_prevLength;
38
- std::vector<CHAR_INFO> m_prevData;
39
- };
40
-
41
- #endif // CONSOLE_LINE_H
@@ -1,87 +0,0 @@
1
- // Copyright (c) 2011-2012 Ryan Prichard
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to
5
- // deal in the Software without restriction, including without limitation the
6
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
- // sell copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
- // IN THE SOFTWARE.
20
-
21
- #ifndef COORD_H
22
- #define COORD_H
23
-
24
- #include <windows.h>
25
-
26
- #include <string>
27
-
28
- #include "../shared/winpty_snprintf.h"
29
-
30
- struct Coord : COORD {
31
- Coord()
32
- {
33
- X = 0;
34
- Y = 0;
35
- }
36
-
37
- Coord(SHORT x, SHORT y)
38
- {
39
- X = x;
40
- Y = y;
41
- }
42
-
43
- Coord(COORD other)
44
- {
45
- *(COORD*)this = other;
46
- }
47
-
48
- Coord(const Coord &other)
49
- {
50
- *(COORD*)this = *(const COORD*)&other;
51
- }
52
-
53
- Coord &operator=(const Coord &other)
54
- {
55
- *(COORD*)this = *(const COORD*)&other;
56
- return *this;
57
- }
58
-
59
- bool operator==(const Coord &other) const
60
- {
61
- return X == other.X && Y == other.Y;
62
- }
63
-
64
- bool operator!=(const Coord &other) const
65
- {
66
- return !(*this == other);
67
- }
68
-
69
- Coord operator+(const Coord &other) const
70
- {
71
- return Coord(X + other.X, Y + other.Y);
72
- }
73
-
74
- bool isEmpty() const
75
- {
76
- return X <= 0 || Y <= 0;
77
- }
78
-
79
- std::string toString() const
80
- {
81
- char ret[32];
82
- winpty_snprintf(ret, "(%d,%d)", X, Y);
83
- return std::string(ret);
84
- }
85
- };
86
-
87
- #endif // COORD_H