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!python
提供win10系統須要ps/2接口的鍵盤。因此咱們掏出老古董ps/2鍵盤設備。linux
ps/2接口:git
新建keyboardEmulation.pygithub
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 )
每一個鍵對應的scancodethis
嘗試使用:code