Hvis du kører under windows, er der sikkert et eller andet nifty api kald tilrådighed.
Hvis ikke, så vil jeg anbefale at du laver en function som du smider ind som interrupt handler for keyboard, og så læser du de scankoder som kommer ind på keyboard porten med din function (som bliver kaldt hver gang der er en ny) og vedligeholder en tabel med taster du vil kunne holde øje med.
Fra din kode hvor du vil tjekke kan du så blot teste hvad værdien er i tabellen for den tast du vil se om er nede lige nu.
Husk at lade din function kalde den oprindeligt interrupt handler (du finder adressen i interrupt vectoren, hvor du skal registrere din egen) ... det gør du ved at kaldine dgen med et long jump.
Som jeg husker det er der noget med at du evt skal atætte nogle registre rigtigt tilbage som de ser ud i starten af din function.
Enjoy.