AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 7190
In Process
Matthew
Matthew
Asked: 2010-10-15 07:31:08 +0800 CST2010-10-15 07:31:08 +0800 CST 2010-10-15 07:31:08 +0800 CST

为什么我的 ~/.Xmodmap 文件不会在登录时加载?

  • 772

~/.Xmodmap我根据这个答案创建了以下文件。

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

换句话说,交换Deleteand Menu,然后再做Caps Lock一个Escape.

下次我登录时,Ubuntu 询问我是否要按~/.Xmodmap预期加载。我加载了它,但没有发生任何事情(当时或随后的登录)。如果我手动运行xmodmap ~/.Xmodmap,它会按预期工作。

我知道这在 10.10 测试版早期就有效,但在我全新的 10.10 安装中失败了。我没有尝试过早于 10.10 的任何东西。有任何想法吗?

编辑:我放入了一些调试语句/etc/gdm/Xsession以确保~/.Xmodmap正在加载,并且一切都神奇地开始工作。除了添加一些回声外,我没有进行任何更改,现在我恢复了更改并再次重新启动,它仍然可以正常工作。我见过的最奇怪的事情。

我意识到的一件事是 Xmodmap 的“重新映射 Caps Lock 到 Escape”部分一直在工作。只是删除/菜单交换失败了。我将暂时保留这个问题,以防其他人有同样的问题,因为我实际上不知道为什么问题停止了。

keyboard xmodmap
  • 6 6 个回答
  • 31173 Views

6 个回答

  • Voted
  1. turbo
    2010-11-21T17:20:02+08:002010-11-21T17:20:02+08:00

    我知道这很愚蠢,但作为一种解决方法,您可以只使用 autostart xmodmap ~/.Xmodmap。

    您也可以检查/etc/gdm/Xsession该行usermodmap="$HOME/.Xmodmap",如果不存在,只需将其附加到文件末尾即可。如果您是系统的唯一用户,只需将您的更改放入/etc/X11/Xmodmap.

    • 12
  2. Déjà vu
    2017-10-23T02:03:05+08:002017-10-23T02:03:05+08:00

    派对迟到了,但这也让我发疯了;而且,像我一样固执,放弃不是一种选择。

    基本上这就是我尝试过的,(作为我的用户,或者必要时为 root)

    • ~/.Xmodmap 仅
    • ~/.xsession, ~/.xsessionrc
    • ~/.gnomerc
    • ~/.xprofile
    • ~/.xinitrc
    • /etc/X11/Xsession.d/myscript
    • /usr/share/X11/xorg.conf.d/(配置文件,没碰它)

    (其实添加xmodmap命令是可以的~/.bashrc,但是每次登录后都需要启动一个终端)

    几年前(?),xkb被选择处理键映射和配置(与 X 接口),但在 X 会话初始化期间完成它的工作xmodmap之后,也可能请求对 X 进行键相关更改。xkb

    问题是这些 xmodmap 设置应该在什么时候发生?
    似乎上述文件在此过程中处理得太早了,或者 X 还没有准备好接受 xmodmap 更改,或者 xkb 会覆盖它们。

    注意:我为这些文件添加了一些“跟踪”,以确保它们在某个时间实际运行!

    一个似乎有效的解决方案

    我最初并不热衷于添加.desktop文件(一个简单的单行脚本就足够了),但它有效,所以就在这里。
    解决方案来自How to remap or swap special keyboard keys in Linux? “解决方案 1”

    基本上创建~/.config/autostart/my-xmodmap.desktop文件,并将其放入:

    [Desktop Entry]
    Name=MyXmodmap
    Exec=/usr/bin/xmodmap /home/me/.Xmodmap
    Terminal=false
    Type=Application
    X-GNOME-Autostart-enabled=true
    

    替换me为您的用户名(请注意,我没有费心尝试,~/或者$HOME它可能同样适用于/home/me,并且可能不需要 xmodmap 的完整路径......),并添加 exec 位

    chmod +x ~/.config/autostart/my-xmodmap.desktop
    

    在这种情况下,xmodmap 命令必须在一个~/.Xmodmap文件中(或使用该-e选项,或选择另一个文件名!)。注销并重新登录。

    请注意,您可以从“启动应用程序”创建启动程序。

    另一种解决方案是忘记 xmodmap 并学习如何配置xkb!

    编辑(再次)

    有时,可能有 25% 的登录,xmodmap但似乎仍然无法正常工作 - 而命令实际上正在运行(跟踪器证明了这一点)。我此时可能得出的唯一结论是,该xkb进程确实在登录过程中运行较晚,并且可能在xmodmap运行后结束。看起来像一个竞争条件......所以,最后,我将自动启动桌面文件exec行更改为

    Exec=$HOME/bin/mystart &
    

    (注意&) mystart是我创建的新目录中的一个脚本bin,其中包含

    #!/bin/bash    
    sleep 5
    /usr/bin/xmodmap /home/me/.Xmodmap &
    date >> /tmp/xmodmap-has-run
    

    和

    chmod u+x ~/bin/mystart
    

    该脚本在运行 xmodmap 之前休眠 5 秒,并跟踪它何时运行(在文件中/tmp/xmodmap-has-run)。

    希望这就是全部!

    • 7
  3. Robert Massaioli
    2010-10-15T21:02:20+08:002010-10-15T21:02:20+08:00

    这可能是一个更好的答案:http ://cweiske.de/howto/xmodmap/ar01s06.html

    您可能需要稍微调整一下才能为您工作,但说明都在那里。

    • 4
  4. gpmcadam
    2011-03-23T11:14:55+08:002011-03-23T11:14:55+08:00

    也许您的~/.Xmodmap文件中有语法错误?

    尝试运行:

    $ xmodmap ~/.Xmodmap
    

    如果有任何错误,那应该会引发错误。

    • 3
  5. Pierre Lasorak
    2020-07-14T13:24:17+08:002020-07-14T13:24:17+08:00

    不幸的是,这看起来是一个(非常)长期存在的问题,这只是因为在 Gnome 3.6 之后,xmodmap支持被放弃了。

    这在使用 xmodmap 重新映射 GNOME3.8 上的键中进行了讨论?和错误 873656 - Gnome 3.x 未加载 .Xmodmap 文件。

    解决方案是移至xkb. 第二个链接中的评论 29提供了一些帮助。

    • 3
  6. greguti
    2013-07-09T01:54:12+08:002013-07-09T01:54:12+08:00

    我遇到了同样奇怪的问题,尝试在登录会话时启动xmodmap我的会话(Ubuntu 13.04)。我终于使它与.xinitrc我放置命令的主文件夹中的一个文件一起工作,但它具有绝对路径,即:

    /usr/bin/xmodmap /home/MYNAME/.Xmodmap

    然后我必须重新启动(不仅仅是重新登录)才能执行它。

    • 1

相关问题

  • 有哪些有用的键盘快捷键?[关闭]

  • 如何在 Compiz->Commands 中获得超过 12 个命令?[关闭]

  • 输入语言切换键只接受 shift-alt 而不是 alt-shift [关闭]

  • 如何在键盘上映射未映射的键?[关闭]

  • 如何重置我的键盘布局?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve