/// Process the characters we receive as the user presses keys. static void process_input(bool continuous_mode) { bool first_char_seen = false; double prev_tstamp = 0.0; std::vector<wchar_t> bind_chars; fprintf(stderr, "Press a key\n\n"); while (keep_running) { wchar_t wc = input_common_readch(true); if (wc == R_TIMEOUT || wc == R_EOF) { output_bind_command(bind_chars); if (first_char_seen && !continuous_mode) { return; } continue; } prev_tstamp = output_elapsed_time(prev_tstamp, first_char_seen); add_char_to_bind_command(wc, bind_chars); output_info_about_char(wc); if (output_matching_key_name(wc)) { output_bind_command(bind_chars); } if (should_exit(wc)) { fprintf(stderr, "\nExiting at your request.\n"); break; } first_char_seen = true; } }
/// Process the characters we receive as the user presses keys. static void process_input(bool continuous_mode) { bool first_char_seen = false; double prev_tstamp = 0.0; std::vector<wchar_t> bind_chars; std::fwprintf(stderr, L"Press a key\n\n"); while (keep_running) { char_event_t evt{0}; if (reader_test_and_clear_interrupted()) { evt = char_event_t{shell_modes.c_cc[VINTR]}; } else { evt = input_common_readch_timed(true); } if (!evt.is_char()) { output_bind_command(bind_chars); if (first_char_seen && !continuous_mode) { return; } continue; } wchar_t wc = evt.get_char(); prev_tstamp = output_elapsed_time(prev_tstamp, first_char_seen); add_char_to_bind_command(wc, bind_chars); output_info_about_char(wc); if (output_matching_key_name(wc)) { output_bind_command(bind_chars); } if (should_exit(wc)) { std::fwprintf(stderr, L"\nExiting at your request.\n"); break; } first_char_seen = true; } }