//------------------------------------------------------------ void ofxAppNoWindow::runAppViaInfiniteLoop(ofBaseApp * appPtr){ ofSetCurrentRenderer(ofPtr<ofBaseRenderer>(new ofNoopRenderer)); ofAppPtr = appPtr; #if defined TARGET_OSX || defined TARGET_LINUX // for keyboard //set_conio_terminal_mode(); #endif ofNotifySetup(); // ofLogNotice("ofxAppNoWindow") // << "***" << endl // << "***" << endl // << "*** running a headless (no window) app" << endl // << "***" << endl // << "*** keyboard input works here" << endl // << "***"<< endl // << "*** press Esc or Ctrl-C to quit" << endl // << "***" << endl; while (true) { /// listen for escape #ifdef TARGET_WIN32 if (GetAsyncKeyState(VK_ESCAPE)) ofNotifyKeyPressed(OF_KEY_ESC); #endif #if defined TARGET_OSX || defined TARGET_LINUX while ( kbhit() ) { int key = getch(); if ( key == 27 ) { ofNotifyKeyPressed(OF_KEY_ESC); } else if ( key == /* ctrl-c */ 3 ) { ofLogNotice("ofxAppNoWindow") << "Ctrl-C pressed" << endl; OF_EXIT_APP(0); } else { ofNotifyKeyPressed(key); } } #endif ofNotifyUpdate(); ofNotifyDraw(); } }
//------------------------------------------------------------ void ofAppGlutWindow::keyboard_cb(unsigned char key, int x, int y) { ofNotifyKeyPressed(key); if (key == OF_KEY_ESC){ // "escape" exitApp(); } }
//------------------------------------------ void ofNotifyKeyEvent(const ofKeyEventArgs & keyEvent){ switch(keyEvent.type){ case ofKeyEventArgs::Pressed: ofNotifyKeyPressed(keyEvent.key); break; case ofKeyEventArgs::Released: ofNotifyKeyReleased(keyEvent.key); break; } }
//------------------------------------------------------ void ofAppGlutWindow::special_key_cb(int key, int x, int y) { ofNotifyKeyPressed(key | OF_KEY_MODIFIER); }
//------------------------------------------------------------ void ofAppGlutWindow::keyboard_cb(unsigned char key, int x, int y) { ofNotifyKeyPressed(key); }
//------------------------------------------------------------ void ofxFensterManager::keyboard_cb(GLFWwindow* windowP_, int key, int scancode, unsigned int codepoint, int action, int mods) { ofLogVerbose("ofxFenster") << "key: " << key << " state: " << action; switch (key) { case GLFW_KEY_ESCAPE: key = OF_KEY_ESC; break; case GLFW_KEY_F1: key = OF_KEY_F1; break; case GLFW_KEY_F2: key = OF_KEY_F2; break; case GLFW_KEY_F3: key = OF_KEY_F3; break; case GLFW_KEY_F4: key = OF_KEY_F4; break; case GLFW_KEY_F5: key = OF_KEY_F5; break; case GLFW_KEY_F6: key = OF_KEY_F6; break; case GLFW_KEY_F7: key = OF_KEY_F7; break; case GLFW_KEY_F8: key = OF_KEY_F8; break; case GLFW_KEY_F9: key = OF_KEY_F9; break; case GLFW_KEY_F10: key = OF_KEY_F10; break; case GLFW_KEY_F11: key = OF_KEY_F11; break; case GLFW_KEY_F12: key = OF_KEY_F12; break; case GLFW_KEY_LEFT: key = OF_KEY_LEFT; break; case GLFW_KEY_RIGHT: key = OF_KEY_RIGHT; break; case GLFW_KEY_UP: key = OF_KEY_UP; break; case GLFW_KEY_DOWN: key = OF_KEY_DOWN; break; case GLFW_KEY_PAGE_UP: key = OF_KEY_PAGE_UP; break; case GLFW_KEY_PAGE_DOWN: key = OF_KEY_PAGE_DOWN; break; case GLFW_KEY_HOME: key = OF_KEY_HOME; break; case GLFW_KEY_END: key = OF_KEY_END; break; case GLFW_KEY_INSERT: key = OF_KEY_INSERT; break; case GLFW_KEY_LEFT_SHIFT: key = OF_KEY_LEFT_SHIFT; break; case GLFW_KEY_LEFT_CONTROL: key = OF_KEY_LEFT_CONTROL; break; case GLFW_KEY_LEFT_ALT: key = OF_KEY_LEFT_ALT; break; case GLFW_KEY_LEFT_SUPER: key = OF_KEY_LEFT_SUPER; break; case GLFW_KEY_RIGHT_SHIFT: key = OF_KEY_RIGHT_SHIFT; break; case GLFW_KEY_RIGHT_CONTROL: key = OF_KEY_RIGHT_CONTROL; break; case GLFW_KEY_RIGHT_ALT: key = OF_KEY_RIGHT_ALT; break; case GLFW_KEY_RIGHT_SUPER: key = OF_KEY_RIGHT_SUPER; break; case GLFW_KEY_BACKSPACE: key = OF_KEY_BACKSPACE; break; case GLFW_KEY_DELETE: key = OF_KEY_DEL; break; case GLFW_KEY_ENTER: key = OF_KEY_RETURN; break; case GLFW_KEY_KP_ENTER: key = OF_KEY_RETURN; break; case GLFW_KEY_TAB: key = OF_KEY_TAB; break; default: break; } //GLFW defaults to uppercase - OF users are used to lowercase //we look and see if shift is being held to toggle upper/lowecase if( key >= 65 && key <= 90 && !ofGetKeyPressed(OF_KEY_SHIFT) ) { key += 32; } ofxFensterPtr fenster = get()->getFensterByGlfwHandle(windowP_); if(action == GLFW_PRESS || action == GLFW_REPEAT) { if(fenster == get()->mainWindow) ofNotifyKeyPressed(key); ofKeyEventArgs args; args.key = key; args.type = ofKeyEventArgs::Pressed; ofNotifyEvent(fenster->onKeyPressed, args); if (key == OF_KEY_ESC) { // "escape" ofExit(); } } else if (action == GLFW_RELEASE) { if(fenster == get()->mainWindow) ofNotifyKeyReleased(key); ofKeyEventArgs args; args.key = key; args.type = ofKeyEventArgs::Pressed; ofNotifyEvent(fenster->onKeyReleased, args); } }
void Java_cc_openframeworks_OFAndroid_onKeyDown(JNIEnv* env, jobject thiz, jint keyCode){ ofNotifyKeyPressed(keyCode); }