Archiv der Kategorie: Office

Softwarehinweise und -tipps

PDF Formulare

Seit acroread nicht mehr in den Repos ist und sich auch nicht mehr ohne Klimmzüge auf aktuelleren Linuxen installieren lässt, sieht es Mau aus mit dem Ausfüllen von PDF-Formularen. Man kann Okular nehmen … und dann damit leben, dass die Formularinhalte als XML Dateien im Homeverzeichnis „verschwinden“, statt direkt beim Dokument zu liegen. Für mich ist das ein No-go, weil ich PDF-Formulare noch Jahre später oder auch auf einer anderen Maschine ausgefüllt ansehen können will.

Eine unfreie aber praktikable Lösung scheint mir hier zu liegen:

https://code-industry.net/free-pdf-editor/

Erste Versuche mit den Beihilfeformularen zeigen, dass sich Master PDF Editor benimmt wie ein Acrobat Reader. Die Formulareinträge landen im PDF. Man kann das PDF also verschieben und kopieren und die Inhalte bleiben erhalten.

Die Installation wiegt mit rund 10MB nicht viel und abgesehen von einigen Qt Abhängigkeiten kommt wenig an Bord.

OCR revisited

Zwar liefert Finereader die besseren Ergebnisse und obendrein noch ein Layout für die Scans, aber für eine lokale Suche nach einem PDF reicht auch ein bischen weniger, so dass man sich die Ausgaben bei ABBYY für jede einzelne Seite zumindest teilweise sparen kann.

Unter einem Debian 9:

sudo apt-get install poppler-utils ocrmypdf tesseract-ocr-deu

Details und weitere Konfigurationsmöglichkeiten, Batch-Skripte und mehr sind hier zu haben. Ich setze ocrmypdf bisher gezielt auf einzelne Verzeichnis an mit diesem Einzeiler:

for i in $( ls *.pdf ) ; do ocrmypdf --skip-text -l deu --deskew --clean --rotate-pages --clean-final $i - | pdftotext - $i.txt ; done

Das ergibt dann TXT Dateien mit zu über 95% richtig erkanntem Inhalt, wenn die Vorlage gut ist. Presst man PDF-Faxe und ähnlichen Mist durch die tool chain, dann kommt leider weitaus weniger Brauchbares hinten raus – aber zum Wiederfinden auf der lokalen Platte mit recoll reicht es.

A Time Tracker

Ich nutze seit dem 01.08.2016 A Time Tracker (bei FDroid zu haben) als Zeiterfassungssoftware auf dem Smartphone – und das für mich überraschend diszipliniert und an vielen Stellen evtl. auch übergenau. Verlasse ich den Schreibtisch oder die SItzung etc., stoppe ich die Zeiterfassung.

Da das RP wie jedes Jahr um Pfingsten meinen Tätigkeitsbericht haben wollte, wollte ich mir die Arbeit nun erleichtern und zum ersten Mal einen echten Stundenzettel einreichen. Das klappte nur bedingt. Einerseits ist das RP-Formular dafür nicht gemacht, weil es sich nicht interessiert, wie viel man gearbeitet hat, sondern nur dafür, wie viele Stunden Unterricht ausgefallen sind, während man als Landesbeamter andere Dienstaufträge erfüllte.

Andererseits ging ich zuerst den falschen Weg und exportierte mir die SQLite Datenbank aus A Time Tracker (Mehr – Auf Speicher sichern). Mit der konnte ich lokal auf dem Rechner aber wenig anfangen: die Zeiten sind als Unix timestamps abgelegt, müssen also zuerst konvertiert werden und auch die Zuordnung von IDs zu den Tätigkeitsbezeichnungen ist derart auf einzelne Tabellen verteilt, dass das Zusammenführen viel zu viel Mühe macht.

Eine Übersicht über die eigene Arbeitszeit lässt sich aus dem CSV Export viel zügiger erstellen:

  1. Mehr – Zeitbereich ändern – Alle
  2. Mehr – Ansicht nach CSV exportieren

A Time Tracker legt die timetracker.db wie auch die all.csv auf der obersten Ebene des Nutzerverzeichnisses auf dem Smartphone ab – hier ist das /storage/emulated/0/.

