无需专用 PgUp 和 PgDown 即可滚动 TTY

无需专用 PgUp 和 PgDown 即可滚动 TTY

uname -r如果返回大于 5.9 的 Linux 版本,则停止读取,因为回滚已被简单地删除(1,2)。


我的键盘没有单独的 PgUp 和 PgDown 键。它们位于数字键盘中,与 KP_9 和 KP_3 共享位置。

键盘图片

Shift+Pg{Up,Down}无论 Numlock 打开或关闭,都无法滚动终端。

由于我不关心键盘数字,但非常关心滚动,因此我已成功地将它们在 X11 中重新映射到“上一个”和“下一个”,无论 Numlock 状态如何,现在Shift+{PgUp,Down}两者都可以在 Xterm 中使用。

但是,我无法在 TTY 中实现相同的目标。例如,使用其他具有专用页面键的键盘,我可以在读取大文件Shift+PgUp后向后滚动。cat

原始键码

作为showkeys

KP_3/KP_PgUp   = 73
KP_9/KP_PgDown = 81
Slash          = 89
Right Shift    = 54

作为dumpkeys

PgUp   = 104
PgDown = 109

斜杠和右移也被列出,因为我也将交换它们只是为了测试。

尝试

  • 完全修改/etc/console-setup/remap.inc为这样:

    keycode 73 = Prior
      shift keycode 73 = Scroll_Backward
      shift shiftl  keycode 73 = Scroll_Backward
      shift shiftr  keycode 73 = Scroll_Backward
      shift shiftl  shiftr  keycode 73 = Scroll_Backward
      shift ctrll keycode 73 = Scroll_Backward
      shift shiftl  ctrll keycode 73 = Scroll_Backward
      shift shiftr  ctrll keycode 73 = Scroll_Backward
      shift shiftl  shiftr  ctrll keycode 73 = Scroll_Backward 
    keycode 81 = Next
      shift keycode 81 = Scroll_Forward
      shift shiftl  keycode 81 = Scroll_Forward
      shift shiftr  keycode 81 = Scroll_Forward
      shift shiftl  shiftr  keycode 81 = Scroll_Forward
      shift ctrll keycode 81 = Scroll_Forward
      shift shiftl  ctrll keycode 81 = Scroll_Forward
      shift shiftr  ctrll keycode 81 = Scroll_Forward
      shift shiftl  shiftr  ctrll keycode 81 = Scroll_Forward  
    keycode  89 = Shift
    keycode  54 = slash
      shift keycode  54 = question
      altgr keycode  54 = degree
      shift altgr keycode  54 = questiondown
    
  • 按照以下说明进行操作如何更改 Linux 中的控制台键盘映射?

    dumpkeys > pageupdown
    

    然后交换了

    keycode 73  keycode 104
    keycode 81  keycode 109
    keycode 54  keycode 89
    

    在该文件中并发布loadkeys -s pageupdown

结果

在这两个实验中,

  • 尽管两个键盘按键不再打印数字并且仍然可以根据需要PgUp工作(它会滚动),但不会滚动 TTY。lessShift+PgUp

  • 右移和斜杠已正确交换。

补充笔记

  • 切换 Numlock 对任何配置都没有帮助。 Fn 键对这些键也没有任何作用。

  • 我还尝试将更普通的键(即lp)映射到页面操作,但没有成功。

  • 如果有任何帮助的话,这是在 X 会话中工作的 XKB 映射:

    partial keypad_keys
    xkb_symbols "noKPNumbers" {
        key  <KP9> {  [  Prior,   Prior   ]   };
        key  <KP3> {  [  Next,    Next    ]   };
    };
    

Shift+Pg{Up,Down} 如何以滚动 TTY 缓冲区的方式映射键盘 PgUp 和 PgDown 键?有可能吗?

答案1

它不起作用的原因是您试图将表单控件添加到无表单的输出中。没有可滚动的缓冲区。

这似乎不太合理,所以让我解释一下。 TTY 是控制台输出到实际 TTY 或 TeleTYpe 设备时的历史工件。它是一个串行终端打印机,例如从 DEC 搜索 LA120。实际上,您仍然可以将行式打印机挂接到 /dev/tty 中。某些服务器硬件还允许您在 BIOS 级别将此输出重定向到串行设备。如果您知道如何在绝对最坏的硬件故障排除场景中使用它,那么它会非常方便。

TTY 打印机会按原样打印每一行,然后纸张堆积在操作室的地板上。屏幕上的内容正是屏幕缓冲区中打印的内容。不过没有其他保留的信息可以滚动。

Console TTY 是为了保留某种日志而做出的最后努力,即使其他一切都搞砸了。它显示磁盘已满消息或导致系统停止的段故障,为实际操作员提供一些线索,说明为什么系统正在用电,但没有其他用处。

相关内容