views:

147

answers:

1

On any french keyboard(AZERTY) the dot char '.' is generated with (Shift + ;) combination while the percent char '%' is generated with (Shift + ù) combination

So when I type one of the above combinations in a GWT text area to write '.' or ' %', the key codes generated for these events are KEY_DELETE in the former case and KEY_LEFT in the latter.

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;
                    }
                }

Workaround: get charCode and do a character match:

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

Is this a GWT bug? And is there a more elegant way to handle this ?

A: 

It seems it's not a GWT-specific bug - please see Issue 3753 and all the references there for a comprehensive view of the problem. Basically, there's a huge mess with how different browsers handle key events - the GWT Team seems to be working on fixing that and a comprehensive fix should be included with GWT 2.1 (whenever is comes out - in the meantime, it might be worth checking out the status of the issue and try the SVN version).

Igor Klimer