Die Konvertierung von Unix timestamps ins Format YYYY-MM-DD HH-MM-SS wird von der App vorgenommen. Der Import nach LibreOffice gelingt ohne Mühe.

Formatiert man die Zellen für die Summen im Format [HH]:MM:SS, unterlässt LibreOffice jegliche Umrechnungen und addiert schlicht die Zeiten in Richtung Stunden. Entscheidend ist die eckige Klammer um das HH!

Man kann dann mit dem üblichen =SUMME(FeldA:FeldZ) rechnen, statt sich permanent zu wundern, was LibreOffice da gerade macht, und die Daten auch grafisch darstellen etc. pp.

Ganz hübsch erhellend für mich war, dass ich schon vor Monaten meine vorgesehene Jahresarbeitszeit „durch“ hatte. Dabei ist das Schuljahr noch nicht einmal zu Ende. Auch erhellend war die Verteilung meiner Stunden auf die von mir in A Time Tracker angelegten Kategorien. Ich weiß nun, wo ich mehr darauf achten muss, mich nicht zu sehr vereinnahmen zu lassen. Ich muss „Nein“ noch üben.

CODE versus OO

Die Installation von Collabora (CODE) in nextCloud hinter einem HTTPS-Apache-Proxy verläuft ohne Zicken. Einfach die Anleitung nachturnen und es funktioniert. Aber es funktioniert zäh und das auch bei 32GB RAM auf einem (etwas in die Jahre geratenen aber durchaus noch webtauglichen) Dell Poweredge T710 mit zwei Xeon Prozessoren. Zumindest im Vergleich zu einem OnlyOffice (OO).

OnlyOffice bringt viel mehr Funktionen mit, lässt sich flutschiger bedienen und sieht darüber hinaus auch noch schicker aus. Im Vergleich dazu fällt Collabora sehr weit zurück: zähe, zickige und schnarchige Bedienung und gerade mal ein paar Basisfunktionen an Bord. Hat man einmal mit OO gespielt, will man nicht mehr zu CODE zurück. Dafür würde ich sogar hinnehmen, dass OO alles ins OOXML Format konvertieren will.

Jedoch: OnlyOffice in ownCloud hinter einem HTTPS-Apache-Proxy warf sich mir mit weitaus mehr Problemen bei der Installation in den Weg als CODE. Aktuell habe ich noch nicht alle im Griff – es funktioniert erst im Prinzip. Und zwar hiermit:

docker pull onlyoffice/documentserver

Die Virtualhost für den Apache anpassen:

<VirtualHost *:443>
     ServerName onlyoffice.domain.tld:443

     SSLEngine on
     ServerSignature On
     SSLHonorCipherOrder on

     SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

     SSLCertificateFile /etc/letsencrypt/live/onlyoffice.domain.tld/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/onlyoffice.domain.tld/privkey.pem

     LogLevel warn
     CustomLog ${APACHE_LOG_DIR}/access.log combined
     ErrorLog ${APACHE_LOG_DIR}/error.log

# Just in case - see below
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off

# contra mixed content warnings
RequestHeader set X-Forwarded-Proto "https"

# basic proxy settings
ProxyRequests off

        ProxyPass / http://127.0.0.3:9090/
        <Location />
                ProxyPassReverse /
        </Location>
</VirtualHost>

Den OO Container starten:

docker run -i -t -d -p 127.0.0.3:9090:80 --restart always  onlyoffice/documentserver

die ownCloud App für OO installieren und die Kiste läuft. Im Prinzip.

Textverarbeitung funktioniert.

Präsentationssoftware funktioniert.

Tabellenkalkulation funktioniert.

Aber: Es funktioniert eben nur im Prinzip.

Denn man muss damit leben, dass einem der Firefox weiterhin in der Debug-Console Meldungen entgegen wirft:

Firefox kann keine Verbindung zu dem Server unter wss://onlyoffice.domain.tld/2017-02-17-15-53/doc/271488117372/c/493/1niaepga/websocket aufbauen.  sockjs.min.js:3:4835

