ConEmu icon indicating copy to clipboard operation
ConEmu copied to clipboard

Кривое отображение в Far кнопкосочетаний Esc с модификаторами.

Open sToLps opened this issue 7 years ago • 15 comments

Win10, Far 3.0.5032 x86, работающий в из-под ConEmu.

ShiftEsc по mf.key(mf.waitkey(0,1)) опознаётся нормально, а вот остальные модификаторы, нажатые с Esc, опознаются как "чистые" модификаторы/сочетания без Esc.

CtrlEsc Ctrl RCtrlEsc RCtrl

AltEsc Alt RAltEsc RAlt

CtrlAltEsc CtrlAlt RCtrlAltEsc RCtrlAlt CtrlRAltEsc CtrlRAlt RCtrlRAltEsc RCtrlRAlt

CtrlShiftEsc CtrlShift RCtrlShiftEsc RCtrlShift

AltShiftEsc AltShift RAltShiftEsc CtrlRAltShift — Ctrl ещё прилепился, дополнительная аномалия?

CtrlAltShiftEsc CtrlAltShift RCtrlAltShiftEsc RCtrlAltShift CtrlRAltShiftEsc CtrlRAltShift RCtrlRAltShiftEsc RCtrlRAltShift

Нельзя ли это поправить?

sToLps avatar Sep 19 '17 21:09 sToLps

ЧЯДНТ?

2017-09-21_13-19-12

Maximus5 avatar Sep 21 '17 10:09 Maximus5

Maximus5

Очень рад тому, что это возможно! Большое Вам спасибо, что сообщили! При том, что на простой вопрос "ЧЯДНТ?" сейчас я готов отвечать лишь "не сообщаете какая настройка за это отвечает", хотя бы предположительно. Потому, что у меня запуск в комстроке команды lua:far.Message(mf.key(mf.waitkey(0,1)),"Searching...","") и нажатие CtrlAltEsc выдаёт сообщение с CtrlAlt без Esc. И неделю уже ищу ответа на вопрос "почему?"... Теперь хоть буду знать, что это работает и дело в какой-то или в каких-то настройк(е/ах).

И на текущий момент ни чего другого в голову не приходит, как попробовать установить всё с нуля.

О результатах доложу.

sToLps avatar Sep 21 '17 14:09 sToLps

Может у вас версия винды другая (не указано), может еще что. KeyEvents в помощь.

Maximus5 avatar Sep 21 '17 15:09 Maximus5

Может у вас версия винды другая (не указано), может еще что.

Видимо, всё таки дело в винде. Сейчас я смотрю на наиболее распространённой у нас Win10 Корпоративная LTSB x64. Установил только минимум Far x86 и запустил из-под ConEmu.exe. CtrlAltEsc сработал как у Вас показано, а вот CtrlShiftEsc нет, а сработала системная команда. Но после добавления полного набора рабочих макросов и CtrlAltEsc стал показывать только CtrlAlt Ну что ж, опять сначала начну. Чтобы убедиться. А завтра попробую на другой десятке (о том, что это на Win10, в самом начале сказано).

sToLps avatar Sep 21 '17 16:09 sToLps

Убедился, что в Win10 Корпоративная LTSB x64 в Far`е минимальной комплектации, запускаемом из-под актуального ConEmu, из сочетаний модификаторов с Esc нормально проявляются только ShiftEsc, CtrlAltEsc и CtrlAltShiftEsc (правые и левые Ctrl и Alt различаются). Галочка в настройках консоли в позиции "Использовать прежнюю версию консоли" выставлена.

Если же установить макрос XKeys, то кнопкосочетания отображаются как перечислено в заглавном посте.

Завтра намерен посмотреть тот же тандем Far и ConEmu в другой десятке и, если получится, в семёрке (иных систем у нас практически нет).

sToLps avatar Sep 21 '17 18:09 sToLps

То, что я увидел в семёрке (Windows 7 Максимальная).

Распаковываю Far30b5036.x86.20170922.7z в E:\FarTst и поверх туда же распаковываю ConEmuPack.170910.7z

При первом запуске ConEmu.exe появляется меню с заголовком "ConEmu 170910 [32] fast configuration". И ни чего в этом меню не трогая нажимаю OK. В первую вкладку грузится Far.

Последовательно запускаю из комстроки команду "определить нажатое кнопкосочетание" — lua:far.Message(mf.key(mf.waitkey(0,1)),"Searching...","") и затем нажимаю соответствующие кнопкосочетания с клавишей Esc. И в результате они либо определяются в соответствии с нажатиями, либо вызывают системные команды:

CtrlEsc — вызов меню Пуск;

AltEsc — переключиться в другое окно;

ShiftEsc √

CtrlAltEsc √

CtrlShiftEsc — диспетчер задач;

AltShiftEsc — текущая папка открывается в проводнике;

CtrlAltShiftEsc √

Голый Far после запуска из комстроки команды определения нажатых кнопок из нажатий на вышеперечисленные кнопкосочетания реагирует только на ShiftEsc и правильно его определяет. В остальных же случаях либо следует вызов тех же системных команд, либо (в случаях нажатия CtrlAltEsc и CtrlAltShiftEsc) реакция вовсе отсутствует.

После установки в Far скрипта XKeys голый Far в ответ на команду определить нажаты клавиши правильно определяет каждое из вышеперечисленных кнопкосочетаний, и системные команды при этом не вызываются.

В загруженном же из-под ConEmu Far`е с установленным скриптом XKeys после ввода в комстроку команды определения клавиш следуют усечённые ответы, как это показано в самом первом посте…

