====== ControlSetMouseAction ======
Команда добавляет действие на события мыши в окне Total Commander.
ControlSetMouseAction ] [/B:<1..7>] [ [params]]
ControlSetMouseAction ] [/B:<1..7>] /C: [ [params]]
**Параметры**
|< 100% 15% >|
||Идентификатор контрола (см. таблицу ниже).|
||При использовании переключателя /C --- порядковый номер экземпляра класса контрола.|
||Внутренняя команда Autorun. Если не задана, то никакого действия выполняться не будет, а стандартное действие данной кнопки (например, появление контекстного меню) будет заблокировано.|
||Параметры команды (если применимо). Параметры передаются "как есть", вычисляемые параметры вычисляются при каждом вызове команды.|
**Переключатели, задающие кнопки мыши**
Переключатели задают кнопку мыши или прокрутку колеса. Переключатель обязателен и может быть только один, при указании более одного будет применён последний.
|< 100% 15% 10%>|
^Кнопка^Модификатор^Описание^
|/R\\ /M\\ /L\\ /X1\\ /X2|Нет|Задается нажатие правой, средней, левой и двух дополнительных кнопок мыши. Срабатывает по нажатию кнопки.|
|:::|:U|То же самое, но срабатывает по отпусканию кнопки.|
|:::|:D|То же самое, но срабатывает по двойному клику.|
|/W|Нет|Задается действие на вращение колеса мыши. Без модификаторов срабатывает на вращение в любую сторону.|
|:::|:F|То же самое, но срабатывает по вращению колеса вперед (от себя).|
|:::|:B|То же самое, но срабатывает по вращению колеса назад (к себе).|
**Переключатели, задающие модификаторы**
|< 100% 15% >|
|/K:|C|Действие производится при нажатом Ctrl.|
|:::|S|Действие производится при нажатом Shift.|
|:::|A|Действие производится при нажатом Alt.|
|:::|R|Действие производится при нажатой правой кнопке мыши.|
|:::|M|Действие производится при нажатой средней кнопке мыши.|
|:::|L|Действие производится при нажатой левой кнопке мыши.|
|:::|X1|Действие производится при нажатой первой дополнительной кнопке мыши.|
|:::|X2|Действие производится при нажатой второй дополнительной кнопке мыши.|
Модификаторы Ctrl, Shift, Alt могут использоваться в любых комбинациях, для этого можно задать переключатель несколько раз. Например, /R /K:C /K:S будут работать как Ctrl+Shift+<правая клавиша мыши>. Остальные модификаторы могут использоваться только поодиночке.
**Дополнительные переключатели**
|< 100% 15% >|
|/B:<1..7>|Кнопка нижней панели. Используется только с идентификатором контрола 17.|
|/H:|Сумма флагов зон окна. Используется только с идентфикатором контрола 0. Возможные значения в таблице ниже.|
|/C:|Класс контрола окна ТС. При заданном переключателе используется отличный от стандартного метод получения контрола. При этом первый параметр команды **** используется для задания экземпляра класса.\\ \\ :!: Используйте этот метод, только если нужный контрол недоступен через индексы.\\ \\ :!: Метод не может быть использован для получения "активного/неактивного" контрола, т.к. контрол всегда фиксированный.\\ \\ :!: При изменении вида главного окна метод может работать некорректно (или вообще перестать работать) при настроенных ранее значениях: в зависимости от видимых элементов окна номера экземпляра класса могут измениться.|
**Идентификаторы контролов**
{{tc_window_index_ru.png|}}
|0|Окно TC. Может в т.ч. использоваться совместно с переключателем /H:.|
|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|Неактивная панель вкладок.|
**Список флагов зон окна **
Флаги могут суммироваться. Например: 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 могут не работать (?)