Como habilitar o mapeamento internacional de teclas de caracteres em um sistema no modo quiosque?

2

Nós construímos sistemas embarcados baseados no Ubuntu 14.04, nos quais implementamos o comportamento do tipo quiosque usando uma sessão X personalizada. Aqui está o ffile da área de trabalho que define a sessão:

[Desktop Entry]
Encoding=UTF-8
Name=Kiosk Mode
Comment=AppName Kiosk Mode
Exec=/usr/share/xsessions/appNameKiosk.sh
Type=Application

E aqui está o script da sessão (appNameKiosk.sh);

#!/bin/bash

# Undefining the QT_QPA_PLATFORMTHEME environment variable disables the appmenu-qt5 package. That package is for putting
# the app menu up in the global bar rather than on the app. It has a bug and results in no menu anywhere. We want the
# menu on the app anyway.
export QT_QPA_PLATFORMTHEME=

metacity --replace &

# Set audio volume to max - user can reduce with physical knob if needed.
amixer set 'Master' 100%

# This sets the window decoration theme to our theme, which removes the title bar on maximized windows - hence on
# our main window.
gsettings set org.gnome.desktop.wm.preferences theme AppName

while true; do
    ~/AppName/bin/AppName.sh --kioskMode
    result=$?
    if [ $result -eq 125 ]; then
      poweroff
    fi
    if [ $result -eq 122 ]; then
      reboot
    fi
    sleep 3s
    # Any exit code that does not specify a specific behavior, just causes the loop to restart the app.
done

O resultado líquido disso é que nenhuma área de trabalho da GUI foi inicializada. Por causa disso, não podemos inserir caracteres não ingleses em diálogos em nosso aplicativo.

Eu posso executar o sistema no modo de área de trabalho normal e usar a configuração Entrada de texto para configurar a alternância por vários idiomas. Em seguida, posso inserir caracteres para alemão, hebraico, russo, etc. com base no mapeamento de teclado que é ativado por meio do pressionamento de tecla especial (o padrão é 'Superespaço'). No entanto, ao executar no modo de quiosque, acabei de receber os caracteres em inglês.

Minha inferência é que o mapeamento chave é realizado por algum componente que é iniciado / instalado pela inicialização normal da sessão da área de trabalho (o gnome-session parece ser o que faz isso).

Como posso iniciar o mesmo componente no meu script?

EDIT: Para esclarecer, a questão não é como obter vários mapas de teclado ativados. Eu posso usar o modo de área de trabalho para fazer isso, se necessário. A questão é como realmente alternar entre eles uma vez no modo de quiosque. O pressionamento de tecla especial configurado no item de configurações Entrada de texto não tem efeito no modo de quiosque.

    
por Steve Fallows 01.08.2016 / 23:51

1 resposta

1

Você pode definir vários layouts no arquivo /etc/default/keyboard . Por exemplo, se você abrir esse arquivo para edição e definir

XKBLAYOUT="us,de,ru"

você deve poder alternar entre inglês (EUA), alemão e russo sem a necessidade de adicionar esses layouts pela primeira vez por Entrada de texto .

    
por Gunnar Hjalmarsson 02.08.2016 / 00:47