我不喜欢在主键盘和移动键之间跳转,所以我在我的 xkb 布局文件中添加了以下内容。
hidden partial xkb_symbols "movement"
{
key <AD08> { [ NoSymbol, NoSymbol, Up, Up ] };
key <AC08> { [ NoSymbol, NoSymbol, Down, Down ] };
key <AC07> { [ NoSymbol, NoSymbol, Left, Left ] };
key <AC09> { [ NoSymbol, NoSymbol, Right, Right ] };
key <AD09> { [ NoSymbol, NoSymbol, Prior, Prior ] };
key <AB09> { [ NoSymbol, NoSymbol, Next, Next ] };
key <AB07> { [ NoSymbol, NoSymbol, Home, Home ] };
key <AB08> …Run Code Online (Sandbox Code Playgroud) 如何禁用任何 X-window-system-wide 设置拦截 Ctrl-Period 以获取某种特殊的输入弹出窗口?
更多细节:我正在尝试将 emacs 命令绑定到 Ctrl-句点 (C-.),该命令在以前的系统上运行良好。在这台新计算机上,X 级别(xinput?xkb?)似乎发生了一些事情,它拦截了击键,因此 emacs(或大多数其他应用程序)根本看不到它。
相反,当我在按住 Ctrl 的同时按句点时,会出现一个带下划线的小“e”,当我在图形窗口中时,它会内嵌,或者在终端或 emacs 窗口上作为弹出窗口显示(参见下图)。如果我输入更多字符,它们会显示在带下划线的“e”之后,也带下划线。后面的字符可以退格,但“e”不能退格,并且会一直保留,直到我按 Enter、Esc 或第二个 Ctrl-句点。在后两种情况下(第二个 C-. 或 Esc),所有下划线字符都会消失,没有其他效果,而在前一种情况下 (Enter),它们会消失,但会立即发送以下击键。
这显然发生在窗口系统级别,因为如果我按 C-。在一个应用程序中,然后将光标移动到另一个应用程序中进行输入,弹出窗口会在窗口之间跳转到具有焦点的窗口(有时会产生奇怪的副作用)。
最后,某些应用程序确实会看到击键:如果我向 Chrome 中的空白网页添加按键事件侦听器,只要我没有聚焦输入元素,按键事件就会完全按照我的预期发出。但是,如果我聚焦了一个输入元素,那么当显示下划线“e”时,就会发出奇怪的“未识别”键。
问题:我想修改/重新定义我的键盘布局 (pc105 se),这样当我使用 mod3 (super) 和 mod4 (hyper) 按下某些键时,会返回一个与平常不同的字符。
例如
正常按下时,键码 61 会产生“减号”(-),而当按下 shift 时会产生“下划线”(_)。当按下第一个修饰符组 (AltGr) 'dead_belowdot' 和 'dead_abovedot' 时(无/有移位)。
我想要的是左括号或右括号(不带/带移位),当我按下 Super(赢)键的同时按下键,以及 Hyper 键的斜杠/反斜杠(我已配置为大写锁定)。
我尝试将 a 添加.Xmodmap到我的主目录并xmodmap ~/.Xmodmap使用以下语法运行它
keycode 61 = minus underscore a b c d e f g h i j k l m n o p
Run Code Online (Sandbox Code Playgroud)
但是,这将导致 AltGr 导致 c/d,而 win/caps lock 仍然只导致 -/_
我也尝试过直接修改 /usr/share/X11/xkb/symbols/se 并尝试以下更改:
key <BKSL> { [apostrophe, asterisk, acute, multiply], [a,b,c,d], [e,f,g,h], [i,j,k,l]};
Run Code Online (Sandbox Code Playgroud)
但所有发生的都是 ' * ´ × ' …
标题说明了一切:我有兴趣模仿 Windows 行为,其中Left Ctrl+Left Alt充当第 3 级选择器。这是对我来说比较重要的,因为,作为一个程序员,我的键盘布局,如重要标志{,[,]或}只能按访问Right Alt+ Key,只用一只手,这是非常不舒服。目前,我将两个Alt键都用作 3 级选择器,但这会产生一些不良后果,因为我无法再输入某些快捷方式(例如 Firefox 中的 Home)。
我在 openSuse 13.1 上,使用 XFCE 作为桌面环境。这个问题已经被问过几次了,但不幸的是,其中任何一个都没有提供答案,而且关于 xkb 的文档非常少。
当我运行 xmodmap 时,我得到这样的信息
shift shift_l (0x32), shift_r (0x3e)
lock
control control_l (0x25), control_l (0x42), control_r (0x69)
mod1 alt_l (0x40), alt_r (0x6c), meta_l (0xcd)
mod2 num_lock (0x4d)
mod3
mod4 super_l (0x85), super_r (0x86), super_l (0xce), hyper_l (0xcf)
mod5 iso_level3_shift (0x5c), mode_switch (0xcb)
Run Code Online (Sandbox Code Playgroud)
我得到了轮班和控制组。但是其他的 mod1、mod2、mod3、mod4 是做什么用的?
似乎无论如何您只能使用以下两个修饰符:
keysym <keysymname> = <key> <shift+key> <mode_switch+key> <mode_switch+shift+key>
Run Code Online (Sandbox Code Playgroud)
为什么我不能设置一些东西<mod4+key>?
我正在尝试自定义我自己的键盘布局。我一直在搞乱以下文件:
/usr/share/X11/xkb/symbols/
Run Code Online (Sandbox Code Playgroud)
我看到,例如/usr/share/X11/xkb/symbols/us包含:
...
key <TLDE> { [ grave, asciitilde, dead_tilde, asciitilde ] };
key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
key <AE02> { [ 2, at, masculine, twosuperior ] };
key <AE03> { [ 3, numbersign, ordfeminine, threesuperior ] };
key <AE04> { [ 4, dollar, cent, sterling ] };
key <AE05> { [ 5, percent, EuroSign, yen ] };
...
Run Code Online (Sandbox Code Playgroud)
如何获取非单字符(特殊?)字符的有效名称dollar列表,例如、masculine等?
我发现了这个:
http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap
和这个:
http://wiki.linuxquestions.org/wiki/List_of_keysyms
但它并不完整,并且不一定反映我系统上的内容。我宁愿寻找一种方法来了解此信息存储在哪个文件中。
我有基于 X11R7 的桌面 linux。我想调试键盘的按键修饰符。我有一些左右控件、alts、metas 等,但出于某种原因(1)我不太确定从 XKB 的角度来看哪个是哪个。
那么,如何调试 XKB 键盘映射上的修饰符?
(1)苹果macbook+virtualbox+虚拟化linux+X11。
我在 X11 ( -xkblayout us -xkbvariant intl)上使用美国国际布局。
我想禁用死键,但不切换回美国默认布局。(我需要德语元音和国际布局中的其他几个字符,我只是不在乎“死”`~'"^。)
我需要做什么?创建自定义布局(就像我按照这个极好的建议为 Windows 所做的那样)?我该怎么做?或者我可以以更简单的方式获得“无死键”行为吗?
我意识到重新映射箭头键是一个老问题,但是我似乎找不到一个好的解决方案,让我可以像使用香草箭头键一样使用 SHIFT + 重新映射键选择文本。
例如,如果我将 Caps Lock 重新映射到 ISO_Level3_Shift 并将 xkb_symbols 设置为读取
key <AC08> { [ k, K , Down, Down] };
Run Code Online (Sandbox Code Playgroud)
或者
key <AC08> { type="THREE_LEVEL",
[ k, K , Down ] };
Run Code Online (Sandbox Code Playgroud)
按 Shift+CapsLock+K 的行为与 CapsLock+K 完全相同(而 Shift+Down 的行为与单独的 Down 不同)。
我使用更高级别的宏实用程序并生成键盘事件(即生成 shift 和箭头按键)取得了更大的成功;然而,这种方法有一系列不同的问题 - 通常对模拟按键的 UI 响应与“真实”按键不同,并且也存在性能问题 - 我打字的速度比它可以处理的速度快。
Tl;博士; 如何在 X 下使用重新映射的箭头键进行移位选择?
在 xterm 和 vim 中使用 Control-j 而不是 Return 对我来说看起来非常方便,我想对所有 X 应用程序使用这个序列。
通过将 ISO_Level5_Shift 重新映射到 Control 键,并将 Return 设置为 j 键的第 5 级符号,可以使用 xkb 轻松完成,但在此之后,vim 和 xterm 中的所有其他 Control 组合停止工作(因为 xterm 和 vim 无法理解Mod键),这是绝对不能接受的。
我通过在 xkb_symbols 部分使用“LOCAL_EIGHT_LEVEL”键类型,在不重新映射 ISO_Level5_Shift 的情况下做到了这一点,它使用 Control(而不是 ISO_Level5_Shift)作为 Level5 修饰符:
key <AC07> { [ j, J, plusminus, NoSymbol, Return ], type[Group1]= "LOCAL_EIGHT_LEVEL" };
Run Code Online (Sandbox Code Playgroud)
这个解决方案的问题——xkb 设置了 Control 位,Control-j 返回 Control-Return 而不仅仅是 Return。有时(很多时候,顺便说一句)这种组合不能作为返回。
所以,我需要的是修改这些解决方案之一,以取消 Control-j 组合的控制位。
根据这个链接:Arch Wiki article about XKB可以做到,但我不知道如何做到这一点。所以,这就是我的问题。
也许我必须为 Return+Control 或类似的东西添加一些 xkb_compatibility 规则,或者添加一些 xmodmap 映射 …