<div dir="ltr"><div>Hi, David.<br><br>Thanks for the speedy reply.<br><br>On looking closer, it appears to me that Qt doesn't exactly provide keysym strings.  there is a .text() function, but that's already being used for key. Using it for keysym as well, would work for the 'a' to 'z' keys, but not for keys such as 'Escape'.<br>
<br>Now, I see a qt_key_to_key_sym(Qt::Key) function defined in GUISupport/Qt/QVTKInteractorAdapter.cxx.  This appears to do exactly what we want (converting a Qt key to a vtk keysym), but I'm not clear on how to call it from python.<br>
<br></div>If you can provide a hint to get me unstuck here, I'd be happy to provide that patch.<br><br>Thanks again.<br><br>Greg<br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 28, 2014 at 3:14 PM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Greg,<br>
<br>
I looked through QVTKRenderWindowInteractor.py and discovered<br>
this in its keyPressEvent() method:<br>
<br>
  self._Iren.SetEventInformationFlipY(self.__saveX, self.__saveY,<br>
        ctrl, shift, key, 0, None)<br>
<br>
Compare this with the arguments that the method expects<br>
(in vtkRenderWindowInteractor.h):<br>
<br>
  void SetEventInformationFlipY(int x, int y, int ctrl, int shift,<br>
        char keycode, int repeatcount, const char* keysym)<br>
<br>
As you can see, the author of this class was a bit lazy and passed<br>
None as the keysym, instead of getting the keysym from Qt and<br>
then passing it through to VTK.  But to be fair, this code was written<br>
twelve years ago and maybe keysyms weren't the highest priority.<br>
<br>
If you can patch QVTKRenderWindowInteractor.py so that it passes<br>
the keysym strings from Qt to "self._Iren", then I can add your patch<br>
to the VTK master.<br>
<br>
 - David<br>
<br>
<br>
On Thu, Aug 28, 2014 at 3:49 PM, Greg Schussman<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:greg.schussman@gmail.com">greg.schussman@gmail.com</a>> wrote:<br>
> Oops.<br>
><br>
> I forgot to mention that I'm using python-2.6, vtk-5.10.1, and qt-4.6.1.<br>
><br>
> Greg<br>
><br>
><br>
><br>
> On Thu, Aug 28, 2014 at 2:14 PM, Greg Schussman <<a href="mailto:greg.schussman@gmail.com">greg.schussman@gmail.com</a>><br>
> wrote:<br>
>><br>
>> Hi.<br>
>><br>
>> I've got a working python vtk demo that uses a vtkRenderWindowInteractor,<br>
>> with the style set to vtkInteractorStyleTrackballCamera.  I run into a<br>
>> problem when I try to embed this in Qt.<br>
>><br>
>> I use interactor.AddObserver('KeyPressEvent', key_handler) to see key<br>
>> presses and act on them.<br>
>><br>
>> In my key_handler function, I query the interactor (passed in as an<br>
>> argument to key_handler) about which key was pressed.<br>
>><br>
>> In my working example:<br>
>><br>
>> when I press 'b',<br>
>> interactor.GetKeyCode() gives 'b', and<br>
>> interactor.GetKeySym() give 'b'.<br>
>><br>
>> when I press esc,<br>
>> interactor.GetKeyCode() gives an unprintable character, and<br>
>> interactor.GetKeySym() gives 'Escape'.<br>
>><br>
>> In my non-working Qt example, I use QVTKRenderWindowInteractor(frame)<br>
>> instead (copied from the VTK/Examples/Python/Widgets/EmbedPyQt example).<br>
>><br>
>> now, when I press 'b',<br>
>> interactor.GetKeyCode() gives 'b', and<br>
>> interactor.GetKeySym() gives None.<br>
>><br>
>> when I press esc,<br>
>> interactor.GetKeyCode() gives an unprintable character, and<br>
>> interactor.GetKeySym() gives None.<br>
>><br>
>> So, originally, I used GetKeySym(), but when switching to the<br>
>> QVTKRenderWindowInteractor, that stopped working (always returning None).<br>
>> I'm concerned about possible inconsistencies from one linux machine to<br>
>> another when using GetKeyCode, so I'm reluctant to use it.<br>
>><br>
>> What should I do here?  Is there any reason why the<br>
>> QTVTKRenderWindowInteractor would be giving None for the KeySym?<br>
>><br>
>> For what it's worth, my demo code runs both with regular vtk and embedded<br>
>> in pyqt, and the mouse interaction is fine, and the '3' option does toggle<br>
>> stereo in both cases.  But for some reason my observer can see the key with<br>
>> GetKeySym in regular vtk mode, but not in embedded pyqt mode.<br>
>><br>
>> Thanks in advance for any help or suggestions.<br>
>><br>
>> Greg<br>
</div></div></blockquote></div><br></div>