|
Peter Hutterer |
731add1 |
From 5b5941862cc88193fedd2e381f8bec4dcf411ec9 Mon Sep 17 00:00:00 2001
|
|
Peter Hutterer |
731add1 |
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Peter Hutterer |
731add1 |
Date: Tue, 26 Jun 2012 10:30:35 +1000
|
|
Peter Hutterer |
731add1 |
Subject: [PATCH] xkb: fill in keycode and event type for slow keys enablement
|
|
Peter Hutterer |
731add1 |
|
|
Peter Hutterer |
731add1 |
eventType is set for the type that triggered a XkbControlsNotify event.
|
|
Peter Hutterer |
731add1 |
Technically, SlowKeys is triggered by a timer which doesn't have a matching
|
|
Peter Hutterer |
731add1 |
core event type. So we used to use 0 here.
|
|
Peter Hutterer |
731add1 |
|
|
Peter Hutterer |
731add1 |
Practically, the timer is triggered by a key press + hold and cancelled when
|
|
Peter Hutterer |
731add1 |
the key is released before the timeout expires. So we might as well set
|
|
Peter Hutterer |
731add1 |
KeyPress (keycode) in the ControlsNotify to give clients a chance to differ
|
|
Peter Hutterer |
731add1 |
between timer-triggered SlowKeys and client-triggered ones.
|
|
Peter Hutterer |
731add1 |
|
|
Peter Hutterer |
731add1 |
This is a chance in behaviour, though I suspect with little impact.
|
|
Peter Hutterer |
731add1 |
|
|
Peter Hutterer |
731add1 |
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Peter Hutterer |
731add1 |
---
|
|
Peter Hutterer |
731add1 |
include/xkbsrv.h | 1 +
|
|
Peter Hutterer |
731add1 |
xkb/xkbAccessX.c | 6 ++++--
|
|
Peter Hutterer |
731add1 |
2 files changed, 5 insertions(+), 2 deletions(-)
|
|
Peter Hutterer |
731add1 |
|
|
Peter Hutterer |
731add1 |
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
|
|
Peter Hutterer |
731add1 |
index a19c8fb..f839edb 100644
|
|
Peter Hutterer |
731add1 |
--- a/include/xkbsrv.h
|
|
Peter Hutterer |
731add1 |
+++ b/include/xkbsrv.h
|
|
Peter Hutterer |
731add1 |
@@ -171,6 +171,7 @@ typedef struct _XkbSrvInfo {
|
|
Peter Hutterer |
731add1 |
KeyCode mouseKey;
|
|
Peter Hutterer |
731add1 |
KeyCode inactiveKey;
|
|
Peter Hutterer |
731add1 |
KeyCode slowKey;
|
|
Peter Hutterer |
731add1 |
+ KeyCode slowKeyEnableKey;
|
|
Peter Hutterer |
731add1 |
KeyCode repeatKey;
|
|
Peter Hutterer |
731add1 |
CARD8 krgTimerActive;
|
|
Peter Hutterer |
731add1 |
CARD8 beepType;
|
|
Peter Hutterer |
731add1 |
diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c
|
|
Peter Hutterer |
731add1 |
index fe28e12..e7e0b73 100644
|
|
Peter Hutterer |
731add1 |
--- a/xkb/xkbAccessX.c
|
|
Peter Hutterer |
731add1 |
+++ b/xkb/xkbAccessX.c
|
|
Peter Hutterer |
731add1 |
@@ -291,8 +291,8 @@ AccessXKRGExpire(OsTimerPtr timer, CARD32 now, pointer arg)
|
|
Peter Hutterer |
731add1 |
return 4000;
|
|
Peter Hutterer |
731add1 |
}
|
|
Peter Hutterer |
731add1 |
xkbi->krgTimerActive = _OFF_TIMER;
|
|
Peter Hutterer |
731add1 |
- cn.keycode = 0;
|
|
Peter Hutterer |
731add1 |
- cn.eventType = 0;
|
|
Peter Hutterer |
731add1 |
+ cn.keycode = xkbi->slowKeyEnableKey;
|
|
Peter Hutterer |
731add1 |
+ cn.eventType = KeyPress;
|
|
Peter Hutterer |
731add1 |
cn.requestMajor = 0;
|
|
Peter Hutterer |
731add1 |
cn.requestMinor = 0;
|
|
Peter Hutterer |
731add1 |
if (xkbi->desc->ctrls->enabled_ctrls & XkbSlowKeysMask) {
|
|
Peter Hutterer |
731add1 |
@@ -304,6 +304,7 @@ AccessXKRGExpire(OsTimerPtr timer, CARD32 now, pointer arg)
|
|
Peter Hutterer |
731add1 |
LogMessage(X_INFO, "XKB SlowKeys are now enabled. Hold shift to disable.\n");
|
|
Peter Hutterer |
731add1 |
}
|
|
Peter Hutterer |
731add1 |
|
|
Peter Hutterer |
731add1 |
+ xkbi->slowKeyEnableKey = 0;
|
|
Peter Hutterer |
731add1 |
return 0;
|
|
Peter Hutterer |
731add1 |
}
|
|
Peter Hutterer |
731add1 |
|
|
Peter Hutterer |
731add1 |
@@ -462,6 +463,7 @@ AccessXFilterPressEvent(DeviceEvent *event, DeviceIntPtr keybd)
|
|
Peter Hutterer |
731add1 |
if (ctrls->enabled_ctrls & XkbAccessXKeysMask) {
|
|
Peter Hutterer |
731add1 |
/* check for magic sequences */
|
|
Peter Hutterer |
731add1 |
if ((sym[0] == XK_Shift_R) || (sym[0] == XK_Shift_L)) {
|
|
Peter Hutterer |
731add1 |
+ xkbi->slowKeyEnableKey = key;
|
|
Peter Hutterer |
731add1 |
if (XkbAX_NeedFeedback(ctrls, XkbAX_SlowWarnFBMask)) {
|
|
Peter Hutterer |
731add1 |
xkbi->krgTimerActive = _KRG_WARN_TIMER;
|
|
Peter Hutterer |
731add1 |
xkbi->krgTimer = TimerSet(xkbi->krgTimer, 0, 4000,
|
|
Peter Hutterer |
731add1 |
--
|
|
Peter Hutterer |
731add1 |
1.7.10.2
|
|
Peter Hutterer |
731add1 |
|