This example updates the shift state for a loaded keyboard table.
#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.
*/
VSCAN v_scan;
BYTE makebreak;
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 /* indicate left shift */
Uss.Effective = KBD_SHIFT; /* effective shift state */
v_scan = 0x61; /* scan code for a */
makebreak = KEYEV_MAKE; /* indicate key is pressed down */
rc = UniUpdateShiftState( kbdhandle, &Uss, v_scan, makebreak );
if ( rc != ULS_SUCCESS ) {
printf("UniUpdateShiftState error: return code = %u\n", rc );
return 1;
}
return ULS_SUCCESS;
}