如何在登录时设置 Xmodmap?

Thi*_*aes 56 xmodmap key-binding

由于我的键盘布局不适合我,我xmodmap在登录时运行。该脚本已命名.profile并且运行正常,但它破坏了 Unity 界面。

我想知道该xmodmap行放在哪里,以便它在我登录时执行并且不会破坏任何内容。

我已经尝试将它放入.bash_login.bash_profile文件中,但没有成功(xmodmap没有设置我的键盘)。

我有哪些选择?

小智 41

正确的放置位置xmodmap ~/.Xmodmap(以便在启动时读取您的更改)在~/.xinitrc(请参阅下面的说明),尽管您也可以将xmodmap命令作为启动项 ( /usr/bin/xmodmap /home/user/.Xmodmap)放置。我可以说,对于 12.04(大概是 12.10),这两个替代方案肯定有效,因为您使用lightdm. (我将Return改为Right Shift,更改仅在输入密码并登录后生效)。

请注意:如果您使用的是 Xfce,官方 Xfce 常见问题解答中指出您可能必须创建启动项而不是使用~/.xinitrc,并且您可能必须延迟执行以便xmodmap更改不会被 覆盖setxkbmap。您可以在启动项中使用延迟来实现此目的:

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"
Run Code Online (Sandbox Code Playgroud)

(启动入口需要指定绝对路径)

每次setxkbmap运行以更改键盘布局时,您都必须xmodmap ~/.Xmodmap在终端中再次运行。

创造 ~/.xinitrc

建立在你家一个文件夹叫.xinitrc

touch .xinitrc
Run Code Online (Sandbox Code Playgroud)

并放入其中:

xmodmap ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)

你的Xmodmap文件应该不会有条目xmodmap -e " "作为在终端用于暂时设定值的风格。它必须具有以下格式的条目:

keycode 65 = Tab
keycode 23 = Space
Run Code Online (Sandbox Code Playgroud)

它经常被混淆,各种的X文件(如.xprofile.xinitrc等),在启动时被读取,但.xinitrc似乎到12.04之下仍读,而.Xmodmap.xinputrc不被自己阅读。

  • 请注意,如果您使用 `xmodmap -e '...` 进行更改,您可以使用 `xmodmap -pke` 检索 `xmodmap .Xmodmap` 的正确格式,它会打印出当前映射 - 尽管您会想要将其过滤为仅适用于您所做更改的行。 (6认同)
  • 它的 .xinitrc 似乎不再在 Ubuntu 17.10 中自动启动。您必须使用以下命令自动启动它: /bin/bash -c "sleep 15 && /home/USERNAME/.xinitrc" (2认同)

kon*_*ten 16

我正在使用 ElementaryOS(及其基于 GNOME 的窗口管理器)并通过使用xdg自动启动脚本找到了解决方案。许多窗口管理器都在使用 xdg,所以我认为这种方法也适用于其他环境。至少它应该适用于 GNOME。

xdg~/.config/autostart在 X 会话中登录时运行脚本。要在登录时加载 xmodmap 配置,请将以下脚本添加到~/.config/autostart/xmodmap.desktop

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application
Run Code Online (Sandbox Code Playgroud)

然后注销并再次登录,您的 Xmodmap 配置应该已经加载。

如果它不起作用,请尝试在终端中运行 xmodmap 以查看是否是 xmodmap 抱怨:

$ xmodmap ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)

如果没有出现任何错误,请运行以下命令进行调试:

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap
Run Code Online (Sandbox Code Playgroud)

  • 在 ubuntu 18.04 工作 (2认同)

dje*_*kyb 4

我现在面前没有统一界面,但尝试单击启动器上的“应用程序”按钮,然后输入“ startup”

应该有一个名为“启动应用程序”的应用程序(或类似的应用程序)。单击它并添加您的 xmodmap 命令(例如xmodmap /home/thiago/.Xmodmap)。

使用 绝对路径很重要,而不是 ~/Xmodmap
如果仍然不起作用,您可以尝试按照hxpax 的建议添加一点延迟。

  • 这是行不通的。我用的是16.04 (4认同)
  • @Thiago Moraes 这个基本命令是否有效(如果无效,请发布错误)?`xmodmap .Xmodmap` (2认同)

Ras*_*mus -1

放入 xmodmap 更改~/.bashrc/etc/bash.bashrc不会破坏任何内容。

唯一的缺点是每次启动后都必须打开终端才能激活它。

  • 我已经这样做了,但问题是在我打开的每个终端上,都会执行此命令。这只是一瞬间,但有点烦人,我更喜欢一个真正的解决方案。无论如何,谢谢 (3认同)