![在 X11 中修改键盘布局:使用 Alt+shift+2 表示 @](https://linux22.com/image/1275778/%E5%9C%A8%20X11%20%E4%B8%AD%E4%BF%AE%E6%94%B9%E9%94%AE%E7%9B%98%E5%B8%83%E5%B1%80%EF%BC%9A%E4%BD%BF%E7%94%A8%20Alt%2Bshift%2B2%20%E8%A1%A8%E7%A4%BA%20%40.png)
我使用的是带有克罗地亚语布局的 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
,提供了一种在键盘按下时重新映射符号的简单方法,+ shift、keydown+altgr和keydown ++ altgr。我找不到将事物映射到+ 和shift++的方法。keydownaltkeydownaltshiftkeydown
如何 在 X11 中将字形映射到alt+keydown 和alt++ shift?keydown
答案1
答案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.
只有Shift
和Mode_switch
是 X11 键代码的有效修饰符。如果您希望您的Alt
键成为有效修饰符,则必须修补您的 X 服务器。理论上这是可能的,因为可能有 8 个修饰符。但您的 X 服务器必须知道这一点。