added keyboard moving and snapping