Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug.
Summary: Discarding the key events and same output regardless of the key
https://bugzilla.redhat.com/show_bug.cgi?id=467048
Summary: Discarding the key events and same output regardless
of the key
Product: Fedora
Version: rawhide
Platform: All
OS/Version: Linux
Status: NEW
Severity: medium
Priority: medium
Component: ibus
AssignedTo: shawn.p.huang(a)gmail.com
ReportedBy: tagoh(a)redhat.com
QAContact: extras-qa(a)fedoraproject.org
CC: shawn.p.huang(a)gmail.com, fedora-i18n-bugs(a)redhat.com
Estimated Hours: 0.0
Classification: Fedora
+++ This bug was initially created as a clone of Bug #466657 +++
Description of problem:
key input too faster and too much messes up IBus.
Version-Release number of selected component (if applicable):
ibus-0.1.1.20081006-3.fc10
Steps to Reproduce:
1.input something too much and too faster
2.
3.
Actual results:
discarding the key event or return the same key event regardless of what
pressing/releasing the key.
Expected results:
should works expectedly.
Additional info:
Technically it happens when multiple XIM_FORWARD_EVENT is added to the property
when the key event is delivered faster than processing it in IBus. and when
it's there more than 4 in the property, it results the same output regardless
of what you are pressing/releasing the key. otherwise the key event is
discarded.
Why it returns the same key event when the property has something more than 4,
IMdkit is getting the value from the property wrongly. a quote from man page:
int XGetWindowProperty(Display *display, Window w, Atom property, long
long_offset, long long_length, Bool delete, Atom reg_type, Atom
*actual_type_return, int *actual_format_return, unsigned long
*nitems_return, unsigned long *bytes_after_return, unsigned char
**prop_return);
...
long_length
Specifies the length in 32-bit multiples of the data to be
retrieved.
and XGetWindowProperty won't delete the property value even if "delete" is
True, when there are still unread data.
To do the right thing, read the data with the proper length to not discard the
event. and if there are still the unread data in the property, read next data
with "long_offset".
--- Additional comment from shawn.p.huang(a)gmail.com on 2008-10-13 23:07:48 EDT
---
Could you provide a patch to fix XIM problem? Thanks.
--- Additional comment from tagoh(a)redhat.com on 2008-10-14 06:43:58 EDT ---
Created an attachment (id=320277)
--> (
https://bugzilla.redhat.com/attachment.cgi?id=320277)
test code for discarding the key event issue
% gcc scim_discarding.c `pkg-config --cflags --libs gtk+-2.0 gio-2.0`
% GTK_IM_MODULE=xim XMODIFIERS=@im=SCIM ./a.out
After pressing the button, "ab" should be put on the entry. otherwise SCIM may
be discarding the forward event.
--- Additional comment from tagoh(a)redhat.com on 2008-10-14 06:47:45 EDT ---
Created an attachment (id=320278)
--> (
https://bugzilla.redhat.com/attachment.cgi?id=320278)
test code for output the same result regardless of the key
% gcc scim_repeat.c `pkg-config --cflags --libs gtk+-2.0 gio-2.0`
% GTK_IM_MODULE=xim XMODIFIERS=@im=SCIM ./a.out
After pressing the button, "abc" should be put to the entry box. but actual
result is "aaaaaa". this testing code is sending KeyPress and KeyRelease events
for "a", "b" and "c". and usually GTK+ and other toolkits
doesn't take any
actions for KeyRelease event. thus, this means SCIM sends back the forward
event for "a" with KeyPress 6 times.
--- Additional comment from tagoh(a)redhat.com on 2008-10-15 05:05:18 EDT ---
Created an attachment (id=320407)
--> (
https://bugzilla.redhat.com/attachment.cgi?id=320407)
test code for discarding the key event issue
missed one ClientMessage event
--- Additional comment from tagoh(a)redhat.com on 2008-10-15 07:18:44 EDT ---
Created an attachment (id=320412)
--> (
https://bugzilla.redhat.com/attachment.cgi?id=320412)
proposed patch
--
Configure bugmail:
https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.