Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #126433

Re: Correct way to detect F1

From Egor <egor@ruby.local>
Newsgroups comp.lang.c
Subject Re: Correct way to detect F1
Date 2018-02-08 14:21 +0200
Organization Aioe.org NNTP Server
Message-ID <uurtke-ad.ln1@ruby.opensrc.club> (permalink)
References <800430537@f122.n1.z21.fsxnet>

Show all headers | View raw


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");

"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.

To get proper input you need to enable raw mode using termios, as been
shown by another poster in this thread.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


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