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 ...
Ask Different is a question and answer site for power users of Apple hardware and software. It only takes a minute to sign up.
Sign up to join this communityThe 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.
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.
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.
{ "#." = ("insertText:", ","); }
or comma to dot:{ "#," = ("insertText:", "."); }
.