#define __USE_XOPEN_EXTENDED 1
#endif
#include <ftw.h>
-#include <wchar.h>
#include <pwd.h>
#include <grp.h>
static int get_input(const char *prompt)
{
+ wint_t ch[1];
+
if (prompt)
printmsg(prompt);
cleartimeout();
- int r = getch();
+ get_wch(ch);
#ifdef KEY_RESIZE
- while (r == KEY_RESIZE) {
+ while (*ch == KEY_RESIZE) {
if (prompt) {
clearoldprompt();
xlines = LINES;
printmsg(prompt);
}
- r = getch();
+ get_wch(ch);
}
#endif
settimeout();
- return r;
+ return (int)*ch;
}
static bool isselfileempty(void)
#ifdef BENCH
return SEL_QUIT;
#endif
- int c = presel;
- uint_t i;
+ wint_t c = presel;
+ int i = ERR;
bool escaped = FALSE;
if (c == 0 || c == MSGWAIT) {
try_quit:
- c = getch();
+ i = get_wch(&c);
//DPRINTF_D(c);
//DPRINTF_S(keyname(c));
/* Handle Alt+key */
if (c == ESC) {
timeout(0);
- c = getch();
- if (c != ERR) {
+ i = get_wch(&c);
+ if (i != ERR) {
if (c == ESC)
c = CONTROL('L');
else {
}
}
- if (c == ERR && presel == MSGWAIT)
+ if (i == ERR && presel == MSGWAIT)
c = (cfg.filtermode || filterset()) ? FILTER : CONTROL('L');
else if (c == FILTER || c == CONTROL('L'))
/* Clear previous filter when manually starting */
clearfilter();
}
- if (c == -1) {
+ if (i == ERR) {
++idle;
/*
#pragma once
#include <curses.h>
+#include <wchar.h>
#define CONTROL(c) ((c) & 0x1f)
/* Associate a pressed key to an action */
struct key {
- int sym; /* Key pressed */
+ wint_t sym; /* Key pressed */
enum action act; /* Action */
};