# Cherry KeyMan-Source kompilieren/installieren

## Linuxpeter

Hinweis: Ich habe die Tastatur an PS/2 angeschlossen, ob es auch über USB funkioniert, entzieht sich meiner Kenntniss!

1. Software downloaden

http://support.cherry.de/download/KeyMan_LINUX_06.zip

2. Entpacken

Falls noch nicht geschehen:

```
# emerge unzip
```

Nun entpacken wir cymolin-0.6.0-2.tar.gz wie folgt:

```
# unzip -e KeyMan_LINUX_06.zip -d keyman

# cd keyman

# tar -xzf cymolin-0.6.0-2.tar.gz

# cd cymolin-0.6.0-2
```

3. Änderungen in Dateien vornehmen

Pfadangaben in diesem Abschnitt setzen vorraus, das wir uns im Verzeichnis cymolin-0.6.0-2 befinden!

etc/init.d/cherry

Den Inhalt dieses Scripts mit folgendem Code ersetzen:

```
#!/sbin/runscript

start() {

    ebegin "Setting up Cherry Keyboard CyMotion Master on PS/2"

    setkeycodes e065 136 e070 161 e032 172 e05f 143 e063 145 e06d 171 e00b 177 e012 178 e017 137 e00a 135 e018 133 e071 148 e02c 149 e072 202 e007 129 e008 131 e05b 200

    eend $?

}

stop() {

    ebegin "Restoring defaults for PS/2 keyboard"

    setkeycodes e065 217 e070 000 e032 150 e05f 142 e063 143 e06d 226 e00b 000 e012 000 e017 000 e00a 000 e018 000 e071 000 e02c 000 e072 000 e007 000 e008 000 e05b 125

    eend $?

}

```

Die Parameter für setkeycodes dürfen nicht verändert werden!

keymanconfig/configure

server/plugins/kde/configure

systray/configure

In diesen drei Dateien nach folgender Textstelle suchen:

```
kde_libdirs="\ 

  /usr/lib 

  /opt/kde3/lib"
```

Hinter diese Textstelle folgenden Code einfügen

```
if [ -n "$KDEDIR" ]; then 

  kde_libdirs="$KDEDIR/lib $kde_libdirs" 

fi
```

(Dieser Tip stammt aus dem englischsprachigen Forum)

config/make.cfg.in

Die Zeile

```
CXXFLAGS=@CXXFLAGS -Wall -Wstrict-prototypes
```

mit dieser

```
CXXFLAGS=@CXXFLAGS -Wall -fPIC
```

ersetzen.

library/msgports/MakeFile (dieses MakeFile wird durch ./configure nicht verändert)

Den Inhalt mit folgendem Code ersetzen:

```
LD := ld

FILES := msgports

OBJECTS := $(foreach f, $(FILES), $(f).o)

DEPENDS := $(foreach f, $(FILES), $(f).d)

.PHONY: all depend clean

objects: $(OBJECTS)

test: test.o $(OBJECTS)

   $(CC) $^ -fPIC -o $@

depend: $(DEPENDS)

clean:

   rm -f *.o *.d $(LIBFILE)

$(LIBFILE): $(OBJECTS)

   $(LD) $(LDFLAGS) $^ -o $@

%.o: %.c

   $(CC) $(CFLAGS) -fPIC -g -c $< -o $@

%.d: %.c

   $(CC) $(CFLAGS) -fPIC -M $< -o $@

ifeq (,$(filter clean depend,$(TARGET)))

-include $(DEPENDS)

endif
```

4. Kompilieren und installieren

```
# ./configure && make && make install

# rc-update add cherry default

# /etc/init.d/cherry start
```

5. Abschluß

Im K-Menü befindet sich nun der Eintrag Keyman. Diesen starten wir jetzt. Im Systray taucht nun das keyman-Symbol auf. 

Nun können wir das Konfigurationprogramm über dieses Icon aufrufen. Dort unbedingt auf der General-Seite die Option Automatically start on login aktivieren.

Auf der Key actions-Seite können die Zusatztasten konfiguriert werden. Eine Default-Konfiguration bringt das Programm mit.

Ich hoffe, das ich dem einen oder anderen damit helfen konnte.

PS: Wem das zuviel Arbeit ist, kann sich das mit diesen Änderungen versehene Archiv unter folgendem Link downloaden:

http://de.geocities.com/linuxpeter2004/cymolin-0.6.0-2.tar.gz

PS die 2.: Bei mir läuft die Software als x86_64 (amd64).

PS die 3. Ausversehen habe ich zuerst meinen anderen Post betreffs Cherry Tastatur mit dem selben Inhalt gefüllt - dadurch existiert diese Anleitung nun zweimal - das war aber nur ein Versehen - Entschuldigung also dafür  :Rolling Eyes:  .

EDIT: Fehler im Code für Script "cherry" und im Archiv behoben (21.02.2004)

----------

## EinDarsteller

