模擬鍵盤輸入首先要用到一個API函數:keybd_event。我現在要實現模擬ESC鍵按鈕,通過下面的鍵值對照表可知ESC鍵的鍵碼是27,然后我在下面實現了一個簡單的例子。
附:常用模擬鍵的鍵值對照表。
鍵盤鍵與虛擬鍵碼對照表
字母和數字鍵 數字小鍵盤的鍵 功能鍵 其它鍵
鍵 鍵碼 鍵 鍵碼 鍵 鍵碼 鍵 鍵碼
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Control 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 -- -- End 35
N 78 - 109 -- -- Home 36
O 79 . 110 -- -- Left Arrow 37
P 80 / 111 -- -- Up Arrow 38
Q 81 -- -- -- -- Right Arrow 39
R 82 -- -- -- -- Down Arrow 40
S 83 -- -- -- -- Insert 45
T 84 -- -- -- -- Delete 46
U 85 -- -- -- -- Help 47
V 86 -- -- -- -- Num Lock 144
W 87
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
----------------------------------
例子:using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class KeybdEvent : MonoBehaviour {
[DllImport("user32.dll", EntryPoint = "keybd_event")]
public static extern void Keybd_event(
byte bvk,//虛擬鍵值 ESC鍵對應的是27
byte bScan,//0
int dwFlags,//0為按下,1按住,2釋放
int dwExtraInfo//0
);
void Start()
{
Keybd_event(27,0,0,0);
Keybd_event(27, 0, 1, 0);
Keybd_event(27, 0, 2, 0);
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
print("按下了ESC鍵");
}
if (Input.GetKey(KeyCode.Escape))
{
print("按住了ESC鍵");
}
if(Input.GetKeyUp(KeyCode.Escape))
{
print("松開了ESC鍵");
}
}
}