Вот пока что и получается, что разница в поведении Far`а в 7-ке и в 10-ке в том, что для того, чтобы голый Far верно определял указанные кнопкосочетания в 10-ке нужно помимо установки в нём скрипта XKeys ещё и в настройках десяткинской консоли активировать опцию "Использовать прежнюю версию консоли".

В отношении же ConEmu либо я пока что не сведущ в каких-то настройках, либо такие опции для полноценного определения указанных кнопкосочетаний в нём пока что не реализованы ?

sToLps avatar Sep 22 '17 13:09 sToLps

Использовать в 10-ке «прежнюю версию консоли» не вижу смысла - теряется WSL.

Maximus5 avatar Sep 22 '17 14:09 Maximus5

  1. многим ли пользователям нужен WSL? — однако это не весомый аргумент, разумеется.

  2. «прежнюю версию консоли» ведь можно было бы точно также опционно, или нельзя никак? — это тоже было бы не кардинальное решение проблемы.

  3. то, что голый Far может, а облачённый в ConEmu — нет, занозит всё же.

sToLps avatar Sep 22 '17 15:09 sToLps

В 10-ке с голым Фар и новой консолью курсор криво рисуется - не видно или слабо видно.

pult avatar Sep 23 '17 06:09 pult

По большому счёту проблема состоит в том, чтобы Far мог использовать любые кнопкосочетания, а не только перечисленные в первом посте. Причём весьма желательно, чтобы ещё и без отключения новой консоли.

О том, что при старой, додесяткинской, консоли это возможно, свидетельствует запуск в комстроке Farа команды lua: local ffi = require "ffi" ffi.cdef "void SetConsoleKeyShortcuts(bool bSet, char bReserveKeys, DWORD, DWORD);" ffi.C.SetConsoleKeyShortcuts(1,0x42,0,0); которая обеспечивает использование в Farе всех кнопкосочетаний с клавишей Esc до очередной перезагрузки Far`а.

А вот возможно ли такое в новой консоли?

Причём желательность обеспечения использования в Farе всех шорткатов с Esc-ом, это хотя и показательный, но всё же особый случай. А ведь система и другие программы перехватывают у Farа и куда более применимые шорткаты. Например, весьма полезная программа SystemExplorer перехватывает CtrlAltIns. Но в её случае это хотя бы можно предотвратить в настройках самой программы, с частичной потерей её функциональности. А вот Панель управления HD-графикой Intel перехватывает целую группу шорткатов:

CtrlAltF6 — открыть Панель клавиш быстрого вызова.

CtrlAltF1 — открыть Панель дисплея.

CtrlAltF11 — открыть Панель масштабирования.

CtrlAltF12 — открыть Панель HD-графикой Intel©.

CtrlAlt↑(вверх) — поворот экрана на 0 градусов.

CtrlAlt←(влево) — поворот экрана на 90 градусов.

CtrlAlt↓(вниз) — поворот экрана на 180 градусов.

CtrlAlt→(вправо) — поворот экрана на 270 градусов.

В настойках панели их можно выключить, установив галочку на опции √ Выключить. С потерей соответствующей функциональности. Однако комбинация CtrlAltF8 включает их вновь. И при этом шорткат CtrlAltF8 никак не доходит до Far`a! И тогда проблему приходится решать варварским способом — убиением процесса igfxHK.exe и заменой файла igfxHK.exe файлом-пустышкой.

sToLps avatar Sep 23 '17 06:09 sToLps

Я не буду перехватывать ВСЕ хоткеи у системы «варварскими способами». Достаточно уже того, что перехватываются кнопки с Win. Ставить хуки, которые потом пролезут вообще во все ваши программы, и которые не выпилишь без перезагрузки компа, я не буду.

Maximus5 avatar Sep 23 '17 15:09 Maximus5

Не хочу уподобляться igfxHK, которая считает, что комбинация клавиш нужна только ей.

Maximus5 avatar Sep 23 '17 15:09 Maximus5

При этом третий пункт из предпредыдущего поста остаётся же актуальным:

то, что голый Far может, а облачённый в ConEmu — нет, занозит всё же

Ведь голый Far то уже распознаёт, а облачившись в ConEmu уже и не может. Нельзя ли всё же подружить ConEmu со скриптом XKeys?

sToLps avatar Sep 23 '17 16:09 sToLps

Думаю, что можно заюзать AutoHotKeys, чтобы перехватить системные комбинации и направлять их в ConEmu

Maximus5 avatar Oct 12 '17 17:10 Maximus5

Можно попробовать скорректировать поведение именно Esc в настройке General/Task Bar/Minimized when Escape pressed. У меня не доходило до far'а дело и сворачивалась консоль, вместо выхода из диалоговых окошек, например...

alexvgrey avatar Apr 07 '22 08:04 alexvgrey