美文网首页电脑相关
iOS实用技能分享—mac OS辅助功能键盘

iOS实用技能分享—mac OS辅助功能键盘

作者: iOS_小久 | 来源:发表于2019-08-27 20:37 被阅读0次

    有一段时间,“桌面”和“移动”之间的区别变得越来越脆弱。随着口袋中的计算机越来越强大,它们更像是通常位于我们桌子和圈子上的计算机。随着CatalystiPadOS的发布,这一趋势在今年的WWDC中尤其明显 。

    今天,MacBook和iPad有什么区别?实际上,您可能会指出是否存在物理键盘,SIM卡或ARM处理器 (如果有关明年的MacBook型号的传闻可以相信,那么后两者可能很快就会不再是一个区别)。

    对于我们中的许多人来说,物理键盘是使计算机成为传统意义上的“桌面”计算机的定义特征 ; 当您为iPad购买外接键盘时,您可以将其设置为“桌面”状态。但对于许多其他人 - 包括我们身体残疾的人 - 类似打字机的键盘只是桌面用户可用的众多输入方法之一。

    本周在NSHipster上,我们将看一下macOS辅助功能键盘。除了作为辅助技术的直接实用性之外,辅助功能键盘还要求我们对输入方法的本质以及移动和台式计算机之间的任何剩余区别进行不同的思考。

    同时小编这里有些书籍和面试资料哦(点击下载


    可访问性键盘在macOS High Sierra中引入, 让您在不使用物理键盘的情况下键入Mac并与其进行交互。

    要打开它,请打开“系统偏好设置”,单击“辅助功能”偏好设置面板,然后选择侧栏中“交互”部分下的“键盘”。(或者,您可以搜索“辅助功能键盘”并导航到第一个结果)。

    单击标记为“启用辅助功能键盘”的复选框,在最前面的应用程序的窗口上显示辅助功能键盘。

    软件键盘可重现硬件键盘的布局。在红色(概述的修饰键⌘,⇧,⌥)是“粘滞键” 和保持活跃,直至非“粘性”键被激活,允许大写字母和键盘快捷键。沿着顶行是iOS风格的建议,在您键入时自动更新。

    默认情况下,使用当前键盘的布局。上图是一个 JIS键盘,我们在NSHipster的首选布局。

    但是,辅助功能键盘最有趣的功能是隐藏在⚙︎右上角的按钮后面- 能够自定义和创建自己的键盘!

    自定义和创建自己的辅助功能键盘

    Panel Editor是一个内置应用程序,可让您编辑辅助功能键盘面板。

    对于一些如此模糊的东西,Panel Editor应用程序制作得非常好。在面板上添加,移动和编辑按钮很简单。您甚至可以单击并拖动以一次选择和移动多个按钮,并在方便时将按钮组合在一起。

    每个按钮都有一个名称以及字体大小,颜色和位置选项。默认情况下,名称会显示在按钮本身中,但您可以指定要显示的图像。

    您可以配置按钮以在单击时执行以下任一操作:

    • 没有
    • 返回(在辅助功能键盘中的面板之间导航)
    • 打开面板
    • 显示/隐藏工具栏
    • 停留(与头部或眼睛跟踪技术和其他硬件开关相关)
    • AppleScript的
    • 输入文字
    • 按键
    • 打开应用程序
    • 系统事件
    • 打字建议

    其中,“输入文字”是最常见的。我们将在下一个示例中使用它作为一种解决在没有键盘的情况下为脚本创建输入方法的问题的方法。

    创建IPA键盘

    标准的拉丁文脚本不足以表达语音,一个单词在说话时如何发声。作为说英语的人,我们非常了解这一点。这就是为什么语言学家发明了他们自己的剧本,即国际音标(IPA)。虽然典型的字母可能在方言中有不同的发音(/tə.me͡ɪ.do͡ʊ/,/tə.mɑ.to͡ʊ/) - 甚至在同一个单词中(如“应用程序”中的字母“a”) - IPA符号代表单音或音素; 中间的元音,“ə”(又名“schwa”)听起来是相同的,无论是英语单词还是日语单词或无意义的bab呀学语。

    在计算机上使用IPA几乎一直是PITA,原因有三:

    不完整的文本编码

    在Unicode版本6.1之前,某些IPA符号没有指定的代码点,迫使语言学家使用外观相似的字符或在专用区域内定义特殊编码 。

    有限的字体支持

    拥有指定的代码点是一回事。拥有可以塑造或正确渲染代码点的字体完全是另一回事。

    缺乏输入法

    仅仅因为计算机可以表示和渲染角色并不意味着您作为用户可以首先生成该角色。在QWERTY键盘上打字,我们理所当然地能够键入 j 键来生成字母“j”。但是如果你想键入“ ʝ ”怎么办?

    对于所有太多人来说,答案是“谷歌和复制粘贴”

    有关生成不能或不知道如何键入的字符的正确答案,请参阅有关macOS字符查看器的文章 。

    幸运的是,这三个挑战中的第一个和第二个不再是现代操作系统上的问题:Unicode为所有IPA字符提供代码点 ,并且大多数平台本地渲染它们而无需安装自定义字体。但是,输入法的问题仍然是一个悬而未决的问题。

    SIL International 由Joan Wardell 主持 IPA键盘布局。还有SuperIPA键盘 - 基于CXS,X-SAMPA的一种变体- 由Kreative Korporation提供。你也可以使用 Brian“Moses”Hall的IPA Palette

    但是,如果在人体工程学的可用性方面,这些都没有勾选你的所有盒子,辅助功能键盘面板编辑器为任何人提供了一种简单的方法来手动推出定制的解决方案:

    此键盘布局是使用Panel Editor创建的,并且是在官方IPA图表之后建模的 ,符号按照位置和清晰的方式排列。它不如上述任何键盘布局效率高(也不完整),但任何熟悉IPA的人都可以立即使用它进行转录而无需额外的培训。


    如果您是开发人员,那么您的下一个问题很可能是“这种文件格式什么样的?”“我可以用代码而不是GUI生成这些吗?”

    简短的答案是“一捆物业清单”和“是的 !”。继续阅读完整细分:


    检查辅助功能键盘文件格式

    如果你不知道你在寻找什么,键盘面板捆绑本身可能很难找到。在macOS Mojave上,您创建的任何自定义面板都可以在包含文件扩展名的目录中找到 。~/Library/Application Support/com.apple.AssistiveControl/ .ascconfig

    该包包含一个顶级Info.plist文件和一个包含资产索引的资源目录(以及任何资产文件,如按钮图像)以及一个名为的文件。PanelDefinitions.plist

    $ tree ~/Library/Application Support/com.apple.AssistiveControl/dwellControlUserPanels1.ascconfig/
    Contents
    ├── Info.plist
    └── Resources
        ├── AssetIndex.plist
        └── PanelDefinitions.plist
    
    

    开放揭示了我们的自定义虚拟键盘​​布局的内部结构:PanelDefinitions.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Panels</key>
        <dict>
            <key>USER.80B26730-BB8A-41A5-8E70-79AA134F9D0E</key>
            <dict>
                <key>AssociatedApplications</key>
                <array>
                    <dict>
                        <key>ApplicationBundleID</key>
                        <string>com.apple.Notes</string>
                        <key>ApplicationDisplayName</key>
                        <string>Notes</string>
                        <key>ApplicationPath</key>
                        <string>/Applications/Notes.app</string>
                    </dict>
                </array>
                <key>DisplayOrder</key>
                <integer>1</integer>
                <key>GlidingLensSize</key>
                <integer>5</integer>
                <key>HasTransientPosition</key>
                <false/>
                <key>HideHome</key>
                <false/>
                <key>HideMinimize</key>
                <false/>
                <key>HidePanelAdjustments</key>
                <false/>
                <key>HideSwitchDock</key>
                <false/>
                <key>HideSwitchDockContextualButtons</key>
                <false/>
                <key>HideTitlebar</key>
                <false/>
                <key>ID</key>
                <string>USER.80B26730-BB8A-41A5-8E70-79AA134F9D0E</string>
                <key>Name</key>
                <string>Keyboard - IPA</string>
                <key>PanelObjects</key>
                <array>
                    <#...#>
                </array>
            </dict>
        </dict>
    </dict>
    
    

    该键与一组字典相关联,每个字典代表一个按钮。幸运的是,他的大多数关键名称都是不言自明的:PanelObjects

    <dict>
        <key>ButtonType</key>
        <integer>0</integer>
        <key>DisplayColor</key>
        <string>0.145 0.145 0.145 1.000</string>
        <key>DisplayImageResourceIsTemplate</key>
        <false/>
        <key>DisplayText</key>
        <string>p</string>
        <key>DisplayTextLocation</key>
        <string>DisplayInside</string>
        <key>DisplayTextPosition</key>
        <string>Center</string>
        <key>DisplayTheme</key>
        <string>DisplayThemeDefault</string>
        <key>FontSize</key>
        <real>20</real>
        <key>ID</key>
        <string>Button.7B824E7E-9AB8-42E3-BA7B-B56924B45554</string>
        <key>PanelObjectType</key>
        <string>Button</string>
        <key>Rect</key>
        <string>{{0, 5}, {35, 35}}</string>
        <key>Actions</key>
        <array>
            <dict>
                <key>ActionParam</key>
                <dict>
                    <key>CharString</key>
                    <string>p</string>
                    <key>isStickyKey</key>
                    <false/>
                </dict>
                <key>ActionRecordedOffset</key>
                <real>0.0</real>
                <key>ActionType</key>
                <string>ActionPressKeyCharSequence</string>
                <key>ID</key>
                <string>Action.0AE7D5DD-C588-40FA-942E-89E25FD81EEA</string>
            </dict>
        </array>
    </dict>
    
    

    查看文件格式的一点是,在代码中生成辅助功能键盘面板非常容易,而不是使用Panel Editor应用程序。(实际上,我们使用find-and-replace来批量调整IPA键盘中的按钮,这项任务本来需要100多倍)。

    其他用例

    有许多脚本包含数百个缺少专用键盘布局的字符。macOS辅助功能键盘为生成这些字符提供了一个精彩的内置解决方案。

    但是,如果你知道它存在,你还可以用这项技术做些什么?

    以下是您可以考虑的一些想法:

    模板频繁通信

    您是否发现自己在电子邮件或GitHub问题中反复写同样的内容?创建一个自定义的虚拟键盘,只需单击鼠标或点击触控板即可召唤样板

    您可以将辅助功能键盘配置为仅显示特定应用程序。

    生成文本

    辅助功能键盘不仅限于固定响应。由于AppleScript集成,您可以从几乎任何来源动态填充文本。

    例如,您可以使用以下AppleScript 创建一个fortune从程序中插入(伪)随机条目的按钮 :

    set fortune to do shell script "/usr/local/bin/fortune"
    set the clipboard to fortune as text
    delay 0.01
    tell application "System Events" to tell (name of application processes whose frontmost is true) to keystroke "v" using command down
    
    

    强制性fortune产出:

    如果你的面包陈旧,请做吐司。

    声卡

    你渴望成为一个 开车时间电台DJ 现场流光?使用辅助功能键盘随意触发有趣的声音效果,让您的众多粉丝高兴。

    do shell script "afplay /System/Sounds/Sosumi.aiff"
    
    

    统治世界

    AppleScript为您提供最接近整个系统的编程访问权限。

    设置按钮以启动应用程序的构建,或在Slack上发送消息,或打开家中的灯光,或播放主题曲!


    辅助功能键盘是一个强大的,内置的,无所不在的界面,可以满足您的任何功能 - 无需经历构建应用程序的所有麻烦。

    因为,如果您考虑一下,j 键盘上的按键和 party 虚拟键盘上的假设按钮之间是否存在任何真正的区别?

    “计算机”和打字机键盘之间的紧密联系仅仅是历史性的。智能手机和智能手表的兴起有助于说明这一点。手中,手腕或桌面上的计算机之间的任何区别最终都是微不足道的。所有电脑都是一样的; 他们都是力量倍增器。

    一旦将“桌面”计算机与其主界面的形状分开,您就可以开始充分了解触手可及的全部功能。

    有问题吗?更正?请通过加我们的交流群 点击此处进交流群 ,来一起交流或者发布您的问题,意见或反馈。

    谢谢阅读~点个赞再走呗!🚀

    原文地址 https://nshipster.com/accessibility-keyboard/

    相关文章

      网友评论

        本文标题:iOS实用技能分享—mac OS辅助功能键盘

        本文链接:https://www.haomeiwen.com/subject/tkuyectx.html