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

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

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

Post by Acerbic » Mon 03 Jun, 2013 04:45

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

Можно ли получить состояние переключателя CapsLock через LuaFar API ? Поскольку плагин, то flock уже не доступен в этом контексте, а при обработке клавиатурных событий флаг CAPSLOCK_ON не сохраняется в InputRecord.ControlKeyState (баг??).

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

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

Post by Shmuel » Mon 03 Jun, 2013 09:23

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: 1 time

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

Post by Acerbic » Mon 03 Jun, 2013 11:21

Можно извратиться: послать макрос (far.MacroPost), который вызовет flock и передаст результат вашему плагину посредством Plugin.Call.
:wacko:
А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку. Для этого есть Мантис.
диалог. Мантиса боюсь почему-то, придётся регистрироваться. :facepalm:
Ну и если вы готовы ограничить ваш плагин использованием только с LuaJIT, то через FFI можно вызвать любую функцию Windows, не дожидаясь милости от Фара или Луафара.
Спасибо. Пойду теперь гуглить, что такое LuaJIT. :)

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

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

Post by Shmuel » Mon 03 Jun, 2013 11:31

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

LuaJIT 2.0.1 поставляется с Фаром, начиная с 18 мая, вместо "обычного" Lua. Навряд ли это изменится, так что можно рассчитывать на его присутствие.

User avatar
John Doe
Бюрократ
Posts: 11274
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 88 times

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

Post by John Doe » Tue 05 Jul, 2016 23:15

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 “Разработка плагинов”