Re: questions about linux termios

Frederic Marmond <[email protected]>
Newsgroups gmane.linux.console,gmane.linux.assembly
Message-ID <[email protected]>
Hi, 
first question:
/dev/tty is the CURRENT terminal, wherever you are, and tty0 is the first one.
So, echo "foobar" > /dev/tty will always display "foobar" on your current 
terminal.
second question: no time right now, maybe latter...

Fred

Le Monday 14 July 2008 à 17:08, pei lin a écrit :
> Hi,buddy
>   I am puzzled by the linux termios.
>    First Question about /dev/tty0 and /dev/tty,this two devices is
> the same one?
>    When i am in X terminal,as /dev/pts/0 , i do "echo hello >
> /dev/pts/0 and echo hello > /dev/tty ", they return the same like that
> "hello" on the screen .This means /dev/tty ->/dev/pts/0? But "echo
> hello > /dev/tty0",there is nothing on the screen.And when i go to
> Init 3 mode ,like /dev/tty1,when i do "echo hello > /dev/tty1 and echo
> hello > .dev/tty and echo hello > /dev/tty0" ,They return the same all
> print hello on the screen.Do they all point to the /dev/tty1?
>
>    The second Question is that i write a small program to get
> keyboard input like below.When i run it in X terminal ,when i press
> keyboard it can return but can not get the press and release event.And
> in the console,like tty1,it doesn't work .i don't know why.
>
> file : get_keyboard.c
>
> #include <stdio.h>
> #include <linux/keyboard.h>
> #include <sys/ioctl.h>
> #include <fcntl.h>
> #include <linux/kd.h>
> #include <termios.h>
> #include <unistd.h>
> int main()
> {
>        int fd,len,i;
>        struct kbentry entry;
>        unsigned char buf[64];
>        struct termios  ts,old_ts;
>        char * path;
>        path = ttyname(0);
>        printf("%s!\n",path);
>        fd = open(path, O_RDONLY|O_NOCTTY);
>        if(fd < 0){
>                printf("open the device error!\n");
>        }
>
>        printf("fd --- %d!\n",fd);
>
>        if (ioctl( fd, KDSKBMODE, K_RAW ) < 0) {
>                        printf("set mode wrong!\n");
>        }
>
>
>        tcgetattr( fd, &old_ts );
>
>
>           ts = old_ts;
>     ts.c_cc[VTIME] = 0;
>     ts.c_cc[VMIN] = 1;
>     ts.c_lflag &= ~(ICANON|ECHO|ISIG);
>     ts.c_iflag = 0;
>     tcsetattr( fd, TCSAFLUSH, &ts );
>
>     tcsetpgrp( fd, getpgrp() );
>
>
>           entry.kb_table = K_NORMTAB;
>     entry.kb_value = 0;
>
>        while(1){
>                len=read(fd,buf,64);
>        printf("len ========= %d!\n",len);
>                for(i =0; i < len;i++){
>                        entry.kb_index = buf[i];
>                        if(ioctl(fd,KDGKBENT,&entry)){
>                        printf("struct entry :%d %d
> %d\n",entry.kb_table,entry.kb_index,entry.kb_value);
>                        if('2' == entry.kb_index){
>                                tcsetattr( fd, TCSAFLUSH, &old_ts );
>                                exit(0);
>                           }
>                        }
>                                      }
>                }
> }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-assembly"
> in the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-console" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.