Opened 15 years ago

Last modified 13 years ago

#84 new Aufgabe/TODO

Die Programme „wiemitneo“ und „beschreibe“ sind noch in der Entwicklung

Reported by: Erik Streb del Toro Owned by:
Priority: niedrig Milestone: Neo Version 2.0
Component: sonstiges Version: 2.0 BETA
Keywords: Cc:

Description

Wenn ich dem Programm linux/bin/beschreibe folgendes übergebe:

beschreibe ①

wird mir folgendes angezeigt:

1) ①
2) ①
welches Zeichen suchen Sie:

also zwei mal das gleiche. Warum? Egal was ich dann wähle (1 oder 2), es wird jedes mal das gleiche ausgegeben, nämlich

① ist nicht direkt auf der NEO-Tastatur

Aber ① ist über Compose folgendermaßen darstellbar:
<Multi_key> + <parenleft> + <1> + <parenright> 
<Multi_key> + <parenleft> + <KP_1> + <parenright>

Das Programm linux/bin/wiemitneo gibt mir dies auch direkt, ohne sinnlose Zwischenfrage aus. Wozu gibt es also das Programm linux/bin/beschreibe? Irgendwie redundant.

Change History (8)

comment:1 by Erik Streb del Toro, 15 years ago

Ich schlage als Lösung zur Vermeidung der Dopplungen vor:

bisherigeAusgabe() | sort | uniq

Dast ist wohl die einfachste und schnellste Lösung.

comment:2 by Erik Streb del Toro, 15 years ago

Nein, noch besser:

Habe gerade das Skript angesehen. Puuuh, gar nicht kommentiert. Sehr schade, damit ist es fast nur für den Originalautor wartbar. Und das auch nur für kurze Zeit, bis er vergisst, was nochmal was macht.

Nun zum Vorschlag: Statt die Variable

ausgabe

jedes mal (und immer wieder!) mit 1 zu füllen, würde ich lieber die einzelnen gefundenen Zeichen in die Variable ausgabe schreiben. Jeweils mit Leerzeichen getrennt. Also erst die Zeichen, die in Compose gefunden wurden und dann die in der keysymdef.h in die Variable schreiben.

Dann Dopplungen weg, dann Auswahl ausgeben.

Beispielsweise so:

# die gefundenen Zeichen stehen in der Variable AUSGABE
AUSGABE="1 1 2 4 5 8 1 3 5 7 8 2 2 9 9 9 9 0 1 0 1 0 1 3 4 5 6 7"

# Dopplungen entfernen
AUSGABE_SORTIERT=$(for i in $AUSGABE; do echo $i; done | sort | uniq)

# Zähler für die Auswahl des richtigen Zeichens auf 1 setzen, danach ausgeben
ZAEHLER=1
for i in $AUSGABE_SORTIERT; do
    echo "${ZAEHLER}) $i"
    ZAEHLER=$(($ZAEHLER+1)) # Zähler hochzählen
done

Unicodeverträglich?

Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw? Ist jedenfalls sehr einfach, gut wartbar, verständlich, fehlerfreier (weniger Codezeilen) usw.

Ansonsten würde ich zumindest die Variable ausgabe ganz am Anfang initialisieren. Denn es könnte sein, dass diese schon existiert. Also am Anfang schreiben

ausgabe=0

oder ähnliches.

in reply to:  2 ; comment:3 by Björn Seifert bj@…, 15 years ago

Replying to erik:

Unicodeverträglich?

Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw?

Bei mir unter Ubuntu 8.10 nicht, da macht schon ein

echo ① | cut -c1

wie es in der Art häufig im Scirpt verwendet wird, Probleme.

in reply to:  3 ; comment:4 by Erik Streb del Toro, 15 years ago

Replying to Björn Seifert bj@oern.de:

Replying to erik:

Unicodeverträglich?

Funktioniert das auch mit sämtlichen verrückten Zeichen wie ①, ™, æ, ⅱ, usw?

Bei mir unter Ubuntu 8.10 nicht, da macht schon ein

echo ① | cut -c1

wie es in der Art häufig im Scirpt verwendet wird, Probleme.

Echt? Bei mir funktioniert es einwandfrei:

echo ①②③④ | cut -c2-4

ergibt ②③④. Ubuntu ist komisch.

in reply to:  4 comment:5 by Björn Seifert bj@…, 15 years ago

Replying to erik:

Bei mir funktioniert es einwandfrei:

echo ①②③④ | cut -c2-4

ergibt ②③④. Ubuntu ist komisch.

$ echo ①②③④ | cut -c2-4

ergibt ��.

$ echo ①②③④

funktioniert: ①②③④

$ locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE:de:en_GB:en
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

sollte ja passen.

$ cut --version
cut (GNU coreutils) 6.10
Copyright © 2008 Free Software Found…

Die ist denke ich auch aktuell.

Aber mit dem Problem bin ich hier offtopic. ☺

in reply to:  description comment:6 by pascal, 15 years ago

Summary: Das Programm „beschreibe“ macht doppelte AusgabenDie Programme „wiemitneo“ und „beschreibe“ sind noch in der Entwicklung
Type: Fehler/DefektAufgabe/TODO

Sie Antwort in entsprechendem Thread der für Diskussionen besser geeigneten Mailingliste…

comment:7 by bened, 15 years ago

Hallo! Auch zum Thema "beschreibe":

$ beschreibe ä
1) Ä
2) Ä
3) ä
4) ä
welches Zeichen suchen Sie: 1

• Ä gibt es direkt auf der NEO-Tastatur:
cut: Trenner muss ein einzelnes Zeichen sein
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
...

Und so geht es dann weiter und weiter bis ich abbreche. Ich arbeite mit Debian Etch, was cut v5.97 mitliefert. Zu alt?

in reply to:  7 comment:8 by Björn Seifert, 15 years ago

Replying to bened:

cut: Trenner muss ein einzelnes Zeichen sein
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
cut: Liste der Positionen fehlt
„cut --help“ gibt weitere Informationen.
...

Und so geht es dann weiter und weiter bis ich abbreche. Ich arbeite mit Debian Etch, was cut v5.97 mitliefert. Zu alt?

Mit cut 6.10 bei Ubuntu 8.10 das gleiche. Es liegt daran, dass Unicode-Zeichen als 2 Zeichen gesehen werden. Habe schonmal versucht, die Skripte umzuschreiben, dass sie awk/sed stattdessen nutzen (damit ging es bei mir), bin aber nicht weit gekommen und hab erstmal aufgegeben.

Gruß Björn

Note: See TracTickets for help on using tickets.