Some laptop Fn key combinations are multimedia keys (appearing to the OS as ordinary keys with nonstandard codes), while others trigger ACPI events that eventually reach the OS, and some are just handled by the BIOS and never seen by the OS. The information paths are explained on the Hotkeys/Architecture page on the Ubuntu wiki, complete with diagrams.
The KeyTouch program should handle anything that is seen by the OS, and has a friendly GUI for describing your model and configuring what the keys should do (install the keytouch-editor
package as well as keytouch
).
If the OS can't see anything when you press the brightness keys, it could be because they're handled directly by the BIOS. The battle is not completely lost — it is in principle possible to hack the BIOS — but the difficulty level is considerably raised.
Ok, yet another try, this one will do the trick I hope... ;)
Credits are due to reverendj1, who described a way of assigning a Custom key to toggle keyboard layout, using setxkbmap, which featured in the workaround alluded to in Edit 2 of my previous answer...
Here is the slightly more involved way, but will give you more
flexibility for the key combination. First, copy and paste this script
I wrote and name it something like kb_toggle.sh. Make sure to edit
LANG1 and LANG2 to be the keyboard layout codes you need.
#!/bin/bash
LANG1="us"
LANG2="de"
CURRENT_LANG=$(setxkbmap -query | tail -n 1 | cut -f6 -d ' ')
if [ "$CURRENT_LANG" = $LANG1 ]; then
setxkbmap $LANG2
else
setxkbmap $LANG1
fi
make the file by right-clicking on it -> "Properties" -> "Permissions"
tab, then select "Allow executing file as program.
Now, open "System Settings" -> "Keyboard" -> "Shortcuts" tab and
select "Custom Shortcuts". Click the + button on the bottom and name
the shortcut "Keyboard Toggle" or whatever you want, really. Then give
the full path to the script you made earlier in the command box. Hit
Apply. Click where it says "Disabled" then you can set the shortcut to
whatever you want by clicking your key combination!
I think you'd need to change "de"
to "ir"
.
Again, good luck!
Edit
You may even get away with a one-liner, if you prefer:
setxkbmap us,ir -option "grp:alt_shift_toggle"
Now you can switch by pressing alt+shift
See also http://wiki.lxde.org/en/Change_keyboard_layouts and http://www.x.org/releases/X11R7.7/doc/man/man1/setxkbmap.1.xhtml
Edit 2
Depending on how you decide to achieve your goal, you may want to include lv3:ralt_alt
in your command, resulting in
setxkbmap us,ir -option "lv3:ralt_alt,grp:alt_shift_toggle"
See man xkeyboard-config | grep lv3
for details:
lv3:ralt_alt
Right Alt key never chooses 3rd level
xkeyboard-config provides the description files for the X Keyboard Extension (XKB). The configuration options below are
usually applied with setxkbmap(1).
Best Answer
I found the solution here
and these changes did what I wanted. Now I can use the directions and numbers without moving my hands position.
First, run
xev
and press the keys to find their keycodes.Create a script with the following:
Give the script execution permissions with
To make this permanent, add this command to the startup applications: