forked from microsoft/terminal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwinconp.h
673 lines (554 loc) · 18.3 KB
/
winconp.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
/*++
Copyright (c) Microsoft Corporation.
Licensed under the MIT license.
--*/
#ifndef _WINCONP_
#define _WINCONP_
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#if _MSC_VER >= 1200
#pragma warning(push)
#pragma warning(disable:4820) // padding added after data member
#endif
#include <wincontypes.h>
//
// History flags (internal)
//
#define CHI_VALID_FLAGS (HISTORY_NO_DUP_FLAG)
//
// Selection flags (internal)
//
#define CONSOLE_SELECTION_INVERTED 0x0010 // selection is inverted (turned off)
#define CONSOLE_SELECTION_VALID (CONSOLE_SELECTION_IN_PROGRESS | \
CONSOLE_SELECTION_NOT_EMPTY | \
CONSOLE_MOUSE_SELECTION | \
CONSOLE_MOUSE_DOWN)
WINBASEAPI
BOOL
WINAPI
GetConsoleKeyboardLayoutNameA(
_Out_writes_(KL_NAMELENGTH) LPSTR pszLayout);
WINBASEAPI
BOOL
WINAPI
GetConsoleKeyboardLayoutNameW(
_Out_writes_(KL_NAMELENGTH) LPWSTR pszLayout);
#ifdef UNICODE
#define GetConsoleKeyboardLayoutName GetConsoleKeyboardLayoutNameW
#else
#define GetConsoleKeyboardLayoutName GetConsoleKeyboardLayoutNameA
#endif // !UNICODE
//
// Registry strings
//
#define CONSOLE_REGISTRY_STRING L"Console"
#define CONSOLE_REGISTRY_FONTSIZE L"FontSize"
#define CONSOLE_REGISTRY_FONTFAMILY L"FontFamily"
#define CONSOLE_REGISTRY_BUFFERSIZE L"ScreenBufferSize"
#define CONSOLE_REGISTRY_CURSORSIZE L"CursorSize"
#define CONSOLE_REGISTRY_WINDOWMAXIMIZED L"WindowMaximized"
#define CONSOLE_REGISTRY_WINDOWSIZE L"WindowSize"
#define CONSOLE_REGISTRY_WINDOWPOS L"WindowPosition"
#define CONSOLE_REGISTRY_WINDOWALPHA L"WindowAlpha"
#define CONSOLE_REGISTRY_FILLATTR L"ScreenColors"
#define CONSOLE_REGISTRY_POPUPATTR L"PopupColors"
#define CONSOLE_REGISTRY_FULLSCR L"FullScreen"
#define CONSOLE_REGISTRY_QUICKEDIT L"QuickEdit"
#define CONSOLE_REGISTRY_FACENAME L"FaceName"
#define CONSOLE_REGISTRY_FONTWEIGHT L"FontWeight"
#define CONSOLE_REGISTRY_INSERTMODE L"InsertMode"
#define CONSOLE_REGISTRY_HISTORYSIZE L"HistoryBufferSize"
#define CONSOLE_REGISTRY_HISTORYBUFS L"NumberOfHistoryBuffers"
#define CONSOLE_REGISTRY_HISTORYNODUP L"HistoryNoDup"
#define CONSOLE_REGISTRY_COLORTABLE L"ColorTable%02u"
#define CONSOLE_REGISTRY_EXTENDEDEDITKEY L"ExtendedEditKey"
#define CONSOLE_REGISTRY_EXTENDEDEDITKEY_CUSTOM L"ExtendedEditkeyCustom"
#define CONSOLE_REGISTRY_WORD_DELIM L"WordDelimiters"
#define CONSOLE_REGISTRY_TRIMZEROHEADINGS L"TrimLeadingZeros"
#define CONSOLE_REGISTRY_LOAD_CONIME L"LoadConIme"
#define CONSOLE_REGISTRY_ENABLE_COLOR_SELECTION L"EnableColorSelection"
#define CONSOLE_REGISTRY_SCROLLSCALE L"ScrollScale"
// V2 console settings
#define CONSOLE_REGISTRY_FORCEV2 L"ForceV2"
#define CONSOLE_REGISTRY_LINESELECTION L"LineSelection"
#define CONSOLE_REGISTRY_FILTERONPASTE L"FilterOnPaste"
#define CONSOLE_REGISTRY_LINEWRAP L"LineWrap"
#define CONSOLE_REGISTRY_CTRLKEYSHORTCUTS_DISABLED L"CtrlKeyShortcutsDisabled"
#define CONSOLE_REGISTRY_ALLOW_ALTF4_CLOSE L"AllowAltF4Close"
#define CONSOLE_REGISTRY_VIRTTERM_LEVEL L"VirtualTerminalLevel"
#define CONSOLE_REGISTRY_CURSORTYPE L"CursorType"
#define CONSOLE_REGISTRY_CURSORCOLOR L"CursorColor"
#define CONSOLE_REGISTRY_INTERCEPTCOPYPASTE L"InterceptCopyPaste"
#define CONSOLE_REGISTRY_COPYCOLOR L"CopyColor"
#define CONSOLE_REGISTRY_USEDX L"UseDx"
#define CONSOLE_REGISTRY_DEFAULTFOREGROUND L"DefaultForeground"
#define CONSOLE_REGISTRY_DEFAULTBACKGROUND L"DefaultBackground"
#define CONSOLE_REGISTRY_TERMINALSCROLLING L"TerminalScrolling"
// end V2 console settings
/*
* Starting code page
*/
#define CONSOLE_REGISTRY_CODEPAGE (L"CodePage")
//
// registry strings on HKEY_LOCAL_MACHINE
//
#define MACHINE_REGISTRY_CONSOLE (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console")
#define MACHINE_REGISTRY_CONSOLEIME (L"ConsoleIME")
#define MACHINE_REGISTRY_ENABLE_CONIME_ON_SYSTEM_PROCESS (L"EnableConImeOnSystemProcess")
#define MACHINE_REGISTRY_CONSOLE_TTFONT (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console\\TrueTypeFont")
#define MACHINE_REGISTRY_CONSOLE_TTFONT_WIN32_PATH (L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Console\\TrueTypeFont")
#define MACHINE_REGISTRY_CONSOLE_NLS (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console\\Nls")
#define MACHINE_REGISTRY_CONSOLE_FULLSCREEN (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console\\FullScreen")
#define MACHINE_REGISTRY_INITIAL_PALETTE (L"InitialPalette")
#define MACHINE_REGISTRY_COLOR_BUFFER (L"ColorBuffer")
#define MACHINE_REGISTRY_COLOR_BUFFER_NO_TRANSLATE (L"ColorBufferNoTranslate")
#define MACHINE_REGISTRY_MODE_FONT_PAIRS (L"ModeFontPairs")
#define MACHINE_REGISTRY_FS_CODEPAGE (L"CodePage")
#define MACHINE_REGISTRY_EUDC (L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Nls\\CodePage\\EUDCCodeRange")
//
// TrueType font list
//
// doesn't available bold when add BOLD_MARK on first of face name.
#define BOLD_MARK (L'*')
typedef struct _TT_FONT_LIST {
SINGLE_LIST_ENTRY List;
UINT CodePage;
BOOL fDisableBold;
TCHAR FaceName1[LF_FACESIZE];
TCHAR FaceName2[LF_FACESIZE];
} TTFONTLIST, *LPTTFONTLIST;
//
// registry strings on HKEY_CURRENT_USER
//
#define PRELOAD_REGISTRY_STRING (L"Keyboard Layout\\Preload")
//
// Special key for previous word erase
//
#define EXTKEY_ERASE_PREV_WORD (0x7f)
#ifndef NOGDI
typedef struct _CONSOLE_GRAPHICS_BUFFER_INFO {
DWORD dwBitMapInfoLength;
LPBITMAPINFO lpBitMapInfo;
DWORD dwUsage;
HANDLE hMutex;
PVOID lpBitMap;
} CONSOLE_GRAPHICS_BUFFER_INFO, *PCONSOLE_GRAPHICS_BUFFER_INFO;
#endif
BOOL
WINAPI
InvalidateConsoleDIBits(
_In_ HANDLE hConsoleOutput,
_In_ PSMALL_RECT lpRect);
VOID
WINAPI
SetLastConsoleEventActive(
VOID);
#define VDM_HIDE_WINDOW 1
#define VDM_IS_ICONIC 2
#define VDM_CLIENT_RECT 3
#define VDM_CLIENT_TO_SCREEN 4
#define VDM_SCREEN_TO_CLIENT 5
#define VDM_IS_HIDDEN 6
#define VDM_FULLSCREEN_NOPAINT 7
#define VDM_SET_VIDEO_MODE 8
BOOL
WINAPI
VDMConsoleOperation(
_In_ DWORD iFunction,
_Inout_opt_ LPVOID lpData);
BOOL
WINAPI
SetConsoleIcon(
_In_ HICON hIcon);
//
// These console font APIs don't appear to be used anywhere. Maybe they
// should be removed.
//
BOOL
WINAPI
SetConsoleFont(
_In_ HANDLE hConsoleOutput,
_In_ DWORD nFont);
DWORD
WINAPI
GetConsoleFontInfo(
_In_ HANDLE hConsoleOutput,
_In_ BOOL bMaximumWindow,
_In_ DWORD nLength,
_Out_ PCONSOLE_FONT_INFO lpConsoleFontInfo);
DWORD
WINAPI
GetNumberOfConsoleFonts(
VOID);
BOOL
WINAPI
SetConsoleCursor(
_In_ HANDLE hConsoleOutput,
_In_ HCURSOR hCursor);
int
WINAPI
ShowConsoleCursor(
_In_ HANDLE hConsoleOutput,
_In_ BOOL bShow);
HMENU
APIENTRY
ConsoleMenuControl(
_In_ HANDLE hConsoleOutput,
_In_ UINT dwCommandIdLow,
_In_ UINT dwCommandIdHigh);
BOOL
SetConsolePalette(
_In_ HANDLE hConsoleOutput,
_In_ HPALETTE hPalette,
_In_ UINT dwUsage);
#define CONSOLE_UNREGISTER_VDM 0
#define CONSOLE_REGISTER_VDM 1
#define CONSOLE_REGISTER_WOW 2
BOOL
APIENTRY
RegisterConsoleVDM(
_In_ DWORD dwRegisterFlags,
_In_ HANDLE hStartHardwareEvent,
_In_ HANDLE hEndHardwareEvent,
_In_ HANDLE hErrorhardwareEvent,
_Reserved_ DWORD Reserved,
_Out_ LPDWORD lpStateLength,
_Outptr_ PVOID *lpState,
_In_opt_ COORD VDMBufferSize,
_Outptr_ PVOID *lpVDMBuffer);
BOOL
APIENTRY
GetConsoleHardwareState(
_In_ HANDLE hConsoleOutput,
_Out_ PCOORD lpResolution,
_Out_ PCOORD lpFontSize);
BOOL
APIENTRY
SetConsoleHardwareState(
_In_ HANDLE hConsoleOutput,
_In_ COORD dwResolution,
_In_ COORD dwFontSize);
#define CONSOLE_NOSHORTCUTKEY 0x00000000 /* no shortcut key */
#define CONSOLE_ALTTAB 0x00000001 /* Alt + Tab */
#define CONSOLE_ALTESC 0x00000002 /* Alt + Escape */
#define CONSOLE_ALTSPACE 0x00000004 /* Alt + Space */
#define CONSOLE_ALTENTER 0x00000008 /* Alt + Enter */
#define CONSOLE_ALTPRTSC 0x00000010 /* Alt Print screen */
#define CONSOLE_PRTSC 0x00000020 /* Print screen */
#define CONSOLE_CTRLESC 0x00000040 /* Ctrl + Escape */
typedef struct _APPKEY {
WORD Modifier;
WORD ScanCode;
} APPKEY, *LPAPPKEY;
#define CONSOLE_MODIFIER_SHIFT 0x0003 // Left shift key
#define CONSOLE_MODIFIER_CONTROL 0x0004 // Either Control shift key
#define CONSOLE_MODIFIER_ALT 0x0008 // Either Alt shift key
BOOL
APIENTRY
SetConsoleKeyShortcuts(
_In_ BOOL bSet,
_In_ BYTE bReserveKeys,
_In_reads_(dwNumAppKeys) LPAPPKEY lpAppKeys,
_In_ DWORD dwNumAppKeys);
BOOL
APIENTRY
SetConsoleMenuClose(
_In_ BOOL bEnable);
DWORD
GetConsoleInputExeNameA(
_In_ DWORD nBufferLength,
_Out_writes_(nBufferLength) LPSTR lpBuffer);
DWORD
GetConsoleInputExeNameW(
_In_ DWORD nBufferLength,
_Out_writes_(nBufferLength) LPWSTR lpBuffer);
#ifdef UNICODE
#define GetConsoleInputExeName GetConsoleInputExeNameW
#else
#define GetConsoleInputExeName GetConsoleInputExeNameA
#endif // !UNICODE
BOOL
SetConsoleInputExeNameA(
_In_ LPSTR lpExeName);
BOOL
SetConsoleInputExeNameW(
_In_ LPWSTR lpExeName);
#ifdef UNICODE
#define SetConsoleInputExeName SetConsoleInputExeNameW
#else
#define SetConsoleInputExeName SetConsoleInputExeNameA
#endif // !UNICODE
BOOL
WINAPI
ReadConsoleInputExA(
_In_ HANDLE hConsoleInput,
_Out_writes_(nLength) PINPUT_RECORD lpBuffer,
_In_ DWORD nLength,
_Out_ LPDWORD lpNumberOfEventsRead,
_In_ USHORT wFlags);
BOOL
WINAPI
ReadConsoleInputExW(
_In_ HANDLE hConsoleInput,
_Out_writes_(nLength) PINPUT_RECORD lpBuffer,
_In_ DWORD nLength,
_Out_ LPDWORD lpNumberOfEventsRead,
_In_ USHORT wFlags);
#ifdef UNICODE
#define ReadConsoleInputEx ReadConsoleInputExW
#else
#define ReadConsoleInputEx ReadConsoleInputExA
#endif // !UNICODE
BOOL
WINAPI
WriteConsoleInputVDMA(
_In_ HANDLE hConsoleInput,
_In_reads_(nLength) PINPUT_RECORD lpBuffer,
_In_ DWORD nLength,
_Out_ LPDWORD lpNumberOfEventsWritten);
BOOL
WINAPI
WriteConsoleInputVDMW(
_In_ HANDLE hConsoleInput,
_In_reads_(nLength) PINPUT_RECORD lpBuffer,
_In_ DWORD nLength,
_Out_ LPDWORD lpNumberOfEventsWritten);
#ifdef UNICODE
#define WriteConsoleInputVDM WriteConsoleInputVDMW
#else
#define WriteConsoleInputVDM WriteConsoleInputVDMA
#endif // !UNICODE
BOOL
APIENTRY
GetConsoleNlsMode(
_In_ HANDLE hConsole,
_Out_ PDWORD lpdwNlsMode);
BOOL
APIENTRY
SetConsoleNlsMode(
_In_ HANDLE hConsole,
_In_ DWORD fdwNlsMode);
BOOL
APIENTRY
GetConsoleCharType(
_In_ HANDLE hConsole,
_In_ COORD coordCheck,
_Out_ PDWORD pdwType);
#define CHAR_TYPE_SBCS 0 // Displayed SBCS character
#define CHAR_TYPE_LEADING 2 // Displayed leading byte of DBCS
#define CHAR_TYPE_TRAILING 3 // Displayed trailing byte of DBCS
BOOL
APIENTRY
SetConsoleLocalEUDC(
_In_ HANDLE hConsoleHandle,
_In_ WORD wCodePoint,
_In_ COORD cFontSize,
_In_ PCHAR lpSB);
BOOL
APIENTRY
SetConsoleCursorMode(
_In_ HANDLE hConsoleHandle,
_In_ BOOL Blink,
_In_ BOOL DBEnable);
BOOL
APIENTRY
GetConsoleCursorMode(
_In_ HANDLE hConsoleHandle,
_Out_ PBOOL pbBlink,
_Out_ PBOOL pbDBEnable);
BOOL
APIENTRY
RegisterConsoleOS2(
_In_ BOOL fOs2Register);
BOOL
APIENTRY
SetConsoleOS2OemFormat(
_In_ BOOL fOs2OemFormat);
BOOL
IsConsoleFullWidth(
_In_ HDC hDC,
_In_ DWORD CodePage,
_In_ WCHAR wch);
#if defined(FE_IME)
BOOL
APIENTRY
RegisterConsoleIME(
_In_ HWND hWndConsoleIME,
_Out_opt_ DWORD *lpdwConsoleThreadId);
BOOL
APIENTRY
UnregisterConsoleIME(
VOID);
#endif // FE_IME
//
// These bits are always on for console handles and are used for routing
// by windows.
//
#define CONSOLE_HANDLE_SIGNATURE 0x00000003
#define CONSOLE_HANDLE_NEVERSET 0x10000000
#define CONSOLE_HANDLE_MASK (CONSOLE_HANDLE_SIGNATURE | CONSOLE_HANDLE_NEVERSET)
#define CONSOLE_HANDLE(HANDLE) (((ULONG_PTR)(HANDLE) & CONSOLE_HANDLE_MASK) == CONSOLE_HANDLE_SIGNATURE)
//
// These strings are used to open console input or output.
//
#define CONSOLE_INPUT_STRING L"CONIN$"
#define CONSOLE_OUTPUT_STRING L"CONOUT$"
#define CONSOLE_GENERIC L"CON"
//
// this string is used to call RegisterWindowMessage to get
// progman's handle.
//
#define CONSOLE_PROGMAN_HANDLE_MESSAGE "ConsoleProgmanHandle"
//
// stream API definitions. these API are only supposed to be used by
// subsystems (i.e. OpenFile routes to OpenConsoleW).
//
HANDLE
APIENTRY
OpenConsoleW(
_In_ LPWSTR lpConsoleDevice,
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ DWORD dwShareMode);
HANDLE
APIENTRY
DuplicateConsoleHandle(
_In_ HANDLE hSourceHandle,
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ DWORD dwOptions);
BOOL
APIENTRY
GetConsoleHandleInformation(
_In_ HANDLE hObject,
_Out_ LPDWORD lpdwFlags);
BOOL
APIENTRY
SetConsoleHandleInformation(
_In_ HANDLE hObject,
_In_ DWORD dwMask,
_In_ DWORD dwFlags);
BOOL
APIENTRY
CloseConsoleHandle(
_In_ HANDLE hConsole);
BOOL
APIENTRY
VerifyConsoleIoHandle(
_In_ HANDLE hIoHandle);
HANDLE
APIENTRY
GetConsoleInputWaitHandle(
VOID);
typedef struct _CONSOLE_STATE_INFO {
/* BEGIN V1 CONSOLE_STATE_INFO */
COORD ScreenBufferSize;
COORD WindowSize;
INT WindowPosX;
INT WindowPosY;
COORD FontSize;
UINT FontFamily;
UINT FontWeight;
WCHAR FaceName[LF_FACESIZE];
UINT CursorSize;
UINT FullScreen : 1;
UINT QuickEdit : 1;
UINT AutoPosition : 1;
UINT InsertMode : 1;
UINT HistoryNoDup : 1;
UINT FullScreenSupported : 1;
UINT UpdateValues : 1;
UINT Defaults : 1;
WORD ScreenAttributes;
WORD PopupAttributes;
UINT HistoryBufferSize;
UINT NumberOfHistoryBuffers;
COLORREF ColorTable[16];
HWND hWnd;
HICON hIcon;
LPWSTR OriginalTitle;
LPWSTR LinkTitle;
/*
* Starting code page
*/
UINT CodePage;
/* END V1 CONSOLE_STATE_INFO */
/* BEGIN V2 CONSOLE_STATE_INFO */
BOOL fIsV2Console;
BOOL fWrapText;
BOOL fFilterOnPaste;
BOOL fCtrlKeyShortcutsDisabled;
BOOL fLineSelection;
BYTE bWindowTransparency;
BOOL fWindowMaximized;
unsigned int CursorType;
COLORREF CursorColor;
BOOL InterceptCopyPaste;
COLORREF DefaultForeground;
COLORREF DefaultBackground;
BOOL TerminalScrolling;
/* END V2 CONSOLE_STATE_INFO */
} CONSOLE_STATE_INFO, *PCONSOLE_STATE_INFO;
#ifdef DEFINE_CONSOLEV2_PROPERTIES
#define PID_CONSOLE_FORCEV2 1
#define PID_CONSOLE_WRAPTEXT 2
#define PID_CONSOLE_FILTERONPASTE 3
#define PID_CONSOLE_CTRLKEYSDISABLED 4
#define PID_CONSOLE_LINESELECTION 5
#define PID_CONSOLE_WINDOWTRANSPARENCY 6
#define PID_CONSOLE_WINDOWMAXIMIZED 7
#define PID_CONSOLE_CURSOR_TYPE 8
#define PID_CONSOLE_CURSOR_COLOR 9
#define PID_CONSOLE_INTERCEPT_COPY_PASTE 10
#define PID_CONSOLE_DEFAULTFOREGROUND 11
#define PID_CONSOLE_DEFAULTBACKGROUND 12
#define PID_CONSOLE_TERMINALSCROLLING 13
#define CONSOLE_PROPKEY(name, id) \
DEFINE_PROPERTYKEY(name, 0x0C570607, 0x0396, 0x43DE, 0x9D, 0x61, 0xE3, 0x21, 0xD7, 0xDF, 0x50, 0x26, id);
CONSOLE_PROPKEY(PKEY_Console_ForceV2, PID_CONSOLE_FORCEV2);
CONSOLE_PROPKEY(PKEY_Console_WrapText, PID_CONSOLE_WRAPTEXT);
CONSOLE_PROPKEY(PKEY_Console_FilterOnPaste, PID_CONSOLE_FILTERONPASTE);
CONSOLE_PROPKEY(PKEY_Console_CtrlKeyShortcutsDisabled, PID_CONSOLE_CTRLKEYSDISABLED);
CONSOLE_PROPKEY(PKEY_Console_LineSelection, PID_CONSOLE_LINESELECTION);
CONSOLE_PROPKEY(PKEY_Console_WindowTransparency, PID_CONSOLE_WINDOWTRANSPARENCY);
CONSOLE_PROPKEY(PKEY_Console_WindowMaximized, PID_CONSOLE_WINDOWMAXIMIZED);
CONSOLE_PROPKEY(PKEY_Console_CursorType, PID_CONSOLE_CURSOR_TYPE);
CONSOLE_PROPKEY(PKEY_Console_CursorColor, PID_CONSOLE_CURSOR_COLOR);
CONSOLE_PROPKEY(PKEY_Console_InterceptCopyPaste, PID_CONSOLE_INTERCEPT_COPY_PASTE);
CONSOLE_PROPKEY(PKEY_Console_DefaultForeground, PID_CONSOLE_DEFAULTFOREGROUND);
CONSOLE_PROPKEY(PKEY_Console_DefaultBackground, PID_CONSOLE_DEFAULTBACKGROUND);
CONSOLE_PROPKEY(PKEY_Console_TerminalScrolling, PID_CONSOLE_TERMINALSCROLLING);
#endif
//
// Ensure the alignment is WORD boundary
//
#include <pshpack2.h>
typedef struct {
WORD wMod;
WORD wVirKey;
WCHAR wUnicodeChar;
} ExtKeySubst;
typedef struct {
ExtKeySubst keys[3]; // 0: Ctrl
// 1: Alt
// 2: Ctrl+Alt
} ExtKeyDef;
typedef ExtKeyDef ExtKeyDefTable['Z' - 'A' + 1];
typedef struct {
DWORD dwVersion;
DWORD dwCheckSum;
ExtKeyDefTable table;
} ExtKeyDefBuf;
//
// Restore the previous alignment
//
#include <poppack.h>
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
#ifdef __cplusplus
}
#endif
#endif // _WINCONP_