На самом деле есть две разные, связанные с каждой клавишей клавиатуры - событие, когда она (клавиша) нажата, и другое событие, когда она (клавиша) отпущена.Вам просто нужно использовать эти события.
Для вашей проблемы вам нужно будет сделать что-то вроде (взяв 0
для печати и 1
для выпуска):
/*eventA for shift key*/
if (eventA == 0)
{
Flag = PRESSED;
}
else
{
Flag = RELEASED;
}
...
/*eventX for any character key*/
if (eventX == 0 )
{
if (Flag == PRESSED)
toupper(...)
//print the character
}