我有一台二合一笔记本电脑,屏幕可以翻转 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”,以便您仍然能够在命令行中输入)
您应该将此脚本放在热键上或作为应用程序列表中的启动器,因为如果脚本位于键盘快捷键上,您可能无法重新启用键盘。