2015-07-09 12 views
5

Ich versuche, die einfache Kivy-Anwendung auf OSX ausgeführt.CEFPython in Kivy App auf Mac einbinden - Tastatureingabe funktioniert nicht

Zunächst scheiterte CEF bei der Initialisierung. Der Ausgang war:

igskcicgltgm047:Kivy_Test dslosky$ kivy cefTest4.py 
[INFO ] [Logger  ] Record log in /Applications/Kivy.app/Contents/Resources/.kivy/logs/kivy_15-07-09_18.txt 
[INFO ] [Kivy  ] v1.9.0 
[INFO ] [Python  ] v2.7.6 (default, Sep 9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] 
[INFO ] [Factory  ] 173 symbols loaded 
[INFO ] [Image  ] Providers: img_tex, img_imageio, img_dds, img_gif, img_sdl2 (img_pil, img_ffpyplayer ignored) 
[INFO ] [OSC   ] using <multiprocessing> for socket 
[INFO ] [Window  ] Provider: sdl2 
[INFO ] [GL   ] OpenGL version <2.1 NVIDIA-10.2.1 310.41.15f01> 
[INFO ] [GL   ] OpenGL vendor <NVIDIA Corporation> 
[INFO ] [GL   ] OpenGL renderer <NVIDIA GeForce GT 750M OpenGL Engine> 
[INFO ] [GL   ] OpenGL parsed version: 2, 1 
[INFO ] [GL   ] Shading version <1.20> 
[INFO ] [GL   ] Texture max size <16384> 
[INFO ] [GL   ] Texture max units <16> 
[INFO ] [Window  ] auto add sdl2 input provider 
[INFO ] [Window  ] virtual keyboard not allowed, single mode, not docked 
[INFO ] [Text  ] Provider: sdl2 
[INFO ] [Base  ] Start application main loop 
[INFO ] [GL   ] NPOT texture support is available 
[CEF Python] Initialize() called 
[CEF Python] CefExecuteProcess(): exitCode = -1 
[CEF Python] CefInitialize() 
2015-07-09 12:20:09.283 python[4355:122290] Internals of CFAllocator not known; out-of-memory failures via CFAllocator will not result in termination. http://crbug.com/45650 
[CEF Python] App_OnBeforeCommandLineProcessing_BrowserProcess() 
[CEF Python] Command line string for the browser process: --browser-subprocess-path=/Applications/Kivy.app/Contents/Resources/venv/lib/python2.7/site-packages/cefpython3/subprocess --lang=en-US --log-file=debug.log --log-severity=info --enable-release-dcheck --resources-dir-path=/Applications/Kivy.app/Contents/Resources/venv/lib/python2.7/site-packages/cefpython3 --locales-dir-path=/Applications/Kivy.app/Contents/Resources/venv/lib/python2.7/site-packages/cefpython3/locales --remote-debugging-port=51420 --no-sandbox 
[0709/122009:WARNING:resource_bundle.cc(269)] locale_file_path.empty() 
[0709/122009:FATAL:main_delegate.cc(449)] Check failed: !loaded_locale.empty(). Locale could not be found for en-US 
Trace/BPT trap: 5 

ich eine Diskussion gefunden here, die manuell die local_pak-Flags vorgeschlagen, diesen Fehler zu vermeiden. Ich habe die folgenden Änderungen an dem Beispielcode beginnend in Zeile 150 vorgenommen:

# Command line switches set programmatically 
g_switches = { 
    "locale_pak": cefpython.GetModuleDirectory() 
    +"/Resources/en.lproj/locale.pak", 
    } 

#init CEF 
cefpython.Initialize(settings, g_switches) 

Dies löste mein Initialisierungsproblem! Der CEF-Browser wird angezeigt, reagiert jedoch nicht auf Eingaben von meiner Tastatur. Ich bin auch nicht in der Lage meines Trackpad blättern verwenden, obwohl ich bin in der Lage, es zu benutzen Links zu klicken.

gab ich den ganzen Hintergrund zu diesem Thema im Fall, dass ich die falsche Route Flagge durch eine Änderung der locale_pak nahm.

Ich verwende:

Kivy v1.9.0 
Python v2.7.6 
cefpython3 v31.2 

Ich sollte auch erwähnen, dass ich in der Lage bin das wxpython.py Beispiel auszuführen, die mit cefpython3 ohne Problem verpackt ist.

Jede Hilfe würde sehr geschätzt werden!

Antwort

1

Das Problem ist, dass in der kivy_.py Beispiel Schlüsselcodes nur speziell für Linux übersetzt wurden, finden Sie in der translate_to_cef_keycode() Funktion:

https://code.google.com/p/cefpython/source/browse/cefpython/cef3/linux/binaries_64bit/kivy_.py?r=5cf79c6eec11#355

Unterstützung für Windows/OSX Tastencodes muss noch sein hinzugefügt.

+0

Danke für Ihre Hilfe @Czarek. Kennst du eine Arbeit dafür? Oder kennen Sie ein Kivy/CEFPython-Beispiel, das auf Mac läuft? Weißt du auch, warum das wxPython-Beispiel keine Schlüsselcodes benötigt? – dslosky

+0

@dslosky die Abhilfe auf Übersetzung Codes zu arbeiten, sollte es eine Stunde Arbeit sein. Das wxpython-Beispiel wird im Fenstermodus ausgeführt, und alles wird automatisch erledigt. Kivy läuft im OSR-Modus und erfordert den Schritt des Sendens von Schlüsselereignissen an CEF durch den Aufruf von SendKeyEvent. –

+0

@dslosky eine print-Anweisung in dieser Funktion hinzufügen und alle Tasten auf der Tastatur zu sehen, gehen Sie durch, was der Code ist. Wenn Sie diese Arbeit machen, senden Sie bitte einen Patch in den Cefpython Issue Tracker. –

Verwandte Themen