File: isshift.c

package info (click to toggle)
c-cpp-reference 2.0.2-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 8,012 kB
  • ctags: 4,612
  • sloc: ansic: 26,960; sh: 11,014; perl: 1,854; cpp: 1,324; asm: 1,239; python: 258; makefile: 115; java: 77; awk: 34; csh: 9
file content (24 lines) | stat: -rwxr-xr-x 902 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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)