如何在信息亭模式系统上启用国际字符键映射?

如何在信息亭模式系统上启用国际字符键映射?

我们基于 ubuntu 14.04 构建了嵌入式系统,其中我们使用自定义 X 会话实现了 kiosk 模式类型的行为。以下是定义会话的桌面文件:

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

这是会话脚本(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

最终结果是没有启动 GUI 桌面。因此,我们无法在应用程序的对话框中输入非英语字符。

我可以在普通桌面模式下运行系统,并使用文本输入配置来配置切换各种语言。然后,我可以根据通过特殊按键启用的键盘映射(默认为“超级空格”)输入德语、希伯来语、俄语等字符。然而,在信息亭模式下运行时,我只会得到英文字符。

我的推断是,键映射是由正常桌面会话启动时启动/安装的某些组件执行的(gnome-session 似乎就是执行该操作的组件)。

我如何在脚本中启动相同的组件?

编辑:澄清一下,问题不在于如何启用多个键盘映射。如果需要,我可以使用桌面模式来实现这一点。问题是在自助服务终端模式下,如何在它们之间实际切换。在文本输入设置项中配置的特殊按键在自助服务终端模式下无效。

答案1

您可以在/etc/default/keyboard文件中设置多个布局。例如,如果您打开该文件进行编辑并设置

XKBLAYOUT="us,de,ru"

你应该能够在英语(美国)、德语和俄语之间切换,而无需先通过以下方式添加这些布局文本输入

相关内容