在自定义OS X键盘布局中区分左右移位

时间:2014-11-07 11:56:58

标签: macos keyboard

我正在尝试为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>

1 个答案:

答案 0 :(得分:1)

根据我的经验,这是不可能的。

你是对的,理论上应该可以单独处理rightShiftrightOptionrightControl,但这从来没有奏效。

The docs say

  

请注意,许多硬件键盘没有左右两个版本的修饰键。根据&#34;任何&#34;来指定修饰符通常是最安全的。变种(anyShift,anyOption,anyControl)。

然而,问题不在于硬件。以编程方式,确实可以检测到正确的密钥(例如,使用https://manytricks.com/keycodes/),但不能在.keylayout中检测到。即使您使用Karabiner明确地将密钥重新映射到right_shift,macOS仍会使用您的shift(=左移)键映射。