Win, Apps, CapsLock [,...] в качестве модификаторов

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

В качестве модификаторов можно использовать LWin, RWin, Apps, CapsLock, NumLock, ScrollLock, Pause/Break, PrntScrn, и любые другие клавиши и сочетания не выполняющие действий, например допустимы комбинации вида CtrlB+A

Допускаются любые сочетания с обычными модификаторами Ctrl/Alt/Shift

Дополнительная функция: в качестве модификаторов различаются (отдельные) LShift, RShift, Shift

Установка: xmod.lua поместить в папку Macro\modules

Использование:

Примечания:

Требования: Far 3 build > 4736

Связанные темы:
Attachments
xmod-2.2.7z
(2 KiB) Downloaded 391 times
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

Latest post of the previous page:

John Doe

Воспроизводится в т.ч. на Win7x32 из вновь установленного Фара свежей сборки.
[winX.png
[winX.png (32.35 KiB) Viewed 16026 times
На первой позиции показанного меню по AltF4 открывается _macroinit.lua.

Дополнение: и на второй позиции по AltF4 тоже открывается _macroinit.lua, а по Enter на обеих позициях срабатывают соответствующие им макросы.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

sToLp wrote: открывается _macroinit.lua
Действительно, в чистом фаре и у меня так.
А с модулем rebind получается загадочно (но тут это офтопик)

В общем, на первый взгляд поправить легко, вечером попробую.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

Обновление в шапке.
Теперь в определённых с помощью модуля макросах корректно заполняется путь к макрофайлу (используемый в меню конфликта макросов, и в макробраузере)

Способ использования несколько изменился, теперь в _macroinit.lua ничего делать не нужно, а инициализация происходит в самих макрофайлах, такой командой local MacroMod = require"mod"(Macro)
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

John Doe wrote:Обновление в шапке.
Спасибо! Теперь в случае совпадения шорткатов из меню конфликтующих макросов по AltF4 вызываются соответствующие макросы.

Протестировал следующие — в части сочетаний с клавишей Win применялись только допускаемые системой Win10x64entRu, и все они нормально работают.

Большинство остальных шорткатов тоже работают штатно. На текущий момент отказы выявились лишь в следующих случаях:

1) ScrollLock не срабатывает в сочетаниях с Ctrl и с Alt. При этом по CtrlScrollLock+A срабатывает контрольный макрос на CtrlA;

2) не работают сочетания с Pause и с ShiftPause;

3) не работают шорткаты CtrlApps+. При этом по CtrlApps+A срабатывает контрольный макрос на CtrlA.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

sToLp wrote: ScrollLock не срабатывает в сочетаниях с Ctrl и с Alt. При этом по CtrlScrollLock+A срабатывает контрольный макрос на CtrlA;
Нажатие CtrlScrollLock для системы эквивалентно Break, т.е. CtrlPause
А оба других сочетания у меня работают нормально (CtrlAltScrollLock+, AltScrollLock+A)
То что это не работает у вас скорее всего связано с аппаратными особенностями клавиатуры.
sToLp wrote: 2) не работают сочетания с Pause и с ShiftPause;
У меня вот тоже на ноутбуке не работает, а на десктопе нормально/
по ShiftPause+A действительно срабатывает макрос Pause+A, поэтому в шапке и сказано, что сочетания с Shift пока не поддерживаются (связано с особенностями наименования клавиш в фаре, рассмотрю возможность исправления)
sToLp wrote: не работают шорткаты CtrlApps+
У меня работают..
А вообще сочетание CtrlApps распознаётся? Проверить можно запустив lua:=mf.waitkey()
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

John Doe wrote:...
Спасибо за пояснения, попробую покопаться в особенностях настройки клавиатуры в Win10.
John Doe wrote:А вообще сочетание CtrlApps распознаётся? Проверить можно запустив lua:=mf.waitkey()
Да, распознаются и CtrlApps, и RCtrlApps.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

sToLp wrote: не работают шорткаты CtrlApps+. При этом по CtrlApps+A срабатывает контрольный макрос на CtrlA.

Code: Select all

local F = far.Flags
local key = "CtrlApps"
local r = assert(far.NameToInputRecord(key),key)
local mask = bor(F.LEFT_ALT_PRESSED,F.RIGHT_ALT_PRESSED,F.LEFT_CTRL_PRESSED,F.RIGHT_CTRL_PRESSED,F.SHIFT_PRESSED,F.ENHANCED_KEY)
local state = band(r.ControlKeyState,mask)
local vk = r.VirtualKeyCode

