проверка назначения клавиши

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

проверка назначения клавиши

Post by gotar »

Есть ли простой способ определить назначено ли на клавишу(вместе с модификаторами) макро, встроенное действие или она свободна?
Игорь Юдинцев
Posts: 726
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 2 times

Re: проверка назначения клавиши

Post by Игорь Юдинцев »

RCtrl+. RCtrl+. клавиша
если назначено, появится диалоговое окно с предложением удалить привязку.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: проверка назначения клавиши

Post by NightRoman »

Вопрос включает и "встроенное действие".
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: проверка назначения клавиши

Post by DrKnS »

Для встроенных действий есть аж три способа:
1. Метод научного тыка;
2. Чтение справки;
3. Чтение исходного текста.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: проверка назначения клавиши

Post by NightRoman »

Верно. Так и приходится действовать.

Теоретически было бы возможно вывести таблицу всех ключей, которые задействованы в данный момент. Я как-то такое делал в Фаре, генерил ХТМЛ таблицы через макро АПИ и хардкодед встроенные действия, но бросил.

Секции по областям. В каждой секции таблица из 4-х колонок - ключ, встроенное действие, макрос для всех областей, макрос для данной области.
Если нужно выбрать незанятый ключ для какой-то области, то по таким таблицам легко найти.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: проверка назначения клавиши

Post by gotar »

я то имел ввиду вызвать mf.akey(), а потом как-то обработать результат.

Update

Я посмотрел исходники: в рецепте Игорь Юдинцев far вызывает utils.GetMacroWrapper. Можно ли его вызвать из Lua, напимер через ffi?

Update2

за последний год параметры функции utils.GetMacro не менялись. Shmuel, может быть внести ее в Macro API и описать ее параметры?

У меня получился такой код
  1. --  local Shared = { ErrMsg=ErrMsg, pack=pack, checkarg=checkarg, loadmacro=loadmacro, yieldcall=yieldcall,
  2.  
  3. --                   MacroInit=MacroInit, MacroStep=MacroStep }
  4.  
  5. local   Shared ={}
  6.  
  7. local ModuleDir = far.PluginStartupInfo().ModuleDir
  8.  
  9.  
  10.  
  11.   local function RunPluginFile (fname, param)
  12.  
  13.     local func,msg = assert(loadfile(ModuleDir..fname))
  14.  
  15.     return func(param)
  16.  
  17.   end
  18.  
  19. --  Msg = RunPluginFile("lang.lua");
  20.  
  21. --  Shared.Msg = Msg
  22.  
  23. --  akey=akey(1)
  24.  
  25.   utils = RunPluginFile("utils.lua", Shared)
  26.  
  27.  
  28.  
  29. --  utils.GetMacroWrapper (Mode, aKey, argUseCommon)
здесь mode плавающая с двойной точностью. как-то соотносится с area - областью действия макросов. argUseCommon - логического типа, что означает я не понял, похоже что надо задавать true
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: проверка назначения клавиши

Post by Shmuel »

gotar wrote:за последний год параметры функции utils.GetMacro не менялись. Shmuel, может быть внести ее в Macro API и описать ее параметры?
Допустим на минуту, что это уже имеется в Macro API. Можете привести пример полезного применения?
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: проверка назначения клавиши

Post by gotar »

Честно говоря не понял вопроса. Проверка - есть ли макрос на клавише ( см. первое сообщение). По id найти файл с телом макроса, узнать приоритет макроса и отключить его повесив пустой макрос с более высоким приоритетом и т.д. и т.п. Мне кажется очевидным, что добавление такой функции дает целый спектр возможностей доступных сейчас только через перебор функцией GetMacroCopy

p.s. А как все таки задавать mode и что значит argUseCommon в функции utils.GetMacroWrapper?
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: проверка назначения клавиши

Post by Shmuel »

gotar wrote:Мне кажется очевидным, что добавление такой функции дает целый спектр возможностей доступных сейчас только через перебор функцией GetMacroCopy
Не вижу примера полезного использования. Мне совсем неочевидно, что это надо.
gotar wrote:p.s. А как все таки задавать mode и что значит argUseCommon?
Комментировать внутреннее устройство, к сожалению, нет времени.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: проверка назначения клавиши

Post by gotar »

far ведет себя странно. надо найти клавишу на которой весит макрос, приводящий к неожиданному поведению. Сейчас я убираю макросы из scripts начинаю добавлять по одному, нахожу файл, пишу NoMacro, в общем трачу много времени. Если бы можно было простучать используемые клавиши и отключить не нужные сейчас макросы это сэкономило мне много времени.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: проверка назначения клавиши

Post by Shmuel »

gotar wrote:Если бы можно было простучать используемые клавиши и отключить не нужные сейчас макросы это сэкономило мне много времени.
Ну, это уже ближе к делу. (Но вовсе не означает, что функцию utils.GetMacro надо добавлять во внешнее API).
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: проверка назначения клавиши

Post by gotar »

Не могли бы Вы озвучить соображения по которым Вы не хотите вытаскивать наружу GetMacro. Чему бы могло помешать использование в макросах тех же функций, что ииспользует far?

p.s. хотя бы в двух словах, чтобы использовать как отправную точку для поиска в manual, намекните как использовать mode и когда argUseCommon - ложь
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: проверка назначения клавиши

Post by Shmuel »

gotar wrote:Не могли бы Вы озвучить соображения по которым Вы не хотите вытаскивать наружу GetMacro. Чему бы могло помешать использование в макросах тех же функций, что ииспользует far?

p.s. хотя бы в двух словах, чтобы использовать как отправную точку для поиска в manual, намекните как использовать mode и когда argUseCommon - ложь
1. Вопрос надо ставить наоборот: не "чему бы могло помешать", а "чему могло бы помочь".
2. Исходники открыты, чего же ещё надо? У вас нет времени разобраться с исходниками, а у меня нет времени их объяснять.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: проверка назначения клавиши

Post by gotar »

Я ответил на вопрос "чему могло бы помочь" .
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: проверка назначения клавиши

Post by Shmuel »

gotar wrote:Я ответил на вопрос "чему могло бы помочь" .
Хорошо, молодец.
Post Reply

Return to “Нужна помощь”