5

単独で押すとホームボタンとして機能するだけでなく、デバイス上の他のボタンの修飾子としても機能するボタンを備えた入力デバイスで作業しています。

私はあなたが他のボタンでkcmファイルでこれを行うことができることを知っています、そして次のようなものを持っています:

key ESCAPE {
    base:                               fallback BACK
    alt, meta:                          fallback HOME
    ctrl:                               fallback MENU
}

次のようなものを持つことは可能ですか?

key CTRL_LEFT {
    base:                               fallback HOME
    {SOMETHING HERE}:                   CTRL_LEFT
}

そのボタンを別のボタンで押して、HOMEにフォールバックしないようにするには?

前もって感謝します!:D

4

1 に答える 1

1

この機能はシステム レベルでは使用できません 。可能なすべてのオプションのリストについては、http ://source.android.com/tech/input/key-character-map-files.html を参照してください。

ただし、アプリケーション レベルで使用する場合は、次のようにプログラムできます。

import android.view.KeyEvent;

private boolean home = false;

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
   if (event.getScanCode() == 29)        //29 == CTRL_LEFT
     home = true;        //if we release this button, HOME needs to be invoked
   else home = false;    //so CTRL_LEFT was used as a modifier: no need to invoke HOME

   //allow the system to pass key handling to the next listener
   return super.onKeyUp(keyCode, event);
}

public boolean onKeyUp(int keyCode, KeyEvent event)
{
   if (event.getScanCode() == 29 && home == true)
   {
     super.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HOME));
     return true;        //so we absorb the event
   }
   return super.onKeyUp(keyCode, event);
}

次に、このアプリケーションがキーストロークを受信するように設定されている限り (自分でコーディングしない限り、通常はプライバシーの問題です)、必要に応じてキーストロークを処理し、HOME ボタンをディスパッチできます。

このように続行する場合は、削除する必要があります

base:                               fallback HOME

あなたのコードから。

于 2012-10-31T19:11:19.150 に答える