ConEmu
ConEmu copied to clipboard
Кривое отображение в Far кнопкосочетаний Esc с модификаторами.
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
Нельзя ли это поправить?
ЧЯДНТ?
Maximus5
Очень рад тому, что это возможно! Большое Вам спасибо, что сообщили! При том, что на простой вопрос "ЧЯДНТ?" сейчас я готов отвечать лишь "не сообщаете какая настройка за это отвечает", хотя бы предположительно. Потому, что у меня запуск в комстроке команды lua:far.Message(mf.key(mf.waitkey(0,1)),"Searching...","") и нажатие CtrlAltEsc выдаёт сообщение с CtrlAlt без Esc. И неделю уже ищу ответа на вопрос "почему?"... Теперь хоть буду знать, что это работает и дело в какой-то или в каких-то настройк(е/ах).
И на текущий момент ни чего другого в голову не приходит, как попробовать установить всё с нуля.
О результатах доложу.
Может у вас версия винды другая (не указано), может еще что. KeyEvents в помощь.
Может у вас версия винды другая (не указано), может еще что.
Видимо, всё таки дело в винде. Сейчас я смотрю на наиболее распространённой у нас Win10 Корпоративная LTSB x64. Установил только минимум Far x86 и запустил из-под ConEmu.exe. CtrlAltEsc сработал как у Вас показано, а вот CtrlShiftEsc нет, а сработала системная команда. Но после добавления полного набора рабочих макросов и CtrlAltEsc стал показывать только CtrlAlt Ну что ж, опять сначала начну. Чтобы убедиться. А завтра попробую на другой десятке (о том, что это на Win10, в самом начале сказано).
Убедился, что в Win10 Корпоративная LTSB x64 в Far`е минимальной комплектации, запускаемом из-под актуального ConEmu, из сочетаний модификаторов с Esc нормально проявляются только ShiftEsc, CtrlAltEsc и CtrlAltShiftEsc (правые и левые Ctrl и Alt различаются). Галочка в настройках консоли в позиции "Использовать прежнюю версию консоли" выставлена.
Если же установить макрос XKeys, то кнопкосочетания отображаются как перечислено в заглавном посте.
Завтра намерен посмотреть тот же тандем Far и ConEmu в другой десятке и, если получится, в семёрке (иных систем у нас практически нет).
То, что я увидел в семёрке (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 либо я пока что не сведущ в каких-то настройках, либо такие опции для полноценного определения указанных кнопкосочетаний в нём пока что не реализованы ?
Использовать в 10-ке «прежнюю версию консоли» не вижу смысла - теряется WSL.
-
многим ли пользователям нужен WSL? — однако это не весомый аргумент, разумеется.
-
«прежнюю версию консоли» ведь можно было бы точно также опционно, или нельзя никак? — это тоже было бы не кардинальное решение проблемы.
-
то, что голый Far может, а облачённый в ConEmu — нет, занозит всё же.
В 10-ке с голым Фар и новой консолью курсор криво рисуется - не видно или слабо видно.
По большому счёту проблема состоит в том, чтобы 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 файлом-пустышкой.
Я не буду перехватывать ВСЕ хоткеи у системы «варварскими способами». Достаточно уже того, что перехватываются кнопки с Win. Ставить хуки, которые потом пролезут вообще во все ваши программы, и которые не выпилишь без перезагрузки компа, я не буду.
Не хочу уподобляться igfxHK, которая считает, что комбинация клавиш нужна только ей.
При этом третий пункт из предпредыдущего поста остаётся же актуальным:
то, что голый Far может, а облачённый в ConEmu — нет, занозит всё же
Ведь голый Far то уже распознаёт, а облачившись в ConEmu уже и не может. Нельзя ли всё же подружить ConEmu со скриптом XKeys?
Думаю, что можно заюзать AutoHotKeys, чтобы перехватить системные комбинации и направлять их в ConEmu
Можно попробовать скорректировать поведение именно Esc в настройке General/Task Bar/Minimized when Escape pressed. У меня не доходило до far'а дело и сворачивалась консоль, вместо выхода из диалоговых окошек, например...