OberonCore
https://forum.oberoncore.ru/

Отвязка горячих клавиш меню от раскладки клавиатуры
https://forum.oberoncore.ru/viewtopic.php?f=24&t=5024
Страница 1 из 1

Автор:  adva [ Четверг, 13 Март, 2014 09:58 ]
Заголовок сообщения:  Отвязка горячих клавиш меню от раскладки клавиатуры

Пётр Кушнир писал(а):
По результатам исследования в сырцах я выяснил такой путь прохождения пользовательских сигналов управления.

На примере нажатия клавиши:
Нажатие → WinAPI → оконная процедура HostWindows.DocHandler (или DlgHandler, в зависимости от типа окна) → HostWindows.Window.KeyDown → супервызов Windows.Window.KeyDown → Windows.Window.ForwardCtrlMsg → Views.HandleCtrlMsg (это процедурная переменная, установленная из Controllers) → Controllers.HandleCtrlMsgs.


Петр, а дальше не разбирались? Все таки хотелось бы отвязаться от раскладки клавиатуры, для горячих клавиш.

Попробовал Views.HandleCtrlMsg из своего модуля установить, но там ассерт на NIL (т.е. похоже можно устанавливить, только если еще не установлена)

(модератор) выделено из темы viewtopic.php?t=4376 по указанию автора темы

Автор:  Пётр Кушнир [ Четверг, 13 Март, 2014 10:11 ]
Заголовок сообщения:  Re: Подсветка парных скобок

Горячие клавиши меню? Они обрабатываются в HostMenus, емнип, и выше хоста не поднимаются.

Автор:  adva [ Четверг, 13 Март, 2014 10:15 ]
Заголовок сообщения:  Re: Подсветка парных скобок

Я плохо понял, что это значит, не подскажите ли, чего по этому поводу можно исправить?

Автор:  adva [ Четверг, 13 Март, 2014 10:35 ]
Заголовок сообщения:  Re: Подсветка парных скобок

я смотрю, у меня, зеленый цвет в процедуре HostMenus.TranslateAccelerators.

Это в ней надо править? А компонентно никак? (обертку вьюшку пока не осилю, поэтому не предлагать)

Автор:  adva [ Четверг, 13 Март, 2014 11:11 ]
Заголовок сообщения:  Re: Подсветка парных скобок

Смутно конечно понимаю, о чем спрошу, но может быть можно выложить соответствие клавиш раскладок в файл, и использовать из него (вроде для этого есть какая-то возможность mapstring с файлом String, если я правильно понял). Ну или вроде у клавиш есть коды, которые не зависят от раскладки, и следовательно можно просто переделать на их использование.

В общем как будет правильнее?

В планах по развитию эта проблема обозначена? Мог бы попробовать разобраться с данной процедурой TranslateAcselerat , если еще никто не ...

Автор:  adva [ Четверг, 13 Март, 2014 12:40 ]
Заголовок сообщения:  Re: Подсветка парных скобок

Поэксперементировал (сделал вывод в лог), или чего не так делал, или данная процедура отвечает за горячие клавиши которые прописаны в меню (они отрабатывают в любых раскладках).

Но она не отрабатывает при нажатии Alt для выбора пункта меню по соответствующим буквам (это как раз и надо исправить).

Или я чего не так делал. В общем дальше не знаю, где еще посмотреть. Решил пока повесить на все что требуется горячие клавиши, как ближе с блекбоксом познакомлюсь, тогда уже дальше разбираться буду. Ну или если кто подсказку даст, куда копать.

Автор:  Пётр Кушнир [ Четверг, 13 Март, 2014 12:57 ]
Заголовок сообщения:  Re: Подсветка парных скобок

adva писал(а):
Но она не отрабатывает при нажатии Alt для выбора пункта меню по соответствующим буквам (это как раз и надо исправить).
А-а, понял о чем вы.
Тут я не могу сказать ничего определенного, данной фичей не пользуюсь практически, единственное что я знаю - эти буквы задаются в меню знаком &. То есть, можно проследить путь от парсинга меню с такой буквой.
Я вижу из похожего только HostMenus.GetHotkey.

