📄 wgetch.c
字号:
#include "../inc/screen.h"void (*istat)() ;int wsigflag = 0;static unsigned char wch0 = 0;jmp_buf wbuf;static void escproc( signo )int signo ;{ alarm(0); wsigflag = 1; longjmp(wbuf,1);}unsigned char wgetch(){ int alarm0; unsigned char ch; char chx; struct timeb tx; wsigflag = 0; if(wch0 != 0) { ch = wch0; wch0 = 0; return(ch); } do { chx = getchar(); } while(chx == ERR && errno == EINTR); ch = (unsigned char)chx; if(ch != ESC) return(ch); istat = signal(SIGALRM,escproc); ftime(&tx); if(tx.millitm > 500) alarm0 = alarm(2); else alarm0 = alarm(1); setjmp(wbuf); if(wsigflag != 0) { signal(SIGALRM,istat); alarm(0); return(ESC); } ch = wgetchar(); if(ch != '[') { signal(SIGALRM,istat); alarm(0); wch0 = ch; return(ESC); } ch = wgetchar(); signal(SIGALRM,istat); alarm(0); switch(ch) { case 'A': /* Up */ return(128); break; case 'B': /* Down */ return(129); break; case 'D': /* Left */ return(130); break; case 'C': /* Right */ return(131); break; case 'H': /* Home */ return(132); break; default: return(ESC); }}char wgetchar(){ char chx; do { chx = getchar(); } while(chx == ERR && errno == EINTR); return(chx);}void wprt(fp,str,n)FILE *fp;char *str;int n;{ while(n--) fprintf(fp,"%s",str);}wsleep(num)int num;{ long num0; struct timeb wtp0,wtp1; num0 = (long)num * 1000l; ftime(&wtp0); do{ if(num0 - (wtp1.time - wtp0.time) * 1000l > 1000l) sleep(1); ftime(&wtp1); }while(num0 - (wtp1.time - wtp0.time) * 1000l > 0l);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -