QT for some reason messes with XCompose causing broken input (Qt 5 only - Qt 4 did not break anything). In Qt 5.2 and 5.3 this was causing an invalid conversion in chat messages containing these resulting in the bad bytes being stripped. In Qt 5.9 it is still broken, but you at least get a string with something in it. This checks for non-zero converted strings for room creation and chat lines.
'?' ping?
'!' pong!
'l','L' срабатывание команд -left, +left
'r','R' -right, +right
'u','U' -up, +up
'd','D' -down, +down
'z', 'Z' -precise, +precise
'N' срабатывание команды /nextturn
'S' /switch
's' + <текст> /say
'+' пустой пакет для постоянности лага
'1'..'5' /timer 1..5
chr(128+№) /slot №
'w' /setweap
'p' /put
'j' /ljump
'J' /hjump
'E' + <текст> сообщение об ошибке
',' /skip
't' + № /taunt №
'f' + <team> 'team' is uncontrolled
'g' + <team> 'team' is controlled again (synced msg)
фронтенд клиенту:
'e' + <команда> выполнить "/<команда>"
'T' + {L,N,D} тип игры (локальная, сетевая, просмотр демо)
'W' + <текст> сообщение о нефатальной ошибке
'F' + <team> команда team вылетела в сетевой игре
'G' + <team> 'team' is back (unsynced msg)
'o' stop syncing, game over!
Клиент фронтенду:
'C' запрос текущего конфига игры
'q' выход по причине окончания демки
'i' статистика
'K' вывести сообщение из KB
'Q' выход через команду /quit
'q' выход по причине окончания игры