【问题标题】:Making Mac shortcuts (e.g. Cmd-C) work on linux使 Mac 快捷方式(例如 Cmd-C)在 linux 上工作
【发布时间】:2009-01-12 00:08:55
【问题描述】:

有没有办法将 Cmd+C 映射到 linux 中的 Copy? (而不是 Ctrl+C

如果我也能拥有 emacs 风格的样式就好了,比如 Ctrl+B 向左移动一个字符。 p>

【问题讨论】:

  • 最好提及是否使用 gnome/kde/somethingelse 作为快捷方式设置,通常最好从上到下设置。
  • @chris 出于个人兴趣,我真的很喜欢这个问题(Mac 在家,Arch 和 xfce4 在工作)。不过,我必须同意 wds。桌面环境真的很重要(这里有很好的列表可供选择):wiki.archlinux.org/index.php/Desktop_environment

标签: linux macos keyboard-shortcuts


【解决方案1】:

有没有办法在 Linux/X 上将某些组合键映射到其他组合键?

在所有开源项目的传统中,没有一种方式,有几种。在最低级别,您拥有内核键绑定,这可能不是您想要的。在 X 服务器级别,您拥有 xkb 及其无数实用程序。然后似乎每个窗口管理器——gnome、kde、xfce 或其他——也有一个键映射实用程序。 xkb 周围似乎有很多实用程序等,并且可能比任何随机窗口管理器的键映射实用程序更完整,所以我先看看。

【讨论】:

    【解决方案2】:

    KDE 3 可能是这里最灵活的;有一个名为“Mac Scheme”的预定义键盘快捷键方案。您可以通过 KControl Control Center > Regional & Accessibility > Keyboard Shortcutskcmshell keys 设置它,它将立即对几乎所有 KDE 应用程序产生影响。您可能会错过一些 OS X 具有的类似 Emacs 的“Ctrl-*”快捷方式,但除此之外,它运行良好(只要您的 X 修饰符映射正确)。如果它不符合您的喜好,也可以轻松定制。

    您还可以设置Control Center > Desktop > Behavior 以启用类似Mac OS 的菜单栏;所有 KDE 应用程序将在屏幕顶部共享一个菜单栏,而不是单独附加到每个窗口。

    【讨论】:

    • 同意 - 我已经设法让 Konqueror 和 Konsole 的行为类似于 Safari 和终端,这让我很高兴。我什至可以使用 alt-shift-Q 退出。
    【解决方案3】:

    2020 年 2 月 3 日更新

    Kinto 现在已经用 C 语言重写,用于使用 x11 的 Ubuntu/Debian 系统。它还使用 json 配置文件,使其更易于管理和扩展到其他应用程序,而不仅仅是终端。该应用程序不再映射到终端应用程序中的 Super,它现在将正确地映射到 Ctrl+Shift 以创建与使用 Cmd 键完全相同的感觉。

    请查看最新版本。 https://github.com/rbreaves/kinto

    允许 Super = Ctrl+Shift 更改的主要更改在此符号文件中。

    default partial xkb_symbols "mac_levelssym" {
        key <LWIN> {
          repeat= no,
          type= "ONE_LEVEL",
          symbols[Group1]= [ Hyper_L ],
          actions[group1]=[ SetMods(modifiers=Shift+Control) ]
        };
        key <RWIN> {
          repeat= no,
          type= "ONE_LEVEL",
          symbols[Group1]= [ Hyper_R ],
          actions[group1]=[ SetMods(modifiers=Shift+Control) ]
        };
    };
    

    Pjz 的回答是正确的,说 xkb 解决方案是理想的,遗憾的是,很少有人走这条路,很可能是由于学习 xkb 的困难,而且似乎很多人已经走上了使用 Xmodmap 文件的路线,而 Xmodmap 文件正在被弃用,而我们正在前往 Wayland 的路上。

    这个答案可能晚了几年,但这是任何方法。

    Kinto 是我最近创建的一个工具,可以解决这个问题,它通过使用 xkb 并通过监听您当前使用的应用程序来解决这个问题,因为它还在使用终端时更改了键盘映射,因此类似 mac 的体验可以保持一致。

    https://github.com/rbreaves/kinto

    https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0

    这里还有一个要点,如果您只是想看看这一切的核心,它不会在需要时更改您的键盘映射。 Gist 也不包括自定义 xkb 键盘映射文件,这些文件设置 macOS 样式光标/使用 Cmd 和箭头键的逐字操作。

    https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

    编辑:同时发布要点的内容。我无法实际发布 Kinto 的内容。

    # permanent apple keyboard keyswap
    echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
    update-initramfs -u -k all
    
    # Temporary & instant apple keyboard keyswap
    echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd
    
    # Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
    setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win
    
    # Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
    setxkbmap -option;setxkbmap -option altwin:swap_alt_win
    
    #
    # If you want a systemd service and bash script to help toggle between
    # GUI and Terminal applications then look at project Kinto.
    # https://github.com/rbreaves/kinto
    #
    # Note: The above may not work for Chromebooks running Linux, please look
    # at project Kinto for that.
    #
    # If anyone would like to contribute to the project then please do!
    #
    

    【讨论】:

    • 没错,当链接断开时,我经常会感到恼火,同时附加一个包含多个文件、数百或数千行长的答案也不太现实。不过,我想我本可以发布要点的内容,因为它可以通过提供真实的答案来归结 Kinto 所做的事情,即使它不能即时更改键盘映射。
    • 我对这个答案投了反对票,因为虽然它是一个很好的答案,但这个问题本身对于 Stack Overflow 来说是题外话。 2009 年还不错,但 10 年后,有专门针对此类通用计算问题的 Stack Exchange 站点。理想情况下,这个问题应该关闭
    • 我不知道是这种情况,但这是可以理解的。我想 Stackoverflow 现在更适合于实际的编码问题和答案,而不是系统级别的修改和可以归类到其他交流的脚本,我也参与并回答了这些交流。我自己是一名网络开发人员,可能很快就会开始做一些内核开发,但直到最近我才对这个或任何其他交流做出太多贡献。
    • @RBenR 我认为你的答案改进了很多。
    【解决方案4】:

    如果你切换 Cmd 和 Ctrl 键,你几乎可以到达那里

    【讨论】:

      【解决方案5】:

      xmodmap -e "keycode 63 = Control_L"

      这样 Cmd 将成为控制。不会交换其他密钥

      已编辑:我忘记了“-e”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        • 2021-01-09
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多