From 6826450c8312ab13b52f13728dd4f6433e8f79fb Mon Sep 17 00:00:00 2001 From: mzuther Date: Sun, 11 Jul 2010 11:17:41 +0000 Subject: X11 driver: possibility to ignore auto-repeated KeyPress events git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@1125 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- drv_X11.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/drv_X11.c b/drv_X11.c index b3f627e..cc54241 100644 --- a/drv_X11.c +++ b/drv_X11.c @@ -94,6 +94,8 @@ static GC gc; static Colormap cm; static Pixmap pm; +static int allow_autorepeat = 1; /* consider auto-repeated KeyPress events? */ + static char myDisplayName[256] = ""; static int opTableEntries = 2; static XrmOptionDescRec opTable[] = { @@ -363,6 +365,9 @@ static void drv_X11_timer( __attribute__ ((unused)) && XCheckTypedWindowEvent(dp, w, ClientMessage, &ev) == 0) return; + /* check whether key has been retriggered by "auto repeat" */ + unsigned short is_retriggered = 0; + switch (ev.type) { case Expose: @@ -429,6 +434,19 @@ static void drv_X11_timer( __attribute__ ((unused)) break; case KeyRelease: + /* check whether key has been retriggered by "auto repeat" */ + if (!allow_autorepeat && XEventsQueued(dp, QueuedAfterReading)) { + XEvent nev; + XPeekEvent(dp, &nev); + + if (nev.type == KeyPress && nev.xkey.time == ev.xkey.time && nev.xkey.keycode == ev.xkey.keycode) { + is_retriggered = 1; + + /* delete retriggered KeyPress event */ + XNextEvent(dp, &ev); + } + } + key = XLookupKeysym(&ev.xkey, 0); switch (key) { case XK_Up: @@ -451,7 +469,7 @@ static void drv_X11_timer( __attribute__ ((unused)) break; } /* only register key release if button is defined on GUI */ - if (btn > 0) { + if (!is_retriggered && (btn > 0)) { if (btn <= buttons) { debug("key for button %i released", btn); XClearArea(dp, w, xoffset, yoffset + (btn - 1) * (btnheight + pgap), btnwidth, btnheight - 2, @@ -572,6 +590,9 @@ static int drv_X11_start(const char *section) free(s); } + /* consider auto-repeated KeyPress events? */ + cfg_number(section, "autorepeat", 1, 0, 1, &allow_autorepeat); + /* virtual keyboard: number of buttons (0..6) */ if (cfg_number(section, "buttons", 0, 0, 6, &buttons) < 0) return -1; -- cgit v1.2.3 >AuthorFilesLines 2012-05-19Add Build-Depends on libftdi-dev, libgphoto2-2-dev, libmpdclient-dev andJonathan McCrohan1-0/+2 2012-05-19Bump dh to v9Jonathan McCrohan4-82/+17 2012-05-19Import upstream version 0.11.0~svn1189Jonathan McCrohan3-6/+6 2012-05-19Fixes plugin_file syslog flood if file does not existJonathan McCrohan1-0/+1 2012-05-17d/rules: Add get-orig-source targetJonathan McCrohan3-0/+23 2012-05-17Import upstream version 0.11.0~svn1188Jonathan McCrohan12-428/+435 2012-05-17Undo wrap-and-sort for Uploaders: field.Jonathan McCrohan1-2/+1 2012-03-18update debian/changelogReinhard Tartler1-1/+6 2012-03-18Update Vcs-Bzr control field to new team addressReinhard Tartler1-1/+1 2012-03-09* Rewrite init script to use lsb-base functionsJonathan McCrohan2-7/+13 2012-03-09Add watchfile lintian override; Using upstream svn instead Jonathan McCrohan2-1/+4 2012-03-08Update to S-V 3.9.3Jonathan McCrohan2-2/+3 2012-03-08* Rewrite init script to use lsb-base functions.Jonathan McCrohan3-15/+16 2012-03-08copyright-refers-to-symlink-licenseJonathan McCrohan2-2/+3 2012-03-08* Lintian fixesJonathan McCrohan2-4/+7 2012-03-08Import upstream version 0.11.0~svn1180Jonathan McCrohan19-2871/+3952 2011-12-27Import upstream version 0.11.0~svn1165Jonathan McCrohan6-166/+495 2011-12-25Import upstream version 0.11.0~svn1164Jonathan McCrohan11-162/+315 2011-12-25Update libmysqlclient-dev virtual package in build-depends.Jonathan McCrohan1-1/+1 2011-08-31Import upstream version 0.11.0~svn1159Jonathan McCrohan4-5/+5 2011-08-30update debian/changelogReinhard Tartler1-1/+4 2011-08-28* New upstream snapshotJonathan McCrohan2-4/+11 2011-08-26Import upstream version 0.11.0~svn1158Reinhard Tartler34-1743/+4490 2011-08-20normalize with wrap-and-sort(1)Reinhard Tartler2-17/+20 2011-08-20Make lcd4linux linux specificReinhard Tartler1-2/+1 2011-04-29add sqlite3-dev to build dependssiretart@tauware.de2-2/+4 2011-04-29mention new co-maintainersiretart@tauware.de1-0/+1 2011-04-29add libdbus-1-dev to build dependssiretart@tauware.de2-1/+3 2011-04-29normalize fields with wrap-and-sort(1)siretart@tauware.de2-18/+20 2011-04-29fix order of calling dh_autoreconf_cleansiretart@tauware.de1-1/+1 2011-04-29Add Uploader details to Debian PackageJonathan McCrohan1-0/+1 2011-04-27Bug fix: "script lcd4linux/init.d/lcd4linux missing dependency onReinhard Tartler2-1/+5 2011-04-27No longer build the mpd module. Closes: #578226Reinhard Tartler1-0/+1 2011-04-27No longer compile against Python. Python 2.6 now links against libssl,Reinhard Tartler2-2/+3