implemented propagateKeyEvent