Мне нужно написать экранную клавиатуру для программы нашей компании, которая в основном используется на промышленных ПК с сенсорным экраном.
Мы не можем использовать клавиатуру Windows по умолчанию, потому что нам не нужны все клавиши на клавиатуре. Поэтому меня попросили написать пользовательский на C #.
Я уже нашел этот блог в качестве ссылки, но я не уверен, как начать.
Я создал небольшой прототип GUI и назначил для каждого ключа скан-код, а затем преобразовал эти скан-коды в соответствующий символ. И отправить их в активный контроль. Но я не уверен, какие коды сканирования мне следует использовать.
Так что мой вопрос в том, является ли правильный способ написать OSK, подобный этому, и если да, то какие коды сканирования мне следует использовать? Любые ссылки?
Я также не уверен, как справиться с сдвигом состояний ...
Edit:
Хорошо, я немного больше исследовал и придумал оск, который читает текущую раскладку клавиатуры и даже обрабатывает простые состояния shift ( Shift и Alt Gr ). Я написал класс KeyButton
, который наследуется от Button
, у этого KeyButton
есть свойство ScanCode
типа byte, и если вы назначите ему действительный код сканирования, KeyButton
вызовет связанные функции, чтобы получить правильный текст. Я использовал функции из блогов Майкла Каплана с некоторыми небольшими изменениями. В конце концов оказалось, что я просто должен был сделать то же, что и он.
Итак, ответ на мой вопрос: да, вы должны использовать сканкоды на своих кнопках, а затем получить виртуальную клавишу и юникод из раскладки клавиатуры. Используйте эти коды сканирования.
Теперь я получаю символы, единственное, что осталось, это отправить их.