Gravando screencast em Linux

O Rodrigo Urubatan publicou hoje o artigo “Gravando ScreenCasts no Linux(Ubuntu/Kubuntu)! E rodando em qualquer PC ou disponibilizando via web”, com um passo a passo simples e direto para se gravar sessões de uso da tela, o chamado screencast, no Linux.

O guia dá como exemplo o Ubuntu (que por sinal é excelente e o que eu uso), mas as ferramentas servem para outras distribuições Linux.

O kit de ferramentas — todas software livre, claro — utilizadas é:

  • recordMyDesktop, principal programa, é o gravador de sessão de uso do desktop, para GNU/linux, capaz de capturar e codificar em vídeo o que acontece na tela. Utilitário de linha de comando (escrito em C) e front-ends gráficos (escritos em Python), com opções de toolkits gráficos pyGtk (gtk-recordMyDesktop) e pyQt4 (qt-recordMyDesktop). Também pode gravar áudio via ALSA, OSS ou JACK.
  • Formato de compressão de vídeo Theora Ogg gerado pelo recordMyDesktop.
  • MEncoder, codificador de vídeo incluso com o MPlayer, capaz de converter o formato de vídeo OGG para AVI mais comum.
  • FFmpeg, conversor de aúdio e vídeo, permite converter o vídeo AVI para formato Flash Video (FLV), para ser facilmente disponibilizado pela internet.
  • JW FLV PLAYER, script Flash Player criado por Jeroen Wijering, que pode ser usado como exibidor do vídeo.

O passo-a-passo de Urubatan começa desde o download e instalação dos pacotes necessários (no caso do Ubuntu, com apt-get ou outro gerenciador de pacotes Debian). Confira no artigo citado!

Uso de bibliotecas gráficas Java em ambiente servidor Unix/Linux

Entenda e soluciona erros do tipo Can"t connect to X11 window server em aplicações rodando em um servidor Java em sistema operacional Unix ou Linux.

Fundamentos

Aplicações rodando em um servidor Java EE podem precisar utilizar bibliotecas, frameworks componentes ou primitivas gráficas. Um caso típico é o processamento dinâmico de arquivos ou fluxos de dados de objetos gráficos como uma imagem, por exemplo, para a geração de um gráfico em um relatório, ou de um código de barras em um documento.

A maioria dos componentes gráficos pressupõe a existência de um ambiente gráfico (java.awt.GraphicsEnvironment), com dispositivo de exibição (tela), além de teclado e mouse. De fato, não faz sentido criar um componente gráfico desktop em Java como um Botão (Button) ou janela (Window, Frame, Dialog etc.) sem que o Java tenha um ambiente gráfico provendo as definições e configurações necessárias para a existência e exibição do componente.

Mas componentes gráficos mais genéricos como Canvas, Panel e Image podem ser criados sem existência de modo gráfico no ambiente de execução da VM Java.

Enquanto as aplicações Java desktop (Java SE) com interface gráfica (Swing, AWT etc.) requerem um ambiente gráfico para sua exibição onde a VM Java está executando, aplicações Java EE são processadas em uma VM Java no servidor, mas a exibição ocorre no lado cliente, em geral em um navegador web. Muitas vezes, um ambiente de execução servidor Java EE nem possui modo gráfico ativo.

Normalmente isso não faz diferença em sistemas Microsoft Windows, onde as primitivas do ambiente gráfico sempre estão presentes. Mas em sistemas operacionais como Unix/Linux, há diferenças no ambiente da execução da VM Java entre o modo gráfico interativo — onde há um servidor de ambiente gráfico X11 (X Window System, ver X.Org e XFree86) em execução — e o modo batch ou console não interativo (serviços ou processos daemon).

O ambiente servidor não interativo, sem dispositivos gráficos, é chamado no jargão técnico de modo “sem cabeça” ou “headless” em inglês.

Problema e solução

Para usar bibliotecas, componentes ou primitivas gráficas em ambiente servidor Unix/Linux, não interativo e sem modo gráfico, configure o Toolkit gráfico da VM Java para executar em modo “sem-cabeça”, ou Headless Mode, existente desde o J2SE 1.4.

Para isso, é necessário definir a propriedade de sistema java.awt.headless como true. Na linha de comando da execução Java, usa-se a opção -D conforme a seguir:

