FS#32055 - [linux,ncurses] arrow key not working in "make menuconfig"
Attached to Project:
Arch Linux
Opened by Adam (adam900710) - Thursday, 18 October 2012, 06:53 GMT
Last edited by Tobias Powalowski (tpowa) - Friday, 26 October 2012, 16:29 GMT
Opened by Adam (adam900710) - Thursday, 18 October 2012, 06:53 GMT
Last edited by Tobias Powalowski (tpowa) - Friday, 26 October 2012, 16:29 GMT
|
Details
Description:
When using "make menuconfig" to configure the kernel or any other things, the arrow key does not function as it should. Up/Down don't make the cursor move and only "^[OA^[OB" is output in the last line of the screen. Additional info: * package version(s) ncurses 5.9-3 x86_64 * screenshot : https://docs.google.com/open?id=0BxpkL3ehzX3pMC1xVlBDZWxqdkk Steps to reproduce: Use make menuconfig to configure the kernel or another things(e.g. crosstool-ng) |
This task depends upon
Closed by Tobias Powalowski (tpowa)
Friday, 26 October 2012, 16:29 GMT
Reason for closing: Not a bug
Friday, 26 October 2012, 16:29 GMT
Reason for closing: Not a bug
My terminal emulator is Terminal(from xfce4).
Also tried in tty, but also no luck.
So I don't think it has something to do with the $TERM env variable.
e.g.:
#include <ncurses.h>
WINDOW *create_newwin(int height, int width, int starty, int startx);
void destroy_win(WINDOW *local_win);
int main(int argc, char *argv[])
{ WINDOW *my_win;
int startx, starty, width, height;
int ch;
initscr(); /* Start curses mode */
cbreak(); /* Line buffering disabled, Pass on
* everty thing to me */
keypad(stdscr, TRUE); /* I need that nifty F1 */
height = 3;
width = 10;
starty = (LINES - height) / 2; /* Calculating for a center placement */
startx = (COLS - width) / 2; /* of the window */
printw("Press F1 to exit");
refresh();
my_win = create_newwin(height, width, starty, startx);
while((ch = getch()) != KEY_F(1))
{ switch(ch)
{ case KEY_LEFT:
destroy_win(my_win);
my_win = create_newwin(height, width, starty,--startx);
break;
case KEY_RIGHT:
destroy_win(my_win);
my_win = create_newwin(height, width, starty,++startx);
break;
case KEY_UP:
destroy_win(my_win);
my_win = create_newwin(height, width, --starty,startx);
break;
case KEY_DOWN:
destroy_win(my_win);
my_win = create_newwin(height, width, ++starty,startx);
break;
}
}
endwin(); /* End curses mode */
return 0;
}
WINDOW *create_newwin(int height, int width, int starty, int startx)
{ WINDOW *local_win;
local_win = newwin(height, width, starty, startx);
box(local_win, 0 , 0); /* 0, 0 gives default characters
* for the vertical and horizontal
* lines */
wrefresh(local_win); /* Show that box */
return local_win;
}
void destroy_win(WINDOW *local_win)
{
/* box(local_win, ' ', ' '); : This won't produce the desired
* result of erasing the window. It will leave it's four corners
* and so an ugly remnant of window.
*/
wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
/* The parameters taken are
* 1. win: the window on which to operate
* 2. ls: character to be used for the left side of the window
* 3. rs: character to be used for the right side of the window
* 4. ts: character to be used for the top side of the window
* 5. bs: character to be used for the bottom side of the window
* 6. tl: character to be used for the top left corner of the window
* 7. tr: character to be used for the top right corner of the window
* 8. bl: character to be used for the bottom left corner of the window
* 9. br: character to be used for the bottom right corner of the window
*/
wrefresh(local_win);
delwin(local_win);
}
TERM directly correlates to terminfo, which directly correlates to the functionality/capabilities of the terminal. It has everything to do with the TERM variable and the associated terminfo being available/supported by your terminal. Unless you've messed with the stty or other terminal manipulation commands in your shell RC files, there's little else that could be at fault.
So the problem may be the scripts that generate the menuconfig UI?
It is the cope-git which wrapped the oringinal make command caused the problem.
If I use /usr/bin/make, everything works fine as usual.
Please close the bug and thanks everyone.