| 102 |
moveto(0, 0); |
moveto(0, 0); |
| 103 |
} |
} |
| 104 |
|
|
| 105 |
int press_any_key() |
inline int press_any_key() |
| 106 |
{ |
{ |
| 107 |
|
return press_any_key_ex(" \033[1;33m按任意键继续...\033[m"); |
| 108 |
|
} |
| 109 |
|
|
| 110 |
|
int press_any_key_ex(const char *msg) |
| 111 |
|
{ |
| 112 |
|
int ch = 0; |
| 113 |
|
int wait_seconds = 60; |
| 114 |
|
int duration = 0; |
| 115 |
|
time_t t_begin = time(NULL); |
| 116 |
|
|
| 117 |
moveto(SCREEN_ROWS, 0); |
moveto(SCREEN_ROWS, 0); |
| 118 |
clrtoeol(); |
clrtoeol(); |
| 119 |
|
|
| 120 |
prints(" \033[1;33m按任意键继续...\033[0;37m"); |
prints(msg); |
| 121 |
iflush(); |
iflush(); |
| 122 |
|
|
| 123 |
return igetch_t(MIN(MAX_DELAY_TIME, 60)); |
do |
| 124 |
|
{ |
| 125 |
|
ch = igetch_t(wait_seconds - duration); |
| 126 |
|
duration = (int)(time(NULL) - t_begin); |
| 127 |
|
} while (!SYS_server_exit && ch == 0 && duration < 60); |
| 128 |
|
|
| 129 |
|
return ch; |
| 130 |
} |
} |
| 131 |
|
|
| 132 |
void set_input_echo(int echo) |
void set_input_echo(int echo) |
| 134 |
if (echo) |
if (echo) |
| 135 |
{ |
{ |
| 136 |
outc('\x83'); // ASCII code 131 |
outc('\x83'); // ASCII code 131 |
|
iflush(); |
|
| 137 |
} |
} |
| 138 |
else |
else |
| 139 |
{ |
{ |
| 140 |
// outc ('\x85'); // ASCII code 133 |
// outc ('\x85'); // ASCII code 133 |
| 141 |
prints("\xff\xfb\x01\xff\xfb\x03"); |
prints("\xff\xfb\x01\xff\xfb\x03"); |
|
iflush(); |
|
|
igetch(0); |
|
|
igetch_reset(); |
|
| 142 |
} |
} |
| 143 |
|
iflush(); |
| 144 |
} |
} |
| 145 |
|
|
| 146 |
static int _str_input(char *buffer, int buf_size, int max_display_len, int echo_mode) |
static int _str_input(char *buffer, int buf_size, int max_display_len, int echo_mode) |
| 164 |
|
|
| 165 |
if (ch == CR) |
if (ch == CR) |
| 166 |
{ |
{ |
|
igetch_reset(); |
|
| 167 |
break; |
break; |
| 168 |
} |
} |
| 169 |
else if (ch == KEY_TIMEOUT || ch == KEY_NULL) // timeout or broken pipe |
else if (ch == KEY_TIMEOUT || ch == KEY_NULL) // timeout or broken pipe |
| 334 |
|
|
| 335 |
if (ch == CR) |
if (ch == CR) |
| 336 |
{ |
{ |
|
igetch_reset(); |
|
| 337 |
break; |
break; |
| 338 |
} |
} |
| 339 |
else if (ch == KEY_TIMEOUT || ch == KEY_NULL) // timeout or broken pipe |
else if (ch == KEY_TIMEOUT || ch == KEY_NULL) // timeout or broken pipe |
| 715 |
output_end_row = SCREEN_ROWS - 1; // Legacy Fterm only works with this line |
output_end_row = SCREEN_ROWS - 1; // Legacy Fterm only works with this line |
| 716 |
break; |
break; |
| 717 |
case CR: |
case CR: |
|
igetch_reset(); |
|
| 718 |
case KEY_SPACE: |
case KEY_SPACE: |
| 719 |
case KEY_DOWN: |
case KEY_DOWN: |
| 720 |
if (line_current + (screen_row_total - (output_current_row - screen_begin_row)) >= display_line_total) // Reach end |
if (line_current + (screen_row_total - (output_current_row - screen_begin_row)) >= display_line_total) // Reach end |