This example resets the shift state to release all pressed keys.

#include <stdio.h>
#include <unikbd.h>

int main(void) {
   KHAND          kbdhandle;
   KBDNAME       *kbd_name;
   ULONG          mode     =  0;

   USHIFTSTATE    Uss      = {0};/* indicates no shift keys, toggle keys,
                                    dead keys, or layer keys are pressed.
                                  */
   ULONG          type;
   APIRET         rc;

   /***************************************************/
   /* Create a keyboard handle for US keyboard layout */
   /***************************************************/

   kbd_name = (UniChar*)L"us";

   rc = UniCreateKeyboard( &kbdhandle, kbd_name, mode );

   if ( rc != ULS_SUCCESS ) {
      printf("UniCreateKeyboard error: return code = %u\n", rc );
      return 1;
   }

   Uss.Shift      = KBD_LEFTSHIFT | KBD_SHIFT; /*actual state is Left shift key*/
   Uss.Effective  = KBD_SHIFT;                 /*effective state is shift key  */

   type = KEYEV_ZERO;/*Reset shift state status to indicate the release of all
                       pressed and locked keys*/

   rc = UniResetShiftState( kbdhandle, &Uss, type );

   if ( rc != ULS_SUCCESS ) {
      printf("UniResetShiftState error: return code = %u\n", rc );
      return 1;
   }

   return ULS_SUCCESS;
}


[Back: UniResetShiftState - Remarks]
[Next: UniResetShiftState - Topics]