Date: Fri, 7 Oct 2011 09:32:23 +0200 From: Polytropon <freebsd@edvax.de> To: Gary Kline <kline@thought.org> Cc: FreeBSD Mailing List <freebsd-questions@freebsd.org> Subject: Re: OT: how to tell when i've hit a Fn key? Message-ID: <20111007093223.3681c1fc.freebsd@edvax.de> In-Reply-To: <20111007045101.GA603@thought.org> References: <20111006224114.GA15978@thought.org> <20111006233725.GA18837@saltmine.radix.net> <20111007045101.GA603@thought.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 6 Oct 2011 21:51:01 -0700, Gary Kline wrote: > On Thu, Oct 06, 2011 at 07:37:25PM -0400, Thomas Dickey wrote: > > Date: Thu, 6 Oct 2011 19:37:25 -0400 > > From: Thomas Dickey <dickey@radix.net> > > Subject: Re: OT: how to tell when i've hit a Fn key? > > To: Gary Kline <kline@thought.org> > > Cc: FreeBSD Mailing List <freebsd-questions@freebsd.org> > > > > On Thu, Oct 06, 2011 at 03:41:17PM -0700, Gary Kline wrote: > > > > > > I've got a 103-key keyboard. most of them produce the right WAV > > > file. i was having some trouble with the arrow key, but think i've > > > found a resolution. next are the Function key, F1 to F12. > > > > > > anybody on-list familiar with curses and can help me with this? > > > right now, most of the function keys output 4 clicks [!]. > > > > I generally use tack for verifying the function-keys against the terminal > > description. (I don't recall seeing a port for tack, but it can probably > > be built starting with ncurses-devel, though I haven't tried that, since > > I build development versions of ncurses outside the ports). > > > > For _seeing_ the codes, it helps to type ^V (lnext) right before pressing > > a given key, making the escape character visible. > > > > Hm. no joy in mudville. i know the first byte ia an > ESC [ '\033]. the last, for F1, is an A. the others are > hidden. >From DOS times (that DOS, not _the_ DOS!) I remember that the function keys do generate a "two-key sequene": The first character is a 0x00 byte, the next one is a regular key, such as "A" for PF1. So you did basically check (in pseudocode): extended = false c = read character if c == 0x00 { extended = true c = read character } act upon c && if extended > i'll check ncurses-devel and see w hat it has. REAL code > helps in stuff like this... . I've written a (partially working) dialog library comparable to NCurses Forms in C, using ncurses' built-in functionality. So if you can, use what's already present and working. Instead of dealing with the zero-bytes, it's much easier to use the ncurses functionality. Like this (except this is nonsense): int c; c = getch(); if(c == KEY_F(1)) /* PF1 */ do_stuff(); if(c == KEY_UP) /* Cursor up */ do_more_stuff(); if(c == 27) /* Escape key! */ get_out_of_prison(); >From memory: Space is 32, Return is 13, Backspace is 8, Tab is 9. I think most of them are defined as macros in NCurses. -- Polytropon Magdeburg, Germany Happy FreeBSD user since 4.0 Andra moi ennepe, Mousa, ...
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111007093223.3681c1fc.freebsd>