java -Djava.awt.headless=true

Alternativamente no código Java, no início da aplicação antes que o Tookit gráfico seja inicializado, pode-se executar:

System.setProperty("java.awt.headless", "true");

Sem esta definição em servidores Unix/Linux, a tentativa de uso de componentes ou métodos gráficos deve gerar uma erro similar a:

Exception in thread "main" java.lang.InternalError:
Can"t connect to X11 window server
using ":0.0" as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.<clinit>
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment
        at java.awt.Window.<init>
        at java.awt.Frame.<init>
        at java.awt.Frame.<init>
        at javax.swing.JFrame.<init>

Em Headless Mode, aplicações podem realizar as seguintes operações:

  • Criar componentes genéricos como Canvas, Panel, Image e outros componentes leves Swing que não sejam top-level;
  • Obter informação sobre fontes disponíveis, suas métricas e configurações;
  • Definir cor para renderização de texto e gráficos;
  • Criar e manipular imagens, bem como prepará-las para renderização;
  • Imprimir usando as classes java.awt.PrintJob, java.awt.print.*, javax.print.*;
  • Emitir um bipe de áudio.

Já a tentativa de criação ou uso de componentes ou primitivas que requerem obrigatoriamente um ambiente gráfico, em Headless Mode gera a seguinte exceção: java.awt.HeadlessException. Neste caso, verifique se a operação desejada realmente pode ser executada no servidor (em modo não interativo), ou se há outra forma de fazer a operação que não necessite do modo gráfico.

Referências

Linux Ext2/Ext3 filesystem em Windows

Deseja acessar (leitura/escrita) partições de disco formatadas em Linux com o sistema de arquivos (filesystem) Ext2 ou Ext3?

Baixe e instale o Ext2 IFS for Windows – Ext2 Installable File System (IFS) for Windows, por Stephan Schreiber, driver gratuito (freeware) que provê suporte total a partições Ext2 para Windows NT4.0/2000/XP/2003.

Partições Ext3 também são suportadas, já que este formato de filesystem consiste basicamente no Ext2 acrescido do recurso de journaling. Journaling é um mecanismo mais eficiente para o controle e recuperação de falhas (interrupção anormal), em que a informação dos arquivos abertos é mantida em um histórico (log) chamado de journal. O Ext2 IFS monta uma partição Ext3 desde que não haja nenhuma informação no journal, indicando possível fechamento (unmount) anormal da partição, para evitar qualquer perda ou dano aos dados. Em resumo, o Ext2 IFS pode montar partições Ext3 de forma segura, apenas sem tirar proveito do recurso de journaling.

Existem drivers Ext2/Ext3 para Windows como software livre. Cito Ext2Fsd – Ext2 File System Driver for Windows x86 e 64-bits, projeto em SourceForge, e Ext2ifs (nome quase idêntico ao Ext2 IFS), por John Newbigin. Mas estes parecem ainda incipientes.

Outras opções mais básicas são os programas que permitem ler arquivos de uma partição Linux Ext2/Ext3, como o freeware Linux Reader, da DiskInternals, ou o livre Explore2fs.

Contudo, o Ext2 IFS se mostrou simples, efetivo e estável. Em meu Windows XP, sequer precisou reiniciar o computador após a instalação para acessar uma partição Linux como novo disco local.

Um aviso: Acessar partições Linux pelo Windows pode ser muito prático e cômodo, mas cuidado para não modificar ou danificar nenhum arquivo de sistema do Linux!

Para saber mais:

10 coisas a fazer em um novo PC antes de conectar à Internet

Ainda na idéia de lista de tópicos essenciais como o artigo 20 procedimentos para evitar golpes na web, podemos complementar os passos de segurança com estes dois guias rápidos do portal TechRepublic, para baixar/ver em formato PDF (em inglês):

Descritivo apresentado pelo TechRepublic:

É apenas um fato da vida na era da informação: Todo sistema operacional recentemente instalado, não importa qual você escolha, requer ajustes preparatórios antes de ser considerado pronto para o uso do dia-a-dia. Estes guias para baixar listam os passos críticos que você deve seguir quando preparando um novo PC para sua primeira incursão à Internet.

Reproduzo aqui as 10 coisas para um PC Windows:

  1. Crie um CD (ou outra mídia) de inicialização/recuperação.
  2. Remova as aplicações promocionais, que o fornecedor do PC costuma embutir.
  3. Instale um bom software antivírus e de segurança na internet.
  4. Certifique-se que o firewall (do Windows ou do software de segurança) está ativado.
  5. Instale impressora e outros dispositivos conectados ao computador.
  6. Crie uma senha (e certifique-se de memorizá-la) para a conta de administrador do computador.
  7. Crie uma nova conta de usuário para seu uso cotidiano, com senha.
  8. Desligue os serviços desnecessários do Windows.
  9. Crie um ponto de restauração do sistema.
  10. Instale e configure um roteador.

Flash para Firefox em Linux

[Atualizado em 17/09/2007.]

Flash Player 9

O novo Flash Player 9 (versão 9.0.48.0, de 16/01/2007) para Linux está disponível, bastando instalar o pacote flashplugin-nonfree, no repositório Não-livre (Multiverse) do Ubuntu 7.04 (Feisty Fawn). Flash Player 9 foi também portado retroativamente (backported) para Ubuntu 6.06 LTS e 6.10.

Vídeo e som no Flash Player 9 funcionam de imediato com Firefox 2 do Ubuntu 7.04, sem necessidade de pacotes ou configurações adicionais.

Você deve obter o Flash Player de uma destas fontes:

  • Recomendado: Instalando o pacote flashplugin-nonfree do repositório Não-livre (Multiverse) do Ubuntu, utilizando um gerenciador de pacotes — Synaptic em modo gráfico, aptitude em modo texto, apt-get em linha de comando.
  • Baixando diretamente da Adobe e instalando manualmente, a partir de Adobe Flash Player Centro de download, ou de Adobe Web Player Alternates – Linux.
  • Baixando e instalando manualmente, de macromedia.mplug.org.

Flash Player 7 com Firefox 1.5 e Ubuntu 6.06

Se você tiver instalado o plug-in para Firefox Flash Player 7 Linux (versão 7.0.68 de setembro/2006), para exibir animações e vídeos em Flash dentro do Firefox 1.5 em Linux Ubuntu, recomendo fazer as devidas atualizações de Flash e Firefox.

Nas versões antigas com Ubuntu 6.06 LTS, você pode ter a decepção — como eu tive — de não ter sons reproduzidos e dos vídeos em Flash travarem após tocar apenas 1 ou 2 segundos. Escavando um bocado na Internet, eu encontrei duas soluções distintas. Após aplicar ambas, os fluxos Flash vídeos passaram a tocar continuamente e com som no Firefox 1.5.0.7 do Ubuntu 6.06.

Configurar Firefox para alsa-oss

  1. Instale o pacote alsa-oss. Comando utilizando aptitude:
    $ sudo aptitude install alsa-oss
  2. Edite o arquivo /etc/firefox/firefoxrc e altere o DSP de “none” para “aoss”. Usando o editor gedit, por exemplo:
    $ sudo cp -p /etc/firefox/firefoxrc /etc/firefox/firefoxrc.backup
    $ sudo gedit /etc/firefox/firefoxrc

    FIREFOX_DSP=”aoss”
    
  3. Reinicie o Linux.

Acertar dependências ESD para Flash

  1. Crie o link simbólico /usr/lib/libesd.so.1 da biblioteca procurada pelo Flash:
    $ sudo ln -s /usr/lib/libesd.so.0 /usr/lib/libesd.so.1
  2. Crie um arquivo /tmp/.esd/socket esperado pelo Flash:
    $ sudo mkdir -p /tmp/.esd/
    $ sudo touch /tmp/esd/socket

Depois de tudo configurado, abra o Firefox, navegue por exemplo para YouTube ou Google Video e teste se os fluxos de vídeo em Flash tocam com imagem e som sem problemas.

Para saber mais (em inglês):

Codificação de caractere e o Ubuntu pt_BR

[Atualizado em 2008-01-04.]

O suporte a idiomas e configurações regionais internacionais — a chamada localização ou locale — nos sistemas operacionais e seus aplicativos envolve uma série de aspectos, como: tradução de mensagens; formatos de data, número e moeda; codificação de caractere.

