lyd*_*ell 2 keyboard-layout xkb
这就是我要的:
它需要在Trisquel上工作。
我之前用过xkb重新映射了一些键,所以我想也许 xkb 可以做到这一点。看起来它可以:
Pointer_Left
,Pointer_DownRight
,Pointer_Button_Dflt
,Pointer_Drag_Dflt
,等。ISO_Level5_Lock
.但是,我对 Linux 和 xkb 都是新手。我已经设法使用 xkb 进行了非常简单的键重映射,但不幸的是我无法弄清楚如何将上述所有内容放在一起,以及将它放在哪些文件中。不涉及 xkb 的解决方案也可以,部分解决方案也是如此。
之前,我只是尝试将Pointer_Left
键符分配给某个键,并Pointer_EnableKeys
滚动锁定。但是,这并没有将鼠标指针向左移动。相反,它什么也没做。
事实证明,仅仅为一个键分配一个键符是不够的。keysym 也需要解释。这是在“兼容”文件中完成的。在我的系统上,它们位于 /usr/share/X11/xkb/compat。
我按照这个优秀的指南制作了自己的键盘布局:http : //hack.org/mc/writings/xkb.html。这意味着我有一个“teck.xkb”文件(我称我的布局为“teck”)。该文件包含以下行:
xkb_compat { include "complete" };
Run Code Online (Sandbox Code Playgroud)
查看 /usr/share/X11/xkb/compat/complete 显示该文件在同一文件夹中包含一个名为“mousekeys”的文件。答对了。
mousekeys 文件包含对控制鼠标的键符的解释。它包含在我的问题的链接之一中Pointer_EnableKeys
提到的所需解释。但是,它不包含对(等等)的解释。这就是为什么它以前对我不起作用。相反,解释了许多键符。毕竟,标准是将鼠标键放在键盘上。Pointer_Left
Pointer_Right
KP_*
幸运的是,在 mousekeys 文件的末尾是一些用于设置鼠标键指示器的代码。完美的!
所以我将 mousekeys 文件复制到我的 teck.xkb 文件旁边一个名为“compat”的新文件夹中,并将其重命名为“teck_mousekeys”。我相应地更新了我的 teck.xkb 文件:
xkb_compat { include "teck_mousekeys+complete" };
Run Code Online (Sandbox Code Playgroud)
然后我开始编辑 teck_mousekeys 文件。而不是使用的KP_*
键符,我用我想(约右手母排键)中的那些。结果如下:
default partial xkb_compatibility "mousekeys" {
interpret.repeat= True;
interpret m {
action = MovePtr(x=-1,y=+1);
};
interpret comma {
action = MovePtr(x=+0,y=+1);
};
interpret period {
action = MovePtr(x=+1,y=+1);
};
interpret j {
action = MovePtr(x=-1,y=+0);
};
interpret l {
action = MovePtr(x=+1,y=+0);
};
interpret u {
action = MovePtr(x=-1,y=-1);
};
interpret i {
action = MovePtr(x=+0,y=-1);
};
interpret o {
action = MovePtr(x=+1,y=-1);
};
interpret k {
action = PointerButton(button=default);
};
interpret semicolon {
action = PointerButton(button=3);
};
interpret space {
action = PointerButton(button=default,count=2);
};
interpret y {
action = SetPtrDflt(affect=defaultButton,button=3);
};
interpret h {
action = SetPtrDflt(affect=defaultButton,button=2);
};
interpret n {
action = SetPtrDflt(affect=defaultButton,button=1);
};
interpret p {
action = LockPointerButton(button=default,affect=lock);
};
interpret apostrophe {
action = LockPointerButton(button=default,affect=unlock);
};
indicator "Scroll Lock" {
indicatorDrivesKeyboard;
controls= MouseKeys;
};
};
Run Code Online (Sandbox Code Playgroud)
(以上假设 QWERTY 布局。)
在我的自定义键盘布局中,我定义了滚动锁定来切换鼠标键:
key <SCLK> {[Pointer_EnableKeys]};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1051 次 |
最近记录: |