Subject: bug#48136: 28.0.50; [feature/pgtk] ISO_Level5_Shift broken

From: "Elia Nolz" <[email-masked]>
Date: Thu, 20 May 2021 15:28:49 +0200

On Thu, May 20, 2021, at 13:02, Yuuki Harano wrote:
> Key events are handled in key_press_event() in pgtkterm.c.
> I think `keysym` contains a character code, which is already
> interpreted.

I stepped through the code with gdb and watched the keysym values.

I observed the following values for keysym in this order when pressing "C-L3-i" (sends "C-{") (working case):
65507 (state goes to 4 --> state to 0 and modifiers to 4)
65027 (state becomes 132 --> modifiers becomes 132 and state 128)
123 (no changes to state and modifiers)
65515 (should be me using Super+o to switch workspaces in xmonad)

And these for the non working case "C-L3-n" (which sends "(" and should send "C-("):
65507 (state to 4 --> state to 0 and modifiers to 4)
65027 (both state and modifiers become 0)
65515

I was unable to get the keysym of the key itself in the non-working cases.

Used breakpoints in pgtkterm.c:
5669
5687
5701
5710
5731
5809
5860
5876

I sadly do not know enough C to understand why this happens. Does this help you at all? Any further information I could provide that would be helpful?