winio的包装库
rabird.winio的Python项目详细描述
用法
- 键盘模拟
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!
import rabird.winio import time import atexit # KeyBoard Commands # Command port KBC_KEY_CMD = 0x64 # Data port KBC_KEY_DATA = 0x60 __winio = None def __get_winio(): global __winio if __winio is None: __winio = rabird.winio.WinIO() def __clear_winio(): global __winio __winio = None atexit.register(__clear_winio) return __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 ) # Press 'A' key # Scancodes references : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html key_press(0x1E)
特权要求
winio需要管理权限才能正常运行。这可以通过以下方法实现:
- 从作为本地系统运行的服务中使用winio(必须显式启用se_load_driver_name权限)。
- 在请求权限提升的应用程序中嵌入清单文件。
- 要求用户在启动应用程序时选择“以管理员身份运行”选项。
包含的C示例演示如何使用嵌入的清单文件来请求权限提升。
64位系统上的驱动程序签名要求
64位版本的Windows只加载由公共CA(如VeriSign、Thawte等)颁发的代码签名证书签名的设备驱动程序。除非获得并使用代码签名证书对此文件进行签名,否则不能在生产计算机上部署winio64.sys。winio64.sys的捆绑副本使用自签名证书进行签名,并且只能在Windows以特殊“测试”模式运行的开发/测试计算机上使用。要使用捆绑版本的winio64.sys,需要执行以下步骤:
- 右键单击图标并单击“以管理员身份运行”,打开提升的命令窗口。
- 键入以下命令以启用测试签名:
bcdedit.exe /set TESTSIGNING ON
- 重新启动计算机
有关Windows驱动程序签名要求的详细信息,请参阅http://www.microsoft.com/whdc/winlogo/drvsign/kmcs_walkthrough.mspx。
许可证
这个库使用了license.txt中已经描述过的mit许可证
license-winio.txt中描述了WinIO库的许可证
更改
0.2.6(2018-07-20)
- 声明此库重命名为pywinio!
0.2.5(2018-07-20)
- 删除了对python 2.x的支持
0.2.4(2018-06-01)
- AppVeyor支持的自动部署
0.2.0(2018-01-21)
- 取决于winiobinary项目,因此我们不需要在setup.py期间下载winio二进制文件
0.1.9(2015-12-02)
- 由于缺少rabird_bootstrap.py,无法从打包的zip文件安装
0.1.8(2015-09-09)
- 修复了不使用64位操作系统的问题
0.1.0(2015-08-18)
- 修复了不使用python3的问题
0.0.9(2015-08-18)
- 初始版本