我的系统上有两种语言(英语和立陶宛语),我的密码包含数字,我使用键盘上专用的数字行(字母上方)来输入这些数字。立陶宛语键盘恰好使用该数字行来输入特殊字母。因此,当提示输入密码时,我通常会犯错误,因为语言设置为立陶宛语。如何在提示输入密码时自动将语言更改为英语?
答案1
在评论区与 Gunnar Hjalmarsson 交流后,我认为以下 shellscript 应该可以运行具有提升权限的程序。当您输入密码时,它将使用美式英语键盘,然后直接将键盘重置为您自己的键盘。
您可以使用名称mysudo
,或者如果您希望使用更短(但唯一)的程序名称。
#!/bin/bash
curkeyb=$(setxkbmap -query|grep 'layout:'|sed 's/.* //')
setxkbmap us
sudo echo "sudo $@"
setxkbmap "$curkeyb"
sudo "$@"
使其可执行并将其复制到目录中PATH
,例如
chmod +x mysudo
mv mysudo /usr/local/sbin
然后你可以使用它来代替sudo
例子:
mysudo nano hello.txt
mysudo -H gedit hello.txt # remember -H with GUI programs
mysudo parted -ls
解释:
- shebang 告诉我们
bash
应该用它来运行 shellscript。 - 原始键盘设置已被保存。
- 键盘更改为美式英语。
sudo
已启动,如果最近没有运行,它将要求输入密码。- 键盘重置为原始设置。
- 上一个
sudo
命令为 shell 授予了几分钟的提升权限。这意味着真正的命令可以用原始键盘运行和提升权限而无需再次输入密码。
如果您安装并运行,onboard
您将看到键盘如何变化,以便当系统等待密码时,顶行键将映射数字 1 2 ... 9 0,然后切换回您的语言。