Linux 上的 APL 键盘映射 (GNU APL)

APL Keymapping on Linux (GNU APL)

我的祖父在 60 年代/70 年代是 IBM 的 APL 程序员。他最近开始使用 Linux,我一直在帮助他设置和使用 GNU APL (http://www.gnu.org/software/apl/)。

目前最让我头疼的是键盘映射。目前我已经安装了 aplwrap GTK+ (https://github.com/ChrisMoller/aplwrap) 编辑器,它工作正常但不是很好。我想为点击 LALT + 键或 LALT + Shift + 键时工作的 APL 字符设置一个全局键盘映射。我摆弄了 GNU APL 源代码中提供的 xmodmap 文件,但是当您尝试在启动时自动将其设置为 运行 时,它搞砸了所有内容。

所以,我有两个问题:

  1. 是否可以在启动时将 APL 键映射设为全局并 运行,这样就不必手动打开了?

  2. 如果第一个问题不可能,那么是否可以为每个应用程序设置一个键盘映射?例如,Gnome 终端和 gEdit 将为 APL 字符使用 LALT 键映射,但系统的其余部分将正常工作。

非常感谢。

我安装了 Dyalog 字体(另外,这只适用于 Xorg)并且我 运行 这个脚本。它允许元键(windows 键)充当 APL 修改键(就像按住 shift 键让您输入大写字母一样):

#!/bin/bash

if [ "$DISPLAY" >> /dev/null ]
then
        ## We are running Xorg
        if ! [ `setxkbmap -query | awk '/layout/ {print }' | grep "apl"` ]
        then
                ## We have no APL layout - so lets set one up - we're going to use the Windows Key.
                ## Setup keyboard map
                XKBRULES=`setxkbmap -query | awk '/rules/ {print }'` 2>/dev/null
                XKBMODEL=`setxkbmap -query | awk '/model/ {print }'` 2>/dev/null
                XKBLAYOUT=`setxkbmap -query | awk '/layout/ {print }'` 2>/dev/null
                XKBVARIANT=`setxkbmap -query | awk '/variant/ {print }'` 2>/dev/null
                XKBOPTIONS=`setxkbmap -query | awk '/options/ {print }'` 2>/dev/null
                setxkbmap -rules ${XKBRULES} -model ${XKBMODEL} -layout "${XKBLAYOUT},apl" \
                        -variant "${XKBVARIANT},dyalog" \
                        -option "${XKBOPTIONS},grp:win_switch" 2>/dev/null
        fi
fi

如果此脚本适合您,那么,我想在启动时将其设置为 运行 确实取决于您的操作系统。

我将插入我自己的解决方案并建议使用 Emacs。我为 GNU APL 编写了 Emacs 模式,目前可通过 MELPA 使用(它最终会转到标准 ELPA 存储库)。您还可以在这里找到来源:https://github.com/lokedhs/gnu-apl-mode

Emacs模式提供了两种不同的APL符号输入方法。第一个使用 Super 键和常用键。例如,您按 s-e 生成 符号。

另一种方法是标准的 Quail 输入法,如果您没有可用的超级键(例如,您在终端中使用 Emacs),这种方法很有用。您可以使用 C-\ 并选择 APL-Z 来启用它。完成此操作后,句点 (.) 将用作前缀字符,因此您可以按 . e 生成 符号。

我的 GNU APL 和 Dyalog APL 在以下条件下运行良好;首先,我不使用图形服务器,因为我不太喜欢它(这肯定会使我的解决方案对您自己的情况不是很有趣,但谁知道呢?)。 只要在控制台上启用兼容字体,就可以使用这两种软件;您可以通过两种方式实现:

  • 使用 Unifoundry (a description here) 的专用字体并使用 setfont
  • 启用它
  • 使用像 fbterm 这样的帧缓冲终端(我自己做的);只需安装它并在控制台中输入 fbterm;这将允许您在控制台上使用完整的 Unicode 范围;

然后你必须破解一些键盘映射字体;不是太难;您要么从当前文件复制一份,要么找到一些随时可用的文件(我强烈建议您破解自己的文件;将花费一个小时来完成它,但使用文本编辑器并不难):看看here.

一旦完成,在 Linux 控制台中使用 APL 就非常容易了。

你很幸运,因为 Linux(实际上是 Xorg)拥有所有主要操作系统中最通用和最强大的键盘配置系统。您可以从多种 APL 符号配置中进行选择,并将它们添加到您自己的国家键盘布局中。您甚至可以选择使用哪个键在常规字母和 APL 之间切换,并将此选择应用到整个系统。

如果您打开发行版的国际化或键盘布局设置(它可以在类似控制面板的 GUI 中,也可以是设置文件,例如 Debian 中的 /etc/default/keyboard),您将能够将 apl 键盘 布局 添加到您现有的国家/地区布局。 APL 布局包括在某种程度上标准位置的基本 APL 符号,并提供许多 变体 select 附加符号或不同的配置,包括商用硬件键盘的那些:unified, sax, apl2, aplplusII, aplx, dyalog.

请注意,APL 布局旨在添加 到您现有的国家布局,同时可以选择在两者之间切换的按键。如果您用 APL 替换您的国家布局,您将无法再输入标准字母!

要测试布局、变体和选项的组合,您可以使用图形控制面板(如果有的话),或者您可以使用 setxkbmap 命令。

例如,此 select 是 us 布局,在其默认变体中添加了 apl 布局,并将 Windows 键指定为两者,因此 Win+A 给出 ⍺,等等

setxkbmap us,apl -option grp:win_switch

提示:您可能希望保持另一个终端打开并准备好一些默认命令,例如 setxkbmap us,以便您可以轻松地在其中按 Enter 并重置布局,如果您使键盘无法使用。如果你连回车都不能按了,你可以复制+粘贴一个换行符来执行命令。

在您对布局、变体和选项的组合感到满意之后,您必须将它们放入全局配置文件中,或者使用使它们成为永久选择的控制面板按钮。

如果您在使用某些特定的选项组合时遇到问题,您可能需要查看 XKB documentation wiki, chat on one of the many Linux IRC channels, or post a more specific question here on StackExchange, although I would suggest using Super User, Unix & Linux, or Ask Ubuntu,而不是 Whosebug。