From: hreba <f_hreba@yahoo.com.br>
Subject: Re: GTK key-press-event
Date: Wed, 2 Nov 2016 17:26:18 +0100
Date: 2016-11-02T17:26:18+01:00 [thread overview]
Message-ID: <e7uid9Ft0vfU1@mid.individual.net> (raw)
In-Reply-To: <nvccjh$mnr$1@gioia.aioe.org>
On 11/02/2016 10:45 AM, Dmitry A. Kazakov wrote:
> On 02/11/2016 10:19, hreba wrote:
>
>> I am trying to write a key press handler with user data. I know how to
>> connect the handler and that its type is
>>
>> type Handler is access procedure
>> Widget : access Widget_Type'Class;
>> Params : Glib.Values.GValues;
>> User_Data : User_Type);
>
> There is a typed marshaller for handing this type of events:
>
> type Handler is access function
> ( Widget : access Gtk_Widget_Record'Class;
> Event : Gdk_Event;
> User_Data : User_Type
> ) return Boolean;
>
>> What I don't know is how to get the key which was pressed.
>
> The event parameter contains input event type and if that was a keyboard
> event, the key pressed/released:
>
> case Get_Event_Type (Event) is
> when Key_Press => -- This a key-press event
> case Get_Key_Val (Event) is
> when GDK_Insert => -- This is INSERT key
> ...
>
>> A few months ago I had a similar problem where I needed a Cairo Graphics
>> context, and I got it from the parameter list "Params" , selecting the
>> first component with Glib.Values.Nth(), and converting that with
>> Cairo.Get_Context.
>
> You could use Nth () but there is no reason doing that. And for this
> type of event there is a return value.
>
> Note that key press events must be unmasked to be emitted. Then some
> widgets never emit these events anyway. They must be wrapped into an
> "event-box" which itself is invisible but emits the events.
>
It works now. My widget is a DrawingArea. In addition to unmasking the
key press event, the "can focus" flag must be set. An event box was not
necessary.
Thanks for your help.
--
Frank Hrebabetzky +49 / 6355 / 989 5070
prev parent reply other threads:[~2016-11-02 16:26 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-02 9:19 GTK key-press-event hreba
2016-11-02 9:45 ` Dmitry A. Kazakov
2016-11-02 16:26 ` hreba [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox