+ unfunction find_keymap; unset keymap
+} else {
+ # activate application mode for zle so terminfo keys work
+ # NOTE: don't do this for zkbd since application mode shouldn't have been
+ # enabled by zkbd when the keymap file was generated
+ if [[ -v terminfo[smkx] && -v terminfo[rmkx] ]] {
+ autoload -Uz add-zle-hook-widget
+ function _enter-application-mode { echoti smkx }
+ add-zle-hook-widget line-init _enter-application-mode
+ function _exit-application-mode { echoti rmkx }
+ add-zle-hook-widget line-finish _exit-application-mode
+ trap _exit-application-mode EXIT
+ }
+ # match zkbd hash as best we can to terminfo
+ typeset -gA key
+ key=(F1 kf1 F2 kf2 F3 kf3 F4 kf4 F5 kf5 F6 kf6 F7 kf7 F8 kf8 F9 kf9
+ F10 kf10 F11 kf11 F12 kf12
+ Backspace kbs
+ Backtab kcbt
+ Shift-Tab kcbt
+ Insert kich1
+ Home khome
+ PageUp kpp
+ Delete kdch1
+ End kend
+ PageDown knp
+ Up kcuu1
+ Down kcud1
+ Left kcub1
+ Right kcuf1
+ )
+ for k v in ${(kv)key}; do
+ key[$k]=$terminfo[$v]
+ done; unset k v