#!/bin/bash

# Verzeichnis muss eventuell an den Ort der Compose angepasst werden:
COMPOSE=/usr/share/X11/locale/en_US.UTF-8/Compose
KEYSYM=/usr/include/X11/keysymdef.h
n=10
typeset -i j=0

while [ ! "$beschreibung" ]
do
	case ${1-" "} in
	" ")
		echo Aufruf: $0 [OPTION] BESCHREIBUNG
		echo »$0 --help« gibt Ihnen mehr Informationen.
		exit;;
	--help)
		echo Aufruf: $0 [OPTION] BESCHREIBUNG
		echo »$0« versucht ein Zeichen anhand einer Beschreibung zu identifizieren
		echo Option:
		echo -e "  -n               gibt maximal 2n statt 10 Vorschläge aus"
		exit;;
	\ )
		echo $0: Kein Suchkriterium eingegeben!
		echo Versuchen Sie »$0 --help« für weitere Informationen.
		exit;;
	-*)
		n=`echo $1 | cut -c2-`
		shift;;
	*)
		beschreibung=${*?$0: Fehler! Versuchen Sie »$0 --help« für weitere Informationen.}
	esac
done

anzahl=`grep -iw $beschreibung $COMPOSE | head -$n | wc -l`
if [ $anzahl -gt 0 ]
then
	for i in $(seq 1 $anzahl)
	do
		j=j+1
		ausgabe=1
		a[$j]=`grep -iw $beschreibung $COMPOSE | grep ^\< | head -$i | tail -1 | cut -f2 -d \"`
		echo $j\) ${a[$j]}
	done
fi

anzahl2=`grep -i [\ _]$beschreibung[\ _] $KEYSYM | head -$n | wc -l`
if [ $anzahl2 -gt 0 ]
then
	for i in $(seq 1 $anzahl2)
	do
		c=`grep -i [\ _]$beschreibung[\ _] $KEYSYM | grep ^#define  | head -$i | tail -1 | cut -f2- -d\* | cut -f2- -d+ | cut -f1 -d\ `
		c1=`echo $c | cut -c1-2`
		c2=`echo $c | cut -c3`
		c3=`echo $c | cut -c4`

		case $c1 in
		00)
			j=j+1
			ausgabe=1
			a[$j]=`echo -e \\\x${c2}`
			echo $j\) ${a[$j]}
			;;
		03)	
			if [ "$c2" = "C" ]
			then
				j=j+1
				ausgabe=1
				a[$j]=`echo -e \\\xcf\\\x8${c3}`
				echo $j\) ${a[$j]}

			else
				j=j+1
				ausgabe=1
				a[$j]=`echo -e \\\xce\\\x${c2}${c3}`
				echo $j\) ${a[$j]}
			fi
			;;
		*)
			;;
		esac	
	done
fi

if [ $ausgabe ]
then
	read -p 'welches Zeichen suchen Sie: ' zahl
	echo
else
	echo „$beschreibung“ ist unbekannt, versuchen Sie eine andere Beschreibung.
	exit
fi

if [ ${a[$zahl]} ]
then
	wiemitneo ${a[$zahl]}
fi
