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
    • 最新
    • 标签
主页 / user-1773099

Tina Russell's questions

Martin Hope
Tina Russell
Asked: 2025-01-06 08:13:13 +0800 CST

重启后我的 XKB 自定义键盘布局不再起作用

  • 6

因此,几周前,我让自定义的 XKB 键盘布局可以在 Ubuntu 上使用。我按照这里的说明操作:https: //who-t.blogspot.com/2020/09/user-specific-xkb-configuration-putting.html并下载了它链接到的脚本,这里:https ://gitlab.freedesktop.org/whot/xkblayout运行脚本后(我忘记了我使用的选项的细节以及自动生成的选项有多少,但我稍后会向您展示结果)并编辑生成的~/.config/xkb/symbols/us文件(可能还有生成的~/.config/xkb/rules/evdev.xml文件,我不记得我是否必须手动编辑它,或者这是否都是脚本做的),突然我的自定义键盘布局“英语 - Interna-Tina-l(AltGr 死键)”出现在“设置”应用中(选择新键盘布局时,使用“设置”->“键盘”->“输入源”部分->“添加输入源”按钮;我的新布局列在选择“英语(美国)”时显示的变体中)。我选择了布局,它突然就起作用了,我就可以愉快地用自定义键打字了。(我还在键盘设置中将“备用字符键”选项设置为“左超级键”。我认为这比在布局中硬设置更有意义。)

然后,两天前,我的系统崩溃了。我不知道为什么,也不认为这与此有关(我只能说,我试图在 Emacs 中复制和粘贴某些内容,期望它能正常运作,但我的整个计算机却死机了,而且由于它似乎有点热,我想我唯一的选择是 Alt+PrtSc+REISUO 并关闭它,让它冷却一段时间),但关键是我不得不关闭并稍后重新启动。然后,令我惊恐的是,登录 Ubuntu 后,我发现我的自定义键盘布局不再起作用!突然它使用了“英语(国际,带有 AltGr 死键)”布局,我的布局继承自该布局(但进行了重大更改,足以让尝试在此布局或任何其他非我自己的布局上打字令人抓狂)。

不过,最令人困惑的是,如果我进入键盘设置,它仍然显示我正在使用自定义布局!我尝试明确添加“英语(国际,带有 AltGr 死键)”布局作为第二个输入源,这样我就可以在两种布局之间切换(使用 Super+Space),并希望刷新我的系统对我使用哪种布局打字的认识。但是,如果我切换到该布局然后返回到我自己的布局,我仍然像在使用其他布局一样打字!

可能还相关的是,如果我尝试使用setxkbmap -query来查看我当前正在使用的键盘映射setxkbmap,它会这样说,即使我肯定根据键盘设置和任务栏指示器使用我的自定义布局:

rules:      evdev
model:      pc105
layout:     us
variant:    altgr-intl

(正如您可能已经猜到的那样,“altgr-intl”指的是“英语(国际,带有 AltGr 死键)”布局。)

(可能还相关的是,键盘设置中的“备用字符键”选项仍然设置为“左超级键”,但左超级键实际上不再充当“备用字符键”;相反,右 Alt(AltGr)可以起到这个作用,这是“英语(国际,带有 AltGr 死键)”/“altgr-intl”布局的默认设置。)

另外,如果我尝试使用setxkbmap -variant tina,我认为这是我应该直接setxkbmap选择自定义变体的方式,它只会说Error loading new keyboard description然后退出。哼。

无论如何,在这里我将向您展示我的自定义布局文件,以便您可以自行判断它们是否存在问题,但请记住,在我重新启动计算机之前,这一切都运行正常。我真的不知道出了什么问题。

(请记住,中间注释掉的行是我的键盘布局中曾经有的部分,但无论原因如何,现在不再有它们了;我只是为了完整性才将它们包括在内,因为虽然我无法想象为什么注释掉的行会导致任何问题,但我不知道实际上是什么导致了问题。)

~/.config/xkb/symbols/us:

// $XKeyboardConfig$

