LINUX.ORG.RU

encase и вставка текста через xdotool

 ,


0

2

Пытаюсь перенести свой скрипт с шиндошсного autohotkey на линуксовый xdotool

Пример скрипта на ahk:

; Ctrl+8
^VK38::
  Send ×
Return

по сочетанию ctrl+8 (кнопка 8 в винде это VK38) вставляется ×

Так вот, не совсем понимаю как такое реализовать в xdotool, можете тыкнуть носом? Читаю документацию, но пока не догоняю.

Также хотелось бы узнать, как реализовать нечто такое:

; Alt+Z
!VK5A::
  Encase("<nobr>", "</nobr>", 7)
Return
выделенный текст по сочетанию alt+z берется в <nobr>, как реализовать encase в xdotool, хотелось бы знать



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

линуксовый xdotool

Неужели вам самому противоречие в глаза не бросается?

Так вот, не совсем понимаю как такое реализовать в xdotool

Никак. Где вы прочли, что xdotool(1) слушает клавиатуру?

Zmicier ★★★★★
()

Слушает клавиатуру в первую очередь ваш оконный диспетчер.

Но если он убогий, то можно и еще один костыль прикрутить, типа xbindkeys(1).

Zmicier ★★★★★
()

по сочетанию ctrl+8 вставляется ×

А конкретно этого целесообразно не делать, но по-нормальному выделить клавишу для взвода третьего уровня в раскладке.

Она вполне может быть и одним из «контролей», если он вам не нужен, но канонически это правый «альт», может быть даже подписан на клавиатуре как «AltGr».

Zmicier ★★★★★
()

выделенный текст по сочетанию alt+z берется в <nobr>

А вот это вообще какой-то пролом через несколько интерфейсов.

Zmicier ★★★★★
()

Правильно для ввода всяких странных букв, которых нет на клавиатуре использовать т.н. compose key. У меня это правый alt (настраивается в кде там же, где и переключалка раскладок). Нажимаешь (не зажимаешь) compose key и кодовую последовательность. Например,

alt x x печатает ваш крестик ×
alt - - - печатает тире —
alt t m печатает знак ™
alt пробел пробел печатает неразрывный пробел ' '
alt < < и alt > > дают «кавычки-ёлочки»
alt . . печатает многоточие…
alt o r ­печатает ®, аналогично ©

Через xbindkeys и xdotool тоже можно, но конкретно ввод текста получается криво, т.к. окно не забывает и про нажатый контрол, его приходится отживать предварительным вызовом xdotool, вот как повторить поведение вашей винды:

~/.xbindkeysrc

"xdotool keyup Control; xdotool type --clearmodifiers ×"
Control+KP_Up+Release
legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от legolegs

Правильно для ввода всяких странных букв, которых нет на клавиатуре использовать т.н. compose key

Что «странного» в знаке «на»? У меня он есть (правда в четвертом ряду: Shift-Level3-8, а не в третьем: Level3-8).

И товарищу рекомендую его тоже добавить. Ну, или просто выбрать раскладку, где он среди прочего есть. «Триединорусская» ruu, к примеру, если мне не изменяет память, будет одной из таких.

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

Спасибо

Да пожалуйста, только мы только начали, кажется.

Судя по всему, это именно то, что мне надо

Мне непонятно, про что вы, а значит и отвечать нечего.

Zmicier ★★★★★
()

выделенный текст по сочетанию alt+z берется в <nobr>

На alt+z можно повесить такую команду

echo "$(xsel -o )" | sed -e 's/^/<nobr>/g' -e 's/$/<\/nobr>/g' | xsel -i -b; sleep 0.2; xdotool key Control_L+v

dadd ★★★
()
Последнее исправление: dadd (всего исправлений: 1)
Ответ на: комментарий от dadd

echo "$(xsel -o)" | sed -e 's/^/<nobr>/g' -e 's/$/<\/nobr>/g'

Больше велосипедов богу велосипедов, больше квадратных колес к трону квадратных колес!

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

Это не костыли, это универсальные решения для X.Org. WM должен заниматься только управлением окон, взвешивать на него не связаные с этим задачи не нужно, и уж тем более не нужны посему монолитные вяленые композиторы. Сейчас запущен один WM, могу в той же сессии заменить другим, а все хоткеи останутся.

bodqhrohro_promo
()
Ответ на: комментарий от bodqhrohro_promo

Это не костыли

Это костыли, и лютые. Ни то, ни другое в здравом уме не делают так.

это универсальные решения для X.Org.

Это не универсальные решения, это позорище.

Решение первого на уровне самих Иксов (XKB) в принципе возможно, но будет ли оно работать, я не проверял.

Универсального решения для второго нет и быть не может — это, как я уже сказал, пролом через несколько интерфейсов. Делается на уровне хотя бы графического тулкита, а лучше — приложения.

WM должен заниматься только управлением окон
взвешивать на него не связаные с этим задачи не нужно

Во-первых, кто сказал?

А во-вторых, костыли типа второго — это связанная задача. Даже больше, чем то же переключение раскладки, например.

Сейчас запущен один WM, могу в той же сессии заменить другим, а все
хоткеи останутся.

Грош, значит, им цена.

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

Делается на уровне хотя бы графического тулкита, а лучше — приложения

Велосипеды-велосипедики. Давай вообще каждое приложение в отдельную виртуальную машину запаковывать, чтоб оно само там всё реализовывало.

пролом через несколько интерфейсов

Это нормальная задача, взять хоть всякие скринридеры или IME, или даже виндузятный Punto Switcher. Без проламывания прямо к текстбоксу мимо тараканов отдельных тулкитов — ничего не взлетит. Собственно, такая проблема только в никсах с иксами и есть, потому что здесь нет единого низкоуровневого графического тулкита, поверх которого рисуются все остальные; убогие прямоугольнички из XLib давно выкинули, а с переходом на вяленый зоопарк только усугубится.

Во-первых, кто сказал?

Здравый юниксвейный смысл.

Грош, значит, им цена.

Отнюдь, это компонентный подход — беру и леплю из них, что нужно. А не как нынче, например, с мессенджерами — дублируется куча функциональности лишь ради того, чтобы поверх этого прилепить ещё пару плюшек, которых нет у конкурента. Один из главных смыслов опенсорса как раз в том и заключается, чтобы устранить бессмысленное велосипедирование и по максимуму переиспользовать готовые решения, как это давно принято в научной среде.

bodqhrohro_promo
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.