Страница 1 из 1
Кнопка,работающая с учетом нажатых клавиш
Добавлено: Ср июн 23, 2021 14:36
Monarch-LFV
Может быть уже была такая же тема (даже не может быть, а скорее всего): как сделать кнопку на панели, функции которой будут различными в зависимости от зажатых на клавиатуре клавиш. То есть, например, обычное нажатие на кнопку - выполняется одна команда, а с зажатым Shift’ом - другая. Если где-то уже обсуждалось прошу навести, так не смог найти.
Добавлено: Ср июн 23, 2021 16:40
Avada
Monarch-LFV
Нормальными способами никак не сделать. Из, скажем так, менее нормальных, известно, например,
вот это. Я не пользовался и не собираюсь, так что — всяческих успехов в самостоятельном изучении, а с моей стороны больше никаких комментариев.
Добавлено: Ср июн 23, 2021 17:28
LonerD
Помимо вышеупомянутого скрипта ButtonBar eXtended, ещё в
TCFS2 есть такой функционал.
Добавлено: Чт июн 24, 2021 05:55
Monarch-LFV
Avada
Спасибо за наводку, попробовал ее - не совсем то, что нужно, да и не работает с вертикальной панелью (в 2011 году ее еще не было).
LonerD
А вот про TCFS2 интересно, можно поподробнее, как сделать такую кнопку? Мануал не короткий, да и ветка содержит 128 страниц, искать нужное сложно.
Re: Кнопка на панели с разными параметрами
Добавлено: Чт июн 24, 2021 06:41
Вахмурка
Добавлено: Чт июн 24, 2021 07:31
Monarch-LFV
Вахмурка
О! То что нужно, спасибо!
Единственное, нужно заморочиться с созданием пользовательских команд, коих у меня будет немало.
Просто пользую консольную утилиту CPDF, для нее наделал много батников и, соответственно, кнопок с разным функционалом, но для каждой еще хотелось бы иметь вариации, типа:
1. Выходные файлы будут заменять исходные - просто нажатие
2. Выходные файлы записываются в отдельную папку - нажатие c CTRL
3. Выходные файлы записываются в ту же директорию, где исходные, но с добавлением суффикса в имени файла - нажатие с SHIFT
И еще нюанс, если в батнике прописать запрос на ввод данных, то при нажатии с CTRL или ALT или SHIFT - теряется фокус окна консоли (немного раздражает), поэтому надо придумывать батники без ввода - как всегда, костыли.

Добавлено: Чт июн 24, 2021 08:06
Вахмурка
2
Админ(ы)
Данную утилиту я нашел убей не помню на каком ресурсе, но сейчас найти не смог нигде (даже на totalcmd.net), кроме как у себя на диске. Почему бы не выложить ее на
сайте?
Добавлено: Сб июн 26, 2021 00:39
LonerD
Monarch-LFV писал(а):А вот про TCFS2 интересно, можно поподробнее, как сделать такую кнопку?
Например, вот так оформляется выполнение двух em-команд, одна при простом нажатии левой кнопкой мыши, вторая - при одновременном зажатии ПКМ, СКМ, Ctrl или Shift.
Код: Выделить всё
[em_myCommand]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef "tem(em_myCommand1), test(pressedCtrl || pressedShift || pressedMButton || pressedRButton) | tcm(em_myCommand2)"
В файле TCFS2.Core.ini можно дописать варианты с разными клавишами клавиатуры.
Добавлено: Сб июн 26, 2021 04:45
Avada
Обсуждается привлечение сторонних средств автоматизации, явно выходящие за рамки стандартного поведения. (К стандарту относится только поведение кнопки, выполняющей с разными клавишами команду cm_Pack, но об этом предостаточно сказано в других местах.) В "Общих вопросах" теме делать нечего, она переносится в "Автоматизацию". Заголовок вместо прежнего "Кнопка на панели с разными параметрами" сделан более вразумительным.
Добавлено: Ср июл 07, 2021 02:23
CaptainFlint
Вахмурка писал(а):2
Админ(ы)
Данную утилиту я нашел убей не помню на каком ресурсе, но сейчас найти не смог нигде (даже на totalcmd.net), кроме как у себя на диске. Почему бы не выложить ее на
сайте?
В свойствах файла упомянут Zmy; подозреваю, что утилита написана этим участником. Он регулярно выкладывает тут всякие мелкие программки на мэйлрушное облако, с которого потом всё удаляет; скорее всего, это одна из них. Лучше обратиться к нему (правда, не помню, есть ли у него аккаунт на сайте; но если нету, можно завести).
Добавлено: Пт июл 30, 2021 18:30
HEXFIX
LonerD писал(а):
Например, вот так оформляется выполнение двух em-команд, одна при простом нажатии левой кнопкой мыши, вторая - при одновременном зажатии ПКМ, СКМ, Ctrl или Shift.
Код: Выделить всё
[em_myCommand]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef "tem(em_myCommand1), test(pressedCtrl || pressedShift || pressedMButton || pressedRButton) | tcm(em_myCommand2)"
В файле TCFS2.Core.ini можно дописать варианты с разными клавишами клавиатуры.
А возможна сцепка из трёх команд? Например, ЛКМ — выделить всё, Ctrl+ЛКМ — снять выделение, Shift+ЛКМ — восстановить выделение?
Добавлено: Чт авг 05, 2021 11:12
MVV
Да, возможна. Там можно указать произвольную последовательность действий, для некоторых из которых с помощью функции
if() можно писать произвольные условия, а если просто один параметр какой-то функции в зависимости от условия, можно просто тернарным оператором воспользоваться. Вот три варианта сделать это (первый позволяет произвольные действия выполнять в каждом случае, второй и третий - только CM-команды):
Код: Выделить всё
; Зажат Ctrl - вызывается cm_ClearAll, а если Shift - cm_RestoreSelection, иначе - cm_SelectAll
TCFS2 /ef "if(pressedCtrl, tcm(524), if(pressedShift, tcm(529), tcm(523)))"
TCFS2 /ef "tcm(if(pressedCtrl, 524, if(pressedShift, 529, 523)))"
TCFS2 /ef "tcm(pressedCtrl ? 524 : (pressedShift ? 529 : 523))"
Добавлено: Пт авг 06, 2021 08:42
sa
Пример кнопки с TCFS2 + TCFS2Tools или вот ещё:
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "if(pressedAlt, varset(1,1), varset(1,0)) tcm(524) tcm(517,1) eval(settext_wait(`Поиск файлов в каталоге под курсором`,findwnd(`TFindFile`))) if(varget(1)==0,sendmsg(findwnd(`TButton`,,findwnd(`TFindFile`),2),$F5))"
WCMICONS.DLL,47
Поиск файлов в каталоге под курсором |(без Alt - сразу после открытия диалога начать поиск)
Если при клике на кнопку не нажата клавиша Alt, то поиск в каталоге под курсором начнётся сразу (с текущими настройками). Для изменения настроек поиска в диалоге требуется дополнительное нажатие Alt.
P.S.
Случайно заметил, что команда "Поиск файлов в каталоге под курсором" (cm_SearchForInCurdir, а точнее её числовой индекс 517) работает и в старых версиях TC (даже в 4.03 - более древней под руками не оказалось). Тогда как упоминание о добавлении команды появилось лишь в версии 9.02 beta (15.06.16).