Ru-Board.club
← Вернуться в раздел «Программы»

» caesar

Автор: sandrey
Дата сообщения: 09.09.2007 15:21

Цитата:
Ладно, со сменой клавиши поэксперементирую

Возможно еще проблема в том, что ...

Цитата:
Цезарь и Пунто живут поку вместе

У Пунто не забыли отключить Break? Может он два раза и переключает у вас потому что один раз это делает caesar, а второй - Punto?

Цитата:
история буфера быстрее забивается мусором (я использую CLCL)

Рекомендую присмотреться к такой возможности caesar, как сохранение в альтернативных буферах обмена. В файле конфигурации по умолчанию используется один дополнительный буфер (Win+C - копирует в него, Win+V - вставляет из него). Но можно ведь использовать до 10 буферов. Сделать что-нибудь вроде Win+1, Win+2, Win+3. Конечно же, это не тоже самое, что "история буфера обмена", но ведь одну и туже цель можно достигнуть несколькими способами. Тут уж все зависит от цели - может вариант caesar вам подойдет, может - нет...
Автор: mad1982
Дата сообщения: 26.09.2007 22:44
Хочется выводить в OSD имя текущей раскладки при переключении. Как реализовать?

Спасибо.
Автор: Smitis
Дата сообщения: 27.09.2007 08:56
sandrey

Цитата:
У Пунто не забыли отключить Break? Может он два раза и переключает у вас потому что один раз это делает caesar, а второй - Punto?

Я Пунто вообще выключал. Сложилось впечатление, что это винда иногда притормаживает при обработке клавиш.


Цитата:
Рекомендую присмотреться к такой возможности caesar, как сохранение в альтернативных буферах обмена.

История CLCL хранит не только текст, но и графику, поэтому без неё никак. К сожалению, сохранение в альтернативных буферах использовать не получается, так как они также работают через основной буфер.
(мечтательно) Вот если бы были альтернативные буферы, независимые от системного...
Автор: sandrey
Дата сообщения: 27.09.2007 10:22

Цитата:
Хочется выводить в OSD имя текущей раскладки при переключении. Как реализовать?

В данный момент никак. Возможна только индикация светодиодами Caps Lock, Num Lock, Scroll Lock.


Цитата:
История CLCL хранит не только текст, но и графику, поэтому без неё никак. К сожалению, сохранение в альтернативных буферах использовать не получается, так как они также работают через основной буфер.

Альтернативные буферы caesar также хранят не только текст, но и графику.
Не совсем понял в чем проблема если альтернативный буфер работает через основной? Посмотрите как реализованы горячие клавиши Win+C, Win+V в примере файла конфигурации (man/caesar.conf-example). И попробуйте - если вы нажмете Win+C, то, в конечном итоге, выделение (любое - графика, текст, html), будет сохранено в альтернативном буфере обмена, а содержимое основного буфера обмена при этом будет прежним (не изменится).
Автор: Smitis
Дата сообщения: 27.09.2007 20:18
sandrey

Цитата:
И попробуйте - если вы нажмете Win+C, то, в конечном итоге, выделение (любое - графика, текст, html), будет сохранено в альтернативном буфере обмена, а содержимое основного буфера обмена при этом будет прежним (не изменится).

Я смотрел - все переключения между основным попадают в историю. Т.е., cesar сохраняет текущий буфер, делает вставку в основной (попадает в историю), затем востанавливает прежнее значение (которое опять попадает в историю). История быстро захламляется.
Автор: Smitis
Дата сообщения: 02.10.2007 14:38
sandrey
Попробовал сделать перкодировку в CP866 (ДОС) (Очень нужно для одной программы). Задаю таблицу через transliteration. Не получается. Если бы конфиг был не в unicode, проблем задать таблицу не было бы. А так некоторые буквы фиг знает как задавать. Например буква "а" в ДОС кодировке имеет код 160 (0xA0). Caesar этот код в конфиге упорно воспринимает как пробел. В принципе логично, но можно ли это как-то победить в данном случае? Например, добавить возможность задавать таблицу перекодировки в hex виде?
П.C. Сейчас попробую победить это путём запуска внешнего скрипта на AutoIt, но хотелось бы непосредственно через caesar
Автор: sandrey
Дата сообщения: 02.10.2007 19:51
Не понял что вы хотите сделать.
Перекодировку из одной кодовой страницы в другую? Но транслитерация для этого не предназначена.

