¿Cómo puedo enumerar todos los diseños y las variantes correspondientes que no utilizan símbolos de tercer nivel?

¿Cómo puedo enumerar todos los diseños y las variantes correspondientes que no utilizan símbolos de tercer nivel?

Necesito enumerar todos xkblos diseños posibles y sus respectivas variantes que no utilizan símbolos de tercer nivel. La revisión manual de todos los archivos en /usr/share/X11/xkb/symbols/el directorio es una locura, ¿tal vez haya una manera más fácil?

Respuesta1

Puede procesar la lista de todos los diseños y para cada elemento de la lista verificar cada variante correspondiente paranivel 3símbolos:

list=($(sed '/! layout/,/^$/!d;//d
s/[[:blank:]]*\([^[:blank:]]*\)[[:blank:]].*/\1/' \
< /usr/share/X11/xkb/rules/evdev.lst))

layouts=("${list[@]##*/}")

for i in "${layouts[@]}"; do
sed -n '\|//.*level3|d;H;/xkb_symbols/{s/.*"\(.*\)".*/'"${i}:"'\1/;h}
/^};/{x;/level3/d;s/\n.*//p}' < /usr/share/X11/xkb/symbols/${i}
done

El primero sedenumera todos los diseños /usr/share/X11/xkb/rules/evdev.lsty guarda el resultado en la matriz list. Los elementos de esta matriz luego se procesan mediante la expansión de parámetros para obtener solo el nombre del diseño (por ejemplo, extraer jpde nec_vndr/jp) y se guardan en la matriz layouts.
Luego, para cada uno itemen layoutsel archivo correspondiente /usr/share/X11/xkb/symbols/${item}se procesa para extraer las variantes que no tienennivel 3símbolos: sedprimero delimina todas las líneas comentadas que contienen level3, luego agrega incondicionalmente cada línea al Hbúfer anterior. Edita la línea que contiene el nombre de la variante anteponiendo el nombre del diseño y sobrescribiendo el hbúfer antiguo, luego, al final de cada sección de variante ( /^};/) cambia xlos búferes, eliminando el espacio del patrón si contiene, level3de lo contrario imprime solo la primera línea (es decir,diseño: variante). Entonces el resultado es algo como esto:

us:basic
us:ibm238l
us:dvorak
us:dvorak-l
us:dvorak-r
us:dvorak-classic
us:dvp
us:olpc2
us:chr
us:carpalx
us:carpalx-full
us:alt-intl-unicode
us:sun_type6
............
dk:nodeadkeys
dk:winkeys
dk:mac
dk:mac_nodeadkeys
dk:dvorak
dk:sun_type6
............

información relacionada