Описание команды


keybd

Эмулирует нажатие клавиш в активном окне.

keybd=Pause~~String

Параметры:

Pause~~StringСтрока клавиатурных нажатий. Где:
Pause - обязательный первый параметр - количество миллисекунд между вызовом нажатий.
String - строка клавиатурных нажатий. см. Дополнение №1.
Между командами эмуляции необходимо ставить разделитель ~~.
В командах эмуляции пробел заменяется на символ . Пример: {TAB№4}.

Примечания:

Команда keybd одной из первых появилась в утилите и была направлена на переключение настроек Total Commander путём клавиатурных нажатий в окне настроек. На данный момент я считаю эту команду не совсем подходящей для работы с окнами, большинство примеров оставлены для ознакомления с синтаксисом и имеют аналог. см. Команда buttn.

Есть явные минусы использования нажатий в окнах. По разным причинам (загруженность процессора, "медленный" компьютер...) нажатия могут "пройти" в холостую или нажать не то и не там. В этой команде нет возможности определить, когда появится/закроется то или иное окно/диалог и невозможно контролировать сами нажатия. Пауза, какая бы она ни была, тоже не 100%-й выход из ситуации.

Рекомендую для работы с окнами воспользоваться командой buttn, которая позволяет эмулировать нажатие мыши на указанном элементе интерфейса и/или устанавливать текст в заданный элемент. В этой команде есть подпараметры, с помощью которых можно полностью контролировать весь процесс работы с окном, что придаёт стабильность при любых внешних условиях.

Есть задачи, которые можно решить только эмуляцией клавиатурных нажатий. В таких задачах рекомендую использовать команду keybd совместно с командой buttn.

См. также:

activ, amenu, buttn, iconw, mxmnz, ontop, redrw, rsize, smenu, ssize, thide, title, tityn, trans, wdrag, whide, wmenu, wpull, wshow

Примеры:
 Как создать кнопку?

%Zfocusp shape=1 creat="%t"||[combo=BOX2].[combo=BOX3]||clip<>||jump<3> pause=500 tcimg=$cm906 keybd=0~~{ENTER} pause=500 focusp arhvup ;; находясь в архиве добавить в него файл с содержимым буфера обмена, имя файла и расширение выбираются в диалоговом окне.

%Zfocusp shape=1 creat=%%TCIMG_TEMP%%||[combo=BOX2].[combo=BOX3]||clip<>||jump<3> pause=500 tcimg=$cm906 keybd=0~~{ENTER} pause=500 focusp arhvup pause=600 focusp tcimg=$cm5002~~$cm3008 ;; находясь в архиве добавить в него файл с содержимым буфера обмена, имя файла и расширение выбираются в диалоговом окне., выйти из архива, перейти в другую панель и закрыть там все незаблокированные вкладки.

%Zkeybd=0~~{TAB} creat=%%TEMP%%\||filename||code<0>||noext<>||jump<1> pause=500 tcimg=$cm906 buttn=TDLGZIP||+tcTDLGZIP ;; из открытого архива перейти в другую панель, создать файл filename в папке Temp, перейти к файлу и переместить в архив

%Zkeybd=0~~{TAB} creat=%%TEMP%%\||filename||code<0>||noext<>||jump<1> pause=500 tcimg=$cm906 buttn=TDLGZIP||+tcTDLGZIP||$h buttn=TDLG2FILEACTIONMIN||x|$e tcimg=$cm570 ;; из открытого архива перейти в другую панель, создать файл filename в папке Temp, перейти к файлу и переместить в архив, дождаться закрытия окна упаковки и вызвать команду "Назад"

<PRESW=13> keybd=0~~^c exect=$var_s=StringRegExp(StringLeft(ClipGet(),1),'[а-яё]')?_CmdCm('bufsr=@@QWERTYinENG'):_CmdCm('bufsr=@@QWERTYinRUS') keybd=0~~+{INSERT} <PRESW=1B> :EXIT: <PRESWEND> ;; при нажатии на клавиши "Pause" проверяет буфер обмена: если первая буква русская, то переводит всё содержимое буфера обмена в клавиатурные английские буквы, если нет, то наоборот, затем вставляет текст в активный окно программы

