Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #126452
| From | Keith Thompson <kst-u@mib.org> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Correct way to detect F1 |
| Date | 2018-02-08 10:29 -0800 |
| Organization | None to speak of |
| Message-ID | <lnh8qrxrle.fsf@kst-u.example.com> (permalink) |
| References | <800430537@f122.n1.z21.fsxnet> <uurtke-ad.ln1@ruby.opensrc.club> |
Egor <egor@ruby.local> writes:
> shinobi <shinobi@f122.n1.z21.fsxnet> wrote:
>> I wonder. What's the correct way to detect F1 in Linux Console?
>
> Various terminals produce different sequences for F-keys. The terminal
> I use (PuTTY) produces the following sequences under different
> configurations:
>
> \33[[A
> \33OP
> \33[11~
> \33[M
>
> (\33 is ESC)
>
> Linux console produces \33[[A, but it is a bad practice to hardcode
> terminal escape sequences. If you want your code to work on variety of
> terminals, you need to use terminfo library.
>
> Here's an example of how to get escape sequence for F1 using terminfo:
>
> #include <term.h>
> #include <stdio.h>
> ...
> setupterm(NULL, fileno(stdio), NULL);
> char* kf1 = tigetstr("kf1");
I think you mean
setupterm(NULL, fileno(stdin), NULL);
And I'd use `const char *const kf1 = ...` (you don't want to modify
either the pointer or what it points to).
That gives you the appropriate string. Is there support for recognizing
that string on input? (In particular, you want to be able to
distinguish between an escape character that's part of a sequence and
one that's the result of the user hitting the escape key; that requires
timing.)
> "kf1" is a terminal capability. There are many different ones, but this
> particular one is responsible for input of the F1 key.
> Manpage terminfo(5) has a full list of capabilities.
>
> A very important thing to note is that tigetstr returns -1 on error,
> and not NULL as one might expect.
It returns (char*)-1 if capname is not a string capability, or 0 (NULL)
if it is canceled or absent from the terminal description.
> To get proper input you need to enable raw mode using termios, as been
> shown by another poster in this thread.
--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Correct way to detect F1 shinobi@f122.n1.z21.fsxnet (shinobi) - 2018-01-29 03:44 +1200
Re: Correct way to detect F1 Lorinczy Zsigmond <zsiga@nospam.for.me> - 2018-01-29 10:34 +0100
Re: Correct way to detect F1 Keith Thompson <kst-u@mib.org> - 2018-01-29 09:24 -0800
Re: Correct way to detect F1 "James R. Kuyper" <jameskuyper@verizon.net> - 2018-01-29 12:43 -0500
Re: Correct way to detect F1 scott@slp53.sl.home (Scott Lurndal) - 2018-01-29 18:20 +0000
Re: Correct way to detect F1 ais523 <ais523@nethack4.org> - 2018-01-29 21:03 +0000
Re: Correct way to detect F1 Robert Wessel <robertwessel2@yahoo.com> - 2018-01-29 20:47 -0600
Re: Correct way to detect F1 Keith Thompson <kst-u@mib.org> - 2018-01-29 20:01 -0800
Re: Correct way to detect F1 Robert Wessel <robertwessel2@yahoo.com> - 2018-01-29 22:43 -0600
Re: Correct way to detect F1 Ike Naar <ike@iceland.freeshell.org> - 2018-01-29 10:26 +0000
Re: Correct way to detect F1 "Mr. Man-wai Chang" <toylet.toylet@gmail.com> - 2018-01-30 14:14 +0800
Re: Correct way to detect F1 luser droog <luser.droog@gmail.com> - 2018-01-30 09:26 -0800
Re: Correct way to detect F1 bartc <bc@freeuk.com> - 2018-01-30 18:39 +0000
Re: Correct way to detect F1 Egor <egor@ruby.local> - 2018-02-08 14:21 +0200
Re: Correct way to detect F1 shinobi@f153.n1.z21.fsxnet (shinobi) - 2018-02-08 16:41 +1200
Re: Correct way to detect F1 Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-02-08 20:43 +0000
Re: Correct way to detect F1 Keith Thompson <kst-u@mib.org> - 2018-02-08 13:13 -0800
Re: Correct way to detect F1 scott@slp53.sl.home (Scott Lurndal) - 2018-02-08 22:14 +0000
Re: Correct way to detect F1 Keith Thompson <kst-u@mib.org> - 2018-02-08 10:29 -0800
Re: Correct way to detect F1 Egor <egor@ruby.local> - 2018-02-09 15:05 +0200
Re: Correct way to detect F1 Jorgen Grahn <grahn+nntp@snipabacken.se> - 2018-02-09 17:30 +0000
Re: Correct way to detect F1 Keith Thompson <kst-u@mib.org> - 2018-02-09 10:06 -0800
Re: Correct way to detect F1 luser droog <luser.droog@gmail.com> - 2018-02-08 16:31 -0800
csiph-web