Bug 228588 - [patch] add keymap file to provide Irish language support
Summary: [patch] add keymap file to provide Irish language support
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-bugs mailing list
URL:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2018-05-29 12:50 UTC by Micil
Modified: 2018-06-02 19:07 UTC (History)
1 user (show)

See Also:


Attachments
Keymap file to provide Irish language support (8.56 KB, text/plain)
2018-05-29 12:50 UTC, Micil
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Micil 2018-05-29 12:50:28 UTC
Created attachment 193812 [details]
Keymap file to provide Irish language support

Hello. I'm new to the FreeBSD community. I've read the rules but please be understanding if I accidentally break any :)

I needed an Irish language keymap for use in the vt console but, as far as I can tell, FreeBSD doesn't have one so I made my own and I offer it here as a patch.

Basically, I took the uk.kbd keymap as a starting point and 'overlayed' Irish mappings, following those used in the Irish keyboard layout of X.Org. I took this approach for cross-*nix consistency; also for internal consistency with X.Org installs on FreeBSD. For the same reason, I moved the Euro symbol from Alt Gr + e to Alt Gr + 4. I did make _one_ unique tweak: I added a mapping (Shift + Alt Gr + spacebar) for the non-breaking hyphen, which is typographically very useful in Irish.

I'd wanted to fully-emulate the Irish X.Org keyboard layout but I couldn't get a lot (most?) of its dead keys to work so I settled for a 'basic' layout that supports a working subset of X.Org's Irish modifier key mappings and also accent/deadkey mappings for the grave accent. This subset includes all the linguistic essentials for Irish and, because of the grave accent key mappings, also provides support for Scottish Gaelic, which is closely-related to Irish.

I can see no reason why this keymap shouldn't be perfectly usable to any Irish (or even UK) user working in English. All the commonly-used characters have been left exactly where you'd expect to find them on an Irish- or UK English keyboard.

I've tested this keymap over the past month and a half and it seems to work fine - but with two caveats:

1. I have non-breaking space (again, typographically very useful) mapped to Alt Gr + spacebar but I can't get it to work at all: you press the key combination but nothing happens. This is the only mapping that doesn't result in the correct character being entered.

2. Several of the Irish characters lack glyph support in the 'native' console fonts available to vt, and you only get an unknown-glyph square - or an ampty space, depending on the font - when you enter them. I tested to make sure it _was_ just a matter of glyph support by taking a Unifont .bdf file, feeding it to vtfontcvt to make a vt-compatible .fnt file and then running vidcontrol -f to load it. All characters _except_ non-breaking space then rendered perfectly.

(I've also created an Irish locale (ga_IE.UTF-8) for vt but that's really a different matter so I've offered it as a separate patch (228587).)
Comment 1 Ed Maste freebsd_committer 2018-05-31 13:13:53 UTC
(In reply to Micil from comment #0)
> Several of the Irish characters lack glyph support in the 'native' console fonts

Would you be able to enumerate the missing code points?
Comment 2 Micil 2018-05-31 16:00:03 UTC
(In reply to Ed Maste from comment #1)

> Would you be able to enumerate the missing code points?

Sure:

Tironian sign et (U+204A) (⁊)

Latin small letter r with long leg (U+027C) (ɼ)

Latin small letter long s with dot above (U+1E9B) (ẛ) (see note below)

Approximately equal to (U+2245) (≅)

Latin capital letter b with dot above (U+1E02) (Ḃ)

Latin small letter b with dot above (U+1E03) (ḃ)

Latin capital letter d with dot above (U+1E0A) (Ḋ)

Latin small letter d with dot above (U+1E0B) (ḋ)

Latin capital letter f with dot above (U+1E1E) (Ḟ)

Latin small letter f with dot above (U+1E1F) (ḟ)

Latin capital letter m with dot above (U+1E40) (Ṁ)

Latin small letter m with dot above (U+1E41) (ṁ)

Latin capital letter p with dot above (U+1E56) (Ṗ)

Latin small letter p with dot above (U+1E57) (ṗ)

Latin capital letter s with dot above (U+1E60) (Ṡ)

Latin small letter s with dot above (U+1E61) (ṡ)

Latin capital letter t with dot above (U+1E6A) (Ṫ)

Latin small letter t with dot above (U+1E6B) (ṫ)


Note: Latin small letter long s _without_ dot above (U+017F) already works fine (11.1-RELEASE-p8).
Comment 3 Micil 2018-06-02 19:07:30 UTC
Oops. Forgot to paste this, abstracted from the kbd file; notes in square brackets at the end of each line:

008   '7'    '&'    nop    nop    182    8266   esc    esc O [8266 = ⁊]
019   'r'    'R'    dc2    dc2    636    174    dc2    dc2 C [636 = ɼ]
020   't'    'T'    dc4    dc4    7787   7786   dc4    dc4 C [7787 = ṫ; 7786 = Ṫ]
025   'p'    'P'    dle    dle    7767   7766   dle    dle C [7767 = ṗ; 7766 = Ṗ]
031   's'    'S'    dc3    dc3    7777   7776   dc3    dc3 C [7777 = ṡ; 7776 = Ṡ]
032   'd'    'D'    eot    eot    7691   7690   eot    eot C [7691 = ḋ; 7690 = Ḋ]
033   'f'    'F'    ack    ack    7711   7710   ack    ack C [7711 = ḟ; 7710 = Ḟ]
044   'z'    'Z'    sub    sub    383    7835   sub    sub C [7835 = ẛ]
045   'x'    'X'    can    can    215    8773   can    can C [8773 = ≅]
048   'b'    'B'    stx    stx    7683   7682   stx    stx C [7683 = ḃ; 7682 = Ḃ]
050   'm'    'M'    cr     cr     7745   7744   cr     cr  C [7745 = ṁ; 7744 = Ṁ]