NOTICE: You must have a ps/2 keyboard connected to your PC if you test on win10 or later, otherwise this sample won't works!
提供win10系统需要ps/2接口的键盘。所以我们掏出老古董ps/2键盘设备。
ps/2接口:
新建keyboardEmulation.py
import pywinio
import time
import atexit
# KeyBoard Commands
# Command port
KBC_KEY_CMD = 0x64
# Data port
KBC_KEY_DATA = 0x60
g_winio = None
def get_winio():
global g_winio
if g_winio is None:
g_winio = pywinio.WinIO()
def __clear_winio():
global g_winio
g_winio = None
atexit.register(__clear_winio)
return g_winio
def wait_for_buffer_empty():
'''
Wait keyboard buffer empty
'''
winio = get_winio()
dwRegVal = 0x02
while (dwRegVal & 0x02):
dwRegVal = winio.get_port_byte(KBC_KEY_CMD)
def key_down(scancode):
winio = get_winio()
wait_for_buffer_empty();
winio.set_port_byte(KBC_KEY_CMD, 0xd2);
wait_for_buffer_empty();
winio.set_port_byte(KBC_KEY_DATA, scancode)
def key_up(scancode):
winio = get_winio()
wait_for_buffer_empty();
winio.set_port_byte( KBC_KEY_CMD, 0xd2);
wait_for_buffer_empty();
winio.set_port_byte( KBC_KEY_DATA, scancode | 0x80);
def key_press(scancode, press_time = 0.2):
key_down( scancode )
time.sleep( press_time )
key_up( scancode )
尝试使用: