[pascal]function readKeydownCount: integer;
var a: array[0..63] of TInputRecord;
vb: cardinal;
I: Integer;
t: TKeyEventRecord;
begin
result := 0;
PeekConsoleInput(GetStdHandle(STD_INPUT_HANDLE), a[0], 64, vb);
for I := 0 to vb - 1 do
begin
if (a[i].EventType and KEY_EVENT) = KEY_EVENT then
begin
t := a[i].Event.KeyEvent;
if t.bKeyDown then
inc(result);
end;
end;
end;[/pascal]

Sorry, I don't know any crossplatform way of doing it except for reading some INT 0x10 stuff