Хоткеи для макросов в виде key sequences (как в mc)

Здесь обсуждается всё, что касается макросов.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Использование дополнительных клавиш для макросов

Post by Skirda »

Latest post of the previous page:

dolzenko_ wrote:
Skirda wrote:Я думаю после релиза станет возможным...
всмысле что будет нового после релиза?
Ну... например такое (вполне себе работающий макрос... из будущего :crazy: ):

Code: Select all

%k=waitkey(0,1); 
$if(%k==B || %k==b || %k==CtrlB) 
  editor.sel(2,0) 
$else 
  $if(%k==K || %k==k || %k==CtrlK)
    editor.sel(2,1) 
  $else
    $if((%k==C || %k==c || %k==CtrlC) && Selected)
      CtrlC
    $else
      $if((%k==Y || %k==y || %k==CtrlY) && Selected)
        CtrlD
      $else
        $SendKey "F1"
      $end
    $end
  $end
$end
В принципе... я могу все это сейчас воткнуть в 2.0... на пробу, т.с., а в 1.7 оно после редиза будет. :oops:
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Использование дополнительных клавиш для макросов

Post by HaRT »

Skirda
А чем этот гипотетический $SendKey отличается от eval()?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Использование дополнительных клавиш для макросов

Post by Skirda »

HaRT wrote:Skirda
А чем этот гипотетический $SendKey отличается от eval()?
Ну... уже не помню - в прошлом году это было :)
Как то, что-то, где-то у меня с eval не срослось. Надо будет вспомнить...
We are the Borg. You will be assimilated.
So Say We All!
lort
Posts: 33
Joined: Thu 25 Dec, 2008 19:42

Re: Использование дополнительных клавиш для макросов

Post by lort »

А можно доработать waitkey чтобы она кроме нажатия клавиш ловила ещё и отпускания? В первую очередь это интересно для модификаторов, назвать их можно, например, UCtrl, UShift, UAlt - тогда такой код на CtrlK повесить можно будет:

Code: Select all

%k=waitkey(0,1);
$if(%k==UCtrl)
  действие по Ctrl-K, сработает после отпускания Ctrl
$else
  $if(%k==C || %k==C || %k==CtrlC)
    действие по Ctrl-K-C, сработает когда нажимаем Ctrl-K и не отпуская Ctrl жмём C
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Использование дополнительных клавиш для макросов

Post by Skirda »

lort, врядли... весь кей-двиг нужно будет переделывать.
а твой пример и так сработает, если ты на Ctrl повесишь отдельный макрос с каким нибудь условием :)

ЗЫ.
waitkey "сегодня" у нас пока с одним параметром! второй параметр - это из будущего :ha:
We are the Borg. You will be assimilated.
So Say We All!
lort
Posts: 33
Joined: Thu 25 Dec, 2008 19:42

Re: Использование дополнительных клавиш для макросов

Post by lort »

Skirda wrote:а твой пример и так сработает, если ты на Ctrl повесишь отдельный макрос с каким нибудь условием
Это как? Макрос на Ctrl ведь сработает только если между нажатием и отпусканием Ctrl никакие клавиши не нажимались. Вот ещё пример использования:

Code: Select all

AltF12 Up 
$while(1) 
  ShiftEnter AltF12 
  %p=waitkey(0);
  $if(%p=="UAlt") Esc $Exit $end 
  $if(%p=="AltBS") Up $end 
$end
Это макрос на AltBS для перехода в предыдущую папку, от идущего в стандартной поставке отличается тем, что история папок остаётся на экране, а исчезает только когда отпускаешь Alt
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Использование дополнительных клавиш для макросов

Post by Skirda »

HaRT wrote:Skirda
А чем этот гипотетический $SendKey отличается от eval()?
Кажется вспомнил :-)
$SendKey будет сразу отдавать клавишу... Хотя, да. eval тоже самое далает, так что с $SendKey перебор :oops:
We are the Borg. You will be assimilated.
So Say We All!
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Хоткеи для макросов в виде key sequences (как в mc)

Post by HaRT »

buniak_a_h wrote: Mon 18 Jan, 2021 22:25У себя я немного переделал скрипт т.о., что можно писать, например, AltF1-F1 вместо AltF1:Double
Обращаю ваше внимание, что такой записью аккорда вы вносите неоднозначность в том, нажимается ли F1 второй раз с теми же модификаторами или без модификаторов (если только не закладывать эту разницу в используемый разделитель). Вот, скажем, у Майкрософта
HaRT wrote: Thu 16 Jan, 2014 12:13 аккорды и сейчас поддерживаются и активно используются, например, в Microsoft Visual Studio.
И там, например, Ctrl+R,W и Ctrl+R,Ctrl+W — два разных аккорда
01:08 МСК
Впрочем, ничего нового, в MacroEx этот минус как раз и означает нажатие с сохранением модификаторов. Прошу прощения за беспокойство.
Last edited by HaRT on Tue 19 Jan, 2021 23:08, edited 1 time in total.
Reason: Добавлено дополнение про MacroEx
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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