wez / wezterm

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
https://wezfurlong.org/wezterm/
Other
16.56k stars 742 forks source link

`\` input on modifyier key #5319

Open tobb10001 opened 4 months ago

tobb10001 commented 4 months ago

What Operating System(s) are you seeing this problem on?

Linux X11

Which Wayland compositor or X11 Window manager(s) are you using?

KDE Plasma Version: 5.27.11 KDE Frameworks Version: 5.115.0 Qt Version: 5.15.12 Kwin:

Kwin Information ``` KWin Support Information: The following information should be used when requesting support on e.g. https://forum.kde.org. It provides information about the currently running instance, which options are used, what OpenGL driver and which effects are running. Please post the information provided underneath this introductory text to a paste bin service like https://paste.kde.org instead of pasting into support threads. ========================== Version ======= KWin version: 5.27.11 Qt Version: 5.15.12 Qt compile version: 5.15.12 XCB compile version: 1.16.1 Operation Mode: X11 only Build Options ============= KWIN_BUILD_DECORATIONS: yes KWIN_BUILD_TABBOX: yes KWIN_BUILD_ACTIVITIES: yes HAVE_X11_XCB: yes HAVE_EPOXY_GLX: yes X11 === Vendor: The X.Org Foundation Vendor Release: 12101012 Protocol Version/Revision: 11/0 SHAPE: yes; Version: 0x11 RANDR: yes; Version: 0x14 DAMAGE: yes; Version: 0x11 Composite: yes; Version: 0x4 RENDER: yes; Version: 0xb XFIXES: yes; Version: 0x50 SYNC: yes; Version: 0x31 GLX: yes; Version: 0x0 Decoration ========== Plugin: org.kde.breeze Theme: Plugin recommends border size: None onAllDesktopsAvailable: false alphaChannelSupported: true closeOnDoubleClickOnMenu: false decorationButtonsLeft: 0, 2 decorationButtonsRight: 9, 3, 4, 5 borderSize: 0 gridUnit: 10 font: Noto Sans,10,-1,0,50,0,0,0,0,0 smallSpacing: 2 largeSpacing: 10 Output backend ============== Name: KWin::X11StandaloneBackend Cursor ====== themeName: breeze_cursors themeSize: 24 Options ======= focusPolicy: 0 xwaylandCrashPolicy: xwaylandMaxCrashCount: 3 nextFocusPrefersMouse: false clickRaise: true autoRaise: false autoRaiseInterval: 0 delayFocusInterval: 0 shadeHover: false shadeHoverInterval: 250 separateScreenFocus: false activeMouseScreen: true placement: activationDesktopPolicy: 0 focusPolicyIsReasonable: true borderSnapZone: 10 windowSnapZone: 10 centerSnapZone: 0 snapOnlyWhenOverlapping: false rollOverDesktops: false focusStealingPreventionLevel: 1 operationTitlebarDblClick: 5000 operationMaxButtonLeftClick: 5000 operationMaxButtonMiddleClick: 5015 operationMaxButtonRightClick: 5014 commandActiveTitlebar1: 0 commandActiveTitlebar2: 28 commandActiveTitlebar3: 2 commandInactiveTitlebar1: 4 commandInactiveTitlebar2: 28 commandInactiveTitlebar3: 2 commandWindow1: 7 commandWindow2: 8 commandWindow3: 8 commandWindowWheel: 28 commandAll1: 10 commandAll2: 3 commandAll3: 14 keyCmdAllModKey: 16777250 condensedTitle: false electricBorderMaximize: true electricBorderTiling: true electricBorderCornerRatio: 0.25 borderlessMaximizedWindows: false killPingTimeout: 5000 hideUtilityWindowsForInactive: true compositingMode: 1 useCompositing: true hiddenPreviews: 1 glSmoothScale: 2 glStrictBinding: true glStrictBindingFollowsDriver: true glPreferBufferSwap: 101 glPlatformInterface: 1 windowsBlockCompositing: true latencyPolicy: renderTimeEstimator: allowTearing: true Screen Edges ============ desktopSwitching: false desktopSwitchingMovingClients: false cursorPushBackDistance: 1x1 timeThreshold: 150 reActivateThreshold: 350 actionTopLeft: 0 actionTop: 0 actionTopRight: 0 actionRight: 0 actionBottomRight: 0 actionBottom: 0 actionBottomLeft: 0 actionLeft: 0 Screens ======= Active screen follows mouse: yes Number of Screens: 1 Screen 0: --------- Name: eDP-1 Enabled: 1 Geometry: 0,0,1920x1080 Scale: 1 Refresh Rate: 60007 Adaptive Sync: incapable Compositing =========== Compositing is active Compositing Type: OpenGL OpenGL vendor string: AMD OpenGL renderer string: AMD Radeon Graphics (radeonsi, renoir, LLVM 16.0.6, DRM 3.49, 6.1.85-1-MANJARO) OpenGL version string: 4.6 (Compatibility Profile) Mesa 24.0.2-manjaro1.1 OpenGL platform interface: GLX OpenGL shading language version string: 4.60 Driver: Unknown GPU class: Unknown OpenGL version: 4.6 GLSL version: 4.60 Mesa version: 24.0.2 X server version: 1.21.1 Linux kernel version: 6.1.85 Direct rendering: Requires strict binding: yes GLSL shaders: yes Texture NPOT support: yes Virtual Machine: no OpenGL 2 Shaders are used Loaded Effects: --------------- colorpicker outputlocator screenshot screenedge zoom blur kwin4_effect_sessionquit kwin4_effect_logout kwin4_effect_login slidingpopups kwin4_effect_windowaperture slide glide kwin4_effect_squash kwin4_effect_fullscreen kwin4_effect_fadingpopups kwin4_effect_morphingpopups kwin4_effect_maximize kwin4_effect_frozenapp kwin4_effect_scale kwin4_effect_dialogparent desktopgrid highlightwindow overview tileseditor windowview blendchanges startupfeedback kscreen invert Currently Active Effects: ------------------------- blur Effect Settings: ---------------- colorpicker: outputlocator: screenshot: screenedge: zoom: zoomFactor: 1.2 mousePointer: 0 mouseTracking: 0 focusTrackingEnabled: false textCaretTrackingEnabled: false focusDelay: 350 moveFactor: 20 targetZoom: 1 blur: kwin4_effect_sessionquit: pluginId: kwin4_effect_sessionquit isActiveFullScreenEffect: false kwin4_effect_logout: pluginId: kwin4_effect_logout isActiveFullScreenEffect: false kwin4_effect_login: pluginId: kwin4_effect_login isActiveFullScreenEffect: false slidingpopups: slideInDuration: 150 slideOutDuration: 250 kwin4_effect_windowaperture: pluginId: kwin4_effect_windowaperture isActiveFullScreenEffect: false slide: horizontalGap: 45 verticalGap: 20 slideBackground: true glide: duration: 160 inRotationEdge: 0 inRotationAngle: 3 inDistance: 30 inOpacity: 0.4 outRotationEdge: 2 outRotationAngle: 3 outDistance: 30 outOpacity: 0 kwin4_effect_squash: pluginId: kwin4_effect_squash isActiveFullScreenEffect: false kwin4_effect_fullscreen: pluginId: kwin4_effect_fullscreen isActiveFullScreenEffect: false kwin4_effect_fadingpopups: pluginId: kwin4_effect_fadingpopups isActiveFullScreenEffect: false kwin4_effect_morphingpopups: pluginId: kwin4_effect_morphingpopups isActiveFullScreenEffect: false kwin4_effect_maximize: pluginId: kwin4_effect_maximize isActiveFullScreenEffect: false kwin4_effect_frozenapp: pluginId: kwin4_effect_frozenapp isActiveFullScreenEffect: false kwin4_effect_scale: pluginId: kwin4_effect_scale isActiveFullScreenEffect: false kwin4_effect_dialogparent: pluginId: kwin4_effect_dialogparent isActiveFullScreenEffect: false desktopgrid: activeView: gridRows: 1 gridColumns: 1 animationDuration: 300 layout: 1 partialActivationFactor: 0 gestureInProgress: false showAddRemove: true desktopNameAlignment: 0 desktopLayoutMode: 0 customLayoutRows: 2 highlightwindow: overview: activeView: animationDuration: 300 layout: 1 ignoreMinimized: false blurBackground: true partialActivationFactor: 0 gestureInProgress: false searchText: tileseditor: activeView: animationDuration: 200 windowview: activeView: animationDuration: 300 layout: 1 ignoreMinimized: false mode: 7536756 partialActivationFactor: 0 gestureInProgress: false searchText: blendchanges: startupfeedback: type: 1 kscreen: invert: Loaded Plugins: --------------- kwin5_plugin_krunner kwin5_plugin_nightcolor Available Plugins: ------------------ kwin5_plugin_buttonrebinds kwin5_plugin_colord kwin5_plugin_krunner kwin5_plugin_nightcolor ```