global runcm=1 buttn=GLOBALRUNCM<1>||$p0||Edit1|$isysdm.cpl||Button2 pause=1500 keybd=500~~^{TAB№3}~~{TAB№4}~~{ENTER} ;; запустить диалог "Свойства системы", перейти на вкладку "Защита системы", нажать на кнопку "Создать" (Windows 10 - может работать нестабильно, см. пример в команде buttn)

keybd=0~~^!{F5} ;; эмуляция нажатия клавиш Ctrl + Alt + F5

keybd=0~~{CTRLDOWN} tcimg=$cm508 keybd=0~~{CTRLUP} ;; запустить диалог упаковки Total Commander в ту же панель

keybd=0~~{F2}~~{RIGHT} ;; переименовать имя объекта под курсором, снять выделение с имени в режиме редактирования оставив курсор в крайней позиции.

keybd=0~~{TAB} tcimg=50~~$cm521~~500 * cname=%O * keybd=0~~{ENTER} pause=400 tcimg=50~~$cm2023 ;; в панели назначения выделить только файлы с именем, похожим на имя файла под курсором и оставить только выделенные

keybd=0~~{TAB} tcimg=50~~$cm521~~500 * cname=%O * keybd=0~~{ENTER} ;; в панели назначения выделить только файлы с именем, похожим на имя файла под курсором

keybd=0~~{TAB} tcimg=50~~$cm521~~500 *.%E keybd=0~~{ENTER} pause=400 tcimg=50~~$cm2023 ;; выделить в панели назначения только файлы с расширением файла под курсором и оставить только выделенные

keybd=0~~{TAB} tcimg=50~~$cm521~~500 *.%E keybd=0~~{ENTER} ;; выделить в панели назначения только файлы с расширением файла под курсором

keybd=0~~+{F4} buttn=TCOMBOINPUT||+tcTCEDIT1|$i"%O".txt|$w ;; вызвать диалог создания нового файла с именем объекта под курсором.txt

keybd=0~~+{F4} buttn=TCOMBOINPUT||+tcTCEDIT1|$iRead_Me.txt|$w ;; вызвать диалог создания нового файла с именем Read_Me.txt

keybd=0~~+{F4} buttn=TCOMBOINPUT||+tcTCEDIT1|$iRussia.txt|$w|$e openf="%PRussia.txt"||%%COMMANDER_PATH%%\AkelPad.exe ;; вызвать диалог создания нового файла с именем Russia.txt + после создания открыть в AkelPad

patht=<info=f50%P%N//>||fold<> keybd=0~~{SPACE} ;; перейти в другой панели к пути объекта запуска ярлыка под курсором и выделить его

sends=<inikey=8//%%TCIMG_PATH%%\TCIMG.ini//ZMenu//1_PID> <IF> [info=s70*GLOBALSENDS<1>] = 1 <THEN> keybd=0~~+{TAB} <ENDIF> ;; вызвать контекстное меню, запущенное командой zmenu=hotkey_Menu_Example - горячие клавиши SHIFT + TAB (если нет процесса, то не вызывать)

swcmd=tcimg=$cm2050¦¦keybd=0~~{END}¦¦keybd=0~~{HOME}¦¦CursorPosition ;; установить курсор по кругу: на первый файл, в конец панели, в начало панели

tabac=3||1:-1 keybd=0~~{TAB} ;; в другой панели переключаться между первой и последней вкладками (оставаться в активной панели)

tcimg=$cm2400 keybd=0~~{TAB№8}~~{F4}~~{HOME}~~{DOWN№1}~~{ENTER}~~{TAB№7}~~{ENTER} pause=50 keybd=0~~{ESC} ;; групповое переименование | «все строчные»

tcimg=$cm497~~10 keybd=20~~{TAB}~~{DOWN}~~{ENTER} ;; расширение после имени Вкл./Выкл.

tcimg=$cm498 keybd=50~~{TAB№4} 24 keybd=0~~{ENTER} ;; настроить панель инструментов при экране 1024 (в сборке TC Image)

tcimg=$cm508~~10 keybd=20~~+{TAB№2}~~{HOME}~~{DOWN№6}~~{ENTER} ;; вызвать шестое по списку расширение в диалоге архиваторных плагинов и заархивировать выделенное

tcimg=$p0 patht=%T%N\' pause=500 keybd=0~~{TAB} tcimg=$p1 ;; перейти на одноимённый файл в другой панели

