情况
我使用的键盘布局称为3l(三版式)这是一个分层的键盘布局。这是主层(未按下任何修饰键时的行为):
现在,当我按住'普通键盘(sym3l 版)上的 时,我处于“符号”模式,键盘的其余部分的行为有所不同。以下是此模式的图片:
实际上,这个符号键就像一个特殊的键Shift,可以让我访问特殊字符。
此外,我有一个数字层,它具有与符号层相同的效果并由键激活/,但具有光标和数字键盘控件:
我从他那里 fork 了我的布局,他已经让这个布局在 Linux 和 Windows 中工作了(使用 AutoHotKey)。我也想把它移植到 macOS 上。到目前为止,我已经创建了一个3l.keylayout
文件 (点击这里) 并且具有非常基本的功能。
正在发挥作用
- 正常模式下的按键工作正常。
- 如果我按下符号修饰键,则我按下的第一个字符将输出为正确的符号。例如,如果我按下符号键然后O,
/
则输出。 - 数字键盘输出的 cur/num 键也是如此。
什么不起作用
- 如果我按住符号修饰键并输入多个字符,则只有第一个字符会实际输出符号。(cur/num 键也是如此。)
- 如果我按下并释放其中一个修饰键,然后按下另一个键,则会输出符号/数字。情况不应该如此。当我释放修饰键时,我希望它返回正常模式(就像键一样Shift)。
- 光标操作键并非在所有应用程序中都能可靠地工作,并且它们还存在不允许重复按键的问题。
我的问题
有没有什么方法可以帮助我获得 macOS(Sierra 及更高版本)中上面描述的功能?
笔记:我还尝试使用 Karabiner Elements 将'和重新映射/到右 Option 和右 Control,然后尝试创建一个由这些键激活的新keymap
键3l.keylayout
。但是,这没有奏效。它搞砸了一切,我陷入了永久的控制/选项键情况。
答案1
我能够使用以下方法解决这个问题登山扣元素'复杂的修改。
这是我的完整karabiner.json
文件。
在 下profiles -> rules -> manipulators
,我添加了两个操纵器。一个用于sym
,一个用于cur
。
我复制了sym
下面的操纵器:
{
"conditions": [
"name": "sym",
"type": "variable_if",
"value": 0
},
{
"name": "cur",
"type": "variable_if",
"value": 0
}
],
"from": {
"key_code": "quote",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"set_variable": {
"name": "sym",
"value": 1
}
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "sym",
"value": 0
}
}
],
"type": "basic"
}
然后我检查了每个键的设置,即按下键时没有修饰键、sym
有修饰键、有cur
修饰键。
这完美地运行。