diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2008-01-27 11:37:44 +0100 |
---|---|---|
committer | Tobias Klauser <tklauser@xenon.tklauser.home> | 2008-01-27 11:37:44 +0100 |
commit | 7e0f021a9aec35fd8e6725e87e3313b101d26f5e (patch) | |
tree | b1cacc4b24393f517aeb4610e9e1021f954307a8 /reference/C/CONTRIB/SNIP/isshift.c |
Initial import (2.0.2-6)2.0.2-6
Diffstat (limited to 'reference/C/CONTRIB/SNIP/isshift.c')
-rwxr-xr-x | reference/C/CONTRIB/SNIP/isshift.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/SNIP/isshift.c b/reference/C/CONTRIB/SNIP/isshift.c new file mode 100755 index 0000000..79c4cff --- /dev/null +++ b/reference/C/CONTRIB/SNIP/isshift.c @@ -0,0 +1,24 @@ +/*-------------------------[ IsShift ]--------------------------*/
+/* Determine whether a shift key is depressed */
+/* public domain snippet by Jeff Dunlop */
+/*--------------------------------------------------------------*/
+/* local: */
+/* key_flags = pointer to bios shift key area */
+/* return: */
+/* 1 if either shift key is depressed */
+/*--------------------------------------------------------------*/
+
+#if !defined(MK_FP)
+ #define MK_FP(seg,off) ((void far *)(((long)(seg) << 16)|(unsigned)(off)))
+#endif
+
+int IsShift(void)
+{
+ unsigned char far *keyflags = MK_FP(0x40, 0x17);
+
+ return (*keyflags & 0x03);
+}
+
+/* -or?- */
+
+#define IsShift ((*MK_FP(0x40, 0x17)) & 0x03)
|