Ticket #84 (new Aufgabe/TODO)

Opened 5 years ago

Last modified 2 years ago

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

Reported by: erik 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.

Attachments

Change History

  Changed 5 years ago by erik

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

bisherigeAusgabe() | sort | uniq

Dast ist wohl die einfachste und schnellste Lösung.

follow-up: ↓ 3   Changed 5 years ago by erik

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 ; follow-up: ↓ 4   Changed 5 years ago by Björn Seifert bj@…

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 ; follow-up: ↓ 5   Changed 5 years ago by erik

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   Changed 5 years ago by Björn Seifert bj@…

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   Changed 5 years ago by pascal

  • type changed from Fehler/Defekt to Aufgabe/TODO
  • summary changed from Das Programm „beschreibe“ macht doppelte Ausgaben to Die Programme „wiemitneo“ und „beschreibe“ sind noch in der Entwicklung

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

follow-up: ↓ 8   Changed 4 years ago by bened

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   Changed 4 years ago by Björn Seifert

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

Add/Change #84 (Die Programme „wiemitneo“ und „beschreibe“ sind noch in der Entwicklung)

Author


E-mail address and user name can be saved in the Preferences.


Change Properties
<Author field>
Action
as new
as The resolution will be set. Next status will be 'closed'
to The owner will change from (none). Next status will be 'new'
The owner will change from (none) to anonymous. Next status will be 'assigned'
 
Note: See TracTickets for help on using tickets.