You are not logged in.

#1 2021-05-19 11:22:09

Garfa
Member
Registered: 2021-05-15
Posts: 7

[Solved] Home/End keys require two keystrokes in gtk applications

Running linux 5.10.37-1-lts with with all packages updated to latest version on a Acer Chromebook 14 - CB3-431.

I use the xkeyboard-config from GalliumOS (which fixes several Chromebook quirks in general). The added xkb entries can found here. My config is:

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      chromebook_m
layout:     se
Trying to build keymap using the following components:
keycodes:   evdev+chromebook_m(media)+aliases(qwerty)
types:      complete
compat:     complete+chromebook
symbols:    pc+se+inet(evdev)+chromebook_m(overlay)
geometry:   pc(pc104)
xkb_keymap {
	xkb_keycodes  { include "evdev+chromebook_m(media)+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete+chromebook"	};
	xkb_symbols   { include "pc+se+inet(evdev)+chromebook_m(overlay)"	};
	xkb_geometry  { include "pc(pc104)"	};
};

To invoke Home, I hold down the Chromebook search key (which in my case corresponds to 'Overlay1') and press Left.

xev output:

$ xev -event keyboard
Outer window is 0x3a00001, inner window is 0x3a00002

KeymapNotify event, serial 18, synthetic NO, window 0x0,
    keys:  65  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyPress event, serial 25, synthetic NO, window 0x3a00001,                                           ### Search key press
    root 0x17f, subw 0x0, time 5929532, (160,-12), root:(1031,454),
    state 0x0, keycode 133 (keysym 0xfe78, Overlay1_Enable), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 28, synthetic NO, window 0x3a00001,                                            ### Left key press
    root 0x17f, subw 0x0, time 5932059, (160,-12), root:(1031,454),
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x3a00001,                                         ### Left key release
    root 0x17f, subw 0x0, time 5933995, (160,-12), root:(1031,454),
    state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x3a00001,                                          ### Search key release
    root 0x17f, subw 0x0, time 5934905, (160,-12), root:(1031,454),
    state 0x0, keycode 133 (keysym 0xfe78, Overlay1_Enable), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

ClientMessage event, serial 28, synthetic YES, window 0x3a00001,
    message_type 0x15d (WM_PROTOCOLS), format 32, message 0x15b (WM_DELETE_WINDOW)

In gtk applications (I've tested firefox, galculator, gedit, xfce4-terminal) I need to hold down search key and press left arrow twice in order to move the cursor. 

$ galculator --gtk-debug keybindings
Gtk-Message: 12:53:08.208: Looking up keycode = 133, modifiers = 0x0000,                     ### Search key press
    keyval = 65144, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:10.219: Looking up keycode = 110, modifiers = 0x0000,                     ### Left key press (the cursor does not move)
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:19.522: Looking up keycode = 110, modifiers = 0x0000,                     ### Left key release  
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:19.523:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.523:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.523:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.523:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.524:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.524:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.524:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.525: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:19.525:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.525:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.526:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.526:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.526:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.526:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.527:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.527: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:19.527:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.528:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.528:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.528:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.528:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.528:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.529:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.529: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:19.529:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.530:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.530:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.530:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.530:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.530:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.531:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.531: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:19.531:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.531:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.532:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.532:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.532:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.532:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.532:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.533: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:19.533:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.533:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.533:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.534:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.534:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.534:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:19.534:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:31.915: Looking up keycode = 110, modifiers = 0x0000,                       ### Left key press (now the cursor moves)
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002               
Gtk-Message: 12:53:31.916: Looking up keycode = 110, modifiers = 0x0000,                       ### Left key release
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:31.916:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:31.916:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:31.916:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:31.917:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:31.917:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:31.917:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:31.917:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.882: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:32.883:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.883:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.883:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.883:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.884:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.884:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.884:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.884: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:32.885:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.885:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.885:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.885:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.886:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.886:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.886:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.886: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:32.887:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.887:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.887:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.887:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.888:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.888:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.888:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.888: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:32.889:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.889:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.889:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.889:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.889:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.890:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.890:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.890: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:32.890:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.891:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.891:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.891:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.891:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.892:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.892:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.892: Looking up keycode = 110, modifiers = 0x0000,
    keyval = 65360, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:32.892:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.893:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.893:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.893:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.893:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.893:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:32.894:   found exact match, keyval = 65360, modifiers = 0x0000
Gtk-Message: 12:53:33.743: Looking up keycode = 133, modifiers = 0x0000,                      ### Search key release
    keyval = 65144, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:33.743: Looking up keycode = 133, modifiers = 0x0000,
    keyval = 65144, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:33.743: Looking up keycode = 133, modifiers = 0x0000,
    keyval = 65144, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:33.744: Looking up keycode = 133, modifiers = 0x0000,
    keyval = 65144, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:33.744: Looking up keycode = 133, modifiers = 0x0000,
    keyval = 65144, group = 0, level = 0, consumed_modifiers = 0x6002
Gtk-Message: 12:53:33.744: Looking up keycode = 133, modifiers = 0x0000,
    keyval = 65144, group = 0, level = 0, consumed_modifiers = 0x6002

Xorg log:

$ cat .xorg.log 


X.Org X Server 1.20.11
X Protocol Version 11, Revision 0
Build Operating System: Linux Archlinux
Current Operating System: Linux davabook 5.10.37-1-lts #1 SMP Fri, 14 May 2021 13:37:05 +0000 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux-lts root=UUID=2041b54b-a986-450d-be17-525a6bec0ac7 rw loglevel=3 quiet usbcore.autosuspend=120 resume=UUID=bb83e052-89a4-48f1-9b26-3c71741d0767
Build Date: 13 April 2021  03:12:10PM
 
Current version of pixman: 0.40.0
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/home/dava/.local/share/xorg/Xorg.0.log", Time: Wed May 19 13:23:01 2021
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
/usr/bin/startxfce4: X server already running on display :0
gpg-agent: a gpg-agent is already running - not starting a new one

** (xfdesktop:7428): WARNING **: 13:23:05.520: Thumbnailer failed calling GetFlavors

** (xfce4-power-manager:7434): WARNING **: 13:23:05.803: Failed to get name owner: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: The name does not have an owner


** (xfce4-power-manager:7434): WARNING **: 13:23:05.803: Failed to get name owner: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: The name does not have an owner


(xfce4-power-manager:7434): libnotify-WARNING **: 13:23:05.849: Failed to connect to proxy

(xfce4-power-manager:7434): GLib-GObject-WARNING **: 13:23:05.879: ../glib/gobject/gsignal.c:2614: signal 'Changed' is invalid for instance '0x55d120be0460' of type 'GDBusProxy'

(xfce4-power-manager:7434): xfce4-power-manager-WARNING **: 13:23:05.938: could not map keysym 1008ffa8 to keycode


(xfce4-power-manager:7434): xfce4-power-manager-WARNING **: 13:23:05.995: Unable to set the kernel brightness switch parameter to 0.

(xfce4-power-manager:7434): xfce4-power-manager-WARNING **: 13:23:06.000: Failed to get keyboard max brightness level : GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.UPower.KbdBacklight” on object at path /org/freedesktop/UPower/KbdBacklight

(wrapper-2.0:7461): GLib-GIO-CRITICAL **: 13:23:06.770: g_file_new_for_path: assertion 'path != NULL' failed

(wrapper-2.0:7461): GLib-GIO-CRITICAL **: 13:23:06.770: g_file_monitor_file: assertion 'G_IS_FILE (file)' failed

(wrapper-2.0:7461): GLib-GObject-WARNING **: 13:23:06.770: invalid (NULL) pointer instance

(wrapper-2.0:7461): GLib-GObject-CRITICAL **: 13:23:06.770: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(wrapper-2.0:7461): Gtk-WARNING **: 13:23:06.770: Attempting to add a widget with type GtkToggleButton to a container of type XfcePanelPlugin, but the widget is already inside a container of type XfcePanelPlugin, please remove the widget from its existing container first.

(wrapper-2.0:7461): Gtk-WARNING **: 13:23:07.001: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner GtkToggleButton)

