Ć (C Acentuado) vs. Ç (C Cedilha) no Firefox32 rodando num AMD64 com Kubuntu 64 Bits
Eu uso um Kubuntu Hardy (Ubuntu 8.04.1) 64 bits rodando numa máquina AMD64 e opto preferencialmente por programas 64 bits, pois não vejo o menor sentido em ficar usando software 32 bits em máquinas de 64 - totalmente nosense. No entanto, devido as limitações do Firefox 64 bits (falta de plugins, incluindo suporte a applets Java, Flash e alguns add-ons Firefox), fui obrigado (após muito relutar!) usar o Firefox 32 Bits. Pois só nele encontro o suporte aos recursos que normalmente utilizo.
Instalação do Firefox 32 Bits
Já faz muito tempo que utilizo essa solução, mas sempre que preciso instalar o Firefox 32 bits com seus plugins e tudo mais desejável, opto por um script que automatiza o processo de instalação (sim sou newbie, e daí?!). O script de instalação do Firefox32 (para várias versões e sabores) pode ser encontrado, em: Howto Install 32 bit Firefox with Flash w/sound and Java for AMD64.
Praga: Ć ao invés de Ç
Meu sistema está configurado para a língua inglesa, ou mais precisamente, inglês estadunidense. Meu teclado não tem a tecla com Ç e realmente odeio teclados ABNT/ABTN 2. Meu teclado é no formato americano internacional e ao invés do cedilha, tem uma tecla com vírgula.
Quem tem essa configuração, sabe que é um desafio acentuar corretamente com o c cedilha. Normalmente teclariamos a tecla com a aspa simples (ou apóstrofo, ou ainda o acento agudo) e em seguida teclariamos o C. Bem, no meu caso isso não resolve e tive que sair em busca de uma solução. Aos poucos fui soluciando o problema em diferentes lugares.
Aplicações: QT (e KDE)
Ao contrário de quem usa o Ubuntu, a galera do Kubuntu vai querer configurar o QT (e KDE) de modo que suas aplicações possam usar o '
+ c
para fazer o ç
. Para isso, edite o arquivo que se encontra em /usr/share/X11/locale/en_US.UTF-8/Compose
e substitua todos os Ć por Ç e ć por ç. Se preferir, use o script abaixo:
sudo -i cd /usr/share/X11/locale/en_US.UTF-8 cp Compose Compose.original cat Compose.original | sed -e 's/Ć/ć/' -e 's/Ç/ç/' > Compose exit
Se você estiver usando ISO-8859-1 ao invés de UTF8, provavelmente a modificação acima não será necessária no arquivo Compose
equivalente, pois ao menos na minha máquina ele está mapeado corretamente (entenda "corretamente" como: correto para o uso que se espera aqui no Brasil, pois em muitos paises da Europa se utiliza o c com acento agudo). No meu caso, a variável de ambiente LANG
está configurada para en_US.UTF8
.
E antes que alguém indague: sim, prefiro usar meu OS em inglês que em português e até pagaria para não ter meu OS em português!
Configurando o GTK
Antes de mais nada: ODEIO GTK e IGUALMENTE, ODEIO GNOME.
Para usar o ç
(c cedilha) em aplicações GTK, e isso inclui o Gnome, você terá que alterar o arquivo /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules
de modo a acrescentar a lingua inglesa na lista de linguagens do módulo cedilla
. Para isso, altere a linha:
"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa"
De modo que fique assim:
"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "en:az:ca:co:fr:gv:oc:pt:sq:tr:wa"
Isso dirá a GTK que o módulo
cedilla
- responsável pelo reconhecimento do pressionamento '
+c
como ç
- se aplique, também, a língua inglesa. Obviamente, isso só é necessário se você estiver usando inglês como língua em seu OS ou aplicativo. Para saber qual a sua configuração atual, vá no console (konsole) e digite:localeNo meu caso, está configurado para:
LANG=en_US.ISO-8859-1 LANGUAGE=en_US:en LC_CTYPE=en_US.utf8 LC_NUMERIC=en_US.utf8 LC_TIME=pt_BR LC_COLLATE=en_US.utf8 LC_MONETARY=pt_BR LC_MESSAGES=en_US.utf8 LC_PAPER=pt_BR LC_NAME=pt_BR LC_ADDRESS=en_US.utf8 LC_TELEPHONE=pt_BR LC_MEASUREMENT=pt_BR LC_IDENTIFICATION=en_US.utf8 LC_ALL=Você pode controlar esses valores por intermédio do arquivo de configuração
/etc/environment
. No meu caso, o arquivo está configurado, como:
JAVA_HOME=/opt/jdk1.6.0_06/jre
KDE_NO_IPV6=true
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANGUAGE="en_US:en"
LANG="en_US.UTF-8"
Esse valores também podem ser controlados pelo arquivo de configuração /etc/default/locale
.
Você deve forçar a GTK a carregar o módulo cedilla
. Para isso, você terá que ter uma variável de ambiente chamada GTK_IM_MODULE
e ela deverá ter o valor cedilla
. Se essa variável não explicitar o módulo cedilla
, ele não será carregado e você não terá o c cedilha, mas sim o c acentuado, mesmo que tenha acrescentado o "en" no arquivo libgtk2.0-0.immodules
.
Essa variável de ambiente pode ser configurada em qualquer um de vários lugares, como:
/etc/environment ~/.profile /etc/profile.d/Se quiser, simplesmente rode:
sudo -i echo "export GTK_IM_MODULE=cedilla" >> /etc/environment exit
O Teste
Após fazer as alterações para a correta acentuação do sistema, você deverá reiniciar o X (interface gráfica), para isso, pode simplesmente reiniciar a máquina ou pressionar: CTRL + ALT + BACKSPACE
. Você verá que as aplicações estão acentuando corretamente, tanto as QT, quanto GTK.
Firefox32 num Linux 64 bits
Quando você entrar no seu Firefox 32 bits ficará muito surpreso ao ver que somente ele não acentua corretamente! Se você iniciá-lo do console, verá uns avisos, assim:
usuario@maquina:~$ firefox
(firefox-bin:11868): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libqtengine.so: wrong ELF class: ELFCLASS64
(firefox-bin:11868): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/engines/libqtengine.so: wrong ELF class: ELFCLASS64
FoxyProxy settingsDir = /home/usuario/.mozilla/firefox/rb9nj3cx.default
(firefox-bin:11868): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/immodules/im-cedilla.so: wrong ELF class: ELFCLASS64
(firefox-bin:11868): Gtk-WARNING **: Loading IM context type 'cedilla' failed
(firefox-bin:11868): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/immodules/im-cedilla.so: wrong ELF class: ELFCLASS64
(firefox-bin:11868): Gtk-WARNING **: Loading IM context type 'cedilla' failed
(firefox-bin:11868): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/immodules/im-cedilla.so: wrong ELF class: ELFCLASS64
(firefox-bin:11868): Gtk-WARNING **: Loading IM context type 'cedilla' failed
Eu perdi muito tempo tentando entender o porquê disso. Pois conforme se vê acima, a GTK tenta carregar uma biblioteca 64 bits para uma aplicação que é 32 bits... Ao invés de carregar /usr/lib/gtk-2.0/2.10.0/immodules/im-cedilla.so
, ela deveria carregar: /usr/lib32/gtk-2.0/2.10.0/immodules/im-cedilla.so
. Obviamente ela não vai conseguir carregar o módulo de 64 bits, pois o Firefox que usamos é 32 bits. Só que isso é consequência, não é a razão do problema. E eu não consegui descobrir o porquê e se você pesquisar muito na Internet, verá que ninguém conseguiu, também.
Bem, compreendendo o fato dele estar tentando carregar uma biblioteca de 64 bits ao invés da que deveria e que essa biblioteca é o módulo que desejamos que seja carregado, pois ele fará nosso ç
e que também:
- O módulo a ser carregado pela GTK é informado na variável de ambiente
GTK_IM_MODULE
; - Há uma versão da GTK para 64 bits e outra para 32 bits. Logo, haverá dois arquivos de configuração desses módulos e para cada módulo uma versão de acordo com a arquitetura;
- O Firefox32 está, por alguma razão desconhecida, carregando o módulo de 64 bits. Após testes, verifiquei que a GTK também só lia o arquivo
/usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules
- que é de 64 bits -, mas não o arquivo para a configuração de 32 bits/usr/lib32/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules
; - Sei que ao menos aplicações GTK de 64 bits estão formando o c cedilha corretamente. Isso graças as configurações que foram realizadas anteriormente. Sendo assim, é desejável preservá-las;
Como não encontrava nenhuma solução para o problema e observado o já exposto, pensei em fazer o Firefox32 ao invés de usar o módulo GTK cedilla
de 64 bits, usar o equivalente para 32 bits. Tudo preservando as configurações para as outras aplicações.
A Solução para Ç no Firefox32
O que fiz foi copiar a biblioteca im-cedilla.so
de 32 bits para a pasta de módulos IM de 64 bits da GTK e, claro, a renomeei - dei o nome im-cedil32.so
. Também, alterei o arquivo da configuração de 64 bits da GTK dos módulos IM para contemplar o "novo" módulo im-cedil32.so
. O módulo internamente faz referência a seu próprio nome e por isso, tive que editar o arquivo (usei o khexedit, mas você poderia usar qualquer editor binário) e alterar no braço as referências a cedilla
para cedil32
.
Pronto. Funcionou! Isso foi o "suficiente".
sudo -i cd /usr/lib/gtk-2.0/2.10.0/immodules/ cp /usr/lib32/gtk-2.0/2.10.0/immodules/im-cedilla.so /tmp/im-cedilla.32bits.so apt-get install bbe bbe -e s/edilla/edil32/ /tmp/im-cedilla.32bits.so | sudo bbe -e s/type_cedil32/type_cedilla/ -o im-cedil32.so cd ../immodule-files.d/ echo "\ \"/usr/lib/gtk-2.0/2.10.0/immodules/im-cedil32.so\" \"cedil32\" \"Cedil32\" \"gtk20\" \"/usr/share/locale\" \"az:ca:co:fr:gv:oc:pt:sq:tr:wa:en:us\" " >> libgtk2.0-0.immodules exit
Se precisar, pode pegar o binário que foi criado no passo acima, aqui: im-cedil32.so
E finalmente alteramos o script de inicializaćão (e de agora em diante escrevermos inicialização) do Firefox 32 bits para que ele sempre inicialize a variável de ambiente GTK_IM_MODULE
para cedil32
ao invés de cedilla
. Para isso, localize o script de inicialização do Firefox32 e modifique-o de modo a acrescentar a variável de ambiente que precisamos. Coloque isso logo no início do script.
## the mozilla-bin binary to work.
##
export GTK_IM_MODULE=cedil32
moz_pis_startstop_scripts()
{
MOZ_USER_DIR=".mozilla/firefox"
# MOZ_PIS_ is the name space for "Mozilla Plugable Init Scripts"
Uma forma diferente de fazer Ç ccedilha
Para fazer o C cedilha em qualquer aplicação, mesmo sem ter que fazer nada do que relato anteriormente, basta usar: ALT_DIR
+ ,
+ c
. Só serve a tecla ALT
da direita, não serve a da esquerda.
Eu ainda prefiro: ´
+ c
;)
9 Comments:
Obrigado. Eu ja tava ficando louco com esse C com acento!
Como é que isso não está espalhado pela web toda??
Valeu, cara!
Agrade'ç'o pelo tutorial !
Andei procurando a um tempo atrás e não achava... já estava me acostumando a evitar o cedilla mesmo.
Mas GTK é legal :(
valeu !
Ola Marcio
Fiz um script para o GTK a partir de sua orientação,automatizando o processo:
sudo -i
cd /usr/lib/gtk-2.0/2.10.0/immodule-files.d/
cat libgtk2.0-0.immodules | sed -e 'az:ca:co:fr:gv:oc:pt:sq:tr:wa' -e 'en:az:ca:co:fr:gv:oc:pt:sq:tr:wa'
echo "export GTK_IM_MODULE=cedilla" >> /etc/environment
exit
Abs
Andre Uebe
Ççççç!
=)
Opa Márcio!
Valeu pelas dicas cara, mas aconteceu o seguinte. Funcionou tudo para o Gnome, porém no Amarok (que usa a engine do KDE) não o ç não funciona, continua saindo c com acento agudo.
Eu alterei o arquivo que vc mencionou no início do post, porém não funcionou, tem alguma dica?
Prezado Márcio, tá pra nascer um cara mais bamba que você. Suas dicas funcionaram com perfeição. Muitíssimo agradecido. E Feliz Natal.
- c.a.t.
Parabéns pela dica.
Tutorial simples que funciona.
Aperto certeiro no parafuso correto!
Caro Márcio
Primeira dúvida: tenho meu ubuntu 9.04 configurado em português , com um notebook toshiba com teclao americano, mas não consigo escrever o cedilha com " '+ c ", apesar de o teclado estar configurado como EUA INTERNACIONAL;
Segunda dúvida: após seguir suas orientaćoes, apesar de não serem para uma configuraćão em português, resolvi o problema do cedilha, porém fiquei com o meu SCIM (método de entrada para língua asiática) desabilitado, o que me forćou a desfazer o segundo passo de sua dica (a edićão do arquivo /etc/environment)
Como posso ter o cedilha e o SCIM funcionando simultaneamente?
Grande abraćo,
Flávio.
Boa tarde amigo. Sei que seu tutorial é meio antigo mas preciso muito que me ajude. Eu uso o FreeBSD e consegui fazer o QT funcionar legal com seu tuto. Mas o GTK que vc se refere como "/usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules" no meu sistema está em um endereço diferente: "/usr/local/lib/gtk-2.0/2.10.0/immodules/" e dentro desse diretório só tem arquivos com extensão .so .la e .a. Tem inclusive o arquivo im-cedilla.a (.so e .la). Vc poderia me ajudar a fazer a alteração correta?
Post a Comment
<< Home