Guia rápido para o Alt+Enter e o Shift+Enter funcionarem como nova linha no prompt do agente (harness / input do agente), em vez de fullscreen ou enviar mensagem.
- Alt+Enter no WezTerm, por padrão, aciona ToggleFullScreen; o emulador intercepta o atalho e o Herdr não recebe
EntercomAlt. - Shift+Enter e Enter costumam chegar ao aplicativo como o mesmo byte
\r(carriage return) no modo legado de teclado; o harness trata os dois como enviar. - O Herdr já pede keyboard enhancement no client (
PushKeyboardEnhancementFlags), mas o WezTerm só honra o protocolo estilo Kitty se isso estiver habilitado na config.
Em ~/.wezterm.lua, desative o binding padrão de Alt+Enter e, opcionalmente, mapeie fullscreen para outra tecla (ex.: F11):
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.keys = {
{
key = 'Enter',
mods = 'ALT',
action = wezterm.action.DisableDefaultAssignment,
},
-- opcional: fullscreen em outro lugar
-- { key = 'F11', mods = '', action = wezterm.action.ToggleFullScreen },
}
return configDisableDefaultAssignment faz o WezTerm repassar a combinação para a sessão/tab em vez de executar o ação padrão.
No mesmo ~/.wezterm.lua:
config.enable_kitty_keyboard = trueCom isso, após o Herdr ativar os flags de teclado no arranque, o WezTerm tende a enviar sequências distintas para teclas modificadas (por exemplo CSI u para Enter com modificadores). O stack do Herdr consegue ver Shift no evento e repassar ao PTY de forma que o harness possa tratar Shift+Enter como quebra de linha e Enter como enviar.
Use um WezTerm recente (a opção existe desde versões de 2022; prefira build atual).
Referências úteis:
- Teste WezTerm → Herdr direto, sem tmux no meio (o Herdr trata tmux com caminho diferente, p.ex.
modifyOtherKeys). - Ctrl+J costuma inserir nova linha (
\n) em vários prompts sem submeter. - Ctrl+Alt+Enter costuma ser outra combinação que o harness já interpreta como newline.
Se após enable_kitty_keyboard = true o Shift+Enter ainda submeter, pode ser limite do harness dentro do painel — vale anotar versões do WezTerm, do Herdr e da ferramenta do agente ao reportar issue.
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.enable_kitty_keyboard = true
config.keys = {
{
key = 'Enter',
mods = 'ALT',
action = wezterm.action.DisableDefaultAssignment,
},
}
return config