4

I have a simple WebView application which I want to control with the keyboard. Is it possible to catch arrow keys in Javascript?

I have tried the following code without any luck:

function handleArrowKeys(evt) {
    console.info('key');                                                                                         
}

document.onkeyup = handleArrowKeys;
document.onkedown = handleArrowKeys;
document.onkepress = handleArrowKeys;

Javascript is enabled in the webview

WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
bara
  • 2,964
  • 2
  • 26
  • 24

1 Answers1

4

You should overwrite the onKeyDown method of WebView. See: http://blog.csdn.net/focusxi/article/details/6780965

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event){
    int valKey = 0;
    System.out.println("Web KEY:"); 
    System.out.println(keyCode);    

    switch(keyCode){
        //UP
        case 50:
        case 19:
            valKey = 19;
            break;
        //DOWN
        case 83:
        case 20:
            valKey = 20;        
            break;
        //LEFT
        case 81:
        case 21:
            valKey = 21;
            break;
        //RIGHT
        case 69:
        case 22:
            valKey = 22;    
            break;
    }

    if (valKey!=0)
    {
        //new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT);
        KeyEvent event1 = new KeyEvent(KeyEvent.ACTION_DOWN, valKey);

        System.out.println(event1.getKeyCode());    

        return super.onKeyDown(38, event1);
    }
    else
    {
        return super.onKeyDown(keyCode, event);
    }

}
}
Nightfirecat
  • 11,432
  • 6
  • 35
  • 51
  • 1
    You have to write in javascript document.onkeydown = function(event){ //do something }; For me I couldnt use jquery $(document).on("keydown"). to be able to listen this on javascript thanks this actually works – ncubica Jan 29 '14 at 04:28
  • crashes when an field has focus. – Alex Jul 06 '15 at 13:04