Type into any window: fake input when no text field is focused
- KWinFakeInput (org_kde_kwin_fake_input v6, offered by KWin to the input-method process): keysyms with real modifier keys held - The KWin backend uses the input method in text fields and fake input everywhere else, so shortcuts, terminals and the desktop get keys - Text rules (auto-capitalization, double-space) only apply in fields - Always Show setting keeps the keyboard up without a text field Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="fake_input">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_fake_input" version="6">
|
||||
<description summary="Fake input manager">
|
||||
This interface allows other processes to provide fake input events.
|
||||
Purpose is on the one hand side to provide testing facilities like XTest on X11.
|
||||
But also to support use case like kdeconnect's mouse pad interface.
|
||||
|
||||
A compositor should not trust the input received from this interface.
|
||||
Clients should not expect that the compositor honors the requests from this
|
||||
interface.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
<request name="authenticate">
|
||||
<description summary="Information why the client wants to use the interface">
|
||||
A client should use this request to tell the compositor why it wants to
|
||||
use this interface. The compositor might use the information to decide
|
||||
whether it wants to grant the request. The data might also be passed to
|
||||
the user to decide whether the application should get granted access to
|
||||
this very privileged interface.
|
||||
</description>
|
||||
<arg name="application" type="string" summary="user visible name of the application"/>
|
||||
<arg name="reason" type="string" summary="reason why the application wants to use this interface"/>
|
||||
</request>
|
||||
<request name="pointer_motion">
|
||||
<arg name="delta_x" type="fixed"/>
|
||||
<arg name="delta_y" type="fixed"/>
|
||||
</request>
|
||||
<request name="button">
|
||||
<arg name="button" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
</request>
|
||||
<request name="axis">
|
||||
<arg name="axis" type="uint"/>
|
||||
<arg name="value" type="fixed"/>
|
||||
</request>
|
||||
<request name="touch_down" since="2">
|
||||
<description summary="touch down event">
|
||||
A client should use this request to send touch down event at specific
|
||||
coordinates.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="unique id for touch down event"/>
|
||||
<arg name="x" type="fixed" summary="x coordinate for touch down event"/>
|
||||
<arg name="y" type="fixed" summary="y coordinate for touch down event"/>
|
||||
</request>
|
||||
<request name="touch_motion" since="2">
|
||||
<description summary="touch motion event">
|
||||
A client should use this request to send touch motion to specific position.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="unique id for touch motion event"/>
|
||||
<arg name="x" type="fixed" summary="x coordinate for touch motion event"/>
|
||||
<arg name="y" type="fixed" summary="y coordinate for touch motion event"/>
|
||||
</request>
|
||||
<request name="touch_up" since="2">
|
||||
<description summary="touch up event">
|
||||
A client should use this request to send touch up event.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="unique id for touch up event"/>
|
||||
</request>
|
||||
<request name="touch_cancel" since="2">
|
||||
<description summary="touch cancel event">
|
||||
A client should use this request to cancel the current
|
||||
touch event.
|
||||
</description>
|
||||
</request>
|
||||
<request name="touch_frame" since="2">
|
||||
<description summary="touch frame event">
|
||||
A client should use this request to send touch frame event.
|
||||
</description>
|
||||
</request>
|
||||
<request name="pointer_motion_absolute" since="3">
|
||||
<arg name="x" type="fixed"/>
|
||||
<arg name="y" type="fixed"/>
|
||||
</request>
|
||||
<request name="keyboard_key" since="4">
|
||||
<arg name="button" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
</request>
|
||||
|
||||
<!-- Version 5 additions -->
|
||||
|
||||
<request name="destroy" type="destructor" since="5">
|
||||
<description summary="Destroy the fake input device"/>
|
||||
</request>
|
||||
|
||||
<!-- Version 6 additions -->
|
||||
|
||||
<request name="keyboard_keysym" since="6">
|
||||
<arg name="keysym" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
</request>
|
||||
|
||||
</interface>
|
||||
</protocol>
|
||||
Reference in New Issue
Block a user