1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-17 22:31:12 +01:00

zsh-workers/8013

This commit is contained in:
Tanaka Akira 1999-09-23 13:09:12 +00:00
parent 1244fb81d2
commit fec17bab42
3 changed files with 120 additions and 0 deletions

20
Completion/X/_x_keysym Normal file
View file

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

7
Completion/X/_x_modifier Normal file
View file

@ -0,0 +1,7 @@
#autoload
local expl
_description expl modifier
compadd "$@" "$expl[@]" -M 'm:{a-z}={A-Z}' - \
Shift Lock Control Mod1 Mod2 Mod3 Mod4 Mod5

93
Completion/X/_xmodmap Normal file
View file

@ -0,0 +1,93 @@
#compdef xmodmap
setopt localoptions extendedglob
local state line ret=1
typeset -A options
_x_arguments \
-{help,grammar,verbose,quiet} \
'-n[only show what would be done]' \
'*-e[specify expression]:expression:->expr' \
'-pm[print modifier map]' \
'-pk[print keymap table]' \
'-pke[print keymap table as expressions]' \
'-pp[print pointer map]' \
':X mapping file:_files' && ret=0
if [[ -n "$state" ]]; then
local expl expr="${PREFIX##[ ]#}" what suf
if compset -P '[^ ]##[ ]##'; then
case "$expr" in
keycode*)
if compset -P '*=[ ]#'; then
compset -P '*[ ]'
what=ksyms
elif [[ "$expr" = *[\ \ ]##[^\ \ ]##[\ \ ] ]]; then
IPREFIX="${IPREFIX}${PREFIX}"
PREFIX=''
compadd -S ' ' '=' && ret=0
else
_message 'key code or `any'"'"
fi
;;
keysym*)
if compset -P '*=[ ]#'; then
compset -P '*[ ]'
what=ksyms
elif [[ "$expr" = *[\ \ ]##[^\ \ ]##[\ \ ] ]]; then
IPREFIX="${IPREFIX}${PREFIX}"
PREFIX=''
compadd -S ' ' '=' && ret=0
else
what=ksym-eq
fi
;;
clear*)
what=mods
;;
(add|remove)*)
if compset -P '*[ ]##'; then
what=ksyms
else
what=mods-eq
fi
;;
pointer*)
if compset -P '*=[ ]#'; then
compset -P '*[ ]'
_description expl 'button code'
compadd "$expl[@]" -qS ' ' 1 2 3 4 5 default
return
else
IPREFIX="${IPREFIX}${PREFIX}"
PREFIX=''
compadd -S ' ' '=' && ret=0
fi
;;
esac
if [[ "$what" = *eq* ]]; then
suf=(-S ' = ')
elif [[ "$what" = *ksyms* ]]; then
if [[ -n "$compstate[quote]" ]]; then
suf=(-S "$compstate[quote] " -r "$compstate[quote] ")
else
suf=(-qS ' ')
fi
else
suf=()
fi
[[ "$what" = *mods* ]] && _x_modifier "$suf[@]" && ret=0
[[ "$what" = *ksym* ]] && _x_keysym "$suf[@]" && ret=0
else
_description expl command
compadd "$expl[@]" -S ' ' keycode keysym clear add remove && ret=0
compadd "$expl[@]" -S ' = ' pointer && ret=0
fi
fi
return ret