2013-07-30 3 views
0

어리석은 것처럼 보이지만 onKeyListener에서 액세스 한 KeyEvent에서 메타 상태를 가져올 수 없습니다. 내가 가지고있는 모든 키보드와 에뮬레이터로 시도했다.Android KeyEvent에서 메타 상태를 가져올 수 없습니다.

Shift 키, Ctrl 키 등의 키가 눌러 졌는지 여부에 관계없이 keyEvent.getMetaState()는 0을 반환합니다. TextListener에서 작동하지만 텍스트를 입력 할 필요가 없으면 Tab과 Shift를 구분해야합니다. + 탭.

예상 도움에 감사드립니다.

업데이트. 방금 ​​알아 낸 것은 영문자 키에 대해 메타 상태가보고되지만 다른 키에는 표시되지 않는다는 것입니다.

예를 들어 왼쪽 Shift + T를 누르면 KEYCODE_SHIFT_LEFT 및 KEYCODE_T에 대한 KeyEvent가 생성되고 KEYCODE_T에 대한 KeyEvent에는 META_SHIFT_ON이 설정됩니다. Shift + TAB + T를 사용하여 시스템을 트릭 할 수 있습니다.이 경우 META_SHIFT_ON이 KEYCODE_T 및 KEYCODE_TAB에 대해 설정됩니다. 그러나 Shift + Tab 키를 사용하면 KEYCODE_SHIFT_LEFT에 대한 KeyEvent가 생성되지 않고 메타 상태가 영향을받지 않습니다.

시스템 키보드 구성 파일을 Shift + Tab과 같은 조합으로 업데이트해야합니까?

답변

0

예, 실제로 안드로이드 구성 파일입니다.

당신은 탭 /system/usr/kychars/Generic.kcm에서 항목 (또는 공급 업체에 대응하기위한 파일)을 수정하고 다음으로, 변화에 대한 행을 추가

key TAB { 
    label:        '\t' 
    base:        '\t' 
    shift:        '\t' 
    ctrl, alt, meta:     none 
} 

일부 장치는 쿼티를 사용합니다. kcm, 그것은 변화 선 alaready를 가지고있다. 그들은 침입없이 잘 작동해야합니다. BTW, 유니 코드는 Shift + Tab에 대한 특수 코드 \ u21B9를 제공하지만 안드로이드에서는 인식되지 않을 수 있습니다.

관련 문제