xdotool 列印 8 而不是 Tab

xdotool 列印 8 而不是 Tab

我目前正在開發一個“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_LControl_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選項,並暗示命令連結將起作用(以便windowactivatekey連結在一起),但該組合對我來說也不起作用。但--window的選項key確實有效:

xdotool key --window $ID --clearmodifiers $1 2>/dev/null

答案2

我知道這有點舊,但也許這會對某人有所幫助..例如,您也可以使用 KP_Tab 或 KP_Enter

相關內容