从Sys Rq + r中恢复


25

我对X服务器的锁定非常糟糕,必须执行Sys Rq + r才能从X释放键盘并进入控制台。我能够终止锁定系统的进程,并在仍在运行的X服务器上继续工作。

现在每当我按Alt + F4杀死一个窗口时,我的系统就会切换到第4个控制台,而不是杀死活动窗口。因此,我的键盘似乎仍处于释放模式。

如何撤消以前的Sys Rq + r命令,以便可以在正在运行的X服务器上继续工作?

Answers:


30

提出这个问题后,我自己找到了解决方案。

要将运行X的控制台(通常是tty7)从ASCII模式切换回RAW模式,请执行以下命令:

sudo kbd_mode -s -C /dev/tty7

现在一切都按预期进行了。:)

问题中提供了更多信息:原始/原始键盘模式是什么意思?


谢谢!仍在尝试找出是否有一种方法可以一次对所有tty进行操作,就像unRaw一样……
好好对待您的mods

3
@phyzome您不想对所有tty都这样做,因为“常规”(文本模式)tty需要ASCII(XLATE)或UTF-8(UNICODE)模式。否则,您将无法在此处输入内容(这正是SysRq-R修复的问题)。为了娱乐,请尝试kbd_mode -s -C /proc/self/fd/0使用tty,看看它是否损坏,然后通过SysRq-R对其进行修复。
没人

1
如果您使用的是运行X的TTY,则也可以使用sudo kbd_mode -s -C /dev/tty$(sudo fgconsole)
TSJNachos117,18年

0

如果您发现自己在网络上多次搜索该特定命令(如我所做的那样),则可以使用以下shell脚本将键盘重新捕获为正在使用的TTY:

#!/bin/bash

IFS=$'\n\t'
function ttys() {
    # find open files named `/dev/tty?` from commands named `Xorg`
    lsof -Fn -c Xorg -a /dev/tty? | \
      egrep '^n' |                  \
      sed -r 's/^n(.+)$/\1/g' |     \
      sort |                        \
      uniq
}

tty=$(ttys)
count_ttys=$(wc -l <<< $tty )

if [[ $count_ttys -gt 1 ]]; then
  echo 'more than one tty in use, exiting'
  exit 1
fi

echo binding keyboard to $tty
sudo kbd_mode -s -C $tty
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.