O Ubuntu Linux é uma excelente distribuição livre baseada na Debian, com bom suporte a dispositivos, aplicativos e idiomas. Porém, esta distribuição pode trazer uma pequena dificuldade no suporte ao Português do Brasil: a codificação de caractere. Verifiquei existência dessa situação nas versões do Ubuntu 6.06 LTS (codinome Dapper Drake) e 7.04 (Feisty Fawn). Pode ocorrer em outras versões, mas não testei.

Eis aqui do que se trata e como resolver eventual dificuldade ou incompatibilidade.

Codificação de caracteres

Codificação de caractere é um aspecto técnico existente nos computadores e dispositivos digitais em geral. Para entendê-lo, é preciso saber que toda informação em um computador é armazenada como “bits e bytes”, ou trocando em miúdos, codificada como códigos numéricos. O byte ou octeto é um conjunto de 8 bits (dígitos binários = 0 ou 1) que pode ser representado como um número inteiro entre 0 (00000000) e 255 (11111111).

Cada caractere textual — letra (maiúscula ou minúscula. acentuada ou não), algarismo e símbolo — com o qual o computador lida deve ser representando como um número para que possa ser armazenado em arquivo, transmitido em rede etc. de forma padronizada. O sistema que define uma tabela padronizada com o conjunto de caracteres possíveis em determinado idioma e seus respectivos formatos de representação numérica é chamado codificação de caractere.

Para a maioria do mundo ocidental que usa o alfabeto latino ou romano, um Byte com seus 256 valores possíveis é suficiente para representar todos os caracteres mais comuns dos idiomas, incluindo as letras acentuadas. Existe um padrão internacional para essa codificação de caractere Ocidental denominado ISO/IEC 8859-1. É este padrão que Brasil, Portugal e outros países ocidentais de língua latina em geral utilizam em seus sistemas de computador, principalmente na plataforma Windows.

Alguns idiomas utilizam símbolos e acentuações menos comuns do alfabeto latino e, para estes, existem variações do padrão ISO 8859, como o ISO-8859-15 entre outros. Já idiomas orientais como o japonês e o chinês podem possuir milhares de símbolos em seus alfabetos de forma que apenas um byte não consegue conter toda sua diversidade. Em função disto, existe um padrão internacional de codificação que contempla alfabetos do mundo todo, chamado Unicode (veja unicode.org) ou Universal Character Set (UCS).

Existem alguns formatos de codificação de caractere baseados no Unicode/UCS. Um é o UTF-16 (também conhecido como UCS-2), que usa 16 bits (ou 2 bytes/octetos) para representar os caracteres, o que permite 65526 possibilidades e assim comporta grande diversidade de alfabetos. Como UTF-16 é uma codificação bem diferente da ocidental comum que usa apenas 1 byte, a codificação UTF-8 tenta ser um meio-termo: usa 8 bits para representar os 128 caracteres ASCII básicos, 16 bits para caracteres latinos acentuados e alguns outros alfabetos (como Grego), e 3 ou 4 octetos para demais caracteres e alfabetos.

Assim, caracteres latinos acentuados têm código de 8 bits na ISO 8859-1 mas são codificados no UTF-8 com 16 bits. Ou seja, caracteres latinos acentuados são representados diferentemente em ISO 8859-1 e UTF-8. Os bytes resultantes armazenados são diferentes. Saber em que formato um arquivo ou conteúdo textual qualquer está representado/armazenado é essencial para interpretá-lo corretamente.

Problema e solução no Ubuntu

O problema é que, para o idioma Português do Brasil no Ubuntu (6.06 LTS, 7.04), a codificação de caractere definida como padrão foi a UTF-8, quando o padrão mais comum no país é o ISO-8859-1. O resultado prático dessa divergência é que alguns caracteres acentuados — lidos de arquivos gravados em ISO-8859-1, mas indevidamente interpretados como UTF-8 — não são exibidos corretamente, muitas vezes aparecendo como uma interrogação ou outros símbolos estranhos.

Para corrigir o problema, basta definir a codificação de caractere padrão como ISO-8859-1 no locale para Português do Brasil (pt_BR), conforme apresentado neste texto: ISO-8859-1 no Dapper (FINAL). Reproduzo os passos a seguir:

  1. Certifique-se que os seguintes pacotes estejam instalados:
    • language-pack-pt
    • language-pack-pt-base

    Para instalar, você pode usar o Gerenciador de Pacotes Synaptic (gráfico), ou executar esta linha de comando (requer sudo / permissão de root):
    $ sudo apt-get install language-pack-pt language-pack-pt-base

  2. Edite o arquivo /var/lib/locales/supported.d/local e adicione a seguinte linha no início do arquivo (requer sudo / permissão de root):
    pt_BR.ISO-8859-1 ISO-8859-1
  3. Edite o arquivo /etc/locale.alias e adicione a seguinte linha (requer sudo / permissão de root):
    pt_BR pt_BR.ISO-8859-1
  4. Edite o arquivo /etc/environment e altere o parâmetro LANG da seguinte forma (requer sudo / permissão de root):
    LANG="pt_BR"
  5. Atualize os locales, com o comando (requer sudo / permissão de root):
    $ sudo dpkg-reconfigure locales
  6. Para ativar imediatamente as novas configurações no ambiente gráfico, reinicie o seu X, com a seguinte combinação de teclas:
    [Ctrl] + [Alt] + [Backspace]
  7. Abra o arquivo ~.bashrc (no seu home) e adicione a seguinte linha no final do arquivo [NOTA: para mim, este passo não foi necessário]:
    source /etc/environment

Problemas similares

Agora que você já sabe da divergência entre os padrões de codificação de caractere ISO-8859-1 e UTF-8, saiba também que em vários outros ambientes pode ocorrer este problema, quando um conteúdo gravado em ISO-8859-1 é incorretamente classificado ou assumido como UTF-8, ou vice-versa, levando à exibição incorreta.

Um situação comum ocorre na web. Se você abrir uma página web e caracteres estranhos aparecerem no lugar da acentuação, é provável que a identificação de codificação de caractere da página tenha sido incorreta.

Em geral, a causa do problema é um erro de configuração no servidor web ou no sistema operacional deste, onde a codificação de caractere padrão esteja definida como UTF-8, mas a página web apresentada usa efetivamente ISO-8859-1, ou vice-versa. Isso faz com que o servidor web especifique no cabeçalho HTTP o conjunto de caracteres (Content-Type charset, conforme RFC 2616 seção 14.17) incorreto.

Outras vezes, a culpa é da própria página HTML, que pode ter informado o conjunto de caracteres incorreto em suas tags de configuração (meta http-equiv=”Content-Type” ou xml encoding). De uma forma ou de outra, a informação errada fornecida ao navegador web induz ao erro na exibição.

Nestes casos, primeiro tente a seleção automática de codificação, usando a opção de menu Exibir » Codificação » Selecionar automaticamente/Universal (Mozilla Firefox) ou Seleção automática (Internet Explorer). Se não funcionar, você pode contornar o problema de uma página ou site específico forçando manualmente a codificação de caractere, para UTF-8 ou ISO-8859-1, no menu Exibir » Codificação do navegador. Ao sair da página ou site problemático, lembre-se de retornar a codificação de caractere no navegador para automática.

Olhando à frente para internacionalização

Embora o padrão ISO-8859-1 seja atualmente muito adotado em arquivos texto no Brasil — em grande parte por coincidir com a página de código padrão do Windows em Português e outros países ocidentais — e comporte de forma satisfatória os caracteres acentuados do alfabeto latino ocupando um byte por caractere, ele não é uma imposição.

Em conteúdo e aplicações, principalmente na Internet, onde aspectos de internacionalização são importantes, o formato Unicode com a codificação UTF-8 é a principal alternativa quando se deseja ou se necessita uma codificação universal que comporte qualquer idioma.

Se sua prioridade não for compatibilidade com conteúdo legado em codificação ISO-8859-1 e sim suporte a internacionalização, o UTF-8 padrão do Ubuntu é opção adequada.

Para saber mais (maioria em inglês):

MP3 no Linux

A maioria das distribuições livres Linux não instalam por padrão o suporte a MP3, por questões legais de patente. O MP3 usa um algoritmo de compactação que é patenteado por seu criador. Assim, a redistribuição de software utilizando um algoritmo patenteado para MP3 é restrita.
A Comunidade de Software Livre de Rondônia tem um artigo que explica isto em detalhes e mostra como adicionar suporte a MP3 em sua distribuição Linux.

