How to input special characters w/o numpad? [duplicate]

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?


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.


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" = "�"