页次: 1
咳咳 第一次在这里发帖吧好像 最近刚换了一个60配列的键盘 61键位的 一上手傻眼了 右下角的fn键离默认的方向键wasd太远 一只手够不着 就想把capslock改成fn2 修改了一下/usr/share/X11/xkb/symbols/{pc,us} 整体实现了Mode_switch+n =fn 功能 但是f1~f12效果却不理想 不知道为什么有的软件可以 有的就没反应 比如同为终端 gnome-terminal按f11可以全屏放大 而guake就只有原生的才行 游戏我的世界也这样 现在不知道怎么办了 附上修改的配置文件 求助论坛大佬
pc文件修改段
default partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {
key <ESC> { [ Escape, grave ], [ asciitilde ] };
// The extra key on many European keyboards:
key <LSGT> { [ less, greater, bar, brokenbar ] };
// The following keys are common to all layouts.
key <BKSL> { [ backslash, bar ] };
key <SPCE> { [ space ] };
include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"
key <BKSP> { [ BackSpace, BackSpace ] };
key <TAB> { [ Tab, ISO_Left_Tab ] };
key <RTRN> { [ Return ] };
key <CAPS> { [ Mode_switch ] }; #这里改了大写键
key <NMLK> { [ Num_Lock ] };
key <LFSH> { [ Shift_L ] };
key <LCTL> { [ Control_L ] };
key <LWIN> { [ Super_L ] };
key <RTSH> { [ Shift_R ] };
key <RCTL> { [ Control_R ] };
key <RWIN> { [ Super_R ] };
key <MENU> { [ Menu ] };
us文件修改段
default partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {
name[Group1]= "English (US)";
key <TLDE> { [ grave, asciitilde ] };
key <AE01> { [ 1, exclam ], [ F1 ] }; #这里就是f1~f12的位置 与原生的keycode不同 但keysym是相同的
key <AE02> { [ 2, at ], [ F2 ] };
key <AE03> { [ 3, numbersign ], [ F3 ] };
key <AE04> { [ 4, dollar ], [ F4 ] };
key <AE05> { [ 5, percent ], [ F5 ] };
key <AE06> { [ 6, asciicircum ], [ F6 ] };
key <AE07> { [ 7, ampersand ], [ F7 ] };
key <AE08> { [ 8, asterisk ], [ F8 ] };
key <AE09> { [ 9, parenleft ], [ F9 ] };
key <AE10> { [ 0, parenright ], [ F10 ] };
key <AE11> { [ minus, underscore ], [ F11 ] };
key <AE12> { [ equal, plus ], [ F12 ] };
key <AD01> { [ q, Q ] };
key <AD02> { [ w, W ], [ Up ] };
key <AD03> { [ e, E ] };
key <AD04> { [ r, R ] };
key <AD05> { [ t, T ] };
key <AD06> { [ y, Y ] };
key <AD07> { [ u, U ] };
key <AD08> { [ i, I ] };
key <AD09> { [ o, O ] };
key <AD10> { [ p, P ] };
key <AD11> { [ bracketleft, braceleft ], [ Insert ] };
key <AD12> { [ bracketright, braceright ], [ Delete ] };
key <AC01> { [ a, A ], [ Left ] };
key <AC02> { [ s, S ], [ Down ] };
key <AC03> { [ d, D ], [ Right ] };
key <AC04> { [ f, F ] };
key <AC05> { [ g, G ] };
key <AC06> { [ h, H ] };
key <AC07> { [ j, J ] };
key <AC08> { [ k, K ] };
key <AC09> { [ l, L ] };
key <AC10> { [ semicolon, colon ], [ Home ] };
key <AC11> { [ apostrophe, quotedbl ], [ End ] };
key <AB01> { [ z, Z ] };
key <AB02> { [ x, X ] };
key <AB03> { [ c, C ] };
key <AB04> { [ v, V ] };
key <AB05> { [ b, B ] };
key <AB06> { [ n, N ] };
key <AB07> { [ m, M ] };
key <AB08> { [ comma, less ] };
key <AB09> { [ period, greater ], [ Prior ] };
key <AB10> { [ slash, question ], [ Next ] };
key <BKSL> { [ backslash, bar ] };
};
离线
安装 x 环境了么? 装了 x 环境的话 ,试试看 xkeysnail https://github.com/mooz/xkeysnail
大概示例是这样 子
config.py
# -*- coding: utf-8 -*-
import re
from xkeysnail.transform import *
# 先将大小写转换键替换成点击esc,长按为右 ctrl 键
define_multipurpose_modmap(
{
# caps
Key.CAPSLOCK: [Key.ESC, Key.RIGHT_CTRL],
}
)
# 全局 映射
define_keymap(None, {
K("RC-a"): K("F1"),
K("RC-s"): K("F2"),
K("RC-d"): K("F3"),
})
# chrome 映射
define_keymap(re.compile("Google-chrome"), {
}, " Chrome")
然后执行 sudo xkeysnail config.py 试试看
最近编辑记录 ifnk (2022-03-18 17:50:59)
离线
感谢分享 基本解决了头疼的方向键问题 其他的还没敢动 担心会破坏之前的配置 我看作者的issue.里说不支持mode_switch键 现在有点纠结
# -*- coding: utf-8 -*-
import re
from xkeysnail.transform import *
define_timeout(1)
define_multipurpose_modmap( {
Key.LEFT_SHIFT: [Key.UP, Key.LEFT_SHIFT],
Key.LEFT_CTRL: [Key.LEFT, Key.LEFT_CTRL],
Key.LEFT_META: [Key.DOWN, Key.LEFT_META],
Key.LEFT_ALT: [Key.RIGHT, Key.LEFT_ALT]
}
)
define_keymap(re.compile("firefox"), {
}, "firefox")
离线
感谢分享 基本解决了头疼的方向键问题 其他的还没敢动 担心会破坏之前的配置 我看作者的issue.里说不支持mode_switch键 现在有点纠结
# -*- coding: utf-8 -*-import re
from xkeysnail.transform import *define_timeout(1)
define_multipurpose_modmap( {
Key.LEFT_SHIFT: [Key.UP, Key.LEFT_SHIFT],
Key.LEFT_CTRL: [Key.LEFT, Key.LEFT_CTRL],
Key.LEFT_META: [Key.DOWN, Key.LEFT_META],
Key.LEFT_ALT: [Key.RIGHT, Key.LEFT_ALT]
}
)define_keymap(re.compile("firefox"), {
}, "firefox")
你说的 mode_switch 是指 fn 么? fn 当然不能映射啦 , 我的意思 是 你可以 转换下思路 ,
你 的 右 ctrl win alt 是不是很少按 ?
我上面代码的例子就 是 把 capslock 单按 为 发送 esc 键 ,如果 capslock + x (任意键) 则为 发送 右 ctrl + x (任意键)
接着 在 定义 右 ctrl + x (任意键) 映射 ,这里 我 映射了 右 ctrl + a s d 为 发送 f1 f2 f3 键 ,
就是说 我这个 相当于 把 capslock 当作 fn 键了 caps + a s d 为发送 f1 f2 f3 呀
https://gitee.com/ifnk/archconfig/blob/master/config.py
这是我的配置
分号 + x (字母键) 为 发送 那些 难打的符号 比如 (_?()!$=\'+-) 这些
引号 + x (字母键) 为 发送 win + 1 2 3 4 5 6 7 8 9 快速切换 虚拟桌面 (我用 i3wm )
caps + p n b f 为 发送 方向键 上下左右
tab + x(字母键) 为 发送 ctrl + x (字母键)
我这里 映射了 4 个 修饰键 ( 即可以单按 也可以 和别的键组合 按 )
相当于 自定义了 fn1 fn2 fn3 fn4
你为什么还会纠结 fn 呢?
离线
就这样吧 不想搞得太复杂 尽量保留原位 只是按个人习惯把左shift上提了一位
# -*- coding: utf-8 -*-
import re
from xkeysnail.transform import *
define_timeout(1)
define_multipurpose_modmap({
#设置短按左手控制区为独立的方向键区
Key.LEFT_SHIFT: [Key.UP, Key.RIGHT_ALT], #设置长按为fn2
Key.LEFT_CTRL: [Key.LEFT, Key.LEFT_CTRL],
Key.LEFT_META: [Key.DOWN, Key.LEFT_META],
Key.LEFT_ALT: [Key.RIGHT, Key.LEFT_ALT],
#设置左右对称的left_alt为fn2键
Key.CAPSLOCK: [Key.F13, Key.LEFT_SHIFT], #短按切换输入法 长按左上档键
Key.BACKSLASH: [Key.BACKSLASH, Key.RIGHT_ALT],
})
#全局 映射
define_keymap(None, {
K("RM-w"): K("up"),
K("RM-a"): K("left"),
K("RM-s"): K("down"),
K("RM-d"): K("right"),
K("RM-esc"): K("grave"),
K("RM-key_1"): K("F1"),
K("RM-key_2"): K("F2"),
K("RM-key_3"): K("F3"),
K("RM-key_4"): K("F4"),
K("RM-key_5"): K("F5"),
K("RM-key_6"): K("F6"),
K("RM-key_7"): K("F7"),
K("RM-key_8"): K("F8"),
K("RM-key_9"): K("F9"),
K("RM-key_0"): K("F10"),
K("RM-minus"): K("F11"),
K("RM-equal"): K("F12"),
K("RM-left_brace"): K("insert"),
K("RM-right_brace"): K("delete"),
K("RM-semicolon"): K("home"),
K("RM-apostrophe"): K("end"),
K("RM-dot"): K("page_up"),
K("RM-slash"): K("page_down"),
K("F13"): K("C-space"),
K("RM-F13"): K("capslock"),
})
离线
在小众软件上看到一个kmonad 支持跨平台跟切层 所以xkeysnail就放弃了
配置如下:
(defcfg
;; For Linux
input (device-file "/dev/input/by-id/usb-BY_Tech_Gaming_Keyboard-event-kbd")
output (uinput-sink "My KMonad kbd")
;; For Windows
;; input (low-level-hook)
;; output (send-event-sink)
;; For MacOS
;; input (iokit-name "my-keyboard-product-string")
;; output (kext)
)
(defsrc
esc 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt cmp rctl
)
(defalias
upft (tap-hold 200 up lsft)
lect (tap-hold 200 left lctl)
dome (tap-hold 200 down lmet)
rial (tap-hold 200 rght lalt)
)
(deflayer default
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
@fcap a s d f g h j k l ; ' @fret
@upft z x c v b n m , . / rsft
@lect @dome @rial @spc ralt rmet rctl
)
(defalias
spc (tap-hold 200 spc (layer-toggle space))
)
(deflayer space
_ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _
up _ _ _ _ _ _ _ _ _ _ _
left down rght _ _ _ _
)
(defalias
fcap (tap-hold 200 C-A-spc (layer-toggle taba))
fret (tap-hold 200 ret (layer-toggle taba))
)
(deflayer taba
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 _
_ del ins _ _ _ _ _ _ _ _ ins del _
_ end home _ _ _ _ _ _ _ home end _
_ pgdn pgup _ _ _ _ _ _ pgup pgdn _
_ _ _ _ _ _ _
)
离线
页次: 1