Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Mon 04 Jul, 2016 12:37
by John Doe
В качестве модификаторов можно использовать LWin, RWin, Apps, CapsLock, NumLock, ScrollLock, Pause/Break, PrntScrn, и любые другие клавиши и сочетания не выполняющие действий, например допустимы комбинации вида CtrlB+A
Допускаются любые сочетания с обычными модификаторами Ctrl/Alt/Shift
Дополнительная функция: в качестве модификаторов различаются (отдельные) LShift, RShift, Shift
Для чего это нужно:
Фар не различает левый и правый Shift, а с помощью модуля можно так:
local MacroX = require"xmod"(Macro)
MacroX {
area="Common"; key="CapsLock+A";
action=function()
far.Message"CapsLock+A"
end
}
MacroX {
area="Common"; key="LWin+A";
action=function()
far.Message"Win+A"
end
}
MacroX {
area="Common"; key="CtrlLWin+A";
action=function()
far.Message"CtrlWin+A"
end
}
Примечания:
Ограничение: в поле key не допускается перечисление нескольких сочетаний.
Ограничение: если на клавишу-модификатор (отдельно) уже назначен макрос, то сочетание не сработает.
Pause/Break и некоторые сочетания с LWin/RWin могут использоваться системой и не доходить до фара (при желании можно кое-что освободить).
Ряд сочетаний можно сделать доступными с помощью XKeys.
Отдельные комбинации спецклавиш в сочетании с модификаторами имеют особое название, например:
CtrlNumLock → CtrlPause
CtrlScrollLock → CtrlBreak
В любых сочетаниях с Ctrl клавиша Pause меняет название на Break
В комбинациях где дополнительный модификатор сочетается с Shift-<символ> без Ctrl/Alt, этот символ должен быть представлен той его формой, которая получается с нажатым Shift, т.е. например правильно ShiftLWin+! (а не ShiftLWin+1).
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 15:47
by John Doe
Latest post of the previous page:
sToLp wrote: Но при нажатии клавиш в последовательности LCtrl+ScrollLock lua:=mf.waitkey() показывает CtrlBreak, а при обратной последовательности (ScrollLock+LCtrl) — ScrollLock и т.п.
И какой из этого следует сделать вывод?
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 15:52
by sToLp
John Doe wrote:
sToLp wrote: Но при нажатии клавиш в последовательности LCtrl+ScrollLock lua:=mf.waitkey() показывает CtrlBreak, а при обратной последовательности (ScrollLock+LCtrl) — ScrollLock и т.п.
И какой из этого следует сделать вывод?
Какой в сущности следует сделать вывод пока не знаю, но, кажется, можно отметить, что порядок нажатия клавиш фару может быть и не безразличен.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 16:01
by John Doe
Для данного скрипта в текущей его реализации порядок безразличен.
Но.
В планах есть мысль переписать его с тем чтобы сделать возможным сосуществование с простыми макросами (уже назначенными на наш модификатор), и возможность использования в качестве модификаторов клавиш выполняющий по совместительству и другие действия.
Например тот же пробел: Space+A, ShiftSpace+A, ...
Вот тогда порядок будет важен.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 16:34
by John Doe
Обновил Примечания:
Ограничение: в поле key допустимо указывать только одну клавишу.
Ограничение: если на клавишу-модификатор (отдельно) уже назначен макрос, то сочетание не сработает.
Pause/Break и некоторые сочетания с LWin/RWin могут использоваться системой и не доходить до фара (при желании можно кое-что освободить).
Некоторые сочетания можно сделать доступными с помощью XKeys.
Отдельные комбинации спецклавиш в сочетании с модификаторами имеют особое название, например:
CtrlNumLock → CtrlPause
CtrlScrollLock → CtrlBreak
В любых сочетаниях с Ctrl клавиша Pause меняет название на Break
В комбинациях где дополнительный модификатор сочетается с Shift-<символ> без Ctrl/Alt, этот символ должен быть представлен той его формой, которая получается с нажатым Shift, т.е. например правильно ShiftLWin+! (а не ShiftLWin+1).
В числе потенциальных клавиш-модификаторов перечислил также PrntScrn:
John Doe wrote: В качестве модификаторов можно использовать LWin, RWin, Apps, CapsLock, NumLock, ScrollLock, Pause/Break, PrntScrn, и любые другие клавиши и сочетания не выполняющие действий, например допустимы комбинации вида CtrlB+A
Отдельно обращаю внимание, что в качестве модификатора подходит любое сочетание, например CtrlB+A, ShiftSpace+A, и т.п.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 17:02
by sToLp
John Doe wrote: [*]Ограничение: в поле key допустимо указывать только одну клавишу
Вероятно, одно клавишесочетание, т.е. один шорткат?
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 17:11
by John Doe
sToLp wrote: Вероятно, одно клавишесочетание, т.е. один шорткат?
Да.
А если в терминах руководства luamacro, то один ключ.
(в шапке переформулировал)
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 20:10
by sToLp
John Doe wrote:[*]В любых сочетаниях с Ctrl клавиша Pause меняет название на Break
При попытках в поле key применить сочетание CtrlBreak+Буква и иже с ним вылезает ошибка:
W:\Far\Profile\Macros\modules\mod.lua:30: attempt to index local 'key1' (a nil value)
А вот сочетание Space+Буква, применяемое вкупе со любыми обычными модификаторами и их сочетаниями, работают уже в текущей версии макроса.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 20:28
by John Doe
sToLp wrote: При попытках в поле key применить сочетание CtrlBreak+Буква и иже с ним вылезает ошибка:
Не воспроизводится.
sToLp wrote: сочетание Space+Буква, применяемое вкупе со любыми обычными модификаторами и их сочетаниями, работают уже в текущей версии макроса.
Вкупе с модификаторами конечно, о чём я писал в прошлом посте.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sat 23 Jul, 2016 21:24
by sToLp
John Doe wrote:
sToLp wrote: При попытках в поле key применить сочетание CtrlBreak+Буква и иже с ним вылезает ошибка:
Не воспроизводится.
И правильно, что не воспроизводится. Нашёл таки причину. Приношу извинения. Это не в CtrlBreak дело. Это среди массы прочих ключей затесался у меня CtrlA, который я по инерции ни как не воспринимал как неправильный.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Wed 27 Jul, 2016 13:38
by sToLp
В связи с изложенным на ru-board`е предположением проверил реакцию lua:=mf.waitkey() на одновременное нажатие пары клавиш LCtrl и ScrollLock в последней ночной сборке Far 3.0.4744x64 в Win10x64entRu на четырёх разномастных машинах. В т.ч. на машине тщательно протестированной свежей сборки со свежеустановленной системой и с Фаром в качестве единственной программы, установленной поверх системы. И результат везде одинаковый — Break (в Фаре под КонЭму — CtrlBreak).
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Wed 27 Jul, 2016 15:13
by John Doe
sToLp wrote: И результат везде одинаковый — Break
И?
Это ведь описано в шапке
Update
А у меня вот неожиданно CtrlScrollLock даёт Ctrlö
Впрочем перезагрузка помогла
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Wed 27 Jul, 2016 19:54
by sToLp
John Doe wrote:
sToLp wrote: И результат везде одинаковый — Break
И?
Это ведь описано в шапке
То была реакция на предположение о том, что данное поведение м.б. ошибочно, вплоть до возможной неисправности матплаты. Вот и перепроверил.
А также удостоверился, что КонЭму тоже вносит свои коррективы.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sun 28 Aug, 2016 14:52
by John Doe
Небольшое обновление. В основном внутренние изменения.
Имя модуля: mod → xmod
Кому-то было лень указывать длинные названия клавиш.
Теперь можно задать для них короткие алиасы, опциями в начале файла, или настройками в пользовательском scriptscfg.
Также обращаю внимание что в актуальной версии фара работают комбинации вида CtrlLWin+Alt
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Wed 12 Oct, 2016 19:38
by sToLp
Привожу результаты опробования в качестве модификаторов клавиш CapsLock, NumLock и ScrollLock на разных машинах в системах Win10entRuLtsb x64 и x32 (других систем некоторое время под рукой пока не будет) в Фаре последних ночных сборок. В тех случаях, когда результат срабатывания шортката получался не совсем ожидаемым, перепроверено многократно.
В целом опыт применения сабжевого скрипта вполне удовлетворяет, поскольку сабж существенно расширяет диапазон применяемых в макросах шорткатов. Что, ИМХО, есть очень полезно.
Win, Apps, CapsLock [,...] в качестве модификаторов
Posted: Sun 01 Dec, 2019 06:37
by Nudnyjj
sToLp wrote: ↑Sat 09 Jul, 2016 17:22
На текущий момент в отношении клавиши Pause/Break выяснил следующее.
Во-первых, ни какого влияния на неё со стороны плагинов и макросов самого Фара не обнаружено.
В системе же клавиша Pause/Break предназначена для блокирования/отпускания активной программы. И действительно она блокирует Фар, когда демонстрирует мигающий прямоугольник. Однако программа Punto Switcher всё-таки как-то перехватывает эту клавишу и использует её для переключения раскладок.
Все выше сказанное верно, кроме одного: перехватывает не система, а ConEmu! Без него никакой блокировки не происходит проверено на двух разных системах! Ищу как отключить!