Openbox覆盖xmodmap配置


9

我正在运行Linux Mint 13的笔记本电脑上设置openbox。我希望将Caps Lock键用作附加控制键。我将所需的设置放入~/.Xmodmap文件中,并通过运行对其进行了检查

xmodmap ~/.Xmodmap

它可以正常工作。

但是,当我重新登录openbox会话时,这些关键更改不存在。运行上面的xmodmap命令会使它再次工作,但是我希望它在启动时自动发生。

有趣的是zenity我在~/.config/openbox/autostart文件中添加了以下测试命令

zenity --info --text=Hello

这将产生一个小的对话框窗口,并且仅在对话框关闭后退出。

现在,当我重新登录openbox会话时,Caps Lock充当Ctrl键,直到关闭zenity对话框。关闭该对话框后,Caps Lock将返回其默认行为。

我还没有在Google上找到任何相关内容,因此我在这里寻求帮助。你们对可能出什么问题有任何想法吗?

更新:

我一直试图找出答案,在实验中,我将/usr/bin/xmodmap文件复制到/usr/bin/xmodmap_并用/usr/bin/xmodmap以下bash脚本替换了文件

#!/bin/bash

{
    echo '-------'
    date
    echo xmodmap "$@"
} >> ~/xmodmap-calls

exec /usr/bin/xmodmap_ "$@"

因此,每当系统上任何该死的脚本运行时xmodmap,我都会了解它。

这样,我重新登录,仅在~/xmodmap-calls文件中找到一个条目,该条目是运行my的条目~/.Xmodmap,这是预期的。因此,我认为不是xmodmap覆盖我的更改。

接下来,使用一些谷歌搜索功能向我介绍了该setxkbmap命令,该命令显然也可以执行相同的操作。我也替换了该可执行文件,类似于上面的xmodmap。我得到了罪魁祸首!

setxkbmap -option terminate:ctrl_alt_bksp

我完全不知道该怎么做,但是在运行xmodmap ~/.Xmodmap(正确应用了我的设置)之后,如果运行上述命令,我的更改将被重置!编辑:这真是有趣。只是一个setxkbmap没有任何参数的命令,会很高兴地用xmodmap ~/.Xmodmap命令覆盖我的更改。

现在我有两件事要弄清楚,这setxkbmap是从哪里运行的,为什么以及如何解决此问题。我仍在调查,但可以认真使用一些帮助:)

更新2

与地狱xmodmap。我无法确定从何处setxkbmap调用,但是我想出了一种使用setxkbmap命令来使Caps Lock表现为Ctrl的方式。

setxkbmap -option ctrl:nocaps

就在启动openbox之前。作品辉煌。大写锁定键仍然充当ctrl键。xmodmap永远不会运行。

我将在这里保留这个问题,以便知道这些事情的人可以提供一些见解。另外,对于那些在我之后面临这个问题的人:)

更新3

这是.config/openbox/autostartpedrosaurio要求的my的内容。

#!/bin/bash

# Set the wallpaper.
feh --bg-scale /wall.png

# Set default brightness.
xbacklight -time 1 '=40'

# Compositing.
xcompmgr &

# The panel.
tint2 &

# Start a terminal too.
roxterm &

据我所知,这与键盘没有任何关系。另外,这是启动我的会话的脚本:(由lightdm运行)

#!/bin/bash

setxkbmap -option ctrl:nocaps

exec openbox-session

您可能正在使用某种键盘配置,例如,选择键盘布局或类似的配置来还原您已应用的更改
Ulrich Dangel 2012年

我摆弄键盘配置的唯一其他地方是GUI键盘布局首选项窗口,在这里我更改了大写锁定键以充当其他ctrl。很好,在肉桂DE中,即使重新登录后,我的大写锁定也可以用作ctrl。我认为该配置仅适用于肉桂,但我不确定。
Shrikant Sharat

您如何在自动启动脚本中添加命令?
pedrosaurio

您可以发布autostart文件吗?
pedrosaurio

Answers:


1

我遇到了类似的问题。原来,这是由ibus引起的。我只是卸载了它,因为我不需要它的服务。

我通过使用脚本替换setxkbmap的技巧找到了罪魁祸首,但是我也添加ps -AF --forest了识别setxkbmap调用者的方法。


0

不知道您的自动启动脚本,我敢打赌,您通过使用&符号(&)在后台运行命令,从而没有使用正确的语法。

尝试编辑.config/openbox/autostart文件,使其看起来像这样:

# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &

如有疑问,请查看openbox Wiki,并&在每次输入后查看所有示例的情况。

http://openbox.org/wiki/帮助:自动启动


我的自动启动文件为空。在这一点上我确实xmodmap ~/.Xmodmap在该文件中(没有&,似乎没有必要)。我一直在xmodmap(并且现在setxkbmap)在启动Openbox会话的脚本中进行调用。在运行之前exec openbox-session,我运行setxkbmap命令。
Shrikant Sharat

另外,添加一个sleep 1延迟以便xmodmap在其他所有负载加载后应用更改,尽管大多数情况下都可以使用,但这并不能使我对解决方案过于自信。如果我有其他选择,我宁愿不这样做。
Shrikant Sharat 2012年

您显然可以避免所有注释和sleep命令,但是&每次输入之后都必须这样做,否则,第一次输入之后的所有程序将根本无法运行。
pedrosaurio

是的,如果其运行时间较长的应用程序/进程不添加,&将使其阻塞。我将此行为与zenity命令结合使用,以发现完成我的xmodmap更改将被覆盖。我的自动启动功能现在越来越大,稍后将其粘贴到问题中。但是,它与键盘没有任何关系。 autostart
Shrikant Sharat 2012年

而且,如果没有sleep命令,xmodmap则自动启动文件完成后,所做的更改将被覆盖。
Shrikant Sharat 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.