|
|
Hotkeys / Keyboard Quick Launch Keys In Linux | ||
Discussion by intrepid with 6 Replies.
Last Update: December 3, 2009, 11:07 am | |||
![]() |
|
|
Having spent ages wishing the hotkeys on my laptop would work, I spent most of an afternoon looking into it. Since no site I found explained it satisfactorily, here's my method...
The first step is to find out which of the keys are registered by the kernel, and what their keycodes are (the unique event number that they cause). To do this you need a program called xev, (in Mandrake this is part of X11R6-contrib, is installed by default in Slack, and should be easy to find for other distros). From the terminal, in a graphical interface, type xev to launch it, move the mouse over the new window and press the hotkeys. What appears in the terminal is something like
CODE
KeyPress event, serial 28, synthetic NO, window 0x2c00001,root 0xb5, subw 0x2c00002, time 3593153, (55,38), root:(730,82),
state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes: ""
The "keycode" (in this case 64) is the important part. The next is to make the keycode actually do something when X registers it. For this you need to run xmodmap to modify the keyboard map. A small script in the ~/.kde/Autostart folder (or similar for other desktops) means this will be done each time KDE is stated. I wanted key 176 to increase the system volume, and 174 to decrease it, so the script reads
CODE
xmodmap -e 'keycode 174=F21' #voldownxmodmap -e 'keycode 176=F22' #volup
Don't forget to make this executable. Run this script, re-run xev and you should now see, for example, F22 or F21 in the even notification.
The final step is to make F21 or F22 (or whatever you called your keys) actually do something useful. You can do this using the existing shortcut options (if you wish it to start an application), or you can use the program xbindkeys, here - http://hocwp.free.fr/xbindkeys/xbindkeys.html . This program links key events to bash commands, very easily.
The script in the KDE Autostart folder can then be modified to launch xbindkeys when KDE is launched, and the file ~/.xbindkeysrc modified to link the key events to the desired bash commands. I used dcop (the inter-program communication process) to tell kmix (the default KDE mixer) to increase/decrease the master volume (channel 0) whenever the relevant keys were pressed. Below is the complete file ~/.kde/Autostart/keycodes (MUST be executable):
CODE
#!/bin/sh#file to map special keys.
#File location: ~/.kde/Autostart
#File Name:keycodes
xmodmap -e 'keycode 174=F21' #voldown
xmodmap -e 'keycode 176=F22' #volup
#Open kmix to allow xbindkeys to work:
kmix
#Open xbindkeys to link keys to applications:
xbindkeys
and the few lines I had to add to ~/.xbindkeysrc:
Code:
#Volume decrease
"dcop kmix Mixer0 decreaseVolume 0"
F21
#Volume increase
"dcop kmix Mixer0 increaseVolume 0"
F22
Hopefully this will help people make their keyboards more useful. If anyone has any further suggestions, or knows of obvious or important differences between desktop environments, please post them below. However it should be relatively distro/desktop independent.
I'll be looking back to this when I get a keyboard with hotkeys.
That happened to me a few times at school once.
Even if your keyboard doesn't have hotkeys, the F1 (Help) button can be annoying when you're reaching for the F2 (Rename) button.
-reply by physlord
Hotkeys / Keyboard Quick Launch Keys In Linux
Is it possible to listen to those keystrokes, keep them in a buffer, and setup hotkeys, then have a "fire" key that actually launches programs? Ideally then if you type in the say "ff[tab]" firefox would open, etc.
-reply by joseph
In KDE4, at least under OpenSuSE 11.2, the directory for autostart is actually ~/.Kde4/Autostart
-reply by Jessica Tanenhaus
Similar Topics:
Using Ntloader To Boot Linux
I Am Planning To Use Linux What Sho...
Which Linux?
Using Ntloader To Boot Linux Win2K or XP, should work with most Linux (3)
|
(9) Howto: Domain Name Server On Linux DNS for your Intranet (or Internet) Serv
|
HOME 