Danke schonmal fürs Turorial, habe lange selber größtenteils Erfolglos dran rumgetüftelt.  :Rolling Eyes: 

Trotzdem habe ich noch ein Problem. Ich bekomme bei der angebotenen Datei, wie auch bei selbstständigen ändern folgenden Fehler beim kompilieren:

```
checking for error_at_line... no

configure: creating ./config.status

config.status: creating Makefile

config.status: creating config/make.cfg

Entering  library ...

find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.

Makefile:13: *** missing separator.  Schluss.

make[1]: *** [all] Fehler 2

make: *** [libraries] Fehler 2

```

Hat jemand ne Idee woran das liegen könnte?

----------

## misterjack

Habe auch schon ein Tutorial geschrieben: 

http://de.gentoo-wiki.com/Cherry_CyMotion_Master_Linux

Da ich kein KDE habe, bin ich diesen Weg gegangen. Mit deiner Erlaubnis würde ich dein Howto dort unter Quellen und Authorenangabe hinzufügen...

----------

## Linuxpeter

Erlaubnis erteilt  :Laughing: 

----------

## bugfriend

 *Quote:*   

> 
> 
> find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.
> 
> Makefile:13: *** missing separator.  Schluss.
> ...

 

den "find: warning! gabs bei mir als error. Um den Fehler auszumerzen muß man in der Datei library/Makefile einfach die Optionen "-maxdepth 1" und "-type d" in der find-Anweisung tauschen.

Den zweiten Fehler habe ich auch aber in Zeile 12:

Entering  library ...

Makefile:12: *** missing separator.  Stop.

make[1]: *** [all] Error 2

make: *** [libraries] Error 2

wenn ich wenigstens wüßte welches Makefile er meint !?

----------

## Aproxx

Nach dem Starten von make endet es aprupt mit folgendem Fehler:

```

Workstation_One cymolin-0.6.0-2 # make

Entering  library ...

make[2]: Nothing to be done for `objects'.

Leaving  library

Entering  server ...

Entering  src ...

Makedepend x11handler.cpp ...

In file included from ../../server/include/comport/keymancomport.h:31,

                 from ckbddaemon.h:30,

                 from x11handler.cpp:32:

comport.h:29:31: msgports/msgports.h: No such file or directory

make[2]: *** [.x11handler.d] Error 1

make[1]: *** [all] Error 2

make: *** [all] Error 2

Workstation_One cymolin-0.6.0-2 #    

```

Mfg,

Alex

----------

## bugfriend

 *Aproxx wrote:*   

> Nach dem Starten von make endet es aprupt mit folgendem Fehler:
> 
> ```
> 
> Workstation_One cymolin-0.6.0-2 # make
> ...

 

läßt sich beheben, in dem man den Pfad zu msgports.h in der Datei comport.h vollständig angibt also z.B.

/home/user/cymolin-0.6.0-2/library/msgports/msgports.h

Der Fehler in Zeile 12 bzw. 13, liegt daran, das das Makefile, welches oben editiert wurde, unter allen Zeilen mit ":" einen TAB erwartet. Also z.B. 

```

clean: 

<TAB>rm -f *.o *.d $(LIBFILE)

```

----------

## misterjack

http://de.gentoo-wiki.com/Cherry_CyMotion_Master_Linux

Habe beide Howtos verschmolzen. Bitte um eventuelle Korrekturen..

----------

## Linuxpeter

http://de.geocities.com/linuxpeter2004/cherry-0.6.0-r2.tar.gz

Enthält bereits alle notwendigen Änderungen - obiger Link ist nicht mehr gültig!

----------

## mondauge

Hallo,

erstmal danke für diese super Howto   :Smile: 

Leider bekomme ich folgenden Fehler beim Linken: 

```
Linking keymand ...

.x11handler.o(.text+0xb73): In function `X11KeyHandler::GrabKey()':

/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/include/g++-v3/bits/basic_string.h:717: undefined reference to `XStringToKeysym'

```

(die komplette Fehlermeldung gibts hier.)

Hat jemand nen Tipp?  :Very Happy: 

mondaugeLast edited by mondauge on Mon Apr 25, 2005 5:32 pm; edited 1 time in total

----------

## Linuxpeter

Bei dir werden die X-Includes nicht gefunden.

Hast du versucht, es als normaler Benutzer oder als root zu kompilieren?

Falls als root, probiere es mal als normaler Benutzer und mache nur

```
$ make install
```

 als root.

----------

## mondauge

Hi Linuxpeter,

ich hab das Paket inzwischen als User und als root kompiliert und jedesmal kommt derselbe Fehler, sobald der Linker aktiv wird. Dass er die X Includes nicht findet glaub ich nicht, da er ja dann schon beim durchführen von 'configure' nen entsprechenden Fehler bringen müsste.

trotzdem danke für deine Hilfe  :Smile: 

mondauge

----------

## Linuxpeter

Hast du es mit http://de.geocities.com/linuxpeter2004/cherry-0.6.0-r2.tar.gz versucht?

