This example translates a Unicode character to a scan code and creates the effective shift state.
#include <stdio.h> #include <unikbd.h> int main(void) { KHAND kbdhandle; KBDNAME *kbd_name; ULONG mode = 0; UniChar unichar; VDKEY vdkey = 0; VSCAN pscan; ULONG eshift; 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; } /***********************************/ /* Untranslate Unicode character A */ /***********************************/ unichar = 0x0041; rc = UniUntranslateKey( kbdhandle, unichar, vdkey, &pscan, &eshift ); if ( rc != ULS_SUCCESS ) { printf("UniUntranslateKey error: return code = %u\n", rc ); return 1; } return ULS_SUCCESS; }