I need help
Когда я баловался написанием программ, основной проблемой было «что бы эдакое написать? Чтобы не просто так, а пользу приносило?». Сейчас я от программирования далёк, зато у меня есть ответ на вышеприведённый вопрос. :)
Очень хочется апплет для панели Gnome, который будет делать ровно одно: менять раскладку выделенного текста по клику или хоткею. Более ничего.
Если кто может сделать подобное — буду очень благодарен (сам попробую, но не программист я, совсем не программист).
P.S. О существовании gXneur я знаю. Увы, именно вот эта функция в нём толком и не работает.

Хочется тоже самое, только под Win :) А использовать Punto только из-за одной маленькой "фишки" нехочется :(
shamanchik комментирует...
10 Ноябрь, 2009 20:45
Так а чем Punto switcher плох? Можно ведь отключить автоматический переход с одной раскладки на другую и тогда переход будет осуществляться по нажатию на одну кнопку. Мне кажется этого больше чем достаточно..
biercoff комментирует...
10 Ноябрь, 2009 20:49
нет желания использовать утилиту с излишней функциональностью
shamanchik комментирует...
10 Ноябрь, 2009 20:51
http://sanych.nnov.ru/note/269
Анонимный комментирует...
10 Ноябрь, 2009 20:59
Типа предположение...
В KDE есть Klipper в котором можно такое сделать на раз.
Помниться, что в Gnome есть Glipper - но вот умеет ли оно обрабатывать выделенный текст - не помню.
inspirra комментирует...
10 Ноябрь, 2009 21:06
Для windows Piglet был с такой функциональностью, но там я Punto держу, им можно заодно переключатель на CapsLock навесить.
За скрипт спасибо, пойду тестировать.
StraNNicK комментирует...
10 Ноябрь, 2009 21:16
Периодически читаю advanced bash-scripting
Сегодня ночью читал про команду tr. Как раз то, что нужно. Но тут надо придумать как работать с выделенным текстом, до этого я ещё не дошёл :-)
Маслов комментирует...
10 Ноябрь, 2009 23:08
на самом деле это очень непростая задача и в принципе не решаемая универсально - для каждого тулкита нужно реализовывать отдельно. Не знаю про Gtk, но в Qt это не сделать без модифицирования Qt - доступ к выделению извне приложения получить нельзя.
Можно попытаться обойти это - брать содержимое clipboard, но опять же - получить текущее содержимое легко, а вот как сказать стороннему приложению "заменить текст (вставить из clipboard)" - это сделать нельзя.
Denis Dzyubenko комментирует...
10 Ноябрь, 2009 23:34
Почему же не решаемая? Алгоритм следующий.
1. Выделяете текст (в иксах он автоматом попадает в буфер обмена)
2. Нажимаете горячую клавишу.
3. Аплет считывает текст из буфера, изменяет его и записывает обратно.
4. Нажимаете Control-v (Shift-Insert).
Т.е получается вариант с двумя нажатиями.
k0sh комментирует...
11 Ноябрь, 2009 00:04
причём брать нужно из primary selection, а "класть" в clipboard. Там можно и оставить, а человек уже нажмёт ctrl+v.
Если на баше, то можно использовать xsel вместо xclip (который не во всех дистрибутивах работает с кириллицей).
Маслов комментирует...
11 Ноябрь, 2009 00:06
> Почему же не решаемая? Алгоритм следующий.
угу, этот способ с PRIMARY я и пытался описать в качестве альтернативного пути. Но имхо это кривое решение - выделить текст можно и с помощью клавиатуры, и тогда он не попадет в PRIMARY.
Denis Dzyubenko комментирует...
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 - с помощью этого интерфейса можно посмотреть текущий виджет с фокусом ввода и запросить содержимое выделенного текста.
Denis Dzyubenko комментирует...
11 Ноябрь, 2009 02:27
>выделить текст можно и с помощью клавиатуры, и тогда он не попадет в PRIMARY.
Прекрасно попадает.
PS. tr - был бы просто идеальным решением для баша, но с кириллицей у него какие то очень сложные отношения. :(
Pe1ro комментирует...
11 Ноябрь, 2009 04:05
>> выделить текст можно и с помощью клавиатуры, и тогда он не попадет в PRIMARY.
> Прекрасно попадает.
каждый тулкит реализовывает эту функциональность отдельно. В Qt в PRIMARY попадает только текст выделенный мышкой.
Denis Dzyubenko комментирует...
11 Ноябрь, 2009 04:46
как у вас всё сложно.
конвертация из латиницы в кириллицу:
$ xsel -o | perl -C -pe 'use utf8;tr/qwerty/йцукен/' | xsel -i -b
набил только шесть символов (для иллюстрации).
1. выделить.
2. выполнить команду.
3. ctrl-v
sash-kan комментирует...
11 Ноябрь, 2009 08:28
а вообще двадцать первый век на дворе.
пора бы и привыкнуть к нециклическому включению нужной раскладки.
т.е. вместо изобретения каски просто убрать грабли с дороги.
sash-kan комментирует...
11 Ноябрь, 2009 08:32
когда-то писал такое приложение на bash для kde3(klipper) с использованием sed и dcop. в принципе сейчас его легко модифицировать под dbus и оно будет работать и в гноме.
если интересно вот мыло
kara-ya[at]ya[dot]ru
YURi комментирует...
12 Ноябрь, 2009 05:09
sash-kan, Ваш способ переводит английскую раскладку в русскую и только. Кроме того, невозможно перевести символы ;' в русскую раскладку (жэ).
Pe1ro комментирует...
13 Ноябрь, 2009 21:02
Что-то я не слишком подумал. Если дополнить ключ для tr английской раскладкой, то будет заменяться русской. ; - прекрасно транслитируется в "ж", а вот ' по понятным причинам нет. Так же, я полагаю не будут заменяться "/" на "."
Если бы было можно для tr указать 2 текстовых файла как ключи, эх!
Pe1ro комментирует...
16 Ноябрь, 2009 00:43