XKeys — скрипт для замены одноимённого плагина

Здесь выкладываются готовые к использованию макросы и скрипты.
Smitis
Posts: 1624
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

XKeys — скрипт для замены одноимённого плагина

Post by Smitis »

Скрипт для замены плагина XKeys
Позволяет использовать в ФАРе (в том числе и для макросов) клавиатурные сочетания AltTab, AltEsc, AltSpace, AltEnter, AltPrntScrn, CtrlEsc и кнопку PrntScrn (она же PrtScr, она же PrintScreen) обычно зарезервированные Windows под системные нужды.

Очень краткая инструкция к очень короткому скрипту:
Перехватываемые клавиши перечисляются в строке с "local KEYS". После внесения изменений следует перезагрузить макросы или перезапустить ФАР.
Установка: Поместить скрипт в папку %farprofile%\macros\scripts или в любую подпапку там же.
Attachments
XKeys.1.00.7z
XKeys 1.00
(509 Bytes) Downloaded 262 times

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

Re: XKeys — макрос для замены одноимённого плагина

Post by John Doe »

Рекомендую в описании указать назначение макроса, чтобы избавить читателей от ненужных скачков по форуму.
То же касается и заголовка темы.

Shmuel
Posts: 6151
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 320 times

Re: XKeys — макрос для замены одноимённого плагина

Post by Shmuel »

Строго говоря, это не макрос, а скрипт.

Smitis
Posts: 1624
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Re: XKeys — скрипт для замены одноимённого плагина

Post by Smitis »

По привычке писал "макрос". Исправил на "скрипт".
На счёт заголовка не уверен, как лучше, что бы было не очень длинно.
Может просто сократить до "XKeys"?
Разум когда-нибудь победит.

User avatar
HaRT
Moderator
Posts: 9485
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 225 times

Re: XKeys — скрипт для замены одноимённого плагина

Post by HaRT »

Smitis wrote:как лучше, что бы было не очень длинно.
Может просто сократить до "XKeys"?
Зачем что-то выдумывать?
Предлагаю “Задействовать разные хитрые кнопки (AltEnter, AltSpace, PrntScrn, …) в макросах и т.п.”.
А вот название, думаю, лучше сменить, чтобы не было путаницы между нативным плагином и луа-скриптом.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: XKeys — скрипт для замены одноимённого плагина

Post by John Doe »

Мой вариант заголовка и предыстории:
XKeys — доступ к клавишам, зарезервированным консолью

Консоль Windows резервирует для собственных функций следующие клавиатурные сочетания:

Code: Select all

AltTab, AltEsc, AltSpace, AltEnter, AltPrntScrn, CtrlEsc, PrntScrn (PrtScr, PrintScreen)
Поэтому их невозможно использовать в фаре, нельзя назначить на них макросы и т.п.
Однако выход есть: с помощью недокументированной функции Windows API SetConsoleKeyShortcuts можно "разблокировать" нужные клавиши.

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

Re: XKeys — скрипт для замены одноимённого плагина

Post by John Doe »

HaRT wrote:А вот название, думаю, лучше сменить, чтобы не было путаницы между нативным плагином и луа-скриптом.
Плагин для Far 2, а скрипт - для Far 3.
Мне кажется этот тот случай, когда общность названий к лучшему.

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

Re: XKeys — скрипт для замены одноимённого плагина

Post by John Doe »

Code: Select all

Event { group="ExitFAR"; description="XKeys reset on quit";
  action=function() C.SetConsoleKeyShortcuts(1,0,0,0) end;
}

User avatar
HaRT
Moderator
Posts: 9485
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 225 times

Re: XKeys — скрипт для замены одноимённого плагина

Post by HaRT »

John Doe wrote:Консоль Windows резервирует для собственных функций следующие клавиатурные сочетания:

Code: Select all

AltTab, AltEsc, AltSpace, AltEnter, AltPrntScrn, CtrlEsc, PrntScrn (PrtScr, PrintScreen)
Поэтому их невозможно использовать в фаре, нельзя назначить на них макросы и т.п.
Я только сейчас осознал, что это не сделать через пользовательский интерфейс свойств консоли. Привык, что для PIF-файлов можно было галочками отметить, какие из этих сочетаний оставить системе. :oops:
Фар есть инструмент, а не нянька. © 2009 DrKnS

Smitis
Posts: 1624
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Re: XKeys — скрипт для замены одноимённого плагина

Post by Smitis »

HaRT wrote:А вот название, думаю, лучше сменить, чтобы не было путаницы между нативным плагином и луа-скриптом.
И как их можно перепутать? :)
Предлагаю “Задействовать разные хитрые кнопки (AltEnter, AltSpace, PrntScrn, …) в макросах и т.п.”.
Вот только если так обозвать имя файла со скриптом... как то не очень... :)
Разум когда-нибудь победит.

Smitis
Posts: 1624
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Re: XKeys — скрипт для замены одноимённого плагина

Post by Smitis »

John Doe wrote:

Code: Select all

Event { group="ExitFAR"; description="XKeys reset on quit";
  action=function() C.SetConsoleKeyShortcuts(1,0,0,0) end;
}
А надо?
Разум когда-нибудь победит.

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

Re: XKeys — скрипт для замены одноимённого плагина

Post by John Doe »

HaRT wrote:Привык, что для PIF-файлов можно было галочками отметить, какие из этих сочетаний оставить системе. :oops:
Через PIF можно и сейчас наверно сделать. Не получилось

Smitis
Не обязательно, но в плагине было.

Smitis
Posts: 1624
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Re: XKeys — скрипт для замены одноимённого плагина

Post by Smitis »

John Doe wrote:но в плагине было.
Я видел. Оттуда и позаимствовал идею.
Вот если запускать ФАР из командного файла и если после закрытия ФАРа (не через [x]) из этого командного файла запускать ещё какую-нибудь консольную программу при работе которой эти кнопкосочетания обязательно нужно вернуть системе... Как-то слишком надумано, а других вариатов придумать не смог. Пока не буду переусложнять.

П.С.
Ах да, ещё вариант из какой-нибудь другой консольной программы запускать ФАР в качестве редактора/просмоторщика...
Разум когда-нибудь победит.

User avatar
HaRT
Moderator
Posts: 9485
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 225 times

XKeys — скрипт для замены одноимённого плагина

Post by HaRT »

John Doe wrote:

Code: Select all

Event { group="ExitFAR"; description="XKeys reset on quit";
  action=function() C.SetConsoleKeyShortcuts(1,0,0,0) end;
}
Идеально было бы как-то восстанавливать запомненное прежде значение…
Да вот функции GetConsoleKeyShortcuts в kernel32.dll нету. Кто-нибудь проверял, SetConsoleKeyShortcuts часом не возвращает старое значение под видом BOOL? Или может при каком другом значении первого параметра (например, 0)?
PS
Кстати, меня обманывает память, или несколько лет назад исходники тогдашней Винды утекли в открытый доступ? Если так, то можно было бы там глянуть…
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: XKeys — скрипт для замены одноимённого плагина

Post by John Doe »

HaRT
Функция недокументирована, и судя по скудости выдачи гугла — пользуются ей единицы.
В ReactOS не реализована, в Wine тоже (не знаю насколько она вообще там применима).

Как уже замечено выше — вероятность того, что фар вызван откуда-то кроме консоли cmd — стремится к 0

Post Reply

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