Re: light up my keyboard (Richard J Baker )


Subject: Re: light up my keyboard
From:    Richard J Baker  <richard.baker(at)MAN.AC.UK>
Date:    Wed, 24 Jul 2002 10:21:42 +0100

For those interested, the following C code gives a crude example of flashing the lights on a keyboard in windows - it actually sets the keys rather than just changing the lights. It works OK on my Win2K machine. I'll leave the conversion to matlab for someone else!!!!!! My understanding of windows is that to access the lights you have to use different methods for different versions of the OS - WinNT needs the device driver kit. Another example for NT can be found at http://www.codeguru.com/system/NTKbdLites.shtml Richard J Baker ------------------------------------------------------------ Human Communication and Deafness School of Education University of Manchester Oxford Road Manchester M13 9PL Tel. +44 (0)161 275 3388 Fax. +44 (0)161 275 3373 ------------------------------------------------------------ //-------------------------------------------------------------------------- ------------------------ // the following code flashes the three keyboard lights // in windows - this is example is for a DOS box at present // // note also, that it actually sets the key itself rather than // just change the lights // // the basic code was adapted from that at: // http://www.codeguru.com/mfc/comments/28296.shtml // // Richard J Baker, University of Manchester #include <windows.h> #include <mmsystem.h> #include <time.h> void SetNumLock(BOOL); void SetCapsLock(BOOL); void SetScrollLock(BOOL); void delay(int); main() { int i,j; for(i=0;i<10;i++){ SetNumLock(1); SetCapsLock(1); SetScrollLock(1); delay(1); SetNumLock(0); SetCapsLock(0); SetScrollLock(0); } } void SetNumLock( BOOL bState ) { BYTE keyState[256]; GetKeyboardState((LPBYTE)&keyState); if ( (bState && !(keyState[VK_NUMLOCK] & 1)) || (!bState && (keyState[VK_NUMLOCK] & 1)) ) { // Simulate a key press keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); // Simulate a key release keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } } void SetCapsLock( BOOL bState ) { BYTE keyState[256]; GetKeyboardState((LPBYTE)&keyState); if ( (bState && !(keyState[VK_CAPITAL] & 1)) || (!bState && (keyState[VK_CAPITAL] & 1)) ) { // Simulate a key press keybd_event( VK_CAPITAL, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); // Simulate a key release keybd_event( VK_CAPITAL, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } } void SetScrollLock( BOOL bState ) { BYTE keyState[256]; GetKeyboardState((LPBYTE)&keyState); if ( (bState && !(keyState[VK_SCROLL] & 1)) || (!bState && (keyState[VK_SCROLL] & 1)) ) { // Simulate a key press keybd_event( VK_SCROLL, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 ); // Simulate a key release keybd_event( VK_SCROLL, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } } void delay(int secs){ time_t start,t; start = time(NULL); while (time(NULL) < (start + secs)); }


This message came from the mail archive
http://www.auditory.org/postings/2002/
maintained by:
DAn Ellis <dpwe@ee.columbia.edu>
Electrical Engineering Dept., Columbia University