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).)
(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?
(In reply to Ed Maste from comment #1)
> Would you be able to enumerate the missing code points?
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).
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 = Ṁ]