Лево-/правосторонние модификаторы в макросах

Здесь обсуждается всё, что касается макросов.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Far 3: Как теперь работать с макросами?

Post by Max Rusov »

Latest post of the previous page:

2useven10 wrote:А зачем нужны новые флажки?
Для того, чтобы запомнить привязку макроса к левым контролам. Мне _лично_ различие между CtrlKey и LCtrlKey не нужно, но в принципе - задача легко решается...
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Far 3: Как теперь работать с макросами?

Post by HaRT »

2useven10 wrote:нет нейтральных модификаторов, то что без R - левый (shift это отдельная история)
Понятное дело, что если клавиша-модификатор нажимается, то она либо левая, либо правая; я и не предлагаю ввести какую-то ещё нейтральную. Речь идёт о привязке макросов к комбинациям с клавишами-модификаторами. Тут-то и было бы удобно иметь нейтральную привязку (binding), которая бы срабатывала и для левых, и для правых, если для них не прописаны специализированные собственные привязки. Нечто вроде наследования и перегрузки.
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Far 3: Как теперь работать с макросами?

Post by 2useven10 »

HaRT
Слишком много возни.
Придётся таки вводить понятие левых и нейтральных модификаторов (для привязки).
Перелопатить много кода, чтобы это отрабатывать, потом привнесённые баги править...
В итоге получим почти то, что есть сейчас есть, хотя конечно в более 'чистом' виде.
User avatar
SUSim
Posts: 1636
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Far 3: Как теперь работать с макросами?

Post by SUSim »

Если это сложно то фик с ними... но исполнить макрос с Ctrl при нажатии Rctrl необходимо! (раньше вроде было, почему потерялось?)
а приоритет Lctrl над Ctrl это задача фара, ни кто не просит различать левый/правый Shift - ЭТО ДЕЙСТВИТЕЛЬНО одна клавиша.
повторюсь, в идеале:
нажали левый констроль и если есть макрос именно на Lctrl то исполняем его, если макроса на Lctrl нет, то исполняем макрос на ctrl,
нажали правый констроль и если есть макрос именно на Rctrl то исполняем его, если макроса на Rctrl нет, то исполняем макрос на ctrl...
(под ctrl я понимаю клавиши Ctrl, Alt, Win)

Но если это очень трудоёмко, то пусть будет как раньше = при нажатии Rctrl срабатывает макрос на Rctrl или макрос на Ctrl - если макроса на Rctrl нет...
SimSU ··· ·· -- ··· ··-
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Названия клавиш и InputRecordToName

Post by Smitis »

В 3078 произошло разделение модификаторов на точные и обобщённые. InputRecordToName по прежнему возвращает для левых модификаторов Ctrl Alt Shift без L. Но иногда точные модификаторы и не нужны, что бы не плодить "лишних" условий.
Наверное, надо сделать что-то типа
KeyComb=far.InputRecordToName(Input) или KeyComb=far.InputRecordToName(Input,nil) - возвращать с обобщенными модификаторами
KeyComb=far.InputRecordToName(Input,false) - возвращать с точными модификаторами
Ctrl,Alt,Shift,Key = far.InputRecordToName(Input,true) - всегда точные модификаторы
Ну, или ещё как поиграть со вторым параметром.
Разум когда-нибудь победит.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Названия клавиш и InputRecordToName

Post by Shmuel »

Smitis wrote:В 3078 произошло разделение модификаторов на точные и обобщённые. InputRecordToName по прежнему возвращает для левых модификаторов Ctrl Alt Shift без L.
Обобщённые модификаторы существуют только в спецификациях макросов.
Функция far.InputRecordToName не возвращает обобщённые модификаторы. Просто она представляет LCtrl в виде Ctrl и LAlt в виде Alt.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Названия клавиш и InputRecordToName

Post by Smitis »

Shmuel wrote:Обобщённые модификаторы существуют только в спецификациях макросов.
Функция far.InputRecordToName не возвращает обобщённые модификаторы. Просто она представляет LCtrl в виде Ctrl и LAlt в виде Alt.
Да, но InputRecordToName существует, что бы получать символьное представление клавиш в тех же макросах. В результате получается несоответствие названий.
Разум когда-нибудь победит.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Названия клавиш и InputRecordToName

Post by Shmuel »

Smitis wrote:Да, но InputRecordToName существует, что бы получать символьное представление клавиш в тех же макросах. В результате получается несоответствие названий.
Действительно, есть несоответствие. Но реально, если учитывать эту особенность функции, оно не мешает. Я не хочу изменять поведение функции, чтобы не ломать существующие скрипты. А второй параметр, на мой взгляд, только внесёт путаницу.

Существуют бОльшие проблемы с именами и кодами клавиш в Фаре, поэтому данная проблема пока подождёт.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Названия клавиш и InputRecordToName

Post by John Doe »

Возможно не в тему, но
Shmuel wrote:Действительно, есть несоответствие. Но реально, если учитывать эту особенность функции, оно не мешает.
Есть несоответствие между тем, как представлена клавиша, заданная "снаружи", и "внутри" макроса.
- В определении: key="/[LR]Ctrl/"
- Но akey(1) возвращает Ctrl или RCtrl (т.е. получается "/R?Ctrl/")
Shmuel wrote:Я не хочу изменять поведение функции, чтобы не ломать существующие скрипты.
Лучше раз поломать, чем всю жизнь путаться.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Названия клавиш и InputRecordToName

Post by Max Rusov »

John Doe wrote:- Но akey(1) возвращает Ctrl или RCtrl
И это правильно - не надо это менять.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Названия клавиш и InputRecordToName

Post by John Doe »

Были уже споры о том как правильно, а как нет, но автор остался при своём мнении.
Но вне зависимости от того "как правильнее" - должно быть одинаково в разных функциях.

Что касается вопросов совместимости.
Можно оставить для совместимости старые средства.
А нормальную реализацию сделать новыми.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Названия клавиш и InputRecordToName

Post by Max Rusov »

John Doe wrote:Были уже споры о том как правильно, а как нет, но автор остался при своём мнении
Ну так, вроде, если привязка без регэкспов - то все осталось по прежнему, просто Ctrl работает на обоих контролах. А регэкспы, это все-таки экзотика.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Названия клавиш и InputRecordToName

Post by John Doe »

Регэкспы экзотика только для того, кто ещё не умеет их использовать.

Несоответствие обычных обозначений и обозначений-регэкспов это конечно печально.
Но пока оно есть - akey(1) конечно трогать бессмысленно...

А обойти проблему несоответствия регэкспов я предлагал таким способом: http://bugs.farmanager.com/view.php?id=2310
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Названия клавиш и InputRecordToName

Post by Smitis »

Shmuel wrote:А второй параметр, на мой взгляд, только внесёт путаницу.
Так второй параметр уже есть.

То, что akey(1) тоже не соотвествует, пропустил. Видимо, там используется тот же алгоритм.

И если выполнить Keys или eval с получеными "неправильными" кодами, может получится совсем не то, что требовалось.
Разум когда-нибудь победит.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Названия клавиш и InputRecordToName

Post by Shmuel »

Помещайте на мантис, где точно опишите желаемое поведение, с обоснованием. Ибо в ближайшее время изменений не будет.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Названия клавиш и InputRecordToName

Post by Max Rusov »

John Doe wrote:Регэкспы экзотика только для того, кто ещё не умеет их использовать
Регэкспы экзотика потому, что в 99% случаев они не нужны. Обычно макрос привязан к одной клавише.
Post Reply

Return to “Обсуждение макросов”