如何在 icewm 中注册输入变音符号的快捷键?

如何在 icewm 中注册输入变音符号的快捷键?

我正在尝试设置快捷键来输入常见的变音符号。我可以让 xdotool 在终端或 icewm 命令栏(甚至 gmrun)中输入变音符号:

xdotool key Aacute

但是以下键映射(在 icewm 键文件中)不起作用:

key "Ctrl+Alt+a"                  xdotool key Aacute
key "Ctrl+Alt+a"                  xdotool --delay 1000 key Aacute

相反,当我输入快捷键时(如果在终端或文本编辑器中),我只看到光标闪烁一次,但没有其他事情发生。以下确实显示了一个弹出窗口,因此键代码本身是正确的:

key "Ctrl+Alt+a"                  zenity --info --text="shortcut works"

是否有人有办法注册键绑定,以便在活动应用程序中实际输入变音符号?

答案1

使用setxkbmapxmodmap似乎是正确的做法,但 FWIW 和 FTR 我发现在遇到这个问题后,以下方法对我有用。我希望这对其他想要使用 的人有所帮助xdotool

由于我的键盘上没有这些键,因此我让 xdotool 模拟这些键。请注意使用&在后台运行命令,以便 IceWM 可以从处理热键中返回并避免干扰 xdotool。

200 毫秒是我能使用的最短延迟,并且仍能使其可靠地工作。我不确定是否--clearmodifiers适合您的用例。

key "Ctrl+Up"          xdotool sleep 0.2 key --clearmodifiers Page_Up &
key "Ctrl+Down"        xdotool sleep 0.2 key --clearmodifiers Page_Down &
key "Ctrl+Shift+Up"    xdotool sleep 0.2 key --clearmodifiers Home &
key "Ctrl+Shift+Down"  xdotool sleep 0.2 key --clearmodifiers End &

还请注意,按住这些键不会导致预期的重复行为(因为 IceWM 热键不是最佳选择)但这对我的目的来说没问题。

答案2

我无法使原来的解决方案发挥作用,因此我改变了键盘映射。默认的美国键盘映射没有我需要的变音符号,但国际版有。尝试一下:

setxkbmap -layout 'us(intl)'

但是国际版默认对某些键使用 Compose。例如,' 字符不再立即响应。因此,我选择基于美国键盘创建自己的键盘映射。

我创建了一个新文件:/usr/share/X11/xkb/symbols/erik

partial default alphanumeric_keys
xkb_symbols "basic" {
  include "us"
  include "eurosign(5)"

    key <AC01> { [         a,          A,        aacute,           Aacute ] };
    key <AD03> { [         e,          E,        eacute,           Eacute ] };
    key <AD08> { [         i,          I,        iacute,           Iacute ] };
    key <AD09> { [         o,          O,        oacute,           Oacute ] };
    key <AD07> { [         u,          U,        uacute,           Uacute ] };

    key <RALT>  { type[Group1]="TWO_LEVEL", [ ISO_Level3_Shift, Multi_key ]   };  

    modifier_map Mod5   { <RALT> };
};

让 xkb 接受更改:

sudo dpkg-reconfigure xkb-data

尝试键盘映射:

setxkbmap -layout erik

现在 alt_gr + [aeiou] 应该输入 [áéíóú]。

我在启动时使用 icewm 启动文件调用上述命令使更改永久生效。我认为应该可以使用发行版键盘切换器选择布局,但我尚未测试过。您可以随意将文件命名为其他名称,除非您想让我以我的名字命名您的键盘映射。请务必避免使用 2 个字母的代码,因为所有默认国家/地区映射都如此命名。

注意:
您可以查看符号目录中的其他映射文件作为示例。
可以在此处找到一些用于理解文件格式的资源:
https://www.x.org/wiki/XKB/

相关内容