如何在 Linux 中输入 Windows 风格的 ALT 代码?

如何在 Linux 中输入 Windows 风格的 ALT 代码?

我发现 Linux 有一个更用户友好的 ALT 代码版本,用于输入特殊符号。我需要能够找到一个能够接受并正确解释这些替代代码的应用程序,这在 Windows 计算机上很常见。

我有一个便携式文字处理器,AlphaSmart。它在内存中保存了一些文件,但我经常需要在写入这些文件后将它们传输到我的计算机上。当连接到计算机时,它会假装它是一个真正的键盘,并发送文本,就像有人正在打字一样。它只是打字速度非常快。所以我只需打开mousepad并按“发送”,它就会通过键入将文档从 AlphaSmart“传输”到计算机。 Linux 只是认为插入的键盘正在打字。

当涉及重音字符时,它会发送模拟的 ALT 键组合。但 Linux 不理解这些,所以我最终得到了缺少重音符号的单词。 “Hernán Cortés”更名为“Hernn Corts”。

有没有一种方法可以设置一个 Linux 应用程序来接受这些 ALT 代码,以便我可以正确检索带有理解的重音代码的文件?或者有没有办法安装输入法,例如通过ibus它接受 ALT 代码?

答案1

在大多数(所有?)流行的桌面环境中,如果您按Ctrl+ u,然后按统一码编号,就会得到对应的unicode字符。例如,要获取Ë,您可以按Ctrl+u然后键入00cb

或者,切换到布局死钥匙这将允许您使用 AltGr(右 Alt 键)输入重音符号。例如:

  • AltGr+'然后i给出í;
  • AltGr+` 然后i给出ì;
  • AltGr+"然后i给出ï;
  • AltGr+:然后i给出°;

答案2

我不知道有任何 Linux 输入法可以理解 MS-Windows 风格的 Alt+数字输入。

但您只需要它来粘贴您拥有的外部机器上的文本,所以也许我编写的这个小 Tcl 脚本会有所帮助。它是一个模拟 MS-Windows Alt+nnnn 键序列的最小文本编辑器。

#!/usr/bin/wish

text .t
pack .t -fill both -expand yes

set buf {}
proc pressed {digit} {
    append ::buf $digit
    if {[string length $::buf] == 4} {
        .t insert insert [format %c [string trimleft $::buf 0]]
        set ::buf {}
    }
}

foreach k {0 1 2 3 4 5 6 7 8 9} {
    bind .t <Alt-KeyPress-$k> [list pressed $k]
}

您需要 Tcl 和 Tk 才能在 Linux 机器上运行它。告诉我它是否有效或是否有问题。

答案3

我遇到了和你完全相同的问题,它最终阻止了我在 Alphasmart 上写作,因为我需要使用“fada”,元音上的爱尔兰口音:áéíóú。

这不是所问问题的解决方案,但我确实找到了这个项目,它看起来最终会让我再次使用 Alphasmart:

https://github.com/lykahb/neotools

我在使用此工具时遇到了一个小错误,有时无法将模式从“虚拟 HID 键盘”切换到“同步模式”,但如果您中止并重试几次,它似乎会恢复。可能对代码进行足够小的修复即可解决此问题,同时它仍然可用。

相关内容