我想更改默认快捷键以在 tty 之间来回切换。默认情况下,它是 ctrl + alt + F#。我尝试使用 Ubuntu 的键盘设置创建自定义快捷键,但它仅在使用图形界面时有效,当我切换回 tty 时它不起作用。所以我需要弄清楚如何更改 ctrl + alt + F# 快捷键的默认绑定,以使单个键在两个 TTY 之间来回切换。
答案1
你可以使用bind
将某个键绑定到某个功能。以下是我所做的:
bind '"\ea": ". ~/newScript.sh\n" '
这newScript.sh
是改变 tty 的文件,\ea
意味着只要Alt+A
按下,脚本就会执行。
其内容newScript.sh
为:
#! /bin/bash
ttyNum="$(tty)"
ttyNum=$(echo ${ttyNum##*y})
ttyNum=$(( (ttyNum +1) % 7))
chvt $ttyNum
请注意,如果您想永久存储键绑定,您可以将其存储在“~/.inputrc”文件中。有关更多信息,您可以访问此链接:http://www.techrepublic.com/article/find-and-bind-key-sequences-in-bash/5683375
更新: 您可以将这bind
条线存储在您的~/.bashrc
文件中,这样您就不必再重复做这件事了。
答案2
有一个命令可以实现这一点chvt
。
chvt
命令代表 CHange Virtual Terminal。它接受一个选项,该选项是一个数字,用于告诉它要切换到的虚拟终端。
例如,如果你在第一个虚拟终端登录,并且想要切换到 xserver 通常显示 GUI 的第 7 个虚拟终端,则运行chvt
以下命令:
chvt 7
要返回第一个虚拟终端,请输入:
chvt 1
因此您需要做的就是将该命令添加到 7 个快捷方式,然后就可以切换。
答案3
编辑:我真傻!只需查看文件 /etc/console-setup/remap.inc
您将在该文件中找到所需的一切。无论如何,下面给出了解释。
不幸的是,“bind”只在 shell 会话中起作用。
您需要做的是更改控制台映射。您可以使用程序“loadkeys”(man loadkeys)来执行此操作。首先,转储当前映射以查看文件的格式应该是什么样的:
dumpkeys > default_keys.txt
请注意,您需要从文本控制台而不是 X 执行此操作,因此请先按 Ctrl-Alt-F1 切换到文本控制台!
以下是该文件的一个示例行:
alt keycode 59 = Console_1
这意味着生成代码 59 的键,与修饰符“alt”(在该文件的其他位置定义)一起按下,将生成“Console_1”事件 - 切换到虚拟控制台 1。
如何找出哪个键生成哪个代码?使用 showkey 程序。我启动该程序并按“F1”:
komp $ showkey
keycode 59 press
keycode 59 release
退出此程序的唯一方法是闭上眼睛,思考开源的本质十秒钟。或者只是十秒钟不碰键盘,这也行得通。使用此方法找出键盘映射文件中需要更改键映射的行。
假设您想使用“ctrl 1”切换到控制台 1。您会发现 1 的键码是 2。将以下行保存到名为“myownkeys.txt”的文件中:
control keycode 2 = Console_1
切换到文本控制台(如果你还没有这样做)并运行
sudo loadkeys myownkeys.txt
瞧,Ctrl-1 应该会将您转到控制台 1。在您的文件中添加更多行作为快捷方式。如果您想使其永久生效,您可以 [编辑] 修改文件 /etc/console-setup/remap.inc
顺便说一句,除了 Console_n 之外,您还有“Decr_console”和“Incr_Console”——分别切换到左侧控制台和右侧控制台。默认情况下,它们绑定到 alt-left 和 alt-right。