Транслитерация служит для отражения одних символов в другие. Кодовая страница тут не играет никакой роли. А использование unicode, напротив позволяет отражать абсолютно любые символы в любые (хоть русские буквы в китайские иероглифы).
Например: я в Far manager по F4 редактирую текст в кодировке DOS. Пусть я использую горячие клавиши Win+Left и Win+Right так, как они описаны в файле man/caesar.conf-example. Тогда набрав (в кодировке DOS) слово "привет", выделив его и нажав Win+Right я получу в редакторе "privet". Выделение этого "privet" и нажатие Win+Left приводит к появлению окна в котором выполнена обратная транслитерация - показано слово "привет".

А по-поводу перекодировки - разве простое копирование в буфер обмена (из Far'а, например) текста в кодировке DOS исказит этот текст при вставке, например в Блокнот или Word? В этом смысле мне не понятна ситуация с которой вы столкнулись.
Автор: Smitis
Дата сообщения: 02.10.2007 21:43
sandrey

Цитата:
Не понял что вы хотите сделать.

Вот это самое мне и нужно сделать: "Транслитерация служит для отражения одних символов в другие". Есть один набор символов, его надо заменить на другой.

Код:
hotkey Translit-to-CP866 {
Key Win+Y
Task {
SendKeystroke Ctrl+C
Sleep 160
TranslitClipboard CP866
SendKeystroke Ctrl+V
}
}

transliteration CP866 {
From а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
To   * Ў ў Ј ¤ Ґ с ¦ § Ё © Є « ¬ - ® Ї а б в г д е ж з и й к л м н о п
From А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
To Ђ Ѓ ‚ ѓ „ … р † ‡ € ‰ Љ ‹ Њ Ќ Ћ Џ ђ ‘ ’ “ ” • – — ? ™ љ › њ ќ ћ џ
}
Автор: sandrey
Дата сообщения: 03.10.2007 16:37

Цитата:
Вот это самое мне и нужно сделать: "Транслитерация служит для отражения одних символов в другие"

И все-таки, это не транслитерация, а перекодировка, т.к. в unicode код русской буквы "а" - это 0x0430 (а не 0xA0, как в кодировке DOS, и не 0xE0, как в Windows-1251), и его можно отобразить на любой другой символ unicode.

Но проблему понял. Возможно перекодировку реализую в следующих версиях программы.
Автор: vitaly1
Дата сообщения: 15.10.2007 12:13
А можно ли в сабже повесить комбинации Alt+Tab и Alt+Shift+Tab (переключение окон в винде) на другую комбинацию? Например, Win+стрелка вправо/влево.

Не очень удобно стандартными пользоваться, особенно той, что с шифтом.
Автор: sandrey
Дата сообщения: 16.10.2007 13:36
Alt+Tab (как и Alt+F4, Ctrl+Alt+Del) относятся к тем комбинациям, которые запретить весьма затруднительно.
Можно эмулировать нажатие Alt+Tab при нажатии на другую комбинацию, появится окно переключения задач. Но дальше-то что? Ведь это окно видно пока нажата Alt и этого не изменить, а переход к следующей задаче в этом окне все равно происходит при нажатии на Tab.
В общем я попробовал назначить эту функцию на комбинацию, в которой обязательно есть Alt - например Alt+Right, но рабочего варианта не получилось (переключение происходит, но окно со значками задач не исчезает (чтобы исчезло нажмите Ctrl+Alt+Del и Esc)):

Код: hotkey {
Key Alt+Right
Task {
Sendkeystroke Tab
}
}
Автор: vitaly1
Дата сообщения: 16.10.2007 22:04
Большое спасибо

Первая комбинация - это как раз то, что хотелось бы получить в результате. Только конечно без "остаточных" иконок окошек. А кроме указанной комбинации их никак не убрать?

Что касается второго способа, то он у меня почему-то не срабатывает нормально. Сначала идете переключение, а потом, через несколько окон, прекращается. Иногда 3 окна, иногда 5-6. Но в любом случае без панельнки иконок, как при аль-табе, не очень удобно.

Еще один вопросик: можно ли сделать так, чтобы при переключении в любую программу на несколько секунд появлялся флаг той раскладки, которая активна в этой программе? Такая функция есть в Keyboard Ninja, но сама прога у меня работать не хочет - падает через несколько минут работы.
Автор: sandrey
Дата сообщения: 07.11.2007 14:44
Вышла новая версия caesar - 0.9.8.

Среди изменений:

- добавлены команды TaskForLCtrl, TaskForRCtrl, TaskForLShift, TaskForRShift - теперь нажатием на клавиши Ctrl, Shift можно не только переключать раскладку, но и вообще - выполнять любые действия (в частности выводить ODS-текст с именем раскладки и/или выдавать звуковой сигнал);

- добавлена возможность задавать символы в таблицах транслитерации в виде двухбайтовых кодов.

Полный список изменений смотрите в файле whatsnew.txt в дистрибутиве программы. Пример написания конфигурационного файла - man/caesar.conf-example.

Добавлено:


Цитата:
А кроме указанной комбинации их никак не убрать?

Можно. Работает следующий шаманский код:

Код: mapkey lAlt to lAlt
mapkey rAlt to rAlt
mapkey Tab to Tab

hotkey to-next-app {
Key Alt+Right
Task {
Sendkeystroke Tab
}
}

hotkey to-prev-app {
Key Alt+Left
Task {
Sendkeystroke rShift+Tab
}
}
Автор: vitaly1
Дата сообщения: 07.11.2007 15:04
sandrey
Спасибо А можно whatsnew выкладывать на сайте отдельно от дистрибутива, чтобы можно было почитать об изменениях, не скачивая для этого всю программу?
Автор: vitaly1
Дата сообщения: 07.11.2007 17:54

Цитата:
Можно. Работает следующий шаманский код

Спасибо, то что нужно!
Автор: unhappy
Дата сообщения: 13.11.2007 09:26
sandrey
Добрый день.
Сделал так:

Код: hotkey ConManFar {
Key Win+1
Task {
RunApp "C:\Tools\ConMan\conman.exe" "c:\program files\far\far.exe"
}
}
Автор: Smitis
Дата сообщения: 15.11.2007 11:03
sandrey
Вот цитата из caesar.conf-full

Цитата:
; Количество ожидающих потоков.
; (значение от 0 до 24. по умолчанию - 2)
; Всего программа может выполнять одновременно до 32 задач
; (создавать до 32 потоков).
MaxWaitThread n

Вопросы:
- потоков 24 или 32?
- для чего эти потоки нужны?

Ещё пожелания по RunApp. Если в системе в "пуск" в "выполнить" запустить winword.exe, он нормально запуститься (путь прописан в реестре). В Caesarе же надо указывать полный путь. Не запускает Caesar и ярлыки (lnk) и т.д. Может стоит в RunApp использовать другие, более "системые" методы запуска/открытия файлов (ShellExecute, ShellExecuteEx, etc.)?
Автор: sandrey
Дата сообщения: 15.11.2007 14:42

Цитата:
Хотелось бы, чтобы в случае если приложение уже запущено происходил не повторный запуск, а переключение на запущенное приложение.

Возможно реализую в следующей версии. Но работать будет однозначно не везде - см., например, пост выше - пример с Консультантом: запускаем cons.exe, а главное окно программы принадлежит vr330016.res.


Цитата:
Вопросы:
- потоков 24 или 32?
- для чего эти потоки нужны?

Предположим, что есть три задачи, которые выполнятся одновременно:
1. пользователь нажал горячую клавишу и по ней начинают выполняться определенные действия;
2. по расписанию запустилась задача с архивацией каких-то данных;
3. по расписанию запустилась еще одна задача (например, отображение текущего времени и/или еще что-нибудь).
Для одновременного выполнения задач caeasr использует потоки. В данном случае нам нужно 3 потока. caesar может создать максимум 32 потока.
Постоянное создание и завершение потоков - это лишний расход процессорного времени и небольшое (неощутимое) замедление запуска задачи. Поэтому caesar может создать несколько потоков сразу (при старте). Ожидающих потоков. Их количество и задается параметром MaxWaitThread. Эти потоки ничего делать не будут. Но как только появляется задача, которую нужно выполнять в отдельном потоке, то такой поток "просыпается" и тут же начинает выполнять ее. Если все ожидающие потоки заняты, то caesar создает новые. Новые он создает, выполяет в них задачу и завершает. Ожидающий поток после выполнения задачи не завершается, а опять переходит в режим ожидания.
Ожидающих потоков может быть максимум 24, а всего одновременно выполняемых (вместе с ожидающими) - 32.


Цитата:
Может стоит в RunApp использовать другие, более "системые" методы запуска/открытия файлов (ShellExecute, ShellExecuteEx, etc.)?

Так используйте!
В этом случае вместо RunApp нужно писать Run. Кроме того, что вы перечислили, будут работать также следующие команды:

Код: ; откроет документ MySuperPuper.doc в редакторе, который у вас открывает файлы DOC (MS Word, Open Office)
Run MySuperPuper.doc

; откроет страницу Яндекса в браузере по умолчанию
Run http://ya.ru

; создаст новое письмо в вашей почтовой программе (Thunderbird, The Bat)
Run mailto:my-girl@mail.ru

; ну и т.п.
Автор: unhappy
Дата сообщения: 15.11.2007 15:32
к сожалению вернулся на Windows Power Pro + своя программка на 2кб для переключения раскладки по правому CTRL.
причины:
1. неудобно настраивать через caesar.conf
2. как-то "не так" работает переключение раскладки в терминальных приложениях и RDP. причина мне ясна, но упомянутая выше программа на 2кб с этим справляется в силу того что просто эмулирует CTRL+SHIFT.
3. очень нехватает фишки "Switch to if active" - об этом писал выше.

буду наблюдать за развитием и ждать когда же смогу перейти )
Автор: Smitis
Дата сообщения: 15.11.2007 16:04
sandrey
Спасибо, про Run просмотрел...

