Page 1 of 1
Плагин на LuaMacro. Как получить состояние Capslock?
Posted: Mon 03 Jun, 2013 04:45
by Acerbic
Пишу плагин на lua через LuaMacro, упёрся в проблему.
Можно ли получить состояние переключателя CapsLock через LuaFar API ? Поскольку плагин, то flock уже не доступен в этом контексте, а при обработке клавиатурных событий флаг CAPSLOCK_ON не сохраняется в InputRecord.ControlKeyState (баг??).
Re: Плагин на LuaMacro. Как получить состояние Capslock?
Posted: Mon 03 Jun, 2013 09:23
by Shmuel
Acerbic wrote:Можно ли получить состояние переключателя CapsLock через LuaFar API ?
Вроде такой функции нет.
Acerbic wrote:Поскольку плагин, то flock уже не доступен в этом контексте
Можно извратиться: послать макрос (far.MacroPost), который вызовет flock и передаст результат вашему плагину посредством Plugin.Call.
Acerbic wrote:а при обработке клавиатурных событий флаг CAPSLOCK_ON не сохраняется в InputRecord.ControlKeyState (баг??).
Смотря где. Функция export.ProcessEditorInput точно получает состояние CAPSLOCK. Возможно и export.ProcessConsoleInput (не проверял).
А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку. Для этого есть Мантис.
Ну и если вы готовы ограничить ваш плагин использованием только с LuaJIT, то через FFI можно вызвать любую функцию Windows, не дожидаясь милости от Фара или Луафара.
Re: Плагин на LuaMacro. Как получить состояние Capslock?
Posted: Mon 03 Jun, 2013 11:21
by Acerbic
Можно извратиться: послать макрос (far.MacroPost), который вызовет flock и передаст результат вашему плагину посредством Plugin.Call.
А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку. Для этого есть Мантис.
диалог. Мантиса боюсь почему-то, придётся регистрироваться.
Ну и если вы готовы ограничить ваш плагин использованием только с LuaJIT, то через FFI можно вызвать любую функцию Windows, не дожидаясь милости от Фара или Луафара.
Спасибо. Пойду теперь гуглить, что такое LuaJIT.
Re: Плагин на LuaMacro. Как получить состояние Capslock?
Posted: Mon 03 Jun, 2013 11:31
by Shmuel
Мантиса бояться не надо - там всё элементарно.
LuaJIT 2.0.1 поставляется с Фаром, начиная с 18 мая, вместо "обычного" Lua. Навряд ли это изменится, так что можно рассчитывать на его присутствие.
Плагин на LuaMacro. Как получить состояние Capslock?
Posted: Tue 05 Jul, 2016 23:15
by John Doe
Code: Select all
shmuel 04.07.2016 17:35:59 +0200 - build 578
1. LuaFAR: добавлена функция win.GetKeyState.
P.S.
Shmuel wrote: А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку.
Уже доделали, всё приходит.