gpt4 book ai didi

python - 打字!带有 pyautogui 的字符

转载 作者:行者123 更新时间:2023-12-01 06:37:28 32 4
gpt4 key购买 nike

这可以模拟击键:

import pyautogui
pyautogui.typewrite('hello world!', interval=0.1)

除了:

  • 它写的是 hello world§(使用 FR 键盘布局)
  • 它会写入hello world(使用 EN 键盘布局)

当然,所需的输出应该是hello world!

有解决办法吗?

注意:我认为这与 Input unicode string with pyautogui 不是同一个问题。因为这里它不是非 ASCII 字符,但无论如何,复制/粘贴黑客的主要答案在我的情况下不起作用,因为我真的希望在每次按键之间有 100 毫秒的暂停来缓慢打字。

以下是重现错误的方法:

  • Windows 7 x64
  • Python 3.6 或 Python 2.7
  • pyautogui 0.9.41 或 0.9.48
  • 开头提到的两行代码

最佳答案

它不会将 ascii char ! 发送到程序 - 它将键盘的代码发送到系统(可能是键 1 的代码,在标准布局中用于 char !),系统决定发送给程序的字符。如果您的系统有非标准布局,那么系统可能会发送错误的字符。

可能只有使用剪贴板才能正确发送。如果您使用剪贴板复制单个字符并在字符之间等待0.1s,那么您可以获得类似的结果。

import time
import pyperclip
import pyautogui

time.sleep(2)

for char in 'Hello World!':
pyperclip.copy(char)
pyautogui.hotkey('ctrl', 'v', interval=0.1)
<小时/>

顺便说一句:使用print(pyautogui.__file__)你可以找到包含源代码的文件夹,在文件_pyautogui_win.py中你可以看到什么它在 Windows 中使用的关键代码。

您还应该看到分配给字符的键代码

窗口:

print(pyautogui._pyautogui_win.keyboardMapping)

Linux:

print(pyautogui._pyautogui_x11.keyboardMapping)

也许如果您更改 keyboardMapping 中的值,那么它会正确发送,但对于每个布局,您都必须设置不同的值。

例如在 Linux 上

import pyautogui

#pyautogui._pyautogui_win.keyboardMapping['!'] = 12
pyautogui._pyautogui_x11.keyboardMapping['!'] = 12

pyautogui.typewrite('!!!')

给我###而不是!!!

关于python - 打字!带有 pyautogui 的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59604162/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com