waf*_*cat 5 command-line keyboard shortcut-keys xmonad xdotool
每当我按下一个简单的组合键时,我都试图让 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 thisismyemail@example.com") ]
insKeys :: XConfig l -> [((KeyMask, KeySym), X())]
insKeys XConfig { modMask = modMask } = insertEmailAddress modMask
Run Code Online (Sandbox Code Playgroud)
但是,当我按下菜单键(它在键盘的右下角)时,我只能得到后一半左右。如:yemail@example.com
或isismyemail@example.com
。打印将从哪里开始是完全不可预测的。
我通过将xdotool
命令更改为xdotool sleep 0.1 type thisismyemail@example.com
. 这似乎没有失败,但我不知道为什么。有什么想法吗?
使用 xmonad 0.11 和 xdotool 版本 3.20140217.1
这个--sync
选项正是我想要的!
但是,该--sync
选项仅存在于一组特定的 get 或 search 命令中。
解决方案结果是:xdotool getwindowfocus windowfocus --sync type thisismyemail@example.com
getwindowfocus
这里发生的事情是,我们首先通过(getactivewindow
如果另一个不起作用,则可以选择)获得聚焦的窗口。
我们所做的一切不同就是获取活动窗口并将其设置为相同的内容。关键区别在于存在--sync
强制xdotool
等待直到应用上一个命令的选项。
因此,我们保证我们专注于特定窗口并且能够键入命令。
归档时间: |
|
查看次数: |
5202 次 |
最近记录: |