当我在 shell 中打开新选项卡时,xmodmap 键绑定会重置

当我在 shell 中打开新选项卡时,xmodmap 键绑定会重置

当我使用 shift-s 在 ranger 中打开 shell,打开 vim,然后使用 :sh 打开 shell 或使用 ctrl-shift-t 打开新的 shell 选项卡时,我的 xmodmap 键绑定(交换的大写锁定和转义键)将被重置。这是终端输出的内容:

xmodmap:  please release the following keys within 2 seconds:
    t (keysym 0x74, keycode 28)
    Shift_R (keysym 0xffe2, keycode 62)

我的按键绑定对我来说非常重要,因为我是一名活跃的 vim 用户,目前正在使用 Typescript(我需要快速访问 shell 来编译我的代码)。我使用xmodmap ~/.Xmodmap(.Xmodmap 文件包含我的 xmodmap 命令)设置我的键绑定,并将该命令添加到我的 .bashrc 中。

更多背景信息我使用的是 Ubuntu 16.4,最近我创建了一个 ranger 配置文件 (~/.config/ranger/rifle.conf) 来添加对 .ts 文件扩展名的支持。我不是 ranger 或 bash 专家用户,但这两者对我的工作流程都非常重要。非常感谢您的帮助。

编辑:当我从 .bashrc 中删除时,这个问题就解决了xmodmap ~/.Xmodmap,但现在我无法在启动时启用 xmodmap 键绑定。添加@reboot xmodmap ~/.Xmodmap到我的 crontab 文件不起作用(也许我应该为此发布一个单独的问题,但我会将这个问题留在这里以供将来参考)。

答案1

不要xmodmap在 .bashrc 中运行。

它属于~/.xinitrc这样你的窗口管理器将运行它一次启动时。当您打开第二个或第三个 shell 选项卡时,相同的键绑定将继续可用。

您的 .bashrc 命令在多个上下文中运行,包括可能缺少 的 ssh 登录会话$DISPLAY,因此 init 脚本通常不是 X11 命令的正确位置。

相关内容