(I'm trying to make SendKeys code from the internet work with extended characters.) Sendkeys is an imitation of VB SendKeys. There are several algorithms that I've seen on the internet, plus the one that came with Delphi 7. My program uses it to send keystrokes to other programs to make data entry faster and more consistent. It works well except characters that Ord() reports with a number over 255.

Since posting this question I discovered that Character Map reports Alt+0128 through Alt+255. And it turns out that only 26 such characters are reported by Ord() with what appears to be a unicode value. So I now have an ugly work around that just replaces the values reported by Ord() with the alternate, lower, values reported by Character Map. So my Sendkeys now appears compatible with Ansi coding in Notepad. 

I was hoping for a simple character conversion like AnsiChar() but that yielded completely wrong Ord() values.

I am using Delphi XE2 and Arial font for all of this question. 
The Windows Character Map utility reports that Alt + 0147 creates the "Left Double Quotation Mark". 

This key combination delivers the “ character in a Delphi control, Notepad and Word.

All of my internet research says to use Ord() to determine the numeric value of a character:

```
Procedure ShowNumericKeypadCode(ch: Char);
begin
  showmessage('Key code = ' + Format('%4.4d',[Ord(ch)]));
end;

```

But this returns 8220, not 0178. Alt+8220 yields ∟ in Notepad and Delphi controls, but it still produces “ in Word.

This is apparently something to do with Ansi versus Unicode, but I can't figure out how to write a function in Delphi that will return the 0178 instead of 8220.

iConv will not be helpful since the goal is to have a stand alone program. Thanks.