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

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

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

Postby Acerbic » Mon 03 Jun, 2013 04:45

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

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

Shmuel
Posts: 4944
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 123 times

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

Postby 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?

Postby Acerbic » Mon 03 Jun, 2013 11:21

Можно извратиться: послать макрос (far.MacroPost), который вызовет flock и передаст результат вашему плагину посредством Plugin.Call.

:wacko:

А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку. Для этого есть Мантис.

диалог. Мантиса боюсь почему-то, придётся регистрироваться. :facepalm:

Ну и если вы готовы ограничить ваш плагин использованием только с LuaJIT, то через FFI можно вызвать любую функцию Windows, не дожидаясь милости от Фара или Луафара.

Спасибо. Пойду теперь гуглить, что такое LuaJIT. :)

Shmuel
Posts: 4944
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 123 times

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

Postby Shmuel » Mon 03 Jun, 2013 11:31

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

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

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

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

Postby 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:Source of the post А вот в диалоговой процедуре это состояние вроде бы не приходит. Можно расценивать это как баг или как недоделку.
Уже доделали, всё приходит.


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

Who is online

Users browsing this forum: No registered users and 3 guests