시프트 키 또는 Alt 키의 키 누름을 캡처하려고하는데 실제 키보드로 올바르게 작동하는 것 같습니다. 불행히도 onScreen 키보드로 동일한 코드를 테스트 할 때 응답하지 않습니다 (2.1, 4.03 에뮬레이터 및 2.3 물리적 장치를 시도했습니다).소프트/온 스크린 키보드의 특수 키 누름 (shift, alt) 캡처
이것은 아마도 해결 방법이없는 플랫폼 문제인 것처럼 보이지만, 마지막 도랑 노력으로 누군가가 하나를 찾았는지 확인하려면 여기에 질문을 게시하고 싶습니다 (어떤 아이디어를 기꺼이 기꺼이 받아들이겠습니까).
감사합니다.
편집 내 지점을 명확하게 : 나는에 중단 점을 넣어 시도 나는 실제 키보드의 이동을 누르면 라인, 그리고 항상 중지됩니다 "(event.getAction() == KeyEvent.ACTION_DOWN)의 경우" , 그러나 결코 onScreenKeyboard의 이동을 누를 때. 따라서 문제는 onKey가 onScreenKeyboard의 모든 키 누르기에 대해 실행되고 있지 않다는 것입니다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditText1 = (EditText) findViewById(R.id.editText1);
mEditText1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
Toast.makeText(IMETestActivity.this, "Enter was consumed",
Toast.LENGTH_SHORT).show();
return true;
case KeyEvent.META_SHIFT_LEFT_ON:
case KeyEvent.META_SHIFT_RIGHT_ON:
Toast.makeText(IMETestActivity.this, "Meta Shift was consumed",
Toast.LENGTH_SHORT).show();
return true;
case KeyEvent.KEYCODE_SHIFT_LEFT:
case KeyEvent.KEYCODE_SHIFT_RIGHT:
Toast.makeText(IMETestActivity.this, "Shift was consumed",
Toast.LENGTH_SHORT).show();
return true;
default:
break;
}
}
return false;
}
});
}
"if (event.getAction() == KeyEvent.ACTION_DOWN)"줄에 중단 점을 넣으려고했는데 실제로 키보드의 이동을 누르면 중지되지만 결코 이동하지 않을 때는 중단됩니다. onScreenKeyboard. 따라서 문제는 onKey가 onScreenKeyboard의 모든 키 누르기에 대해 실행되고 있지 않다는 것입니다. –