首页 > 代码库 > 用Karabiner来解决Mac上部分软件小键盘不能用的问题

用Karabiner来解决Mac上部分软件小键盘不能用的问题

Mac上的大部分软件对外置USB键盘支持都是不错的,但是也有一些软件比较偷懒,比如我最近碰到的一个软件就是根本不支持小键盘输入数字,而用大键盘上的数字键倒是没有问题,实在是奇葩。

奇葩归奇葩,问题终究还是要解决的。稍微研究了一下这个问题,发现可以用Karabiner这个软件来对键盘进行映射。对于我的需求,就是把小键盘上的数字键映射成大键盘上的数字键。实现起来不怎么难,先上我修改的private.xml文件内容吧:

<?xml version="1.0"?>
<root>
  <item>
    <name>Change KeyPad 0 to Num 0</name>
    <identifier>private.change_keypad0_to_num0</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_0, KeyCode::KEY_0</autogen>
  </item>
    <item>
    <name>Change KeyPad 1 to Num 1</name>
    <identifier>private.change_keypad1_to_num1</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_1, KeyCode::KEY_1</autogen>
  </item>
    <item>
    <name>Change KeyPad 2 to Num 2</name>
    <identifier>private.change_keypad2_to_num2</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_2, KeyCode::KEY_2</autogen>
  </item>
    <item>
    <name>Change KeyPad 3 to Num 3</name>
    <identifier>private.change_keypad3_to_num3</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_3, KeyCode::KEY_3</autogen>
  </item>
    <item>
    <name>Change KeyPad 4 to Num 4</name>
    <identifier>private.change_keypad4_to_num4</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_4, KeyCode::KEY_4</autogen>
  </item>
    <item>
    <name>Change KeyPad 5 to Num 5</name>
    <identifier>private.change_keypad5_to_num5</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_5, KeyCode::KEY_5</autogen>
  </item>
    <item>
    <name>Change KeyPad 6 to Num 6</name>
    <identifier>private.change_keypad6_to_num6</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_6, KeyCode::KEY_6</autogen>
  </item>
    <item>
    <name>Change KeyPad 7 to Num 7</name>
    <identifier>private.change_keypad7_to_num7</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_7, KeyCode::KEY_7</autogen>
  </item>
    <item>
    <name>Change KeyPad 8 to Num 8</name>
    <identifier>private.change_keypad8_to_num8</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_8, KeyCode::KEY_8</autogen>
  </item>
    <item>
    <name>Change KeyPad 9 to Num 9</name>
    <identifier>private.change_keypad9_to_num9</identifier>
    <autogen>__KeyToKey__ KeyCode::KEYPAD_9, KeyCode::KEY_9</autogen>
  </item>
    <item>
    <name>Change KeyPad Enter to Return</name>
    <identifier>private.change_keypadEnter_to_return</identifier>
    <autogen>__KeyToKey__ KeyCode::ENTER, KeyCode::RETURN</autogen>
  </item>
</root>


修改xml文件参考了以下两个网页:

How to add your own settings: https://pqrs.org/osx/karabiner/document.html.en#privatexml
private.xml参考手册: https://pqrs.org/osx/karabiner/xml.html.en

我是怎么找各个键的键值的?

这可以通过Karabiner菜单上的"Launch EventViewer"工具来解决,在这个工具里,你每按一个键都会显示键值的。


Karabiner是日本人开发的开源软件,还是蛮强大的,本身就自带了许多映射功能。如果你需要的话,可以对键盘上的任意一个键进行映射。

软件主页:https://pqrs.org/osx/karabiner/index.html.en

Github主页:https://github.com/tekezo/Karabiner


用Karabiner来解决Mac上部分软件小键盘不能用的问题