10.11.2009

I need help

Когда я баловался написанием программ, основной проблемой было «что бы эдакое написать? Чтобы не просто так, а пользу приносило?». Сейчас я от программирования далёк, зато у меня есть ответ на вышеприведённый вопрос. :)

Очень хочется апплет для панели Gnome, который будет делать ровно одно: менять раскладку выделенного текста по клику или хоткею. Более ничего.

Если кто может сделать подобное — буду очень благодарен (сам попробую, но не программист я, совсем не программист).

P.S. О существовании gXneur я знаю. Увы, именно вот эта функция в нём толком и не работает.

21 прокомментировало:

Хочется тоже самое, только под Win :) А использовать Punto только из-за одной маленькой "фишки" нехочется :(

10 Ноябрь, 2009 20:45  

Так а чем Punto switcher плох? Можно ведь отключить автоматический переход с одной раскладки на другую и тогда переход будет осуществляться по нажатию на одну кнопку. Мне кажется этого больше чем достаточно..

10 Ноябрь, 2009 20:49  

нет желания использовать утилиту с излишней функциональностью

10 Ноябрь, 2009 20:51  

http://sanych.nnov.ru/note/269

10 Ноябрь, 2009 20:59  

Типа предположение...
В KDE есть Klipper в котором можно такое сделать на раз.
Помниться, что в Gnome есть Glipper - но вот умеет ли оно обрабатывать выделенный текст - не помню.

10 Ноябрь, 2009 21:06  

Для windows Piglet был с такой функциональностью, но там я Punto держу, им можно заодно переключатель на CapsLock навесить.

За скрипт спасибо, пойду тестировать.

10 Ноябрь, 2009 21:16  

Периодически читаю advanced bash-scripting
Сегодня ночью читал про команду tr. Как раз то, что нужно. Но тут надо придумать как работать с выделенным текстом, до этого я ещё не дошёл :-)

10 Ноябрь, 2009 23:08  

на самом деле это очень непростая задача и в принципе не решаемая универсально - для каждого тулкита нужно реализовывать отдельно. Не знаю про Gtk, но в Qt это не сделать без модифицирования Qt - доступ к выделению извне приложения получить нельзя.

Можно попытаться обойти это - брать содержимое clipboard, но опять же - получить текущее содержимое легко, а вот как сказать стороннему приложению "заменить текст (вставить из clipboard)" - это сделать нельзя.

10 Ноябрь, 2009 23:34  

Почему же не решаемая? Алгоритм следующий.

1. Выделяете текст (в иксах он автоматом попадает в буфер обмена)
2. Нажимаете горячую клавишу.
3. Аплет считывает текст из буфера, изменяет его и записывает обратно.
4. Нажимаете Control-v (Shift-Insert).

Т.е получается вариант с двумя нажатиями.

11 Ноябрь, 2009 00:04  

причём брать нужно из primary selection, а "класть" в clipboard. Там можно и оставить, а человек уже нажмёт ctrl+v.
Если на баше, то можно использовать xsel вместо xclip (который не во всех дистрибутивах работает с кириллицей).

11 Ноябрь, 2009 00:06  

> Почему же не решаемая? Алгоритм следующий.

угу, этот способ с PRIMARY я и пытался описать в качестве альтернативного пути. Но имхо это кривое решение - выделить текст можно и с помощью клавиатуры, и тогда он не попадет в PRIMARY.

11 Ноябрь, 2009 01:46  

зачем это нужно? что только люди не изобретут вместо того, чтобы за две недели освоить слепую печать и навсегда забыть про neur, punto и прочие свиные рыла.

11 Ноябрь, 2009 01:50  

по скрипту из http://sanych.nnov.ru/note/269
надо запускать, чтобы было чего-н выделено. я сделал кнопку запуска на панели, стартующую этот скрипт. Предварительно сделал файл исполняемым. всё пашет :)

вот только у меня появлялось окно, пытавшееся сохранить картинку рабочего стола. закомментировал press(107) и всё ок

11 Ноябрь, 2009 02:18  

сейчас сообразил как сделать для Qt - в Qt есть поддержка accessibility - с помощью этого интерфейса можно посмотреть текущий виджет с фокусом ввода и запросить содержимое выделенного текста.

11 Ноябрь, 2009 02:27  

>выделить текст можно и с помощью клавиатуры, и тогда он не попадет в PRIMARY.

Прекрасно попадает.
PS. tr - был бы просто идеальным решением для баша, но с кириллицей у него какие то очень сложные отношения. :(

11 Ноябрь, 2009 04:05  

>> выделить текст можно и с помощью клавиатуры, и тогда он не попадет в PRIMARY.
> Прекрасно попадает.

каждый тулкит реализовывает эту функциональность отдельно. В Qt в PRIMARY попадает только текст выделенный мышкой.

11 Ноябрь, 2009 04:46  

как у вас всё сложно.
конвертация из латиницы в кириллицу:
$ xsel -o | perl -C -pe 'use utf8;tr/qwerty/йцукен/' | xsel -i -b
набил только шесть символов (для иллюстрации).
1. выделить.
2. выполнить команду.
3. ctrl-v

11 Ноябрь, 2009 08:28  

а вообще двадцать первый век на дворе.
пора бы и привыкнуть к нециклическому включению нужной раскладки.
т.е. вместо изобретения каски просто убрать грабли с дороги.

11 Ноябрь, 2009 08:32  

когда-то писал такое приложение на bash для kde3(klipper) с использованием sed и dcop. в принципе сейчас его легко модифицировать под dbus и оно будет работать и в гноме.

если интересно вот мыло
kara-ya[at]ya[dot]ru

12 Ноябрь, 2009 05:09  

sash-kan, Ваш способ переводит английскую раскладку в русскую и только. Кроме того, невозможно перевести символы ;' в русскую раскладку (жэ).

13 Ноябрь, 2009 21:02  

Что-то я не слишком подумал. Если дополнить ключ для tr английской раскладкой, то будет заменяться русской. ; - прекрасно транслитируется в "ж", а вот ' по понятным причинам нет. Так же, я полагаю не будут заменяться "/" на "."
Если бы было можно для tr указать 2 текстовых файла как ключи, эх!

16 Ноябрь, 2009 00:43  

Следующее Предыдущее Главная страница

Blogger Template by Blogcrowds