Ich fummel mir hier nun seit Tagen einen ab, um diese Meldungen los zu werden. In der VHost Konfiguration des Apachen oben sind ja noch Reste davon zu sehen.

Für diese Versuche startete ich den docker container so, dass dessen Port 443 zum Wirt auf Port 9091 weiter gereicht wird

docker run -i -t -d -p 127.0.0.3:9090:80 -p 127.0.0.3:9091:443 onlyoffice/documentserver

und stellte dann Versuche in der VHost Config des Apachen nach dem Schema (!)

ProxyPassMatch "/(.*)/websocket"  wss://127.0.0.3:9091/$1/websocket

an. Erfolglos. Auch meine Versuche mit ProxyPass, ProxyPassReverse oder ReWrite Regeln scheiterten bisher.

Ich glaube, ich habe nun alle Anleitungen und Tutorials rund um Websockets mit HTTPs und Apache Proxy durch – ich fahr da noch immer vor die Wand. Und vor allem: Ich hab keine blassen Dunst, was ich eigentlich genau verzocke.

Drängen tut das Problem nicht. Ich roll weder OO noch CODE zum aktuellen Zeitpunkt aus. Denn ich vertraue weder dem auf einer eigenen Subdomain laufende OO Documentserver noch dem CODE Container. Zwar können Besucher theoretisch nur in den docker container reinfummeln und wohl nicht aus diesem oder dem Apache Proxy ausbrechen, aber schon dass finde ich irritierend.

Schlimmer ist vielmehr, dass ich den Websocket nicht an den Apache HTTPS Proxy so dran bekomme, dass der Firefox endlich Ruhe gibt. Falls da einer ne Idee hat … ich hab ein offenes Ohr. Vielleicht ist ja was dabei, was ich noch nicht probiert habe.

DOCX

Wir haben am LFB gerade das unschöne Problem, dass wir beim Öffnen von DOCX Dokumenten Bilder sehen, die MS Word nicht anzeigt und nicht druckt.

Packt man die DOCX mit unzip aus und durchsucht dann die Verzeichnisstruktur sieht man das Bild ebenfalls. Es ist eindeutig da. Das Problem ist demnach, dass MS Word Bilder beim Löschen durch den Anwender nicht immer löscht … sondern stellenweise und aus für uns nicht nachvollziehbaren Gründen im Dokument belässt. Pech gehabt.

LibreOffice z.B. bringt das dann an den Tag – oder, wie wir feststellen konnten, die Webansicht von MS Word.

Die potentiellen Katastrophen, die sich aus diesem Verhalten von MS Word ergeben, sind Legion: Von Abmahnungen bei Internetveröffentlichungen angefangen über die Weitergabe von geheim zu haltenden Informationen bis hin zu persönlichen Peinlichkeiten … MS macht’s möglich.

Das ist professionelle Software.

OMD auf Ubuntu 16.04 quick setup

Mein hausinterner Monitoring- und Nameserver wollte sich nicht ohne Zicken von 14.04 auf 16.04 schubsen lassen. Also setzte ich diesen neu auf und durfte dann OMD neu installieren. Meine Notizen:

wget https://mathias-kettner.de/support/1.2.8p15/check-mk-raw-1.2.8p15_0.xenial_amd64.deb
dpkg -i check-mk-raw-1.2.8p15_0.xenial_amd64.deb
apt-get install -f
service apache2 restart
omd create bdjlhome
su - bdjlhome

In /omd/sites/bdjlhome ist dessen Homeverzeichnis gelandet. Dort dann ausführen:

omd config
omd start
exit

Das OMD Config stellte ich auf Web GUI sowie Multisite und übernahm dort im Wesentlichen die vorhandenen Einstellungen:

Um den Monitoring-Server ebenfalls überwachen zu können folgte die Installation und Konfiguration (die dann auf allen zu überwachenden Clients ebenfalls durchgeführt werden muss):

apt-get install check-mk-agent xinetd nagios-plugins-basic
apt-get install -f

Die /etc/xinetd.d/check_mk sieht nach den nötigen Anpassungen wie folgt aus:

