unsigned int16 ToHidKeyboardScancode(char c)
{
unsigned int16 shift = 0;
if ((c>='A')&&(c<='Z'))
{
shift = 0x100;
}
if ((c>='a')&&(c<='z'))
{
return(((c-='a')+4)|shift);
}
if ((c>='1')&&(c<='9'))
{
return((c-='0')+0x1D);
}
switch(c)
{
case '!': return(0x11E);
case '@': return(0x11F);
case '#': return(0x120);
case '$': return(0x121);
case '%': return(0x122);
case '^': return(0x123);
case '&': return(0x124);
case '*': return(0x125);
case '(': return(0x126);
case ')': return(0x127);
case '0': return(0x27);
case '\n': return(0x28); //enter
case '\r': return(0x28); //enter
case '\b': return(0x2A); //backspace
case '\t': return(0x2B); //tab
case ' ': return(0x2C); //space
case '_': return(0x12D);
case '-': return(0x2D);
case '+': return(0x12E);
case '=': return(0x2E);
case '{': return(0x12F);
case '[': return(0x2F);
case '}': return(0x130);
case ']': return(0x30);
case '|': return(0x131);
case '\\': return(0x31);
case ':': return(0x133);
case ';': return(0x33);
case '"': return(0x134);
case '\'': return(0x34);
case '~': return(0x135);
case '`': return(0x35);
case '<': return(0x136);
case ',': return(0x36);
case '>': return(0x137);
case '.': return(0x37);
case '?': return(0x138);
case '/': return(0x38);
}
}