切换到平板电脑模式(在 Gnome 中)

切换到平板电脑模式(在 Gnome 中)

我有一台二合一笔记本电脑,屏幕可以翻转 360 度,变成平板电脑(我有联想 Yoga 3 Pro,但现在有很多类似的设备)。我运行的是 Ubuntu GNOME(15.10,但我已更新到 GNOME 3.18)使自动旋转和自动屏幕变暗功能正常工作),并已解决大部分问题,但仍无法找到将其变成功能齐全的平板电脑的方法。

问题 1

屏幕键盘只会在某些 GNOME 特定的 UI 组件中弹出,例如在活动界面中搜索或登录时。我从辅助功能选项中启用了屏幕键盘,但它似乎没有影响任何东西。

问题 2

下一步是禁用主键盘。理想情况下,当屏幕旋转超过 180 度时,这将自动发生,但我会选择在顶部面板上设置一个禁用键盘的按钮。只要事后有办法重新启用键盘,键盘快捷键也可以。

我很难找到有关以下信息:

(A) inspecting the lid sensor(s)
(B) disabling the keyboard in any way
(C) detecting when you're in an input
(D) enabling an onscreen keyboard.

如果目前还没有解决方案,我可能会尝试一些东西,如果有办法将它们组合起来,尤其是B(至少通过命令行)和D

答案1

我也遇到了问题 1,但有一个叫做“Slide for Keyboard”的插件可以部分解决问题。如果激活,这个插件会使从屏幕底部进行边缘滑动时出现键盘。以下是链接: https://extensions.gnome.org/extension/993/slide-for-keyboard/

您可能需要另一种键盘布局来适应垂直视图。您可以使用 XML 定义自己的键盘布局。查看目录 /usr/share/caribou/layouts

使用与某些现有布局相同的 XML 语法。我使用德语布局,垂直键盘的配置如下:

