blob: cfd7f3c044ac6c62ab550d36c8460392b83e2340 (
plain)
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
|
#include <windows.h>
#include <winuser.h>
#include <stdio.h>
#include "KeySend.h"
CKeySend::CKeySend()
{
}
CKeySend::~CKeySend()
{
}
void CKeySend::SendKeyDown(unsigned char bVk)
{
BYTE bScan = LOBYTE(::MapVirtualKey(bVk, 0));
DWORD dwFlags = (IsVkExtended(bVk) ? KEYEVENTF_EXTENDEDKEY : 0 );
KeyboardEvent(bVk,bScan,dwFlags);
}
void CKeySend::SendKeyUp(unsigned char bVk)
{
BYTE bScan = LOBYTE(::MapVirtualKey(bVk, 0));
DWORD dwFlags = (IsVkExtended(bVk) ? KEYEVENTF_EXTENDEDKEY : 0 ) | KEYEVENTF_KEYUP;
KeyboardEvent(bVk,bScan,dwFlags);
}
void CKeySend::KeyboardEvent(unsigned char bVk, unsigned char bScan, unsigned long dwFlags)
{
::keybd_event(bVk, bScan, dwFlags, 0);
}
bool CKeySend::IsVkExtended(unsigned char bVk)
{
bool bExtended = false;
if( (bVk == VK_UP ) ||
(bVk == VK_DOWN ) ||
(bVk == VK_LEFT ) ||
(bVk == VK_RIGHT ) ||
(bVk == VK_HOME ) ||
(bVk == VK_END ) ||
(bVk == VK_PRIOR ) ||
(bVk == VK_NEXT ) ||
(bVk == VK_INSERT ) ||
(bVk == VK_DELETE ) ||
(bVk == VK_UP ) )
{
bExtended = true;
}
return bExtended;
}
int CKeySend::MapDfbKeyEventToVK(unsigned short symbol)
{
switch(symbol)
{
case 0xF000 : return VK_LEFT;
case 0xF001 : return VK_RIGHT;
case 0xF002 : return VK_UP;
case 0xF003 : return VK_DOWN;
case 0xF00b : return VK_RETURN;
case 0xF046 : return VK_PRIOR; //p+
case 0xF047 : return VK_NEXT; //p-
case 0xF050 : return -1; // play
case 0xF05A : return -1; // FF
case 0xF059 : return -1; // rew
case 0xF052 : return -1; // stop
case 0xF056 : return -1; // REC
case 0xF05B : return VK_BACK; // back key
case 0xF042 : return -1; // Red
case 0xF043 : return -1; // Green
case 0xF045 : return -1; // Blue
case 0xF011 : return -1; // options
case 0xF032 : return -1; // teletext
case 0xF014 : return -1; // info
case 0x0030 : return 0x30; // 0-9
case 0x0031 : return 0x31; // 0-9
case 0x0032 : return 0x32; // 0-9
case 0x0033 : return 0x33; // 0-9
case 0x0034 : return 0x34; // 0-9
case 0x0035 : return 0x35; // 0-9
case 0x0036 : return 0x36; // 0-9
case 0x0037 : return 0x37; // 0-9
case 0x0038 : return 0x38; // 0-9
case 0x0039 : return 0x39; // 0-9
default:
return -1;
}
return -1;
}
|