I just bought an "Apple Keyboard with Numeric Keypad", then I connected it to my Macbook Pro running Lion.

But the home and end key under the F14 key doesn't work as I expected. Say in "Pages", the home key doesn't bring the cursor to the beginning of the line, while the end key takes you to the bottom of the page.

Does anyone know how to re-map the home/end key?

migrated from stackoverflow.com Jul 21 '11 at 11:50

This question came from our site for professional and enthusiast programmers.

up vote 48 down vote accepted

One option is to create ~/Library/KeyBindings/ and save a property list like this as ~/Library/KeyBindings/DefaultKeyBinding.dict:

{
  "\UF729"  = moveToBeginningOfLine:;
  "\UF72B"  = moveToEndOfLine:;
  "$\UF729" = moveToBeginningOfLineAndModifySelection:;
  "$\UF72B" = moveToEndOfLineAndModifySelection:;
}

Quit and reopen applications to apply the changes. Note that DefaultKeyBinding.dict is not supported by some applications like Xcode or Firefox.

In Terminal you can assign home (↖) to control-a and end (↘) to control-e from Preferences > Settings > Keyboard. That will leave you with no key combinations to scroll to the top or bottom of a window though.

It might be easier to just use the default keybindings. In most native text views:

  • control-A or option-up goes to the beginning of a paragraph
  • control-E or option-up goes to the end of a paragraph
  • command-left goes to the beginning of a line
  • command-right goes to the end of a line
  • 1
    This works on most of my apps like Pages and Textmate. But, I couldn't get it working in Terminal – user8207 Jul 22 '11 at 21:54
  • 5
    Right. Terminal is another story, and you'll need to tell it how you want the Home and End keys to behave. You can do that in Terminal -> Preferences -> Keyboard. Set the Home key to send control-a and End key to send control-e. Those are the Emacs-style keybindings that the Terminal uses for line movement by default. It'll mimic the regular home/end movement you're after. – michaelmichael Jul 22 '11 at 22:40
  • Thanks again Michael. I'll try it out tonight when I get back to my laptop. – Kevin Ren Jul 25 '11 at 0:44
  • 1
    Works in macOS Sierra! (Karabiner is not working at the moment). – Gustavo Bezerra Sep 24 '16 at 7:42
  • 2
    @ckpepper02 RIGHT? I mean so frustrating and pointless 99% of the time since PgUp and PgDown get you to the same point for all but the longest of docs. Grrr! – Robino Jan 25 at 15:01

Another option is to enable the "Use PC Style Home/End" setting in Karabiner (formerly KeyRemap4MacBook):

The setting is defined in Resources/include/checkbox/for_pc_users.xml.

You can also save a file like this as ~/Library/Application Support/KeyRemap4MacBook/private.xml:

<?xml version="1.0"?>
<root>
  <appdef>
    <appname>HOMEENDIGNORE</appname>
    <equal>com.microsoft.Word</equal>
    <equal>com.microsoft.Powerpoint</equal>
    <equal>com.microsoft.Excel</equal>
    <equal>com.vmware.fusion</equal>
    <prefix>com.vmware.proxyApp.</prefix>
  </appdef>
  <item>
    <name>homeend</name>
    <identifier>homeend</identifier>
    <not>HOMEENDIGNORE</not>
    <autogen>__KeyToKey__ KeyCode::HOME, ModifierFlag::NONE, KeyCode::A, VK_CONTROL</autogen>
    <autogen>__KeyToKey__ KeyCode::END, ModifierFlag::NONE, KeyCode::E, VK_CONTROL</autogen>
    <autogen>__KeyToKey__ KeyCode::HOME, VK_SHIFT | ModifierFlag::NONE, KeyCode::A, VK_CONTROL | VK_SHIFT</autogen>
    <autogen>__KeyToKey__ KeyCode::END, VK_SHIFT | ModifierFlag::NONE, KeyCode::E, VK_CONTROL | VK_SHIFT</autogen>
  </item>
</root>

Then open the KeyRemap4MacBook application, press the ReloadXML button, and enable the setting. See https://pqrs.org/macosx/keyremap4macbook/xml.html.en for more information.

I would suggest you the awesome keyremap4macbook, it's free amd despite the name it works on any mac (not necessarily macbooks) and here you can find the easiest way to change the default behaviour of home/end buttons to work like they should (IMO)

  • I concur, I more frequently home and end on a line basis rather than on a full document basis. Got to do everything we can to reduce the friction to executing the most frequent use cases and push keyboard shortcut combinations and the like to less frequent commands. – jxramos Mar 9 at 0:47

I followed this blog post and it did the "home" and "end" key bindings as well as a few other userful adjustments.

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

  • 2
    We like answers to be more than just a single line. Ideally, you want to explain why your answer is *right." It also helps to provide links, citations, and/or screen shots. Please review our help section How to Answer on writing good answers to questions – Allan May 24 '16 at 23:13

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.