我正在尝试为OS X(Mavericks)定义键盘布局。 我的目标是区分左/右班次。 我创建了这个测试布局,但没有运气。两个组合左/右移+ +产生相同的。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<keyboard group="0" id="5000" name="U.S." maxout="2">
<layouts>
<layout first="0" last="0" modifiers="48" mapSet="312" />
</layouts>
<modifierMap id="48" defaultIndex="0">
<keyMapSelect mapIndex="0">
<modifier keys="" />
</keyMapSelect>
<keyMapSelect mapIndex="1">
<modifier keys="shift" />
</keyMapSelect>
<keyMapSelect mapIndex="2">
<modifier keys="rightShift" />
</keyMapSelect>
</modifierMap>
<keyMapSet id="312">
<keyMap index="0">
<key code="12" output="q" />
</keyMap>
<keyMap index="1">
<key code="12" output="1" />
</keyMap>
<keyMap index="2">
<key code="12" output="2" />
</keyMap>
</keyMapSet>
</keyboard>
答案 0 :(得分:1)
根据我的经验,这是不可能的。
你是对的,理论上应该可以单独处理rightShift
,rightOption
和rightControl
,但这从来没有奏效。
请注意,许多硬件键盘没有左右两个版本的修饰键。根据&#34;任何&#34;来指定修饰符通常是最安全的。变种(anyShift,anyOption,anyControl)。
然而,问题不在于硬件。以编程方式,确实可以检测到正确的密钥(例如,使用https://manytricks.com/keycodes/),但不能在.keylayout
中检测到。即使您使用Karabiner明确地将密钥重新映射到right_shift
,macOS仍会使用您的shift
(=左移)键映射。