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

[email protected] (Brian Stumm) Mon, 15 Feb 2010 20:24:34 -0800
Newsgroups php.gtk.general
Message-ID <[email protected]>
It appears that in php-gtk1 the GDK_KEY_Shift_L and GDK_KEY_Shift_R
are both equivalent to keyval 65505.

I've decided the key repeat issue is a non-issue. It doesn't appear to
overflow the buffer and cause the annoying internal PC speaker
beeping. The reason for wanting to use Shift is that key does not
repeat. But as I said, I believe it is a non-issue.

If you want to see what I mean set up a key-pressed and key-released
situation. Pressing most keys and holding will result in repeated
"key-pressed" events but only one key-release" events. Shift, ctrl and
a few others only register one key-pressed no matter how long you hold
it down. F12, etc also register multiple key-pressed events when held
down.

On a side note, how many tab keys does your keyboard have?

On Mon, Feb 15, 2010 at 7:24 PM, Madeleine D. <[email protected]> wrote:
>
>
> 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)
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>>
>



-- 
Brian Stumm
ETS Energy Technology Systems, Inc.
http://EnergyTechnologySystems.com
[email protected]
509-276-2015 (PH)
509-276-2016 (FX)