📄 shkeys.c
字号:
/* shkeys.c *//* compile me: cc -o shkeys shkeys.c */#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <termios.h>#include <unistd.h>int main (void){ struct termios oldtio, newtio; int rc, rdlen, c, i, leave; char buf [12]; char prbuff [128], *p; rc= tcgetattr (0, &oldtio); if (rc) { perror ("tcgetattr (0, &oldtio)"); return 4; } memcpy (&newtio, &oldtio, sizeof (newtio)); newtio.c_lflag &= ~(ISIG | ICANON | ECHO); newtio.c_iflag &= ~(INLCR | ICRNL | IXON | IXOFF); newtio.c_cflag &= ~(PARENB); newtio.c_cflag = (newtio.c_cflag & ~CSIZE) | CS8; newtio.c_cc[VMIN] = 1; rc= tcsetattr (0, TCSAFLUSH, &newtio); if (rc) { perror ("tcsetattr (0, TCSAFLUSH, &newtio)"); return 12; } printf ("Press any key to see codes, ctrl-D to terminate\n\n"); for (leave= 0; ! leave; ) { rdlen= read (0, buf, sizeof (buf)); if (rdlen<0) { perror ("read(0)"); leave= 1; /* error */ } else if (rdlen==0) { leave= 1; /* EOF */ } else { p= prbuff; for (i=0; i<rdlen; ++i) { c= (unsigned char)buf[i]; if (c < ' ') { p += sprintf (p, "^%c", c+64); } else if (c==0x7f) { p += sprintf (p, "^?"); } else { p += sprintf (p, "%c", c); } } for (i=0; i<rdlen; ++i) { c= (unsigned char)buf[i]; printf ("%-16s %3d 0x%02x 0%03o\n", prbuff, c, c, c); prbuff[0] = '\0'; } if (buf[0]==4) leave= 1; /* ctrl-D */ } } rc= tcsetattr (0, TCSAFLUSH, &oldtio); if (rc) { perror ("tcsetattr (0, TCSAFLUSH, &oldtio)"); return 12; } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -