🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
5 messages
5 total messages Started by Maciej Ciesla Thu, 16 Sep 1999 21:44
obsluga klawiatury
#432
Author: Maciej Ciesla
Date: Thu, 16 Sep 1999 21:44
12 lines
1180 bytes
Jestem poczatkujacym programistom i dopiero sie ucze c.

Niewiem jak moge odczytac pojedynczy klawisz bez echa i potwierdzenia
enterem.

Pod dos'em dziala mi funkcja getch() , a pod linuxem nie moge ja zastosowac.
(niewiem co jest)

Prosilbym o pomoc, jesli mozna to takze prosilbym o maly programik ktory
odczytuje klawisz i wyswietla jego wartosc.

maco@lg..onet.pl
Re: obsluga klawiatury
#433
Author: Cezary H. Noweta
Date: Fri, 17 Sep 1999 09:58
45 lines
1956 bytes
Witam,

Maciej Ciesla wrote:
> Niewiem jak moge odczytac pojedynczy klawisz bez echa i potwierdzenia
> enterem.
> Pod dos'em dziala mi funkcja getch() , a pod linuxem nie moge ja zastosowac.
> (niewiem co jest)

Pod Linuxem nie ma getch().

Kody wyswietla programik gitkeys z pakietu git. Jak to zrobic -
- zobacz zrodla: src/gitkeys.c

Przyklad:

  #include <stdio.h>
  #include <termios.h>
  #include <unistd.h>

  main()
  {
    int c;
    struct termios t, o;

    tcgetattr(0, &t);
    memcpy(&o, &t, sizeof(t));
    cfmakeraw(&t);
    tcsetattr(0, TCSANOW, &t);

    do {
      printf("0x%02X\r\n", (read(0, &c, 1), (unsigned)c));
    } while ( c != 4 );

    tcsetattr(0, TCSANOW, &o);
  }

Program zakancza sie po nacisnieciu ^D. Nie radze go killowac,
bo terminal pozostanie RAW.

  -- pozdrawiam

-- 
Cezary H. Noweta                 90-237 LODZ, ul. J.Matejki 34/38 POLAND
(chn@irys.usun.drugiitrzeciczlon.uni.lodz.pl)    +48 42 6356013, 6356012
University of Lodz - Main Library                            fax 6781678
Re: obsluga klawiatury
#434
Author: Marcin 'Qrczak' Kowalczyk
Date: Fri, 17 Sep 1999 19:42
14 lines
1431 bytes
Fri, 17 Sep 1999 11:58:45 +0200, Cezary H. Noweta <chn@irys.usun.drugiitrzeciczlon.uni.lodz.pl> pisze:

>     int c;

>       printf("0x%02X\r\n", (read(0, &c, 1), (unsigned)c));

To jest nieprzenośne, działa tylko na małym endianie.
c powinno być np. typu unsigned char.

-- 
 __("<    Marcin Kowalczyk * qrczak@knm.org.pl http://kki.net.pl/qrczak/
 \__/          GCS/M d- s+:-- a22 C+++>+++$ UL++>++++$ P+++ L++>++++$ E-
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-
obsluga klawiatury
#436
Author: Przemek Borys
Date: Fri, 17 Sep 1999 21:31
46 lines
2584 bytes
EHLO Maciej!

[16 Sep 99] Maciej Ciesla->All
 MC> Jestem poczatkujacym programistom i dopiero sie ucze c.
 MC> Niewiem jak moge odczytac pojedynczy klawisz bez echa i
 MC> potwierdzenia enterem.
 MC> Pod dos'em dziala mi funkcja getch() , a pod linuxem nie moge ja
 MC> zastosowac. (niewiem co jest)

Jest to, że conio nie jest specjalnie rozpowszechnionym standardem. Zobacz
http://dione.ids.pl/~pborys/txt/linux i poszukaj tam o ncurses.
Albo

man ncurses
man curs_getch
man curs_inopts

 MC> Prosilbym o pomoc, jesli mozna to takze prosilbym o maly
 MC> programik ktory odczytuje klawisz i wyswietla jego wartosc.

chodzi o coś takiego

                      /*%%%%%%%%%*\
              */#include<ncurses/curses.h>
            void                       main()
            {int                      a;;;;
                                    initscr()
                                   ;/*;;;*/
                                  cbreak();
                                  a=/**/
                                getch();
                              endwin();
                             printf
                            ("%c\n",

                            a);}

;)) (przepraszam za tak duży pytajnik: jak nic nie widzisz to przeleć indentem
;> )
kompilacja:

gcc test.c -lnucrses -otest

____\___\___
(_(\|,|_|,|_ [ /o)\ | GCS/S/TW/P d? s+:- a19 UL++++/H L++(++++) PGP- ]
    |   | |. [ \(o/ | t+++  5+ X- R-  b+  E- W++ PE  PS  D-  !r>r+++ ]
Re: obsluga klawiatury
#435
Author: Cezary H. Noweta
Date: Sat, 18 Sep 1999 08:49
19 lines
1659 bytes
Witam,

Marcin 'Qrczak' Kowalczyk wrote:
> >     int c;
> >       printf("0x%02X\r\n", (read(0, &c, 1), (unsigned)c));
> To jest nieprzenośne, działa tylko na małym endianie.
> c powinno być np. typu unsigned char.

Oops - jasne, ze powinno byc 'char c' (inaczej nie potrzebna bylaby
promocja do unsigned int, bo %X zawsze wyswietla unsigned).
Swoja droga na big-u tez nie zadziala jak w reszcie bajtow inta
znajda sie niezerowe smieci. Dzieki za errate.

  -- pozdrawiam

-- 
Cezary H. Noweta                 90-237 LODZ, ul. J.Matejki 34/38 POLAND
(chn@irys.usun.drugiitrzeciczlon.uni.lodz.pl)    +48 42 6356013, 6356012
University of Lodz - Main Library                            fax 6781678
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads