Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Здесь обсуждается всё, что касается макросов.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

Оказывается что в FAR'е "by design" (и описано во встроенной помощи) очень специальное и нестандартное обращение с NumPad клавишами.
Не вдаваясь в подробности, к ним привязаны разные shortcuts и atcions.
И так получилось, что сочетания RCtrl+Num0-9 оказались заняты системой.
Проблема в том что той же системой сочетания RCtrl+0-9 используются также для Folder Shortcuts.
И как раз прыгать с помощью RCtrl+NumPad более эргономично чем по основной клавиатуре.
Т.е. Folder Shortcuts конфликтуют с этими другими actions.
В то же время, эти actions не бесполезные, и наверное можно их сохранить без ущерба для Folder Shortcuts.
Стоит две задачи:
1.) Использовать RCtrl+NumPad для Folder Shortcuts
2.) Перевести уже определенные для RCtrl+NumPad actions на другое сочетание нажатий клавиш
3.) Сделать это надежно, логично, эффективно

Я думаю наиболее прозрачно переассигновать существующие RCtrl+NumPad actions на RCtrl+RAlt+NumPad
Передумал. Сделал поведение цифрового Ctrl(Shift)NumPad[0-9] таким же как Ctrl(Shift)[0-9].
Цифровой NumPad - это, если что, при при горящей лампочке NumLock.
При выключенмой лампочке NumLock:
1.) это Up/Down/LEft/Right/PageUp/PageDown(..)
2.) На "Ктрл+5" ФАРом повешено и продолжает работать центрированние панелей

Я провел тщательное иследование, и не обнаружил ничего такого что позволило бы это сделать через конвенциональное меню или даже far:config.
Ни так как хочется удобства прыганья по папкам, то пришлось вникнуть что можно все-таки с этим сделать.
Оказалось что в FARе есть развитая подсистема скриптинга.
Развитя, но при этом глючная, но об этом позже.
В конечном итоге написан относительно короткий, но максимально короткий насколько это возможно, макрос.

PS
Ранее бывший тут кода переосмыслен
Решено что CtrlShiftNum# надо убрать, поскольку:
* не являтся необходимыми для прозиводительности
* и использовать можно продолжать с основной клавиатуры
* в то же время усложняет макрос в разы

Прошу брать эту починенную версию:
fix-numpad-numeric-mode-XeroX.lua.7z
(606 Bytes) Downloaded 34 times
Извлечь из архива и положить в:
%FARPROFILE%\Macros\scripts\
  1. -- XeroX (CopyLeft) 2019
  2.  
  3. -- fixed Folder shortcuts NumPad 0-9 numeric keys behavior
  4.  
  5. -- fix-numpad-numeric-mode-XeroX.lua
  6.  
  7.  
  8.  
  9. Macro { description="Fix for NumPad numeric keys to be used as numbers (Ctrl+Num# pressed)";
  10.  
  11.     area="Shell";
  12.  
  13.     key="/RCtrlNum[0-9]|RCtrlClear/";
  14.  
  15.     condition = function(key) return mf.flock(0, -1) == 1 end;
  16.  
  17.     action = function() Keys(mf.replace(akey(1), "Num", "")); return 0 end;
  18.  
  19. }
  20.  
  21.  
  22.  
  23. Macro { description="Show full list (as in \\\\F9\\Commnds\\Folder shortcuts)";
  24.  
  25.     area = "Shell";
  26.  
  27.     key = "CtrlAlt0 CtrlAltNum0";
  28.  
  29.     action = function()
  30.  
  31. -- ###
  32.  
  33. Keys("F9 c d");
  34.  
  35. mf.printconsole(Menu.Value)
  36.  
  37. if Menu.Value == "Folder shortcuts" then Keys("Enter"); end
  38.  
  39. -- @@@
  40.  
  41.     end
  42.  
  43. }
Last edited by Xerox on Sat 14 Dec, 2019 17:13, edited 9 times in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

Чей-то пытливый взгляд может заметить и спросить, "а почему обработчик RCtrlNum5 идет отдельным скриптом?"

Code: Select all