partial alphanumeric_keys modifier_keys
xkb_symbols "tina" {
    name[Group1]= "English - Interna-Tina-l (AltGr dead keys)";

    include "us(altgr-intl)"
    
//    include "level3(ralt_alt)"
//    include "level3(win_switch)"
//    key <CAPS> {
//      type[Group1]="ONE_LEVEL",
//      symbols[Group1] = [ ISO_Level5_Shift ]
//      };
//    modifier_map Mod3   { ISO_Level5_Shift };
    
//    key.type[Group1]="EIGHT_LEVEL"

    key <TLDE> { [       grave,  asciitilde, dead_abovedot,  dead_tilde ] };
    key <CAPS> { [   parenleft, ISO_Next_Group, Greek_lambda, Greek_phi ] };
    key <BKSL> { [  parenright,         bar,     backslash,   brokenbar ] };
    key  <TAB> { [        Tab, ISO_Left_Tab, XF86BackForward,   notsign ] };

    key <AE01> { [           1,      exclam,   onesuperior,       U203C ] };
    key <AE04> { [           4,      dollar,          cent,    sterling ] };
    key <AE05> { [       5,     percent,      EuroSign,         yen ] };
    key <AE06> { [           6, asciicircum, onequarter,dead_circumflex ] };
    key <AE07> { [       7,   ampersand,       onehalf,   dead_horn ] };
    key <AE08> { [           8,    asterisk, threequarters, dead_ogonek ] };
    key <AE09> { [       9,   parenleft,   bracketleft,   braceleft ] };
    key <AE10> { [       0,  parenright,  bracketright,  braceright ] };
    key <AE11> { [   minus,  underscore,        emdash,      endash ] };

    key <AB03> { [       c,           C,      ccedilla,    Ccedilla ] };
    key <AB04> { [       v,           V,     copyright,  registered ] };
    key <AC04> { [       f,           F,         U017f,       U2122 ] };
    key <AC10> { [ leftsinglequotemark,  leftdoublequotemark, dead_grave, degree ] };
    key <AC11> { [rightsinglequotemark, rightdoublequotemark, dead_acute, dead_diaeresis ] };
    
    key <AB08> { [      comma,     less,        dead_ogonek,     dead_caron ] };
    key <AB09> { [     period,  greater,           ellipsis,  dead_abovedot ] };
    key <AD11> { [  semicolon,    colon, enfilledcircbullet, guillemotright ] };
    key <AD12> { [ apostrophe, quotedbl,   enopencircbullet,  guillemotleft ] };
    
    key <I151> { [ Menu ] };
};

~/.config/rules/evdev:

// generated by xkblayout templates

// Note: no rules file entries are required for for a custom layout

// Include the system 'evdev' file
! include %S/evdev

~/.config/rules/evdev.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
<!-- generated by xkblayout -->
<xkbConfigRegistry version="1.1">

  <layoutList>
    <layout>
      <configItem>
        <name>us</name>
        <!-- Keyboard indicator for English layouts -->
        <shortDescription>en</shortDescription>
        <description>English (US)</description>
        <countryList>
          <iso3166Id>US</iso3166Id>
        </countryList>
        <languageList>
          <iso639Id>eng</iso639Id>
        </languageList>
      </configItem>

      <variantList>
        <variant>
          <configItem>
            <name>tina</name>
            <shortDescription>tina</shortDescription>
            <description>English - Interna-Tina-l (AltGr dead keys)</description>
          </configItem>
        </variant>
      </variantList>

    </layout>
  </layoutList>

</xkbConfigRegistry>

此外,xkblayout 脚本生成了一些空目录:~/.config/xkb/compat、~/.config/xkb/keycodes/和~/.config/xkb/types。

我在 Thinkpad P53 工作站上使用 Ubuntu 24.04。我认为不是任何软件包升级导致了这种情况的发生;事实上,软件更新程序和 Synaptic 软件包管理器(在选择“重新加载”和“标记所有升级”后)几周内都没有显示任何可升级的软件包,这对我来说似乎很奇怪,但这是另一个话题了。(也许 24.04 已经变得足够稳定,不需要不断更新?)

keyboard-layout
  • 1 个回答
  • 41 Views

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