29 lines
911 B
Plaintext
29 lines
911 B
Plaintext
|
#!/usr/bin/env bash
|
||
|
#
|
||
|
# Convert "U+..." commented entries in /usr/include/X11/keysymdef.h
|
||
|
# into JavaScript for use by noVNC. Note this is likely to produce
|
||
|
# a few duplicate properties with clashing values, that will need
|
||
|
# resolving manually.
|
||
|
#
|
||
|
# Colin Dean <colin@xvpsource.org>
|
||
|
#
|
||
|
|
||
|
regex="^#define[ \t]+XK_[A-Za-z0-9_]+[ \t]+0x([0-9a-fA-F]+)[ \t]+\/\*[ \t]+U\+([0-9a-fA-F]+)[ \t]+[^*]+.[ \t]+\*\/[ \t]*$"
|
||
|
echo "unicodeTable = {"
|
||
|
while read line; do
|
||
|
if echo "${line}" | egrep -qs "${regex}"; then
|
||
|
|
||
|
x11=$(echo "${line}" | sed -r "s/${regex}/\1/")
|
||
|
vnc=$(echo "${line}" | sed -r "s/${regex}/\2/")
|
||
|
|
||
|
if echo "${vnc}" | egrep -qs "^00[2-9A-F][0-9A-F]$"; then
|
||
|
: # skip ISO Latin-1 (U+0020 to U+00FF) as 1-to-1 mapping
|
||
|
else
|
||
|
# note 1-to-1 is possible (e.g. for Euro symbol, U+20AC)
|
||
|
echo " 0x${vnc} : 0x${x11},"
|
||
|
fi
|
||
|
fi
|
||
|
done < /usr/include/X11/keysymdef.h | uniq
|
||
|
echo "};"
|
||
|
|