我需要編寫一個Python腳本來將定義的字符串粘貼到當前執行的程序中的選定文本字段中(不要更改程序的源代碼)。它應該像我在鍵盤上按下鍵一樣。將字符串粘貼到Gnome中使用Python的選定文本字段中
我已經看到了這個Python simulate keydown,最終這就是我想要做的事,但問題是我需要輸入字符不是標準的鍵盤佈局。
那麼,有沒有辦法做到這一點?
我需要編寫一個Python腳本來將定義的字符串粘貼到當前執行的程序中的選定文本字段中(不要更改程序的源代碼)。它應該像我在鍵盤上按下鍵一樣。將字符串粘貼到Gnome中使用Python的選定文本字段中
我已經看到了這個Python simulate keydown,最終這就是我想要做的事,但問題是我需要輸入字符不是標準的鍵盤佈局。
那麼,有沒有辦法做到這一點?
所以,這裏是我的最終解決方案(基於以前的答案和使用python-uinput)。它使用鍵入Unicode符號的功能,方法是按Ctrl + Shift + U,然後鍵入符號的十六進制代碼。
下面是Python腳本,我寫它:
進口uinput,時間
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)
你需要得到uinput,當然:
pip install python-uinput
而且你可能需要安裝uinput設備,如果你不沒有。 (好吧,這只是Linux的解決方案,我懷疑,不幸的是,我沒有問你的平臺是什麼)。