在 X11 中修改键盘布局:使用 Alt+shift+2 表示 @

在 X11 中修改键盘布局:使用 Alt+shift+2 表示 @

我使用的是带有克罗地亚语布局的 MacBook。常见的 PC 克罗地亚语布局(在 Windows 和 Linux 上)使用 和 的组合AltGr来获取各种符号,例如...

  • AltGr+V对于@
  • AltGr+F对于[
  • AltGr+B对于{

在 OS X 上,它被替换为..

  • Alt+ Shift+2对于@
  • Alt+Š对于[
  • Alt+ Shift+Š对于{

——即美国布局位置+alt提供所需的符号。

当我使用 Linux 时,我发现很难切换回克罗地亚 PC 映射。因此,我倾向于使用美国布局(然后我遇到了无法输入本地符号(例如 ČĆŽŠĐ)的问题,以及无法输入 Alt 来输入 @、[、{ 等的问题。)

键盘映射定义位于 Ubuntu 中/usr/share/X11/xkb,提供了一种在键盘按下时重新映射符号的简单方法,+ shiftkeydown+altgrkeydown ++ altgr。我找不到将事物映射到+ 和shift++的方法。keydownaltkeydownaltshiftkeydown

如何 在 X11 中将字形映射到alt+keydownalt++ shiftkeydown

答案1

好吧,我有一个愚蠢的想法:你可以一起破解工具绑定键

将以下内容添加到您的~/.xbindkeysrc

"xdotool key at"
    Shift+Alt+Mod2 + 2

哒哒!

(好吧,开始投反对票吧!)

答案2

您无法配置它,因为 Alt 不是标准 X 服务器中的键码修饰符。在 X11 中,可以使用 定义和更改键xmodmap。该程序xev可用于识别键码。启动xev并按下2。在德国 PC 键盘上,它看起来是这样的:

KeyPress 事件,序列 33,合成NO,窗口 0x3000001,
    根 0x69,子块 0x0,时间 3044226,(160,148),根:(164,198),
    状态 0x0,键码 11(键符 0x32,2),same_screen 是,
    XLookupString 给出 1 个字节:(32)“2”
    XmbLookupString 给出 1 个字节:(32)“2”
    XFilterEvent 返回:True

KeyRelease事件,序列33,合成NO,窗口0x3000001,
    根 0x69,子块 0x0,时间 3044305,(160,148),根:(164,198),
    状态 0x0,键码 11(键符 0x32,2),same_screen 是,
    XLookupString 给出 1 个字节:(32)“2”
    XFilterEvent 返回:False

您可以看到该键的键码为 11。现在,您可以使用以下命令显示键码定义xmodmap

$ xmodmap -pke|grep ' 11 ='
keycode 11 = 2 quotedbl twosuperior oneeighth twosuperior oneeighth

您可以看到键代码 11 可以生成四个不同的键。xmodmap 的手册页解释了哪个键由哪个修饰符生成:

    keycode NUMBER = KEYSYMNAME ...
           The list of keysyms is assigned to the indicated keycode (which
           may be specified in decimal, hex or octal and can be determined
           by running the xev  program).   Up  to  eight  keysyms  may  be
           attached  to  a  key, however the last four are not used in any
           major X server implementation.  The first keysym is  used  when
           no  modifier  key  is pressed in conjunction with this key, the
           second with Shift, the third when the Mode_switch key  is  used
           with  this  key  and  the  fourth when both the Mode_switch and
           Shift keys are used.

只有ShiftMode_switch是 X11 键代码的有效修饰符。如果您希望您的Alt键成为有效修饰符,则必须修补您的 X 服务器。理论上这是可能的,因为可能有 8 个修饰符。但您的 X 服务器必须知道这一点。

相关内容