Навеяно идеей
Библиотек пользовательских подпрограмм от Винта.
Библиотека представляет собой совокупность функций для быстрого вызова часто употребляемых пользователем инструкций/команд, которые имеют наиболее краткое и одновременно интуитивно понятное сокращённое написание (по сравнению со стандартными командами) с целью максимального повышения скорости разработки кода и возможности больше сконцентрироваться на создании функционала скрипта, а не на знании всех деталей синтаксиса команд и их параметров.
По изначальной задумке, данная либа использует аббревиатуры для всех частых команд, а также мультипликаторы в некоторых наиболее частых функциях, указывающие интерпретатору скрипта, какое количество раз Вы желаете повторить эти функции. Таким образом, существуют следующие соответствия названий функций:
C=ctrl S=shift A=alt W=win RW=rwin LW=lwin
..DN/D=down U=up L=left R=right M=medium
**Для пущего удобства созданы директивы, присваивающие командам выше и более понятные русские имена, записанные транслитом: **
**niz=down verh=up lev=left prav=right а также многие другие, см. дефайны внутри либы**
**Их можно использовать в качестве подстановочного параметра в kd(), но не как самостоятельные функции**
K=Key(keypress) KK=Key(keyup+keydown) ..D=DECimal/hexa-keycode
LL=lclick(down+up) RR=rclick MM=mclick DD=dblclick
WT=wait WM=waitMs WDn=wheelDown WU=wheelUp
C=ctrl S=shift A=alt W=win RW=rwin LW=lwin
..DN/D=down U=up L=left R=right M=medium
CS=ctrl+shift T=tab ST=shift+tab
Для быстрого набора горячих клавиатурных комбинаций из ряда клавиш-модификаторов ctrl/shift/alt/win созданы функции, поддерживающие всевозможные комбинации этих клавиш и записываемые аббревиированным именем всего из нескольких букв, единственным требованием при составлении имени функции желаемых хоткеев является порядок их перечисления, он должен быть следующим:
C A S M/(L/R)W D K
Если же по ошибке переставить буквы местами, то библиотека разумеется не распознает имени функции и следовательно не выполнит соответствующий хоткей.
Ниже представлен
полный список поддерживаемых либой функций: [spoiler=Сокращённые имена функций в либе Combo.cms]
WT WM KL + KK K KKD KD + C S A + W RW LW +
D U L R T ST + W0 W1 W2 //Wx
LL LC LDN LU RR RC RDN RU MM MC MDN MU DD DC MV
LLD LD LDD LUD RRD RD RDD RUD MMD MD MDD MUD DDD DCD MVD
CA CS AS CAS + CW SW AW + CAW CSW ASW CASW
CLW SLW ALW + CALW CSLW ASLW CASLW
CRW SRW ARW + CARW CSRW ASRW CASRW
CD SD AD + WD RWD LWD
CAD CSD ASD CASD + CWD SWD AWD + CAWD CSWD ASWD CASWD
CLWD SLWD ALWD + CALWD CSLWD ASLWD CASLWD
CRWD SRWD ARWD + CARWD CSRWD ASRWD CASRWD
WDN WU
[/spoiler]
Значения этих функций достаточно легко "расшифровать", зная указанные выше сокращения.
Например: Функция CAS = Ctrl+Alt+Shift, то есть при вызове CAS(
F) будет нажата комбинация горячих клавиш Ctrl+Alt+Shift+
F.
Используя же мультиплаеры, можно указывать желаемое количество выполненных итераций для следующих функций:
[spoiler=Перечень мультификаторных функций]
D U L R T ST WDn/WU KL/aKL
[/spoiler]
Например: три раза нажать шифт-таб = st(3), два раз вверх = u(2).
Для смены раскладки есть две отдельные функции: KL (меняет по ctrl-shift) и альтернативная AKL (по alt-shift). Вот список других примеров, раскрывающий некоторые возможности данной библиотеки:
Необходимая функция или хоткей: | Как можно вызвать с помощью либы: |
Escape
| k(esc)
|
Escape
| kd(#esc)
|
Escape
| kd(escape)
|
Control+L
| c(L)
|
Ctrl+alt+L
| ca(l)
|
Ctrl-Shift-y
| CS(Y)
|
PageDown
| kkd(34)
|
Прокрутка Scroll/WheelDown на 6*3=18 строк
| wdn(6)
|
7x Right (стрелка вправо)
| R(7)
|
1x Right
| R(1)
|
Right
| k(right)
|
Right (с помощью up+down)
| kk(right)
|
Decimal Right
| kd(#right)
|
Decimal Right
| kd(39)
|
Defined Right
| kd(rgt)
|
Hexa Right
| kd(0x27)
|
Rus Right
| kd(prav)
|
W
| s(w)
|
w
| K(W)
|
LClick
| kd(1)
|
LClick по координатам
| LL(10,580)
|
LClick с задержкой (ms)
| lld(50,420,500)
|
MouseMove также с делеем (мс)
| mvd(50,420,500)
|
MouseMove без делея
| mv(50,420)
|
PrintScreen define
| Kd(psn)
|
Ctrl-Home define
| Cd(hm)
|
9 через пару up+down
| kk(9)
|
Hexa 9
| kd(0x39)
|
Wait(0.6)
| wt(0.6)
|
Wait(0.6)
| WM(600)
|
Смена раскладки по ctrl-shift
| cd(#shift)
|
Смена раскладки 2 раза
| KL(2)
|
Смена раскладки по Альт-шифт (единожды)
| AKL(1)
|
Имена функций вместе с их параметрами к счастью являются регистроНЕзависимыми, поэтому можно писать например как
CS(G), так и
cs(g), чтоб получить нажатие ctrl-shift-G. Вызов можно организовать через константы k(space) и через 10-ричные коды клавиш kd(32), а также через определяющие дефайны (если это имя предусмотрено либой, но можно дописать и свой define внутрь либы).
Как подключить библиотеку Combo.cms к своему скрипту: используйте команду в начале своего скрипта:
#include "libs\combo.cms"
Сам файлик combo.cms надо положить в папку с либами libs внутри папки projects с Вашими скриптами (projects/libs/combo.cms). Подключайте, пользуйтесь, ускоряйтесь. Отписывайтесь здесь о найденных багах и несостыковках кода. Есть ещё идеи по допиливанию этой либы: присобачить биндинги (не особо вариант), условные конструкции, внешние команд-лайны, а также добавить массовый параметр коррекции времени (как это сделано в рекордере кликера). Возможно, библиотека и не решит существующей проблемы со строкой в кейстринге, зато сможет ускорить прототипирование многих основных команд кликера и обеспечить реактивный набор хоткеев/кликов.
Приведу тестовый образец синтаксиса библиотеки (иллюстрирующий её аббревиатурную краткость) в скрипте (написал его налету, за минуту), который меняет порядок строк на обратный (реверс-сортировка), копируя по одной строке из первого окна во второе (должны быть открыты два окна текстового редактора, исходный текст для обработки должен быть слева, пустой -- справа, оба окна д.б. развёрнуты на полэкрана, напр. при помощи Win+стрелок вправо/влево) :
#include "libs\combo.cms"
w1()
cd(hm)
s(end)
sd(dlt)
kd(dlt)
w2()
c(end)
s(insert)
k(enter)
Как видно, ещё одним плюсом либы является то, что все задержки вынесены в отдельный внешний макрос, и повторно писать каждый раз эти делеи не нужно, они уже заданы в отдельных субах, где с лёгкостью одноразово могут быть отредактированы под Ваши конкретные нужды.
А напоследок сам файл с библиотекой ускорения КЛМН: