Is there any way to change the key mapping of the apple keyboard?

As programmer I find annoying there's a comma instead a dot in numeric keypad. I would remap this key to have dot ...


The simplest solution is to create the file DefaultKeyBinding.dict in /Users/[user]/Library/KeyBindings if it does not already exist, and add the remapping:

   "#," = ("insertText:", ".");

Then logout or restart the mac.

The # indicates the remapping is for the keypad only. More reference for that file: https://gist.github.com/trusktr/1e5e516df4e8032cbc3d

  • 1
    Thanks ! I've been looking for something like this for few months. I didn't wanted to download a tool for this purpose....
    – ZazOufUmI
    Aug 6 '18 at 6:28
  • This should be accepted as the answer, +1 for not needing another tool. By the way, a restart isn't necessary, just log out and log back in.
    – BoDeX
    Aug 21 '19 at 2:16
  • 1
    This solution is working in Catalina (10.15 Beta) with no problems.
    – Rodrirokr
    Sep 19 '19 at 2:23
  • Working on Catalina 10.15.2 Jan 27 '20 at 13:38
  • 1
    Hi! I wanted to achieve the same result but in reverse, so dot to a comma. I placed this: { "#." = ("insertText:". ","); } in ~/Library/KeyBindings/DefaultKeyBinding.dict but it doesn't seem to work. I also tried with { "#," = ("insertText:". ","); } , but still not working... :(
    – panosru
    Oct 10 '20 at 11:01

based on Matías González answer:

Step 1, Add the remapping (paste this command on your console):

mkdir ~/Library/KeyBindings && cd ~/Library/KeyBindings && touch DefaultKeyBinding.dict && echo '{"#," = ("insertText:", ".");}' > DefaultKeyBinding.dict

Step 2, Restart the mac

The # indicates the remapping is for the keypad only. More reference for that file: https://gist.github.com/trusktr/1e5e516df4e8032cbc3d

  • Would you get a comma again if you pressed shift this way? Because that would be desirable
    – Herman
    May 21 at 7:54
  • I don’t think so, but feel free to give it a try and comment your findings
    – Jose Paez
    May 21 at 13:59

One solution is Karabiner (prior to version 9.3.0, Karabiner was called KeyRemap4MacBook). It allows you to remap specific keys or change then entire keyboard layout, as described here.

It is a powerful keyboard remapper that can change not only the functionality of keys and key combinations, but just about everything related to how a key repeats when you hold it down. Keyboard remappings are highly customizable (although it's not a so simple process). You can change practically anything: you can search through all the options and quickly find what you're looking for, or just browse by category. It's very powerful and usage is pretty straightforward.

The drawback is that keyboard remapping functions are predefined and you can just check them off. If you want to add custom remapping functions, you have to edit an XML file. When you're using a GUI application this is not exactly the ideal experience. That said, this is the only significant drawback.

  • Thanks for this one... I'm starting to do my taxes for 2017 and it was really bugging the crap out of me in excel! Dec 30 '17 at 18:04

If anyone reading this on 2021 and using Mac OS X 10.13 (Hight Sierra) and wanna change dot to comma on number keypad, try the following steps:

  1. Open the Terminal application;
  2. Paste this code on it:
hidutil property --set '
{"UserKeyMapping": [
        "HIDKeyboardModifierMappingSrc": 0x700000063,
        "HIDKeyboardModifierMappingDst": 0x700000036
  1. Press enter;
  2. Enjoy it!

0x700000063 means dot char .

0x700000036 means comma char ,

Reference: https://developer.apple.com/library/archive/technotes/tn2450/_index.html

  • Excellent, thanks for the update. Since I use a different keyboard layout (bépo), thanks to the table you have referenced, I managed to figure out that I needed to replace 0x700000063 by 0x700000019. Now it works as expected 🥳 It prints a v when I change the keyboard back to French, but that's no big deal for me.
    – Arnaud P
    Sep 3 at 6:17
  • BTW if anyone wants to cancel their changes after experimenting with this: apple.stackexchange.com/a/374073
    – Arnaud P
    Sep 3 at 6:19

For the reverse that Panosru is looking for I believe that the correct syntax within ~/Library/KeyBindings/DefaultKeyBinding.dict should be:

   "#." = ("insertText:". ",");

As the comma after "insertText" is a separator between the command and the wanted character.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .