stty
é irrelevante.
A velocidade da linha de hardware definida através da disciplina de linha não tem significado para um terminal virtual se for diferente de zero. Só tem significado para "terminais" que são formados com dispositivos seriais reais, porque controla a velocidade da linha do dispositivo serial. Não há dispositivo serial envolvido no emulador de terminal integrado do kernel.
ywrap
não é uma panacéia.
Exibir mecanismos de hardware como os habilitados por ywrap
podem apenas ajudar um emulador de terminal com rolagem de largura total de linha (quase) de altura total.
Por razões óbvias, um emulador de terminal não pode fazer uso de tais mecanismos de hardware em todos os se ele suportar margens esquerda e direita, e assim as ações de rolagem não estão rolando a largura total da linha. O emulador de terminal embutido do kernel Linux não suporta a seqüência de controle DECSLRM ("DEC Set Left and Right Margins") (ou algo parecido) em primeiro lugar, portanto, a rolagem de linha parcial não é uma preocupação aqui. / p>
Mas a rolagem de altura parcial é. O emulador de terminal embutido do kernel Linux suporta a seqüência de controle DECSTBM ("DEC Set Top e Bottom Margins"), que permite que as aplicações definam as primeiras e últimas linhas na tela para rolagem. E essa seqüência de controle é listada corretamente como o recurso change_scroll_region
na entrada linux
terminfo. O uso de tais regiões de rolagem é bastante comum em aplicativos TUI de tela cheia. vim
os usa ao rolar janelas com largura total, por exemplo.
O driver fbcon
do kernel do Linux usa apenas o mecanismo ywrap
se mais de três quartos da imagem da tela inteira estiver sendo retida e movida pela ação de rolagem. Isso ocorre porque a rolagem de altura parcial usando ywrap
também envolve alguma cópia, para que as partes "não-roladas" da tela pareçam permanecer no mesmo lugar, mesmo que o hardware tenha rolado a tela inteiro . Quanto menor a região de rolagem, menos útil é o ywrap
, porque quanto maior a quantidade de cópias a ser realizada, a fim de apresentar a ilusão de que algumas partes da exibição não foram roladas.
As seqüências de controle não são suportadas.
Em terminais reais, ao contrário de terminais virtuais, às vezes há seqüências de controle que permitem selecionar velocidades de rolagem. Por exemplo: A família DEC VT tem um sinalizador chamado DECSCLM ("DEC Scroll Mode", sinalizador de modo privado DEC # 4). Se reinicializar (através da sequência de controle do ECMA-48 RM), o terminal rola tão rápido quanto possível. Se definido (através da sequência de controlo ECMA-48 SM), o terminal rola mais lentamente, inserindo atrasos à medida que se desloca.
Se o emulador de terminal integrado do kernel do Linux fosse uma emulação DEC VT completa, essa seria a maneira de controlar a velocidade de rolagem. Mas não é. Embora alguns emuladores de terminal userspace, como xterm
, implementem este sinalizador de modo, não conheço nenhum emulador de terminal de kernel que tenha. O emulador de terminal embutido do kernel do Linux certamente não.