Ncurses keypad is not properly working in FreeBSD
Archimedes Gaviola <[email protected]> Tue, 24 Jan 2023 12:09:08 +0800
| Newsgroups | gmane.comp.lib.ncurses.bugs,gmane.comp.lib.ncurses.general |
|---|---|
| Message-ID | <CAJFbk7HAf3R=jwQRX9GebPR3wMQd9o3Cf+y9zN5MFiJidvvTkg@mail.gmail.com> |
--00000000000006307405f2faaec7
Content-Type: text/plain; charset="UTF-8"
Hi,
I have a C program that accepts and displays numeric characters in 0-9 only
and with alphabet keys, function keys are expected not to respond to any
code from the keyboard using keypad(). I simulated a plain Ncurses C
program without a window and another one with a window using the newwin()
function. The program without window works getting no response from
alphabet keys as well as function keys, however the Enter/return key (ch ==
KEY_ENTER) is not working instead I use (ch == '\n') to get it to work. The
backspace key (ch == KEY_BACKSPACE) is working. For the program with the
window, I expect it to behave similar to the plain program but the function
keys such F5 to F12 are showing codes on the screen as well as Insert,
Delete, Page Up and Page Down keys are also showing codes. Only F1, F2, F3
and F4 are behaving expectedly. The same thing happens to the Enter/return
and backspace keys I use (ch == '\n') and (ch == '\b') to get them working.
I need your help in this case if there's something I missed in the Ncurses
initialization parameters or maybe a sort of environment variable
configuration problem with my FreeBSD OS. My FreeBSD system is using xterm.
pangi@siquijor:~ # echo $TERM
xterm
FreeBSD version: FreeBSD 14.0-CURRENT (arm64)
Ncurses version:
#define NCURSES_VERSION_MAJOR 6
#define NCURSES_VERSION_MINOR 2
#define NCURSES_VERSION_PATCH 20210220
1. Plain C program (without window)
#include <ncurses.h>
int main(void)
{
initscr();
keypad(stdscr, TRUE);
noecho();
int i;
for (i=1; i<=14; i++)
{
int ch = getch();
if ((ch == '1') || (ch == '2') || (ch == '3') \
|| (ch == '4') || (ch == '5') || (ch == '6') \
|| (ch == '7') || (ch == '8') || (ch == '9') \
|| (ch == '0'))
{
addch(ch);
refresh();
} else {
--i;
}
//if (ch == KEY_ENTER) (not working)
if (ch == '\n')
{
printw("Return key is pressed.\n");
}
if (ch == KEY_BACKSPACE)
{
printw("Backspace key is pressed.\n");
}
}
endwin();
return 0;
}
2. Plain C derived program (with window)
#include <ncurses.h>
int main(void)
{
WINDOW *alpha;
initscr();
//keypad(stdscr, TRUE); (the same outcome with keypad(alpha, TRUE)
below)
keypad(alpha, TRUE);
noecho();
start_color();
init_pair(1,COLOR_WHITE,COLOR_BLUE);
alpha = newwin(0,0,0,0);
if( alpha == NULL)
{
endwin();
puts("Problem creating window");
return(1);
}
wbkgd(alpha,COLOR_PAIR(1));
wrefresh(alpha);
int i;
for (i=1; i<=14; i++)
{
int ch = wgetch(alpha);
if ((ch == '1') || (ch == '2') || (ch == '3') \
|| (ch == '4') || (ch == '5') || (ch == '6') \
|| (ch == '7') || (ch == '8') || (ch == '9') \
|| (ch == '0'))
{
waddch(alpha,ch);
wrefresh(alpha);
} else {
--i;
}
//if (ch == KEY_ENTER) (not working)
if (ch == '\n')
{
wprintw(alpha,"Return key is pressed.\n");
}
//if (ch == KEY_BACKSPACE) (not working)
if (ch == '\b')
{
wprintw(alpha,"Backspace key is pressed.\n");
}
}
endwin();
return 0;
}
Thanks and best regards,
Archimedes
--00000000000006307405f2faaec7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64
PGRpdiBkaXI9Imx0ciI+PGRpdj4NCkhpLDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SSBoYXZl
IGEgQyBwcm9ncmFtIHRoYXQgYWNjZXB0cyBhbmQgZGlzcGxheXMgbnVtZXJpYyBjaGFyYWN0ZXJz
IGluIDAtOSBvbmx5IGFuZCB3aXRoIGFscGhhYmV0IGtleXMsIGZ1bmN0aW9uIGtleXMgYXJlIGV4
cGVjdGVkIG5vdCB0byByZXNwb25kIHRvIGFueSBjb2RlIGZyb20gdGhlIGtleWJvYXJkIHVzaW5n
IGtleXBhZCgpLiBJIHNpbXVsYXRlZCBhIHBsYWluIE5jdXJzZXMgQyBwcm9ncmFtIHdpdGhvdXQg
YSB3aW5kb3cgYW5kIGFub3RoZXIgb25lIHdpdGggYSB3aW5kb3cgdXNpbmcgdGhlIG5ld3dpbigp
IGZ1bmN0aW9uLiBUaGUgcHJvZ3JhbSB3aXRob3V0IHdpbmRvdyB3b3JrcyBnZXR0aW5nIG5vIHJl
c3BvbnNlIGZyb20gYWxwaGFiZXQga2V5cyBhcyB3ZWxsIGFzIGZ1bmN0aW9uIGtleXMsIGhvd2V2
ZXIgdGhlIEVudGVyL3JldHVybiBrZXkgKGNoID09IEtFWV9FTlRFUikgaXMgbm90IHdvcmtpbmcg
aW5zdGVhZCBJIHVzZSAoY2ggPT0gJiMzOTtcbiYjMzk7KSB0byBnZXQgaXQgdG8gd29yay4gVGhl
IGJhY2tzcGFjZSBrZXkgKGNoID09IEtFWV9CQUNLU1BBQ0UpIGlzIHdvcmtpbmcuIEZvciB0aGUg
cHJvZ3JhbSB3aXRoIHRoZSB3aW5kb3csIEkgZXhwZWN0IGl0IHRvIGJlaGF2ZSBzaW1pbGFyIHRv
IHRoZSBwbGFpbiBwcm9ncmFtIGJ1dCB0aGUgZnVuY3Rpb24ga2V5cyBzdWNoIEY1IHRvIEYxMiBh
cmUgc2hvd2luZyBjb2RlcyBvbiB0aGUgc2NyZWVuIGFzIHdlbGwgYXMgSW5zZXJ0LCBEZWxldGUs
IFBhZ2UgVXAgYW5kIFBhZ2UgRG93biBrZXlzIGFyZSBhbHNvIHNob3dpbmcgY29kZXMuIE9ubHkg
RjEsIEYyLCBGMyBhbmQgRjQgYXJlIGJlaGF2aW5nIGV4cGVjdGVkbHkuIFRoZSBzYW1lIHRoaW5n
IGhhcHBlbnMgdG8gdGhlIEVudGVyL3JldHVybiBhbmQgYmFja3NwYWNlIGtleXMgSSB1c2UgDQoo
Y2ggPT0gJiMzOTtcbiYjMzk7KSBhbmTCoA0KKGNoID09ICYjMzk7XGImIzM5OykgdG8gZ2V0IHRo
ZW0gd29ya2luZy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkkgbmVlZCB5b3VyIGhlbHAgaW4g
dGhpcyBjYXNlIGlmIHRoZXJlJiMzOTtzIHNvbWV0aGluZyBJIG1pc3NlZCBpbiB0aGUgTmN1cnNl
cyBpbml0aWFsaXphdGlvbiBwYXJhbWV0ZXJzIG9yIG1heWJlIGEgc29ydCBvZiBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBjb25maWd1cmF0aW9uIHByb2JsZW0gd2l0aCBteSBGcmVlQlNEIE9TLiBNeSBG
cmVlQlNEIHN5c3RlbSBpcyB1c2luZyB4dGVybS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PnBh
bmdpQHNpcXVpam9yOn4gIyBlY2hvICRURVJNPGJyPnh0ZXJtPGJyPjwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+RnJlZUJTRCB2ZXJzaW9uOiBGcmVlQlNEIDE0LjAtQ1VSUkVOVCAoYXJtNjQpPC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj5OY3Vyc2VzIHZlcnNpb246PGJyPjwvZGl2PjxkaXY+I2Rl
ZmluZSBOQ1VSU0VTX1ZFUlNJT05fTUFKT1IgNjxicj4jZGVmaW5lIE5DVVJTRVNfVkVSU0lPTl9N
SU5PUiAyPGJyPiNkZWZpbmUgTkNVUlNFU19WRVJTSU9OX1BBVENIIDIwMjEwMjIwPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj4xLiBQbGFpbiBDIHByb2dyYW0gKHdpdGhvdXQgd2luZG93KTxicj48
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiNpbmNsdWRlICZsdDtuY3Vyc2VzLmgmZ3Q7PGJyPjxi
cj5pbnQgbWFpbih2b2lkKTxicj57PGJyPsKgIMKgIMKgIMKgIGluaXRzY3IoKTs8YnI+wqAgwqAg
wqAgwqAga2V5cGFkKHN0ZHNjciwgVFJVRSk7PGJyPsKgIMKgIMKgIMKgIG5vZWNobygpOzxicj48
YnI+wqAgwqAgwqAgwqAgaW50IGk7PGJyPjxicj7CoCDCoCDCoCDCoCBmb3IgKGk9MTsgaSZsdDs9
MTQ7IGkrKyk8YnI+wqAgwqAgwqAgwqAgezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnQg
Y2ggPSBnZXRjaCgpOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoKGNoID09ICYjMzk7
MSYjMzk7KSB8fCAoY2ggPT0gJiMzOTsyJiMzOTspIHx8IChjaCA9PSAmIzM5OzMmIzM5OykgXDxi
cj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHx8IChjaCA9PSAmIzM5OzQmIzM5Oykg
fHwgKGNoID09ICYjMzk7NSYjMzk7KSB8fCAoY2ggPT0gJiMzOTs2JiMzOTspIFw8YnI+wqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8fCAoY2ggPT0gJiMzOTs3JiMzOTspIHx8IChjaCA9
PSAmIzM5OzgmIzM5OykgfHwgKGNoID09ICYjMzk7OSYjMzk7KSBcPGJyPsKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgfHwgKGNoID09ICYjMzk7MCYjMzk7KSk8YnI+wqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhZGRj
aChjaCk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2goKTs8
YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHs8YnI+wqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgLS1pOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9PGJyPjxi
cj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvL2lmIChjaCA9PSBLRVlfRU5URVIpIChub3Qgd29y
a2luZyk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGNoID09ICYjMzk7XG4mIzM5Oyk8
YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgezxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCBwcmludHcoJnF1b3Q7UmV0dXJuIGtleSBpcyBwcmVzc2VkLlxuJnF1b3Q7KTs8
YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj48YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgaWYgKGNoID09IEtFWV9CQUNLU1BBQ0UpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHs8
YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnR3KCZxdW90O0JhY2tz
cGFjZSBrZXkgaXMgcHJlc3NlZC5cbiZxdW90Oyk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IH08YnI+PGJyPsKgIMKgIMKgIMKgIH08YnI+wqAgwqAgwqAgwqAgZW5kd2luKCk7PGJyPsKgIMKg
IMKgIMKgIHJldHVybiAwOzxicj59PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4yLiBQbGFpbiBD
IGRlcml2ZWQgcHJvZ3JhbSAod2l0aCB3aW5kb3cpPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4j
aW5jbHVkZSAmbHQ7bmN1cnNlcy5oJmd0Ozxicj48YnI+aW50IG1haW4odm9pZCk8YnI+ezxicj7C
oCDCoCDCoCDCoCBXSU5ET1cgKmFscGhhOzxicj48YnI+wqAgwqAgwqAgwqAgaW5pdHNjcigpOzxi
cj7CoCDCoCDCoCDCoCAvL2tleXBhZChzdGRzY3IsIFRSVUUpOyAodGhlIHNhbWUgb3V0Y29tZSB3
aXRoIGtleXBhZChhbHBoYSwgVFJVRSkgYmVsb3cpPGJyPsKgIMKgIMKgIMKgIGtleXBhZChhbHBo
YSwgVFJVRSk7PGJyPsKgIMKgIMKgIMKgIG5vZWNobygpOzxicj7CoCDCoCDCoCDCoCBzdGFydF9j
b2xvcigpOzxicj7CoCDCoCDCoCDCoCBpbml0X3BhaXIoMSxDT0xPUl9XSElURSxDT0xPUl9CTFVF
KTs8YnI+PGJyPsKgIMKgIMKgIMKgIGFscGhhID0gbmV3d2luKDAsMCwwLDApOzxicj7CoCDCoCDC
oCDCoCBpZiggYWxwaGEgPT0gTlVMTCk8YnI+wqAgwqAgwqAgwqAgezxicj7CoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCBlbmR3aW4oKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0cygmcXVv
dDtQcm9ibGVtIGNyZWF0aW5nIHdpbmRvdyZxdW90Oyk7PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIHJldHVybigxKTs8YnI+wqAgwqAgwqAgwqAgfTxicj48YnI+wqAgwqAgwqAgwqAgd2JrZ2Qo
YWxwaGEsQ09MT1JfUEFJUigxKSk7PGJyPsKgIMKgIMKgIMKgIHdyZWZyZXNoKGFscGhhKTs8YnI+
PGJyPsKgIMKgIMKgIMKgIGludCBpOzxicj48YnI+wqAgwqAgwqAgwqAgZm9yIChpPTE7IGkmbHQ7
PTE0OyBpKyspPGJyPsKgIMKgIMKgIMKgIHs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50
IGNoID0gd2dldGNoKGFscGhhKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKChjaCA9
PSAmIzM5OzEmIzM5OykgfHwgKGNoID09ICYjMzk7MiYjMzk7KSB8fCAoY2ggPT0gJiMzOTszJiMz
OTspIFw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8fCAoY2ggPT0gJiMzOTs0
JiMzOTspIHx8IChjaCA9PSAmIzM5OzUmIzM5OykgfHwgKGNoID09ICYjMzk7NiYjMzk7KSBcPGJy
PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfHwgKGNoID09ICYjMzk7NyYjMzk7KSB8
fCAoY2ggPT0gJiMzOTs4JiMzOTspIHx8IChjaCA9PSAmIzM5OzkmIzM5OykgXDxicj7CoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHx8IChjaCA9PSAmIzM5OzAmIzM5OykpPGJyPsKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIHs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgd2FkZGNoKGFscGhhLGNoKTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgd3JlZnJlc2goYWxwaGEpOzxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Ugezxi
cj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAtLWk7PGJyPsKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIH08YnI+PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vaWYgKGNoID09
IEtFWV9FTlRFUikgKG5vdCB3b3JraW5nKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAo
Y2ggPT0gJiMzOTtcbiYjMzk7KTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7PGJyPsKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdwcmludHcoYWxwaGEsJnF1b3Q7UmV0dXJu
IGtleSBpcyBwcmVzc2VkLlxuJnF1b3Q7KTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxi
cj48YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy9pZiAoY2ggPT0gS0VZX0JBQ0tTUEFDRSkg
KG5vdCB3b3JraW5nKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoY2ggPT0gJiMzOTtc
YiYjMzk7KTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB7PGJyPsKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIHdwcmludHcoYWxwaGEsJnF1b3Q7QmFja3NwYWNlIGtleSBpcyBw
cmVzc2VkLlxuJnF1b3Q7KTs8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfTxicj48YnI+wqAg
wqAgwqAgwqAgfTxicj7CoCDCoCDCoCDCoCBlbmR3aW4oKTs8YnI+wqAgwqAgwqAgwqAgcmV0dXJu
IDA7PGJyPn08L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoYW5rcyBhbmQgYmVzdCByZWdhcmRz
LDwvZGl2PjxkaXY+QXJjaGltZWRlczxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj4NCg==
--00000000000006307405f2faaec7--