O resumo é que existe a biblioteca Gstreamer, que possui plug-ins com suporte a MP3. Este pacote não é livre e por isso exige que você configure um respositório restrito no gerenciador de pacotes da sua distribuição Linux, para que você possa instalar facilmente os pacotes necessários. No Fedora/RedHat configura-se isto para o rpm e yum — repositório Livna — enquanto no Ubuntu/Gnome utiliza-se apt-get e Synaptic — repositórios Universe (não oficial, suportado pela comunidade) e Multiverse (softwares não-livres mantidos pela comunidade).

No Ubuntu

Cito aqui os passos que utilizei para ter o suporte MP3 em um Ubuntu Linux 6.06 LTS (Dapper Dake) e 7.04 (Feisty Fawn) em Português, para instalar o pacote gstreamer0.10-plugins-ugly, devendo-se utilizar uma conta com acesso a administrador (permissão de sudo):

  1. No menu do Gnome, vá em Sistema » Administração » Gerenciador de Pacotes Synaptic. Deve se solicitada a senha para acesso como root.
  2. No Synaptic, escolha o menu Configurações » Repositórios.
  3. Certifique-se que as opções “Software de código-fonte aberto (Binary) mantido pela comunidade (Universe)” e “Software (Binary) Não-livre, restrito por copyright ou problemas legais (Multiverse)” estejam marcadas. Se não estiverem, ative. Depois feche esta janela de diálogo.
  4. Escolha Recarregar (Ctrl+R), para atualizar as informações de pacotes.
  5. Escolha Procurar e pesquise por “ugly”.
  6. Marque para instalação o pacote gstreamer0.10-plugins-ugly e escolha Aplicar.

Pronto. Se você conseguir importar MP3 em seu programa de música no Linux (como o Rhythmbox) mas a saída ficar sem som, talvez este artigo ajude: Habilitando som nas animações em flash no Ubuntu.

Existem soluções ainda mais abrangentes para o Ubuntu, como o script EasyUbuntu, que se propõe a instalar não só o suporte a MP3 no Ubuntu, mas uma grande variedade de pacotes restritos (proprietários) de uso comum, para multimídia, web, compactadores, sistema e voz sobre IP.

Mouse multi-botões no Linux

Utilizo Linux com a ótima distribuição Ubuntu 6.06 LTS. Totalmente livre e baseada na distribuição Debian, o Ubuntu oferece:

  • fácil instalação com grande compatibilidade com computadores desktop e notebooks e todo tipo de dispositivos;
  • enorme disponibilidade de pacotes livres (estilo Debian) prontos para download e instalação (fácil através do gerenciador de pacotes Synaptic);
  • vasta documentação, inclusive com boa disponibilidade de interface e material em Português do Brasil;
  • e, principalmente, um bom suporte, livre e gratuito oferecido pela grande comunidade de usuários, ou com opção de suporte comercial profissional para quem precisar.

A instalação do Ubuntu 6.06 reconheceu automaticamente todos os dispositivos de hardware do meu computador. Alguns pequenos detalhes ficaram mais práticos depois de alguma configuração manual. Um deles foi acrescentar a montagem automática da partição Windows NTFS em minha instalação com boot dual, que falarei em outra oportunidade.

Logitech MX700 Outra melhoria foi na configuração de um mouse multi-botões. Utilizo o mouse Logitech MX700, que possui scroll e diversos botões extras, incluindo dois laterais para voltar e avançar páginas na web. O scroll e os botões adicionais (além do direito e esquerdo básicos) não ficaram operacionais na instalação padrão do Ubuntu.

Infelizmente, o suporte da Logitech não oferece ajuda para sistemas operacionais não Windows, mas uma pesquisa na Internet me trouxe informações com as quais consegui avanços.

O mouse Logitech MX700 tem interface USB e foi mapeado como o dispositivo /dev/input/mice. Por curiosidade, uma consulta ao comando:

$ cat /proc/bus/input/devices

listou o teclado, o microfone e o mouse. As configurações listadas para o mouse foram:

