Рейтинг:0

Горячая клавиша «Отметка времени»

флаг bm

В Ubuntu Mate 20.10 на ноутбуке Lenovo T450 я довольно долго пытался создать сочетание клавиш с отметкой времени. Цель состоит в том, чтобы иметь возможность вставлять отметку времени в любой файл, как если бы я его печатал, будь то текстовый файл, LibreOffice Write, Calc, draw или любой другой тип документа.
Два ближайших вопроса, похожих на этот:

Следуя предложениям в первой ссылке, я создал следующий файл сценария bash Timestamp.sh:

 #!/бин/баш
 сон 0,3 с && дата +%Y.%m.%d' : '%H.%M.%S

который при выполнении создает временную метку, отформатированную в соответствии с моими потребностями, и выглядит следующим образом:

2021.07.11 : 21.10.26

Теперь с помощью приложения быстрого доступа к клавиатуре в Mate mate-keybinding-свойства, и привязав приведенный выше скрипт к 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 типа "$(printf 'дата\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-свойства они, кажется, не работают. Что мне не хватает?

Чтобы это работало, все пользователи могли бы вставлять отметку времени в любое приложение по мере необходимости.

Рейтинг:0
флаг cn

Это то, что я использую для вставки штампа даты:

#!/бин/ш
xdotool keyup ctrl+shift+d sleep 0.4 type $(date +"%Y-%m-%d")

Оператор «keyup» сначала освобождает горячую клавишу, которую я назначил этому сценарию, чтобы избежать взаимодействия этих нажатых клавиш с нажатиями клавиш отправки. Задержка все еще нужна мне в основном для того, чтобы она работала в Firefox и Thunderbird. Для других приложений задержка может быть меньше.

Это версия, которую я использовал ранее (и к которой я могу вернуться снова): вместо этого она использует буфер обмена и предотвращает возможность сброса некоторых нажатий клавиш.

#!/бин/ш
OLDSELECT=$(xsel --clipboard --input)
ТЕКУЩАЯДАТА=$(дата +"%Y-%m-%d")
эхо -n $ ТЕКУЩАЯ ДАТА | xsel -b -i
спать 0,3
xdotool keyup ctrl+shift+d клавиша Control_L+v
сон 0,3 с
эхо -n $OLDSELECT | xsel --буфер обмена --input

Это сохраняет текущую (текстовую) клавиатуру и восстанавливает ее в конце. Тем временем дата помещается в буфер обмена и вставляется в активное приложение с помощью Ctrl+в. Опять же, к сожалению, спать требуется, чтобы это работало - Linux очень стремится отбросить нажатия клавиш, если вы печатаете слишком быстро. Опять же, для Firefox и Thunderbird мне требуется 0,3-секундный сон, прежде чем буфер обмена будет правильно восстановлен.

xian555 avatar
флаг bm
Ладно, может быть, я не сумасшедший. Когда я использую ваш первый пример: #!/бин/ш xdotool keyup ctrl+shift+d sleep 0.4 type $(date +"%Y-%m-%d") в Pluma или LO7 Write ничего не делает, или по крайней мере ничего не выводит. Если я поставлю: xdotool keyup sleep 0.33s type --clearmodifiers 'Test xdotools' это работает. Но я не могу заставить его работать с $(date +...) . Я просто не понимаю, в чем проблема.
xian555 avatar
флаг bm
Еще один вопрос о вашем первом примере: для чего нужно сочетание клавиш ctrl+shift+d? Спасибо
vanadium avatar
флаг cn
Как я сказал в ответ.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.