Lbutton:: Send, % (State1 := !State1) ? "{Lbutton Down}" (a := 1) / 0 : "{Lbutton Up}" (a := 2) / 0
Ребята вот нашел скрипт... Можете расписать что здесь за что отвечает. Я хочу понять как он работает.
Зажимание - отжимание
- MostWanted
- Posts: 11
- Joined: 03 Jan 2021, 07:46
- Contact:
Re: Зажимание - отжимание
LButton горячая клавиша (то есть условие, если была нажата левая кнопка мыши):
При этом значение «Down» и «Up» в данной функции означает «нажатие» и «обжатие» той самой левой кнопки.
То есть при нажатии левой кнопки будет произведено сравнение и отправка переменных методом “Send”.
% (State1 := !State1) ? "{Lbutton Down}" (a := 1) / 0 : "{Lbutton Up}" (a := 2) / 0
Дальше идёт сравнение переменных, в зависимости от которого и будет отправлен тот или иной результат. Но, код лучше было бы написать, как описал пользователь mcl методом if.
При этом значение «Down» и «Up» в данной функции означает «нажатие» и «обжатие» той самой левой кнопки.
То есть при нажатии левой кнопки будет произведено сравнение и отправка переменных методом “Send”.
% (State1 := !State1) ? "{Lbutton Down}" (a := 1) / 0 : "{Lbutton Up}" (a := 2) / 0
Дальше идёт сравнение переменных, в зависимости от которого и будет отправлен тот или иной результат. Но, код лучше было бы написать, как описал пользователь mcl методом if.
Last edited by MostWanted on 22 Feb 2021, 20:28, edited 3 times in total.
Re: Зажимание - отжимание
Lbutton:: Send, % (State1 := !State1) ? "{Lbutton Down}" (a := 1) / 0 : "{Lbutton Up}" (a := 2) / 0
Lbutton:: − сам хоткей, т.е. всё последующее срабатывает при нажатии на левую кнопку мыши.
Send, % − команда отправки нажатий.
Знак процента говорит, что дальше будет не сырой текст, а выражение, которое надо будет высчитать.
Само выражение состоит из громоздко написанного тернарного оператора: <условие> ? <если_верно> : <если_ложно>
(State1 := !State1) − значение переменной State1 меняется на противоположное (единица на ноль и наоборот).
Если в результате State1 не равен нулю, то вычислится и передастся в команду Send следующая часть:
"{Lbutton Down}" − зажимается левая кнопка мыши;
(a := 1) / 0 − Здесь переменной a присваивается единица, и, видимо, чтобы эта единица не попала в команду Send, всё присваивание делится на ноль − так как делить на ноль нельзя, результатом этого куска будет пустая строка. Конкретно в этом коде эта переменная не используется, и её значение всё равно зависит от State1, так что мне не очень понятно, зачем это всё нужно.
Если State1 в вычисленном условии оказывается нулём, то отправится вторая часть:
"{Lbutton Up}" − левая кнопка мыши отпускается.
(a := 2) / 0 − переменной a присваивается 2 и снова экранируется делением на ноль.
Как результат, при первом нажатии на ЛКМ, ЛКМ зажимается, а при втором – отжимается, то есть, ЛКМ начинает работать как переключатель.
Итого, это можно было бы написать длиннее, зато более понятно, таким образом:
Lbutton:: − сам хоткей, т.е. всё последующее срабатывает при нажатии на левую кнопку мыши.
Send, % − команда отправки нажатий.
Знак процента говорит, что дальше будет не сырой текст, а выражение, которое надо будет высчитать.
Само выражение состоит из громоздко написанного тернарного оператора: <условие> ? <если_верно> : <если_ложно>
(State1 := !State1) − значение переменной State1 меняется на противоположное (единица на ноль и наоборот).
Если в результате State1 не равен нулю, то вычислится и передастся в команду Send следующая часть:
"{Lbutton Down}" − зажимается левая кнопка мыши;
(a := 1) / 0 − Здесь переменной a присваивается единица, и, видимо, чтобы эта единица не попала в команду Send, всё присваивание делится на ноль − так как делить на ноль нельзя, результатом этого куска будет пустая строка. Конкретно в этом коде эта переменная не используется, и её значение всё равно зависит от State1, так что мне не очень понятно, зачем это всё нужно.
Если State1 в вычисленном условии оказывается нулём, то отправится вторая часть:
"{Lbutton Up}" − левая кнопка мыши отпускается.
(a := 2) / 0 − переменной a присваивается 2 и снова экранируется делением на ноль.
Как результат, при первом нажатии на ЛКМ, ЛКМ зажимается, а при втором – отжимается, то есть, ЛКМ начинает работать как переключатель.
Итого, это можно было бы написать длиннее, зато более понятно, таким образом:
Code: Select all
LButton::
State1 := Not State1
If (State1 == 1) {
Send {LButton Down}
a := 1
} Else {
Send {LButton Up}
a := 2
}
Return
- MostWanted
- Posts: 11
- Joined: 03 Jan 2021, 07:46
- Contact:
Re: Зажимание - отжимание
Н-да, мой мозг окончательно заплыл в рабочей рутине, раз я не распознал оператора сравнения в представленном коде.mcl wrote: ↑22 Feb 2021, 17:16Lbutton:: Send, % (State1 := !State1) ? "{Lbutton Down}" (a := 1) / 0 : "{Lbutton Up}" (a := 2) / 0
Lbutton:: − сам хоткей, т.е. всё последующее срабатывает при нажатии на левую кнопку мыши.
Send, % − команда отправки нажатий.
Знак процента говорит, что дальше будет не сырой текст, а выражение, которое надо будет высчитать.
Само выражение состоит из громоздко написанного тернарного оператора: <условие> ? <если_верно> : <если_ложно>
(State1 := !State1) − значение переменной State1 меняется на противоположное (единица на ноль и наоборот).
Если в результате State1 не равен нулю, то вычислится и передастся в команду Send следующая часть:
"{Lbutton Down}" − зажимается левая кнопка мыши;
(a := 1) / 0 − Здесь переменной a присваивается единица, и, видимо, чтобы эта единица не попала в команду Send, всё присваивание делится на ноль − так как делить на ноль нельзя, результатом этого куска будет пустая строка. Конкретно в этом коде эта переменная не используется, и её значение всё равно зависит от State1, так что мне не очень понятно, зачем это всё нужно.
Если State1 в вычисленном условии оказывается нулём, то отправится вторая часть:
"{Lbutton Up}" − левая кнопка мыши отпускается.
(a := 2) / 0 − переменной a присваивается 2 и снова экранируется делением на ноль.
Как результат, при первом нажатии на ЛКМ, ЛКМ зажимается, а при втором – отжимается, то есть, ЛКМ начинает работать как переключатель.
Итого, это можно было бы написать длиннее, зато более понятно, таким образом:Code: Select all
LButton:: State1 := Not State1 If (State1 == 1) { Send {LButton Down} a := 1 } Else { Send {LButton Up} a := 2 } Return
100 лет не использовал подобных функций, ввиду использования if. Спасибо за более подробный ответ по этой теме.
Return to “Скрипты и библиотеки”
Who is online
Users browsing this forum: No registered users and 4 guests