33

I write blog posts, and I often need to type en-dash (–) and sometimes em-dash (—) in my blog posts. Currently I keep these characters saved in a text file, and copy-paste them whenever I need them. Unnecessary to say, it is a headache to move between keyboard and mouse when you type large texts.

It would be better for me if there ware a keyboard shortcuts available for these two characters. Is there a way to type en-dash and em-dash in Windows? I use Windows 7 and Windows 8 in different computers.


Here's an aligned comparison of dashes, if you need to see the difference for some reason.

  1. Here's-dash
  2. Here's–en-dash
  3. Here's—em-dash
  • 1
    Your #1 is a "hyphen-minus". It is also important not to confuse these with U+2212: MINUS SIGN (−). – Andreas Rejbrand Sep 13 '14 at 22:41
  • The accepted answer is great, but I want to add that you don't need the mouse to copy and paste the dashes from your text file. Assuming you have your text file and the document you're typing open in two different windows, when you get to the spot where you want a dash, you can: 1. Use Alt+Tab to switch between them 2. Use the arrow keys to get to the dash you want 3. Hold down Shift+Arrow key to highlight the dash 4. Ctrl+C to copy 5. Alt+Tab back to your document 6. Ctrl+V to paste – nstenz Sep 13 '14 at 22:48
  • 2
    If you don't mind using a 3rd party tool, I'd recommend WinCompose. en-dash is then [hotkey]--. and em-dash [hotkey]--- – Berend Aug 26 '16 at 6:39
  • Depending on where you’re from, there may be appropriate keyboard layouts (like German T2). – Daniel B Aug 26 '16 at 8:19
  • Pragmatical way for infrequent use and with a laptop without a numerical keyboard or num lock: google for "en dash windows" and copy/paste from characters from this post. – simon Dec 21 '17 at 16:48
36

If you have a numpad, turn numlock on and use Alt + 0150 for en-dash and Alt + 0151 for em-dash. That is keep Alt pressed and type the numbers on the numeric keypad.

EDIT: As @gronostaj points out, this works with only left Alt.

| improve this answer | |
  • 9
    It's worth noting that it works only with left Alt. – gronostaj Sep 13 '14 at 17:59
  • 1
    @gronostaj: Thanks for the info. Luckily I typed with left alt. Otherwise I would not have accepted the answer. – sampathsris Sep 13 '14 at 18:01
  • 3
    Just checked, this works for me with right Alt as well. I was using autohotkey to map right Alt to left Alt for a while but not anymore. Maybe it is keyboard dependent – Vamsi Sep 13 '14 at 18:09
  • 2
    It also requires a 10-key. – Louis Waweru Sep 13 '14 at 18:29
  • 1
    Well in my laptop I can use both alt keys as well. – sampathsris Sep 13 '14 at 19:22
10

For anyone looking for a slightly faster (although not-native) solution, I have made an AutoHotKey program that lets you type Em and En dashes somewhat naturally. I really made it for myself, but it's on Github if anyone's interested.

It's called Em-n-en.

The entire point of this program is to allow a user to quickly insert an em/en dash by typing ==- (Em dash) or --= (En dash). There are other methods for inserting the dashes - these are covered in the program itself. Note that this only works on windows.

Hopefully this is helpful! :)

| improve this answer | |
  • Could you possible expand on how the OP would make use of your software? Please see How to recommend software – Burgi Aug 26 '16 at 7:54
  • 1
    +1 for clever and appropriate use of a candy name for your AHK script. It would be nice to see the actual code in your answer. – ChrisB Jun 25 '18 at 23:02
5

As of Windows 10 Version 1903, you can enter en-dash, em-dash, and various other symbols in a much simpler way using the updated Emoji panel:

Just type Win + . (or Win + ;) and select the omega symbol on the top of the panel.

I haven't found any way to insert them using the keyboard only (i.e. without using the mouse), though.

| improve this answer | |
2

To find any character you need, use "Character Map" - note the text in the lower right corner.
Note also that the availabilty of a character depends on the typeface (Font) that you have active.

WindowsXP version

You use Character map to find out which character and what "Keystroke" (above) it can be generated with. Then you do not need Character map any more - assumed you can remember the number or keys to type/use. Note that some are available also with Alt/Shift/Control - as in Alt+Space == either of Em or En space (can't remember which it is right now and no W-computer to try it out on).

| improve this answer | |
  • Thanks for the answer. Character map is how I initially found the two characters. My requirement was that I should not need to move my hand to mouse from my keyboard. That's why I asked the question. – sampathsris Sep 13 '14 at 20:12
  • 2
    Yes? You use Character map to find out which character and what "Keystroke" (above) it can be generated with. Then you do not need Character map any more - assumed you can remember the number or keys to type/use. Note that some are available also with Alt/Shift/Control - as in Alt+Space == either of Em or En space (can't remember which it is right now and no W-computer to try it out on). – Hannu Sep 13 '14 at 20:17
  • This may help also: windows.microsoft.com/en-us/windows/… - especially "How do I create private character" – Hannu Sep 13 '14 at 20:27
  • And this: howtogeek.com/howto/21187/… – Hannu Sep 13 '14 at 20:29
  • @Hannu Alt+Space just opens the current window's system menu (the one with restore, move, close...). Some programs, like Microsoft Word, may have other shortcuts for em and en dashes, but the only shortcut that works everywhere is the Alt+numpad key combination. – Arthur Tacca Jan 25 '19 at 16:11
0

As an alternative way, you can use a clipboard manager like ClipX with the "Stickies" plugin. If you store proper en dash into the list, entering it is just Ctrl+Alt+V (or whatever shortcut is configured to show the list) followed by A.

| improve this answer | |
0

Via AutoHotKey:

Create a script like dashes.ahk somewhere on your computer:

; en dash
::--::–

; bonus point: em dash
::---::—

Make sure it's stored as UTF-8 with BOM. Double click it and try typing -- followed by space somewhere; it will replace it with n-dash.

Similarly for m-dash.

| improve this answer | |

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