tcimg=50~~$cm2026~~$cm525~~$cm905~~500 keybd=0~~{TAB} *.doc;*.txt ;; показать всё без подкаталогов, выделить всё и копировать с фильтром *.doc;*.txt

tcimg=50~~$cm2026~~500~~$cm525~~$cm905~~1000 keybd=0~~{ENTER} ;; копировать все файлы в подкаталогах

tcimg=50~~$cm302~~$cm321~~$cm2026~~500 keybd=50~~{HOME}~~{TAB} tcimg=50~~$cm302~~$cm321~~$cm2026 ;; показать все файлы в обеих панелях без подкаталогов

tcimg=50~~$cm302~~$cm323~~$cm2014~~500 keybd=0~~{TAB} tcimg=50~~$cm302~~$cm323~~$cm2014 ;; показать размер папок в обеих панелях

tcimg=50~~$cm314~~500 |*\ keybd=0~~{ENTER} ;; отображать только файлы

tcimg=50~~$cm477 pause=50 keybd=0~~{TAB№7} ` keybd=0~~{ENTER} ;; без значков в панелях

tcimg=50~~$cm477 pause=50 keybd=0~~{TAB№7} 24x24 keybd=0~~{ENTER} ;; размер значков в панелях 24

tcimg=50~~$cm482~~50 keybd=50~~{TAB№10}~~{ENTER} ;; вызвать окно настройки эскизов по типам файлов

tcimg=50~~$cm483~~50 keybd=50~~{TAB№3}~~{ENTER№2} ;; вызвать окно настройки нового набора колонок

tcimg=50~~$cm483~~50 keybd=50~~{TAB№3}~~{ENTER№2}~~+{TAB№7}~~{ENTER} ;; вызвать окно настройки нового набора колонок + вызов плагинов

tcimg=50~~$cm484~~50 keybd=50~~{TAB№2}~~{ENTER}~~{TAB№2}~~{ENTER} ;; вызвать окно настройки WCX плагинов

tcimg=50~~$cm484~~50 keybd=50~~{TAB№3}~~{ENTER}~~{TAB}~~{ENTER} ;; вызвать окно настройки WFX плагинов

tcimg=50~~$cm484~~50 keybd=50~~{TAB№4}~~{ENTER}~~{TAB}~~{ENTER} ;; вызвать окно настройки WLX плагинов

tcimg=50~~$cm484~~50 keybd=50~~{TAB№5}~~{ENTER}~~{TAB}~~{ENTER} ;; вызвать окно настройки WDX плагинов

tcimg=50~~$cm486~~50 keybd=50~~{TAB№17}~~{ENTER} ;; вызвать окно настройки данных о типах файлов

tcimg=50~~$cm486~~50 keybd=50~~+{TAB№4}~~{ENTER} ;; вызвать окно настройки данных о типах файлов

tcimg=50~~$cm492~~50 keybd=50~~{TAB}~~{ENTER}~~{TAB№2} 8 keybd=50~~{ENTER}~~{TAB№3}~~{ENTER} ;; установить размер шрифта в панелях 8

tcimg=50~~$cm494~~50 keybd=50~~{TAB№16}~~{SPACE}~~{ENTER} ;; отключение/включение раскраски файлов

tcimg=50~~$cm494~~50 keybd=50~~{TAB№17}~~{ENTER} ;; вызвать окно настройки расцветки файлов

tcimg=50~~$cm494~~50 keybd=50~~+{TAB№4}~~{ENTER} ;; вызвать окно настройки расцветки файлов

tcimg=50~~$cm494~~50 keybd=50~~+{TAB№5}~~{SPACE}~~{ENTER} ;; отключение/включение раскраски файлов

tcimg=50~~$cm501 clpget keybd=0~~{ENTER} ;; поиск файлов, взяв в качестве имени содержимое буфер обмена

tcimg=50~~$cm501 keybd=50~~{DELETE}~~{TAB№7}~~{SPACE} clpget pause=100 keybd=0~~{ENTER} ;; поиск файлов, содержащих текст из буфера обмена

tcimg=50~~$cm501 keybd=50~~{DELETE}~~{TAB№7}~~{SPACE} clpget pause=100 keybd=50~~{TAB№4}~~{SPACE}~~{ENTER} ;; поиск файлов, НЕ содержащих текст из буфера обмена

tcimg=50~~$cm502~~100 keybd=50~~{TAB№6} {ENTER} ;; изменить дату модификации выделенных объектов на текущую

tcimg=50~~$cm509~~50 keybd=50~~{DELETE}~~{TAB№4}~~{SPACE}~~{ENTER} ;; распаковать архивы в одноимённые папки активной панели

tcimg=50~~$cm509~~50 keybd=50~~{DELETE}~~{TAB№4}~~{SPACE}~~{ENTER} ;; распаковать выделенные архивы в текущую панель, каждый в именной каталог

tcimg=50~~$cm509~~50 keybd=50~~{TAB№4}~~{SPACE}~~{ENTER} ;; распаковать выделенные архивы в панель назначения, каждый в именной каталог

tcimg=50~~$cm516~~50 keybd=50~~{TAB№8}~~{LEFT}~~{ENTER} ;; выделение мышью Правой\Левой кнопкой

tcimg=50~~$cm519~~50 keybd=0~~{ENTER} ;; вызвать окно Ассоциаций и нажать Enter

tcimg=50~~$cm521~~500 * cname=%O * keybd=0~~{ENTER} pause=400 tcimg=50~~$cm2023 ;; выделить файлы с именем, похожим на имя файла под курсором и оставить только выделенные (работает при cm_DirBranch)

tcimg=50~~$cm521~~500 * cname=%O * keybd=0~~{ENTER} ;; выделить файлы с именем, похожим на имя файла под курсором (работает при cm_DirBranch)

tcimg=50~~$cm521~~500 *%O* keybd=0~~{ENTER} ;; выделить файлы с именем, похожим на имя файла под курсором

tcimg=50~~$cm521~~500 *(2).* keybd=0~~{ENTER} ;; выделить файлы, в имени которых находится (2)

tcimg=50~~$cm521~~500 *(2).*;*(3).*;*(4).*;*(5).*;*(6).*;*(7).*;*(8).*;*(9).* keybd=0~~{ENTER} pause=400 tcimg=50~~$cm2023 ;; выделить файлы, в имени которых находится (2),(3),(4),(5),(6),(7),(8),(9) и оставить только выделенные

tcimg=50~~$cm521~~500 *(2).*;*(3).*;*(4).*;*(5).*;*(6).*;*(7).*;*(8).*;*(9).* keybd=0~~{ENTER} ;; выделить файлы, в имени которых находится (2),(3),(4),(5),(6),(7),(8),(9)

tcimg=50~~$cm521~~500 *.doc;*.txt keybd=0~~{ENTER} ;; выделить файлы *.doc;*.txt

tcimg=50~~$cm521~~500 >{Текст}_Текстовые_файлы_ALL keybd=0~~{ENTER} ;; выделить только файлы шаблона {Текст}_Текстовые_файлы_ALL

tcimg=50~~$cm525~~$cm905~~500 keybd=0~~{TAB} *.doc;*.txt ;; выделить всё и копировать с фильтром *.doc;*.txt

tcimg=50~~$cm905~~500 keybd=0~~{ENTER№2} ;; копировать выделенное на FTP с заменой

tcimg=50~~$cm905~~500 keybd=0~~{F2} ;; отправка выделенного в очередь копирования

tcimg=50~~$cm905~~500 keybd=0~~{TAB} *.doc;*.txt ;; копировать с фильтром *.doc;*.txt

tcimg=50~~$cm905~~500 keybd=0~~{TAB} >{Архивы}_Архивы ;; копировать с шаблоном-фильтром >Архивы

tcimg=50~~$cm906~~500 keybd=0~~{DEL} %T%M keybd=50~~{TAB№7}~~{DOWN}~~{ENTER} ;; копировать текущий файл с заменой файла из другой панели с потерей имени

tcprm=cm_List~~%%COMMANDER_INI%% pause=500 keybd=0~~4 ;; открыть файл в Lister и переключиться на просмотр другим плагином

tcprm=cm_List~~%P%N pause=500 keybd=0~~4 ;; открыть файл под курсором в Lister и переключиться на просмотр другим плагином

tcprm=cm_List~~[tc=AA] pause=500 keybd=0~~4 ;; открыть файл под курсором в Lister и переключиться на просмотр другим плагином


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru