"Eu estava com esse documento perdido nos confins do meu $HOME há séculos. Ele foi feito em Dezembro de 1999. Como minha página é o lugar definitivo para todas as inutilidades, é claro que este documento merece um cantinho nela. Boa leitura!"
-- Aurelio, Nov 2003

Respondendo às primeiras perguntas

O que é um mouse?

De acordo com o "Webster's Revised Unabridged Dictionary (1913)", um mouse é:

Any one of numerous species of small rodents belonging to the genus Mus and various related genera of the family Murid[ae]. The common house mouse ({Mus musculus) is found in nearly all countries.
Tradução: Qualquer uma das várias espécies de pequenos roedores pertencentes ao gênero Mus e vários outros relacionados à família Murid[ae]. O rato (mouse) caseiro comum ({Mus musculus) é encontrado praticamente em todos os países.
E o que é esse sem-mouse-HOWTO?

Este documento descreve como trabalhar em um computador desprovido de mouse, rodando o sistema operacional Linux. O autor decidiu aposentar o mouse, tanto na interface texto (console) quanto na interface gráfica (XFree). Nesta condição, teve que aprender vários truques para ter a mesma facilidade de Copiar e Colar textos entre terminais e programas. Este documento descreve quais são estes truques para ajudar outros que também têm que usar o sistema sem mouse, ou por opção ou por motivos aleatórios.

Por que não usar o mouse?

Para quem usa a interface gráfica todo o tempo, não faz muito sentido. Mas para quem usa primariamente a interface texto e muito de vez em quando precisa da interface gráfica para rodar algum programa ou outro, o mouse não é um acessório obrigatório. De fato, após se acostumar com os procedimentos aqui descritos, o autor notou mais agilidade e menos dispersão no uso da máquina, ficando 100% do tempo com as mãos no teclado, sem aquela alternância insana entre os periféricos.

Sou novato no Linux, eu vou conseguir entender este documento?

Talvez. Aqui estão dicas de uso para vários programas. É necessário um conhecimento prévio destes programas para poder usufruir dos truques. Mas estas dicas não têm validade. Depois que você estiver mais acostumado com o Linux, volte e releia este documento, sempre que precisar.

Por que eu deveria ler isso?

  • Para se sentir à vontade numa máquina sem mouse;
  • Para salvar seu pulso da inevitável tendinite;
  • Para mostrar aos amigos suas habilidades no teclado;
  • Para economizar dinheiro, não precisando mais comprar um mouse;
  • Para dedetizar sua máquina, livrando-a de animais peçonhentos;
  • Para ter uma razão para jogar fora o roedor e não ficar com remorso;
  • Para apoiar e ajudar a divulgar a campanha "Morte ao Mouse!";

    E o mais importante:

  • Aumentar a produtividade, evitando todo o transtorno de copiar e colar um texto entre terminais, acompanhe a insanidade:
    1. ter que tirar a mão do teclado
    2. achar e agarrar o hamster, digo, o mouse
    3. mover o cursor por toda a tela
    4. clicar no botão esquerdo e segurá-lo
    5. mover o mouse para selecionar o texto
    6. soltar o botão
    7. voltar a mão para o teclado
    8. apertar Alt+F2 para ir ao outro terminal
    9. tirar a mão do teclado novamente
    10. achar e agarrar o mouse de novo
    11. movê-lo até o ponto desejado
    12. lembrar se é o botão do meio ou o da direita que cola
    13. apertar o botão
    14. voltar a mão ao teclado
    15. apertar Alt+F1 para voltar ao terminal original
    16. gastar segundos ou minutos preciosos tentando lembrar o que mesmo você estava fazendo antes desse malabarismo todo que roubou seu tempo e sua concentração.

Você odeia ratos?

Somente aqueles que têm um conector na ponta do rabo :)
Mas assim, mais especificamente, do que se trata esse documento?

Este documento descreve como usar somente o teclado para fazer as seguintes tarefas:
  1. Copiar e Colar entre terminais
  2. Copiar e Colar entre programas
  3. Copiar e Colar usando o 'screen', o gerenciador de janelas do console
  4. No X, mover o cursor usando as setas e "clicar"

Como copiar e colar sem o mouse

Sem usar um programa auxiliar como o screen (que será visto adiante), a única maneira de guardar um texto para depois reutilizá-lo em outro lugar é usar um arquivo temporário, que fará o papel do "buffer" do mouse. É muito simples:

Copiar: Você grava o texto desejado no arquivo temporário
Colar: Você lê o conteúdo do arquivo temporário

Dependendo de qual o programa que você está usando, ele tem como gravar em arquivo somente um trecho, ou uma seleção visual. O VI é um bom exemplo. Outros programas só têm opção de gravar um arquivo inteiro ou fazer um "dump", uma cópia completa de toda a tela.

Veremos como Copiar e Colar em cada programa, mas o primeiro passo é escolher que arquivo fará esse papel de ponte entre a Cópia e a Colagem. O seu nome deve ser curto, e de preferência deve estar no seu diretório $HOME. É bom também que seja um arquivo oculto (iniciado por um ponto). Sugestão: ~/.tmp. Curto, oculto, fácil.

Se preferir, você pode ainda guardar este nome em uma variável de ambiente, para poder modificá-lo caso necessário. No shells ash, bash e zsh:

export ARQTMP="$HOME/.tmp"

Seguem agora os programas e como usar este arquivo neles.

Shell (linha de comando)

Bash

Copiar
Saída de um comando comando > ~/.tmp
Linha de comando echo "comando" > ~/.tmp
Linha de comando (set -o vi) <esc>v (chama o VI)
Colar
Colar e editar um comando ???
Colar executando um comando `cat ~/.tmp` ou $(cat ~/.tmp)
Linha de comando (set -o vi) <esc>v (chama o VI)

zsh

O zsh não tem um "modo VI", mas você pode emulá-lo colocando estas linhas no seu ~/.zshrc:

edit-command() {
  if [[ -n "$BUFFER" ]]
  then echo $BUFFER > ~/.tmp2
       BUFFER="vim ~/.tmp2;`< ~/.tmp2`"
  else BUFFER="vim ~/.tmp;`< ~/.tmp`"
  fi
  zle accept-line
}
zle -N edit-command
bindkey "^[v" edit-command
Copiar
Saída de um comando comando > ~/.tmp
Linha de comando echo "comando" > ~/.tmp
Linha de comando (set -o vi) <esc>v (chama o VI)
Colar
Colar e editar um comando ???
Colar executando um comando `< ~/.tmp` ou $(< ~/.tmp)
Linha de comando (set -o vi) <esc>v (chama o VI)

Editores

Pico

Copiar
Arquivo todo Ctrl+O, depois digite ~/.tmp
Colar
Arquivo todo Ctrl+R, depois digite .tmp

Vim

Copiar
Arquivo todo :w! ~/.tmp
Texto selecionado :'<,'> w! ~/.tmp
Da linha 12 até a 15 :12,15 w! ~/.tmp
Da linha atual até o fim do arquivo : .,$ w! ~/.tmp
Da linha marcada 'a' até a marcada 'b' :'a,'b w! ~/.tmp
Colar
Arquivo todo :r ~/.tmp
Filtrar com comandos (bônus!)
Arquivo todo :%!comando
Texto selecionado (modo visual) :'<,'>!comando

Para facilitar, coloque estes mapeamentos no seu ~/.vimrc e usa as teclas F7 e F8 para copiar e colar texto. Estes mapeamentos funcionam nos modos de comandos, inserção e visual. (Obrigado ao pessoal da lista de discussão do Vim pelo vmap)

imap <F7> <esc>:w! ~/.tmp<cr>
 map <F7>      :w! ~/.tmp<cr>
vmap <F7> yGo<esc>p:.,$w! ~/.tmp<cr>u``
imap <F8> <esc>:r ~/.tmp<cr>
 map <F8>      :r ~/.tmp<cr>

Mail/News

Pine

O Pine usa o pico como editor padrão. Mas também é possível configurá-lo para utilizar o editor de sua preferência. Veja o tópico anterior "Editores" para informações de como Copiar e Colar.

mutt

O mutt usa o VI como editor padrão, ou o conteúdo de $EDITOR caso exista. Veja o tópico anterior "Editores" para informações de como Copiar e Colar.

slrn

O slrn usa o VI como editor padrão, ou o conteúdo de $EDITOR caso exista. Veja o tópico anterior "Editores" para informações de como Copiar e Colar.

Navegadores

lynx

Você pode configurar o editor de texto que o lynx usará indo na tela de opções (comando 'o'). Preencha o item "Editor", selecione a opção "Salvar opções no disco: [ ]" e finalmente "Aceitar Mudanças".

Copiar
Página toda Use o comando p, "salvar em arquivo local", ~/.tmp
Fonte HTML Use o comando \, depois p, "salvar em arquivo local", ~/.tmp
Colar
Em uma Caixa de Texto Ctrl+V, depois Cole com o editor de texto

links

Copiar
Página toda <ESC>, "File", "sAve as", ~/.tmp
Colar
???

w3m

O VI é o editor padrão do w3m. Você pode configurar outro indo na tela de opções (comando 'o'). Preencha o item "Editor" e aperte o botão "OK".

Copiar
Página toda Use o comando S, então digite ~/.tmp
Fonte HTML <ESC>, s, ~/.tmp
Colar
Em uma Caixa de Texto Seta para a direita, depois Cole com o editor de texto

IRC

BitchX

Coloque a linha seguinte no seu arquivo de configuração do BitchX:

/alias colar /exec -o cat ~/.tmp
Copiar
Conversas Ligue o LOG, depois copie direto do arquivo de log
Colar
No canal Use o comando /colar

tirc

Coloque a linha seguinte no seu arquivo de configuração do tirc:

/alias colar system $* cat ~/.tmp
Copiar
Conversas Ligue o LOG, depois copie direto do arquivo de log
Colar
No canal Use o comando /colar
Para outro canal ou usuário /colar -msg #canal ou /colar -msg nick

Screen, o gerenciador de janelas do modo texto

O screen é um programa que permite trabalhar com janelas no modo texto. Ele faz de tudo: cria e alterna entre janelas, tem barra de status com data e hora, abrir mais de uma janela na mesma tela, "dormir" todas as janelas, monitoramento de atividades e o principal: é possível selecionar, Copiar e Colar texto somente usando o teclado, sem precisar de mouse ou arquivos temporários.

Este documento falará apenas sobre o Copiar & Colar, para saber sobre as outras características do screen, acesse http://aurelio.net/doc/coluna/.

Copiar & colar entre janelas do screen

O screen tem um esquema muito bacana de Copiar e Colar que te deixa selecionar visualmente o texto desejado (igual no Vim), e Colá-lo em qualquer outra janela do screen. É muito fácil, um pouco estranho numa primeira tentativa, mas acostuma. Acompanhe:

Copiar
  • Ctrl+A
  • [
  • Mova o cursor ao começo do teto desejado (use as setas ou hjkl)
  • Barra de Espaço
  • Mova o cursor até o fim do teto desejado (use as setas ou hjkl)
  • Barra de Espaço

Colar
  • Ctrl+A
  • ]

Durante a seleção do texto, para mover-se basta utilizar as setinhas do teclado normalmente. Usuários de VI se sentirão em casa, pois vários do comandos de movimentação também funcionam durante a seleção. Já o Emacs é um pouco mais complicado (novidade... ;)

Teclas do VI

h j k l
0 ^ $
w b e
H M L
+ -
G g |
C-u C-d C-b C-f

Teclas do Emacs

Direto da Man Page do screen:
Emacs style movement keys can be customized by a .screenrc command. (E.g. markkeys "h=^B:l=^F:$=^E") There is no simple method for a full emacs-style keymap, as this involves multi-character codes.
Tradução: Teclas de movimentação estilo Emacs podem ser configuradas com comandos no .screenrc. (Ex.: markkeys "h=^B:l=^F:$=^E") Não há nenhuma maneira simples de configurar todos os movimentos do Emacs, pois eles são compostos de múltiplos caracteres.

Copiar & colar entre uma janela do screen e outra fora do screen

O screen tem uma opção chamada 'bufferfile', que é um arquivo opcional para guardar o conteúdo da seleção visual. Coloque a seguinte linha no seu .screenrc:

bufferfile ~/.tmp

E use os seguintes comandos para Copiar/Colar no arquivo temporário:

Copiar: Ctrl+A, >
Colar: Ctrl+A, <, Ctrl+A, ]

O comando PrintScreen

O screen tem o comando 'hardcopy' que copia todo o conteúdo da tela para um arquivo. As teclas para fazer esse "dump" são:

Ctrl+A, h

Mas ao invés disso, é mais legal aproveitar a própria tecla 'PrintScreen' do teclado para disparar este comando. Para isso, basta colocar a linha seguinte no .screenrc:

bind \034 hardcopy

O comando 'hardcopy' copia a tela para o arquivo ~/hardcopy.n, onde 'n' é o número da janela. Mas como temos apenas um arquivo temporário, basta "linkar" estes arquivos com o bom e velho ~/.tmp:

cd $HOME
ln -s hardcopy.0 ~/.tmp
ln -s hardcopy.1 ~/.tmp
ln -s hardcopy.2 ~/.tmp
ln -s hardcopy.3 ~/.tmp
...

E assim vai, até o número de janelas que você normalmente usa.

Usando o XFree86 sem mouse!

Apesar de ter sido feita para funcionar com o mouse, também é possível utilizar a interface gráfica sem ele!

Além do já consagrado Alt+TAB para trocar janelas, e a possibilidade de configurar alguns atalhos ("hotkeys") para disparar programas, também é possível mover o ponteiro e simular "cliques" de todos os botões do mouse.

É muito simples: no X, aperte Shift+NumLock para habilitar o modo "sem mouse". Nesse modo, usa-se o teclado numérico (aquele à direita) para se movimentar e "clicar", veja:

