Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Скрипты частично заменяющие или дополняющие функционал программы xNeur.  (Прочитано 25336 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Цитировать
— Не совсем понял о чём должен свидетельствовать тест c xsel -o у меня всегда выводит
содержимое выделенного при исполнении команды xsel -o …
При снятии выделения ничего не должен выводить.
Но так это только в "простых" программах, в дефолтном текстовом редакторе например.
А в браузере какое-то более сложное взаимодействие с системой, и обновление содержимого выделенного не работает.

Цитировать
я создал кнопку запуска, поместил в launcher
А где задержка? Или успеваете переключится на окно с набраной строкой за доли секунды?
(Нажмите, чтобы показать/скрыть)

Цитировать
— Если всё равно скрипт нужно запускать с разными параметрами, там может есть смысл поделить его на части?
Я не программист совсем, потому советовать сильно не могу.
Но ведь ценность скрипта именно в использовании с hotkey'ями.
Смысла в разделении нет, т.к кода мало, и он в трех файлах будет дублироватся,
+ неудобство для правки/модернизаци.

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

Цитировать
Ну и более трёх сочетаний клавиш для этой всей затеи с заменой раскладки это по-моему будет перебором…
Почему более трёх? Сколько надо/хотите, столько и меняйте/прописываете сочитаний. Ограничений нет.
« Последнее редактирование: 01 Июнь 2016, 23:03:30 от Cxms »

adawdp

  • Автор темы
  • Гость
2016 Jun 01; 09:02 PM; Oakville, ON, Canada.

— Вот такая картинка тестирования…

— Разницы тестировать через кнопку запуска ( на рисунке квадрат в launcher'e с изображением ноля) или терминал нет, так как скрипт стартует от курсора. Курсор установил кнопку мышью запустил. Просто через кнопку быстрее не нужно ждать пять секунд. Пробовал и кнопкой и через терминал результат одинаковый.
— Причины почему в одних программах работает в других не работает не разбирался, не специалист :(.
— Концепцию создания Вами скрипта я понял. Намерения Ваши наступить на это дело широким фронтом ясное дело благие!
— Относительно количества используемых сочетаний я имел в виду, что и так много всяких сочетаний нужно помнить, потому чтобы не плодить лишние комбинации до бесконечности я полагал, что для изменения раскладки нужно ограничиться тремя и не демонизировать эту проблему.
— Моя примитивная поделка тоже иногда не срабатывает, например в окне текстового редактора форума. Возможно какие-то задержки нужно выставлять.
— Проблемы сохранять данные буфера у меня нет, это решается установкой Diodon'a или любого другого менеджера буфера обмена.

zse

  • Автор темы
  • Гость
     — В связи с тем, что вопрос абсолютно идентичный решил что лучше продолжить старую тему чем начинать новую.
Вопрос возник в другой теме и выходит за её рамки. [https://forum.ubuntu.ru/index.php?topic=297247.msg2334006#msg2334006]
     — Помимо перечисленных в данной теме программ можно ещё установить:
Код: Text
  1. sudo apt-get install xmacro
Об этой программе желательно также почитать…
(Нажмите, чтобы показать/скрыть)
     — Можно использовать и xdotool, но в результате применения на нескольких компьютерах и системах несмотря на громоздкость конструкций, xmacro, во всяком случае у меня, работал стабильнее. Параметны задержки „-d 500“ и „-d 250“ можно менять для выбора наибольшего быстродействия, 500 может и многовато.
     — Я назначал клавиши Ctrl+Alt+PauseBreak.
     — Такая „двуручная комбинация“ по той причине, что скрипт применяется редко.Обычно не в той раскладке печатается слово или часть слова, а не целая строка.
     — Скрипты для других языков английский-французский, например, составляются аналогично.
(Нажмите, чтобы показать/скрыть)
   — Назначал на клавишу PauseBreak она обычно ни для чего не используется…
   — Есть ещё два скрипта замена раскладки выделенного текста и инверсия регистра текста, если кому-то интересно…
« Последнее редактирование: 30 Март 2018, 06:24:34 от zse »

Оффлайн Voden

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Подскажите ламеру!

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


Но он работает странно: при переводе в другую раскладку в начало выделенного текста добавляется X

Подозреваю, дело в строке
xdotool key 'Ctrl+X' Но что в ней неправильно?

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2627
    • Просмотр профиля
Voden,
попробуй так:
xdotool sleep 0.1 key Ctrl+X

Оффлайн Voden

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
ReNzRv, 0.2 помогло, спасибо!

А не подскажете, как сделать ещё две доработки: очищать буфер обмена (или восстанавливать его содержимое) после перевода в другую раскладку и менять раскладку на противоположную?


Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2627
    • Просмотр профиля
В последнем скрипте:
Цитировать
# Резерв содержимого буфера обмена
BKP_CLIP="$(xsel -ob)"

# Восстановление содержимого буфера обмена
echo -n "$BKP_CLIP" | xsel -ib


Очистка будет соответственно:
echo -n | xsel -ibИли даже ключ есть для очистки, посмотри man xsel.

Оффлайн vasmed

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Здравствуйте! Большой скрипт с параметрами у меня не захотел работать. Из первых скриптов более менее приемлемо работает только корректировка выделенного. Да и то если делать корректировку несколько раз подряд, то на четный раз задержка корректировки составляет 3-4 секунды (на нечетный 1 сек). У скрипта корректировки последнего слова задержка вообще дикая (12 сек), поэтому я его отключил. Xneur использовать не вариант - были большие глюки с буфером обмена, после его установки, не было корректного переключения. Сейчас проблема в следующем: не работает корректировка в far2l и в консоле. После нажатия корректировки вставляет что-то старое из буфера обмена.
Есть ли у кого-нибудь мысли, как наладить работу скрипта корректировки выделенного в far2l и в консоле?
У меня стоит Ubuntu 18.04 LTS desktop.
Скрипт у меня в итоге такой
#!/bin/bash
# Этот скрипт позволяет менять раскладку выделенного текста, т.е. выделяется текст, нажимаются соответствующие клавиши происходит смена раскладки и замена символов выделенного текста…
#cd /home/путь к скрипту/
# Резерв содержимого буфера обмена
BKP_CLIP="$(xsel -ob)"

xdotool key Ctrl+Insert
sleep 0.1s
xsel | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.<>#\`~/" | xsel -b -i
sleep 0.1s
xdotool key Shift+Insert
sleep 0.1s
xdotool key Alt+Shift
# Восстановление содержимого буфера обмена
echo -n "$BKP_CLIP" | xsel -ib
« Последнее редактирование: 19 Август 2019, 08:44:09 от vasmed »

Оффлайн PTU4KA

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
При использовании скрипта из Ответ #41 заметил некоторое неудобство.
Команда "setxkbmap -layout ru,us" не просто меняет раскладку, а меняет порядок раскладок и как следствие после ее применения и ручной смены раскладок получается неприятный эффект запутаности.
Отображаемая в трее раскладка может не совпадать с фактической, не работают некоторые клавиатурные сочетания, например ctrl+alt+l, хотя в трее отображается латинская раскладка, на экране входа в систему, после блокировки, пароль вводится также не в той раскладке, которая отображается на экране.
Решением данной проблемы может стать проект xkb-switch.
Порядок установки:
скачать архив с GitHub, распаковать
перейти в директорию распакованого архива xkb-switch-mastersudo apt-get install libxkbfile-dev g++ cmake
mkdir build && cd build
cmake ..
make
sudo make install
cp libxkbswitch.so.1.6.0 /usr/lib/
cd /usr/lib/
ln -s libxkbswitch.so.1.6.0 libxkbswitch.so.1
ln -s libxkbswitch.so.1 libxkbswitch.so
Проверка, что все встало корректно:
root@temple:/# xkb-switch -l
us
ru
В скрипте заменить строки"setxkbmap -layout ru,us" на "xkb-switch -s ru"
"setxkbmap -layout us,ru" на "xkb-switch -s us"
Работает намного стабильнее.
« Последнее редактирование: 20 Сентябрь 2019, 19:04:39 от zg_nico »

Оффлайн ozim

  • Активист
  • *
  • Сообщений: 317
  • Kubuntu 14.04 x64
    • Просмотр профиля
а как сделать, чтоб всю строку проверяло, и если находило нужные символы, то переделыывало?
например
ghbdtn? rfr ltkf&
должно сделать
привет, как дела?

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

Оффлайн xub

  • Забанен
  • Активист
  • *
  • Сообщений: 286
  • If it ain't broke, don't fix it
    • Просмотр профиля
Пробуйте ozim, вот так, или на горячие клавиши или в скрипт…
echo "KeyStrPress Shift_L KeyStrPress Home KeyStrRelease Home KeyStrRelease Shift_L KeyStrPress Control_L KeyStrPress Insert KeyStrRelease Insert KeyStrRelease Control_L"| xmacroplay -d 500 ":0.0"
xsel | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.<>#\`~/" | xsel -b -i
Потребуется:
sudo apt install xmacroустановить, можно попробовать тоже сделать с xdotool…

У меня это в скрипте, работает от курсора до начала строки без выделения. Есть вариант с преобразованием выделенного, есть замена последнего слова ( т.е. набранного от курсора до первого пробела тоже без выделения. Проверенно временем😈.

Пробуйте… 2019 Dec 11; 03:41 PM
https://webhamster.ru/site/page/index/articles/projectcode/181 LoLo Switcher. Конфигурирование… Рекомендую!!! Кардинально может решить проблемы переключения раскладки…

Оффлайн ozim

  • Активист
  • *
  • Сообщений: 317
  • Kubuntu 14.04 x64
    • Просмотр профиля
Пробуйте ozim, вот так, или на горячие клавиши или в скрипт…
у меня работает этот скрипт, как его переделать?
(Нажмите, чтобы показать/скрыть)

Оффлайн xub

  • Забанен
  • Активист
  • *
  • Сообщений: 286
  • If it ain't broke, don't fix it
    • Просмотр профиля
Это, коллега, ozim, у автора скрипта спросить бы , как его переделать😈!
Я не шибко специалист  :idiot2:

Мой скрипт для последнего слова (я не про судебную практику😇), я про последнее слово в фразе вводимой с клавиатуры, вынлядит так:
#!/bin/bash
echo "KeyStrPress Shift_L KeyStrPress Home KeyStrRelease Home KeyStrRelease Shift_L KeyStrPress Control_L KeyStrPress Insert KeyStrRelease Insert KeyStrRelease Control_L"|xmacroplay -d 300 ":0.0"
DONOTCHANGE=$(xsel -op | sed -e 's/[^ ]*$//')
TOMODIFY=$(xsel -op | grep -o '\S\+\s*$' | sed "y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.\/<>?@#\$^&\`~фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбюБЮ№ёЁ/фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖЭбю.БЮ,\"№;:?ёЁabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':\",.<>#\`~/")
echo -n "${DONOTCHANGE}${TOMODIFY}" | xsel -ib
echo "KeyStrPress Shift_R KeyStrPress Insert KeyStrRelease Insert KeyStrRelease Shift_R"|xmacroplay -d 250 ":0.0"

Я попробую посмотреть вроде автор всё комментировал… Но обещать Вам  победу не могу :-\

2019 Dec 12; 03:32 PM
https://webhamster.ru/site/page/index/articles/projectcode/181 LoLo Switcher. Конфигурирование… Рекомендую!!! Кардинально может решить проблемы переключения раскладки…

Оффлайн ozim

  • Активист
  • *
  • Сообщений: 317
  • Kubuntu 14.04 x64
    • Просмотр профиля
я понимаю, что это тут
# \S+\s*$ - последнее слово - "\S"="непробелы" "+"="один или больше" "\s"="пробелы" "*"="ноль или больше" "$"="конец строки"
 
fixed=$(xsel | grep -P '^.*\s(?=\S+\s*$)' -o); # взять любые символы отделенные пробелом от последнего слова # perl positive lookahead
forconvert=$(xsel | grep -P '\S+\s*$' -o); # взять последнее слово
и даже по идее понимаю, что пробел  \s
но когда убираю его - скрипт перестает работать

Пользователь добавил сообщение 15 Декабрь 2019, 20:49:24:
а вот, дошло.
вот готовый переделанный скрипт [меняет всю строку]
(Нажмите, чтобы показать/скрыть)
fixed это все, что до последнего слова. с ним автор не работал, а оставлял без изменений. а мы работаем


Цитировать
fixed_r=$(printf '%s' "$fixed" | sed "y/$srcchars/$dstchars/")
создаем новую переменную, в которой тоже изменяются, как в последнем слове, все символы.
и уже в
printf '%s' "$fixed_r""$converted" у нас наша fixed_r вместо fixed


Пользователь добавил сообщение 15 Декабрь 2019, 20:56:02:
кстати, не работает код
# если раскладка текста равна текущей раскладке - переключить ее
[ $(SrcContainsRuChars)$? == $(CurrentLayoutIsRu)$? ] &&
    xdotool key --clearmodifiers $(LayoutShortcut);
даже руками туда прописал вместо этого Alt+Shift - не пашет

автору большое спасибо, мне данного функционала достаточно, абы еще переключало раскладку)

Пользователь добавил сообщение 15 Декабрь 2019, 21:10:47:
переделал наборы символов немного, чуток некорректно было (запятую в букву ё педелелывало, & в 7 и тп)
en1='`';    ru1='ё';
en2='qwertyuiop[]\x5C'; ru2='йцукенгшщзхъ)';
en3="asdfghjkl;'";      ru3='фывапролджэ';
en4='zxcvbnm,.\x2F';    ru4='ячсмитьбюё';
EN1='~!@#$%^&';    RU1='Ё!"№;%:?';
EN2='QWERTYUIOP{}|';    RU2='ЙЦУКЕНГШЩЗХЪ(';
EN3='ASDFGHJKL:"';      RU3='ФЫВАПРОЛДЖЭ';
EN4='ZXCVBNM<>?';       RU4='ЯЧСМИТЬБЮ,';
« Последнее редактирование: 15 Декабрь 2019, 21:10:47 от ozim »

 

Страница сгенерирована за 0.197 секунд. Запросов: 24.