WezTerm version

20240405-180910-cce0706b

Did you try the latest nightly build to see if the issue is better (or worse!) than your current version?

Yes, and I updated the version box above to show the version of the nightly that I tried

Describe the bug

When using the NeoQwertz keyboard layout, pressing the right M3 key (the modifier key to access the third layer), wezterm inputs a backslash \ character. The same happens on the M4 key, where I receive a less than <.

When pressing more keys, the actual third layer symbols are printed, but the backslash stays there. The left M3 key behaves as expected in all circumstances.

This behaviour is exclusive to Wezterm, I don't observe this behaviour in Konsole or Firefox.

To Reproduce

Configuration

no config (tested with wezterm -n)

Expected Behavior

Pressing the M3 key doesn't input anything but only enables the third layer.

Logs

Debug Overlay wezterm version: 20240405-180910-cce0706b x86_64-unknown-linux-gnu Window Environment: X11 KWin Lua Version: Lua 5.4 OpenGL: AMD Radeon Graphics (radeonsi, renoir, LLVM 16.0.6, DRM 3.49, 6.1.85-1-MANJARO) 4.6 (Compatibility Profile) Mesa 24.0.2-manjaro1.1 Enter lua statements or expressions and hit Enter. Press ESC or CTRL-D to exit

Anything else?

