Re: [PHP-GTK] Re: Key Press php-gtk1

[email protected] ("Madeleine D.") Mon, 15 Feb 2010 19:24:23 -0800
Newsgroups php.gtk.general
Message-ID <[email protected]>

Brian -

I've never had to deal with the repeat issue, but for the selected keys, 
I have two thoughts.

You should be able to use the name keyvals of KEY_SHIFT_L and 
KEY_SHIFT_R.  We did something similar for the tab keys a few years back.

If not, what about the Function Keys, as in F1 or F12 ??

hth,
Madeleine D.


Brian Stumm wrote:
> Thanks to Madeleine for pointing out my error, I can now detect key
> release as well as key press. But I now have a new problem and looking
> for any ideas anyone might have.
>
> I must choose two keys on the keyboard that cannot be pressed using
> only one hand. Most keys fall into the "auto repeat" category where
> while holding the key down for long periods it will repeat the "press"
> action. I'm sure you've all experienced the annoying beeping from a
> computer with a key that is stuck down for whatever reason. I decided
> I could use the two shift keys as my two handed solution, however both
> shift keys use the value 65505 and I cannot determine that both shift
> keys are depressed. Using a combination of ctrl and shift is out
> because you can press them both using only one hand.
>
> Is there a way to treat the two shift or ctrl keys separate? Is there
> a way to disable auto-repeat for the keyboard (temporarily) via
> php-gtk? Any other ideas?
>
> Thanks.
>
> On Mon, Feb 15, 2010 at 12:50 PM, Madeleine D. <[email protected]> wrote:
>   
>> Brian -
>>
>> You need to add 'add-events', after the realize, as in:
>>
>> $alert_window->add_events(GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
>>
>>
>> The key press mask is probably not needed, but I always add it anyway.
>>
>>
>> Madeleine D.
>>
>>
>>
>>
>>
>> Brian Stumm wrote:
>>     
>>> Not sure if messages are going through or not but...
>>>
>>> I've discovered the key-press-event and key-release-event and while
>>> key-press is working for me, the key-release does not seem to work.
>>>
>>> Here is a snippet from my code:
>>>
>>> $alert_window = &new GtkWindow(GTK_WINDOW_DIALOG);
>>> $alert_window->connect('delete-event', 'hide_window');
>>> $alert_window->set_border_width(0);
>>> $alert_window->set_policy(0, 0, 0);
>>> $alert_window->set_title('Notice!');
>>> $alert_window->set_name('AlertWindow');
>>> $alert_window->set_usize(400,430);
>>> $alert_window->realize();
>>> $alert_window->set_position(GTK_WIN_POS_CENTER);
>>> $alert_window->connect('key-press-event', 'onKeyPress');
>>> $alert_window->connect('key-release-event', 'onKeyRelease');
>>> -----------------8<--SNIP
>>>
>>> /***** ONKEYPRESS/RELEASE() *****/
>>> function onKeyPress($widget, $event) {
>>>  global $righthand, $lefthand;
>>>  echo "Pressed: " . $event->keyval;
>>>  return true;
>>> }
>>> function onKeyRelease($widget, $event) {
>>>  global $righthand, $lefthand;
>>>  echo "Released: " . $event->keyval;
>>>  return true;
>>> }
>>>
>>> Key Press echo's Pressed and a value (numeric) but the key release
>>> does nothing. Am I doing something wrong?
>>>
>>>
>>> On Mon, Feb 15, 2010 at 6:01 AM, Brian Stumm
>>> <[email protected]> wrote:
>>>
>>>       
>>>> First, I am still using php-gtk1. I'd like to make the move to v2 but
>>>> do not have the luxury right now.
>>>>
>>>> I am looking to detect when keys are pressed (and held down) in
>>>> php-gtk version 1. This is for a "two hand, no tie down" safety
>>>> feature on our machines. Access to our machines is made possible by
>>>> lifting the top of the machine using air cylinders. The air cylinders
>>>> are controlled via an electric valve. To lower the top I need to
>>>> require the user to press two keys on opposite sides of the keyboard
>>>> and keep them depressed until the top closes completely. If they
>>>> release before the top closes completely the top should go back up.
>>>>
>>>> Is there a way I can monitor key press and key release in version 1 of
>>>> php-gtk?
>>>>
>>>> --
>>>> Brian Stumm
>>>> ETS Energy Technology Systems, Inc.
>>>> http://EnergyTechnologySystems.com
>>>> [email protected]
>>>> 509-276-2015 (PH)
>>>> 509-276-2016 (FX)
>>>>
>>>>
>>>>         
>>>
>>>
>>>       
>
>
>
>