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
    • 最新
    • 标签
主页 / unix / 问题 / 763537
Accepted
Dongchen Yue 岳东辰
Dongchen Yue 岳东辰
Asked: 2023-12-11 16:48:36 +0800 CST2023-12-11 16:48:36 +0800 CST 2023-12-11 16:48:36 +0800 CST

XKB可以容纳多少层?

  • 772

我打算在非常规的 8 级德国 Neo2 布局中添加一个额外的级别,以便在按下控制修饰符时将按键重定向到 QWERTY。

虽然我不认为 9 个级别不起作用,但知道最大级别数会让人放心。
我在某处读到,状态/级别/类型信息被位掩码为 32 位数据(这确实是 的十六进制输出xev)。

所有这些 32 位都用于传达电平信息吗?
编辑:我将这个 2 位十六进制数(应该是修饰键的最大数量)与最大级别数(修饰键组合)混为一谈。此信息不应与我的问题相关。

即类似以下内容。因为我昨天开始学习XKB,还没有遇到过超过8级的类型。

type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
    // [...]
    // + map[Control]= Level0;

    level_name[Level0] = "QWERTY shortcuts"
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
    level_name[Level5] = "X";
    level_name[Level6] = "X Shift";
    level_name[Level7] = "X Alt Base";
    level_name[Level8] = "X Shift Alt";
};
xorg
  • 1 1 个回答
  • 54 Views

1 个回答

  • Voted
  1. Best Answer
    MC68020
    2023-12-11T19:48:52+08:002023-12-11T19:48:52+08:00

    所有引用均来自X 键盘扩展:库规范

    给定密钥类型的总级别数XkbKeyTypeRec以无符号字符形式保存在某种结构中:(num_levels第 140 页)

    typedef struct { /* Key Type */
    …
     unsigned char num_levels; /* total # shift levels, do not modify directly */
    …
    } XkbKeyTypeRec, *XkbKeyTypePtr;
    

    num_levels 字段保存键类型的移位级别总数。Xkb 使用 num_levels 来确保绑定到键的符号数组足够大。

    理论上,最大级别数限制为 255(从 1 开始)

    然而,由于每个设计中每个键的符号数量限制为 255 个,并且最多可以有四组……,因此实际限制除以四:63,正如我们在第 127 页上看到的那样

    核心实现将每个键的符号数量限制为 255 个。通过四组,每组最多可以有 63 个符号(或移位级别)。


    顺便说一句,如果您想更改给定按键类型的级别数,请使用XkbResizeKeyType(第 145 页):

    XkbResizeKeyType ( xkb , type_ndx , map_count , want_preserve ,
    new_num_lvls )
    XkbDescPtr xkb ; /* keyboard description containing client map to update */
    int type_ndx ; /* index in xkb->map->types of type to change */
    int map_count ; /* total # of map entries needed for the type */
    Bool want_preserve ; /* True => list of preserved modifiers is necessary */
    int new_num_lvls ; /* new max # of levels for type */
    
    • 0

相关问题

  • 无法设置正确的显示分辨率

  • Arch Linux:在没有窗口管理器的情况下运行 VirtualBox (VM)

  • “错误:无法打开显示::0” - 以其他用户身份运行 GUI 应用程序

  • 如何在 Linux 中禁用硬件加速?

  • base 和 evdev xkb 规则有什么区别?

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve