From: TomB on
Hello all,

The characters that should be available under third level shift
(mapped to "Alt Gr" on my keyboard) cannot be typed when running X.
In a ttyv they work just fine.

I read through the keyboard and kbdcontrol man pages a bit and came up
with the following setup:

In /etc/rc.conf I have included the line

keymap="be.iso.acc"

in order to load the be.iso.acc keymap on boot.

The line that defines e.g. the key with &, 1 and | has the following
entry in the be.iso.acc.kbd file:

# scan cntrl alt alt cntrl lock
# code base shift cntrl shift alt shift cntrl shift state
# ------------------------------------------------------------------

002 '&' '1' nop nop '|' '|' nop nop O

Looks correct to me.

When I check the key events with xev everything looks fine too; the
"Alt Gr" key is read as ISO 3rd-level shift, and pressing e.g. "Alt Gr"
and the "&" key is read out as the "|" character.

I've also added the following in my .login_conf file

me:\
:charset=iso-8859-1:\
:lang=en_US.ISO8859-1:

to make sure I'm using the iso-8859-1 charset. Without this I cannot
type characters such as � and � without using the compose key.

That's all I can come up with for now. I googled my *ss off, but to no
further avail.

Is there anything else I'm missing?

Thanks.

--
Mijnen deem, mijnen deem
Stoeng heelmaal vol exeem
~ Katastroof
From: Lars Eighner on
In our last episode,
<GIIqk.42314$Ft5.17949(a)newsfe29.ams2>,
the lovely and talented TomB
broadcast on comp.unix.bsd.freebsd.misc:

> Hello all,

> The characters that should be available under third level shift
> (mapped to "Alt Gr" on my keyboard) cannot be typed when running X.
> In a ttyv they work just fine.

> I read through the keyboard and kbdcontrol man pages a bit and came up
> with the following setup:

> In /etc/rc.conf I have included the line

> keymap="be.iso.acc"

> in order to load the be.iso.acc keymap on boot.

> The line that defines e.g. the key with &, 1 and | has the following
> entry in the be.iso.acc.kbd file:

> # scan cntrl alt alt cntrl lock
> # code base shift cntrl shift alt shift cntrl shift state
> # ------------------------------------------------------------------

> 002 '&' '1' nop nop '|' '|' nop nop O

> Looks correct to me.

Yes. But these keymaps are in /usr/share/syscons, right? Well,
that syscons is short for system console. Nothing you do here will
affect the keyboard in X - not even login terminals which may
seem in many respects like a tty, but are not.

> When I check the key events with xev everything looks fine too; the
> "Alt Gr" key is read as ISO 3rd-level shift, and pressing e.g. "Alt Gr"
> and the "&" key is read out as the "|" character.

> I've also added the following in my .login_conf file

> me:\
> :charset=iso-8859-1:\
> :lang=en_US.ISO8859-1:

> to make sure I'm using the iso-8859-1 charset. Without this I cannot
> type characters such as � and � without using the compose key.

> That's all I can come up with for now. I googled my *ss off, but to no
> further avail.

> Is there anything else I'm missing?

Yes. None of the above has anything to do with X.

X is not really a part of the BSD system. X is completely different
in order that it be more-or-less the same whether it runs on one
of the BSD flavors, Linux, or another sort-of-unix-like system.

You need to be looking at xmodmap.

--
Lars Eighner SAVE BEASTIE! "What do you do when you're debranded?"
usenet(a)larseighner.com http://larseighner.com/
Scott Adams is an optimist.
From: TomB on
On Wed, 20 Aug 2008 02:30:12 +0000, Lars Eighner wrote:

