如何使用 Pynput 控制 Minecraft 中的键盘

How to control keyboard in Minecraft with Pynput

我正在尝试使用 pynput 在 Minecraft 中创建一个宏,但 pynput 似乎没有按下键盘上的正确按钮。我知道这一点是因为当我 运行(代码片段 1)设置 Hotbar 插槽 3 的控件时,它显示为一个奇怪的字符而不是数字。 (见图)有没有办法让 pynput 按下正确的按钮?

# Code snippet 1
import time
from pynput.keyboard import Controller

time.sleep(7) # this is just so I have time to switch to minecraft before it activates

board = Controller()
board.press('2')
time.sleep(.1)
board.release('2')

代替'2'我也尝试了KeyCode(49)并得到了相同的结果。它被计算机正确识别的,如keycode.info和记事本所示。
当我将 '2' 替换为 'e' 时,Minecraft 将其识别为与 '2' 相同,并且它甚至按下了按钮,所以我现在非常困惑。

补充说明:

虽然我对此可能是错误的, I believe that pynput outputs the characters as win32 keycodes, which while they work for programs like notepad or keycode.info,但似乎不适用于设置 minecraft 控件。

如果您可以使用与 pynput 不同的库,我发现 pywinauto 可以正确地将密钥输入到 minecraft 中。

from pywinauto import keyboard
import time

time.sleep(3) #A short wait to allow me to switch to minecraft

keyboard.send_keys("{2 down}" "{2 up}") #replace 2 with whatever key you want to press

以上是我在测试时使用的代码,我发现它在尝试设置控件时工作正常。

我认为最简单的方法是使用 pydirectinput。

pydirectinput 与 pyautogui 完全一样。只是它的名字改变了,它可以与使用 DirectX 的游戏一起工作(我的世界,roblox)

要使用它,你可以这样做

import pydirectinput
import pyautogui
import time

time.sleep(2)#so u can switch to your game

pydirectinput.keyDown('v')
time.sleep(0.5)
pydirectinput.keyUp('v)