forked from factor/factor
/
user32.factor
1885 lines (1685 loc) · 58.7 KB
/
user32.factor
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
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
! Copyright (C) 2005, 2006 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.syntax parser namespaces
kernel math windows.types generalizations math.bitwise
classes.struct literals windows.kernel32 system accessors ;
IN: windows.user32
! HKL for ActivateKeyboardLayout
CONSTANT: HKL_PREV 0
CONSTANT: HKL_NEXT 1
CONSTANT: CW_USEDEFAULT 0x80000000
CONSTANT: WS_OVERLAPPED 0x00000000
CONSTANT: WS_POPUP 0x80000000
CONSTANT: WS_CHILD 0x40000000
CONSTANT: WS_MINIMIZE 0x20000000
CONSTANT: WS_VISIBLE 0x10000000
CONSTANT: WS_DISABLED 0x08000000
CONSTANT: WS_CLIPSIBLINGS 0x04000000
CONSTANT: WS_CLIPCHILDREN 0x02000000
CONSTANT: WS_MAXIMIZE 0x01000000
CONSTANT: WS_CAPTION 0x00C00000
CONSTANT: WS_BORDER 0x00800000
CONSTANT: WS_DLGFRAME 0x00400000
CONSTANT: WS_VSCROLL 0x00200000
CONSTANT: WS_HSCROLL 0x00100000
CONSTANT: WS_SYSMENU 0x00080000
CONSTANT: WS_THICKFRAME 0x00040000
CONSTANT: WS_GROUP 0x00020000
CONSTANT: WS_TABSTOP 0x00010000
CONSTANT: WS_MINIMIZEBOX 0x00020000
CONSTANT: WS_MAXIMIZEBOX 0x00010000
! Common window styles
CONSTANT: WS_OVERLAPPEDWINDOW
flags{
WS_OVERLAPPED
WS_CAPTION
WS_SYSMENU
WS_THICKFRAME
WS_MINIMIZEBOX
WS_MAXIMIZEBOX
}
CONSTANT: WS_POPUPWINDOW flags{ WS_POPUP WS_BORDER WS_SYSMENU }
ALIAS: WS_CHILDWINDOW WS_CHILD
ALIAS: WS_TILED WS_OVERLAPPED
ALIAS: WS_ICONIC WS_MINIMIZE
ALIAS: WS_SIZEBOX WS_THICKFRAME
ALIAS: WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
! Extended window styles
CONSTANT: WS_EX_DLGMODALFRAME 0x00000001
CONSTANT: WS_EX_NOPARENTNOTIFY 0x00000004
CONSTANT: WS_EX_TOPMOST 0x00000008
CONSTANT: WS_EX_ACCEPTFILES 0x00000010
CONSTANT: WS_EX_TRANSPARENT 0x00000020
CONSTANT: WS_EX_MDICHILD 0x00000040
CONSTANT: WS_EX_TOOLWINDOW 0x00000080
CONSTANT: WS_EX_WINDOWEDGE 0x00000100
CONSTANT: WS_EX_CLIENTEDGE 0x00000200
CONSTANT: WS_EX_CONTEXTHELP 0x00000400
CONSTANT: WS_EX_RIGHT 0x00001000
CONSTANT: WS_EX_LEFT 0x00000000
CONSTANT: WS_EX_RTLREADING 0x00002000
CONSTANT: WS_EX_LTRREADING 0x00000000
CONSTANT: WS_EX_LEFTSCROLLBAR 0x00004000
CONSTANT: WS_EX_RIGHTSCROLLBAR 0x00000000
CONSTANT: WS_EX_CONTROLPARENT 0x00010000
CONSTANT: WS_EX_STATICEDGE 0x00020000
CONSTANT: WS_EX_APPWINDOW 0x00040000
CONSTANT: WS_EX_OVERLAPPEDWINDOW
flags{ WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE }
CONSTANT: WS_EX_PALETTEWINDOW
flags{ WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW WS_EX_TOPMOST }
CONSTANT: CS_VREDRAW 0x0001
CONSTANT: CS_HREDRAW 0x0002
CONSTANT: CS_DBLCLKS 0x0008
CONSTANT: CS_OWNDC 0x0020
CONSTANT: CS_CLASSDC 0x0040
CONSTANT: CS_PARENTDC 0x0080
CONSTANT: CS_NOCLOSE 0x0200
CONSTANT: CS_SAVEBITS 0x0800
CONSTANT: CS_BYTEALIGNCLIENT 0x1000
CONSTANT: CS_BYTEALIGNWINDOW 0x2000
CONSTANT: CS_GLOBALCLASS 0x4000
CONSTANT: COLOR_SCROLLBAR 0
CONSTANT: COLOR_BACKGROUND 1
CONSTANT: COLOR_ACTIVECAPTION 2
CONSTANT: COLOR_INACTIVECAPTION 3
CONSTANT: COLOR_MENU 4
CONSTANT: COLOR_WINDOW 5
CONSTANT: COLOR_WINDOWFRAME 6
CONSTANT: COLOR_MENUTEXT 7
CONSTANT: COLOR_WINDOWTEXT 8
CONSTANT: COLOR_CAPTIONTEXT 9
CONSTANT: COLOR_ACTIVEBORDER 10
CONSTANT: COLOR_INACTIVEBORDER 11
CONSTANT: COLOR_APPWORKSPACE 12
CONSTANT: COLOR_HIGHLIGHT 13
CONSTANT: COLOR_HIGHLIGHTTEXT 14
CONSTANT: COLOR_BTNFACE 15
CONSTANT: COLOR_BTNSHADOW 16
CONSTANT: COLOR_GRAYTEXT 17
CONSTANT: COLOR_BTNTEXT 18
CONSTANT: COLOR_INACTIVECAPTIONTEXT 19
CONSTANT: COLOR_BTNHIGHLIGHT 20
CONSTANT: IDI_APPLICATION 32512
CONSTANT: IDI_HAND 32513
CONSTANT: IDI_QUESTION 32514
CONSTANT: IDI_EXCLAMATION 32515
CONSTANT: IDI_ASTERISK 32516
CONSTANT: IDI_WINLOGO 32517
! ShowWindow() Commands
CONSTANT: SW_HIDE 0
CONSTANT: SW_SHOWNORMAL 1
CONSTANT: SW_NORMAL 1
CONSTANT: SW_SHOWMINIMIZED 2
CONSTANT: SW_SHOWMAXIMIZED 3
CONSTANT: SW_MAXIMIZE 3
CONSTANT: SW_SHOWNOACTIVATE 4
CONSTANT: SW_SHOW 5
CONSTANT: SW_MINIMIZE 6
CONSTANT: SW_SHOWMINNOACTIVE 7
CONSTANT: SW_SHOWNA 8
CONSTANT: SW_RESTORE 9
CONSTANT: SW_SHOWDEFAULT 10
CONSTANT: SW_FORCEMINIMIZE 11
CONSTANT: SW_MAX 11
! PeekMessage
CONSTANT: PM_NOREMOVE 0
CONSTANT: PM_REMOVE 1
CONSTANT: PM_NOYIELD 2
! : PM_QS_INPUT (QS_INPUT << 16) ;
! : PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16) ;
! : PM_QS_PAINT (QS_PAINT << 16) ;
! : PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16) ;
!
! Standard Cursor IDs
!
CONSTANT: IDC_ARROW 32512
CONSTANT: IDC_IBEAM 32513
CONSTANT: IDC_WAIT 32514
CONSTANT: IDC_CROSS 32515
CONSTANT: IDC_UPARROW 32516
CONSTANT: IDC_SIZE 32640 ! OBSOLETE: use IDC_SIZEALL
CONSTANT: IDC_ICON 32641 ! OBSOLETE: use IDC_ARROW
CONSTANT: IDC_SIZENWSE 32642
CONSTANT: IDC_SIZENESW 32643
CONSTANT: IDC_SIZEWE 32644
CONSTANT: IDC_SIZENS 32645
CONSTANT: IDC_SIZEALL 32646
CONSTANT: IDC_NO 32648 ! not in win3.1
CONSTANT: IDC_HAND 32649
CONSTANT: IDC_APPSTARTING 32650 ! not in win3.1
CONSTANT: IDC_HELP 32651
! Predefined Clipboard Formats
CONSTANT: CF_TEXT 1
CONSTANT: CF_BITMAP 2
CONSTANT: CF_METAFILEPICT 3
CONSTANT: CF_SYLK 4
CONSTANT: CF_DIF 5
CONSTANT: CF_TIFF 6
CONSTANT: CF_OEMTEXT 7
CONSTANT: CF_DIB 8
CONSTANT: CF_PALETTE 9
CONSTANT: CF_PENDATA 10
CONSTANT: CF_RIFF 11
CONSTANT: CF_WAVE 12
CONSTANT: CF_UNICODETEXT 13
CONSTANT: CF_ENHMETAFILE 14
CONSTANT: CF_HDROP 15
CONSTANT: CF_LOCALE 16
CONSTANT: CF_DIBV5 17
CONSTANT: CF_MAX 18
CONSTANT: CF_OWNERDISPLAY 0x0080
CONSTANT: CF_DSPTEXT 0x0081
CONSTANT: CF_DSPBITMAP 0x0082
CONSTANT: CF_DSPMETAFILEPICT 0x0083
CONSTANT: CF_DSPENHMETAFILE 0x008E
! "Private" formats don't get GlobalFree()'d
CONSTANT: CF_PRIVATEFIRST 0x200
CONSTANT: CF_PRIVATELAST 0x2FF
! "GDIOBJ" formats do get DeleteObject()'d
CONSTANT: CF_GDIOBJFIRST 0x300
CONSTANT: CF_GDIOBJLAST 0x3FF
! Virtual Keys, Standard Set
CONSTANT: VK_LBUTTON 0x01
CONSTANT: VK_RBUTTON 0x02
CONSTANT: VK_CANCEL 0x03
CONSTANT: VK_MBUTTON 0x04 ! NOT contiguous with L & RBUTTON
CONSTANT: VK_XBUTTON1 0x05 ! NOT contiguous with L & RBUTTON
CONSTANT: VK_XBUTTON2 0x06 ! NOT contiguous with L & RBUTTON
! 0x07 : unassigned
CONSTANT: VK_BACK 0x08
CONSTANT: VK_TAB 0x09
! 0x0A - 0x0B : reserved
CONSTANT: VK_CLEAR 0x0C
CONSTANT: VK_RETURN 0x0D
CONSTANT: VK_SHIFT 0x10
CONSTANT: VK_CONTROL 0x11
CONSTANT: VK_MENU 0x12
CONSTANT: VK_PAUSE 0x13
CONSTANT: VK_CAPITAL 0x14
CONSTANT: VK_KANA 0x15
CONSTANT: VK_HANGEUL 0x15 ! old name - here for compatibility
CONSTANT: VK_HANGUL 0x15
CONSTANT: VK_JUNJA 0x17
CONSTANT: VK_FINAL 0x18
CONSTANT: VK_HANJA 0x19
CONSTANT: VK_KANJI 0x19
CONSTANT: VK_ESCAPE 0x1B
CONSTANT: VK_CONVERT 0x1C
CONSTANT: VK_NONCONVERT 0x1D
CONSTANT: VK_ACCEPT 0x1E
CONSTANT: VK_MODECHANGE 0x1F
CONSTANT: VK_SPACE 0x20
CONSTANT: VK_PRIOR 0x21
CONSTANT: VK_NEXT 0x22
CONSTANT: VK_END 0x23
CONSTANT: VK_HOME 0x24
CONSTANT: VK_LEFT 0x25
CONSTANT: VK_UP 0x26
CONSTANT: VK_RIGHT 0x27
CONSTANT: VK_DOWN 0x28
CONSTANT: VK_SELECT 0x29
CONSTANT: VK_PRINT 0x2A
CONSTANT: VK_EXECUTE 0x2B
CONSTANT: VK_SNAPSHOT 0x2C
CONSTANT: VK_INSERT 0x2D
CONSTANT: VK_DELETE 0x2E
CONSTANT: VK_HELP 0x2F
CONSTANT: VK_0 CHAR: 0
CONSTANT: VK_1 CHAR: 1
CONSTANT: VK_2 CHAR: 2
CONSTANT: VK_3 CHAR: 3
CONSTANT: VK_4 CHAR: 4
CONSTANT: VK_5 CHAR: 5
CONSTANT: VK_6 CHAR: 6
CONSTANT: VK_7 CHAR: 7
CONSTANT: VK_8 CHAR: 8
CONSTANT: VK_9 CHAR: 9
CONSTANT: VK_A CHAR: A
CONSTANT: VK_B CHAR: B
CONSTANT: VK_C CHAR: C
CONSTANT: VK_D CHAR: D
CONSTANT: VK_E CHAR: E
CONSTANT: VK_F CHAR: F
CONSTANT: VK_G CHAR: G
CONSTANT: VK_H CHAR: H
CONSTANT: VK_I CHAR: I
CONSTANT: VK_J CHAR: J
CONSTANT: VK_K CHAR: K
CONSTANT: VK_L CHAR: L
CONSTANT: VK_M CHAR: M
CONSTANT: VK_N CHAR: N
CONSTANT: VK_O CHAR: O
CONSTANT: VK_P CHAR: P
CONSTANT: VK_Q CHAR: Q
CONSTANT: VK_R CHAR: R
CONSTANT: VK_S CHAR: S
CONSTANT: VK_T CHAR: T
CONSTANT: VK_U CHAR: U
CONSTANT: VK_V CHAR: V
CONSTANT: VK_W CHAR: W
CONSTANT: VK_X CHAR: X
CONSTANT: VK_Y CHAR: Y
CONSTANT: VK_Z CHAR: Z
CONSTANT: VK_LWIN 0x5B
CONSTANT: VK_RWIN 0x5C
CONSTANT: VK_APPS 0x5D
! 0x5E : reserved
CONSTANT: VK_SLEEP 0x5F
CONSTANT: VK_NUMPAD0 0x60
CONSTANT: VK_NUMPAD1 0x61
CONSTANT: VK_NUMPAD2 0x62
CONSTANT: VK_NUMPAD3 0x63
CONSTANT: VK_NUMPAD4 0x64
CONSTANT: VK_NUMPAD5 0x65
CONSTANT: VK_NUMPAD6 0x66
CONSTANT: VK_NUMPAD7 0x67
CONSTANT: VK_NUMPAD8 0x68
CONSTANT: VK_NUMPAD9 0x69
CONSTANT: VK_MULTIPLY 0x6A
CONSTANT: VK_ADD 0x6B
CONSTANT: VK_SEPARATOR 0x6C
CONSTANT: VK_SUBTRACT 0x6D
CONSTANT: VK_DECIMAL 0x6E
CONSTANT: VK_DIVIDE 0x6F
CONSTANT: VK_F1 0x70
CONSTANT: VK_F2 0x71
CONSTANT: VK_F3 0x72
CONSTANT: VK_F4 0x73
CONSTANT: VK_F5 0x74
CONSTANT: VK_F6 0x75
CONSTANT: VK_F7 0x76
CONSTANT: VK_F8 0x77
CONSTANT: VK_F9 0x78
CONSTANT: VK_F10 0x79
CONSTANT: VK_F11 0x7A
CONSTANT: VK_F12 0x7B
CONSTANT: VK_F13 0x7C
CONSTANT: VK_F14 0x7D
CONSTANT: VK_F15 0x7E
CONSTANT: VK_F16 0x7F
CONSTANT: VK_F17 0x80
CONSTANT: VK_F18 0x81
CONSTANT: VK_F19 0x82
CONSTANT: VK_F20 0x83
CONSTANT: VK_F21 0x84
CONSTANT: VK_F22 0x85
CONSTANT: VK_F23 0x86
CONSTANT: VK_F24 0x87
! 0x88 - 0x8F : unassigned
CONSTANT: VK_NUMLOCK 0x90
CONSTANT: VK_SCROLL 0x91
! NEC PC-9800 kbd definitions
CONSTANT: VK_OEM_NEC_EQUAL 0x92 ! '=' key on numpad
! Fujitsu/OASYS kbd definitions
CONSTANT: VK_OEM_FJ_JISHO 0x92 ! 'Dictionary' key
CONSTANT: VK_OEM_FJ_MASSHOU 0x93 ! 'Unregister word' key
CONSTANT: VK_OEM_FJ_TOUROKU 0x94 ! 'Register word' key
CONSTANT: VK_OEM_FJ_LOYA 0x95 ! 'Left OYAYUBI' key
CONSTANT: VK_OEM_FJ_ROYA 0x96 ! 'Right OYAYUBI' key
! 0x97 - 0x9F : unassigned
! VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
! Used only as parameters to GetAsyncKeyState() and GetKeyState().
! No other API or message will distinguish left and right keys in this way.
CONSTANT: VK_LSHIFT 0xA0
CONSTANT: VK_RSHIFT 0xA1
CONSTANT: VK_LCONTROL 0xA2
CONSTANT: VK_RCONTROL 0xA3
CONSTANT: VK_LMENU 0xA4
CONSTANT: VK_RMENU 0xA5
CONSTANT: VK_BROWSER_BACK 0xA6
CONSTANT: VK_BROWSER_FORWARD 0xA7
CONSTANT: VK_BROWSER_REFRESH 0xA8
CONSTANT: VK_BROWSER_STOP 0xA9
CONSTANT: VK_BROWSER_SEARCH 0xAA
CONSTANT: VK_BROWSER_FAVORITES 0xAB
CONSTANT: VK_BROWSER_HOME 0xAC
CONSTANT: VK_VOLUME_MUTE 0xAD
CONSTANT: VK_VOLUME_DOWN 0xAE
CONSTANT: VK_VOLUME_UP 0xAF
CONSTANT: VK_MEDIA_NEXT_TRACK 0xB0
CONSTANT: VK_MEDIA_PREV_TRACK 0xB1
CONSTANT: VK_MEDIA_STOP 0xB2
CONSTANT: VK_MEDIA_PLAY_PAUSE 0xB3
CONSTANT: VK_LAUNCH_MAIL 0xB4
CONSTANT: VK_LAUNCH_MEDIA_SELECT 0xB5
CONSTANT: VK_LAUNCH_APP1 0xB6
CONSTANT: VK_LAUNCH_APP2 0xB7
! 0xB8 - 0xB9 : reserved
CONSTANT: VK_OEM_1 0xBA ! ';:' for US
CONSTANT: VK_OEM_PLUS 0xBB ! '+' any country
CONSTANT: VK_OEM_COMMA 0xBC ! ',' any country
CONSTANT: VK_OEM_MINUS 0xBD ! '-' any country
CONSTANT: VK_OEM_PERIOD 0xBE ! '.' any country
CONSTANT: VK_OEM_2 0xBF ! '/?' for US
CONSTANT: VK_OEM_3 0xC0 ! '`~' for US
! 0xC1 - 0xD7 : reserved
! 0xD8 - 0xDA : unassigned
CONSTANT: VK_OEM_4 0xDB ! '[{' for US
CONSTANT: VK_OEM_5 0xDC ! '\|' for US
CONSTANT: VK_OEM_6 0xDD ! ']}' for US
CONSTANT: VK_OEM_7 0xDE ! ''"' for US
CONSTANT: VK_OEM_8 0xDF
! 0xE0 : reserved
! Various extended or enhanced keyboards
CONSTANT: VK_OEM_AX 0xE1 ! 'AX' key on Japanese AX kbd
CONSTANT: VK_OEM_102 0xE2 ! "<>" or "\|" on RT 102-key kbd.
CONSTANT: VK_ICO_HELP 0xE3 ! Help key on ICO
CONSTANT: VK_ICO_00 0xE4 ! 00 key on ICO
CONSTANT: VK_PROCESSKEY 0xE5
CONSTANT: VK_ICO_CLEAR 0xE6
CONSTANT: VK_PACKET 0xE7
! 0xE8 : unassigned
! Nokia/Ericsson definitions
CONSTANT: VK_OEM_RESET 0xE9
CONSTANT: VK_OEM_JUMP 0xEA
CONSTANT: VK_OEM_PA1 0xEB
CONSTANT: VK_OEM_PA2 0xEC
CONSTANT: VK_OEM_PA3 0xED
CONSTANT: VK_OEM_WSCTRL 0xEE
CONSTANT: VK_OEM_CUSEL 0xEF
CONSTANT: VK_OEM_ATTN 0xF0
CONSTANT: VK_OEM_FINISH 0xF1
CONSTANT: VK_OEM_COPY 0xF2
CONSTANT: VK_OEM_AUTO 0xF3
CONSTANT: VK_OEM_ENLW 0xF4
CONSTANT: VK_OEM_BACKTAB 0xF5
CONSTANT: VK_ATTN 0xF6
CONSTANT: VK_CRSEL 0xF7
CONSTANT: VK_EXSEL 0xF8
CONSTANT: VK_EREOF 0xF9
CONSTANT: VK_PLAY 0xFA
CONSTANT: VK_ZOOM 0xFB
CONSTANT: VK_NONAME 0xFC
CONSTANT: VK_PA1 0xFD
CONSTANT: VK_OEM_CLEAR 0xFE
! 0xFF : reserved
! Key State Masks for Mouse Messages
CONSTANT: MK_LBUTTON 0x0001
CONSTANT: MK_RBUTTON 0x0002
CONSTANT: MK_SHIFT 0x0004
CONSTANT: MK_CONTROL 0x0008
CONSTANT: MK_MBUTTON 0x0010
CONSTANT: MK_XBUTTON1 0x0020
CONSTANT: MK_XBUTTON2 0x0040
! Some fields are not defined for win64
! Window field offsets for GetWindowLong()
CONSTANT: GWL_WNDPROC -4
CONSTANT: GWL_HINSTANCE -6
CONSTANT: GWL_HWNDPARENT -8
CONSTANT: GWL_USERDATA -21
CONSTANT: GWL_ID -12
CONSTANT: GWL_STYLE -16
CONSTANT: GWL_EXSTYLE -20
CONSTANT: GWLP_WNDPROC -4
CONSTANT: GWLP_HINSTANCE -6
CONSTANT: GWLP_HWNDPARENT -8
CONSTANT: GWLP_USERDATA -21
CONSTANT: GWLP_ID -12
! Class field offsets for GetClassLong()
CONSTANT: GCL_MENUNAME -8
CONSTANT: GCL_HBRBACKGROUND -10
CONSTANT: GCL_HCURSOR -12
CONSTANT: GCL_HICON -14
CONSTANT: GCL_HMODULE -16
CONSTANT: GCL_WNDPROC -24
CONSTANT: GCL_HICONSM -34
CONSTANT: GCL_CBWNDEXTRA -18
CONSTANT: GCL_CBCLSEXTRA -20
CONSTANT: GCL_STYLE -26
CONSTANT: GCW_ATOM -32
CONSTANT: GCLP_MENUNAME -8
CONSTANT: GCLP_HBRBACKGROUND -10
CONSTANT: GCLP_HCURSOR -12
CONSTANT: GCLP_HICON -14
CONSTANT: GCLP_HMODULE -16
CONSTANT: GCLP_WNDPROC -24
CONSTANT: GCLP_HICONSM -34
CONSTANT: MB_ICONASTERISK 0x00000040
CONSTANT: MB_ICONEXCLAMATION 0x00000030
CONSTANT: MB_ICONHAND 0x00000010
CONSTANT: MB_ICONQUESTION 0x00000020
CONSTANT: MB_OK 0x00000000
ALIAS: FVIRTKEY TRUE
CONSTANT: FNOINVERT 2
CONSTANT: FSHIFT 4
CONSTANT: FCONTROL 8
CONSTANT: FALT 16
CONSTANT: MAPVK_VK_TO_VSC 0
CONSTANT: MAPVK_VSC_TO_VK 1
CONSTANT: MAPVK_VK_TO_CHAR 2
CONSTANT: MAPVK_VSC_TO_VK_EX 3
CONSTANT: MAPVK_VK_TO_VSC_EX 3
CONSTANT: TME_HOVER 1
CONSTANT: TME_LEAVE 2
CONSTANT: TME_NONCLIENT 16
CONSTANT: TME_QUERY 0x40000000
CONSTANT: TME_CANCEL 0x80000000
CONSTANT: HOVER_DEFAULT 0xffffffff
STRUCT: TRACKMOUSEEVENT
{ cbSize DWORD }
{ dwFlags DWORD }
{ hwndTrack HWND }
{ dwHoverTime DWORD } ;
TYPEDEF: TRACKMOUSEEVENT* LPTRACKMOUSEEVENT
CONSTANT: DBT_DEVICEARRIVAL 0x8000
CONSTANT: DBT_DEVICEREMOVECOMPLETE 0x8004
CONSTANT: DBT_DEVTYP_DEVICEINTERFACE 5
CONSTANT: DEVICE_NOTIFY_WINDOW_HANDLE 0
CONSTANT: DEVICE_NOTIFY_SERVICE_HANDLE 1
CONSTANT: DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 4
STRUCT: DEV_BROADCAST_HDR
{ dbch_size DWORD }
{ dbch_devicetype DWORD }
{ dbch_reserved DWORD } ;
STRUCT: DEV_BROADCAST_DEVICEW
{ dbcc_size DWORD }
{ dbcc_devicetype DWORD }
{ dbcc_reserved DWORD }
{ dbcc_classguid GUID }
{ dbcc_name WCHAR[1] } ;
CONSTANT: CCHDEVICENAME 32
STRUCT: MONITORINFOEX
{ cbSize DWORD }
{ rcMonitor RECT }
{ rcWork RECT }
{ dwFlags DWORD }
{ szDevice { TCHAR CCHDEVICENAME } } ;
TYPEDEF: MONITORINFOEX* LPMONITORINFOEX
TYPEDEF: MONITORINFOEX* LPMONITORINFO
CONSTANT: MONITOR_DEFAULTTONULL 0
CONSTANT: MONITOR_DEFAULTTOPRIMARY 1
CONSTANT: MONITOR_DEFAULTTONEAREST 2
CONSTANT: MONITORINFOF_PRIMARY 1
CONSTANT: SWP_NOSIZE 1
CONSTANT: SWP_NOMOVE 2
CONSTANT: SWP_NOZORDER 4
CONSTANT: SWP_NOREDRAW 8
CONSTANT: SWP_NOACTIVATE 16
CONSTANT: SWP_FRAMECHANGED 32
CONSTANT: SWP_SHOWWINDOW 64
CONSTANT: SWP_HIDEWINDOW 128
CONSTANT: SWP_NOCOPYBITS 256
CONSTANT: SWP_NOOWNERZORDER 512
CONSTANT: SWP_NOSENDCHANGING 1024
ALIAS: SWP_DRAWFRAME SWP_FRAMECHANGED
ALIAS: SWP_NOREPOSITION SWP_NOOWNERZORDER
CONSTANT: SWP_DEFERERASE 8192
CONSTANT: SWP_ASYNCWINDOWPOS 16384
CONSTANT: MF_ENABLED 0x0000
CONSTANT: MF_GRAYED 0x0001
CONSTANT: MF_DISABLED 0x0002
CONSTANT: MF_STRING 0x0000
CONSTANT: MF_BITMAP 0x0004
CONSTANT: MF_UNCHECKED 0x0000
CONSTANT: MF_CHECKED 0x0008
CONSTANT: MF_POPUP 0x0010
CONSTANT: MF_MENUBARBREAK 0x0020
CONSTANT: MF_MENUBREAK 0x0040
CONSTANT: MF_UNHILITE 0x0000
CONSTANT: MF_HILITE 0x0080
CONSTANT: MF_OWNERDRAW 0x0100
CONSTANT: MF_USECHECKBITMAPS 0x0200
CONSTANT: MF_BYCOMMAND 0x0000
CONSTANT: MF_BYPOSITION 0x0400
CONSTANT: MF_SEPARATOR 0x0800
CONSTANT: MF_DEFAULT 0x1000
CONSTANT: MF_SYSMENU 0x2000
CONSTANT: MF_HELP 0x4000
CONSTANT: MF_RIGHTJUSTIFY 0x4000
CONSTANT: MF_MOUSESELECT 0x8000
CONSTANT: SPI_GETBEEP 1
CONSTANT: SPI_SETBEEP 2
CONSTANT: SPI_GETMOUSE 3
CONSTANT: SPI_SETMOUSE 4
CONSTANT: SPI_GETBORDER 5
CONSTANT: SPI_SETBORDER 6
CONSTANT: SPI_GETKEYBOARDSPEED 10
CONSTANT: SPI_SETKEYBOARDSPEED 11
CONSTANT: SPI_LANGDRIVER 12
CONSTANT: SPI_ICONHORIZONTALSPACING 13
CONSTANT: SPI_GETSCREENSAVETIMEOUT 14
CONSTANT: SPI_SETSCREENSAVETIMEOUT 15
CONSTANT: SPI_GETSCREENSAVEACTIVE 16
CONSTANT: SPI_SETSCREENSAVEACTIVE 17
CONSTANT: SPI_GETGRIDGRANULARITY 18
CONSTANT: SPI_SETGRIDGRANULARITY 19
CONSTANT: SPI_SETDESKWALLPAPER 20
CONSTANT: SPI_SETDESKPATTERN 21
CONSTANT: SPI_GETKEYBOARDDELAY 22
CONSTANT: SPI_SETKEYBOARDDELAY 23
CONSTANT: SPI_ICONVERTICALSPACING 24
CONSTANT: SPI_GETICONTITLEWRAP 25
CONSTANT: SPI_SETICONTITLEWRAP 26
CONSTANT: SPI_GETMENUDROPALIGNMENT 27
CONSTANT: SPI_SETMENUDROPALIGNMENT 28
CONSTANT: SPI_SETDOUBLECLKWIDTH 29
CONSTANT: SPI_SETDOUBLECLKHEIGHT 30
CONSTANT: SPI_GETICONTITLELOGFONT 31
CONSTANT: SPI_SETDOUBLECLICKTIME 32
CONSTANT: SPI_SETMOUSEBUTTONSWAP 33
CONSTANT: SPI_SETICONTITLELOGFONT 34
CONSTANT: SPI_GETFASTTASKSWITCH 35
CONSTANT: SPI_SETFASTTASKSWITCH 36
CONSTANT: SPI_SETDRAGFULLWINDOWS 37
CONSTANT: SPI_GETDRAGFULLWINDOWS 38
CONSTANT: SPI_GETFILTERKEYS 50
CONSTANT: SPI_SETFILTERKEYS 51
CONSTANT: SPI_GETTOGGLEKEYS 52
CONSTANT: SPI_SETTOGGLEKEYS 53
CONSTANT: SPI_GETMOUSEKEYS 54
CONSTANT: SPI_SETMOUSEKEYS 55
CONSTANT: SPI_GETSHOWSOUNDS 56
CONSTANT: SPI_SETSHOWSOUNDS 57
CONSTANT: SPI_GETSTICKYKEYS 58
CONSTANT: SPI_SETSTICKYKEYS 59
CONSTANT: SPI_GETACCESSTIMEOUT 60
CONSTANT: SPI_SETACCESSTIMEOUT 61
CONSTANT: SPI_GETSOUNDSENTRY 64
CONSTANT: SPI_SETSOUNDSENTRY 65
! WINVER >= 0x0400
CONSTANT: SPI_GETNONCLIENTMETRICS 41
CONSTANT: SPI_SETNONCLIENTMETRICS 42
CONSTANT: SPI_GETMINIMIZEDMETRICS 43
CONSTANT: SPI_SETMINIMIZEDMETRICS 44
CONSTANT: SPI_GETICONMETRICS 45
CONSTANT: SPI_SETICONMETRICS 46
CONSTANT: SPI_SETWORKAREA 47
CONSTANT: SPI_GETWORKAREA 48
CONSTANT: SPI_SETPENWINDOWS 49
CONSTANT: SPI_GETSERIALKEYS 62
CONSTANT: SPI_SETSERIALKEYS 63
CONSTANT: SPI_GETHIGHCONTRAST 66
CONSTANT: SPI_SETHIGHCONTRAST 67
CONSTANT: SPI_GETKEYBOARDPREF 68
CONSTANT: SPI_SETKEYBOARDPREF 69
CONSTANT: SPI_GETSCREENREADER 70
CONSTANT: SPI_SETSCREENREADER 71
CONSTANT: SPI_GETANIMATION 72
CONSTANT: SPI_SETANIMATION 73
CONSTANT: SPI_GETFONTSMOOTHING 74
CONSTANT: SPI_SETFONTSMOOTHING 75
CONSTANT: SPI_SETDRAGWIDTH 76
CONSTANT: SPI_SETDRAGHEIGHT 77
CONSTANT: SPI_SETHANDHELD 78
CONSTANT: SPI_GETLOWPOWERTIMEOUT 79
CONSTANT: SPI_GETPOWEROFFTIMEOUT 80
CONSTANT: SPI_SETLOWPOWERTIMEOUT 81
CONSTANT: SPI_SETPOWEROFFTIMEOUT 82
CONSTANT: SPI_GETLOWPOWERACTIVE 83
CONSTANT: SPI_GETPOWEROFFACTIVE 84
CONSTANT: SPI_SETLOWPOWERACTIVE 85
CONSTANT: SPI_SETPOWEROFFACTIVE 86
CONSTANT: SPI_SETCURSORS 87
CONSTANT: SPI_SETICONS 88
CONSTANT: SPI_GETDEFAULTINPUTLANG 89
CONSTANT: SPI_SETDEFAULTINPUTLANG 90
CONSTANT: SPI_SETLANGTOGGLE 91
CONSTANT: SPI_GETWINDOWSEXTENSION 92
CONSTANT: SPI_SETMOUSETRAILS 93
CONSTANT: SPI_GETMOUSETRAILS 94
CONSTANT: SPI_SETSCREENSAVERRUNNING 97
ALIAS: SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
! WIN32_WINNT >= 0x0400 || WIN32_WINDOWS > 0x0400
CONSTANT: SPI_GETMOUSEHOVERWIDTH 98
CONSTANT: SPI_SETMOUSEHOVERWIDTH 99
CONSTANT: SPI_GETMOUSEHOVERHEIGHT 100
CONSTANT: SPI_SETMOUSEHOVERHEIGHT 101
CONSTANT: SPI_GETMOUSEHOVERTIME 102
CONSTANT: SPI_SETMOUSEHOVERTIME 103
CONSTANT: SPI_GETWHEELSCROLLLINES 104
CONSTANT: SPI_SETWHEELSCROLLLINES 105
CONSTANT: SPI_GETSHOWIMEUI 110
CONSTANT: SPI_SETSHOWIMEUI 111
! WINVER >= 0x0500
CONSTANT: SPI_GETMOUSESPEED 112
CONSTANT: SPI_SETMOUSESPEED 113
CONSTANT: SPI_GETSCREENSAVERRUNNING 114
CONSTANT: SPI_GETACTIVEWINDOWTRACKING 0x1000
CONSTANT: SPI_SETACTIVEWINDOWTRACKING 0x1001
CONSTANT: SPI_GETMENUANIMATION 0x1002
CONSTANT: SPI_SETMENUANIMATION 0x1003
CONSTANT: SPI_GETCOMBOBOXANIMATION 0x1004
CONSTANT: SPI_SETCOMBOBOXANIMATION 0x1005
CONSTANT: SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
CONSTANT: SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
CONSTANT: SPI_GETGRADIENTCAPTIONS 0x1008
CONSTANT: SPI_SETGRADIENTCAPTIONS 0x1009
CONSTANT: SPI_GETMENUUNDERLINES 0x100A
CONSTANT: SPI_SETMENUUNDERLINES 0x100B
CONSTANT: SPI_GETACTIVEWNDTRKZORDER 0x100C
CONSTANT: SPI_SETACTIVEWNDTRKZORDER 0x100D
CONSTANT: SPI_GETHOTTRACKING 0x100E
CONSTANT: SPI_SETHOTTRACKING 0x100F
CONSTANT: SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
CONSTANT: SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
CONSTANT: SPI_GETACTIVEWNDTRKTIMEOUT 0x2002
CONSTANT: SPI_SETACTIVEWNDTRKTIMEOUT 0x2003
CONSTANT: SPI_GETFOREGROUNDFLASHCOUNT 0x2004
CONSTANT: SPI_SETFOREGROUNDFLASHCOUNT 0x2005
! SystemParamInfo Flags
CONSTANT: SPIF_UPDATEINIFILE 1
CONSTANT: SPIF_SENDWININICHANGE 2
ALIAS: SPIF_SENDCHANGE SPIF_SENDWININICHANGE
TYPEDEF: HANDLE HRAWINPUT
: GET_RAWINPUT_CODE_WPARAM ( wParam -- n ) 0xff bitand ; inline
CONSTANT: RIM_INPUT 0
CONSTANT: RIM_INPUTSINK 1
CONSTANT: RIM_TYPEMOUSE 0
CONSTANT: RIM_TYPEKEYBOARD 1
CONSTANT: RIM_TYPEHID 2
STRUCT: RAWINPUTHEADER
{ dwType DWORD }
{ dwSize DWORD }
{ hDevice HANDLE }
{ wParam WPARAM } ;
TYPEDEF: RAWINPUTHEADER* PRAWINPUTHEADER
TYPEDEF: RAWINPUTHEADER* LPRAWINPUTHEADER
STRUCT: RAWMOUSE_BUTTONS_USBUTTONS
{ usButtonFlags USHORT }
{ usButtonData USHORT } ;
UNION-STRUCT: RAWMOUSE_BUTTONS
{ ulButtons ULONG }
{ usButtons RAWMOUSE_BUTTONS_USBUTTONS } ;
STRUCT: RAWMOUSE
{ usFlags USHORT }
{ uButtons RAWMOUSE_BUTTONS }
{ ulRawButtons ULONG }
{ lLastX LONG }
{ lLastY LONG }
{ ulExtraInformation ULONG } ;
TYPEDEF: RAWMOUSE* PRAWMOUSE
TYPEDEF: RAWMOUSE* LPRAWMOUSE
CONSTANT: RI_MOUSE_LEFT_BUTTON_DOWN 0x0001
CONSTANT: RI_MOUSE_LEFT_BUTTON_UP 0x0002
CONSTANT: RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004
CONSTANT: RI_MOUSE_RIGHT_BUTTON_UP 0x0008
CONSTANT: RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010
CONSTANT: RI_MOUSE_MIDDLE_BUTTON_UP 0x0020
: RI_MOUSE_BUTTON_1_DOWN ( -- n ) RI_MOUSE_LEFT_BUTTON_DOWN ; inline
: RI_MOUSE_BUTTON_1_UP ( -- n ) RI_MOUSE_LEFT_BUTTON_UP ; inline
: RI_MOUSE_BUTTON_2_DOWN ( -- n ) RI_MOUSE_RIGHT_BUTTON_DOWN ; inline
: RI_MOUSE_BUTTON_2_UP ( -- n ) RI_MOUSE_RIGHT_BUTTON_UP ; inline
: RI_MOUSE_BUTTON_3_DOWN ( -- n ) RI_MOUSE_MIDDLE_BUTTON_DOWN ; inline
: RI_MOUSE_BUTTON_3_UP ( -- n ) RI_MOUSE_MIDDLE_BUTTON_UP ; inline
CONSTANT: RI_MOUSE_BUTTON_4_DOWN 0x0040
CONSTANT: RI_MOUSE_BUTTON_4_UP 0x0080
CONSTANT: RI_MOUSE_BUTTON_5_DOWN 0x0100
CONSTANT: RI_MOUSE_BUTTON_5_UP 0x0200
CONSTANT: RI_MOUSE_WHEEL 0x0400
CONSTANT: MOUSE_MOVE_RELATIVE 0
CONSTANT: MOUSE_MOVE_ABSOLUTE 1
CONSTANT: MOUSE_VIRTUAL_DESKTOP 0x02
CONSTANT: MOUSE_ATTRIBUTES_CHANGED 0x04
CONSTANT: MOUSE_MOVE_NOCOALESCE 0x08
STRUCT: RAWKEYBOARD
{ MakeCode USHORT }
{ Flags USHORT }
{ Reserved USHORT }
{ VKey USHORT }
{ Message UINT }
{ ExtraInformation ULONG } ;
TYPEDEF: RAWKEYBOARD* PRAWKEYBOARD
TYPEDEF: RAWKEYBOARD* LPRAWKEYBOARD
CONSTANT: KEYBOARD_OVERRUN_MAKE_CODE 0xFF
CONSTANT: RI_KEY_MAKE 0
CONSTANT: RI_KEY_BREAK 1
CONSTANT: RI_KEY_E0 2
CONSTANT: RI_KEY_E1 4
CONSTANT: RI_KEY_TERMSRV_SET_LED 8
CONSTANT: RI_KEY_TERMSRV_SHADOW 0x10
STRUCT: RAWHID
{ dwSizeHid DWORD }
{ dwCount DWORD }
{ bRawData BYTE[1] } ;
TYPEDEF: RAWHID* PRAWHID
TYPEDEF: RAWHID* LPRAWHID
UNION-STRUCT: RAWINPUT_UNION
{ mouse RAWMOUSE }
{ keyboard RAWKEYBOARD }
{ hid RAWHID } ;
STRUCT: RAWINPUT
{ header RAWINPUTHEADER }
{ data RAWINPUT_UNION } ;
TYPEDEF: RAWINPUT* PRAWINPUT
TYPEDEF: RAWINPUT* LPRAWINPUT
: RAWINPUT_ALIGN ( x -- y )
cpu x86.32 = [ 4 ] [ 8 ] if align ; inline
: NEXTRAWINPUTBLOCK ( struct -- next-struct )
dup header>> dwSize>> swap <displaced-alien> RAWINPUT_ALIGN RAWINPUT memory>struct ; inline
CONSTANT: RID_INPUT 0x10000003
CONSTANT: RID_HEADER 0x10000005
CONSTANT: RIDI_PREPARSEDDATA 0x20000005
CONSTANT: RIDI_DEVICENAME 0x20000007
CONSTANT: RIDI_DEVICEINFO 0x2000000b
STRUCT: RID_DEVICE_INFO_MOUSE
{ dwId DWORD }
{ dwNumberOfButtons DWORD }
{ dwSampleRate DWORD }
{ fHasHorizontalWheel BOOL } ;
TYPEDEF: RID_DEVICE_INFO_MOUSE* PRID_DEVICE_INFO_MOUSE
STRUCT: RID_DEVICE_INFO_KEYBOARD
{ dwType DWORD }
{ dwSubType DWORD }
{ dwKeyboardMode DWORD }
{ dwNumberOfFunctionKeys DWORD }
{ dwNumberOfIndicators DWORD }
{ dwNumberOfKeysTotal DWORD } ;
TYPEDEF: RID_DEVICE_INFO_KEYBOARD* PRID_DEVICE_INFO_KEYBOARD
STRUCT: RID_DEVICE_INFO_HID
{ dwVendorId DWORD }
{ dwProductId DWORD }
{ dwVersionNumber DWORD }
{ usUsagePage USHORT }
{ usUsage USHORT } ;
TYPEDEF: RID_DEVICE_INFO_HID* PRID_DEVICE_INFO_HID
UNION-STRUCT: RID_DEVICE_INFO_UNION
{ mouse RID_DEVICE_INFO_MOUSE }
{ keyboard RID_DEVICE_INFO_KEYBOARD }
{ hid RID_DEVICE_INFO_HID } ;
STRUCT: RID_DEVICE_INFO
{ cbSize DWORD }
{ dwType DWORD }
{ data RID_DEVICE_INFO_UNION } ;
TYPEDEF: RID_DEVICE_INFO* PRID_DEVICE_INFO
TYPEDEF: RID_DEVICE_INFO* LPRID_DEVICE_INFO
STRUCT: RAWINPUTDEVICE
{ usUsagePage USHORT }
{ usUsage USHORT }
{ dwFlags DWORD }
{ hwndTarget HWND } ;
TYPEDEF: RAWINPUTDEVICE* PRAWINPUTDEVICE
TYPEDEF: RAWINPUTDEVICE* LPRAWINPUTDEVICE
TYPEDEF: RAWINPUTDEVICE* PCRAWINPUTDEVICE
CONSTANT: RIDEV_REMOVE 0x00000001
CONSTANT: RIDEV_EXCLUDE 0x00000010
CONSTANT: RIDEV_PAGEONLY 0x00000020
CONSTANT: RIDEV_NOLEGACY 0x00000030
CONSTANT: RIDEV_INPUTSINK 0x00000100
CONSTANT: RIDEV_CAPTUREMOUSE 0x00000200
CONSTANT: RIDEV_NOHOTKEYS 0x00000200
CONSTANT: RIDEV_APPKEYS 0x00000400
CONSTANT: RIDEV_EXINPUTSINK 0x00001000
CONSTANT: RIDEV_DEVNOTIFY 0x00002000
CONSTANT: RIDEV_EXMODEMASK 0x000000F0
: RIDEV_EXMODE ( mode -- x ) RIDEV_EXMODEMASK bitand ; inline
CONSTANT: GIDC_ARRIVAL 1
CONSTANT: GIDC_REMOVAL 2
: GET_DEVICE_CHANGE_WPARAM ( wParam -- x ) 0xffff bitand ; inline
STRUCT: RAWINPUTDEVICELIST
{ hDevice HANDLE }
{ dwType DWORD } ;
TYPEDEF: RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST
CONSTANT: CCHFORMNAME 32
CONSTANT: CDS_UPDATEREGISTRY 0x00000001
CONSTANT: CDS_TEST 0x00000002
CONSTANT: CDS_FULLSCREEN 0x00000004
CONSTANT: CDS_GLOBAL 0x00000008
CONSTANT: CDS_SET_PRIMARY 0x00000010
CONSTANT: CDS_RESET 0x40000000
CONSTANT: CDS_SETRECT 0x20000000
CONSTANT: CDS_NORESET 0x10000000
CONSTANT: DISP_CHANGE_SUCCESSFUL 0
CONSTANT: DISP_CHANGE_RESTART 1
CONSTANT: DISP_CHANGE_FAILED -1
CONSTANT: DISP_CHANGE_BADMODE -2
CONSTANT: DISP_CHANGE_NOTUPDATED -3
CONSTANT: DISP_CHANGE_BADFLAGS -4
CONSTANT: DISP_CHANGE_BADPARAM -5
STRUCT: DEVMODE
{ dmDeviceName TCHAR[CCHDEVICENAME] }
{ dmSpecVersion WORD }
{ dmDriverVersion WORD }
{ dmSize WORD }
{ dmDriverExtra WORD }
{ dmFields DWORD }
{ dmOrientation short }
{ dmPaperSize short }
{ dmPaperLength short }
{ dmPaperWidth short }
{ dmScale short }
{ dmCopies short }
{ dmDefaultSource short }
{ dmPrintQuality short }
{ dmColor short }
{ dmDuplex short }
{ dmYResolution short }
{ dmTTOption short }
{ dmCollate short }
{ dmFormName TCHAR[CCHFORMNAME] }
{ dmLogPixels WORD }
{ dmBitsPerPel DWORD }
{ dmPelsWidth DWORD }
{ dmPelsHeight DWORD }
{ dmDisplayFlags DWORD }
{ dmDisplayFrequency DWORD }
{ dmiCMMethod DWORD }
{ dmICMIntent DWORD }
{ dmMediaType DWORD }
{ dmDitherType DWORD }
{ dmReserved1 DWORD }
{ dmReserved2 DWORD }
{ dmPanningWidth DWORD } ;
! union { DWORD dmDisplayFlags; DWORD dmNup; } ;
! union {
! struct {
! short dmOrientation;
! short dmPaperSize;
! short dmPaperLength;
! short dmPaperWidth;
! short dmScale;
! short dmCopies;
! short dmDefaultSource;
! short dmPrintQuality;
! } ;
! struct {