Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Backends/WaylandBackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3295,6 +3295,10 @@ namespace gamescope
void CWaylandInputThread::Wayland_Keyboard_Modifiers( wl_keyboard *pKeyboard, uint32_t uSerial, uint32_t uModsDepressed, uint32_t uModsLatched, uint32_t uModsLocked, uint32_t uGroup )
{
m_uKeyModifiers = uModsDepressed | uModsLatched | uModsLocked;

wlserver_lock();
wlserver_modifiers( uModsDepressed, uModsLatched, uModsLocked, uGroup );
wlserver_unlock();
}
void CWaylandInputThread::Wayland_Keyboard_RepeatInfo( wl_keyboard *pKeyboard, int32_t nRate, int32_t nDelay )
{
Expand Down
19 changes: 18 additions & 1 deletion src/wlserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2621,11 +2621,28 @@ bool wlserver_process_hotkeys( wlr_keyboard *keyboard, uint32_t key, bool press
return false;
}

void wlserver_modifiers( uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group )
{
assert( wlserver_is_lock_held() );

if ( !wlserver.keyboard_group )
return;

struct wlr_keyboard *keyboard = &wlserver.keyboard_group->keyboard;
wlr_keyboard_notify_modifiers( keyboard, depressed, latched, locked, group );
wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard );
wlr_seat_keyboard_notify_modifiers( wlserver.wlr.seat, &keyboard->modifiers );

bump_input_counter();
}

void wlserver_key( uint32_t key, bool press, uint32_t time )
{
assert( wlserver_is_lock_held() );

wlr_keyboard *keyboard = wlserver.wlr.virtual_keyboard_device;
wlr_keyboard *keyboard = wlserver.keyboard_group
? &wlserver.keyboard_group->keyboard
: wlserver.wlr.virtual_keyboard_device;

if ( !wlserver_process_hotkeys( keyboard, key, press ) )
{
Expand Down
1 change: 1 addition & 0 deletions src/wlserver.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ bool wlserver_is_lock_held(void);
void wlserver_keyboardfocus( struct wlr_surface *surface, bool bConstrain = true );
void wlserver_key( uint32_t key, bool press, uint32_t time );
void wlserver_set_keyboard_layout( const char *pszLayout );
void wlserver_modifiers( uint32_t depressed, uint32_t latched, uint32_t locked, uint32_t group );

void wlserver_mousefocus( struct wlr_surface *wlrsurface, int x = 0, int y = 0 );
void wlserver_clear_dropdowns();
Expand Down
Loading