
我目前正在開發一個“autotype”腳本經過。為此,我需要輸入用戶名,按“Tab”,然後輸入密碼。
為了進行測試,我使用以下程式碼:
WID=$(xdotool selectwindow)
xdotool windowactivate $WID type --delay 100 "Hello World"
xdotool windowactivate $WID key --clearmodifiers Tab
xdotool windowactivate $WID type --delay 100 "Hello World"
然後我選擇kate
作為窗口,但輸出Hello World8Hello World
不是Hello World Hello World
.我究竟做錯了什麼?
編輯:
作為解決方法,您可以使用套件xte 'key Tab'
中的內容xautomation
。但最初的問題仍然存在。
答案1
xdotool
正在尋找一個“X 鍵符號”字串,但關於如何確定它的文檔很簡潔:
一般來說,任何有效的 X Keysym 字串都可以使用。多個鍵以“+”分隔。 「alt」、「ctrl」、「shift」、「super」和「meta」存在別名,它們都對應到 Foo_L,例如
Alt_L
和Control_L
, ETC。
我使用了諸如0xff09
(的鍵碼標籤)在 xterm 上開發頁面時特殊鍵。透過這種方法,我能夠發送鍵盤配置中定義的所有按鍵。
我的命令列不同。僅測試腳本的相關部分就顯示了這一點:
KEY=0xff09 # XK_tab
sendkey() {
echo "** $1"
xdotool key --window $ID $1 2>/dev/null
}
sendkey "$KEY"
你有問題的命令是
xdotool windowactivate $ID key --clearmodifiers $1 2>/dev/null
xdotool
的手冊建議可能有必要添加一個--sync
選項,並暗示命令連結將起作用(以便windowactivate
和key
連結在一起),但該組合對我來說也不起作用。但--window
的選項key
確實有效:
xdotool key --window $ID --clearmodifiers $1 2>/dev/null
答案2
我知道這有點舊,但也許這會對某人有所幫助..例如,您也可以使用 KP_Tab 或 KP_Enter