Das kompiliert bei mir unter x86_64 fehlerfrei, sollte "theoretisch" auch unter x86 funkionieren.

Alternativ kannst du, falls du x86-System hast, es nach dem HowTo von misterjack machen.

----------

## Dscherrieth

ich bin eben auf das selbe problem gestoßen, dass make beim linken von keymand abbricht.

ich habe es mit deinem modifizierten paket ausprobiert, habe x86 arch.

kann es sein, dass es am xorg-x11 server liegt?

----------

## _hephaistos_

hi!

hatte auch das problem.

ich hab einfach die bereits compilten mitgelieferten files aus dem rpm genommen und ins system kopiert...

natürlich das runscript is vom howto.

funktioniert alles gut - mit USB.

cheers

----------

## Luda

Hi. Die Datei auf dem geocities-Wespavce existiert nicht mehr. Hat die noch jemand? Ich würde die wohl ins Web stellen...

Bei dem Versuch die Dateien nach der Anleitung per Hand zu editieren und das ganze Gesocks anschließend zu kompilieren habhe ich mich bis hierher durchgeboxt:

```
sad cymolin-0.6.0-2 # make

Entering  library ...

make[2]: Nothing to be done for `objects'.

Leaving  library

Entering  server ...

Entering  src ...

Entering  ../../library ...

make[4]: Nothing to be done for `objects'.

Leaving  ../../library

Compiling main.cpp ...

config.h:37: error: extra qualification 'PathItem::' on member 'PathItem'

ckbddaemon.h:45: error: extra qualification 'CKBDDaemon::' on member 'pluginlist'

make[2]: *** [.main.o] Error 1

make[1]: *** [all] Error 2

make: *** [all] Error 2

sad cymolin-0.6.0-2 #    

```

In der config.h steht an der Stelle:

```
class PathItem : public ListItem<PathItem> {

   public:

      PathItem::PathItem(string name) : ListItem<PathItem>(name) {};

};
```

Was ist falsch?

----------

## tek0

 *bugfriend wrote:*   

>  *Aproxx wrote:*   Nach dem Starten von make endet es aprupt mit folgendem Fehler:
> 
> ```
> 
> Workstation_One cymolin-0.6.0-2 # make
> ...

 

Sinnvoller:

```
-I$(TOP)/library
```

zu INCLUDES in server/src/Makefile hinzufügen  :Smile: 

 *mondauge wrote:*   

> 
> 
> Leider bekomme ich folgenden Fehler beim Linken: 
> 
> ```
> ...

 

Lässt sich im gleichen Makefile lösen, indem man den X-libs-Pfad zu LDLIBS hinzufügt:

```
-L/usr/lib
```

Bei mir kommt als nächstes dieser Fehler:

```
Entering  plugins ...

Entering  kde ...

MOCing kdeguiapplication.moc ...

MOCing menudialog.moc ...

Makedepend menudialog.cpp ...

In Datei, eingefügt von menudialog.cpp:56:

menudialog.moc:12:2: #error "The header file 'menudialog.h' doesn't include <QObject>."
```

Wie der fehlende Header vermuten lässt, liegt das am geslotteten Qt4. Obwohl in genügend Dateien die Umgebungsvariablen abgegrast wird und in configure mehrmals /usr/qt/3/bin/moc gefunden wird, benutzt make am Ende doch /usr/bin/moc (Qt4), weil wohl einfach `which moc` ausgeführt wird.

Ich blicke durch die Makefile Struktur nicht so ganz durch, weswegen ich einfach kurzerhand temporär /usr/bin/moc umbenannt habe und den Qt3-moc dorthin verlinkt hab. Falls jemand rafft, wie das vonstatten geht, bitte melden, vielleicht kann man dann ja mal ein ebuild bauen. Dasselbe muss man übrigens auch mit uic machen.

Zum Schluss gabs bei mir dann noch das Problem:

```
Compiling kdeguiapplication.cpp ...

kdeguiapplication.cpp: In constructor `KDEGuiApplication::KDEGuiApplication(int, char**)':

kdeguiapplication.cpp:59: Warnung: »__base_ctor« ist veraltet (deklariert bei /usr/kde/3.5/include/kapplication.h:205)

kdeguiapplication.cpp: In member function `bool KDEGuiApplication::DoCommand(const QString&)':

kdeguiapplication.cpp:205: Warnung: Variable »run« wird nicht verwendet

Compiling menudialog.cpp ...

Linking shared library kde-gui.so ...

/usr/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lkdeui

```

Ob das jetzt an meinen b0rked env.d Dateien liegt oder nicht, ich hab versucht $KDELIBS zu setzen, aber das wird wohl von configure lokal überschrieben. (wobei das ja im howto schon verbessert wird *grübel*)

Jedenfalls habe ich in server/plugins/kde/Makefile an LDLIBS angehängt:

```
-L/usr/kde/3.5/lib
```

der gleiche Mist kommt dann nochmal bei kkeymansystray - also systray/Makefile.

Dann liefs durch.

