В Karel-е, говорят, распознать точно можно.
Про заблокировать- не слышал, а сам ничего не скажу, ибо оным Karel-ом никогда не пользовался.
В рамках языка TP, впрямую отражаются в системных переменных только все аппаратные переключатели пульта TP и кнопки J7,J8.
http://www.robot-forum.com/robotforu...3952/#msg73952
По изменению режима STEP легко распознается фоновой логикой нажатие на кнопку STEP.
Нажатую FWD (когда ее нажатие имеет какой-либо эффект) можно определить как TP Enabled AND (Robot Moving OR Program Running).
Robot Moving есть системная переменная $MOR_GRP[1].$ROB_MOVE, остальное- сигналы UO.