home *** CD-ROM | disk | FTP | other *** search
-
- Someone was asking how to turn key click on/off within a program.
- (I believe it was Warren Long, who didn't want key click sounds to
- interrupt the other sounds generated by SpaceWars).
-
- Well here is a simple program to do it. It is pretty much self-
- explanatory.
-
- --------------------cut here----------------cut here--------------------
- #include <stdio.h>
- #include <osbind.h>
-
- /* CLICK Modes */
- #define C_TOGGLE 0
- #define C_SET 1
- #define C_RESET 2
-
- /* System Variable 'Conterm' is a byte */
- #define CONTERM (*((char *)0x484))
-
- /* Declare the meaning of the bits */
- #define CLICK_BIT 1 /* Key click on/off */
- #define REPEAT_BIT 2 /* Key repeat on/off */
- #define BELL_BIT 4 /* Bell at <ctrl-G> on/off */
- #define KBSHIFT_BIT 8 /* Return KBShift from Cconin in
- * bits 24-31 on/off
- */
-
- main( argc, argv )
- int argc;
- char *argv[];
- {
- int old_val, new_val;
- int mode;
- long save_ssp;
-
- /* Get the option. If no option, toggle click setting */
- if( argc < 2 )
- mode = C_TOGGLE;
- else if ( strcmp( argv[1], "on" ) == 0 )
- mode = C_SET;
- else if ( strcmp( argv[1], "off" ) == 0 )
- mode = C_RESET;
- else {
- printf( "Unknown option '%s'\n", argv[1] );
- exit(1);
- }
-
- /* Enter Supervisor mode */
- save_ssp = Super( 0L );
-
- /* Get old value of CONTERM byte */
- old_val = CONTERM;
-
- switch( mode ) {
- case C_TOGGLE:
- new_val = old_val ^ CLICK_BIT;
- break;
- case C_SET:
- new_val = old_val | CLICK_BIT;
- break;
- case C_RESET:
- new_val = old_val & ~CLICK_BIT;
- break;
- }
-
- /* Set the new value */
- CONTERM = new_val;
-
- /* Exit out of supervisor mode */
- Super( save_ssp );
- }
-
- -------------cut here--------------------cut here-------------------------
-
- David Rowley
- Looking Glass Software
- Waterloo, Ontario
- ...utzoo!watmath!looking!david
-
-