如果我去,/dev/input/by-path我可以看到我的输入外设。
我有一个键盘和一个鼠标,在我的平台上输出是:
pci-0000:05:00.0-usb-0:1.2:1.0-event-kbd
pci-0000:05:00.0-usb-0:1.1:1.0-event-mouse
pci-0000:05:00.0-usb-0:1.1:1.0-mouse
pci-0000:05:00.0-usb-0:1.1:1.1-event-kbd
Run Code Online (Sandbox Code Playgroud)
作为旁注,只有一个open(<path_to_device>, O_RDONLY)用于监听输入(对于键盘来说,它是usb-0:1.2:1.0一个)。
(我正在运行 Ubuntu;以防万一!)
如何构建位于键盘和应用程序之间的组件来捕获所有按键并发出自己的按键信号。发出的信号不一定与捕获的信号一一对应。最终,我试图创建一个类似于 ibus 的输入方法(我也希望了解有关 ibus 在技术上如何工作的信息)。
阅读完这个问题后,我认为捕获的适当位置是在生成键码或键符号之后。我还了解 X 允许客户端获取所有听起来与我想做的事情相关的键盘事件。
我正在努力在~/.XCompose. 随着我添加越来越多的序列,有时我会打错字或对不同的符号使用相同的序列。
错别字/不存在的代码
<Multi_key> <non-existent-keysym> : other-non-existent-keysym
Run Code Online (Sandbox Code Playgroud)
完全碰撞
<Multi_key> <a> <b> : x # overrule by 2nd rule
<Multi_key> <a> <b> : y
Run Code Online (Sandbox Code Playgroud)
前缀冲突
<Multi_key> <a> <b> <c> : y
<Multi_key> <a> <b> : x # overruled by 1st rule
Run Code Online (Sandbox Code Playgroud)
是否有验证我的~/.XCompose文件的命令。最低要求是二进制答案:要么 »您的 XCompose 没有错误« 或 »您的 XCompose 包含错误«。如果出现错误,欢迎提供有用的错误消息,例如 »规则序列前缀的冲突 «。
我创建了~/.XCompose包含上面的所有错误并打开了一个文本编辑器。文本编辑器没有显示错误(在控制台上)。正确且未被推翻的序列有效,所有其他序列都将被忽略。
我读了man 5 XCompose。在文档本身中,我发现没有任何帮助。我查看了man 5 XCompose. 只有mkcomposecache(1)看起来很有希望(从判断一派手册页),但似乎缺少我的系统(Linux Mint的18.3)上。既没有 …
这似乎是一个奇怪的问题,但我突然想到,在键入如下命令时,我总是必须从Wikipedia复制并粘贴该字符。
echo '5 ?s' >> /tmp/Output
Run Code Online (Sandbox Code Playgroud)
有没有办法直接在标准英文键盘上的键盘快捷键上使用转义序列输入这样的字符?
例如,在 中Vim,可以执行C-k,m*此操作来生成此字符。
我发现 Linux 有一个更用户友好的 ALT 代码版本,用于输入特殊符号。我需要能够找到一个能够接受并正确解释这些替代代码的应用程序,这在 Windows 计算机上很常见。
\n\n我有一个便携式文字处理器,AlphaSmart。它在内存中保存了一些文件,但我经常需要在写入这些文件后将它们传输到我的计算机上。当连接到计算机时,它会假装它是一个真正的键盘,并发送文本,就像有人正在打字一样。它只是打字速度非常快。所以我只需打开mousepad并按“发送”,它就会通过键入将文档从 AlphaSmart“传输”到计算机。Linux 只是认为插入的键盘正在打字。
当涉及重音字符时,它会发送模拟的 ALT 键组合。但 Linux 不理解这些,所以我最终得到了缺少重音符号的单词。“Hern\xc3\xa1n Cort\xc3\xa9s”被传输为“Hernn Corts”。
\n\n有没有一种方法可以设置一个 Linux 应用程序来接受这些 ALT 代码,以便我可以正确检索带有理解的重音代码的文件?或者有没有办法安装输入法,例如通过ibus它接受 ALT 代码?
我安装了几种fcitx中文输入法,但无法切换输入法。
这是执行后我从终端复制的输出:fcitx-diagnose
# System Info:
1. `uname -a`:
Linux austin-elementary 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
2. `lsb_release -a`:
No LSB modules are available.
Distributor ID: elementary
Description: elementary OS 0.4 Loki
Release: 0.4
Codename: loki
3. `lsb_release -d`:
Description: elementary OS 0.4 Loki
4. `/etc/lsb-release`:
DISTRIB_ID="elementary"
DISTRIB_RELEASE=0.4
DISTRIB_CODENAME=loki
DISTRIB_DESCRIPTION="elementary OS 0.4 Loki"
5. `/etc/os-release`:
NAME="elementary OS"
VERSION="0.4 Loki"
ID="elementary"
ID_LIKE=ubuntu
PRETTY_NAME="elementary OS 0.4 Loki"
VERSION_ID="0.4"
HOME_URL="http://elementary.io/"
SUPPORT_URL="http://elementary.io/support/"
BUG_REPORT_URL="https://bugs.launchpad.net/elementary/+filebug"
6. Desktop Environment: …Run Code Online (Sandbox Code Playgroud) 我需要将按键虚拟发送到终端程序(如vi或emacs)。
我想做这样的事情:
echo -e 'iHello, world!\e' | vi
Run Code Online (Sandbox Code Playgroud)
然后使用此缓冲区打开一个vi会话:
Hello, world!
~
~
~
~
~
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为vi不通过stdin读取击键。
我收到此错误:
ex/vi: Vi's standard input and output must be a terminal
Run Code Online (Sandbox Code Playgroud)
如何将一些文本字符串发送到终端程序,就像直接在键盘上键入字符串一样?
input-method ×7
keyboard ×3
input ×2
command-line ×1
compose-key ×1
devices ×1
fcitx ×1
terminal ×1
x11 ×1