Сочетания клавиш и язык ввода
От: Максим Рогожин Россия  
Дата: 22.04.17 08:44
Оценка:
Привет всем!

У меня пара вопросов про сочетания клавиш Windows, в которых задействованы буквы (например, Ctrl+C, Ctrl+V). Скажите, пожалуйста,

Вопрос 1: Такие сочетания клавиш работают независимо от выбранного языка ввода? (Если выбран русский язык ввода и пользователь нажимает Ctrl+V, то сочетание все равно работает.)

Вопрос 2: Если так, то это обеспечивается операционной системой или каждое приложение само должно заботиться об этом?
Re: Сочетания клавиш и язык ввода
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 22.04.17 20:47
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:


МР>У меня пара вопросов про сочетания клавиш Windows, в которых задействованы буквы (например, Ctrl+C, Ctrl+V). Скажите, пожалуйста,


МР>Вопрос 1: Такие сочетания клавиш работают независимо от выбранного языка ввода? (Если выбран русский язык ввода и пользователь нажимает Ctrl+V, то сочетание все равно работает.)


Для акселераторов есть флаг VirtualKey


МР>Вопрос 2: Если так, то это обеспечивается операционной системой или каждое приложение само должно заботиться об этом?


Само
Маньяк Робокряк колесит по городу
Re[2]: Сочетания клавиш и язык ввода
От: Evgeniy Skvortsov Россия  
Дата: 24.04.17 10:10
Оценка:
Здравствуйте, Marty, Вы писали:

МР>>Вопрос 2: Если так, то это обеспечивается операционной системой или каждое приложение само должно заботиться об этом?

M>Само

Не само, а система обеспечивает.
Если зарегистрировать хоткей с помощью RegisterHotKey, то пофиг в какой раскладке жать на кнопку.
Там же виртуальные коды используются, от раскладки не зависит.
Re: Сочетания клавиш и язык ввода
От: Evgeniy Skvortsov Россия  
Дата: 24.04.17 10:12
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>Вопрос 1: Такие сочетания клавиш работают независимо от выбранного языка ввода? (Если выбран русский язык ввода и пользователь нажимает Ctrl+V, то сочетание все равно работает.)


При регистрации кнопки с помощью RegisterHotKey — нажатие не зависит от текущей раскладки

МР>Вопрос 2: Если так, то это обеспечивается операционной системой или каждое приложение само должно заботиться об этом?


Система обеспечивает.
Re: Сочетания клавиш и язык ввода
От: ononim  
Дата: 24.04.17 10:18
Оценка:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms645526(v=vs.85).aspx
Как много веселых ребят, и все делают велосипед...
Re: Сочетания клавиш и язык ввода
От: c-smile Канада http://terrainformatica.com
Дата: 27.04.17 03:46
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>Вопрос 1: Такие сочетания клавиш работают независимо от выбранного языка ввода? (Если выбран русский язык ввода и пользователь нажимает Ctrl+V, то сочетание все равно работает.)


Приложение ловит WM_KEYDOWN в котором приходит scan code — код клавиши независимо от языка.



on WM_KEYDOWN:

if( GetKeyState() && VK_CONTROL ) {

  switch( wParam  ) {

     case VK_C: ....
     case VK_X: ....

  }

}
Re[2]: Сочетания клавиш и язык ввода
От: Максим Рогожин Россия  
Дата: 13.05.17 18:09
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Приложение ловит WM_KEYDOWN в котором приходит scan code — код клавиши независимо от языка.


CS>
CS>on WM_KEYDOWN:

CS>if( GetKeyState() && VK_CONTROL ) {

CS>  switch( wParam  ) {

CS>     case VK_C: ....
CS>     case VK_X: ....

CS>  }

CS>}
CS>


Интересно, а почему не работает в случае с Диспетчером задач и Блокнотом? Например, запускаю Диспетчер задач, нажимаю Alt, при этом появляется подчерк под буквой Ф в слове Файл (меню Диспетчера задач), если язык включен русский, то нажатие Alt+Ф работает, а если включен английский, то нажатие Alt+Ф (Alt+A) уже не работает.
Re[3]: Сочетания клавиш и язык ввода
От: Ops Россия  
Дата: 14.05.17 12:15
Оценка:
Здравствуйте, Максим Рогожин, Вы писали:

МР>Интересно, а почему не работает в случае с Диспетчером задач и Блокнотом? Например, запускаю Диспетчер задач, нажимаю Alt, при этом появляется подчерк под буквой Ф в слове Файл (меню Диспетчера задач), если язык включен русский, то нажатие Alt+Ф работает, а если включен английский, то нажатие Alt+Ф (Alt+A) уже не работает.


Полагаю, акселераторы меню немного иначе работают, это не hotkey.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[4]: Сочетания клавиш и язык ввода
От: qaz77  
Дата: 15.05.17 20:08
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Максим Рогожин, Вы писали:


МР>>Интересно, а почему не работает в случае с Диспетчером задач и Блокнотом? Например, запускаю Диспетчер задач, нажимаю Alt, при этом появляется подчерк под буквой Ф в слове Файл (меню Диспетчера задач), если язык включен русский, то нажатие Alt+Ф работает, а если включен английский, то нажатие Alt+Ф (Alt+A) уже не работает.


Ops>Полагаю, акселераторы меню немного иначе работают, это не hotkey.


У акселератора в Windows есть флажок VIRTUALKEY (см. структуру ACCEL).
Если он стоит, то используется scan code клавиши, который не зависит от текущей языковой раскладки.
Если флажок не установлен, то используется char code, т.е. значение TCHAR, приходящее в сообщении WM_CHAR/WM_SYSCHAR.
Во втором случае результат зависит от активной раскладки клавиатуры.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.