service check_mk
{
        type           = UNLISTED
        port           = 6556
        socket_type    = stream
        protocol       = tcp
        wait           = no
        user           = root
        server         = /usr/bin/check_mk_agent

        # If you use fully redundant monitoring and poll the client
        # from more then one monitoring servers in parallel you might
        # want to use the agent cache wrapper:
        # server         = /usr/bin/check_mk_caching_agent

        # configure the IP address(es) of your Nagios server here:
        only_from      = 127.0.0.1

        # Don't be too verbose. Don't log every check. This might be
        # commented out for debugging. If this option is commented out
        # the default options will be used for this service.
        log_on_success =

        disable        = no
}

Für die Clients muss dann bei only_from die IP des Monitoring-Servers eingetragen werden.

Weiter geht es für die mrpe.cfg:

mkdir /etc/check_mk
vi /etc/check_mk/mrpe.cfg

Hier schaltete ich APT und SSH Checks frei:

# APT Check
APT_CHECK /usr/lib/nagios/plugins/check_apt
# SSH Check
SSH_CHECK /usr/lib/nagios/plugins/check_ssh localhost

Fail2ban soll ebenfalls überwacht werden:

vi /opt/omd/sites/bdjlhome/local/share/check_mk/agents/plugins/fail2ban

In der Config für diesen Agent steht

#!/bin/sh
echo '<<<fail2ban>>>'
if [ -x /usr/bin/fail2ban-client ]; then
JAILS=`/usr/bin/fail2ban-client status | grep "Jail list" | tr -s [:blank:] | cut -f2- -d':' | sed -e 's/,/ /g'`
        echo "Detected jails: $JAILS"
        for jail in $JAILS
        do
                /usr/bin/fail2ban-client status $jail
        done
fi

und dann muss diese noch ausführbar sein:

chmod 755 /opt/omd/sites/bdjlhome/local/share/check_mk/agents/plugins/fail2ban

755 ist etwas arg dick aufgetragen, tut es aber für’s Heimnetz.

Dann den xinetd und den Apache neu starten:

service xinetd restart
service apache2 restart

Ob überhaupt Daten ankommen ist zu prüfen:

telnet localhost 6556

