Troque os layouts de teclado automaticamente no Ubuntu

1

Eu uso um notebook com um layout internacional alternativo dos EUA (ex-us international) e um teclado usb Microsoft Curve com layout brasileiro quando estou na minha mesa.

O que eu gostaria de mudar os layouts automaticamente quando o teclado USB é detectado, em vez de ir às preferências manualmente toda vez que eu saio da mesa. Existe tal maneira no Ubuntu 9.04?

    
por Decio Lira 25.09.2009 / 17:19

3 respostas

2

Existem três componentes para a solução que permitem trocar layouts de teclado:

  1. Detectar quando o teclado está conectado / desligado
  2. Detectar o layout no teclado
  3. Defina o layout do seu sistema para corresponder ao layout do teclado.

1. Detectar quando o teclado está conectado / desligado

Todas as alterações de hardware são enviadas no daemon do barramento de mensagens D-Bus .

D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a "single instance" application or daemon, and to launch applications and daemons on demand when their services are needed.

D-Bus supplies both a system daemon (for events such as "new hardware device added" or "printer queue changed") and a per-user-login-session daemon (for general IPC needs among user applications).

Você pode monitorar os eventos enviados no D-Bus através do comando dbus-monitor :

dbus-monitor --system #show all events
dbus-monitor --system --profile 'interface=org.freedesktop.Hal.Manager' # filter: only events sent by Hal
dbus-monitor --system --profile 'interface=org.freedesktop.Hal.Manager, member=DeviceAdded' # filter: only DeviceAdded events sent by Hal

Conecte seu teclado e observe as mensagens passarem. Isso deve lhe dar uma idéia do filtro que você precisa para detectar um teclado conectado ou desligado. Você também precisará se familiarizar com o uso do dbus-monitor em mais detalhes.

2. Detectar o layout do teclado

Quando o teclado estiver conectado ao sistema, HAL (Herware Abstraction Layer) configura-o. Você pode recuperar essas informações usando o comando hal-get-property depois de identificar a chave de que precisa. Por exemplo, no meu sistema:

$ hal-get-property --udi /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input --key "input.xkb.layout"
gb
$ hal-get-property --udi /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input --key "input.xkb.model"
pc105

Veja esta resposta para uma explicação detalhada de como obter valores de HAL: configurando perfis de processo no Ubuntu . Acho que a mensagem do D-Bus pode fornecer o nó HAL configurado para o dispositivo conectado, mas não tenho certeza. Se não, você sabe que será em um dos dois lugares - correspondendo a um dos dois teclados.

3. Selecione o layout do seu sistema para corresponder ao layout do teclado

joe já apontou como você pode fazer isso usando xmodmap .

    
por 25.09.2009 / 19:24
0

Eu não sei sobre isso. Mas este é o meu trabalho que eu costumava resolver (mudar de nós para o reino unido)

sudo xmodmap /usr/share/xmodmap/xmodmap.uk
    
por 25.09.2009 / 17:35
0

Meu palpite é que isso pode ser possível usando algumas diretivas HAL.

No entanto, você não precisa ir para Preferências toda vez que quiser alterar os layouts. Por que você simplesmente não adiciona o applet "Indicador de teclado" ao seu painel? É apenas um clique do mouse.

    
por 25.09.2009 / 19:22