重新映射键盘键以打印⸮(讽刺标记)

重新映射键盘键以打印⸮(讽刺标记)

我发现自己使用讽刺标记⸮ unicode U+2E2E(或 ß unicode U+061F)在 mcabber 和 vim 中都有很多。旧的复制粘贴反模式很乏味,所以我想我应该重命名许多无用的键盘键之一,我必须打印它。所以,我的问题有三个(但实际上是同一个问题):

  • 如何做麦克伯
  • 如何做惊人的?由于这是我使用的窗口管理器,它应该适用于所有应用程序,对吧?
  • 如何使用 xmodmap 或其他一些神秘的 X11 咒语来做到这一点?

请注意,在 vim 中这很简单,只需添加map! ;; ⸮到文件中~/.vimrc即可,因此在插入模式下您只需键入“;;”更换它。

答案1

我更喜欢使用 Compose 键系统,我刚刚检查过,似乎我已经Compose- /- ?(和Compose- ?- /)设置为输出 U+2E2E 一段时间了(?反映在 / 上)

我的.XCompose文件如下所示:

#
# add in the original stuff (what's usually there)
include "%L"
#
# Compose key sequences
#
# generate PI char
<Multi_key> <p> <i>     : U03C0 # U03C0 PI
<Multi_key> <P> <I>     : U03C0 # U03C0 PI
#
<Multi_key> <i> <n> <f> : U221E # U221E infinity
<Multi_key> <I> <N> <F> : U221E # U221E infinity
#
<Multi_key> </> <?>     : U2E2E # U2E2E irony punctuation (reversed ?)
<Multi_key> <?> </>     : U2E2E # U2E2E irony punctuation (reversed ?)
#
<Multi_key> <3> <*>     : U2042 # U2042 asterism
#
#

在这里,我使用该行输入正确的“预设”组合击键include "%L",然后添加我自己的自定义设置...

我已Capslock重新映射为我的Compose密钥,请检查您的窗口管理器如何执行此操作,或阅读有关该setxkbmap命令的信息。但这是我的:

setxkbmap -model pc101 -layout us -option -option compose:caps -option shift:both_capslock

设置CapslockCompose,也设置Shift+ Shift(两个都) 键切换大写锁定。 (对于那些稀有的场合)。还有更多-option选项,为了简洁起见,我去掉了几个,主要是 X Windows扎普( Ctrl- Alt- Backspace) 击键和Left-Win存在Meta

答案2

这可以通过多种方式来实现。在 X11 中,对于像这样的简单更改,Xmodmap 可能是更简单的方法之一。

维基百科关于讽刺标点符号的文章:

该字符可以使用 Unicode 中的反向问号 (⸮) 表示为 U+2E2E;另一个近似的字符是阿拉伯问号 (Ù),U+061F。

Xmodmap手册:

对于所有可能的 Unicode 字符,匹配 Unicode 字符的键符号可以指定为“U0020”到“U007E”和“U00A0”到“U10FFFF”。

我刚刚尝试过,并且

xmodmap -e "keysym F8 = U061F"

似乎可以解决问题。上面的命令F8通过 keysym 将该符号绑定到键上。当然,您可以将该符号绑定到您选择的键上。所有可能的键符(尽管当前不一定映射)通常可以在文件中找到/usr/include/X11/{keysymdef,XF86keysym}.h。您也可以通过键码映射它。使用类似的工具西夫您可以检查系统上的键码及其映射的键符号。

看看一些像样的xmodmap教程在互联网上。

答案3

最好的方法是在键盘配置中。

我不知道您是否可以设置自定义快捷方式来在 jabber 客户端中打印字符,但它仅适用于该应用程序。至于 Awesome :它是一个窗口管理器,所以这不是它的工作。

如何在某些(至少 GTK)应用程序中输入它(或任何 unicode 字符):

Ctrl+ Shift+U然后是 2E2E(十六进制代码)。

如何配置键盘以将其也带到其他地方:

xmodmap是一种方法,但它已被弃用,取而代之的是 Xkb,即使 Xkb 配置看起来更复杂。但你要求奥术咒语:D

setxkbmap -print打印正在使用的键盘映射。您可以将其发送到文件中,以将其用作新键盘映射的基础。 (跳至下面的示例,了解“如何”的快速版本)。

xkbcomp是一个实用程序,可用于编译键盘映射并将其发送到 X 服务器。

xkbcomp $DISPLAY keymap.dump将转储文件中的当前配置keymap.dump。它很长,因为它与以前相同,但具有通过组合included 元素获得的值。查找为键指定的名称可能很有用。我们需要名称来为键分配另一个符号。您也可以直接修改和使用它,但您也可以使用包含并重新定义您想要的内容。这些include文件位于/usr/share/X11/xkb/、 、 与各部分对应的目录中。

键映射文件有多个部分:

  • xkb_keycodes:将键盘 X 键码映射到其他部分中使用的键名称的部分。您可以在这部分中获取 X 键码xev并找到关联的名称。
  • xkb_types:描述类型以及哪个级别对应于哪个键盘修饰符的部分(Shift、Control、Alt、这些的任意组合等..)
  • xkb_compatibility:对于“不认识 Xkb 的应用程序”,根据我读到的内容..我不确定这里会发生什么。
  • xkb_symbols:将键名称映射到键符号的部分,以及我们将重写定义之一以添加该 unicode 字符的部分。您可以查看要使用的密钥的当前定义。
  • xkb_geometry:物理键盘形状..不知道有什么用。

如果您查看转储的键映射中的键定义,您将看到它们具有关联的类型。键的类型决定了哪些修饰符可用以及对应于哪个级别。键和级别的组合对应于键符号。该类型是在本xkb_types节中定义的类型。如果您在重新定义键时未指定其他类型,则它将是包含的xkb_symbols映射中定义的类型。

如果我以我的I钥匙为例,有四个级别,分别对应:只是钥匙、钥匙 + Shift、钥匙 + AltGr、钥匙 + Shift+ AltGr

对于该组,如果您没有使用多种布局(在键盘配置中),则您可能只有一种布局,并且不需要指定它。 (您可以使用多个组在与该组关联的键定义之间切换)。

这是修改后的键盘映射文件的示例:

xkb_keymap {
 xkb_keycodes { include "evdev+aliases(azerty)"};
 xkb_types { include "complete"};
 xkb_compatibility {include "complete"};
 xkb_symbols {
  include "pc+fr+inet(evdev)"
  key <AD08> {[ i, I, U2E2E, idotless]};
  key <AD09> {[ o, O, oslash, U262F]};
 };
 xkb_geometry { include "pc(pc104)"};
};

使用此键映射AltGr+I给出 ⸮,Shift+ AltGr+O 给出 ☯。

设置键盘映射: xkbcomp mykeymap.xkb $DISPLAY

Archlinux 维基有更多详细信息,最后还有一些其他链接。

相关内容