Die Anmeldung an OMD erfolgt im Browser an der lokalen IP (bei mir an dieser Stelle noch ohne Namensauflösung: https://10.16.X.X/bdjlhome) als omdadmin mit omd als Passwort, das nach dem ersten erfolgreichen Login geändert wird.

Im Main Menü unter Hosts wird dann der lokale Monitoring-Server eingerichtet. Rechts oben gibt es den Schalter New host. Diesem einen Namen und die passende IP (in diesem Fall 127.0.01) geben und über Save & go to Services speichern. Wenn alles klappt lässt sich hier gleich eine Service discovery durchführen und für diesen Host abspeichern.

Zurück im Main Menu: Wie üblich bei OMD müssen die Änderungen durch eine Reihe von Klicks auf farblich hervorgehobene Schalterchen erst aktiviert werden.

Ein Klick auf Hosts zeigt die Liste der schon eingetragenen Server an. Zur nachträglichen Service Discovery folgt der Klick auf das Icon „Notizbrett mit grünem Haken“ das im Overlay „Edit the services of this hosts, do a service discovery“ anzeigt.

… und nach ein wenig mehr Geklicke sind die lokalen Hosts eingetragen. Praktisch ist die Notification Funktion. Die warnt mich per Mail, wenn auf einem der Rechner etwas aus dem Lot gerät. In Ermangelung einer statischen IP verwende ich hierzu einen Postfix als Satellitensystem – aber das ist eine andere Geschichte.

1und1

Ich hab ja immer mal wieder meine Probleme mit den Diensten von 1und1 [1, 2] und seit gestern geht es in eine neue Runde zu einem neuen Thema. Ich suchte für eine Bekannte einen günstigen DSL Internetzugang ohne die üblichen 24 Monate Vertragslaufzeit. Klickt man sich aktuell ein solches Angebot auf den Seiten von 1und1 zusammen, dann landet man bei einem Warenkorb der so aussieht:

1und1warenkorb

Für ihr Modem wollen die Herren und Damen aus Montabaur also 149,99 Euro. Von Einrichtungsgebühr oder Technikerkosten steht da nix.

1und1_Preisliste_DslPakete.pdf - Mozilla Firefox_002

Holt man sich die Preisliste direkt als PDF über jeweils wenig prägnante Links auf den 1und1 Seiten, dann steht da nix zu diesem Posten. Vielmehr ist hier von einem einmaligem Bereitstellungspreis die Rede, von Technikergebühren ebenfalls … aber über das Modem selbst kein Wort.

Spricht man Mitarbeiter im 1und1-„Service“ darauf an, bekommt man keine Antworten, in welcher Preisliste das Modem denn nun zu finden sei. Die quatschen einem dafür das Ohr ab, „das Modem gehört dann Ihnen“, können jedoch keine Aussagen zur Hardware machen, ob diese – da sie dann ja mir gehört – von mir auch konfiguriert oder an anderen DSL-Anschlüssen verwendet werden kann. Ahnungslosigkeit gepaart mit Marketing-Blabla halt.

Das Schönste aber ist: Bestellungen nach Preisliste werden abgelehnt. Diese sind in das Warenwirtschaftssystem – so teilte mir eine Mitarbeiterin am Telefon mit – überhaupt nicht eintragbar. Dabei sei die Preisliste, so versicherten mir die Mitarbeiter, gültig und verbindlich.

Lokaler Mailserver unter Arch

Hier hatte ich vor einiger Zeit meine main.cf und dovecot.conf für Arch dokumentiert, war dann jedoch auf dem ollen Wind U100 zu Kali gewechselt. Auf einem meiner anderen Oldtimer – einem Dell Vostro 1510 – läuft jetzt wieder ein Arch. Es weiß mit alter Hardware sehr ressourcenschonend umzugehen – im Gegensatz zu bloated Ubuntu – und das Mehr an Gefummel ist auf einem Laptop, den ich nicht im Dauereinsatz habe, auch nicht weiter tragisch.

Zu Dokumentationszwecken erneut die main.cf und dovecot.conf für einen lokalen Mailserver als Speicherplatz für die E-Mails der letzten Jahre:

/etc/postfix/main.cf

# local paths
queue_directory = /var/spool/postfix
command_directory = /usr/bin
daemon_directory = /usr/lib/postfix/bin
mail_owner = postfix

# local domain settings
myhostname = dellaro 
# mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.localdomain, localhost

# Timeout settings and limits
# not nec. needed on localhost
# but will not do any harm either
delay_warning_time = 1h
unknown_local_recipient_reject_code = 450
minimal_backoff_time = 300s
maximal_backoff_time = 1200s
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
smtp_helo_timeout = 60s
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12

# SMTP settings
# SSL not needed on localhost
# but will not harm either
smtpd_tls_cert_file=/etc/ssl/certs/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
# add some modern SSL stuff 
smtpd_tls_received_header = yes
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_auth_only = yes

smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtpd_tls_loglevel = 1
smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions = permit_sasl_authenticated,
                               permit_mynetworks,
                               reject_unauth_destination,
                               
# Sender SASL not needed on localhost
# but will not harm either
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_sasl_security_options = noanonymous

# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client

# Network settings
inet_interfaces = loopback-only
inet_protocols = all
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
relayhost =

smtpd_relay_restrictions = permit_mynetworks 
                           permit_sasl_authenticated
                           defer_unauth_destination

# Email and mailbox settings
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps
home_mailbox = Maildir/
mailbox_size_limit = 0

# misc other stuff
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -m "${EXTENSION}"

smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/man
sample_directory = /etc/postfix/sample
readme_directory = no
recipient_delimiter = +

/etc/dovecot/dovecot.conf

auth_mechanisms = plain login
mail_access_groups = mail
mail_location = maildir:~/Maildir
passdb {
  driver = pam
}
protocols = imap
service auth {
  unix_listener auth-client {
    group = postfix
    mode = 0660
    user = postfix
  }
  user = root
}
ssl_cert = </etc/ssl/certs/mail.crt
ssl_key = </etc/ssl/private/mail.key
userdb {
  driver = passwd
}
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}

Scheint rund zu laufen. Zumindest werfen mir weder Postfix noch Dovecot noch Fehlermeldungen entgegen. Zur Einrichtung selbst siehe die entsprechenden Seiten im Arch-Wiki:

https://wiki.archlinux.org/index.php/postfix

https://wiki.archlinux.org/index.php/Dovecot

Wie immer bei meinen auf jedem Laptop vorhandenen lokalen Mailservern: Der Mailserver ist von außen Dank iptables nicht zu erreichen. Nur der lokale Thunderbird nimmt Kontakt auf. Sicherheitslücken in der Konfiguration sind deswegen nicht tragisch.

Auf gleichem Stand halte ich die lokalen Mailserver auf den Laptops im Moment noch mit rsync gegenüber meiner heimischen Workstation. Da muss ich mir mal was Neues überlegen …

Firefox 46 auf Kubuntu 14.04

kubuntu-gtk-options

Der Firefox-Dialog [Ziel speichern unter ,,,] ließ sich seit dem Update auf Firefox 46 unter Kubuntu 14.04 LTS nicht mehr richtig bedienen. Die Einträge in der linken Fensterhälfte unter Orte, Geräte und Lesezeichen reagierten nicht mehr auf Klicks und die Speichern bzw. Abbrechen Buttons reagierten zumindest komisch, mussten oft mehrfach angeklickt werden. Lediglich der Krümelpfad im Dialogfenster konnte noch zur Navigation in den Ordnern verwendet werden. Das könnte mit einem Bug im Zusammenhang stehen, der Firefox unter Ubuntu 12.04 im Moment komplett unbrauchbar macht.

Was hier geholfen hat, war, das Verzeichnis ~/.config/gtk-3.0/ zu löschen. In den KDE-Systemeinstellungen ist das GTK-3-Design danach auf Default zurückgestellt.

Firefox passt sich hiernach nicht mehr so hübsch in den Desktop ein. Die Fensterrahmen haben nun einen anderen graublauen Ton, als Firefox selbst.

Maussorgen

Auf Grund von Mousejack war ich letzthin wieder auf der Suche nach einem Nagetier.

Meine sehr angenehm in der Hand liegende, im 2,4 Ghz Band funkende Microsoft Maus (MS Wireless Mobile Mouse 4000) fiel aus – die ist angreifbar. Updates für die Firmware stellt MS im Unterschied zu Logitech nicht zur Verfügung. Mist.

Zuerst also zu Logitech und dort eine M175 geordert. Ein Fehlkauf. Das Ding klappert wie ein 20 Jahre alter Renault R4. Die Bodenklappe, unter der sich die Batterie befindet, sitzt nicht wirklich fest. Der Ein- und Ausschalter ist zu tief im Gehäuse angebracht, so dass man diesen mit geschnittenen Fingernägeln kaum bedienen kann und obendrein ist mir das Teil zu klein. Einen Umstand hatte ich beim Kauf dazu noch überlesen: Die M175 nutzt farbloses Licht. Man muss sie also umdrehen und auf den Ein-/Ausschalter schauen, um zu wissen, ob das Ding an ist. Nervig.

Es begann eine zunehmend verzweifelter werdende Suche nach einer ordentlich verarbeiteten Maus, die nicht nach Gamer-Nager aussieht und eine vernünftige Anzahl an Knöpfen besitzt. Am Ende fündig wurde ich wieder … bei MS!

IMG_20160305_151354

ID 045e:076c Microsoft Corp. Comfort Mouse 4500

Die Maus ist ordentlich verklebt, so dass nix klappert, das Scrollrädchen ist frei drehbar, sie hat oben außer dem Mausradtaster die üblichen zwei Tasten und links und rechts jeweils eine. Die seitlichen Tasten sind so angebracht, dass man nicht aus Versehen klickt. Außerdem bringt jeder Taster einen klar definierten Druckpunkt mit. Und – entscheidend: Sie ist riesig! Genau richtig für meine Bratpfannen.

Kubuntu 14.04 erkennt das Teil umgehend und interpretiert die seitlichen Knöpfe im Browser und Dolphin als vor und zurück. Einstecken – tut.

Es fällt mir ja schwer dies zu sagen, aber Hardware können die Redmonder 🙂