How to share two keyboard on the same laptop, french iso layout and usa ansi layout keyboard with usb?

I recently bought a "noppoo choc mini" with this specific ANSI US-INTERNATIONAL pc84 layout

This specific keyboard only has 84 keys, a 60% (compact tenkeyless) reduced layout.

My problem is simple, there is no keyboard layout into Ubuntu 12.04 which corresponds to this English, US keyboard layout ... so it's the same problem with the reduced version and only 84 keys...

I searched for a template of a normal ANSI US-INTERNATIONAL for xmodmap/xkb, and after that I ccould try to manually map the other keys. I searched on Google, but I couldn't find any other user which has the same problem.

Edit 1 :

Here you can see there is probably a bug in Ubuntu, because the layout for USA with dead key is not correct !

I have this now.

And other users have this for the same layout:

EDIT 2

It seems after a "sudo dpkg-reconfigure keyboard-configuration" : french standard keyboard pc105 + precision M65 keyboard from dell laptop

Now I can see the good US layout in the parameters, but I cannot choose the iso layout for French usage...

EDIT 3

Ok, I'll explain the problem a bit better: I have one laptop with an integrated French keyboard, and I want to use my USB keyboard to use an English, US layout.

It seem it's impossible in Ubuntu and "dpkg-reconfigure keyboard-configuration" to share two different physical layout (ANSI and EU ISO) on the same computer ...

EDIT4

Ok, it seems I can switch the physical layout (ISO <-> ANSI) with this command in the terminal:

setxkbmap -layout us
setxkbmap -layout us -variant alt-intl

an

setxkbmap -layout fr 

It's very complicated and it seem Ubuntu 12.04 still has a problem with the keyboard manager because all works great with these two commands, but that doesn't change anything in the System parametersKeyboard !!!

Secondly: The image of the layout for FR is buggy, the layout is not ISO, but I can press on the key < > at the left of right Shift without any problem! You can see the image here (french alternative with ANSI layout ? it's crazy ?) :

Can you help me on this point ? I'm lost with xkb, and manual mapping is very complicated ...


Solution 1:

I may not have a lot of experience with coding, software engineering or even with linux systems, but i do know one thing: a computer, no matter what system it uses, is mostly based on the human brain.

Now i know it's possible for a brain (and a computer) to learn 2 languages side-by-side, but what you're asking of the pc is a bit different. You're not asking it to use two languages side-by-side, you're asking it to use those two languages simultaniously, so basically to consider 2 outputs for a single input, and let the computer choose which one to use.

On itself, this shouldn't be too much of an issue, if it weren't for the fact that this translation process takes place within the software, rather than in the keyboard, making it (near) impossible for the computer to know which one to use. For instance (not entirely sure about the specific layout of the fr-iso keyboard, so forgive me if this is exaggerated) you could type the 'Q' key on the USB-keyboard, but the computer would have to interpret it as "'Q' or 'A'". Now yóu know you typed a Q, but all the computer knows is that you typed in a specific key with multiple translations. Which is where the keyboard settings come into action.

Using the keyboard layout setting, you tell your computer how to interpret your keystrokes. So you basically tell it what dictionary to use for that keyboard. If you want to use the other keyboard, you should set the dictionary to the appropriate language, or the computer might misinterpret your keystrokes, causing it to think you're still using the standard (fr-iso) keyboard, where you àctually want it to use the en-us dictionary. I would compare it with speaking spanish while in portugal: they mostly know what you mean, but some things just don't make sense due to semantic differences.

So, long story short: simultanious use is impossible, unless both keyboards have the ability to automatically tell the computer which layout to use. Imo, your best bet would be to set up shortcuts or scripts to easily change the keyboard settings (like Windows uses the Left-ctrl + Left-shift combination). However, to make sure this happens correctly, it ís recommended to manually map your keys (the only one who knows the correct interpretation for sure is you), and maybe find a way to export this mapping for easy use within either a script or application for ease of changing the layouts. (Like i said, no experience in coding, so although i assume there's a way, i'm not the person to know that way: comments would be welcome)

Hope it helps

Solution 2:

AFAIK you cannot have two different input layouts at the same time in a non-custom graphics environment; and it is not worth the time to make it receive two inputs with different layouts, just because you can workaround the issue with a shortcut. (Maybe i'm wrong and you can do it editing files for the X server, but nowadays we don't get used to edit those files, but you can try)

That small keyboard will work very well with an US International layout, decide if you want dead keys, alt gr dead keys or any variant.

Just set a shortcut to be able to change between US Int and Fr keyboards and press the shortcut before using each one. It depends on your desktop environment.

As a final note, i find the idea of using two keyboards too demanding for the user. In my personal experience i finally decided to use the US Int keyboard layout in every PC i use, just because it works for everything, i was able to input english, spanish, portuguese, japanese and simplified chinese without needing to learn more than one keyboard layout. Keep in mind that the hard part to memorize on the keyboards are not the alphabet characters, but the punctuation characters, and that's why you'll end deciding to use just one keyboard. Before the US Int layout i was comfortable with the Spanish Spain layout, because i just needed to write in spanish and english at the time (with very few words from portuguese and french).