----------

## artbody

localhost keyman # ./configure --prefix=/usr --with-components=base,gnome --without-PACKAGE kde

localhost keyman # ./configure --prefix=/usr --with-components=base,gnome

```
checking for KDE includes... no

configure: error: "Couldn't find KDE development headers!"

make: *** [configure] Error 1

configure: error: "Configuration in plugins failed!"

configure: error: "*** Configuration in 'server' failed!"

```

 :Crying or Very sad: 

----------

## b3cks

 *artbody wrote:*   

> localhost keyman # ./configure --prefix=/usr --with-components=base,gnome --without-PACKAGE kde
> 
> localhost keyman # ./configure --prefix=/usr --with-components=base,gnome
> 
> ```
> ...

 

Schuss ins blaue: ./configure --prefix=/usr --with-components=base,gnome --without-package=kde

----------

## artbody

```
localhost keyman # make

Entering  server ...

Entering  src ...

make[2]: *** No rule to make target `linuxthreads/bits/local_lim.h', needed by `.ServerKeyHandle.o'.  Stop.

make[1]: *** [all] Error 2

make: *** [all] Error 2

```

----------

## artbody

Nachdem ich aus

```

#include <linuxthreads/bits/local_lim.h>

....

else

            std::cout << __FILE__ << ":" << __LINE__ << ": No thread! error=" << error << " max=" << PTHREAD_THREADS_MAX << " count=" << count << std::endl;

      }
```

gemacht hab  :Embarassed: 

```

#include <gentoo-multilib/amd64/bits/local_lim.h>

......

else

            std::cout << __FILE__ << ":" << __LINE__ << ": No thread! error=" << error << " max=" << " count=" << count << std::endl;

      }
```

./configure --prefix=/usr --with-components=base

```
localhost keyman # make

Entering  server ...

Entering  src ...

  DEP     ServerKeyHandle.cpp ...

  C++     ServerKeyHandle.cpp ...

  LD     keymanserver ...

Entering  locale ...

