summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/SNIP/isshift.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/SNIP/isshift.c')
-rwxr-xr-xreference/C/CONTRIB/SNIP/isshift.c24
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)