LINUX.ORG.RU

Вставить текст в любое текстовое поле с помощью сочетания клавиш не трогая буфер обмена

 , , ,


1

3

Прошло 9 лет и я опять озадачился вставкой текста по сочетанию клавиш Вставка текста в текстовое поле, минуя буфер обмена Попробовал всё что было в той теме.

xvkbd -xsendevent -text 'Текст, который вставляется'

По прежнему проблема с кириллицей, об этом и пишет в консоль и вставляет только запятую.

echo "Текст, который вставляется" | iconv -f UTF8 -t UTF16 | xvkbd  -utf -file -

Вставляет кашу из оригинального текста и кучей ошибок, как-будто человек пишет быстро на клавиатуре смартфона без автозамены в трясущемся на ямах автобусе.

xdotool type --clearmodifiers --delay 10 'Текст, который вставляется'

Нормально вставляет текст, но после этого клавиатура сходит с ума и при нажатии любых клавиш происходит лютая дичь в системе, как-будто срабатываю все сочетания клавиш одновременно, как я понял залипает ctrl, который отлипает если его нажать. Вопрос тот же что и 9 лет назад: вставить текст в любое текстовое поле с помощью сочетания клавиш не трогая буфер обмена. Неужели линукс не может такое сделать нормально? Не верю.

★★

Последнее исправление: KOT040188 (всего исправлений: 1)

Мне понравилось: «в текстовое поле». Поля вокруг бескрайние.. То есть, вокруг меня. Не городской я житель, да. А это ваше «текстовое поле» в люнексах однозначно и неоспоримо хаоактеризует «географические координаты»? Чёрт его знает, может для пользователя с девятилетним стажем пофигу где поле, лишь бы текстовое. Но лично я нахожу некоторые отличия в месте их расположения, в связи с чем догадываюсь почему клавиатуру может вынести, если не подходящее поле нашлось, хотя и текстовое.

anonymous
()

Прерывание int 16h используй. =)

Ну а вообще - каким собственно образом ты пытаешься копипастить без использования буфера обмена? Ну, даже не теоретически, а чисто практически - можно. Получив Handle нужного окна ввода. Получив его - можно делать с этим окошком что угодно, хоть на весь экран развернуть, посылая ему соотвестствующие сообщения (WM_ -итп). Ну и любой текст туда впихнуть, запросто, разумеется.

cadaber ★★
()
Ответ на: комментарий от etwrq

Добавил -delay 50 в echo «Текст, который вставляется» | iconv -f UTF8 -t UTF16 | xvkbd -utf -file - в конце. Набор происходит медленно но с теми же ошибками и в конце нажимается ентер зачем-то…

KOT040188 ★★
() автор топика
Последнее исправление: KOT040188 (всего исправлений: 2)

Неужели линукс не может такое сделать нормально?

Может, конечно же. Нужно использовать uinput вместо того говна и костылей, которые ты перечислил.

anonymous
()
17 марта 2025 г.
Ответ на: комментарий от KOT040188

Дружище, озаботился недавно аналогично проблемой как у тебя. Ндо было карамба свчер под минт. Оказалось что все пилять скрипты под себя а на форумах рассказывают что вот поглядите хнеур умер, значит он ни кому не нужен. Ну да к черту лирику. По поводу не трогать буфер обмена - я его просто сохраняю в отдельную переменную скрипта, потом пихаю обратно мой скрипт ниже. Как есть со всей болью в коментах. Но тебе возможно это не поможет потому что восстановление картинок я не проверял. Возможно сможешь решить через перенаправление в primary-selection - буфер. А xdotool делает черит что, потому что он эмулирует клаву. А когда ты используешь горячие клавиши ты зажимаешь кнопки и эти нажатия накладываются на ввод от него. У меня например скрипт забинден на ctrl+shift и шифт я отпустить успеваю за время ожидания тогда контрал не конфликтует с контрал+вэ от xdotool. Но задержка меня прям очень бесит. Ага, в линуксе можно настроить под себя все что угодно, говорили они.

tmp=$(xsel --clipboard)
xsel -o | xsel -b
xsel | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.<>#\`~/" | xsel -b -i
sleep 0.05s
#Хочется заменить котрол+в на вставку напрямую в позицию курсора но не могу получить к нему доступ, вероятно, неовзможно средствами баш
xdotool key Ctrl+v
#xsel --clipboard | xsel -o
#echo "техт планируемый к вставке" | xsel -b
#xdotool type qweddds
printf $tmp | xsel -b 
anonymous
()