如何使用 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'
相同,并且它甚至按下了按钮,所以我现在非常困惑。
补充说明:
- 现在我只是将控件设置为 pynput 为 minecraft 提供的内容以使我的宏正常工作,但我更希望能够在宏之外使用按钮。
- Pynput 的点击和滚动似乎工作正常。
- 我的宏没有使用鼠标,但如果您了解鼠标,这里有一个关于它的 Whosebug 问题:How to control the mouse in Minecraft using Python?
- 对于任何想知道的人,我正在制作这个宏,以便在我使用水桶移除海洋中的水域后快速清空水桶
虽然我对此可能是错误的, 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)
我正在尝试使用 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'
相同,并且它甚至按下了按钮,所以我现在非常困惑。
补充说明:
- 现在我只是将控件设置为 pynput 为 minecraft 提供的内容以使我的宏正常工作,但我更希望能够在宏之外使用按钮。
- Pynput 的点击和滚动似乎工作正常。
- 我的宏没有使用鼠标,但如果您了解鼠标,这里有一个关于它的 Whosebug 问题:How to control the mouse in Minecraft using Python?
- 对于任何想知道的人,我正在制作这个宏,以便在我使用水桶移除海洋中的水域后快速清空水桶
虽然我对此可能是错误的,
如果您可以使用与 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)