首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux上的APL密钥交换(GNU APL)

Linux上的APL密钥交换(GNU APL)
EN

Stack Overflow用户
提问于 2015-01-14 20:11:24
回答 3查看 5K关注 0票数 5

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

目前我最头疼的是关键映射。目前,我已经安装了GTK+ (https://github.com/ChrisMoller/aplwrap)编辑器,该编辑器工作正常,但并不出色。我想为APL字符设置一个全局密钥映射,当单击LALT +键或LALT + Shift +键时,APL字符可以工作。我已经摆弄了GNU源代码中提供的xmodmap文件,但是当您尝试让它在启动时自动运行时,它会破坏一切。

所以,我有两个问题:

  1. 是否有可能让APL键映射全局并且在启动时也运行,这样就不需要手动打开它了?
  2. 如果第一个问题是不可能的,那么是否有可能为每个应用程序设置一个密钥映射?例如,Gnome终端和gEdit将对APL字符使用LALT键映射,但系统的其余部分将正常工作。

非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2015-01-15 09:52:41

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

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

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

票数 7
EN

Stack Overflow用户

发布于 2015-01-16 08:36:41

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

  • 使用来自联合铸造的专用字体(一个描述这里)并使用setfont启用它
  • 使用像fbterm这样的帧缓冲终端(我自己做的);只需安装它并在控制台中键入fbterm;这将允许您在控制台上使用完整的Unicode范围;

然后,您必须破解一些keymap字体;这并不太困难;您必须从当前的字体中复制一份,或者找到一些已准备好使用的文件(我强烈建议您对自己的字体进行黑客攻击;使用文本编辑器将有一个小时的工作,但没有什么困难):看看这里

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

票数 5
EN

Stack Overflow用户

发布于 2015-01-15 00:34:39

我安装了Dyalog字体(而且,这只适用于Xorg),我运行这个脚本。它允许元键(windows键)充当APL修饰符键(比如holding shift允许输入大写字母):

代码语言:javascript
复制
#!/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

如果这个脚本适用于您,那么我想让它在启动时运行实际上取决于您的操作系统。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27951582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档