<?xml version="1.0"?>
<layout xmlns:xi="http://www.w3.org/2001/XInclude">
  <level mode="default" name="level1" xml:base="common/qwerty.xml">
    <row>
      <key name="Escape"/>
      <key name="q"/>
      <key name="w"/>
      <key name="e">
        <key name="e"/>
        <key name="egrave"/>
        <key name="eacute"/>
        <key name="ecircumflex"/>
        <key name="ediaeresis"/>
        <key name="emacron"/>
      </key>
      <key name="r"/>
      <key name="t"/>
      <key name="z"/>
      <key name="u">
        <key name="u"/>
        <key name="ugrave"/>
        <key name="uacute"/>
        <key name="ucircumflex"/>
        <key name="udiaeresis"/>
        <key name="umacron"/>
      </key>
      <key name="i">
        <key name="i"/>
        <key name="igrave"/>
        <key name="iacute"/>
        <key name="icircumflex"/>
        <key name="idiaeresis"/>
        <key name="imacron"/>
      </key>
      <key name="o">
        <key name="o"/>
        <key name="ograve"/>
        <key name="oacute"/>
        <key name="ocircumflex"/>
        <key name="odiaeresis"/>
        <key name="omacron"/>
      </key>
      <key name="p"/>
      <key name="BackSpace" repeatable="yes"/>
    </row>
    <row align="right">
      <key name="Tab" width="1.5"/>
      <key name="a">
        <key name="a"/>
        <key name="agrave"/>
        <key name="aacute"/>
        <key name="acircumflex"/>
        <key name="adiaeresis"/>
        <key name="aring"/>
        <key name="atilde"/>
        <key name="ae"/>
        <key name="amacron"/>
      </key>
      <key name="s"/>
      <key name="d"/>
      <key name="f"/>
      <key name="g"/>
      <key name="h"/>
      <key name="j"/>
      <key name="k"/>
      <key name="l"/>
      <key name="Return" width="1.5"/>
    </row>
    <row>
      <key name="Caribou_ShiftUp" toggle="level2" width="1.5"/>
      <key name="y"/>
      <key name="x"/>
      <key name="c">
        <key name="c"/>
        <key name="ccedilla"/>
      </key>
      <key name="v"/>
      <key name="b"/>
      <key name="n"/>
      <key name="m"/>
      <key name="comma"/>
      <key name="period"/>
      <key name="question"/>
    </row>
    <row>
      <key align="left" name="Caribou_Symbols" toggle="symbols1" width="2.0"/>
      <key align="left" name="Control_L" width="1.5"/>
      <key align="left" name="Alt_L" width="1.5"/>
      <key align="left" name="space" width="5.0" repeatable="yes"/>
      <key align="right" name="Caribou_Prefs"/>
    </row>
  </level>
  <level mode="latched" name="level2" xml:base="common/qwerty.xml">
    <row>
      <key name="Escape"/>
      <key name="Q"/>
      <key name="W"/>
      <key name="E">
        <key name="E"/>
        <key name="Egrave"/>
        <key name="Eacute"/>
        <key name="Ecircumflex"/>
        <key name="Ediaeresis"/>
        <key name="Emacron"/>
      </key>
      <key name="R"/>
      <key name="T"/>
      <key name="Z"/>
      <key name="U">
        <key name="U"/>
        <key name="Ugrave"/>
        <key name="Uacute"/>
        <key name="Ucircumflex"/>
        <key name="Udiaeresis"/>
        <key name="Umacron"/>
      </key>
      <key name="I">
        <key name="I"/>
        <key name="Igrave"/>
        <key name="Iacute"/>
        <key name="Icircumflex"/>
        <key name="Idiaeresis"/>
        <key name="Imacron"/>
      </key>
      <key name="O">
        <key name="O"/>
        <key name="Ograve"/>
        <key name="Oacute"/>
        <key name="Ocircumflex"/>
        <key name="Odiaeresis"/>
        <key name="Omacron"/>
      </key>
      <key name="P"/>
      <key name="BackSpace" repeatable="yes"/>
    </row>
    <row align="right">
      <key name="Tab" width="1.5"/>
      <key name="A">
        <key name="A"/>
        <key name="Agrave"/>
        <key name="Aacute"/>
        <key name="Acircumflex"/>
        <key name="Adiaeresis"/>
        <key name="Aring"/>
        <key name="Atilde"/>
        <key name="Ae"/>
        <key name="Amacron"/>
      </key>
      <key name="S"/>
      <key name="D"/>
      <key name="F"/>
      <key name="G"/>
      <key name="H"/>
      <key name="J"/>
      <key name="K"/>
      <key name="L"/>
      <key name="Return" width="1.5"/>
    </row>
    <row>
      <key name="Caribou_ShiftDown" toggle="level1" width="1.5"/>
      <key name="Y"/>
      <key name="X"/>
      <key name="C">
        <key name="C"/>
        <key name="Ccedilla"/>
      </key>
      <key name="V"/>
      <key name="B"/>
      <key name="N"/>
      <key name="M"/>
      <key name="comma"/>
      <key name="period"/>
      <key name="question"/>
    </row>
    <row>
      <key align="left" name="Caribou_Symbols" toggle="symbols1" width="2.0"/>
      <key align="left" name="Control_L" width="1.5"/>
      <key align="left" name="Alt_L" width="1.5"/>
      <key align="left" name="space" width="5.0" repeatable="yes"/>
      <key align="right" name="Caribou_Prefs"/>
    </row>
  </level>
  <level mode="locked" name="symbols1" xml:base="common/symbols.xml">
    <row>
      <key name="Escape"/>
      <key name="1"/>
      <key name="2"/>
      <key name="3"/>
      <key name="4"/>
      <key name="5"/>
      <key name="6"/>
      <key name="7"/>
      <key name="8"/>
      <key name="9"/>
      <key name="0"/>
      <key name="BackSpace" repeatable="yes"/>
    </row>
    <row align="right">
      <key name="Tab" width="1.5"/>
      <key name="minus"/>
      <key name="slash"/>
      <key name="colon"/>
      <key name="semicolon"/>
      <key name="parenleft"/>
      <key name="parenright"/>
      <key name="ampersand"/>
      <key name="at"/>
      <key name="grave"/>
      <key name="Return" width="1.5"/>
    </row>
    <row>
      <key name="Caribou_Symbols_More" toggle="symbols2" width="2.0"/>
      <key name="period" width="1.2"/>
      <key name="comma" width="1.2"/>
      <key name="question" width="1.2">
        <key name="question"/>
        <key name="questiondown"/>
      </key>
      <key name="exclam" width="1.2">
        <key name="exclam"/>
        <key name="exclamdown"/>
      </key>
      <key name="apostrophe" width="1.2"/>
      <key name="quotedbl" width="1.2"/>
    </row>
    <row>
      <key align="left" name="Caribou_Alpha" toggle="default" width="2.0"/>
      <key align="left" name="Control_L" width="1.5"/>
      <key align="left" name="Alt_L" width="1.5"/>
      <key align="left" name="space" width="5.0" repeatable="yes"/>
      <key align="right" name="Caribou_Prefs"/>
    </row>
  </level>
  <level mode="locked" name="symbols2" xml:base="common/symbols.xml">
    <row>
      <key name="Escape"/>
      <key name="bracketleft"/>
      <key name="bracketright"/>
      <key name="braceleft"/>
      <key name="braceright"/>
      <key name="numbersign"/>
      <key name="percent"/>
      <key name="asciicircum"/>
      <key name="asterisk"/>
      <key name="plus"/>
      <key name="equal"/>
      <key name="BackSpace" repeatable="yes"/>
    </row>
    <row align="right">
      <key name="Tab" width="1.5"/>
      <key align="right" name="underscore"/>
      <key name="backslash"/>
      <key name="bar"/>
      <key name="asciitilde"/>
      <key name="less"/>
      <key name="greater"/>
      <key name="dollar"/>
      <key name="EuroSign"/>
      <key name="sterling"/>
      <key name="Return" width="1.5"/>
    </row>
    <row>
      <key name="Caribou_Symbols" toggle="symbols1" width="2.0"/>
      <key name="period" width="1.2"/>
      <key name="comma" width="1.2"/>
      <key name="question" width="1.2">
        <key name="question"/>
        <key name="questiondown"/>
      </key>
      <key name="exclam" width="1.2">
        <key name="exclam"/>
        <key name="exclamdown"/>
      </key>
      <key name="apostrophe" width="1.2"/>
      <key name="quotedbl" width="1.2"/>
    </row>
    <row>
      <key align="left" name="Caribou_Alpha" toggle="default" width="2.0"/>
      <key align="left" name="Control_L" width="1.5"/>
      <key align="left" name="Alt_L" width="1.5"/>
      <key align="left" name="space" width="5.0" repeatable="yes"/>
      <key align="right" name="Caribou_Prefs"/>
    </row>
  </level>
</layout>

我刚刚删除了一些几乎未使用的键。

然后在垂直(左或右)旋转时触发以下脚本:

gsettings set org.gnome.shell.keyboard keyboard-type <your-keyboard-layout-name>

并触发与正常布局相同的脚本进行正常和反向旋转。

对于问题 2,首先编写一个脚本来切换键盘。脚本应如下所示:

#!/bin/bash
device='AT Translated Set 2 keyboard'
oldstate=$(xinput list-props "$device" | grep 'Device Enabled' | rev | cut -b 1)
newstate=1
if [ "$oldstate" = "1" ]; then
    newstate=0;
fi
xinput set-prop "$device" 'Device Enabled' "$newstate"

虽然“AT Translated Set 2 keyboard”是键盘的名称。你的键盘可能有一个类似的名称。使用命令搜索它

xinput list | grep keyboard

并尝试禁用并重新启用打印设备。(首先安装“Slide for Keyboard”,以便您仍然能够在命令行中输入)

您应该将此脚本放在热键上或作为应用程序列表中的启动器,因为如果脚本位于键盘快捷键上,您可能无法重新启用键盘。

相关内容