Tecnologia, Futebol e Divagações
21 Sep // php the_time('Y') ?>
Eu estava tendo um problema com a configuração das teclas de função no meu notebook Vostro 1000 no Fedora 7. O grande problema era que algumas teclas era detectadas e outras não. Essas teclas que eram detectadas foi razoavelmente fáceis de configurar atráves do xmodmap. Mas havia um grande problema: As teclas que não geravam evento no xev. Então, mostrarei neste artigo como configurar as teclas das duas maneiras:
Nessa 1ª parte mostrarei como configurar as teclas de função que o X detecta e as funções para mostrar a bateria e de ativação/desativação do Wifi (naqueles casos em que o wifi é controlado por uma tecla Fn).
Na instalação padrão do Fedora 7, as teclas de função do Vostro 1000 não foram configuradas apropriadamente. E, deixá-las sem essa configuração seria perder uma boa parte das funcionalidades da máquina, como por exemplo, ativar/desativar o Wifi, trocar a saÃda do vÃdeo para um projetor, ejetar o CD/DVD ou usar o teclado numérico. Algumas destas combinação de teclas estavam configuradas de maneira incorreta, como o teclado numérico no meu caso e outras simplesmente não faziam nada. O primeiro passo era configurar as teclas que estavam trocadas e as que o sistema conseguia detectar.
Reconfigurando com XModmap:
O primeiro passo para configurar as teclas de função é descobrir qual os keycodes das teclas. Isto é possÃvel através de um programa chamado xev. Quando o programa abrir uma janela, digite a combinação de tecla que você quer descobrir o keycode. O resultado será algo parecido com isto:
KeyPress event, serial 29, synthetic NO, window 0x3c00001,
root 0x45, subw 0x0, time 632791109, (429,361), root:(439,458),
state 0x0, keycode 160 (keysym 0×0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 29, synthetic NO, window 0x3c00001,
root 0x45, subw 0x0, time 632791169, (429,361), root:(439,458),
state 0x0, keycode 160 (keysym 0×0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Esta é uma saÃda quando digitei a combinação Fn+End, que faz o mute do computador. Os negritos são grifos meus. São as informações importantes que você iremos precisar para mapear as teclas para as funções que queremos.
O keycode 160 é auto-explicativo. É o codigo das teclas mapeadas. É esse codigo que usaremos. O NoSymbol significa que nenhuma função ou valor está atribuÃdo a combinação da tecla. É esta situação que queremos. Mas aviso que poderá haver alguma outra informação. Tenha certeza que você realmente quer mudar o valor da função atribuÃda.
A seguir, adicione o keycode e a função no arquivo /etc/X11/Xmodmap
[root@eva01 X11]# echo “keycode 160 = XF86AudioMute” >> /etc/X11/Xmodmap
[root@eva01 X11]#
Uma lista de funções pode ser encontrada no arquivo/usr/share/X11/XKeysymDB
Reinicie o X.
Uma maneira para testar imediatamente o novo valor da tecla é usar os seguintes comandos.
[root@eva01 X11]# xmodmap -e “keycode 174=XF86AudioLowerVolume”
[root@eva01 X11]#
E a saÃda imediata do xev será a seguinte:
KeyPress event, serial 30, synthetic NO, window 0x3c00001,
root 0x45, subw 0x0, time 634175258, (281,269), root:(291,366),
state 0x0, keycode 174 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 30, synthetic NO, window 0x3c00001,
root 0x45, subw 0x0, time 634175384, (281,269), root:(291,366),
state 0x0, keycode 174 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Simples não? Mas espera um pouco. Há teclas que não aparecem no xev. O que faremos neste caso?
É neste momento que entramos na parte mais interessante deste artigo (Pelo menos eu achei). Iremos configurar usando o HAL(Hardware Abstraction Layer, ou, em português, Camada de abstração de hardware.
Reconfigurando usando HAL:
Bem, o propósito do artigo não é explicar o que é o HAL. Então vou me ater somente nos procedimentos para configurar as teclas de função do Vostro.
E por onde começamos a nossa investigação sobre quais são as teclas que devemos configurar, se o xev não gera seus códigos? Por exemplo, se eu digitar FnF8, como eu vou saber o código? Um bom lugar para procurar é olhando o log de messages com o comando
[root@eva01 X11]# dmesg
Procurem por algo parecido com o seguinte:
atkbd.c: Unknown key pressed (translated set 2, code 0x8b on isa0060/serio0).
atkbd.c: Use 'setkeycodes e00b <keycode>’ to make it known.
O xev não detectou a tecla, mas o sistema acusou algo. E é o código em negrito que usaremos para configurar a tecla de função com HAL.
Primeiramente, precisaremos atualizar alguns pacotes relacionados ao HAL para versões mais novas. A versão que utilizaremos é a 0.5.10.
AVISO: Esta versão é um pré-release, portanto, NÃO é uma versão estável. Saiba que sempre há riscos na utilização de softwares que não são estáveis. Portanto, muito cuidado ao utilizar essas versões.
Baixe este arquivo e salve-o no diretório /etc/yum.repos.d .
Rode o yum no modo update
[root@eva01 X11]# yum update
A seguir, o yum começará a atualizar os arquivos necessários. No meu caso, os arquivos atualizados foram:
ConsoleKit-libs i386 0.2.2-0.6.20070812git.fc7.hughsie utopia 11 k
ConsoleKit-x11 i386 0.2.2-0.6.20070812git.fc7.hughsie utopia 11 k
glx-utils i386 7.1pre-0.37.20070802git.fc7.hughsie utopia 17 k
gnome-bluetooth i386 0.9.1-1.3.20070731svn.fc7.hughsie utopia 263 k
gnome-icon-theme noarch 2.19.1-2.7.20070812svn.fc7.hughsie utopia 4.0 M
gnome-power-manager i386 2.19.7-0.59.20070812svn.fc7.hughsie utopia 3.5 M
hal-info noarch 20070618-2.57.20070812git.fc7.hughsie utopia 66 k
libdrm i386 2.3.1-1.30.20070812git.fc7.hughsie utopia 21 k
mesa-libGL i386 7.1pre-0.37.20070802git.fc7.hughsie utopia 12 M
mesa-libGLU i386 7.1pre-0.37.20070802git.fc7.hughsie utopia 187 k
xorg-x11-drv-nv i386 2.1.2-1.11.20070725git.fc7.hughsie utopia 86 k
ConsoleKit i386 0.2.2-0.6.20070812git.fc7.hughsie utopia 50 k
dbus i386 1.1.3-4.6.20070812cvs.fc7.hughsie utopia 330 k
dbus-x11 i386 1.1.3-4.6.20070812cvs.fc7.hughsie utopia 17 k
gnome-bluetooth-libs i386 0.9.1-1.3.20070731svn.fc7.hughsie utopia 48 k
hal i386 0.5.10-0.36.20070812git.fc7.hughsie utopia 460 k
hal-libs i386 0.5.10-0.36.20070812git.fc7.hughsie utopia 42 k
Feito isso, eu recomendo reiniciar o Linux, de forma que as libs atualizadas seja inicializadas corretamtente. Caso você conheça uma outra maneira de aplicar todas as modificações sem reiniciar, fique à vontade de fazê-lo (e me conte como fazer também
).
Após a atualização dos arquivos, teremos vários arquivos *.fdi no diretório /usr/share/hal/fdi/information/10freedesktop
[root@eva01 10freedesktop]# ll
total 340
-rw-r–r– 1 root root 587 2007-08-12 18:52 10-camera-ptp.fdi
-rw-r–r– 1 root root 1256 2007-08-12 18:52 10-cd-dvd-burner.fdi
-rw-r–r– 1 root root 942 2007-08-12 18:52 10-dell-rfkill-switch-bluetooth.fdi
-rw-r–r– 1 root root 922 2007-08-12 18:52 10-dell-rfkill-switch-wlan.fdi
-rw-r–r– 1 root root 2757 2007-08-12 18:52 10-ipw-rfkill-switch.fdi
-rw-r–r– 1 root root 2769 2007-08-12 18:52 10-laptop-panel-hardware.fdi
-rw-r–r– 1 root root 5665 2007-08-12 18:52 10-recall-battery-dell.fdi
-rw-r–r– 1 root root 1520 2007-08-12 18:52 10-recall-battery-fujitsu.fdi
-rw-r–r– 1 root root 1111 2007-08-12 18:52 10-recall-battery-gateway.fdi
-rw-r–r– 1 root root 2181 2007-08-12 18:52 10-recall-battery-ibm.fdi
-rw-r–r– 1 root root 599 2007-08-12 18:52 10-recall-battery-lenovo.fdi
-rw-r–r– 1 root root 1231 2007-08-12 18:52 10-recall-battery-toshiba.fdi
-rw-r–r– 1 root root 1287 2007-08-12 18:52 10-sony-bluetooth-switch.fdi
-rw-r–r– 1 root root 6271 2007-08-12 18:52 10-usb-card-readers.fdi
-rw-r–r– 1 root root 6146 2007-08-12 18:52 10-usbcsr-mice.fdi
-rw-r–r– 1 root root 78817 2007-08-12 18:52 10-usb-music-players.fdi
-rw-r–r– 1 root root 5046 2007-08-12 18:52 10-usb-pda.fdi
-rw-r–r– 1 root root 535 2007-08-12 18:52 10-usb-zip-drives.fdi
-rw-r–r– 1 root root 4249 2007-08-12 18:52 20-video-quirk-pm-acer.fdi
-rw-r–r– 1 root root 761 2007-08-12 18:52 20-video-quirk-pm-apple.fdi
-rw-r–r– 1 root root 2330 2007-08-12 18:52 20-video-quirk-pm-asus.fdi
-rw-r–r– 1 root root 5492 2007-08-12 18:52 20-video-quirk-pm-dell.fdi
-rw-r–r– 1 root root 1011 2007-08-12 18:52 20-video-quirk-pm-fujitsu.fdi
-rw-r–r– 1 root root 3816 2007-08-12 18:52 20-video-quirk-pm-hp.fdi
-rw-r–r– 1 root root 3892 2007-08-12 18:52 20-video-quirk-pm-ibm.fdi
-rw-r–r– 1 root root 2429 2007-08-12 18:52 20-video-quirk-pm-lenovo.fdi
-rw-r–r– 1 root root 5313 2007-08-12 18:52 20-video-quirk-pm-misc.fdi
-rw-r–r– 1 root root 755 2007-08-12 18:52 20-video-quirk-pm-sony.fdi
-rw-r–r– 1 root root 2275 2007-08-12 18:52 20-video-quirk-pm-toshiba.fdi
-rw-r–r– 1 root root 28532 2007-08-12 18:52 30-keymap-acer.fdi
-rw-r–r– 1 root root 978 2007-08-12 18:52 30-keymap-compaq.fdi
-rw-r–r– 1 root root 13404 2007-09-20 22:30 30-keymap-dell.fdi
-rw-r–r– 1 root root 2060 2007-08-12 18:52 30-keymap-hp.fdi
-rw-r–r– 1 root root 904 2007-08-12 18:52 30-keymap-lenovo.fdi
-rw-r–r– 1 root root 4752 2007-08-12 18:52 30-keymap-misc.fdi
-rw-r–r– 1 root root 2583 2007-08-12 18:52 30-keymap-module-sony-laptop.fdi
-rw-r–r– 1 root root 19772 2007-08-12 18:52 30-keymap-module-thinkpad-acpi.fdi
[root@eva01 10freedesktop]#
O arquivo que nos interessa no momento é o 30-keymap-dell.fdi. Abra-o com o seu editor preferido. Ele vai ter várias entradas como esta:
...
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" contains="D610">
<append key="input.keymap.data" type="strlist">e007:battery</append> <!-- Fn+F3 battery icon -->
<append key="input.keymap.data" type="strlist">e00b:displaytoggle</append> <!-- Fn+F8 CRT/LCD -->
<append key="input.keymap.data" type="strlist">e006:brightnessup</append> <!-- Fn+Up arrow Brightness Up -->
<append key="input.keymap.data" type="strlist">e005:brightnessdown</append> <!-- Fn+Down arrow Brightness Down -->
<append key="input.keymap.data" type="strlist">e00a:suspend</append> <!-- Fn+F1 hibernate -->
<append key="input.keymap.data" type="strlist">e008:wlan</append> <!-- Fn+F2 Turn On/Off Wireless -->
<append key="input.keymap.data" type="strlist">e009:ejectclosecd</append> <!-- Fn+F10 Eject CD -->
<append key="info.capabilities" type="strlist">input.keymap</append>
</match>
...
Adicionaremos o seguinte código:
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" prefix="Vostro">
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.product" contains="1000">
<append key="input.keymap.data" type="strlist">e007:battery</append> <!-- Fn+F3 battery icon -->
<append key="input.keymap.data" type="strlist">e008:wlan</append> <!-- Fn+F2 Turn On/Off Wireless -->
<append key="input.keymap.data" type="strlist">e009:ejectclosecd</append> <!-- Fn+F10 Eject CD -->
<append key="input.keymap.data" type="strlist">e00b:displaytoggle</append> <!-- Fn+F8 CRT/LCD -->
<append key="info.capabilities" type="strlist">input.keymap</append>
</match>
</match>
Devemos adicionar este código dentro da tag
<match key="/org/freedesktop/Hal/devices/computer:system.hardware.vendor" prefix="Dell">
Aqui eu faço algumas considerações: Por exemplo, nesta tag,
<append key="input.keymap.data" type="strlist">e00b:displaytoggle</append> <!-- Fn+F8 CRT/LCD -->
de onde eu tiro todos esses valores malucos?
Se repararem, o código e00b é o scancode referente à tecla FnF8 e deve ser único para cada botão não-mapeado. Reparem que esse é o mesmo código que apareceu no nosso log de messages. Então, quando for fazer o mapeamento das teclas não reconhecidas, é este código que usaremos.
E de onde saiu o tal displaytoogle? Esse é na verdade o nome do keycode em lowercase, presente no arquivo /usr/include/input.h. A lista toda pode ser conferida aqui.
Feitas nossas considerações, devemos reinciar o haldaemon para que as alterações tenham efeito.
[root@eva01 10freedesktop]# service haldaemon restart
Parando o daemon HAL: [ OK ]
Iniciando daemon HAL: [ OK ]
[root@eva01 10freedesktop]#
E… Voilà . As nossa teclas de função passam a funcionar do jeito que elas já deveriam estar funcionando.
Para confirmar que elas foram realmente detectadas, tente usar novamente o xev para verificar que elas agora estão gerando eventos. No caso, a tecla FnF10 gerou a seguinte saÃda:
KeyPress event, serial 29, synthetic NO, window 0x3c00001,
root 0x45, subw 0x0, time 639181620, (12,113), root:(17,186),
state 0x0, keycode 253 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 29, synthetic NO, window 0x3c00001,
root 0x45, subw 0x0, time 639181735, (12,113), root:(17,186),
state 0x0, keycode 253 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Se vocês repararam, faltaram duas funções muito importantes: O Suspender e o ajuste de brilho. A configuração destes demanda um pouco mais de trabalho do que simplesmente adicionar a tecla no arquivo fdi. Mas eles serão assunto das próximas partes.
Espero que vocês tenham gostado (eu gostei um bocado) e que isso seja útil a alguém.
Até a próxima parte.
Obrigado ao Richard Hughes pelo material fantástico disponibilizado e pelos pacotes do Fedora 7.
Fontes: HAL Quirk site - http://people.freedesktop.org/~hughsient/quirk/index.html
6 Comentários para "Teclas de função no Vostro 1000 com o Fedora 7 - Parte 1"
Muito bom este artigo, serve de referência também para outros portáteis e outras distribuições. Espero ansiosamente a segunda parte, pois estou com problema no controle do brilho em meu notebook !
Parabéns !
Maicon,
Apesar de eu ter escrito como fazer essa configuração para o Vostro, é relativamente fácil aplicar os mesmos procedimentos para outros modelos de notebook e distribuições, variando, por exemplo, os atributos de Vendor, product, e as teclas que os outros modelos tenham ou não. E também não mostrei aqui como fazer para encontrar o Vendor e o modelo que deve ser preenchido nessas tags, já que não era esse o objetivo do artigo.
gostei muito do seu artigo. com as configurações sem a utilização do hal eu não tive problemas, porém não consegui atualizar o hal com o comando yum update; aparece o seguinte erro:
Transaction Check Error:
file /etc/dbus-1/session.conf from install of dbus-1.1.3-4.6.20070812cvs.fc7.hughsie conflicts with file from package dbus-1.0.2-6.fc7
file /etc/dbus-1/system.conf from install of dbus-1.1.3-4.6.20070812cvs.fc7.hughsie conflicts with file from package dbus-1.0.2-6.fc7
file /etc/rc.d/init.d/messagebus from install of dbus-1.1.3-4.6.20070812cvs.fc7.hughsie conflicts with file from package dbus-1.0.2-6.fc7
file /usr/share/man/man1/dbus-daemon.1.gz from install of dbus-1.1.3-4.6.20070812cvs.fc7.hughsie conflicts with file from package dbus-1.0.2-6.fc7
file /usr/share/hal/fdi/fdi.dtd from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/hal/fdi/policy/10osvendor/10-ibm-buttons.fdi from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/hal/fdi/policy/10osvendor/10-laptop-panel-mgmt-policy.fdi from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/hal-disable-polling.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/hal-find-by-capability.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/hal-find-by-property.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/hal-get-property.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/hal-is-caller-locked-out.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/hal-lock.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/hal-set-property.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man1/lshal.1.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
file /usr/share/man/man8/hald.8.gz from install of hal-0.5.10-0.36.20070812git.fc7.hughsie conflicts with file from package hal-0.5.9-8.fc7
Error Summary
Eu estou utilizando um vostro 1000 com um processador turion 64 X2. acho que o problema pode ser a incompatibilidade entre os pacotes, que são i386. no repositório que vc indicou não tem pacotes x64. será que vc ou outra pessoa pode me ajudar? to querendo muito colocar o vostro para rodar redondinho com o fedora.
outra coisa, quando vai sair o tutorial sobre o brilho na tela? tô com o brilho no máximo e não consigo reduzir. existe outra forma para eu fazer isto só por agora, enquanto não sai o tutorial?
obrigado, desde já.
Caro amigo,
Consegui configurar quase tudo. Seu tutorial está muito bom (a parte de wireless me salvou).
Só falta o controle de brilho, estou com os olhos doendo; o brilho está no máximo e eu não sei como diminuir. Por favor me ajude.
Para resolver o problema acima eu desistalei o fedora 7 x_64 e instalei o fedora 7 i386.
Espero ancioso a segunda parte deseu tutorial.
abs.
[...] de hibernação. O primeiro item funcionou relativamente fácil, conforme eu mesmo já publiquei aqui. O segundo e o terceiro itens eram o que me davam mais dores de [...]
[...] de hibernação. O primeiro item funcionou relativamente fácil, conforme eu mesmo já publiquei aqui. O segundo e o terceiro itens eram o que me davam mais dores de [...]
Comente