make[3]: Nothing to be done for `all'.

Leaving  locale

Leaving  src

Entering  plugins ...

Entering  kde ...

  MOC     kdeguiapplication.moc ...

  MOC     menudialog.moc ...

  DEP     menudialog.cpp ...

In file included from menudialog.cpp:58:

menudialog.moc:12:2: error: #error "The header file 'menudialog.h' doesn't inclu

de <QObject>."

  DEP     kdeguiapplication.cpp ...

In file included from kdeguiapplication.cpp:352:

kdeguiapplication.moc:12:2: error: #error "The header file 'kdeguiapplication.h'

 doesn't include <QObject>."

  DEP     KDEAction.cpp ...

  DEP     KDEActionPlugin.cpp ...

  DEP     KDEOutputPlugin.cpp ...

  DEP     kdemenu.cpp ...

  DEP     kdemessage.cpp ...

  DEP     daemonthread.cpp ...

  DEP     init.cpp ...

rm kdeguiapplication.moc menudialog.moc

  MOC     kdeguiapplication.moc ...

  MOC     menudialog.moc ...

  DEP     menudialog.cpp ...

In file included from menudialog.cpp:58:

menudialog.moc:12:2: error: #error "The header file 'menudialog.h' doesn't inclu

de <QObject>."

  DEP     kdeguiapplication.cpp ...

In file included from kdeguiapplication.cpp:352:

kdeguiapplication.moc:12:2: error: #error "The header file 'kdeguiapplication.h'

 doesn't include <QObject>."

  DEP     KDEAction.cpp ...

  DEP     KDEActionPlugin.cpp ...

  DEP     KDEOutputPlugin.cpp ...

  DEP     kdemenu.cpp ...

  DEP     kdemessage.cpp ...

rm kdeguiapplication.moc menudialog.moc

  MOC     kdeguiapplication.moc ...

  MOC     menudialog.moc ...

  DEP     menudialog.cpp ...

In file included from menudialog.cpp:58:

menudialog.moc:12:2: error: #error "The header file 'menudialog.h' doesn't inclu

de <QObject>."

  DEP     kdeguiapplication.cpp ...

In file included from kdeguiapplication.cpp:352:

kdeguiapplication.moc:12:2: error: #error "The header file 'kdeguiapplication.h'

 doesn't include <QObject>."

  DEP     KDEAction.cpp ...

  DEP     KDEActionPlugin.cpp ...

  DEP     KDEOutputPlugin.cpp ...

  DEP     kdemenu.cpp ...

  DEP     daemonthread.cpp ...

  DEP     init.cpp ...

rm kdeguiapplication.moc menudialog.moc

  MOC     kdeguiapplication.moc ...

  MOC     menudialog.moc ...

  DEP     menudialog.cpp ...

In file included from menudialog.cpp:58:

menudialog.moc:12:2: error: #error "The header file 'menudialog.h' doesn't inclu

de <QObject>."

  DEP     kdeguiapplication.cpp ...

In file included from kdeguiapplication.cpp:352:

kdeguiapplication.moc:12:2: error: #error "The header file 'kdeguiapplication.h'

 doesn't include <QObject>."

  C++     init.cpp ...

  C++     daemonthread.cpp ...

  C++     kdemessage.cpp ...

  C++     kdemenu.cpp ...

  C++     KDEOutputPlugin.cpp ...

  C++     KDEActionPlugin.cpp ...

  C++     KDEAction.cpp ...

KDEAction.cpp: In member function std::string KDEAction::GetCommand(std::string

&, std::string&):

KDEAction.cpp:30: warning: comparison is always true due to limited range of dat

a type

KDEAction.cpp:36: warning: comparison is always false due to limited range of da

ta type

KDEAction.cpp:42: warning: comparison is always true due to limited range of dat

a type

  C++     kdeguiapplication.cpp ...

In file included from kdeguiapplication.cpp:352:

kdeguiapplication.moc:12:2: error: #error "The header file 'kdeguiapplication.h'

 doesn't include <QObject>."

kdeguiapplication.cpp: In constructor KDEGuiApplication::KDEGuiApplication(int,

 char**):

kdeguiapplication.cpp:62: warning: __base_ctor  is deprecated (declared at /us

r/kde/3.5/include/kapplication.h:205)

kdeguiapplication.moc: At global scope:

kdeguiapplication.moc:39: error: const QMetaObject KDEGuiApplication::staticMet

aObject is not a static member of class KDEGuiApplication

kdeguiapplication.moc:39: error: variable const QMetaObject KDEGuiApplication::

staticMetaObject has initializer but incomplete type

kdeguiapplication.moc:44: error: prototype for const QMetaObject* KDEGuiApplica

tion::metaObject() const does not match any in class KDEGuiApplication

kdeguiapplication.h:40: error: candidate is: virtual QMetaObject* KDEGuiApplicat

ion::metaObject() const

kdeguiapplication.moc:44: error: const QMetaObject* KDEGuiApplication::metaObje

ct() const cannot be overloaded

kdeguiapplication.h:40: error: with virtual QMetaObject* KDEGuiApplication::met

aObject() const

kdeguiapplication.moc: In member function const QMetaObject* KDEGuiApplication:

:metaObject() const:

kdeguiapplication.moc:46: error: cannot convert QMetaObject* (*)() to const Q

MetaObject* in return

kdeguiapplication.moc: At global scope:

kdeguiapplication.moc:49: error: no void* KDEGuiApplication::qt_metacast(const 

char*) member function declared in class KDEGuiApplication

kdeguiapplication.moc: In member function void* KDEGuiApplication::qt_metacast(

const char*):

kdeguiapplication.moc:54: error: qt_metacast is not a member of KApplication

kdeguiapplication.moc: At global scope:

kdeguiapplication.moc:57: error: int KDEGuiApplication::qt_metacall is not a s

tatic member of class KDEGuiApplication

kdeguiapplication.moc:57: error: incomplete type QMetaObject used in nested na

me specifier

kdeguiapplication.moc:57: error: expected primary-expression before int

kdeguiapplication.moc:57: error: expected primary-expression before void

kdeguiapplication.moc:57: error: initializer expression list treated as compound

 expression

kdeguiapplication.moc:58: error: expected , or ; before { token

make[3]: *** [.kdeguiapplication.o] Error 1

rm kdeguiapplication.moc menudialog.moc

make[2]: *** [all] Error 2

make[1]: *** [all] Error 2

make: *** [all] Error 2

```

 :Embarassed:  kd öööö ne wär besser   :Rolling Eyes: 

./configure --prefix=/usr --with-components=base

warum will der trotzdem kde compilieren uaaaahhhhahah

Sich als Firma CHERRY LINUX mit Pinguin als Webegag auf die Tasatur zu pressen ist in dem Fall ja eine Unverschämtheit sondersgleichen.

 :Embarassed:   :Embarassed:   :Embarassed: 

Wahrscheinlich hat denen ihr Endwiggler zu viel Cherry gesoffen

----------

## artbody

Nachdem ich bereits einmal online eine Supportanfrage gestellt habe

- nun meine 2te als Email

an cherry gesandt.

 *Quote:*   

> 
> 
> ./configure --prefix=/usr --with-components=base
> 
> warum will der trotzdem kde compilieren - uaaaahhhhahah - warum überhaupt kde-libs vom ./configure abgefragt werden wunderte mich eh schon
> ...

 

Nun gut so lößt man nicht das zu Grunde liegende Problem

Gnome z.B. bringt ein tool bereits mit, mit welchem man manche der Tasten zur Funktion bringt. Allerdings nur diejenigen, welche der Standartkeybordtreiber kennt...

Somit wäre hier ein ganz einfacher Treiber von Nöten.

Alles andere ist erst mal Schnickschnack und als Extras zu behandeln

Ich hoffe ja dass hier mal einer der Cherryendwiggler reinschaut, wenn schon der Pinguin auf der Tastatur klebt.

