isshift.c
来自「国外网站上的一些精典的C程序」· C语言 代码 · 共 98 行
C
98 行
/*-------------------------[ IsShift ]--------------------------*//* Determine whether a shift key is depressed *//* public domain snippet by Jeff Dunlop *//* Revisions: *//* 30-Mar-96 Ed Blackman OS/2 mods, added #defines for keys, *//* wrapped platform dependant actions *//* in a macro, added some discussion *//*--------------------------------------------------------------*//* local: *//* kf = *//* DOS: pointer to bios shift key area *//* OS2: pointer to previously stored key info struct *//* return: *//* non-zero if shift key is depressed *//*--------------------------------------------------------------*/#include "extkword.h"#include "snipkbio.h"#include "mk_fp.h"#ifdef __OS2__KBDKEYINFO ki; /* holds key status */#endif /* !__OS2__ */int IsLeftShift(void){ unsigned short FAR* kf = peekkey(); return (*kf & LEFT_SHIFT);}int IsRightShift(void){ unsigned short FAR* kf = peekkey(); return (*kf & RIGHT_SHIFT);}int IsShift(void){ return (IsLeftShift()) || (IsRightShift());}int IsLeftAlt(void){ unsigned short FAR* kf = peekkey(); return (*kf & EITHER_ALT) && (*kf & LEFT_ALT);}int IsRightAlt(void){ unsigned short FAR* kf = peekkey();/* 30-Mar-96 - EBB: In DOS there is no direct way to tell if the right** Alt key is depressed. DOS sets a status bit if either Alt key was** pressed, and another if the left Alt key was pressed. By** elimination, we can say that the right Alt key was pressed if one of** the Alt keys was pressed and it wasn't the left one.*/ return (*kf & EITHER_ALT) && !(*kf & LEFT_ALT);}int IsAlt(void){ return (IsLeftAlt()) || (IsRightAlt());}int IsLeftCtl(void){ unsigned short FAR* kf = peekkey(); return (*kf & EITHER_CTL) && (*kf & LEFT_CTL);}int IsRightCtl(void){ unsigned short FAR* kf = peekkey();/* 30-Mar-96 - EBB: The discussion about the right Alt key in** IsRightAlt() also applies to the right Ctl key*/ return (*kf & EITHER_CTL) && !(*kf & LEFT_CTL);}int IsCtl(void){ return (IsLeftCtl()) || (IsRightCtl());}int IsSysRq(void){ unsigned short FAR* kf = peekkey(); return (*kf & SYSRQ);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?