Мое приложение delphi несовместимо с родными клавиатурами. Что я должен делать? - PullRequest
1 голос
/ 04 июля 2010

Мое приложение delphi несовместимо с родными клавиатурами.Что я должен делать?Чтобы объяснить больше, сначала посмотрите на эти картинки:

Вот изображение того, как выглядит итальянская клавиатура: http://en.wikipedia.org/wiki/Keyboard_layout#Italian

Вы можете найти нормальную (клавиатуру США) в той жестр.

Если мы нажмем Shift + 2 (или любую клавишу Shift + Number) на обычной клавиатуре, необходимо написать @ , но если мы сделаем это с итальянской клавиатурой, то « должно быть написано. Но в моем приложении, с обеими клавиатурами, каждая клавиатура обрабатывается как обычная клавиатура! Например, когда я нажимаю Shift + 2 на итальянской клавиатуре, она набирает @ вместо»

Я использую Delphi 7. Вы можете протестировать мое приложение здесь: en.apadanasoftware.com/forums

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 03 августа 2010

Символы, отправляемые в ваше приложение Delphi, контролируются Windows, а не Delphi, единственное возможное исключение из этого - перехват сообщений Windows и предварительная обработка пользовательской клавиши.

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

В Windows Перейдите в «Панель управления / Язык и региональные стандарты», затем на вкладке «Языки» нажмите кнопку «Подробнее» вВ групповом окне «Текстовые сервисы и языки ввода» вы сможете увидеть, какие раскладки клавиатуры загружены и загружены в новые, если это необходимо.

Как изменить раскладку клавиатуры от Microsoft

0 голосов
/ 23 ноября 2012

Прежде всего, я почти обижен, с чего вы взяли, что клавиатура Соединенных Штатов является "нормальной"?В ней нет НИКАКИХ букв с акцентом, которые мне нужно использовать каждый день!Шутка в сторону (и да, набрав это на моей клавиатуре в американском формате), то, что вы спрашиваете, неверно и не имеет значения.И вот почему:

  • Текст, напечатанный на кнопках на клавиатуре, мало похож на то, что происходит, когда пользователь нажимает кнопку.Клавиатура генерирует «код сканирования», который интерпретируется Windows в соответствии с выбранным форматом клавиатуры.Я могу нажать LeftALT + SHIFT, чтобы повернуть формат клавиатуры с американского на румынский на моем компьютере.На моем домашнем компьютере есть также французский в ротации.Конечно, у меня нет каких-либо букв с акцентированием на моей клавиатуре в США (как в напечатанном тексте на кнопках), но будьте уверены, это совершенно не имеет значения, так как я не смотрю на клавиши во время набора текста:)
  • Тот факт, что символ " находится не на той же кнопке 2, не должен вас беспокоить.Это окончательный выбор пользователей, и конечные пользователи точно знают, какую клавишу нажимать, чтобы получить какой-либо символ.Вы не будете оказывать ему услугу, интерпретируя Shift + «2» как " только потому, что это то, что он означает на клавиатуре США!Он спросил бы, почему он набирает " и получает [ в вашем приложении?

Я пытаюсь сказать, что ваше приложение не может быть несовместимо с родной клавиатурой,Он работает просто отлично, вы просто не знаете, какие кнопки нажимать, но конечный пользователь знает, так как он владеет и компьютером, и клавиатурой.

0 голосов
/ 03 августа 2010

Где вы получаете событие клавиатуры в вашем приложении?

Если вы используете событие OnKeyPress, например

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

вы получите ключ как '@': т.е. преобразование выполняется Windows.

Если вы используете событие OnKeyDown, например

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

вы получите код виртуального ключа, то есть необработанный код ключа, и вам придется преобразовать его, используя значение Shift.

См. http://msdn.microsoft.com/en-us/library/dd375731(VS.85).aspx о виртуальных ключах.

Полагаю, вы использовали OnKeyDown вместо OnKeyPress в своем приложении.

...