> In our last episode,
> <GIIqk.42314$Ft5.17949(a)newsfe29.ams2>,
> the lovely and talented TomB
> broadcast on comp.unix.bsd.freebsd.misc:
>
>> Hello all,
>
>> The characters that should be available under third level shift
>> (mapped to "Alt Gr" on my keyboard) cannot be typed when running X.
>> In a ttyv they work just fine.
>
>> I read through the keyboard and kbdcontrol man pages a bit and came up
>> with the following setup:
>
>> In /etc/rc.conf I have included the line
>
>> keymap="be.iso.acc"
>
>> in order to load the be.iso.acc keymap on boot.
>
>> The line that defines e.g. the key with &, 1 and | has the following
>> entry in the be.iso.acc.kbd file:
>
>> # scan cntrl alt alt cntrl lock
>> # code base shift cntrl shift alt shift cntrl shift state
>> # ------------------------------------------------------------------
>
>> 002 '&' '1' nop nop '|' '|' nop nop O
>
>> Looks correct to me.
>
> Yes. But these keymaps are in /usr/share/syscons, right? Well,
> that syscons is short for system console. Nothing you do here will
> affect the keyboard in X - not even login terminals which may
> seem in many respects like a tty, but are not.
>
>> When I check the key events with xev everything looks fine too; the
>> "Alt Gr" key is read as ISO 3rd-level shift, and pressing e.g. "Alt Gr"
>> and the "&" key is read out as the "|" character.
>
>> I've also added the following in my .login_conf file
>
>> me:\
>> :charset=iso-8859-1:\
>> :lang=en_US.ISO8859-1:
>
>> to make sure I'm using the iso-8859-1 charset. Without this I cannot
>> type characters such as � and � without using the compose key.
>
>> That's all I can come up with for now. I googled my *ss off, but to no
>> further avail.
>
>> Is there anything else I'm missing?
>
> Yes. None of the above has anything to do with X.
>
> X is not really a part of the BSD system. X is completely different
> in order that it be more-or-less the same whether it runs on one
> of the BSD flavors, Linux, or another sort-of-unix-like system.

Well, I normally use Debian, in which I define the keyboard layout for X
in the keyboard section of xorg.conf, such as

Section "InputDevice"
Identifier "Keyboard"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbRules" "xorg"
Option "XkbLayout" "be"
EndSection

I did the same for FreeBSD, and it does set the Belgian layout, but
without the accented characters such as � and �, and the 3rd level shift
characters such as | and #. The accented chars issue was fixed by adding
the lines I described earlier to .login_conf (so it *does* affect X in a
way), but I still can't get the 3rd level shift ones in X.

> You need to be looking at xmodmap

I do use xmodmap to remap some keys, but according to xev (which checks
for X events) the correct characters *are* generated, so there's no need
to remap them. Basically xev is the only program that gets e.g. an "@"
when "Alt Gr" "�" is pressed.

Anything else I can look at?

From: Lars Eighner on
In our last episode, <pan.2008.08.20.13.02.49.832059(a)gmail.com>, the lovely
and talented TomB broadcast on comp.unix.bsd.freebsd.misc:

> I do use xmodmap to remap some keys, but according to xev (which checks
> for X events) the correct characters *are* generated, so there's no need
> to remap them. Basically xev is the only program that gets e.g. an "@"
> when "Alt Gr" "�" is pressed.

> Anything else I can look at?

Look at the application. Some seem to access the keyboard at a lower level.

Also, this seems a little obvious: prepare a few lines in the application,
save it, and open it in a binary editor or a text editor that will tell you
the character codes. The application may actually be getting the correct
characters in the document, but you do not see them correctly because the
application is using a wrong font.

--
Lars Eighner SAVE BEASTIE! "What do you do when you're debranded?"
usenet(a)larseighner.com http://larseighner.com/
TIP: To tweak a port or read the distribution information before you make,
use #make extract to unpack the distribution file.
From: TomB on
On 2008-08-20, TomB wrote:
> On Wed, 20 Aug 2008 02:30:12 +0000, Lars Eighner wrote:

>> You need to be looking at xmodmap
>
> I do use xmodmap to remap some keys, but according to xev (which checks
> for X events) the correct characters *are* generated, so there's no need
> to remap them. Basically xev is the only program that gets e.g. an "@"
> when "Alt Gr" "�" is pressed.

Using xmodmap was where it went wrong. I call it from my .xinitrc, and
when I comment it out and log in to X again, the 3rd level shift chars
work fine. Calling xmodmap manually from a terminal at that point sets
my desired keyswapping, *without* breaking the 3rd level shift chars.

Can anyone shed a light on this one?

--
Attempted murder, now honestly, what is that? Do they give a
Nobel Prize for attempted chemistry?
~ Sideshow Bob