Плагин на LuaMacro. Как получить состояние Capslock?

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Плагин на LuaMacro. Как получить состояние Capslock?

Post by Acerbic »

Пишу плагин на lua через LuaMacro, упёрся в проблему.

Можно ли получить состояние переключателя CapsLock через LuaFar API ? Поскольку плагин, то flock уже не доступен в этом контексте, а при обработке клавиатурных событий флаг CAPSLOCK_ON не сохраняется в InputRecord.ControlKeyState (баг??).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Плагин на LuaMacro. Как получить состояние Capslock?

Post 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, не дожидаясь милости от Фара или Луафара.
Acerbic
Posts: 80
Joined: Wed 07 Apr, 2010 12:30
Been thanked: 2 times

Re: Плагин на LuaMacro. Как получить состояние Capslock?

Post by Acerbic »

Можно извратиться: послать макрос (far.MacroPost), который вызовет flock и передаст результат вашему плагину посредством Plugin.Call.
:wacko:
А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку. Для этого есть Мантис.
диалог. Мантиса боюсь почему-то, придётся регистрироваться. :facepalm:
Ну и если вы готовы ограничить ваш плагин использованием только с LuaJIT, то через FFI можно вызвать любую функцию Windows, не дожидаясь милости от Фара или Луафара.
Спасибо. Пойду теперь гуглить, что такое LuaJIT. :)
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Re: Плагин на LuaMacro. Как получить состояние Capslock?

Post by Shmuel »

Мантиса бояться не надо - там всё элементарно.

LuaJIT 2.0.1 поставляется с Фаром, начиная с 18 мая, вместо "обычного" Lua. Навряд ли это изменится, так что можно рассчитывать на его присутствие.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Плагин на LuaMacro. Как получить состояние Capslock?

Post by John Doe »

Code: Select all

shmuel 04.07.2016 17:35:59 +0200 - build 578

1. LuaFAR: добавлена функция win.GetKeyState.
P.S.
Shmuel wrote: А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку.
Уже доделали, всё приходит.
Post Reply

Return to “Разработка плагинов”