On a standard US keyboard, the left M3 key is the caps lock key and the right M3 key is the \ key. It seems like that's what's leaking through.

I ran xev to gain some insight into what's happening when pressing the keys.

Pressing the left M3 key, that behaves as expected, yields

KeyPress event, serial 40, synthetic NO, window 0x4800001,
    root 0x71e, subw 0x0, time 3396153, (168,-14), root:(1039,429),
    state 0x0, keycode 66 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 51
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x4800001,
    root 0x71e, subw 0x0, time 3396235, (168,-14), root:(1039,429),
    state 0x80, keycode 66 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 51
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

pressing the right M3 key, that inputs the superfluous backslash yields

KeyPress event, serial 40, synthetic NO, window 0x4800001,
    root 0x71e, subw 0x0, time 3468876, (121,482), root:(992,925),
    state 0x0, keycode 51 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x4800001,
    root 0x71e, subw 0x0, time 3468932, (121,482), root:(992,925),
    state 0x80, keycode 51 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

The M4 key yields

KeyPress event, serial 40, synthetic NO, window 0x4600001,
    root 0x71e, subw 0x0, time 11073570, (250,-162), root:(1121,281),
    state 0x0, keycode 94 (keysym 0xfe11, ISO_Level5_Shift), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 40, synthetic NO, window 0x4600001,
    root 0x71e, subw 0x0, time 11073651, (250,-162), root:(1121,281),
    state 0x20, keycode 94 (keysym 0xfe13, ISO_Level5_Lock), same_screen YES,
    XKeysymToKeycode returns keycode: 23
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

I found this xmodmap file for the NeoQwertz Layout online, however I'm not sure if it's identical to the one used in KDE (I tried this on Manjaro and Ubuntu).

tobb10001 commented 4 months ago

Did some debugging and stumbled upon this peace of code, which references #4910. Seems related.

Also, @Flakebi seems to have pointed out this exact same issue there: https://github.com/wez/wezterm/issues/4910#issuecomment-1962928909

RichardFevrier commented 4 months ago

I can relate the same problem under Wayland, as @Flakebi pointed out rolling back to the previous version fixes the issue.