This would be for instance: ```suggestion:-29+0 static WORD get_layout_id_from_klid( DWORD klid ) { static WORD next_layout_id = 0x100; char buffer[2048]; KEY_VALUE_PARTIAL_INFORMATION *value = (KEY_VALUE_PARTIAL_INFORMATION *)buffer; WORD layout_id = 0; HKEY hkey, subkey; WCHAR name[16]; TRACE( "klid %08x\n", klid ); snprintf( buffer, sizeof(buffer), "%08X", klid ); asciiz_to_unicode( name, buffer ); if (!(hkey = reg_open_key( NULL, keyboard_layouts_keyW, sizeof(keyboard_layouts_keyW) ))) goto done; if (!(subkey = reg_open_key( hkey, name, 8 * sizeof(WCHAR) ))) goto done; if (query_reg_ascii_value( subkey, "Layout Id", value, sizeof(buffer) ) && value->Type == REG_SZ) layout_id = wcstoul( (const WCHAR *)value->Data, NULL, 16 ); NtClose( subkey ); done: if (hkey) NtClose( hkey ); if (!layout_id && HIWORD(klid)) layout_id = next_layout_id++ TRACE( "layout_id %04x\n", layout_id ); return layout_id; } ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10779#note_140320