ControlSetMouseAction
Команда добавляет действие на события мыши в окне Total Commander.
ControlSetMouseAction </R[:U|:D]|/M[:U|:D]|/L[:U|:D]|/W[:F|:B]|/X1[:U|:D]/X2[:U|:D]] [/K:<S|C|A|R|M|L|X1|X2>] [/B:<1..7>] <controlid> [<cmd> [params]] ControlSetMouseAction </R[:U|:D]|/M[:U|:D]|/L[:U|:D]|/W[:F|:B]|/X1[:U|:D]/X2[:U|:D]] [/K:<S|C|A|R|M|L|X1|X2>] [/B:<1..7>] /C:<class> <instance> [<cmd> [params]]
Параметры
| <controlid> | Идентификатор контрола (см. таблицу ниже). |
| <instance> | При использовании переключателя /C — порядковый номер экземпляра класса контрола. |
| <cmd> | Внутренняя команда Autorun. Если не задана, то никакого действия выполняться не будет, а стандартное действие данной кнопки (например, появление контекстного меню) будет заблокировано. |
| <params> | Параметры команды (если применимо). Параметры передаются «как есть», вычисляемые параметры вычисляются при каждом вызове команды. |
Переключатели, задающие кнопки мыши
Переключатели задают кнопку мыши или прокрутку колеса. Переключатель обязателен и может быть только один, при указании более одного будет применён последний.
| Кнопка | Модификатор | Описание |
|---|---|---|
| /R /M /L /X1 /X2 | Нет | Задается нажатие правой, средней, левой и двух дополнительных кнопок мыши. Срабатывает по нажатию кнопки. |
| :U | То же самое, но срабатывает по отпусканию кнопки. | |
| :D | То же самое, но срабатывает по двойному клику. | |
| /W | Нет | Задается действие на вращение колеса мыши. Без модификаторов срабатывает на вращение в любую сторону. |
| :F | То же самое, но срабатывает по вращению колеса вперед (от себя). | |
| :B | То же самое, но срабатывает по вращению колеса назад (к себе). |
Переключатели, задающие модификаторы
| /K: | C | Действие производится при нажатом Ctrl. |
| S | Действие производится при нажатом Shift. | |
| A | Действие производится при нажатом Alt. | |
| R | Действие производится при нажатой правой кнопке мыши. | |
| M | Действие производится при нажатой средней кнопке мыши. | |
| L | Действие производится при нажатой левой кнопке мыши. | |
| X1 | Действие производится при нажатой первой дополнительной кнопке мыши. | |
| X2 | Действие производится при нажатой второй дополнительной кнопке мыши. |
Модификаторы Ctrl, Shift, Alt могут использоваться в любых комбинациях, для этого можно задать переключатель несколько раз. Например, /R /K:C /K:S будут работать как Ctrl+Shift+<правая клавиша мыши>. Остальные модификаторы могут использоваться только поодиночке.
Дополнительные переключатели
| /B:<1..7> | Кнопка нижней панели. Используется только с идентификатором контрола 17. |
| /H:<area> | Сумма флагов зон окна. Используется только с идентфикатором контрола 0. Возможные значения <area> в таблице ниже. |
| /C:<class> | Класс контрола окна ТС. При заданном переключателе используется отличный от стандартного метод получения контрола. При этом первый параметр команды <instance> используется для задания экземпляра класса. |
Идентификаторы контролов
| 0 | Окно TC. Может в т.ч. использоваться совместно с переключателем /H:<area>. |
| 1 | Левая файловая панель. |
| 2 | Правая файловая панель. |
| 3 | Активная файловая панель. |
| 4 | Неактивная файловая панель. |
| 5 | Табуляторы левой панели. |
| 6 | Табуляторы правой панели. |
| 7 | Левая строка состояния. |
| 8 | Правая строка состояния. |
| 9 | Заголовок левой панели. |
| 10 | Заголовок правой панели. |
| 11 | Левая панель дискового пространства. |
| 12 | Правая панель дискового пространства. |
| 13 | Левый выпадающий список дисков. |
| 14 | Правый выпадающий список дисков. |
| 15 | Левая панель (доступна только при наличии открытых вкладок, зона рядом с ними). |
| 16 | Правая панель (доступна только при наличии открытых вкладок, зона рядом с ними). |
| 17 | Панель функциональных клавиш (с функциональными кнопками). |
| 18 | Левое дерево каталогов. |
| 19 | Правое дерево каталогов. |
| 20 | Командная строка. |
| 21 | Панель с заголовком активной панели перед командной строкой. |
| 22 | Поле правки имени объекта. |
| 23 | Разделитель панелей. |
| 24 | Левая панель кнопок дисков. |
| 25 | Правая панель кнопок дисков. |
| 26 | Левая панель вкладок. |
| 27 | Правая панель вкладок. |
| 28 | Панель инструментов. |
| 29 | Вертикальная панель инструментов. |
| 10001 | Активный табулятор панели. |
| 10002 | Неактивный табулятор панели. |
| 10003 | Активная строка состояния. |
| 10004 | Неактивная строка состояния. |
| 10005 | Активный заголовок левой панели. |
| 10006 | Неактивный заголовок левой панели. |
| 10007 | Активная панель дискового пространства. |
| 10008 | Неактивная панель дискового пространства. |
| 10009 | Активный выпадающий список дисков. |
| 10010 | Неактивный выпадающий список дисков. |
| 10011 | Активная панель. |
| 10012 | Неактивная панель. |
| 10013 | Активное дерево каталогов. |
| 10014 | Неактивное дерево каталогов. |
| 10015 | Активная панель кнопок дисков. |
| 10016 | Неактивная панель кнопок дисков. |
| 10017 | Активная панель вкладок. |
| 10018 | Неактивная панель вкладок. |
Список флагов зон окна <area>
Флаги могут суммироваться. Например: 8 + 16 = 24, действие будет назначено на кнопки «свернуть» и «развернуть».
| 1 | Клиентская часть окна. |
| 2 | Заголовок окна. |
| 4 | Кнопка системного меню. |
| 8 | Кнопка «Свернуть». |
| 16 | Кнопка «Развернуть». |
| 32 | Кнопка «Закрыть». |
| 64 | Главное меню. |
| 128 | Левая граница окна. |
| 256 | Правая граница окна. |
| 512 | Верхняя граница окна. |
| 1024 | Верхний левый угол окна. |
| 2048 | Верхний правый угол окна. |
| 4096 | Нижняя граница окна. |
| 8192 | Нижний левый угол окна. |
| 16384 | Нижний правый угол окна. |
Примеры
# Автор - Flasher
# Скроллинг на вкладках акт. панели = перенос активной вкладки влево/вправо:
ControlSetMouseAction /W:B 10017 SendCommand 3015
ControlSetMouseAction /W:F 10017 SendCommand 3016
# Alt+скроллинг на вкладках акт. панели = переход к пред./след. вкладке:
ControlSetMouseAction /W:F /K:A 10017 SendCommand 3005
ControlSetMouseAction /W:B /K:A 10017 SendCommand 3006
# Atl+ПКМ по вкладкам активной панели = заблокировать/разблокировать вкладку:
ControlSetMouseAction /R /K:A 10017 SendCommand 3012
# Shift+ЛКМ по вкладкам = переключение на первую вкладку в соотв. панели:
ControlSetMouseAction /L /K:S 26 SendCommand 5201
ControlSetMouseAction /L /K:S 27 SendCommand 5301
# Ctrl+ПКМ по табуляторам = настроить наборы колонок:
ControlSetMouseAction /R /K:C 5 SendCommand 483
ControlSetMouseAction /R /K:C 6 SendCommand 483
# Alt+ПКМ по табуляторам активной панели = настроить текущий набор колонок:
ControlSetMouseAction /R:U /K:A 10001 SendCommand 2920
# Ctrl+ПКМ по файловой панели = отключение сортировки в соотв. панели:
ControlSetMouseAction /R /K:C 1 SendCommand 125
ControlSetMouseAction /R /K:C 2 SendCommand 225
# Alt+ПКМ по файловой панели = обратная сортировка в соотв. панели:
ControlSetMouseAction /R /K:A 1 SendCommand 130
ControlSetMouseAction /R /K:A 2 SendCommand 230
# Alt+ПКМ по "активной" панели дисков = открытие 'Мой компьютер':
ControlSetMouseAction /R /K:A 10015 SendCommand 2122
# ПКМ по панели дискового места = открытие 'Рабочий стол' в соотв. панели (для 32-битной версии):
ControlSetMouseAction /R /C:TMyPanel 2 CommandExec /CD ::
ControlSetMouseAction /R /C:TMyPanel 1 CommandExec /CD "" ::
# Alt+ЛКМ по разделителю панелей = установка равных размеров панелей:
ControlSetMouseAction /L /K:A 23 SendCommand 909
# Shift+СКМ всюду = переключение на главную панель инструментов,
# где em_Bar состоит из OPENBAR1 и %A в полях Команда: и Параметры:, соотв.:
ControlSetMouseAction /M:U /K:S 0 CommandExec em_Bar Default.bar
# Следующие две команды включают em_Lang, где OPENLANGUAGEFILE прописано в поле "Команда:", а %A в поле "Параметры:":
# ПКМ по главному меню = обновление текущей локализации:
ControlSetMouseAction /R /H:64 0 CommandExec em_Lang %"IniRead('~/R', %COMMANDER_INI%, Configuration, LanguageIni)"
# Alt+ПКМ по главному меню = переключение между русским и английским языками:
ControlSetMouseAction /R /K:A /H:64 0 ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef if(tcini(Configuration,LanguageIni,`WCMD_RUS.LNG`),tem(em_Lang),tem(`em_Lang Wcmd_rus.lng`))'
# Команды ниже идут как идеи, требуют дополнительных пользовательских команд
# Alt+ЛКМ по вкладкам = сохранение вкладок в заданный файл в соотв. панели:
ControlSetMouseAction /L /K:A 26 CommandExec em_SaveTabsL
ControlSetMouseAction /L /K:A 27 CommandExec em_SaveTabsR
# СКМ по заголовку окна и упр. элементам = отображение доп. информации в заголовке:
ControlSetMouseAction /M:U /H:62 0 CommandExec em_AddTitleInfo
Примечания
Хотя плагин оптимизировался по скорости, ввиду большого количества перехватываемых и обрабатываемых сообщений, рекомендуется по возможности минимизировать количество устанавливаемых обработчиков. Также рекомендуется наиболее часто возникающие события (например, прокрутку колесом мыши, левый клик) размещать в начале.
Ограничения
Минимальные требования: Autorun 2.0.11+, Total Commander 9.0+.
Под Windows 7 действия, назначенные на колесо мыши, не блокируют действие по умолчанию для этого контрола.
Кнопки X1/X2 могут не работать (?)
