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

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

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

Post by Smitis » Fri 07 Feb, 2014 08:29

Скрипт для замены плагина 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 164 times

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

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

Post by John Doe » Fri 07 Feb, 2014 09:59

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

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Fri 07 Feb, 2014 10:01

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

Smitis
Posts: 1491
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Fri 07 Feb, 2014 10:26

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

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

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

Post by HaRT » Fri 07 Feb, 2014 10:57

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

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

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

Post by John Doe » Fri 07 Feb, 2014 11:15

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

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

Code: Select all

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

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

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

Post by John Doe » Fri 07 Feb, 2014 12:06

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

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

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

Post by John Doe » Fri 07 Feb, 2014 12:19

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: 8116
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 105 times

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

Post by HaRT » Fri 07 Feb, 2014 12:21

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

Code: Select all

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

Smitis
Posts: 1491
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Fri 07 Feb, 2014 12:24

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

Smitis
Posts: 1491
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Fri 07 Feb, 2014 12:26

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: 11412
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Fri 07 Feb, 2014 12:29

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

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

Smitis
Posts: 1491
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Fri 07 Feb, 2014 12:58

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

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

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

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

Post by HaRT » Fri 07 Feb, 2014 15:38

John Doe wrote:

Code: Select all

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

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

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

Post by John Doe » Fri 07 Feb, 2014 15:42

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

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

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

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

Post by HaRT » Fri 07 Feb, 2014 18:43

John Doe wrote:Как уже замечено выше — вероятность того, что фар вызван откуда-то кроме консоли cmd — стремится к 0
Это не отменяет правила хорошего тона, что за собой надо подчищать. Восстанавливает же Фар разные другие режимы консоли. Ведь в том же cmd можно эти системные клавиши настроить вызовом специализированной программульки и до Фара.
PS
Я поэкспериментировал и не смог извлечь никакой пользы из возвращаемого значения SetConsoleKeyShortcuts — у меня оно всегда 1, но я вне консоли не запускал.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

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