On Win9x, the keyboard state returned by GetKeyboardState() doesn't

2003-07-27  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkevents-win32.c (build_key_event_state): On Win9x,
	the keyboard state returned by GetKeyboardState() doesn't
	distinguish between the left and right Control and Alt keys. Thus
	we cannot detect AltGr (which is supposed to be left Control +
	right Alt) the same way as on NT-based systems, but have to accept
	either Control + either Alt as AltGr.
This commit is contained in:
Tor Lillqvist 2003-07-27 21:58:44 +00:00 committed by Tor Lillqvist
parent 5473dbef79
commit 165375eb5c
6 changed files with 91 additions and 21 deletions

View File

@ -1,10 +1,21 @@
2003-07-27 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (build_key_event_state): On Win9x,
the keyboard state returned by GetKeyboardState() doesn't
distinguish between the left and right Control and Alt keys. Thus
we cannot detect AltGr (which is supposed to be left Control +
right Alt) the same way as on NT-based systems, but have to accept
either Control + either Alt as AltGr.
2003-07-27 Matthias Clasen <maclas@gmx.de>
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach): Fix function name in
warning message. (#118156, Tim-Philipp Müller)
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach):
Fix function name in warning message. (#118156, Tim-Philipp
Müller)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property): is-expander and is-expanded are
boolean properties, not ints. (#118359, Josh Parsons)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property):
is-expander and is-expanded are boolean properties, not ints.
(#118359, Josh Parsons)
Sat Jul 26 15:21:27 2003 Soeren Sandmann <sandmann@daimi.au.dk>

View File

@ -1,10 +1,21 @@
2003-07-27 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (build_key_event_state): On Win9x,
the keyboard state returned by GetKeyboardState() doesn't
distinguish between the left and right Control and Alt keys. Thus
we cannot detect AltGr (which is supposed to be left Control +
right Alt) the same way as on NT-based systems, but have to accept
either Control + either Alt as AltGr.
2003-07-27 Matthias Clasen <maclas@gmx.de>
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach): Fix function name in
warning message. (#118156, Tim-Philipp Müller)
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach):
Fix function name in warning message. (#118156, Tim-Philipp
Müller)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property): is-expander and is-expanded are
boolean properties, not ints. (#118359, Josh Parsons)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property):
is-expander and is-expanded are boolean properties, not ints.
(#118359, Josh Parsons)
Sat Jul 26 15:21:27 2003 Soeren Sandmann <sandmann@daimi.au.dk>

View File

@ -1,10 +1,21 @@
2003-07-27 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (build_key_event_state): On Win9x,
the keyboard state returned by GetKeyboardState() doesn't
distinguish between the left and right Control and Alt keys. Thus
we cannot detect AltGr (which is supposed to be left Control +
right Alt) the same way as on NT-based systems, but have to accept
either Control + either Alt as AltGr.
2003-07-27 Matthias Clasen <maclas@gmx.de>
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach): Fix function name in
warning message. (#118156, Tim-Philipp Müller)
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach):
Fix function name in warning message. (#118156, Tim-Philipp
Müller)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property): is-expander and is-expanded are
boolean properties, not ints. (#118359, Josh Parsons)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property):
is-expander and is-expanded are boolean properties, not ints.
(#118359, Josh Parsons)
Sat Jul 26 15:21:27 2003 Soeren Sandmann <sandmann@daimi.au.dk>

View File

@ -1,10 +1,21 @@
2003-07-27 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (build_key_event_state): On Win9x,
the keyboard state returned by GetKeyboardState() doesn't
distinguish between the left and right Control and Alt keys. Thus
we cannot detect AltGr (which is supposed to be left Control +
right Alt) the same way as on NT-based systems, but have to accept
either Control + either Alt as AltGr.
2003-07-27 Matthias Clasen <maclas@gmx.de>
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach): Fix function name in
warning message. (#118156, Tim-Philipp Müller)
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach):
Fix function name in warning message. (#118156, Tim-Philipp
Müller)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property): is-expander and is-expanded are
boolean properties, not ints. (#118359, Josh Parsons)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property):
is-expander and is-expanded are boolean properties, not ints.
(#118359, Josh Parsons)
Sat Jul 26 15:21:27 2003 Soeren Sandmann <sandmann@daimi.au.dk>

View File

@ -1,10 +1,21 @@
2003-07-27 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (build_key_event_state): On Win9x,
the keyboard state returned by GetKeyboardState() doesn't
distinguish between the left and right Control and Alt keys. Thus
we cannot detect AltGr (which is supposed to be left Control +
right Alt) the same way as on NT-based systems, but have to accept
either Control + either Alt as AltGr.
2003-07-27 Matthias Clasen <maclas@gmx.de>
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach): Fix function name in
warning message. (#118156, Tim-Philipp Müller)
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach):
Fix function name in warning message. (#118156, Tim-Philipp
Müller)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property): is-expander and is-expanded are
boolean properties, not ints. (#118359, Josh Parsons)
* gtk/gtkcellrenderer.c (gtk_cell_renderer_get_property):
is-expander and is-expanded are boolean properties, not ints.
(#118359, Josh Parsons)
Sat Jul 26 15:21:27 2003 Soeren Sandmann <sandmann@daimi.au.dk>

View File

@ -754,6 +754,21 @@ build_key_event_state (GdkEvent *event,
if (key_state[VK_CAPITAL] & 0x01)
event->key.state |= GDK_LOCK_MASK;
/* Win9x doesn't distinguish between left and right Control and Alt
* in the keyboard state as returned by GetKeyboardState(), so we
* have to punt, and accept either Control + either Alt to be AltGr.
*
* Alternatively, we could have some state saved when the Control
* and Alt keys messages come in, as the KF_EXTENDED bit in lParam
* does indicate correctly whether it is the right Control or Alt
* key. But that would be a bit messy.
*/
if (!IS_WIN_NT () &&
_gdk_keyboard_has_altgr &&
key_state[VK_CONTROL] & 0x80 &&
key_state[VK_MENU] & 0x80)
key_state[VK_LCONTROL] = key_state[VK_RMENU] = 0x80;
if (_gdk_keyboard_has_altgr &&
(key_state[VK_LCONTROL] & 0x80) &&
(key_state[VK_RMENU] & 0x80))
@ -2071,7 +2086,7 @@ gdk_event_translate (GdkDisplay *display,
API_CALL (GetKeyboardState, (key_state));
/* g_print ("ctrl:%#x lctrl:%#x rctrl:%#x alt:%#x lalt:%#x ralt:%#x\n", key_state[VK_CONTROL], key_state[VK_LCONTROL], key_state[VK_RCONTROL], key_state[VK_MENU], key_state[VK_LMENU], key_state[VK_RMENU]); */
/* g_print ("ctrl:%02x lctrl:%02x rctrl:%02x alt:%02x lalt:%02x ralt:%02x\n", key_state[VK_CONTROL], key_state[VK_LCONTROL], key_state[VK_RCONTROL], key_state[VK_MENU], key_state[VK_LMENU], key_state[VK_RMENU]); */
build_key_event_state (event, key_state);