И ещё о потоках, не до конца понял.
- Поток создаётся для обслуживания ввода с клавиатуры для каждого запущенного приложения?
- Если запущенных приложений больше 32 Caesar не сможет со всеми работать?
Автор: sandrey
Дата сообщения: 15.11.2007 19:25

Цитата:
как-то "не так" работает переключение раскладки в терминальных приложениях и RDP

Работает нормально, если настроить. Для удаленного рабочего стола Citrix смотрите пример в man/caesar.conf-example.


Цитата:
И ещё о потоках, не до конца понял.

Я бы сказал, что совсем не поняли. :)
Поток может создаваться (а может и не создаваться - задача может выполняться в основном потоке приложения) для выполнения команд, написанных в конструкции "task { ... }". А эта конструкция может вызываться из разделов hotkey, job, window. Количество запущенных в Windows приложений никакой роли не играет (хоть сотня). На количество потоков влияет только количество одновременно выполняемых цезарем задач (одновременно выполняемых констукций "task { ... }" и аналогичных ей).
Рекомендуемое значение параметра MaxWaitThread - это его значение по умолчанию - хватает за глаза. :)
Автор: alt76
Дата сообщения: 15.11.2007 19:40
sandrey
А можно ли сабжем сделать тригерную переключалку раскладки по типу - при нажатой AltGr (или другой произвольно настраиваемой кпопки) включается англиская раскладка(или включается следующая), при отпускании возвращается та, что была. До программ(или желательно - до системы вообще) инфа о том, что нажата AltGr инфа не должна доходить и опрос состояния AltGr должен возвращать то, что ее никто и не трогал и она не нажата

