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
{ "#." = ("insertText:". ","); } in ~/Library/KeyBindings/DefaultKeyBinding.dict but it doesn't seem to work. I also tried with { "#," = ("insertText:". ","); } , but still not working... :( 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
If anyone is reading this in 2022 and using Mac OS X 12.1 (Monterey) and wants to change dot (.) to comma (,) on a number keypad, try the following steps:
hidutil property --set ' {"UserKeyMapping": [ { "HIDKeyboardModifierMappingSrc": 0x700000063, "HIDKeyboardModifierMappingDst": 0x700000036 }, ]}' 0x700000063 means dot char .
0x700000036 means comma char ,
Reference: https://developer.apple.com/library/archive/technotes/tn2450/_index.html
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. I changed my keyboard from "Dutch" to "US international - PC" and my numpad dot works as expected. It's no longer giving me a comma.
For the reverse that Panosru is looking for I believe that the correct syntax within ~/Library/KeyBindings/DefaultKeyBinding.dict should be:
{ "#," = ("insertText:", "."); "#." = ("insertText:", ","); } As the comma after "insertText" is a separator between the command and the wanted character. This effectively reverts the original behaviour of the key in the numpad.
(Tested and working on macOS 15)
"#." = ("insertText:", ","); and not "#." = ("insertText:". ",");. However, could you please explain why you have also added the second line? 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.
{ "#." = ("insertText:", ","); }or comma to dot:{ "#," = ("insertText:", "."); }.