X11

如何使用 xdotool 輸入任何內容?

  • June 4, 2021

我有一些可列印的 ASCII 字元的輸入欄位,不包括空格,我想將其傳遞給輸入欄位,就像xdotool通過鍵盤輸入一樣。

我的嘗試:

  • echo "type lol lol" | xdotool -吃掉中間的空間,所以它鍵入lollol而不是lol lol.
  • echo "type 'lol lol'" | xdotool -正確lol lol輸入,但不能'在中間輸入。即echo "type 'lol ' lol'" | xdotool -不是 type lol ' lol,而是 types lol lol'

我的問題:

  • 如何使用xdotool讓它輸入任意字元而不會出現上述問題?
  • 如果xdotool還不夠,有沒有更好的替代工具?

**更新:**我關心這個的原因是因為我將它用於我正在實施的密碼管理器。我認為最好通過鍵盤輸入模擬輸入密碼,而不是通過某些共享剪貼板複製粘貼,其他程序可能會考慮竊取密碼。

我不明白為什麼你必須echo通過命令stdin,你可以直接使用命令。以下對我有用(使用測試xev):

$ xdotool search Event
Defaulting to search window name, class, and classname
37748737
$ xdotool type --window 37748737 "'"
$ xdotool type --window 37748737 " "

如果您堅持通過 傳遞命令stdin,那麼顯然xdotool會進行自己的解析,因此您必須轉義雙引號:

$ echo "type --window 37748737 \"' \"" | xdotool -

為了更好地控制,您還可以使用key以空格分隔的鍵符:

$ xdotool key --window 37748737 space a apostrophe

對於您想要的任何類型的自動化,這通常就足夠了。請注意,xdotool模擬按鍵和釋放,而不是字元

您尚未描述您的案例(請編輯您的問題並這樣做,並閱讀有關XY 問題),但如果出於某種原因您希望將其他來源的變數文本粘貼到某個應用程序中,請考慮使用剪貼板(通過xclip) , 並xdotool在輸入欄位中模擬粘貼操作 - 這將比嘗試將任意文本轉換為適當的按鍵更可靠。

引用自:https://unix.stackexchange.com/questions/652265