(wrapper-2.0:7427): Gtk-WARNING **: 13:23:07.021: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner GtkToggleButton)

(wrapper-2.0:7462): Gtk-WARNING **: 13:23:07.117: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner PulseaudioButton)

(wrapper-2.0:7463): Gtk-WARNING **: 13:23:07.169: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner PowerManagerButton)
(EE) event3  - Elan Touchpad: kernel bug: Touch jump detected and discarded.
See https://wayland.freedesktop.org/libinput/doc/1.17.2/touchpad-jumping-cursors.html for details

Last edited by Garfa (2021-05-21 09:09:56)

Offline

#2 2021-05-19 12:07:15

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,527

Re: [Solved] Home/End keys require two keystrokes in gtk applications

Try to "export GDK_CORE_DEVICE_EVENTS=1" (this is an absolute wild guess, typically the mouse wheel is affected, but gtk has weird input behavior habits and this usually skips them)

Offline

#3 2021-05-19 12:55:06

Garfa
Member
Registered: 2021-05-15
Posts: 7

Re: [Solved] Home/End keys require two keystrokes in gtk applications

seth wrote:

Try to "export GDK_CORE_DEVICE_EVENTS=1"

Did not work unfortunately. Any other tips?

Offline

#4 2021-05-19 13:11:06

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,527

Re: [Solved] Home/End keys require two keystrokes in gtk applications

Some overzealous https://wiki.archlinux.org/title/Input_method ?

echo $GTK_IM_MODULE

Where did you export GDK_CORE_DEVICE_EVENTS btw (needs to be the parenting shell of the misbehaving client)

Offline

#5 2021-05-19 13:33:27

Garfa
Member
Registered: 2021-05-15
Posts: 7

Re: [Solved] Home/End keys require two keystrokes in gtk applications

seth wrote:

Some overzealous https://wiki.archlinux.org/title/Input_method ?

echo $GTK_IM_MODULE

Output is blank.

seth wrote:

Where did you export GDK_CORE_DEVICE_EVENTS btw (needs to be the parenting shell of the misbehaving client)

I put it in .xinitrc (and restarted xfce4).

Oh I forgot, running

startx /usr/bin/galculator

from Linux console produces the same results.

Offline

#6 2021-05-21 09:08:45

Garfa
Member
Registered: 2021-05-15
Posts: 7

Re: [Solved] Home/End keys require two keystrokes in gtk applications

It's a gtk bug after all, introduced in 3.24.25. Bug report here: https://gitlab.gnome.org/GNOME/gtk/-/issues/3673. While waiting for a fix, downgrading to 3.24.24 solves it.

Offline

Board footer

Powered by FluxBB