Автор:  Александр Ильин [ Четверг, 13 Март, 2014 13:41 ]
Заголовок сообщения:  Re: Подсветка парных скобок

adva писал(а):
Но она не отрабатывает при нажатии Alt для выбора пункта меню по соответствующим буквам (это как раз и надо исправить).
Этот функционал обрабатывается главным меню окна BlackBox. В качестве главного меню используется компонент ОС, поэтому обработка происходит там.

http://stackoverflow.com/questions/1162 ... pplication
http://msdn.microsoft.com/en-us/library ... 77(v=vs.85).aspx

Автор:  adva [ Четверг, 13 Март, 2014 14:17 ]
Заголовок сообщения:  Re: Подсветка парных скобок

Ясно, спасибо, тогда пока точно не осилю. Ладно, остаются горячие клавиши, буду пока их использовать по максимуму.

Автор:  adva [ Четверг, 13 Март, 2014 16:47 ]
Заголовок сообщения:  Re: Отвязка горячих клавиш меню от раскладки клавиатуры

Я правильно понял, с помощью установки переменной HostMenus.hookApplWinHandler можно повесить свой обработчик клавиш?

Автор:  adva [ Пятница, 14 Март, 2014 06:36 ]
Заголовок сообщения:  Re: Отвязка горячих клавиш меню от раскладки клавиатуры

А подскажите пожалуста, есть ли возможность в тексте установить закладку ? Или ее аналог какой-нибудь ?

Автор:  Александр Ильин [ Пятница, 14 Март, 2014 06:41 ]
Заголовок сообщения:  Re: Отвязка горячих клавиш меню от раскладки клавиатуры

adva писал(а):
А подскажите пожалуста, есть ли возможность в тексте установить закладку ? Или ее аналог какой-нибудь ?
Поищите CpcBookmarks на ZinnAmTurm.eu

Автор:  adva [ Пятница, 14 Март, 2014 06:47 ]
Заголовок сообщения:  Re: Отвязка горячих клавиш меню от раскладки клавиатуры

Александр Ильин писал(а):
Поищите CpcBookmarks на ZinnAmTurm.eu


Спасибо, если есть возможность, в личке ответьте, пожалуйста

Автор:  adva [ Пятница, 14 Март, 2014 12:33 ]
Заголовок сообщения:  Re: Отвязка горячих клавиш меню от раскладки клавиатуры

Выяснил, что у многих других программ, поведение с меню точно такое же, поэтому пожалуй решить вопрос по простому не получится. После того, как нажимается ALT , дальнейшеие события отрабатываются windows в процедуре DefWindowProc, о чем ранее сказал Ильин А., но я его не понял сразу. Дальнейший разбор прекратил.

Автор:  adva [ Пятница, 14 Март, 2014 12:43 ]
Заголовок сообщения:  Re: Отвязка горячих клавиш меню от раскладки клавиатуры

Единственное, была пару идей: но они вроде не позволяли решить вопрос не внеся изменения в код хоста, поэтому думать не стал

1) при нажатии системной клавиши "переключать раскладку" (нажатие отлавливается)
2) при установке менюшных клавиш вызова с "&", добавлять дополнительно букву из другой раскладки (но это так идея, потому как здесь до конца не понял, как происходит установка)

Автор:  Александр Ильин [ Пятница, 14 Март, 2014 13:15 ]
Заголовок сообщения:  Re: Отвязка горячих клавиш меню от раскладки клавиатуры

adva писал(а):
1) при нажатии системной клавиши "переключать раскладку" (нажатие отлавливается)
Это умеет делать бесплатная программа PuntoSwitcher от Yandex:
Вложение:
PuntoSettings.png
PuntoSettings.png [ 27.5 КБ | Просмотров: 5832 ]

adva писал(а):
2) при установке менюшных клавиш вызова с "&", добавлять дополнительно букву из другой раскладки (но это так идея, потому как здесь до конца не понял, как происходит установка)
Это не будет работать.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/