Teclas Funções
78946123 Move o ponteiro para todas as direções
/ Ativa o botão da esquerda
* Ativa o botão do meio
- Ativa o botão da direita
5 Clique (do botão ativado, qualquer que seja)
+ Duplo clique
Enter Triplo clique
0 Segura o botão (o que estiver ativado)
, Solta o botão

Para dar um "clique" com o botão esquerdo, mova o ponteiro com os números, depois aperte a / para selecionar o botão esquerdo, então aperte o 5 para clicar.

Para arrastar algo, movimente, depois / para o botão da esquerda, depois 0 (zero) para segurar o botão. Movimente-se novamente até o ponto desejado então aperte , (vírgula) para soltar o botão e terminar o arrasto.

Nota 1: Para que este "mouse alternativo" funcione é preciso comentar a linha XkbDisable na configuração do XFree.
Nota 2: Para teclados americanos (sem C cedilha) ao invés da vírgula é utilizada a tecla o ponto (.)

fvwm & fvwm2

O fvwm (e seu parente fvwm2) é um gerenciador de janelas extremamente leve e rápido, que além de outras características, permite configurar atalhos complementares que aceleram a movimentação do ponteiro com as setas do teclado, fazendo saltos! Adicione as linhas seguintes no ~/.fvwmrc:

