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)