From: tommc@hpcvusc.cv.hp.com (Tom McFarland)
Subject: Re: Problem with ISO8859 and HP keyboard
Reply-To: tommc@cv.hp.com
Organization: Hewlett Packard UTD-Corvallis
Date: Fri, 8 Jan 1993 21:41:17 GMT

In article <1993Jan8.131612.6687@jussieu.fr>, umberto@aomc.jussieu.fr (Umberto D'Ortona) writes:
|> In article <1993Jan6.125830.8710@ratp.fr>, jt@ratp.fr (Janick TAILLANDIER) writes:
|> |> I have installed patch PHSS_1659 on an HP9000/400 (HP-UX 8.0) to be able
|> |> to use the ISO8859-1 character set with the resource "HPterm*roman8" set
|> |> to "False" and an appropriate ISO font.
|> |> 
|> |> Everything works fine but...  with an HP46021AF keyboard (French layout),
|> |> the key sequence [Ext Char][`] does not generate the character '|' (decimal
|> |> 124) but a character whose decimal value is 166.  I am worried since this
|> |> key sequence in the only way to introduce the '|' character (very useful on
|> |> Unix :-) with a French keyboard.
|> |> 
|> |> Have I missed something ?
|> |> 
|> |> Janick Taillandier
|> |> jt@ratp.fr
|> 
|> Hi,
|> I have a analogous problem.
|> Same keyboard, HP720 and HP-UX 8.05
|> When I work in a hpterm, I obtain the pipe character "|"
|> by typing  [Ext Char][`] but when I work in a xterm,
|> the same sequence give me a capital i with a hat 
|> something like I^ . So I compile and execute the small
|> following C program 
|> 
|> #include <stdio.h>
|> main() {
|>     int c;
|>     while ((c =getchar())!= EOF) {
|>         printf("%d \n",c);
|>     }
|> }
|> When I execute it in hpterm, and I type  [Ext Char][`] 
|> it give me 124, fine but when I execute it in a xterm
|> it give me 166. 

You have the same problem as Janick, but have the additional problem that
you are using an HP ROMAN8 font with your xterm.  Character 166 in Latin 1
is the broken bar character; character 166 in Roman8 is I-curcumflex (capital
I with a hat).  So your Latin-1 xterm (xterm can *only* generate Latin-1)
is receiving the XK_broken_bar keysym, calling XLookupString, which results
in the Latin-1 character "broken bar" (value 166).  You are then telling
xterm to render character code 166 with a Roman8 font; character 166 in
Roman8 is I-circumflex.

So to solve your problem, use an ISO8859-1 font with your xterm.  Since
the file names for the latin-1 fonts are identical in most cases to those
of the Roman8 fonts, you will need to do one of the following:

  1. modify your X servers default search path
    (use xset +fp /usr/lib/X11/fonts/iso_88591/75dpi)/, but do this only
    if you want Latin1 for all/most clients.

  2. use an xlfd spec instead of a file name for the font resource.

  3. add an alias to /usr/lib/X11/fonts/iso_8859.1/75dpi/fonts.alias file
     such as:

	my_latin1  -adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1
     
     Then force the X server to re-look at the alias file by running:

	xset fp rehash

In addition to one of the above, you still need to put the appropriate keysym
in your servers keymap.  To do this:

   xmodmap -pk  (this prints out the current keymap for your X server)

   locate the keycode value on which the broken bar keysym is allocated.

   then modify the keymap by typing the following:

      xmodmap - <Return>
      keycode NUMBER =  grave asterisk bar brokenbar

   I think you will find NUMBER to be 108 for the ITF French keyboard.

|> Till now, I have found no solution, if I want a pipe in
|> a xterm (and I'm oblige to use xterm, because on some computer
|> there is no hpterm) I have tu cut and paste from an hpterm.
|> So I think my problem is very close from the one of Janick Taillandier.
|> I have also red the two answers of Arne Thormodsen and, may be I'm not
|> so smart, but I don't see the solution.
|> Hope this will help to fix the problem
|>   
|> 
|> -- 
|> Umberto D'Ortona (umberto@aomc.jussieu.fr)
|> Labo. AOMC   Universite  P.  et  M.  Curie 
|> 4  Pl Jussieu  75252 Paris Cedex 5  FRANCE
|> Tel: 33 1 44274529      Fax: 33 1 44273854
|> 

Good luck,

Tom McFarland
Newsgroups: comp.sys.hp