change mechanism and add event of shift+tab