local function showState(state,last,vk,down,toggled)
  local msg =([[
  state: %s
   last: %s

    Alt: %s
   RAlt: %s
   Ctrl: %s
  RCtrl: %s
  Shift: %s
    Enh: %s

     vk: %s
   down: %-15s
toggled: %-15s]]):format(
  band(state,mask),
  band(last,mask),
  band(last,F.LEFT_ALT_PRESSED)==0 and "" or "+",
  band(last,F.RIGHT_ALT_PRESSED)==0 and "" or "+",
  band(last,F.LEFT_CTRL_PRESSED)==0 and "" or "+",
  band(last,F.RIGHT_CTRL_PRESSED)==0 and "" or "+",
  band(last,F.SHIFT_PRESSED)==0 and "" or "+",
  band(last,F.ENHANCED_KEY)==0 and "" or "Enh",
  vk,tostring(down),tostring(toggled))
  far.Message(msg,key,"","l")
  repeat mf.waitkey(100) until Mouse.LastCtrlState~=last
  far.AdvControl"ACTL_REDRAWALL"
  far.CopyToClipboard(msg)
end

Macro {
  area="Common"; key="CtrlA"; description="test~~~";
  priority=100;
  action=function()
    showState(state,Mouse.LastCtrlState,vk,win.GetKeyState(vk))
  end
}
Нажмите CtrlApps+A и покажите что окажется в клипборде.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

John Doe wrote:Нажмите CtrlApps+A и покажите что окажется в клипборде.

Code: Select all

  state: 8
   last: 8

    Alt: 
   RAlt: 
   Ctrl: +
  RCtrl: 
  Shift: 
    Enh: 

     vk: 93
   down: true           
toggled: false         
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

А теперь закомментируйте строку priority=100;
Потом убедитесь что нет других макросов на CtrlA, и повторите процедуру.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

Code: Select all

  state: 8
   last: 8

    Alt: 
   RAlt: 
   Ctrl: +
  RCtrl: 
  Shift: 
    Enh: 

     vk: 93
   down: true           
toggled: true           
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

Да всё в порядке у вас и должно работать. Наверно макрос на "CtrlApps+A" просто не назначен.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

Нашёл. Макрос на CtrlApps.
Отключил его, и теперь сочетания на CtrlApps+ работают нормально. Спасибо!
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

Касательно макросов на Pause в Win10x64entRu.

Результат распознавания командой lua:=mf.waitkey() сочетаний с клавишей Pause при отсутствии воздействия сторонних программ:

— нажатие на одиночную клавишу Pause блокирует/разблокирует работу Фар и по указанной команде не распознаётся;
— нажатие на CtrlPause распознаётся как CtrlBreak,
AltPauseAltPause,
ShiftPauseShiftPause,
CtrlAltPauseCtrlAltBreak,
CtrlShiftPauseCtrlShiftБелоеСердечко,
AltShiftPauseAltShiftPause,
CtrlAltShiftPauseCtrlAltShiftBreak.

User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

sToLp wrote: Нашёл. Макрос на CtrlApps.
Да, надо как минимум оговорить такие случае в описании..
sToLp wrote: нажатия на клавишу Pause включают/выключают маркер выделения
Что за маркер выделения?
Может и тут у вас макрос затесался?

Насчёт таблички с клавишами: не понял о чём это.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by sToLp »

John Doe wrote:Что за маркер выделения?
По нажатиям на Pause появляется/исчезает белый мигающий прямоугольник. Но я ошибся, это не курсор — после его появления знаки не вводятся.
Может и тут у вас макрос затесался?
Поиск ничего не дал. Полагаю, что это система такое выдаёт, потому что после ввода команды lua:=mf.waitkey() нажатия на одиночный Pause ни чего не дают, кроме включения/выключения того самого прямоугольника.
Насчёт таблички с клавишами
Ввожу lua:=mf.waitkey(), нажимаю клавиши (1-ый столбец) и получаю результат (2-ой столбец).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Win, Apps, CapsLock [,...] в качестве модификаторов

Post by John Doe »

sToLp wrote: По нажатиям на Pause появляется/исчезает белый мигающий прямоугольник.
Рискну предположить что это то же действие, что доступно через контекстное меню окна (Изменить / Пометить)

По табличке для интереса проверил ваши сочетания, и вот на этих наши результаты разошлись (У меня XP):
sToLp wrote: на CtrlPause — как CtrlBreak,
просто Break
sToLp wrote: на ShiftPause — как CtrlC,
нормально (ShiftPause)
sToLp wrote: а CtrlShiftPause — как CtrlShiftБелоеСердечко,
просто Break
sToLp wrote: на AltShiftPause — как CtrlC,
нормально (AltShiftPause)
Post Reply

Return to “Полезные макросы и скрипты”