# 1/10 de uma tela: seta + Ctrl
Key Left    A    C     CursorMove -10  +0
Key Right   A    C     CursorMove +10  +0
Key Up      A    C     CursorMove +0  -10
Key Down    A    C     CursorMove +0  +10

#   2% de uma tela: seta + Ctrl + Shift
Key Left    A    CS    CursorMove -2    0
Key Right   A    CS    CursorMove +2   +0
Key Up      A    CS    CursorMove +0   -2
Key Down    A    CS    CursorMove +0   +2

#   1% de uma tela: seta + Ctrl + Alt
Key Left    A    CM    CursorMove -1    0
Key Right   A    CM    CursorMove +1   +0
Key Up      A    CM    CursorMove +0   -1
Key Down    A    CM    CursorMove +0   +1

Feito isso, reinicie o fvwm e use as setas, segurando o Ctrl e veja o ponteiro correr pela tela! Apertando simultaneamente o Shift ou o Alt, os pulos têm tamanhos diferentes.

Mostre que você se libertou!

Dedetize sua máquina, roedores não serão bem-vindos novamente.

  1. Feche os buracos onde eles se escondem:
    rm -f /dev/*mouse
    

  2. Limpe seus rastros imundos:
    rm -f /etc/sysconfig/mouse
    

  3. Impeça-os de voltarem:
    rpm -e gpm mouseconfig
    

Obrigado

Thomas Köhler, Eliphas Levi Theodoro, Rudá Tente de Moura e Guilherme W. Manika pela ajuda com os comandos e dicas.