Ste*_*fan 4 bash keyboard-shortcuts xmodmap console
我最近开始学习dvorak键盘布局,但有时我仍然需要使用qwerty。
我正在寻找一个脚本来在两种键盘布局之间切换。
另外,我想用一个热键来调用这个脚本,这个热键可以在任何地方使用(在我的 DE和我的控制台中)。就像在这篇文章中按下关机一样。
您必须为 X 和您关心的每种文本控制台单独执行此操作。
如果您想在任意键映射之间切换,您需要维护状态,因为通常控制台不会为您做这件事。这就是 Gnome 和 KDE 等布局切换器所做的。但是如果你只想在一些众所周知的键映射之间切换,你可以查询控制台(假设你的控制台类型有这个功能),获取一个键发送的当前代码并根据它决定切换到什么。这里有几种可能性:
q
,则当前键映射看起来像 qwerty,因此切换到 dvorak,否则切换到 qwerty。这是 X 和 Linux 的实现,使用W= Q+1 测试。请注意,我还没有测试过。请注意,该脚本通常无法通过文本模式远程登录使用。
if [ -n "$DISPLAY" ]; then
if xmodmap -pke | awk '$3=="=" && $4=="q" {q=$2}
$3=="=" && $4=="w" {w=$2}
END {exit w-q==1}'; then
setxkbmap us
else
setxkbmap dvorak
fi
elif [ "$TERM" = "linux" ]; then
if dumpkeys | awk '$3=="=" && $4=="q" {q=$2}
$3=="=" && $4=="w" {w=$2}
END {exit w-q==1}'; then
loadkeys us
else
loadkeys dvorak
fi
fi
Run Code Online (Sandbox Code Playgroud)
在 X Window 上,将其绑定到键的最佳位置是使用您的桌面环境或窗口管理器的键绑定功能。您可以使密钥仅执行 X 特定的部分。当然,如果你的 DE/WM 有布局切换功能,你也可以使用它。
在 Linux 控制台上,键绑定的可能性非常有限。您可以将键绑定到KeyboardSignal
符号。如果您正在使用 SysVinit,请kb::kbrequest:/path/to/script
在/etc/inittab
按下信号时运行您的脚本(以 root 身份!)。我不知道如何使用 Upstart 配置此键的操作。
归档时间: |
|
查看次数: |
5933 次 |
最近记录: |