Я пытаюсь заставить 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
Однако, когда я поразил свою клавишу меню (это находится в нижней правой из моей клавиатуры), я получаю только последнюю половину или около этого. Как: yemail@example.com
или isismyemail@example.com
. Это полностью непредсказуемо, где печать запустится.
Я нашел обходное решение путем изменения xdotool
команда к xdotool sleep 0.1 type thisismyemail@example.com
. Это, кажется, работает бесперебойно, но я понятия не имею почему. Какие-либо мысли?
использование xmonad 0.11 и xdotool версии 3.20140217.1
--sync
опция была точно, что я искал!
Однако --sync
опция только существует на определенном наборе, получают или ищут команды.
решение оказалось: xdotool getwindowfocus windowfocus --sync type thisismyemail@example.com
, Что происходит, вот то, что мы сначала получаем окно, которое фокусируется, через getwindowfocus
(getactivewindow
альтернатива, если другой не работает).
Все, что мы делаем по-другому, получает активное окно и устанавливает его на то же самое. Основное отличие является присутствием --sync
опция, которая вынуждает xdotool
ожидать, пока предыдущая команда не была применена.
, Таким образом, мы гарантируем, что фокусируемся к конкретному окну и сможем ввести команды.
Вы, возможно, должны увеличить задержку между нажатиями клавиш с помощью --delay
(значение по умолчанию составляет 12 мс):
xdotool type --delay 100 thisismyemail@example.com