⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbhit.c

📁 《Beginning linux programming》一书相应的源代码
💻 C
字号:
#include <stdio.h>#include <termios.h>#include <term.h>#include <curses.h>#include <unistd.h>static struct termios initial_settings, new_settings;static int peek_character = -1;void init_keyboard();void close_keyboard();int kbhit();int readch();int main(){    int ch = 0;    init_keyboard();    while(ch != 'q') {        printf("looping\n");        sleep(1);        if(kbhit()) {            ch = readch();            printf("you hit %c\n",ch);        }    }    close_keyboard();    exit(0);}void init_keyboard(){    tcgetattr(0,&initial_settings);    new_settings = initial_settings;    new_settings.c_lflag &= ~ICANON;    new_settings.c_lflag &= ~ECHO;    new_settings.c_lflag &= ~ISIG;    new_settings.c_cc[VMIN] = 1;    new_settings.c_cc[VTIME] = 0;    tcsetattr(0, TCSANOW, &new_settings);}void close_keyboard(){    tcsetattr(0, TCSANOW, &initial_settings);}int kbhit(){    char ch;    int nread;    if(peek_character != -1)        return 1;    new_settings.c_cc[VMIN]=0;    tcsetattr(0, TCSANOW, &new_settings);    nread = read(0,&ch,1);    new_settings.c_cc[VMIN]=1;    tcsetattr(0, TCSANOW, &new_settings);    if(nread == 1) {        peek_character = ch;        return 1;    }    return 0;}int readch(){    char ch;    if(peek_character != -1) {        ch = peek_character;        peek_character = -1;        return ch;    }    read(0,&ch,1);    return ch;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -