Cocos2d-x 3.3rc android 按键事件截取不到[已解决]

模拟器下正常,但是真机运行时无法获取案件事件
代码如下:
local key_listener = cc.EventListenerKeyboard:create()
local function key_down(keyCode, event)
end
local function key_up(keyCode, event)
end
key_listener:registerScriptHandler(key_down,cc.Handler.EVENT_KEYBOARD_PRESSED)
key_listener:registerScriptHandler(key_up,cc.Handler.EVENT_KEYBOARD_RELEASED)
cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(key_listener,layer

问题解决,cocos2d-x 3.3rc源代码问题手动修改解决
添加代码:
cocos2d-x/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxRenderer.java :

private static native boolean nativeKeyUp(final int pKeyCode);
public void handleKeyUp(final int pKeyCode) {
    Cocos2dxRenderer.nativeKeyUp(pKeyCode);
}

cocos2d-x/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java :

@Override
public boolean onKeyUp(final int pKeyCode, final KeyEvent pKeyEvent) {
    switch (pKeyCode) {
        case KeyEvent.KEYCODE_BACK:
        case KeyEvent.KEYCODE_MENU:
        case KeyEvent.KEYCODE_DPAD_LEFT:
        case KeyEvent.KEYCODE_DPAD_RIGHT:
        case KeyEvent.KEYCODE_DPAD_UP:
        case KeyEvent.KEYCODE_DPAD_DOWN:
        case KeyEvent.KEYCODE_ENTER:
        case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
        case KeyEvent.KEYCODE_DPAD_CENTER:
            this.queueEvent(new Runnable() {
                @Override
                public void run() {
                    Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyUp(pKeyCode);
                }
            });
            return true;
        default:
            return super.onKeyUp(pKeyCode, pKeyEvent);
    }
}

cocos2d-x/cocos/platform/android/jni/TouchesJni.cpp :

JNIEXPORT jboolean JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyUp(JNIEnv * env, jobject thiz, jint keyCode) {
    Director* pDirector = Director::getInstance();
    
    auto iterKeyCode = g_keyCodeMap.find(keyCode);
    if (iterKeyCode == g_keyCodeMap.end()) {
        return JNI_FALSE;
    }
    
    cocos2d::EventKeyboard::KeyCode cocos2dKey = g_keyCodeMap.at(keyCode);
    cocos2d::EventKeyboard event(cocos2dKey, false);
    cocos2d::Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);
    return JNI_TRUE;
    
}

修改:
cocos2d-x/cocos/platform/android/jni/TouchesJni.cpp :
JNIEXPORT jboolean JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeKeyDown(JNIEnv * env, jobject thiz, jint keyCode):
cocos2d::EventKeyboard event(cocos2dKey, true);

能教教我 怎么到eslipse 调试程序吗?
我运行build_native的时候 报错 fatal error 找不到 cocos2d.h
先谢谢了

用eclipse比较麻烦,用专门定制的吧,Cocos Code IDE

多谢 请问这个IDE C++也可以用吗?