Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为hidapi授予读取键盘的权限,就像macOS中的pynput一样_Python_Macos_Pynput_Hidapi - Fatal编程技术网

Python 为hidapi授予读取键盘的权限,就像macOS中的pynput一样

Python 为hidapi授予读取键盘的权限,就像macOS中的pynput一样,python,macos,pynput,hidapi,Python,Macos,Pynput,Hidapi,所以我一直在尝试读取任何按键,但它不读取任何与键盘输入相关的内容 我试图监听的键盘有一个特殊的键来改变图层,这是下面脚本打印的唯一键。这是因为它不把它当作键盘键 import hid # Get devices device_list = hid.enumerate(VENDOR_ID, PRODUCT_ID) ctrl_device = [ d for d in device_list if d['interface_number'] == 1 ] d = ctrl_device[0] # F

所以我一直在尝试读取任何按键,但它不读取任何与键盘输入相关的内容

我试图监听的键盘有一个特殊的键来改变图层,这是下面脚本打印的唯一键。这是因为它不把它当作键盘键

import hid
# Get devices
device_list = hid.enumerate(VENDOR_ID, PRODUCT_ID)
ctrl_device = [ d for d in device_list if d['interface_number'] == 1 ]
d = ctrl_device[0] # For testing purposes I only want to try with one
h = hid.device()
h.open_path(d['path'])

while True:
    result = h.read(64)
    if result:
        print('read: {}'.format(result))
这是由于macOS的限制

我发现
pynput
有效。它请求
输入监控
权限,并按下按键

以下是
pynput
文档所说的内容:

macOS最新版本的macOS限制了用户对键盘的监控 安全原因。因此,必须满足以下条件之一:

进程必须以root用户身份运行。你的申请必须是白名单 在“启用辅助设备的访问”下。请注意,这可能会 要求您打包应用程序,否则整个 Python安装必须是白名单。关于莫哈韦之后的版本, 如果正在运行,您可能还需要将终端应用程序列入白名单 您的脚本来自终端。请注意,这不适用于 监控鼠标或轨迹板

这是另一个脚本:

from pynput.keyboard import Listener
def on_press(key):  # The function that's called when a key is pressed
    print("Key pressed: {0}".format(key))

def on_release(key):  # The function that's called when a key is released
    print("Key released: {0}".format(key))

with Listener(on_press=on_press, on_release=on_release, supress=False) as listener:
    listener.join()  # Join the listener thread to the main thread to keep waiting for key
一旦请求权限并授予这些权限,
pynput
就可以工作,但它不会显示特殊的更改层密钥,这与使用
hidapi

有没有一种方法可以像
pynput
hidapi
一样请求权限? 或者是否有方法在
pynput
上注册更改层事件

hidapi
如何控制输入