有没有什么方法可以使用可以从外部按钮激活的脚本来在 TTY 之间切换?我有一个带有 LCD 屏幕的小型家庭控制器 Raspberry,我没有连接键盘或鼠标,并且 LCD 旁边有几个按钮映射用于执行重新启动等命令。我想对其中一个按钮进行编程按一下按键,它将切换到另一个(下一个)tty,并在“循环”结束时返回到 tty1。我知道chvt
键盘组合,Alt F1, F2...
但没有一个能按我想要的方式工作。是否可以 ??线索是在不同的 tty 上有三个(或更多)程序(如诊断程序),以便在访问我的“机架”时查看:)
答案1
您只需要编写一个像chvt
循环 KVT 一样的程序,然后将其连接起来,就像您(您说的)已经将其他程序连接到其他按钮一样。
在 FreeBSD 上:
- 当前活动的 KVT 编号可作为 的输出
vidcontrol -i active
。 - “下一个”动作是
vidcontrol -s $NEXT
在增量和一些模运算之后。
在 NetBSD 上:
- 当前活动的 KVT 编号可作为 的输出
wsconscfg -g
。 - “下一个”动作是
wsconscfg -s $NEXT
在增量和一些模运算之后。
在 Linux 上:
- 当前活动的 KVT 编号可在 下的伪文件中找到
/sys/class/tty
。 - “下一个”动作是
chvt $NEXT
在增量和一些模运算之后。 - 可能的最大 KVT 数是固定的(并且您始终可以根据需要硬连线较低的最大值)。
对于这三者,以上所有操作都可以通过一些简单的 shell 脚本算法来完成。或者您可以用另一种语言编写程序,直接进行底层ioctl()
调用(VT_GETACTIVE
例如VT_ACTIVATE
在 FreeBSD 上)。
OpenBSD 需要这样的编程来直接调用wsdisplay
(4) ioctl()
,因为没有方便的实用程序可以实现这一点。
直接渲染到帧缓冲区上的用户空间虚拟终端可能具有类似的机制,但根据软件的不同而有所不同。例如,我的设备响应“消费设备应用程序启动”的实际 USB HID 代码下一个/上一个任务键。
进一步阅读
- 乔纳森·德博因·波拉德 (2018)。 ”linux-vt”。 设备。诺什工具集。
- 索伦·施密特等人。 (2016-01-19)。
vidcontrol
。 FreeBSD 通用命令手册。 wsconscfg
。NetBSD 系统管理员手册。 2006年6月24日。- 乔纳森·德博因·波拉德 (2018)。
console-multiplexor
。小吃指南。软件。 - 乔纳森·德博因·波拉德 (2018)。
console-multiplexor-control
。小吃指南。软件。