(hätte mir für das Geld auch ein billigeres rauslassen sollen)  :Embarassed: 

----------

## kaktuspalme

So, um das Thema mal wieder etwas in die aktuelle zu bringen, mittlerweile gibt es ja schon keyman 1.1 ich habe momentan noch etwas probleme, das zu installieren unter linux, wie haben das andere?

----------

## LarryLeffa

Mahlzeit!

 *kaktuspalme wrote:*   

> So, um das Thema mal wieder etwas in die aktuelle zu bringen, mittlerweile gibt es ja schon keyman 1.1 ich habe momentan noch etwas probleme, das zu installieren unter linux, wie haben das andere?

 

Guck mal: http://support.cherry.de/download/keyman_src11_Rev01.zip

Scheinbar habe sie still und heimlich die Version 1.1 etwas "aufgefrischt".

Mit der "alten" 1.1 ging bei mir noch nicht mal Ansatzweise ./configure, mit der "neuen" 1.1 regt sich jetzt etwas - bis zu weiteren nicht ausführbaren configures ...

Nach einem flotten 

```
find . -name configure | xargs chmod +x
```

 läuft ./configure locker flockig durch; make bastelt sich gerade einen zurecht. Werde Euch das Ergebnis verkünden   :Cool: 

----------

## kaktuspalme

Das wäre ja wirklich cool, thx für die Antwort, dann kann ich endlic mal die Sondertasten benutzen  :Smile: 

So, das ./configure geht jetzt ganz durch.

Jetzt kompilierts auch, komisch finde ich allerdings, was oben erwähtn wird, dsas auf /usr/bin/uic und auf /usr/bin/moc zugegriffen wird.

Kompiliert doch nicth ganz:

make[2]: *** [.setkeymanscancode.o] Fehler 1

 Könnte jetzt noch mehr shcicken, aber generell, könnte mal jemand probieren setkeymanscancode zu kompilieren?

----------

## LarryLeffa

Der Vollständigkeit halber:

Ich vergaß zu erwähnen, dass ich vor ca. 295 Jahren (bei den ersten Tests mit den Sources) ein Verzeichnis /opt/kde3 erstellt und dort hinein folgenden Symlink

```
ln -s /usr/kde/3.5/include /opt/kde3/

ln -s /usr/kde/3.5/lib /opt/kde3/
```

da sonst ./configure im Bereich kde abbrach.

Jetzt läuft ./configure zwar durch, aber ist stelle bei mir fest, dass make im Kreise dreht:

 *Quote:*   

> 
> 
> dsl keyman-1.1 # make
> 
> Entering  server ...
> ...

 

Da hab ich's abgebrochen  :Sad: 

Scheint wohl etwas mit xxx doesn't include <QObject> zu tun zu haben. Was auch immer das ist und wie man es beheben mag   :Rolling Eyes: 

 *Quote:*   

> Kompiliert doch nicth ganz:
> 
> make[2]: *** [.setkeymanscancode.o] Fehler 1

 

Nanu? Soweit komme ich gar nicht!

EDIT:

Das Problem mit <QObject> sprach tek0 bereits an...mal sehen...

----------

## LarryLeffa

Zum <QObject> Problem:

Ich habe gerade gesehen, dass man dem ./configure unter server/plugins/kde/ (jetzt?) ein --with-qt-moc mit auf den Weg geben kann. Also flux auf der root ein neues 

```
./configure --with-qt-moc=/usr/qt/3/bin/moc
```

 eingegeben und

```
dsl keyman-1.1 # make

Entering  server ...

Entering  src ...

Entering  locale ...

make[3]: Für das Ziel »all« ist nichts zu tun.

Leaving  locale

Leaving  src

Entering  plugins ...

Entering  kde ...

  DEP     menudialog.cpp ...

In Datei, eingefügt von menudialog.cpp:67:

menudialog.moc:12:2: Fehler: #error "The header file 'menudialog.h' doesn't include <QObject>."

distcc[20626] ERROR: compile (null) on localhost failed

  DEP     kdeguiapplication.cpp ...

In Datei, eingefügt von kdeguiapplication.cpp:357:

kdeguiapplication.moc:12:2: Fehler: #error "The header file 'kdeguiapplication.h' doesn't include <QObject>."

distcc[20630] ERROR: compile (null) on localhost failed

  C++     kdeguiapplication.cpp ...

distcc[20635] ERROR: compile (null) on localhost failed

In Datei, eingefügt von kdeguiapplication.cpp:357:

kdeguiapplication.moc:12:2: Fehler: #error "The header file 'kdeguiapplication.h' doesn't include <QObject>."

In Datei, eingefügt von kdeguiapplication.cpp:357:

kdeguiapplication.moc:12:2: Fehler: #error "The header file 'kdeguiapplication.h' doesn't include <QObject>."

kdeguiapplication.cpp: In constructor »KDEGuiApplication::KDEGuiApplication(int, char**)«:

kdeguiapplication.cpp:62: Warnung: »__base_ctor « ist veraltet (deklariert bei /opt/kde3/include/kapplication.h:205)

kdeguiapplication.moc: At global scope:

kdeguiapplication.moc:39: Fehler: »const QMetaObject KDEGuiApplication::staticMetaObject« ist kein statisches Element von »class KDEGuiApplication«

kdeguiapplication.moc:39: Fehler: Variable »const QMetaObject KDEGuiApplication::staticMetaObject« hat Initialisierung, aber unvollständigen Typ

kdeguiapplication.moc:44: Fehler: Prototyp für »const QMetaObject* KDEGuiApplication::metaObject() const« passt zu nichts in Klasse »KDEGuiApplication«

kdeguiapplication.h:40: Fehler: Kandidat ist: virtual QMetaObject* KDEGuiApplication::metaObject() const

kdeguiapplication.moc:44: Fehler: »const QMetaObject* KDEGuiApplication::metaObject() const« kann nicht überladen werden

kdeguiapplication.h:40: Fehler: mit »virtual QMetaObject* KDEGuiApplication::metaObject() const«

kdeguiapplication.moc: In member function »const QMetaObject* KDEGuiApplication::metaObject() const«:

kdeguiapplication.moc:46: Fehler: »QMetaObject* (*)()« kann nicht nach »const QMetaObject*« in return umgewandelt werden

kdeguiapplication.moc: At global scope:

kdeguiapplication.moc:49: Fehler: keine Elementfunktion »void* KDEGuiApplication::qt_metacast(const char*)« in Klasse »KDEGuiApplication« deklariert

kdeguiapplication.moc: In member function »void* KDEGuiApplication::qt_metacast(const char*)«:

kdeguiapplication.moc:54: Fehler: »qt_metacast« ist kein Element von »KApplication«

kdeguiapplication.moc: At global scope:

kdeguiapplication.moc:57: Fehler: »int KDEGuiApplication::qt_metacall« ist kein statisches Element von »class KDEGuiApplication«

kdeguiapplication.moc:57: Fehler: unvollständiger Typ »QMetaObject« in geschachtelter Namensangabe verwendet

kdeguiapplication.moc:57: Fehler: expected primary-expression before »int«

kdeguiapplication.moc:57: Fehler: expected primary-expression before »void«

kdeguiapplication.moc:57: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt

kdeguiapplication.moc:58: Fehler: expected »,« or »;« before »{« token

distcc[20634] ERROR: compile kdeguiapplication.cpp on localhost failed

make[3]: *** [.kdeguiapplication.o] Fehler 1

make[2]: *** [all] Fehler 2

make[1]: *** [all] Fehler 2

make: *** [all] Fehler 2
```

zurück bekommen.

Tolle Wurst. Jetzt sind wir ungefähr wieder da, wo tek0 auch schon innehielt...

Ich habe ja schon so einige "Fremd-Sources" unter Gentoo problemlos kompilieren können, aber sowas verqueres ist mir auch noch nicht untergekommen. Da stelle ich mir die Frage, was die Jungs von Cherry da bloß zusammengestrickt haben?

----------

## kaktuspalme

JO, bin auch gerade dort, wo make immer wieder von vorne anfängt, weiss momentan einfach net, was ich machen soll, vielleicht hat ja noch wer anderes ne idee, ne idee von mir wäre es die Tasten mit ner andere Software zu nutzen, ob das geht, ist die Frage, bis jetzt war ich zu faul es auszuprobieren.

----------

## Greisby

Lösung für MOC fehler: config/make.tmpl editieren

 *Quote:*   

> %.moc: %.$(1) $(2)
> 
>         @echo "  MOC     $$@ ..."
> 
>         @moc  -o $$@ $$<
> ...

 

durch

 *Quote:*   

> %.moc: %.$(1) $(2)
> 
>         @echo "  MOC     $$@ ..."
> 
>         /usr/qt/3/bin/moc  -o $$@ $$<
> ...

 

ersetzen.

Aber... es stürzt hier ab :

 *Quote:*   

>   C++     setkeymanscancode.cpp ...
> 
> setkeymanscancode.cpp: In function 'bool setKeyManScanCodeCable(int, int, int)':
> 
> setkeymanscancode.cpp:113: error: 'struct usbdevfs_ctrltransfer' has no member named 'requesttype'
> ...

 

devfs  :Sad: 

Wahrscheinlich kann man es nicht mehr kompilieren.

----------

## Greisby

Also... bin trotzdem weiter gekommen. Einfach setkeymanscancode entfernen :

 *Quote:*   

> ./configure --with-components=server,inputtunnel,ksystray,kkeymanconfig,gsystray,gkeymanconfig && make

 

Und danach noch config/make.tmpl editieren, da uic auch falsch ist :

 *Quote:*   

> $(1).h: $(1).ui $(2)
> 
>         @echo "  UIC     $$@ ..."
> 
>         @uic $(1).ui -o $$@
> ...

 

durch

 *Quote:*   

