5

早在 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 将使用 LALT 键盘映射来处理 APL 字符,但系统的其余部分将正常工作。

非常感谢。

4

4 回答 4

7
于 2015-01-15T09:52:41.380 回答
6

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

如果您打开发行版的国际化或键盘布局设置(它可以在类似控制面板的 GUI 中,也可以是设置文件,例如/etc/default/keyboard在 Debian 中),您将能够将apl键盘布局添加到现有的国家布局中。APL 布局在某种标准位置包括基本 APL 符号,并提供了许多选择附加符号或不同配置的变体,包括市售硬件键盘的那些:unifiedsaxapl2aplplusIIaplxdyalog

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

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

例如,这会选择us布局,apl在其默认变体中添加一个,并将 Windows 键指定为两者之间的切换,以便Win+A给出 ⍺ 等。

setxkbmap us,apl -option grp:win_switch

提示:您可能希望在准备好一些默认命令的情况下保持另一个终端打开,例如setxkbmap us,如果您使键盘无法使用,您可以轻松地在其中按 Enter 键并重置布局。如果您甚至无法再按 Enter,则可以复制+粘贴换行符以执行命令。

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

如果您在使用某些特定的选项组合时遇到问题,您可能需要查看XKB 文档 wiki,在众多 Linux IRC 频道之一上聊天,或者在 StackExchange 上发布更具体的问题,尽管我建议使用超级用户, Unix & Linux , 或Ask Ubuntu , 而不是 StackOverflow。

于 2015-01-17T14:30:30.290 回答
4

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

  • 使用Unifoundry的专用字体(此处有描述)并启用它setfont
  • 使用帧缓冲终端(我自己做的)喜欢fbterm;只需安装它并fbterm在控制台中输入;这将允许您在控制台上使用完整的 Unicode 范围;

然后你必须破解一些键盘映射字体;这不是太难;您必须从当前文件复制或找到一些准备使用的文件(我强烈建议您破解自己的文件;将需要一个小时的工作时间,但使用文本编辑器没有什么困难):看看在这里

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

于 2015-01-16T08:36:41.000 回答
2

我安装了 Dyalog 字体,(而且,这仅适用于 Xorg)并运行此脚本。它允许元键(windows 键)充当 APL 修饰键(例如按住 shift 键可以让您输入大写字母):

#!/bin/bash

if [ "$DISPLAY" >> /dev/null ]
then
        ## We are running Xorg
        if ! [ `setxkbmap -query | awk '/layout/ {print $2}' | 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}'` 2>/dev/null
                XKBMODEL=`setxkbmap -query | awk '/model/ {print $2}'` 2>/dev/null
                XKBLAYOUT=`setxkbmap -query | awk '/layout/ {print $2}'` 2>/dev/null
                XKBVARIANT=`setxkbmap -query | awk '/variant/ {print $2}'` 2>/dev/null
                XKBOPTIONS=`setxkbmap -query | awk '/options/ {print $2}'` 2>/dev/null
                setxkbmap -rules ${XKBRULES} -model ${XKBMODEL} -layout "${XKBLAYOUT},apl" \
                        -variant "${XKBVARIANT},dyalog" \
                        -option "${XKBOPTIONS},grp:win_switch" 2>/dev/null
        fi
fi

如果这个脚本适合你,那么我想让它在启动时运行真的取决于你的操作系统。

于 2015-01-15T00:34:39.567 回答