我在将 Debian Jessie 中的 Logitech K810 蓝牙键盘与 BlueZ 版本 5.23-1、内核 3.16.0-4 连接时遇到问题。
键盘大部分时间都可以正常工作,但有时它根本不起作用,并bluetoothctl给我一个控制器不可用的错误。
发生这种情况时,hciconfig 仍然可以识别设备,我得到以下输出:
# hciconfig hci0 up
# hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 40:2C:F4:68:02:CA ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
RX bytes:21820 acl:1132 sco:0 events:68 errors:0
TX bytes:1182 acl:11 sco:0 commands:53 errors:0
Run Code Online (Sandbox Code Playgroud)
但是bluetoothctl提示中没有显示任何设备,它给了我这个输出:
[bluetooth]# power on
No default controller available
[bluetooth]# scan on
No default controller available
Run Code Online (Sandbox Code Playgroud)
重新启动或有时挂起/恢复可以解决问题:bluetoothctl将再次识别控制器和再次工作的键盘。
根据rfkill.
的相关输出lspci -v,我想是这样的:
03:00.0 …Run Code Online (Sandbox Code Playgroud) 我最近在我的笔记本电脑上切换到 Ubuntu,几乎让我切换回 Windows 的一件事是我无法让Ctrl+Alt像 Alt gr 一样行事。
我已经编程了几年,例如我习惯于通过按ctrl+ alt+来制作符号“$” 4。在 Ubuntu 中,我必须使用“Alt gr + 4”女巫几乎让我发疯......
有没有办法解决这个问题?
我在 XFCE 中使用 Gentoo。我有一个罗技 K350 键盘,除了少数几个键外,其他所有键都按预期工作,但我想使用一个特定键,但是当我运行时,showkey没有发送任何键代码。关键是键盘左下角的排列窗口按钮。
.
这是一个驱动程序问题,是否有可能获得该密钥以发送代码以便我可以将操作映射到它?
我使用 Ubuntu。在“侏儒末端”,I可以通过第一输入键入的Unicode码点Ctrl+ Shift+u其次是码点的十六进制值,例如C-S-u 2468产生?
konsole,我的首选终端,没有这个C-S-u(Gnome)功能......
在 Konsole 中是否有一些等效的 KDE 方法来执行此操作?
我想用 Python 编写一个应用程序,您可以使用它的默认键盘和一个专门为该应用程序设计的键盘。我将简单地通过使用带有贴纸的小型数字键盘来对不同的键进行操作来设计它。两个键盘都将通过 USB 连接。
然而,当按下这些键时,只有它们的常规信号(数字、运算符和输入)将被发送到 Python,它无法区分来自主键盘和特殊键盘的信号。
因为 Python 没有(就我所能找到的)进行这种区分的方法,所以我想在操作系统本身上进行。我将为 Raspberry Pi 进行编程,所以它将是 Linux。
所以,主要问题是:如何将特定键盘的键重新映射到其他键码。我考虑过使用我不会用于其他目的的 F 键;或者只是一些不存在于任何键盘上的字符(假设有这样的字符)。
这在 Linux/Unix 中可能吗?如果是这样,我该怎么做?
我经常在安装了多个键盘的配对站上工作。我可以使用setxkbmapwith-device <ID>来设置特定键盘的布局(使用来自xinput的ID),但通常我在使用哪个键盘并不明显。最好避免反复尝试两种键盘,因此我想编写一个快速工具来获取setxkbmap. 我希望有一个典型的用例,如下所示:
$ setxkbmap -device "$(get-keyboard-id)" -layout gb
Press Enter to detect keyboard ID
Run Code Online (Sandbox Code Playgroud)
哪个界面在 Linux 上提供此信息?理想情况下,它应该在没有 X 的情况下工作,但这不是必需的(似乎没有很多工具可以在没有 X 的情况下支持这一点)。
迄今为止的发现:
xinput? 列表.c ? list_xi2? XIQueryDevice提供可由setxkbmap.showkey并且xev不要打印键盘 ID。xinput list-props $ID显示发送键盘事件的位置。但是,使用另一个答案中的代码似乎该设备不会打印任何内容来识别键盘。一种几乎可能的解决方案是xinput --test <ID> &针对每个键盘 ID运行并查看哪个首先返回某些内容。问题在于找出哪些“键盘”实际上是键盘:
$ xinput | grep keyboard
? Virtual core keyboard id=3 [master keyboard …Run Code Online (Sandbox Code Playgroud)我有一个老式的 IBM 122 键型号 M 键盘,我正在改装以在现代计算机上使用。我正在使用 Teensy 2.0 进行编码和处理 USB 方面的事情。我从 Humble Hacker 键盘项目 ( https://github.com/humblehacker/keyboard )借用了固件,并在构建配置中添加了额外的键。到现在为止还挺好。
所有“常规”键都有效,但内核似乎正在删除额外的键(F13-F24等)。
运行/lib/udev/keymap -i input/event0显示所有普通键的扫描码,但没有显示额外键的扫描码。
运行wireshark以捕获 USB 端口的数据包显示键盘正在发送扫描码,但看起来内核只是原则上丢弃它们。
我觉得这是内核驱动程序中的某些东西,它根本没有提供它不期望的扫描码。
我认为.h内核源代码中的某个文件中会有某种“主”键映射,但到目前为止,我还没有成功找到它。
值得强调的是,我并不是像在我之前的许多其他人一样要求在 X 中映射额外的键。这是一个低级别的,显然与内核相关的问题。暂时假设我根本不会使用 X。我需要的是在我运行时显示扫描码/lib/udev/keymap -i,我可以从那里完成其余的工作。
情况:
当我打开 Linux Mint 20/19/18/17 CinnamonNumLock时,登录窗口中的关闭。
客观的:
启动时在登录窗口中自动打开 NumLock。
假设我有一个 X 应用程序,它使用键盘和鼠标作为其正常操作模式(例如 QEMU),但是由于某个地方的错误,它非常难以挂起(例如陷入磁盘睡眠)。通常我会kill(1)从远程终端杀死一个应用程序,但如果应用程序处于磁盘睡眠模式,它就不能真正被杀死。我可以通过xkill实用程序终止此应用程序与 X 服务器的连接,但是这次我不能这样做,因为鼠标被抓住了,因此xkill将无法运行。
那么,如果我愿意牺牲这个客户端,但我无法通过操作系统的方式杀死它,我如何从 X 客户端的抓取中释放我的键盘和鼠标?
我正在开发一个嵌入式 Linux 项目,我将在其中开发一个程序,该程序将在启动时自动运行并通过字符显示和某种按钮阵列与用户交互。如果我们使用一个简单的 GPIO 按钮阵列,我可以轻松编写程序来查找这些 GPIO 线上的按键。但是,我们的一个想法是使用 USB 数字键盘设备代替用户输入。我的理解是这些设备将作为 USB 键盘呈现给操作系统。如果沿着这条路走下去,有没有办法让我的程序从 Linux 中查找这个 USB 键盘上的输入,记住没有虚拟终端或 VGA 显示器。插入 USB 键盘后,“/dev”中是否有实体可以打开文件描述符?