changeset 3739:62bca1a87542

6526932 shift key press is buffered by kernel driver and not sent to X immediately
author qz150045
date Wed, 28 Feb 2007 22:31:55 -0800
parents 087c66d22b01
children 49e8b86bee75
files usr/src/uts/common/io/kbtrans/kbtrans_streams.c
diffstat 1 files changed, 3 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/kbtrans/kbtrans_streams.c	Wed Feb 28 22:15:26 2007 -0800
+++ b/usr/src/uts/common/io/kbtrans/kbtrans_streams.c	Wed Feb 28 22:31:55 2007 -0800
@@ -463,15 +463,13 @@
 				upper->kbtrans_streams_abort1_key = key;
 				return;
 			}
-
+			/* Shift key needs to be sent to upper immediately */
 			if (key == (kbtrans_key_t)kp->k_newabort1 ||
 			    key == (kbtrans_key_t)kp->k_newabort1a) {
 				upper->kbtrans_streams_abort_state =
 					NEW_ABORT_ABORT1_RECEIVED;
 				upper->kbtrans_streams_new_abort1_key = key;
-				return;
 			}
-
 			break;
 		case ABORT_ABORT1_RECEIVED:
 			upper->kbtrans_streams_abort_state = ABORT_NORMAL;
@@ -491,12 +489,11 @@
 			if (state == KEY_PRESSED &&
 			    key == (kbtrans_key_t)kp->k_newabort2) {
 				abort_sequence_enter((char *)NULL);
-				return;
-			} else {
 				kbtrans_processkey(lower,
 					upper->kbtrans_streams_callback,
 					upper->kbtrans_streams_new_abort1_key,
-					KEY_PRESSED);
+					KEY_RELEASED);
+				return;
 			}
 		}
 	}