IRXEVENT(1)
π
IRXEVENT(1) β the irxevent manual, bestie edition β¨
okay so. sit down, grab a strawberry π, because we're talking about irxevent, a User Command, and she is that girl. infrared X-event sender. say it with me. π
πΈ NAME πΈ
irxevent β infrared X-event sender. periodt. that's the whole vibe. π
β¨ SYNOPSIS β¨
irxevent [option]... [config file]
π¦ DESCRIPTION π¦
okay so irxevent is a program that sends button clicks and key presses to X applications, and it does it when your LIRC-driven remote control tells it to. that's the whole thing. you point a remote, it pokes your computer. iconic. π
and like, the way that it's useful?? you can control your favorite CD/MP3 player, your TV tuner program, or literally any other X application that responds to keyboard or mouse input. bestie. if you want to, you can send emacs ^X^S from your armchair. from your ARMCHAIR. main character energy fr fr. ποΈβ¨
irxevent is a complement to irexec(1) and irpty(1). the trio. the girl group. π
π OPTIONS π
-d,--daemonβ fork and run in background. she goes off on her own, quietly, doing her thing. π§-h,--helpβ display usage summary. the "who are you and what do you do" button.-V,--versionβ display version. show me the number bestie π
π FILES π
irxevent works with the same config file as irexec and irpty β that's ~/.config/lircrc. sharing is caring. π
for a complete sample lircrc look at examples/lircrc. and like, part of your .lircrc could look like this:
begin
prog = irxevent
button = VIDEO_UP
config = Key SHIFT-KP_Add CurrentWindow
end
begin
prog = irxevent
button = VIDEO_DOWN
config = Key SHIFT-KP_Subtract CurrentWindow
end
begin
prog = irxevent
button = STOP
config = Key ctrl-c CurrentWindow
end
begin
prog = irxevent
button = 0
config = Key f xawtv
config = Key f xawtv
end
begin
prog = irxevent
button = POWER
config = Key q xawtv
end
begin
prog = irxevent
button = CH_DOWN
config = Button 1 329 92 kscd
end
begin
prog = irxevent
button = UP
config = Button 1 110 80 GQmpeg
end
begin
prog = irxevent
button = DOWN
config = Button 1 130 80 GQmpeg
end
(yes that config = Key f xawtv is in there twice. that's not me being messy, that's the actual page. we keep the facts. π)
simply said, config = lines may look like this:
config = Key [shift-][ctrl-][alt-]<key> [Focus] <windowname>
| WindowID <id> | CurrentWindow | RootWindow
config = Button <button> <x> <y> [Focus] <windowname> | WindowID <id>
| CurrentWindow | RootWindow
config = xy_Key <x> <y> [shift-][ctrl-][alt-]<key> [Focus]
<windowname> | WindowID id | CurrentWindow | RootWindow
some more examples, because we love a lil demo moment:
config = Key Up xawtv
config = Key Down xawtv
config = Button 1 50 110 xclickme
config = Key q xawtv
config = Key ctrl-c mpg123
config = Key shift-Page_Up rxvt
in BNF this looks like:
LINE = "config =" <KEY|BUTTON|XYKEY> <TARGET> |
"config =" <KEY|BUTTON|XYKEY> "Focus" <TARGET>
XYKEY = "xy_Key" <x_position> <y_position> <MOD><KEYSPEC>
KEY = "Key" <MOD><KEYSPEC>
MOD = ["shift-"]["numlock-"]["ctrl-"]["alt-"]["meta-"]
["numlock-"]["mod3-"]["mod4-"]["mod5-"]["altgr-"]["scrlock-"]
KEYSPEC = Keyname | "KeySym:"KeySym | "KeyCode:"KeyCode
BUTTON = "Button" <1..5> <x_position> <y_position>
TARGET = Windowname | "WindowID" id | "CurrentWindow" | "RootWindow"
Keyname:
is the key symbol that is declared in X windows. E.g. "Up" refers
to the cursor arrow pointing up. "KP_Add" is the plus sign on the
key pad. Just take a look at irxevent.keys (in the documentation
directory) if you are not sure about a symbol's name.
KeySym:
number as returned by XStringToKeysym(3x).
KeyCode:
number as returned by XKeysymToKeycode(3x).
Windowname:
can be the first characters of the window name displayed by the
window manager or the name that is displayed below the icon. Some
programs use the name displayed by the window manager to show a lot
of status information but don't change the icon name (like xawtv).
Others append information to the window name ("GQmpeg -
kill_windooz.mp3"). If neither window name nor icon name match the
given Windowname information from XClassHint(3x) will be checked.
CurrentWindow:
refers to the active window as returned by XGetInputFocus(3x). Most
times this is the window with your mouse pointer in it.
RootWindow:
refers to the root window as returned by RootWindow(3x). You may
need this to send events to the window manager.
WindowID id:
refers to the window with window identifier id. id should be a
decimal number. It is useful when irxevent can't find the desired
window by other means.
Focus:
will send the specified event to the given window only if it
currently has the input focus. This of course does not make much
sense when combined with CurrentWindow.
so like, a lil glossary moment for the girlies:
Keynameβ it's the key symbol declared in X windows. e.g."Up"refers to the cursor arrow pointing up, and"KP_Add"is the plus sign on the key pad. if you're not sure about a symbol's name, just take a look atirxevent.keys(in the documentation directory). π«ΆKeySymβ number as returned byXStringToKeysym(3x).KeyCodeβ number as returned byXKeysymToKeycode(3x).Windownameβ can be the first characters of the window name displayed by the window manager, or the name displayed below the icon. some programs use the window-manager name to show a lot of status info but don't change the icon name (likexawtv). others append information to the window name ("GQmpeg - kill_windooz.mp3"). if neither the window name nor the icon name match the givenWindowname, information fromXClassHint(3x)will be checked.CurrentWindowβ refers to the active window as returned byXGetInputFocus(3x). most times this is the window with your mouse pointer in it. π±οΈRootWindowβ refers to the root window as returned byRootWindow(3x). you may need this to send events to the window manager.WindowID idβ refers to the window with window identifierid.idshould be a decimal number. it's useful whenirxeventcan't find the desired window by other means.Focusβ will send the specified event to the given window only if it currently has the input focus. this of course does not make much sense when combined withCurrentWindow. noted. π
π₯ TROUBLESHOOTING π₯
if you have problems finding the coordinates for a button click, you can try xev -id <window_id>. the window_id can be found using xwininfo. slay, now you can find your lil pixel. β¨
β οΈ okay important one. there are programs that do not accept any synthetic X-events by default, because they can cause security problems. currentlyxtermandxemacsare known to ignore events simulated byirxevent. so if it's giving nothing, it's not you, it's them. π
you can however make xterm accept external events by enabling "Allow SendEvents" in the "Main Options" (hold down the Ctrl button and press the left mouse button inside the xterm window). you can as well place this line into your .Xresources file to change this permanently:
XTerm.vt100.allowSendEvents: true
yet another possibility is to start xterm like this:
xterm -xrm "XTerm.vt100.allowSendEvents: true"
xemacs will accept events if you set a built-in variable. the following was taken from the online help:
`x-allow-sendevents' is a built-in boolean variable.
Value: t
Documentation:
*Non-nil means to allow synthetic events. Nil means they are
ignored.
Beware: allowing emacs to process SendEvents opens a big security
hole.
In order to allow events you have to evaluate this lisp code (press
Meta-x and enter the following expression):
(setq x-allow-sendevents t)
Placing this line into your .xemacs-options file should have the same
result.
π¨ bestie, beware: allowing emacs to process SendEvents opens a big security hole. that's not a vibe. that's a big security hole. π₯
if you have problems sending events please drop me an email. π§
π AUTHOR π
written by Heinrich Langos <heinrich@mad.scientist.com>. π
π SEE ALSO π
xdotool(1)β invoked fromirexec(1),xdotoolprovides a more flexible alternative toirxevent. (flexible. we love a flexible icon. π )- the documentation for lirc is maintained as html pages. they are located under
html/in the documentation directory.
and that's the whole page, no cap. this was irxevent 0.10.2, last change Aug 2015, and honestly she still ate. π«Άβ¨ stay slaying, bestie, and remember: every single flag and every single detail made it in here, exactly as written. bye bye πππ¦
π¦ where this page comes from
- debian trixie: lirc-x 0.10.2-0.10 Β· GPL-2.0-or-later
- fedora 43: lirc-tools-gui 0.10.2-4.fc43 Β· GPL-2.0-only AND LicenseRef-Callaway-BSD
- fedora 44: lirc-tools-gui 0.10.2-5.fc44 Β· GPL-2.0-only AND LicenseRef-Callaway-BSD
- nixos 26.05: lirc 0.10.2
- nixpkgs unstable: lirc 0.10.2
- opensuse-leap 16.0: lirc-tools-gui 0.10.2-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: lirc-tools-gui 0.10.2-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: lirc-tools-gui 0.10.2-160000.2.2 Β· GPL-2.0-or-later
- opensuse-leap 16.0: lirc-tools-gui 0.10.2-160000.2.2 Β· GPL-2.0-or-later
- ubuntu noble: lirc-x 0.10.2-0.8build1 Β· GPL-2.0-or-later
- ubuntu questing: lirc-x 0.10.2-0.10build1
- ubuntu resolute: lirc-x 0.10.2-0.10ubuntu1 Β· GPL-2.0-or-later
- ubuntu stonking: lirc-x 0.10.2-0.11 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms