使用Python将字符串粘贴到Gnome中选定的文本字段中

2024-05-20 09:38:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要编写一个Python脚本,将已定义的字符串粘贴到当前执行的程序中的选定文本字段中(不要更改程序的源代码)。它应该表现得像我按下了键盘上的键。你知道吗

我看到过这个Python simulate keydown,最终这就是我想做的事情,但问题是我想输入的字符不在标准键盘布局中。你知道吗

那么,有没有办法做到这一点?你知道吗


Tags: 字符串文本程序脚本标准定义源代码粘贴
2条回答

因此,这里是我的最终解决方案(基于前面的答案并使用python-uinput)。它通过按Ctrl+Shift+U,然后键入符号的十六进制代码来使用键入Unicode符号的功能。你知道吗

下面是我为它编写的Python脚本:

输入,时间

allKeys = [uinput.KEY_LEFTSHIFT, uinput.KEY_LEFTCTRL, uinput.KEY_SPACE, uinput.KEY_U,
          uinput.KEY_A, uinput.KEY_B, uinput.KEY_C, uinput.KEY_D,
          uinput.KEY_E, uinput.KEY_F, uinput.KEY_0, uinput.KEY_1,
          uinput.KEY_2, uinput.KEY_3, uinput.KEY_4, uinput.KEY_5,
          uinput.KEY_6, uinput.KEY_7, uinput.KEY_8, uinput.KEY_9]

device = uinput.Device(allKeys)

sleepInterval = 0.003

def printChar(charCode):
  time.sleep(sleepInterval)
  device.emit(uinput.KEY_LEFTSHIFT, 1);
  device.emit(uinput.KEY_LEFTCTRL, 1);
  device.emit_click(uinput.KEY_U);
  device.emit(uinput.KEY_LEFTSHIFT, 0);
  device.emit(uinput.KEY_LEFTCTRL, 0);
  time.sleep(sleepInterval)

  for symbol in charCode:
    device.emit_click(uinput._chars_to_events(symbol)[0]);
    time.sleep(sleepInterval)

  device.emit_click(uinput.KEY_SPACE);
  time.sleep(sleepInterval)

charString = "string that will be typed"
for char in charString:
  printChar('{:04x}'.format(ord(char)))

你可能想看一下。它允许您通过/dev/uinput设备注入击键、按钮、鼠标移动、操纵杆移动等。你知道吗

在Python中,您可以执行以下操作:

keys = [uinput.KEY_X, uinput.KEY_Y, uinput.KEY_Z]
device = uinput.Device(keys)

...

# Simulate key Y being pressed.
device.emit(uinput.KEY_Y, 1)

当然,你需要投入:

pip install python-uinput

如果没有,您可能需要安装uinput设备。你知道吗

(好吧,我想这只是Linux的一个解决方案,不幸的是,我没有问你的平台是什么)。你知道吗

相关问题 更多 >