если нельзя, то можно такую фичу реализовать ?
Автор: unhappy
Дата сообщения: 16.11.2007 02:39
sandrey
ok. будем посмотреть. очень уж мне размер вашей программы нравится, хотя и понимаю, что в наше время это не так критично )
Автор: unhappy
Дата сообщения: 16.11.2007 10:25
Не хочу запускать в цитриксе программу ещё раз. тем более работаю не только в цитриксе но и регулярно через простой RDP и на разных машинах под разными учетками.

такой вот код не работает:

Код: window citrix {
FileName C:\PROGRA~1\Citrix\ICACLI~1\WFICA32.EXE
TaskForRCtrl {
Sendkeystroke CTRL+SHIFT
osdText "ruslat"
}
}
Автор: sandrey
Дата сообщения: 16.11.2007 12:30

Цитата:
А можно ли сабжем сделать тригерную переключалку раскладки. ... если нельзя, то можно такую фичу реализовать?

У caesar такой возможности нет.
Реализовать можно (правда скрыть от системы нажатие некоторых клавиш - Alt скорее всего в их числе - не удастся). Но нужно ли реализовывать? Я так понял вы хотите аналогию с клавишей Shift (переключение на верхний регистр), только для переключения раскладки. Но если использование Shift оправдано, т.к. используется в большинстве случаев только для одной буквы или знака, то использование, например, Alt для включения/отключения раскладки вряд ли удобно, т.к. будет использоваться не для 1-3 букв, а для слов от 3-х букв и более. В этом случае куда более комфортным выглядит переключение раскладки одним нажатием клавиши (Ctrl, например).


