有没有一种方法可以发送/按python中的NUMPAD键?

时间:2019-01-08 16:50:24

标签: python input keyboard mouse emulation

到目前为止,我已经尝试使用pyautogui发送它们,但是它不起作用。我希望,因为在源代码中它显示了这一点:

'num multiply': '*',
'num divide': '/',
'num add': '+',
'num plus': '+',
'num minus': '-',
'num sub': '-',
'num enter': 'enter',
'num 0': '0',
'num 1': '1',
'num 2': '2',
'num 3': '3',
'num 4': '4',
'num 5': '5',
'num 6': '6',
'num 7': '7',
'num 8': '8',
'num 9': '9',

但是,除了您可能期望的以外,它没有做任何其他事情。它将执行常规数字,而不执行特定于小键盘的数字。

pyautogui.press("num 3")
例如,

根本不起作用,并且

pyautogui.press("3")

只发送一个3

我也尝试过使用win32api的SendKeys,但是根本没有列出numkey,并且在那边查看源代码,看起来好像已经包含了它们(https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes),但是不支持在Python实现中...所以这不起作用:

>>> import win32api
>>> import win32com.client
>>> shell = win32com.client.Dispatch("WScript.Shell")
>>> shell.SendKeys("{NUMPAD7}")

返回

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024809), None)

我需要能够使用数字键盘键,因为我有一个使用模拟鼠标的设置,需要通过这些键以编程方式进行控制。我想出了一种解决方法,可以通过一种有效的按键组合(可以与SendKeys一起发送)来禁用和重新启用仿真(我正在使用NeatMouse),因为您很少同时键入和使用鼠标,但是我仍然很想知道我想做的事是否真的可以直接实现。

重申一下,我想直接通过python按下NUMPAD键。

谢谢!

1 个答案:

答案 0 :(得分:0)

基于官方文档:PyAutoGUI - Keyboard Control Functions 似乎您的代码无法正常工作的唯一问题是“ num”和“ 3”之间的空格。如果文档正确,则只能更改:

pyautogui.press("num 3")

收件人:

pyautogui.press("num3")