Re: questions about linux termios

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-assembly" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies]     [Security]     [Linux C Programming]     [Linux for Hams]     [DCCP]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux