В Ubuntu Mate 20.10 на ноутбуке Lenovo T450 я довольно долго пытался создать сочетание клавиш с меткой времени. Цель состоит в том, чтобы иметь возможность вставлять отметку времени в любой файл, как если бы я его напечатал, будь то текстовый файл, LibreOffice Write, Calc, draw или любой другой тип документа.
Два ближайших вопроса, похожих на этот:
Следуя предложениям в первой ссылке, я создал следующий файл bash-скрипта Timestamp. sh:
#!/bin/bash
sleep 0.3s && date +%Y.%m.%d' : '%H.%M.%S
который при выполнении выдает временную метку, отформатированную под мои нужды, и выглядит так:
2021.07.11 : 21.10.26
Теперь, используя приложение сочетаний клавиш в Mate mate-keybinding-properties
, и привязав вышеуказанный скрипт к F9 для тестирования, я попробовал следующее:
/home/xak/scripts/Timestamp.sh
xdotool keyup exec /home/xak/scripts/Timestamp.sh
xdotool keyup sleep 0.3s type `date +%Y.%m.%d' : '%H.%M.%S`
xdotool type "$(printf 'date\n\e ')"
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
Ничего из этого не работает. Неважно, как долго я над этим корпел (в старом положительном смысле слова "корпеть") или как много я искал, я не могу найти, как заставить эту относительно простую вещь работать.
Некоторые из вышеперечисленных вещей, которые я пробовал, были предложены людьми с гораздо большим опытом, чем я, но когда вы вводите их для выполнения в качестве сочетания клавиш с помощью mate-keybinding-properties
, они, похоже, не работают. Что я упускаю?
Если бы это работало, то все пользователи получили бы возможность вставлять временную метку в любое приложение по мере необходимости.
Это то, что я использую для вставки штампа даты:
#!/bin/sh
xdotool keyup ctrl+shift+d sleep 0.4 type $(date +"%Y-%m-%d")
Оператор "keyup" сначала освобождает горячую клавишу, которую я назначил этому сценарию, чтобы избежать взаимодействия этих нажатых клавиш с нажатиями клавиш отправки. Мне все еще нужна задержка в основном для работы в Firefox и Thunderbird. Для других приложений задержка может быть меньше.
Это та версия, которую я использовал ранее (и к которой я могу вернуться снова): вместо этого используется буфер обмена и предотвращается возможность отбрасывания некоторых нажатий клавиш.
#!/bin/sh
OLDSELECT=$(xsel --clipboard --input)
CURRENTDATE=$(date +"%Y-%m-%d")
echo -n $CURRENTDATE | xsel -b -i
sleep 0.3
xdotool keyup ctrl+shift+d key Control_L+v
sleep 0.3s
echo -n $OLDSELECT | xsel --clipboard --input
Это сохраняет текущую (текстовую) клавиатуру и восстанавливает ее в конце. Между тем, дата помещается в буфер обмена и вставляется в активное приложение с помощью Ctrl + v . Опять же, к сожалению, для его работы требуется sleep
- Linux очень старается отбросить нажатия клавиш, если вы набираете слишком быстро. Опять же, для Firefox и Thunderbird мне требуется 0,3 секунды сна, прежде чем буфер обмена будет правильно восстановлен.