28

How do I type special characters (Alt+0???) in Windows on a laptop without any kind of numeric keyboard (even not one accessed by FN)?

Right now I am using the NT 4 charmap (the XP one sucks), but does anyone know of a more efficient way?

6
  • So, you are using Windows XP?
    – iglvzx
    Dec 29, 2011 at 20:38
  • @kinokijuf To me you picked a good way. find and 1 click as opposed to typing 4 things. What else could there be? Remapping, or creating shorts for some special charachters you use. using a International keyboard, or some super special OnScreenKeyboard that is better than the charmap. Having a big clipboard of whole "Words" to paste without retyping. What kind of thing were you thinking would be better? How about keys that work like texting on the phone? hold them down and they change to the accented version of them ?
    – Psycogeek
    Dec 29, 2011 at 20:49
  • @Psycogeek: But I’m more of a keyboarder.
    – kinokijuf
    Dec 29, 2011 at 22:46
  • ergonis.com/products/popcharx/features.html#Anchor-SearchField ?? there is one programmers idea of simpler.
    – Psycogeek
    Dec 30, 2011 at 0:48
  • @Psycogeek: what made you think I am using OSX?
    – kinokijuf
    Dec 30, 2011 at 19:01

2 Answers 2

15

This can be achieved with an AutoHotkey script.

The script

<!1::Numpad1
<!2::Numpad2
<!3::Numpad3
<!4::Numpad4
<!5::Numpad5
<!6::Numpad6
<!7::Numpad7
<!8::Numpad8
<!9::Numpad9
<!0::Numpad0
<!+::NumpadAdd

How it works

The line <!1::Numpad1 simulates pressing the key 1 on the numeric keypad when the key combination on the left side of :: is pressed.

Here, <! represents the left Alt key and 1 the key 1.

As a result, pressing you can use the "regular" as if they were on the numeric keypad.

Note:

  • If your keyboards has two Alt keys (rather than an AltGr key), you can make this work with the right Alt key as well. It suffices to remove all < characters.

  • The line <!+::NumpadAdd is only needed if you want to type Unicode characters using hexadecimal codes.

How to use

  1. Download and install the latest version of AutoHotkey.

  2. Save the above script as numpad.ahk, using your favorite text editor.

  3. Double-click the file to run the script.

  4. If you wish, copy the script (or a link to it) in the Startup folder.

2
  • Sweet! I tried to replace the <! with a <^>! to use AltGr instead of AltLeft but it won't work. Any idea why?
    – CAFxX
    Jul 17, 2012 at 9:37
  • @CAFxX: That works as far as mapping 1 to Num1 goes. The problem is that you're still pressing the AltGr key, not Alt alone (which wouldn't work with the real numpad either). There might be a way around it, but I can't see it. You could post a new question.
    – Dennis
    Jul 17, 2012 at 13:31
2

I tried the Unicode IME, and it works. Now I have to remember all the codepoints.


Unicode IME for Windows XP

You need to open the appropriate part of Control-Panel, In WIn-7 it is something like

  • Open Control Panel
  • Choose Region and Language
  • Choose Keyboards and Languages,
  • click Change Keyboards
  • Select Keyboard

The linked page (dated 2005) describes (presumably for XP)

  • Open Add Input Language
  • Choose Input Language = Chinese (Taiwan)
  • Select Keyboard Layout/IME = Chinese (Traditional) - Unicode

(Details obviously vary between Windows versions)

The linked page continues

Simple to use -- just switch to it with and start typing hex numbers in any application....
and then when you type a full Unicode code point, it will commit the character automatically!

Unicode IME for Windows Vista and Windows 7

The official Microsoft "Unicode IME" described above was removed in Vista and is not present in Windows 7.

An MSDN Blog has some instructions for Adding back a Unicode IME - but it seems to have been a work in progress at that time.

I have installed this Unicode IME under Windows-7 64-bit and it works well.

To install the IME, you

  • copy a text file defining the IME into \Program Files\Windows NT\TableTextService and then
  • open a command prompt with elevated privileges,
  • cd to the above directory and
  • type rundll32 TableTextService.dll RegisterProfile TableTextServiceUnicode.txt
  • clicking OK on the confirmation dialogue.
  • Then you can follow the instructions at the top of this answer to enable this IME.

Using the Unicode IME

You press Left Alt+Shift to switch to Unicode IME (or back again). The cursor shape changes to an underscore and the keyboard icon in the system notification area changes accordingly. If you then type four hex digits into Notepad (or other application?), the Unicode character for that Unicode code-point is inserted.

IME Definition

Below is the start and end of the IME text-file definition, The copyright/licence for the original is not clear but it appears to be intended to be freely available.

[System]
LangId = LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
GuidProfile={ECD4D0E2-BC06-4726-AFB4-5EB43538B683}
Description="Unicode IME"
Display Description="Unicode IME"

[Configuration]
CandidateList.Phrase.HideWindow=1
CandidateList.Text.HideWindow=1
ReadingWindow.HideWindow=1
CandidateList.dontShowNextKeySequence=1
CandidateList.KeepCandidateListForInvalidKey=1
Composition.ConversionOnlyOneItem=1
Composition.QuitAndErrorOnConversion=1

[PreservedKey]
GuidImeMode={98213494-367A-4855-90A1-97D917E3EC3D}
KeyDefineImeMode=VK_SHIFT, TF_MOD_ON_KEYUP_SHIFT_ONLY
ImeMode=1

DoubleSingleByte=0
Punctuation=0

[LanguageBar]
EnableImeMode=0
EnableDoubleSingleByte=0
EnablePunctuation=0

[Profile]
KeystrokeFile ="%programFiles%\Windows NT\TableTextService\TableTextServiceUnicode.txt"
DictionaryFile="%programFiles%\Windows NT\TableTextService\TableTextServiceUnicode.txt"


[Keystroke.Composition]
VK_1,          0  = INPUT        // 1
VK_2,          0  = INPUT        // 2
VK_3,          0  = INPUT        // 3
VK_4,          0  = INPUT        // 4
VK_5,          0  = INPUT        // 5
VK_6,          0  = INPUT        // 6
VK_7,          0  = INPUT        // 7
VK_8,          0  = INPUT        // 8
VK_9,          0  = INPUT        // 9
VK_0,          0  = INPUT        // 0
VK_A,          0  = INPUT        // A
VK_B,          0  = INPUT        // B
VK_C,          0  = INPUT        // C
VK_D,          0  = INPUT        // D
VK_E,          0  = INPUT        // E
VK_F,          0  = INPUT        // F

[Text]
"0020" = " "
"0021" = "!"
"0022" ="
"0023" = "#"
"0024" = "$"
"0025" = "%"
"0026" = "&"
"0027" = "'"
"0028" = "("
"0029" = ")"
"002a" = "*"
"002b" = "+"
"002c" = ","
"002d" = "-"
"002e" = "."
"002f" = "/"
"0030" = "0"
"0031" = "1"
"0032" = "2"
"0033" = "3"
"0034" = "4"

middle part removed for brevity (and because copyright unclear)

"ffeb" = "→"
"ffec" = "↓"
"ffed" = "■"
"ffee" = "○"
"fff9" = ""
"fffa" = ""
"fffb" = ""
"fffc" = ""
"fffd" = "�"
0

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