xscreensaver 和键盘布局

xscreensaver 和键盘布局

xscreensaver 不显示当前的键盘布局,所以有时我无法输入密码,因为我在不知情的情况下切换到了西里尔字母。我发现关于同一问题的讨论http://forum.xfce.org/viewtopic.php?id=6877, 例如。

有没有办法让它显示当前的键盘布局,或者总是切换到英语?

我的系统是 Debian Wheezy。

答案1

至少在 ubuntu 上以下对我有用:

  1. 创建的文件夹:mkdir ~/.startup
  2. 还有一个文件touch ~/.startup/xscreensaver-reset-kbd-us.pl
  3. 修改了它chmod 755 ~/.startup/xscreensaver-reset-kbd-us.pl
  4. 编辑(复制并粘贴下面的代码)gedit ~/.startup/xscreensaver-reset-kbd-us.pl

    #!/usr/bin/perl
    
    my $blanked = 0;
    open (IN, "xscreensaver-command -watch |");
    while (<IN>) {
        if (m/^(BLANK|LOCK)/) {
            if (!$blanked) {
               system "setxkbmap -layout us";
               $blanked = 1;
            }
        } elsif (m/^UNBLANK/) {
            system "setxkbmap -layout us,ru";
            $blanked = 0;
        }
    }
    
  5. 将脚本添加到启动应用程序

它监视来自 xscreensaver 的事件,并仅在锁定时将键盘布局重置为英语,并在取消空白时添加 ru 布局。

答案2

可以通过在锁定之前执行几行 setxkbmap 行来完成(在 xfce 中, into /usr/bin/xflock4,请参阅:http://www.reddit.com/r/xfce/comments/11yi34/reset_the_keyboard_layout_on_xscreensaver_lock/如同:

setxkbmap -layout us 
setxkbmap -layout us,ru

这应该禁用然后重新启用国际布局,据说将当前布局切换为美国布局。似乎工作正常。刚刚重新测试了一下,还是不行。但一般的解决方案是沿着这些思路,只是需要更多的实验。

答案3

另一个选择是安装不同的屏幕锁定实用程序,例如刚才我尝试了“i3lock”http://i3wm.org/i3lock/,它无需对键盘布局进行任何修改即可工作。

答案4

一个选择是使用快捷方式始终切换到第一个键盘布局。例如,我使用WIN+Space切换到下一个布局,使用LCTRL+LWIN始终切换到第一个布局。

如何选择该选项取决于您用来选择键盘布局和切换选项的程序。这里有 2 个例子:

  • 如果来自localectl set-x11-keymap命令行,则用于切换的选项将在参数中传递OPTIONS(请参阅man localectl语法和man xkeyboard-config选项列表的“选项 > 切换到另一个布局”部分)。例如,在我的笔记本电脑上,它看起来为localectl set-x11-keymap "us,ru" thinkpad "" "grp:win_space_toggle,grp:lctrl_lwin_rctrl_menu".参数的当前值localectl set-x11-keymap可以在 的输出中看到setxkbmap -query。新设置仅在重新启动 xorg 后(例如重新启动操作系统后)才起作用。
  • 在 cinnamon GUI(内部调用/usr/bin/python2 /usr/share/cinnamon/cinnamon-settings/cinnamon-settings.py keyboard)中,它是“菜单 > 键盘 > 布局 > 选项 > 切换到另一个布局”。

在这两种情况下,您可能需要选择描述中带有“第一个布局”字样的选项。然后(例如,假设第一个布局us可以用于输入密码)您可以按LCTRL+LWIN切换到us并输入密码。

相关内容