2010-04-27 2 views
3

На любой французской клавиатуре (AZERTY) dot char '.' генерируется с Shift + ; в то время как комбинация процента символ «%» генерируется с сдвига + ¯u комбинацииGWT: Неправильные коды клавиш, сгенерированные с помощью французской клавиатуры

Поэтому, когда я типа один из указанных выше комбинаций в текстовой области GWT писать «» или «%», коды клавиш, сгенерированные для этих событий, - KEY_DELETE в первом случае и KEY_LEFT в последнем.

TextArea txtArea = new TextArea(); 
txtArea.addKeyPressHandler(new KeyPressHandler() { 
      public void onKeyPress(KeyPressEvent event) {     
       switch (charCode) { 
        case KeyCodes.KEY_LEFT: { // key code 37 
         System.out.write("KEY LEFT");  
         break; 
        } 
        case KeyCodes.KEY_DELETE: { // key code 46     
         System.out.write("DELETE"); 
         break; 
        } 
       } 

Обход: получить charCode и сделать матч символов:

charCode = event.getCharCode(); 
if (charCode == '.') {...} 
else if (charCode == '%') {...} 

Является ли это ошибка GWT? И есть ли более элегантный способ справиться с этим?

ответ

2

Похоже, что это не ошибка, связанная с GWT - пожалуйста, см. Issue 3753 и все ссылки там для полного обзора проблемы. В принципе, существует огромный беспорядок с тем, как разные браузеры обрабатывают ключевые события - команда GWT, похоже, работает над исправлением этого, и всеобъемлющее исправление должно быть включено в GWT 2.1 (всякий раз, когда это выходит - тем временем, возможно, стоит проверить статус проблемы и попробовать версию SVN).

Смежные вопросы