Macro { description="somehow specific handling for Ctrl5, because it refuses to follow other numpad keys rules";
	area="Shell";
	key="RCtrlNum5 RCtrlClear";
	priority=100;
	action=function()
		Keys("RCtrl5")
	end;
}
Ответ такой - я не знаю, это попортило мне немало крови, но другого выхода не нашлось.
Все клавиши ведут себя одинаково, кроме этого несчастного RCtrlNum5.
Опытным путем после сотни запусков наиболее отсечен неработающий и/или ненужный код, в сухом остатке имеем вот этот состоящий из трех обработчиков скрипт
Last edited by Xerox on Thu 21 Nov, 2019 23:00, edited 1 time in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

Макрос переработан и пофиксен
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by John Doe »

Xerox wrote: Sun 20 Oct, 2019 20:41 "а почему обработчик RCtrlNum5 идет отдельным скриптом?"
RCtrlNum5 такой клавиши не бывает, можно убрать.
Ну и да, можно и нужно объединить в один.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

John Doe, Эээ.. я вчера пару часа жизни убил на борьбу и эксперименты с этим особенным КтрлНум5, и не нашел никакого другого спососба обойти, кроме приведенного.

Поэтому пожалуйста, скопируй себе этот макрос и попробуй поработать с/без хэндлинга КтрлНум5.. ?
Last edited by Xerox on Fri 22 Nov, 2019 10:58, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by John Doe »

Макрос RCtrlNum5 никогда не сработает, потому что это сочетание приходит как RCtrlClear.

В остальном я не пытаюсь комментировать, поскольку из описания толком не понял что должны делать эти макросы.
Но очень подозреваю что всё должно быть проще.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by buniak_a_h »

Xerox, чтоб больше не попадаться на такое:
John Doe wrote: Fri 22 Nov, 2019 11:03 Макрос RCtrlNum5 никогда не сработает, потому что это сочетание приходит как RCtrlClear.
Рекомендую использовать маленький макрос типа
  1. Macro{
  2.  
  3.   id="060F70F2-C60A-409D-887C-D82CD0448474";
  4.  
  5.   area="Editor"; -- Menu Tree Dialog Disks Shell Editor Grabber FindFolder Desktop UserMenu DialogAutoCompletion Search ShellAutoCompletion MainMenu Info Other Help QView Viewer
  6.  
  7.   key="AltF2";
  8.  
  9.   description="Вставка кода клавиши";
  10.  
  11.   filemask="*.lua";
  12.  
  13.   flags=""; -- DisableOutput RunAfterFARStart EmptyCommandLine NotEmptyCommandLine NoFilePanels NoFilePPanels NoPluginPanels NoPluginPPanels NoFolders NoPFolders NoFiles NoPFiles Selection PSelection NoSelection NoPSelection EVSelection NoEVSelection NoSendKeysToPlugins
  14.  
  15. --  priority=50;
  16.  
  17.   sortpriority=48;
  18.  
  19. --  condition=function(key) return true end;
  20.  
  21.   action=function() print(mf.waitkey()) end;
  22.  
  23. }
хоткей поменяйте "под себя". Лично у меня на него висит много макросов, зависящих от расширения файла; в результате получается "контекстно-зависимое" меню
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

John Doe,
Ааа, я понял, ты имеешь ввиду что можно его просто убрать (а не весь обработчик), т.е. вместо

Code: Select all

key="RCtrlNum5 RCtrlClear";
..оставить:

Code: Select all

key="RCtrlClear"
?
Да, действительно приходит RCtrlClear вместо того что ожидалось - RCtrlNum5.
Но я думаю что даже если ФАР "крадет" КтрлНум5, то лучше его оставить фдля наглядности, и может быть на каком-то этапе его перестанут "красть".
John Doe wrote: Fri 22 Nov, 2019 11:03из описания толком не понял что должны делать эти макросы.
Для работы с Folder Shortcuts, сейчас они на цифры НумПада не срабатывают, что подбешивает, так как с НумПада удобнее.
Проблема с КтрлНум5 видимо потому что в нем как то слишком уж жестко на него прошито центрирование панелей.
Мой скрипт оставляет возможность центрирования когда нет НумЛока (режим стрелок на НумПаде),
а когда есть НумЛок (режим цифер на НумПАде) - можно пользоваться для Фолдер ШортКатс.
А без этого скрипта нельзя, в этом и фикс
Last edited by Xerox on Fri 22 Nov, 2019 11:33, edited 2 times in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

