You can use SetOnKey for receiving and handling all key events fired in the application.
You may want to use it with DisableKeys - i.e. for defining a custom ENTER command for automatic control focussing.
You can find the complete list of keys and their codes on the Android Developer Page.
See Also: SimulateKey
Example - Demonstration
app.DisableKeys( 'VOLUME_DOWN,VOLUME_UP,BACK' );
function OnStart()
{
lay = app.CreateLayout( "linear", "VCenter,FillXY" );
txt = app.CreateText( "", -1, -1, "multiline,left,monospace" );
lay.AddChild( txt );
edt = app.CreateTextEdit( "", .8, .1 );
lay.AddChild( edt );
app.AddLayout( lay );
app.SetOnKey( OnKey );
edt.Focus();
app.ShowKeyboard( edt )
edt.Gone();
}
function OnKey(action, name, code, extra) {
var text =
"action:" + action +
"\nname :" + name +
"\ncode :" + code +
"\nextra :" + extra;
txt.SetText( text );
}
Example - Surprise
var prev;
function OnStart()
{
app.DisableKeys( "VOLUME_DOWN,VOLUME_UP" );
app.ShowPopup( "Press the volume keys!" );
lay = app.CreateLayout( "Linear", "FillX" );
lay.SetPadding( 0, .85 );
lay.Hide();
img = app.CreateImage( "/Sys/Img/Hello.png", -1, .3 );
lay.AddChild( img );
app.AddLayout( lay );
app.SetOnKey( OnKey );
}
function OnKey(action, name, code, extra)
{
if( action != prev ) {
if( action == "Down" ) lay.Animate( "SlideFromBottom", null, 300 );
if( action == "Up" ) lay.Animate( "SlideToBottom" , null, 300 );
}
prev = action;
}