Цитата:
Не хочу запускать в цитриксе программу ещё раз

В Citrix вы фактически работаете на другом компьютере, совершенно в другом окружении. Приложение запущенное на локальном компьютере ничего не знает о том, что творится на удаленном и не может влиять на его окружение. Ваше нежелание поставить в автозагрузку caesar на удаленном компьютере мне не понятно.

Цитата:
работаю не только в цитриксе но и регулярно через простой RDP

Для "Удаленного рабочего стола" Windows можно произвести аналогичную, приведенной в man/caesar.conf-example для Citrix, настройку.


Цитата:
такой вот код не работает

Работает. Только не так как вы думаете. Цитата из файла man/caesar.conf-full:

Код: window [window-name-2] {
...
; Задача, которая будет выполняться при создании (запуске)
; такого окна.
Task task-name
...
}
Автор: alt76
Дата сообщения: 16.11.2007 13:42

Цитата:
Но нужно ли реализовывать? Я так понял вы хотите аналогию с клавишей Shift (переключение на верхний регистр), только для переключения раскладки. Но если использование Shift оправдано, т.к. используется в большинстве случаев только для одной буквы или знака, то использование, например, Alt для включения/отключения раскладки вряд ли удобно, т.к. будет использоваться не для 1-3 букв, а для слов от 3-х букв и более. В этом случае куда более комфортным выглядит переключение раскладки одним нажатием клавиши (Ctrl, например).

меня данная фича интересует в первую очередь ради знаков препинания - которые на русских ХЪЖЭБЮ, т.е. ради одного знака раскладку переключать неудобно
Автор: unhappy
Дата сообщения: 16.11.2007 14:09

Цитата:
Ваше нежелание поставить в автозагрузку caesar на удаленном компьютере мне не понятно.

такой вот я загадочный.

по факту: если я регулярно подключаюсь на порядка 70 машин с целью немного "порулить" - вы предложите мне на каждую из этих 70 машин поставить вашу программу. делать это я не собираюсь в силу ряда как объективных так и субъективных причин. главная из них - не хочу.
зачем мне иметь схожий функционал на всех машинах на которые я подключаюсь в среднем один раз в месяц на две минуты? банально хочу комфорта. ничего более.

значит будем ждать. в паре "PowerPro+kbsw.exe" меня всё устраивает. хотелось поменять две программы на одну, не вышло, ничего плохого.
Автор: sandrey
Дата сообщения: 16.11.2007 14:52

Цитата:
ради одного знака раскладку переключать неудобно

Согласен. Ради одного неудобно.
Но вашу задачу вполне можно решить назначением горячих клавиш. Вот пример для X и Ъ:

Код: hotkey {
Key Win+[
Task {
TypeText [
}
}
hotkey {
Key Win+Shift+[
Task {
TypeText {
}
}
hotkey {
Key Win+]
Task {
TypeText ]
}
}
hotkey {
Key Win+Shift+]
Task {
TypeText }
}
}
Автор: sandrey
Дата сообщения: 16.11.2007 22:09

Цитата:
если я регулярно подключаюсь на порядка 70 машин с целью немного "порулить" - вы предложите мне на каждую из этих 70 машин поставить вашу программу.

В этом случае, действительно, нужен другой подход. И, собственно говоря, вы же его и нашли.
Я так понял мы исходим из предположения, что на всех удаленных компьютерах раскладка переключается по Ctrl+Shift (в Windows значение по умолчанию, кстати, - Alt+Shift). Тогда в вашем конфигурационном файле caesar переключение раскладки клавиатуры по Ctrl задайте следующим образом:

Код: task switch-layout {
SendKeystroke Ctrl+Shift
}

TaskForRCtrl switch-layout
TaskForLCtrl switch-layout
Автор: unhappy
Дата сообщения: 17.11.2007 10:18
sandrey

Цитата:
Я так понял мы исходим из предположения, что на всех удаленных компьютерах раскладка переключается по Ctrl+Shift (в Windows значение по умолчанию, кстати, - Alt+Shift).

поскольку на всех этих машинах Windows ставлю я, с одного заранее настроенного образа, то так и есть.

Спасибо буду пробовать )

Страницы: 123456789

Предыдущая тема: Your Uninstaller


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.