:(before "End Primitive Recipe Declarations") READ_KEYBOARD_OR_MOUSE_EVENT, :(before "End Primitive Recipe Numbers") Recipe_number["read-keyboard-or-mouse-event"] = READ_KEYBOARD_OR_MOUSE_EVENT; :(before "End Primitive Recipe Implementations") case READ_KEYBOARD_OR_MOUSE_EVENT: { products.resize(2); // result and status tb_event event; int event_type = tb_peek_event(&event, 5/*ms*/); if (event_type == TB_EVENT_KEY) { products.at(0).push_back(/*keyboard event*/0); long long key = event.key ? event.key : event.ch; if (key == TB_KEY_CTRL_C) tb_shutdown(), exit(1); if (key == TB_KEY_BACKSPACE2) key = TB_KEY_BACKSPACE; if (key == TB_KEY_CARRIAGE_RETURN) key = TB_KEY_NEWLINE; products.at(0).push_back(key); products.at(1).push_back(/*found*/true); break; } if (event_type == TB_EVENT_MOUSE) { products.at(0).push_back(/*mouse event*/1); //? tb_shutdown(); //? 1 //? cerr << event_type << ' ' << event.key << ' ' << event.y << ' ' << event.x << '\n'; //? 1 //? exit(0); //? 1 products.at(0).push_back(event.key); // which button, etc. products.at(0).push_back(event.y); // row products.at(0).push_back(event.x); // column products.at(1).push_back(/*found*/true); break; } products.at(1).push_back(/*found*/false); break; }