当您必须使用多个键来输入 \ 时,如何使用需要 ctrl-\ 的键盘快捷键?

当您必须使用多个键来输入 \ 时,如何使用需要 ctrl-\ 的键盘快捷键?

在大多数终端中默认情况下您可以按下来ctrl\向进程发送 SIGQUIT 信号。

但是在我的键盘上输入反斜杠时,你必须这样做:altshift7

这样做ctrlaltshift7不起作用,那么我该如何使用键盘快捷键呢?

答案1

今天,我不得不用德语键盘和 Ubuntu 来解决完全相同的问题。所以我想出了下面的脚本。找到正确的键仍然需要反复试验,但这样就很简单了。

顺便说一下,Ctrl-4对我来说很有效。

#!/usr/bin/bash

# Shows character codes while typing. More to the point, it also captures signals.

# Trap function
sig() {
    printf '\t\t\t%s\t(re-enabled now, works next time)\n' "$1"
    # A trap disables itself after being called once.
    trap - $1
}

# Setting traps for all signals
mapfile -t signals < <(trap -l | grep -Eo SIG[-+A-Z0-9]+)

for signal in "${signals[@]}"; do
    trap "sig $signal" "$signal"
done

# Display characters
printf "Start typing to examine characters and signals. Exit with Ctrl-C (twice).\n\n"
printf "Char\tDec\t Hex\tSignal\n"

while IFS= read -rN 1 char; do 
    LC_CTYPE=C printf '\t%3d\t0x%02X\n' "'$char" "'$char"
done

答案2

我不知道您如何输入Ctrl+ \,但我可以为您提供另一种从键盘生成 SIGQUIT 的方法。找到一个可以作为简单组合键输入的字符。这可能需要映射到(单个)ASCII 字符(即单个字节);例如Ctrl+ A。然后输入

stty quit ^A

可以是 sttyquitCtrl+ A Enter (如果收到错误消息,请尝试在 + 之前输入+ )Ctrl或字面意思 (如果收到错误消息,请尝试将 放在引号中)。然后输入命令,如,按下组合键(即+ ),并查看程序是否按+ 的预期退出。VCtrlAsttyquit^AEnter^Asleep 9CtrlACtrl\

如果您找到可行的组合,请将其(命令stty quit)放入.login、、或您使用的任何初始化命令文件.profile中。.bashrc

答案3

我和法国人也遇到了同样的问题阿泽蒂“ 键盘。

要获取反斜杠字符\,我必须按altshift/

但是按下ctrlaltshift/不会发送任何信号,它只是.在终端中插入一个点。

我发现按下ctrl`(反引号或反引号键)确实会发送SIGQUIT信号:

$ sleep 9
^\Quit: 3

按压ctrlshift`也有效。

请注意,在法语键盘上,“移动”反引号字符(即按shift`)会产生磅号符号£

您可以使用以下命令获取所有信号的列表kill -l

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT  4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGEMT   8) SIGFPE
 9) SIGKILL     10) SIGBUS      11) SIGSEGV 12) SIGSYS
13) SIGPIPE     14) SIGALRM     15) SIGTERM 16) SIGURG
17) SIGSTOP     18) SIGTSTP     19) SIGCONT 20) SIGCHLD
21) SIGTTIN     22) SIGTTOU     23) SIGIO   24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF 28) SIGWINCH
29) SIGINFO     30) SIGUSR1     31) SIGUSR2 

答案4

您是否尝试过映射不同的键到^\

例如(在 macOS 终端中):

转到“终端 -> 首选项 -> 设置 -> 键盘”,单击并将++之类的内容映射到。controlf4\034

相关内容