buniak_a_h, круто, все такие диагностически трики принимаю с благодарностью
Поделюсь тоже (надеюсь не офтопик?), пришел к таком скрипту чтобы понимать что происходит с нажатиями:
Last edited by Xerox on Fri 22 Nov, 2019 11:32, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by John Doe »

Xerox wrote: Fri 22 Nov, 2019 11:23 если ФАР "крадет" КтрлНум5
Фар ничего не крадёт.
Xerox wrote: Fri 22 Nov, 2019 11:23 Проблема с КтрлНум5 видимо потому
О какой проблеме речь?
Xerox wrote: Fri 22 Nov, 2019 11:23 А без этого скрипта нельзя, в этом и фикс
Давайте проще.
Перечень сочетаний обрабатываемых макросом -> и во что они трансформируются в результате.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

John Doe,
(Пишу налету, дооформлю если чо, и/или если придумаю как еще доходчивее:)

RCtrlNum[0-9] => RCtrl[0-9]
RCtrlShiftNum[0-9] => RCtrlShift[0-9]

Workaround for Num5:
RCtrlNum5(=RCtrlClear) => RCtrl5
RCtrlShift+RCtrlNum5(=RCtrlClear) => RCtrlShift5

Нормально так?
(Вернулся)
Last edited by Xerox on Fri 22 Nov, 2019 13:18, edited 2 times in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

John Doe wrote: Fri 22 Nov, 2019 11:42 Xerox wrote: ↑
Fri 22 Nov, 2019 13:23
Проблема с КтрлНум5 видимо потому

О какой проблеме речь?
В режиме цифер на НамПаде, КтрлНум5 НЕ воспринимается как цифра (а должен), что мешает для ФолдерШорткатa(5), в результате ФолдерШорткат(5) не срабатывает
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by John Doe »

Xerox wrote: Fri 22 Nov, 2019 12:29 RCtrlShift+RCtrlNum5
Как нажать эту комбинацию?
Xerox wrote: Fri 22 Nov, 2019 12:33 В режиме цифер на НамПаде, КтрлНум5 НЕ воспринимается как цифра
А как что он воспринимается?
И что значит "воспринимается как цифра"?
КтрлНум4 разве воспринимается цифрой
Last edited by John Doe on Fri 22 Nov, 2019 13:28, edited 1 time in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

John Doe wrote: Fri 22 Nov, 2019 13:26 Xerox wrote: ↑
Fri 22 Nov, 2019 14:29
RCtrlShift+RCtrlNum5

Как нажать эту комбинацию?
Для юзера это выглядит-делается как:
* Горит лампочка НамЛока
* Нажимается сочетание RCtrl+Shift+Num[0-9]

Для ФАРа это получается как два последовательных события:
1.) Прилетел RCtrlShift
2.) Прилетел RCtrlNum[0-9]
3.) (опционально:) макросом переделываем прилетевшее в RCtrlShift[0-9] для FolderShortcuts

За следующим исключением с Num5:
1.) Прилетел RCtrlShift
2.) Прилетел RCtrlClear
3.) (опционально:) макросом переделываем прилетевшее в RCtrlShift5 для FolderShortcuts
Last edited by Xerox on Fri 22 Nov, 2019 15:05, edited 2 times in total.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Folder shortcut + Numpad problem - Макрос переассигнования действий и реакций в FARе вызываемых c NumPad numeric keys

Post by Xerox »

John Doe wrote: Fri 22 Nov, 2019 13:26 Xerox wrote: ↑
Fri 22 Nov, 2019 14:33
В режиме цифер на НамПаде, КтрлНум5 НЕ воспринимается как цифра

А как что он воспринимается?
Моя неточность.
Cледует читать:
"не воспринимается как цифра (=руководство к действию) для Folder Shortcuts"
И что значит "воспринимается как цифра"?
КтрлНум4 разве воспринимается цифрой
КтрлНум4 по крайней мере шлется как нажатие КтрлНум4, а не как CtrlClear в случае с CtrlNum5.
это и не только мною замечалось в этом обсуждении
Last edited by Xerox on Fri 22 Nov, 2019 13:48, edited 2 times in total.
Post Reply

Return to “Обсуждение макросов”