All posts by Klaus

Engineering Manager working for IBM Linux Technology Center since 2006, I am responsible for PowerLinux IO Development and Performance work, so most of my blogging content "may" gravitate towards that. But I'm also involved and interested in IBM PureSystems, Open Virtualization (KVM), Big Data (Hadoop) and other topics in which IBM, through it's Linux Technology Center, may be involved with. And I'm passionate about politics, technology and business, so sometimes I probably won't be able to avoid being acid with my polemic opinions. All opinions, data and conclusions here are my own, some of them with little to no basis on reality (consider them "artistic work of fiction") and should NEVER be considered as positions from my employer.

Cedilla (ç) symbol using American Keyboards in Linux

Disclaimer: this article refers to using Linux with an American keyboard to type Portuguese (pt-br) text, using the ‘us-intl’ keyboard layout.

One of the things that bothered me when upgrading between Ubuntu versions a while back (Feisty for Gutsy? Hardy? I can’t remember) is the changed behavior for inputting the Cedilla ‘ç’ symbol using American keyboards.

Ok, in fact, this behavior changed twice over the time, so I can remember at least three ways of doing that:

  1. Press the the single-quote (‘) key, then letter ‘c’ (' then c). In the us-intl keyboard layout, the single quote is a dead-key commonly used to insert an acute sign over vowels: á, é, í, ó, ú. Pressing the single-quote twice produces the single quote itself. A few years ago, the Cedilla sign was inputted by combining the single-quote dead key with the letter ‘c’ itself. This behavior changed: now, ' then c produces ć – maybe to support languages that require this symbol (after all we’re abusing the us-international layout) or simply a question of consistency.
  2. Combining the Right-Alt key with the comma (,) symbol (Ralt+,). After the change in the above item was introduced, the us-intl layout was tuned to allow many other types of symbols (Can you say UTF-8?). The Right-Alt key came to be what is called a Level-3 modifier (that is, a key modifier that works just like Shift, Ctrl and Alt/Meta – that is not a dead-key). With this modifier, one could produce several other symbols commonly used in western languages other than English itself, i.e.: ¡, ß, æ, ñ, ø etc. Also, the Level-3 modifier also allow us to input commonly used symbols that are outside the English alphabet: ², ³, ©, ®, ¢, § etc.
  3. Combining Right-Alt with the comma (,) symbol as dead-key, then pressing letter ‘c’ (Ralt+, then c). This is the the behavior introduced with newer versions of the us-intl keyboard layout. Just like before, you use the Right-Alt key as a Level-3 modifier, but instead of inserting the symbol directly, this key combination acts like a dead-key, waiting for the next key-press to determine what symbol is being inputted. In fact, this behavior was introduced with the ‘alt-intl’ layout which is said to mimic the previous behavior of us-intl (first item above) – well, at least for me it doesn’t exactly mimics the former behavior, and I personally prefer the second option.

Choosing between the second and the third options above is pretty straightforward if you’re using a relatively recent Linux distribution with Gnome 2.x and Xorg. Just use gnome-keyboard-properties to choose between USA International (with dead keys) or USA Alternative International (former us_intl) for the behavior found in item 2 and 3 above respectively. You can also have both configured and change between layouts using the Keyboard Indicator gnome applet:

gnome-keyboard-properties screenshot
gnome-keyboard-properties screenshot

In case you are not using Gnome and prefer to configure it directly in Xorg’s configuration, edit the InputDevice section at the X.org server configuration file, usually /etc/X11/xorg.conf, to look like below:

  • Cedilla not as dead-key (behavior 2 above):
    Section "InputDevice"
    	Identifier	"Generic Keyboard"
    	Driver		"kbd"
    	Option		"XkbRules"	"xorg"
    	Option		"XkbModel"	"pc105"
    	Option		"XkbLayout"	"us"
    	Option		"XkbVariant"	"intl"
    #	Option		"XkbOptions"	"lv3:ralt_switch"
    EndSection
  • Cedilla as dead-key (behavior 3 above):
    Section "InputDevice"
    	Identifier	"Generic Keyboard"
    	Driver		"kbd"
    	Option		"XkbRules"	"xorg"
    	Option		"XkbModel"	"pc105"
    	Option		"XkbLayout"	"us"
    	Option		"XkbVariant"	"alt-intl"
    #	Option		"XkbOptions"	"lv3:ralt_switch"
    EndSection

The line with “XkbOptions” “lv3:ralt_switch” was indifferent to (at least) the Cedilla behavior, thus I commented it (I have a feeling that the ralt_switch behavior is included anyway for both variants).

Troubleshooting

If even after doing the above you can’t get the desired behavior, check the following:

  • Your window manager configuration usually precedes your X server configuration – That is, if you configured your keyboard layout using Gnome or KDE tools, the settings in your xorg.conf are probably being ignored. Within gnome, you can use gconf-editor and browse to /desktop/gnome/peripherals/keyboard/kdb to check the current effective configuration. Leave a comment if you know how to override this.
  • Your X server may have been automagically configured by HAL and friends. You can check that by opening the X server log (usually /var/log/Xorg.0.log) and looking for the evdev module. There should be a couple of messages showing which model/layout/variant was chosen:
    (**) Option "xkb_rules" "evdev"
    (**) AT Translated Set 2 keyboard: xkb_rules: "evdev"
    (**) Option "xkb_model" "pc102"
    (**) AT Translated Set 2 keyboard: xkb_model: "pc102"
    (**) Option "xkb_layout" "us"
    (**) AT Translated Set 2 keyboard: xkb_layout: "us"
    (**) Option "xkb_variant" "alt-intl"
    (**) AT Translated Set 2 keyboard: xkb_variant: "alt-intl"
    (**) Option "xkb_options" "lv3:ralt_switch"
    (**) AT Translated Set 2 keyboard: xkb_options: "lv3:ralt_switch"

    In this case, you can either:

    • Disable auto-detection from the X.org side, adding an “AutoAddDevices” “off” option to your ServerLayout section (at the xorg.conf file):
      Section "ServerLayout"
      	Identifier	"Default Layout"
      	Screen		"Default Screen"
      	InputDevice	"Synaptics Touchpad"
      	Option		"AutoAddDevices" "off"
      EndSection
    • Create a policy at the HAL side, by creating a .fdi file, e.g.: /etc/hal/fdi/policy/10-keyboard.fdi, that reads:
      <?xml version="1.0" encoding="UTF-8"?>
        <deviceinfo version="0.2">
          <device>
            <match key="info.capabilities" contains="input.keys">
              <merge key="input.x11_options.XkbVariant" type="string">intl</merge>
              <merge key="input.xkb.variant" type="string">intl</merge>
            </match>
          </device>
        </deviceinfo>

      (Change the variant from intl for alt-intl according to your choice). Remember to restart the HAL daemon (hald) for the changes to take effect

  • More information about HAL and the evdev module can be found at this blog post.

I hope this post was useful to shed some light into this (somewhat common) problem among pt-br users that don’t necessarily use Brazilian keyboards or run their systems in that locale. Leave a comment if you find this post useful, have questions, comments, corrections, anything 😉

-Klaus

First post from new iPod’s WordPress App

Just found out a minute or two ago that the (relatively) long-awaited WordPress.app has arrived to the Apple AppStore – for free, of course.
So, at the risk of being yet another (empty) article in the blogosphere doing the same exact thing, here I am reporting this fact directly from my iPod touch, of course 🙂
(Not sure if anything changed in the 2.0 firmaware when it comes to using the on-screen touch keyboard, but it just occurred to me that I’m typing pretty fast now)

iPod [Touch|Phone] 2.0 firmware and LEAP

Woohoo! Altough I couldn’t find any official (or even unofficial) links at the moment, I can safely say that the new Touch 2.0 firmware now supports LEAP Authentication! I got it working  by accident on my company’s wireless network which exclusively supports LEAP authentication.

There are a few gotchas, though. When configuring your wireless connection, it seems that there’s no LEAP option shown at the list of security mechanism. And in my case, my company’s wireless SSID is hidden by default (although I can see it in my NetworkManager’s list of wireless networks). So what worked for me was:

  • Go to your Wi-Fi Networks settings at Settings->Wi-fi.
  • Choose Other Network
  • Enter your network’s SSID and choose None security, and Join
  • The iPod then should bind with the wireless network (you would be able see the wireless strength and a check besides the network’s SSID), although you can’t browse (no IP address configuration, for instance)
  • Go to the Wi-Fi Networks page again and simply click the network’s SSID (even if it’s shows as connected)
  • A username/password dialog should appear. Enter your data and voilá, you are connected through LEAP in your iPod touch.

The authentication data is stored as far as I can tell, so you shouldn’t need to do that again unless you change your password.

I hope the LEAP-not-showing-as-wifi-security-choice in the new iPod touch is a minor GUI glitch that hopefully will be solved by the next minor release of the firmware. Leave a line if you know where can we provide feedback to Apple about this. Also please comment if this is working for you or not (I have tested in at least two iPod touch/phones from my co-workers, but you see, we all are in the same environment here).

-Klaus