Name     «Computing»   «Home»   «Map&Rev»

 

A mnemonic IPA keyboard layout

I needed an IPA keyboard overlay in the late 2000s to punch in a fairly large amount of text. I thought of followiing a standard. I came across «Mark Huckvale's overlay». I requested his permission to use the layout for Linux in April 2009. He wrote: ‘I would be quite happy for you to copy the Unicode Phonetic keyboard layout for Linux. I would be very happy to try it out on my Ubuntu system if that is possible.’

I finished the job and sent a copy to Huckvale with steps for installation. Huckvale’s map is not all-inclusive and at least I needed the superscript hooked h ([ʱ]) to write the sounds of the Bengali langauge. So I replaced the number sign &mdas; or hash, pound or even octothorp as it iis called — in Huckvale's map with the superscript hooked h. Huckvale’s is a three-tier mapping (Click on the picture for a bigger file, png, 80kB). In Huckvale’s all AltGr+Shift positions that remain empty could hold many other characters left out.

I then designed this all-inclusive IPA keyboard, with the symbols mnemonically placed on the Qwerty map. For get going, the code, or symbol file, should be copied into a file named xipa and be put in the /usr/local/share/X11/xkb/symbols directory on FreeBSD.

IPA keyboard layout
Right-click to Save Image As the layout.

// IPA keyboard layout // based on nemonics // abu jar m akkas // ajm.akkas@gmail.com, 2013 partial default alphanumeric_keys xkb_symbols "xipalph" { name[Group1]= "English (Xipalph)"; key &l7;TLDE> { [ 0x1000303, 0x1000330, 0x1000334, 0x100031A ] }; key &l7;AE01> { [ 0x10002DE, 0x10001C3, 0x10001C0, 0x10001C1 ] }; key &l7;AE02> { [ 0x100031E, 0x100031D, 0x1000319, 0x1000318 ] }; key &l7;AE03> { [ 0x1000258, 0x100025E, 0x100025A, 0x100025D ] }; key &l7;AE04> { [ 0x1000281, 0x1000280, 0x100027B, 0x100027A ] }; key &l7;AE05> { [ 0x100030B, 0x100030F, 0x1000301, 0x1000300 ] }; key &l7;AE06> { [ 0x10002E5, 0x10002E6, 0x10002E8, 0x10002E9 ] }; key &l7;AE07> { [ 0x1000304, 0x10002E7, 0x10002A7, 0x10002A4 ] }; key &l7;AE08> { [ 0x1002193, 0x1002191, 0x10002D5, 0x10002D4 ] }; key &l7;AE09> { [ 0x100031C, 0x100030A, 0x100032C, 0x1001DA3 ] }; key &l7;AE10> { [ 0x1000339, 0x1000325, 0x1000302, 0x1001D4A ] }; key &l7;AE11> { [ 0x1000320, 0x100030C, 0x10002B4, 0x10002B3 ] }; key &l7;AE12> { [ 0x100031F, 0x100033D, 0x100033B, 0x10001C2 ] }; // row above home row key &l7;AD01> { [ q, 0x10000E6, 0x1000153, 0x1000276 ] }; key &l7;AD02> { [ w, 0x100028D, 0x10002B7, 0x100033C ] }; key &l7;AD03> { [ e, 0x1000259, 0x100025B, 0x100025C ] }; key &l7;AD04> { [ r, 0x1000279, 0x100027D, 0x100027E ] }; key &l7;AD05> { [ t, 0x10003B8, 0x1000288, 0x1000237 ] }; key &l7;AD06> { [ y, 0x100028E, 0x1000264, 0x100028F ] }; key &l7;AD07> { [ u, 0x100028A, 0x1000289, 0x10002E0 ] }; key &l7;AD08> { [ i, 0x100026A, 0x1000268, 0x1000329 ] }; key &l7;AD09> { [ o, 0x1000254, 0x10000F8, 0x1000275 ] }; key &l7;AD10> { [ p, 0x1000298, 0x100207F, 0x10002E1 ] }; key &l7;AD11> { [ bracketleft, 0x100032A, 0x10002B0, 0x1000294 ] }; key &l7;AD12> { [ bracketright, 0x100033A, 0x10002B1, 0x1000131 ] }; //home row key &l7;AC01> { [ a, 0x1000251, 0x1000252, 0x1000250 ] }; key &l7;AC02> { [ s, 0x1000283, 0x1000282, asterisk ] }; key &l7;AC03> { [ d, 0x10000F0, 0x1000256, 0x1000257 ] }; key &l7;AC04> { [ f, 0x1000278, 0x1000284, 0x100029B ] }; key &l7;AC05> { [ 0x1000261, 0x1000263, 0x1000262, 0x1000260 ] }; key &l7;AC06> { [ h, 0x1000266, 0x1000265, 0x1000127 ] }; key &l7;AC07> { [ j, 0x100025F, 0x100029D, 0x10002B2 ] }; key &l7;AC08> { [ k, 0x100026E, 0x100029F, 0x1000274 ] }; key &l7;AC09> { [ l, 0x100026B, 0x100026C, 0x100026D ] }; key &l7;AC10> { [ 0x10002D0, 0x10002D1, 0x1000306, 0x1000308 ] }; key &l7;AC11> { [ 0x10002C8, 0x10002CC, 0x100032F, 0x1000324 ] }; key &l7;BKSL> { [ 0x100A71B, 0x1002197, 0x100A71C, 0x1002198 ] }; // row below home row key &l7;AB01> { [ z, 0x1000292, 0x1000290, 0x1000291 ] }; key &l7;AB02> { [ x, 0x10003C7, 0x100029C, 0x1000267 ] }; key &l7;AB03> { [ c, 0x10000E7, 0x1000255, 0x100203F ] }; key &l7;AB04> { [ v, 0x100028C, 0x100028B, 0x1002C71 ] }; key &l7;AB05> { [ b, 0x10003B2, 0x1000253, 0x1000299 ] }; key &l7;AB06> { [ n, 0x100014B, 0x1000272, 0x1000273 ] }; key &l7;AB07> { [ m, 0x100026F, 0x1000271, 0x1000270 ] }; key &l7;AB08> { [ bar, 0x10002BC, 0x1000361, 0x10002A2 ] }; key &l7;AB09> { [ 0x1002016, period, 0x100035C, 0x10002A1 ] }; key &l7;AB10> { [ slash, question, 0x1000295, 0x10002E4 ] }; modifier_map Shift { Shift_L, Shift_R }; include "level3(ralt_switch_multikey)" };

FreeBSD

The code snippet below should be added to the gb file for the country Great Britain. It could also be added to the us file, but as Unix/Linux does not allow four layouts at a time, it is good to associate the IPA layout with the UK layout so that the US layout could dominantly be used. If users want the UK layout to be dominant, it is good to associate the IPA layout with the US layout or the us file.


// xipa addition xkb_symbols "xipal" { include "xipa(xipalph)" name[Group1]= "English (Xipalph)"; };

The keyboard layout needs to be listed in base.lst and evdev.lst files, by adding the following snippet to both the files.


xipal uk: English (Xipalph)

The next step is to update both the base.xml and the evdev.xml file with the following snippet inserted between <variantList> and </variantList> in the <name>gb</name> section of the <layout>.


<variant> <configItem> <name>xipal</name> <description>English (Xipalph)</description> </configItem> </variant>

I needed to install ‘Keyboard layout switching plugin for the Xfce panel’ (xfce4-xkb-plugin-0.8.2_1) to switch between keyboards loaded, four at a time.

 

Revised: i·xi·mmxxii