I: Bus=0011 Vendor=0002 Product=0002 Version=003d
N: Name="PS2++ Logitech MX Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input2
H: Handlers=mouse0 event2 ts0
B: EV=7
B: KEY=ff0000 0 0 0 0 0 0 0 0
B: REL=103

Editei então (em sudo como root) o arquivo /etc/X11/xorg.conf. Localizei a seção “InputDevice” que configura o mouse e incluí um mapeamento de botões e outras sugestões que colhi no artigo Tip: Logitech MX700-900 Mouse with Linux and Firefox. Se for mexer em seu arquivo de configurações, é recomendável fazer uma cópia da versão atual antes:

$ sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
$ sudo gedit /etc/X11/xorg.conf

A seção alterada ficou assim:

# Options Buttons e ButtonMapping para mouse Logitech MX700
Section "InputDevice"
	Identifier	"Logitech MX700" # era "Configured Mouse"
	Driver		"mouse"
	Option		"CorePointer"
	Option		"Device"		"/dev/input/mice"
	Option		"Protocol"		"ExplorerPS/2"
	Option		"ZAxisMapping"		"4 5"
	Option		"Emulate3Buttons"	"false" # era "true"
	Option		"Buttons"		"7"
	Option		"ButtonMapping"		"1 2 3 6 7"
	Option		"Dev Name"		"PS2++ Logitech MX Mouse"
	Option		"Dev Phys"		"isa0060/serio1/input0"
	Option		"Resolution"		"800"
EndSection

Defini o mouse como 7 botões, apesar de identificar nele 10 botões/funções: 2 básicos (direito, esquerdo), 2 laterais (avançar, voltar), scroll com 3 funções (subir, descer, pressionar), botão subir acima do scroll, botão descer abaixo do scroll, e o botão de alternar aplicativos (abaixo do de descer). Coloquei o mapeamento com a ordem “1 2 3 6 7” e desativei a emulação de 3 botões. Ainda adicionei, mesmo sem ver nenhuma utilidade prática imediata, as opções “Dev Name”, “Dev Phys” e “Resolution”.

Outra configuração que alterei apenas por capricho foi o “Identifier”, que a instalação do Ubuntu define como “Configured Mouse”. Coloquei um nome mais preciso, “Logitech MX700”. Porém, por alterar esta identificação, tive que alterar também o nome correspondente na seção “ServerLayout”:

Section "ServerLayout"
	...
	InputDevice	"Logitech MX700" # era "Configured Mouse"
EndSection

Salvei o arquivo e reiniciei o Linux, para ativar as novas configurações.

Os resultados práticos que obtive foram: a roda de scroll passou a rolar o conteúdo das janelas para cima e para baixo ao girá-la; testando no navegador web Mozilla Firefox, os botões laterais de avançar e voltar também funcionaram; o botão de descer (abaixo do scroll) também passou a rolar conteúdo para baixo.

Se a configuração funcionar sem problema, é recomendável que você atualize a validação MD5 para o arquivo xorg.conf, de forma que caso um gerenciador de pacotes — por exemplo, durante a instalação de um driver de dispositivo gráfico — valide este arquivo de configuração, o considere íntegro:

$ cd /var/lib/x11/
$ sudo cp -p xorg.conf.md5sum xorg.conf.md5sum.backup
$ md5sum /etc/X11/xorg.conf | sudo tee /var/lib/x11/xorg.conf.md5sum

O que ainda não ficou funcional foi o seguite: o botão de subir (acima do scroll) ficou com o mesmo efeito de “voltar” no navegador; e a função de pressionar a roda scroll (que no Windows ativa a rolagem avançada), bem como o botão de alternar aplicação, ainda ficaram inativos.

Vi também artigos que sugerem o uso de um outro driver de mouse, chamado “evdev”, baseado em eventos. Em uma tentativa que fiz de utilizá-lo no arquivo xorg.conf, o mouse ficou totalmente inoperante, então voltei à opção que estava funcionando. Também não cheguei a utilizar o comando xmodmap.

Atualização: No Ubuntu 8,04 LTS, foi necessário utilizar o driver evdev para que os botões laterais de “voltar” e “avançar” do mouse funcionassem. Veja as configurações que utilizei no artigo Mouse multi-botões no Ubuntu 8.04.

Se alguém souber configurações melhores, agradeço a informação.

Outras referências: