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 / 问题 / 1187610
Accepted
bjohas
bjohas
Asked: 2019-11-10 14:21:33 +0800 CST2019-11-10 14:21:33 +0800 CST 2019-11-10 14:21:33 +0800 CST

使用 xkb 重新分配修饰键

  • 772

有人对如何在 xkb 中更改修饰键有很好的说明(通过将修改后的 xkb 文件放在 /usr/share/X11/xkb 中)。

解释一下:我可以在 xmodmap 中制作我想要的布局。这是标准的美国布局(适用于笔记本电脑),但修改键交换了轮次(通常的 ctrl 与 capslock;alt 与 windows 等,见下文)。但是,当我使用 xkbcomp 输出此布局时,生成的键盘布局似乎不完整(并且也有错误):即重新启动和重新加载该布局与再次运行 xmodmap 不同。不知道为什么会这样——但我认为最简单的可能是从头开始为 xkb 编写这个(而不是通过 xmodmap -> xkb)。

那么- 是否有人对如何重新分配 xkb 文件中的修饰键有明确的说明?我基本上是想走美式布局,做如下调换:

  • 大写锁定->超
  • (转移)
  • ctrl --> 超级
  • (fn)
  • 窗口 --> alt/meta
  • alt --> 控制
  • (空间)
  • altgr --> 控制
  • ctrl --> 超
  • (左箭头)

在此列表中,第一个标签是笔记本电脑上的物理键(从大写锁定方向逆时针方向键);(...) 中显示的未修改键;第二个标签是所需的功能。

我想要生成的是实际的 xkb 文件(即 US + 那些修饰符),然后我可以将其放入 /usr/share/X11/xkb 并从 /usr/share/X11/xkb/rules/evdev 链接。 xml,以便我可以在需要时简单地切换到此布局。

(我想在 xkb 中而不是在 xmodmap 中执行此操作的原因是因为 xkb 可以处理不同窗口中的不同布局,而我还没有找到使用 xmodmap 执行此操作的方法,这似乎总是在系统范围内。)

PS。在 xmodmap 中,这将是:

clear control
clear lock
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5

! 66/CapsLk
! Shift
! 37/Ctrl - Fn - 133/Win - 64/Alt - Space - 108/AltGr - 105/Ctrl

keycode  66 = Hyper_L Hyper_L Hyper_L Hyper_L
keycode  37 = Super_L Super_L Super_L Super_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode  64 = Control_L Control_L Control_L Control_L
keycode 108 = Control_R Control_R Control_R Control_R
keycode 105 = Hyper_R Hyper_R Hyper_R Hyper_R

add control = Control_L Control_R
add mod1 = Alt_R Alt_L
add mod2 = Num_Lock
add mod3 = Hyper_L Hyper_R
add mod4 = Super_L

那么我如何在 xkb 中实现同样的效果呢?

聚苯乙烯。我也对 Alt vs. Meta 感到困惑——有人可以解释一下它的重要性吗?xkb? (或一般的 Ubuntu?)我曾假设 alt=meta (在 emacs 中)但似乎有区别。它是什么?

编辑。进一步研究后,我假设我的 xkb 文件(进入 /usr/share/X11/xkb/symbols)看起来像这样:

partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {

    include "us(basic)"
    name[Group1]= "enHT (English, US, Hyper-Terminal)";

    key <CAPS> { [ Hyper_L, Hyper_L ] };
// Map Ctrl to the left Alt key, Alt to the left Win key,
// and Super to the left Ctrl key.
    replace key <LALT> { [ Control_L, Control_L ] };
    replace key <LWIN> { [ Alt_L, Meta_L ] };
    replace key <LCTL> { [ Super_L ] };
    modifier_map Mod1    { <LWIN> };
    modifier_map Mod4    { <LCTL> };
    modifier_map Mod5    { <CAPS> };
    modifier_map Control { <LALT> };

};

但是,文件中的说明似乎不起作用(即使包括一般的美国键盘布局)。所以可能一些基本的东西是错误的。

keyboard keyboard-layout xorg shortcut-keys xkb
  • 1 1 个回答
  • 3330 Views

1 个回答

  • Voted
  1. Best Answer
    bjohas
    2019-11-11T11:05:21+08:002019-11-11T11:05:21+08:00

    编辑中提供的答案。上面的部分是正确的。如果保存到 /usr/share/X11/xkb/symbols 下的 somename,setxkbmap somename 将正常工作。我在这里写了信息https://github.com/bjohas/Ubuntu-keyboard-map-like-OS-X并包含 xmodmap 和 xkb 的键映射。

    这就是为什么我不清楚这些地图是否有效的原因:

    • 在切换时将此地图添加到 GUI 不会产生相同的结果。事实上,GUI 的工作方式似乎与 setxkbmap 不同。那么:上面的地图是否需要以某种方式修改?或者这是 GUI 的问题?此处的后续问题:xkbmap 可与 setxkbmap 一起使用,但不能在 GUI 中使用
    • setxkbdmap 与 GUI 交互的方式也可能存在问题。此处 的后续问题为什么 setxkbdmap 的工作方式与 GUI 键盘映射切换器(超级空间)不同?

    对这些后续问题的任何见解将不胜感激!

    • 2

相关问题

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

  • 如何键入 ë 之类的重音字符?

  • 帮助让 Flash 播放器在第二个屏幕上工作?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

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

    • 24 个回答
  • Marko Smith

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

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +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
    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