繁体   English   中英

Linux 上的 APL 键映射 (GNU APL)

APL Keymapping on Linux (GNU APL)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的祖父是 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 键映射,但系统的其余部分将正常工作。

非常感谢。

4 个回复

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

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

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

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

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

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

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

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

setxkbmap us,apl -option grp:win_switch

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

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

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

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

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

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

完成此操作后,在 Linux 控制台中使用 APL 非常容易。

我安装了 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

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

您可以选择购买APL键盘: https//www.dyalog.com/apl-font-keyboard.htm不是超便宜,但也不贵。

2 使用APLEdit在gnu-apl中创建函数

我正在尝试从Mac上出色的APL Wiki和gnu-apl学习APL,但是在创建函数时遇到了麻烦。 具体来说,我正在尝试从Wiki创建“ TRY1”功能。 它在gnu-apl中不起作用,因此我按照说明下载并安装了APLEditor ,现在可以使用以下命令在工作区中调用编辑器: ...

4 在OSX上使用gnu-apl进行绘图的问题

我最近通过brew install gnu-apl安装并测试了gnu-apl os OSX Catalina 它运行良好,我正在阅读抽象代数书籍,并且可以进行所有练习。 但是当我尝试绘制时,我总是得到: 从控制台以及emacs中,我需要从tarball安装gnu-apl吗? 我需要链接gnup ...

6 如何显示APL图像后的APL文本?

我想显示彼此粘在一起的图像和标题。 APL图像需要明确的宽度和高度。 图像尺寸是变化的。 我将图像的高度设置为“ 100%”,并期望适当地缩放宽度,但事实并非如此。 “图片”( 来源 )的尺寸相关属性不支持“自动”值。 有解决该问题的解决方案吗? ...

7 APL中的续行

APL中是否存在行继续符,即表示输入尚未完成的字符并继续解析下一行? 我想要它的原因是以类似于其形状的格式输入数组,例如,而不是: Forecast ← 4 6 ⍴ 150 200 100 80 80 80 300 330 360 400 500 520 100 250 350 380 ...

2015-07-12 03:18:32 3 243   apl
8 增加 apl 中的数字

我有以下数据: 第一行是字符,第二行是数字。 如何获取第二行最高数字对应的字符,以及如何增加第二行对应的数字? (例如,此处b列的数字最大,为9 ,因此将该数字增加 10%。) 我使用 Dyalog 版本 17.1。 ...

9 APL中quicksort的解释

我试图了解 APL 中的经典快速排序: 有一些我不明白的东西,一些困扰我的风格选择,所以我将把它们都列出来。 我希望有人可以向我解释它们。 我知道在{ } defn 中, ⍺是左参数, ⍵是右参数。 什么是⍺⍺在S←{⍺⌿⍨⍺ ⍺⍺ ⍵} ? 类似地,是否有⍵⍵ ? S的⍺是指S的左参数 ...

10 APL中的按位操作?

我们需要制作一个程序来模拟我的计算机体系结构类的IEEE浮点数的划分。 我几乎已经完成了这个,但我认为看看程序在APL中会是什么样子会很有趣,但据我所知,在APL中没有(直接)方式进行按位操作(按位和/或,转移等...)。 如果可能,在APL中执行此操作的最简单方法是什么? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM