Расширитель буфера обмена
Версия: 1.0 альфа
Автор: Python <smisoft@rambler.ru> (c) SmiSoft (SA)
Что это такое:
В Windows существует особая функция: буфер обмена. В нем можно временно хранить
любую информацию. Но буфер неудобен в силу ряда причин: в нем можно хранить только
один кусок текста, некоторые программы не понимают формат буфера других программ.
Есть целый ряд программ, решающих эти и другие проблемы. Особенно я хочу отметить
ClipMate и ClCl. Именно эти две программы были взяты за идею создания этого
плагина. Никаких сторонних библиотек при разработке не использовалось: это полностью
мой код.
В отличии от других моих плагинов, где все функции были доступны как через
визуальный интерфейс, так и через командную строку, ряд функций этого плагина
доступны только через визуальный интерфейс. Не думаю, что это большой недостаток.
Плагин умеет:
- Сохранять до 200 (можно уменьшать) последних использованных буферов обмена.
К сожалению, в этой версии поддерживается только неформатированный текст, но
это тоже, согласитесь, полезная возможность. В будущих версиях я постараюсь
сделать поддержку форматированного текста и рисунков.
- Умеет удалять форматирование из форматированного текста, в том числе и автоматически.
Это полезно, если вы вставляете текст из HTML страницы в Word, а получаете
абракадабру. Некоторые пользуются такой технологией: сперва вставляют полученный
текст в Блокнот, затем повторно вырезают текс и вставляют в Word. Алиас ~puretext
более удобная и красивая альтернатива.
- Умеет производить перекодировку между раскладками (переводит "ghbdtn" в "привет"
и "цштвщцы" в "windows"). Работает несколько хуже аналогов (Punto Switcher и
Layout Fix, взятые за основу), зато последние не умеют работать в Delphi (в них
жестко "забиты" сочетания для вставки Ctrl-V и копирования Ctrl-C, тогда как в
Delphi при классической раскладке используются Shift-Ins для вставки и Ctrl-Ins
для копирования). В плагине можно менять эти клавиши (хотя все известные мне
программы их поддерживают) и даже задавать списки исключений (окна, где должны
использоваться другие клавиши, возможность, взятая из ClCl). Также вы можете
осуществлять коррекцию нажатого CapsLock (переводить из "wINDOWS" в "Windows" и
наоборот, а также задавать собственные правила преобразования.
- Умеет производить транслитерацию, то есть переводить текст из "шаре" в "share"
и наоборот. Поскольку таблица преобразований хранится в текстовом файл, вы легко
можете задать свои правила преобразования.
- Умеет вставлять текст не через буфер, а эмулируя печать на клавиатуре. Поскольку
функция блокировки клавиатуры документирована лишь для Windows NT, клавиатура
во время эмуляции не заблокирована - не нажимайте клавиши на клавиатуре и не
двигайте мышь во время симуляции. Это полезно, если хотите заполнить Web форму
(например, имя_пользователя{tab}пароль{переход на новую строку} - для
автоматического входа). Разумеется, эту возможность можно использовать вместе с
плагинами tar_hotkey и tar_hotkeys. Также, при таком режиме
ввода полностью будет потеряно форматирование.
- Дополнением к данной возможности является возможность ввода серийных номеров.
При этом есть два режима: в первом режиме дефисы ("-") заменяются на
табуляции (для ввода в большинстве инсталляторов), либо на паузу (во втором случае,
некоторые инсталляторы автоматически перекидывают пользователя дальше по номеру,
когда закончилось предыдущее поле - пауза симулирует это). Теперь вам не нужно выделять
серийник по кусочкам, достаточно выделить его целиком, включить нужный режим и
нажать Shift-Ins - серийник будет вставлен. Этот режим не нужен для программ,
вводящих серийник единой строкой.
- Вы можете включать любой из описанных ранее режимов однократно (команда ~paste)
или постоянно (через визуальный интерфейс).
Как пользоваться:
Копируйте текст, как обычно. Кода вам потребуется использовать расширенные
возможности, введите ~clipeditor, в котором вы сможете выбрать ранее
использованные клипы, или изменить настройки. Когда все закончите, переключитесь
на нужное приложение и продолжите работу. Окно программы можно закрыть, если не
планируется дальнейшее использование, или оставить (в том числе и "поверх всех
окон" - для удобства использования). Когда окно программы неактивно, оно никак
не влияет на работу с буфером (кроме случая установленной галочки "Авто ~pureclip").
Для смены кодовой страница неправильно набранного текста, убедитесь, что окно,
в котором находится неправильно набранный текст не "только для чтения", выделите текст и дайте
TaR'у команду ~convert (см. описание). По умолчанию, текст автоматически
преобразуется к другой раскладке.
Для транислитерации, убедитесь, что окно, в котором находится текст для транслитерации
не "только для чтения". Выделите нужный текст и дайте TaR'у команду
~translit. По умолчанию, текст преобразуется.
Для постоянной смены режима вставки из буфера, дайте команду ~clipeditor
и выберите нужный режим из меню "Клипы".
Для вставки с использованием указанного режима и/или клипа с известным номером,
дайте команду ~paste /режим имя клипа. /режим может быть
/reg для обычной вставки, /key для симуляции ввода с клавиатуры
и /s1 или /s2 для ввода серийного номера. Имя клипа
это имя, отображаемое в верхнем поле окна редактора клипов. Если имя клипа отсутствует,
используется текущее содержимое буфера.
Менее часто используемые комбинации описаны в разделе Алиасы
Алиасы:
- ~puretext
Удаляет форматирование. Вам приходилось копировать с Web страниц какую либо
информацию, а после вставки в Word получать абракадабру? Если да, то воспользуйтесь
этой командой. Она сотрет все форматирование, но текст будет читабелен. Аналог
утилиты PureText.
Если вы используете эту команду очень часто, присмотритесь к команде
Параметры\Авто ~pureclip в Редакторе Клипов. Если опция включена, программа
будет автоматически удалять форматирование из буфера каждый раз, когда туда попадет
форматированный текст.
Если вы регулярно вставляете текст после применения ~pureclip,
присмотритесь к команде Параметры\Вставлять по ~pureclip. Если эта
опция включена, команда ~pureclip будет вставлять преобразованный
текст в текущее окно, используя текущий режим.
- ~convert [/noauto][/norev] mode1 mode2
Преобразовать кодировку.
Если указан ключ /noauto, то будет преобразована кодировка текущего
буфера, иначе - выделенный текст, находящийся в текущем окне (при этом текст
будет помещен в буфер).
Если указан ключ /norev, то преобразование будет проходить только в одну сторону.
По умолчанию, текст "Ghbdtn? Цштвщцы" будет преобразован в "Привет,
Windows". Если указать /norev, то результат будет "Ghbdtn,
Windows".
Mode1 и Mode2 - режимы преобразования. В .ini файле
есть раздел [convert], в котором указаны строки преобразования в виде
Mode=строка. Алгоритм работы заключается в том, что символ первой строки
заменяется на символ второй строки с тем же номером и наоборот (если не указан
/norev). Не найденные символы не изменяются. Вы можете создать
свое преобразование, добавив в .ini файл новые строчки в этот раздел и указать
вместо Mode1 и Mode2 соответствующие строки. Также вы
можете изменить существующие преобразования.
- ~translit [/rev][/noauto]
Осуществляет транслитерацию.
Если указан ключ /rev, то осуществляется транслитерация в обе
стороны (то есть строчка "Share фото" станет "Шаре foto",
если режим не указан, то "Шаре фото").
Если указан /noauto, то будет преобразован текущий буфер, иначе
- выделенный текст, находящийся в текущем окне (при этом текст будет помещен в буфер).
Поскольку данные, используемые для обработки находятся в .ini файле в разделе
[translit], вы можете создавать свои правила и заменять существующие.
Для этого измените или добавьте строчки этого раздела. Строчка имеет вид:
любая_уникальный_для_раздела_строка=начальный_символ[пробел]конечный_символ
, примеры смотрите в поставляемом файле.
- ~paste [/reg,/key,/s1,/s2] имя клипа
Вставляет текст в текущее окно, используя указанный режим:
/reg - обычная вставка (из буфера)
/key - печать клипа, эмулируя клавиатуру
/s1 - то же, что и /key, но дефисы заменяются на табуляции (для ввода серийных номеров)
/s2 - то же, что и /key, но дефисы заменяются на длинные паузы (для ввода серийных номеров)
Указанный режим действует, даже если установлен другой глобальный режим.
имя клипа - если не указано, то используется текущий клип, иначе
- клип с указанным именем. Если клипа с указанным именем не найдено, ничего не
происходит. Если вы регулярно используете какой-то клип, имеет смысл сделать его
статическим - когда число динамических клипов превосходит указанное, то лишние
клипы удаляются, статические не удаляются никогда (только вручную).
- ~clipeditor
Показывает, или выводит на передний план окно визуального интерфейса (т.н. Редактор
Клипов). Основные функции доступны через меню:
Параметры\Автоскрытие - означает, ччто окно автоматически скроется,
если не будет активно некоторое (задается) время. Идея взята из программы QNote.
Параметры\Всегда наверху - означает, что окно не будет закрываться
другими окнами - удобно, если нужно вставить несколько клипов в приложение, развернутое
на весь экран (типа Word).
Параметры\Параметры буфера - вызывает модальное окно, в котором вы
можете сделать следующие изменения:
- Время задержки - через какое время будет скрыто окно программы при установленной опции "Автоскрытие" (в миллисекундах)
- Длина описания - сколько символов будет использоваться по умолчанию в качестве имени.
- Количество клипов - максимальное число динамических клипов. Если число динамических клипов превосходит указанное, лишние клипы удаляются.
- Ключ копирования - горячая клавиша, на которую повешена функция копирования. По умолчанию, Ctrl-Ins. В силу странного поведения компонента, он пишет Ctrl+Num0, но это правильно
- Задержка копирования - сколько времени нужно дать программе для завершения функции копирования. Не рекомендую уменьшать это значение, если есть проблемы с автоматическим копированием в командах ~convert или ~translit, увеличьте это значение
- Ключ вставки - горячая клавиша, на которую повешена функция вставки. По умолчанию, Shift-Insert. По этой клавише будет осуществляться симуляция печати с клавиатуры.
- Задержка вставки - сколько времени дано приложению на завершение операции вставки. Не рекомендую уменьшать это значение. Если возникают проблемы с автоматической вставкой из команд ~convert, ~pureclip, ~translit - увеличьте это значение.
- Задержка печати - сколько времени требуется приложению для реакции на клавишу. Не рекомендую уменьшать это значение. Если возникают проблемы с симуляцией печати - увеличьте это значение. Если вам посчастливилось работать на машине <300MHZ, увеличьте значение минимум до 100.
- Угу - сохранение изменений
- Отмена - выход без сохранение
Параметры\Исключения - вызывает модальное окно, в котором вы можете настроить список окон-исключений, в которых требуется использовать отличные горячие клавиши. Пока эта версия не поддерживает данную функциональность, поэтому эта функция отключена.
Вы можете выбирать имеющиеся клипы, используя выпадающий список. Вы можете
редактировать имя клипа в верхнем поле. Вы можете изменять содержимое клипа в
текстовом поле. Вы можете сделать клип статическим, установив галку в поле.
Дело в том, что число динамических клипов (добавляющихся каждый раз, как в буфер
попадет новое значение) ограничено (во избежание накопления мусора), число
статических клипов больше и они не могут быть удалены автоматически.
Особенности:
Иногда не меняется кодировка при работе команды ~convert
В некоторых программах странно работает функция эмуляции ввода с клавиатуры.
История:
[+] Новая фича
[*] Пофиксен баг
[-] Убрана фича
Версия 1.0a1 - 18.07.05
[+] Первая рабочая версия плагина
[+] Алиас ~puretext
Версия 1.0a - 24.07.05
[+] Возможность сохранения истории буфера обмена через алиас ~clipeditor
[+] Более мощная версия ~pureclip
[+] Алиасы для смены раскладки клавиатуры и транслитерации ~convert и ~translit
[+] Вставка из указанного буфера по команде ~paste
[+] Новая документация
Версия 1.01a - 27.07.05
[*] В некоторых программах плагин не захватывал содержимое буфера
[*] Максимальный размер захватываемого неформатированного текста стал равен 64k