> $(1).h: $(1).ui $(2)
> 
>         @echo "  UIC     $$@ ..."
> 
>         /usr/qt/3/bin/uic $(1).ui -o $$@
> ...

 

ersetzen.

Ich bin ein bißchen weiter gekommen, aber jetzt habe Probleme mit Gnome:

 *Quote:*   

> Entering  gsystray ...
> 
> make  all-recursive
> 
> Making all in m4
> ...

 

Also, da ich Gnome sowieso nicht benutze suche ich nicht weiter.

(ich habe trotzdem ohne gkeymanconfig probiert, gsystray kompiliert. Also »nur« ein gsystray Problem...)

Öhm... jetzt muß ich mir ein ebuild machen um mein System nicht zu versauern.

----------

## kaktuspalme

Das heisst, du hast es geschafft es fertig zu kompilieren? das wÃ¤ren ja mal tolle neuigkeiten.

Das probiere ich dann auch gleich mal aus.

----------

## artbody

Ich hab mal ne Beschwerde zum Thema an Cherry geschickt

 *Quote:*   

> 2 Jahre warten auf funktionierende Software ist genug finden sie das nicht auch.
> 
> Siehe hierzu z.B.
> 
> Produktbewertung:
> ...

 

mal sehen ob sich was tut

----------

## artbody

misterjack:

 *Quote:*   

> Da hätte mal jemand das Wiki aktualisieren können, 

 

http://de.gentoo-wiki.com/Cherry_CyMotion_Master_Linux

Xmodmap funkltioniert bei mir

http://de.gentoo-wiki.com/Multimediatasten

----------

## LarryLeffa

*gähn*

Jetzt, da kalt und windig, mache ich mich mal aufs neue ans Werk.

Ein paar kleine Neuigkeiten gibts zu vermelden:

- Das Gemecker über <QObject> liegt wohl an QT4. Wenn ich QT4 temporär entferne, jammert make nicht mehr (siehe hierzu auch weiter unten)

- Habe einen Artikel gefunden, bei dem Cherry mit dem Keyboard auch nicht wirklich gut wegkommt. Cherry versprach schon damals Besserung. Das war 03/2005. http://www.linux-user.de/ausgabe/2005/03/083-cherry/index.html

- Auf http://sourceforge.net/project/showfiles.php?group_id=100217 bin auf einen erst kürzlich geänderten Keyman gestoßen. Aber auch hier nix neues oder verbessertes zu vermelden

- Einen interessanten Artikel auf http://oskar.twoday.net/stories/1351296 gefunden. Schaut's Euch halt mal an; die dort angegebenen Patches funzen aber nicht mehr ordentlich, da sich wohl zwischenzeitlich die Pfade geändert haben. Mit ein klitzeklein bisschen Handarbeit lassen sich die tatsächlich notwendigen  Änderungen aber auch so durchführen.

So. Stand der Dinge bei mir ist, dass bei entferntem QT4 und weglassen der Gnome-Dinge bei keyman dieser sauber durchkompiliert.

In der make.conf PKGDIR=/tmp setzen, dann

```
quickpkg qt                   # QT4 sichern (benötigt gentoolkit)

emerge -C =x11-libs/qt-4*     # QT4 rauswerfen

export CXXFLAGS="-fPIC"       # NUR BEI X86_64

ln -s /usr/kde/3.5/ /opt/kde3 # nicht vergessen, sonst nix finden

cd /tmp/keyman                # oder wo auch immer

./configure --prefix=/usr --with-components=server,inputtunnel,ksystray,kkeymanconfig && make && make install

emerge -k =x11-libs/qt-4*     # wenn fertig, QT4 wieder hinzufügen
```

Funktionieren tut die Sch...-Software dann zwar immer noch nicht, da beim Aufruf von kkeymansystray dieses sich ganz schnell wieder verabschiedet.

Was zum Henker kann denn jetzt noch fehlen?   :Evil or Very Mad: 

-

Larry

----------

## ossi1967

 *LarryLeffa wrote:*   

> Einen interessanten Artikel auf http://oskar.twoday.net/stories/1351296 gefunden. Schaut's Euch halt mal an; die dort angegebenen Patches funzen aber nicht mehr ordentlich, da sich wohl zwischenzeitlich die Pfade geändert haben. Mit ein klitzeklein bisschen Handarbeit lassen sich die tatsächlich notwendigen  Änderungen aber auch so durchführen.

 

Hi, ich hab den Thread hier in den Referrers meines Blogs gefunden; der verlinkte Blog-Beitrag bezieht sich auf die 6.x-Versionen von Xorg. Hier is noch was aktuellers über die Änderungen nach dem 7er-Update:

http://oskar.twoday.net/stories/2368379/

(Ich bin irgendwie überrascht, daß meine damals gezimmerte Notlösung immer noch so oft in Anspruch genommen wird (Armuntszeugnis für Cherry). Es ist halt so eine "works for me"-Sache... mit all ihren Nachteilen.)

----------

