1#autoload
2
3local expl
4
5_tags keysyms || return 1
6
7if (( ! $+_keysym_cache )); then
8  local file
9
10  file=( /usr/{include,{{X11R6,openwin},local{,/X11{,R6}}}/include}/X11/keysymdef.h(N) )
11
12  if (( $#file )); then
13    _keysym_cache=( "${(@)${(@)${(M@)${(@f)$(< $file[1])}:#\#define[ 	]##XK_*}#\#define[ 	]##XK_}%%[ 	]*}" )
14  else
15    _keysym_cache=( BackSpace Tab Linefeed Clear Return Pause Escape 
16                    Delete Left Right Up Down Space Home Begin End
17		    F{1,2,3,4,5,6,7,8,9,10,11,12} )
18  fi
19fi
20
21_wanted keysyms expl 'key symbol' \
22    compadd "$@" -M 'm:{a-z}={A-Z} r:|-=* r:|=*' -a - _keysym_cache
23