Hi all!
I'm trying to detect Backspace input using Curses/Ncurses. So I have the
following Perl script that isolates the problem I'm having:
{{{{{{{{{{
#!/usr/bin/perl
use strict;
use warnings;
use Curses;
my $main_win = Curses->new();
initscr();
noecho();
$main_win->keypad(1);
my $char = $main_win->getch();
my $ok = ($char eq KEY_BACKSPACE());
endwin();
print sprintf("%s\nGot %s\n",
($ok ? "Got backspace" : "Did not get backspace"),
$char
);
}}}}}}}}}}
On a konsole or xterm, after I press Backspace, I'm getting:
{{{
Did not get backspace
Got
}}}
On a Linux virtual console, it seems to work, and I'm getting "Got backspace".
Now, I implemented this program as a C program:
{{{{{{{{
/*
* test-bs.c
*
* Compile with:
*
* gcc -Wall -o test-bs test-bs.c -lncurses
*
* */
#include <curses.h>
#include <stdio.h>
int main(int argc, char * argv[])
{
WINDOW * main_win;
int ch;
int ok;
int expected;
initscr();
noecho();
main_win = newwin(24, 80, 0, 0);
keypad(main_win, 1);
ch = wgetch(main_win);
expected = KEY_BACKSPACE;
ok = (ch == expected);
endwin();
printf(
"%s\nGot: %i\nExpected: %i\n",
(ok ? "Got backspace" : "Did not get backspace"),
ch,
expected
);
return !ok;
}
}}}}}}}}
And on the xterm/konsole, I'm getting:
{{{
shlomi:$module$ ./test-bs
Did not get backspace
Got: 127
Expected: 263
}}}
Again - it works on a virtual console.
The funny thing is that I can recall it working correctly on konsole/xterm a
few days ago, and then it stopped.
What should I do to get it working?
I'm using Mandriva Cooker on a Pentium 4 machine.
Regards,
Shlomi Fish
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
The Case for File Swapping - http://xrl.us/bjn7i
Shlomi, so what are you working on? Working on a new wiki about unit testing
fortunes in freecell? -- Ran Eilam
_______________________________________________
Perl mailing list
[email protected]
http://perl.org.il/mailman/listinfo/perl