fixed keyboard delegation