If $k0 is your cause, I would assume that stores the level as well. What about doing something like this?
andi $t0, $k0, 0x003c # $t0 = Exception code, $k0 is preserved
bnez $t0, done #If its not equal 0, its not a keyboard interrupt, done
andi $t0, $k0, 0x0100 #Check to see if this bit is set in $k0
bnez $t0, done #If it is set, service the interrupt
#otherwise, go to done
#service the interrupt
done:
#clean up and exit