xdotool 的 type 指令吃字符

xdotool 的 type 指令吃字符

每當我按下簡單的組合鍵時,我都會嘗試讓 xmonad 鍵入常見的字元序列。此問題的一個例子就是簡單地輸入我的電子郵件地址。

對我來說,xmonad 的設定檔是這樣的:

import XMonad
import XMonad.Config.Gnome (gnomeConfig)
import XMonad.Util.CustomKeys (customKeys)
import XMonad.Util.EZConfig

main = xmonad $ gnomeConfig {
  keys = customKeys delKeys insKeys,
  logHook = return ()
  }
  where
    -- Remap mod-p to dmenu and mod-[sd] to swapping xinerama screens.
    delKeys :: XConfig l -> [(KeyMask, KeySym)]
    delKeys XConfig { modMask = modMask } =
      [ (modMask, xK_p), (modMask, xK_w), (modMask, xK_e) ]

    insertEmailAddress :: KeyMask -> [((KeyMask, KeySym), X())]
    insertEmailAddress modMask = [ ((noModMask, xK_Menu), spawn "xdotool type [email protected]") ]

    insKeys :: XConfig l -> [((KeyMask, KeySym), X())]
    insKeys XConfig { modMask = modMask } = insertEmailAddress modMask

然而,當我按下選單鍵(位於鍵盤的右下角)時,我只能看到後半部分左右。喜歡:[email protected][email protected]。列印從哪裡開始是完全不可預測的。

xdotool我透過將命令更改為 找到了解決方法。這似乎有效,但我不知道為什麼。有什麼想法嗎?xdotool sleep 0.1 type [email protected]

使用 xmonad 0.11 和 xdotool 版本 3.20140217.1

答案1

這個--sync選項正是我想要的!

但是,該--sync選項僅存在於一組特定的 get 或 search 命令中。

解決方案結果是:xdotool getwindowfocus windowfocus --sync type [email protected]

getwindowfocus這裡發生的事情是,我們首先透過(getactivewindow如果另一個不起作用,則可以選擇)來獲得聚焦的視窗。

我們所做的一切不同就是獲取活動視窗並將其設定為相同的內容。關鍵區別在於存在--sync強制xdotool等待直到應用上一個命令的選項。

因此,我們保證我們專注於特定視窗並且能夠鍵入命令。

答案2

您可能需要使用以下命令增加擊鍵之間的延遲--delay(預設值為 12 毫秒):

xdotool type --delay 100 [email protected]

相關內容