Plans for input handling in GIMP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The current way input devices are setup and handled is flawed in thus
far that it does not allow for any soft of useful flexbility and is, for
a bigger part, not working either.

I suggest to do the following to everything input related on GIMP:

0) Add a "Pan" tool to the toolbox! Mandatory!

1) Remove everything. Mousebindings. Keyboard bindings. (For the sake of
explaining it from scratch - not necessarily techincally)

2) Add a generic "Configure Input Devices" options dialog/section, this
unifies Extended Input Devices, Mice and Keyboards and obsoletes the
possiblity of using the event-nodes directly (such things do not belong
in any X program!).

X-Input provides a generic layer for input, Gimp should use it and
align itself to it, not reinvent a broken wheel.

Wherein

Every xinput device as shown by "xinput list" is represented, devided
into the pointer and keyboard classes. Example (from my xinput):


â Virtual core pointer                    	id=2	[master pointer
â   â Virtual core XTEST pointer              	id=4	[slave  pointer
â   â Wacom ISDv4 E3 Finger touch             	id=10	[slave  pointer
â   â Wacom ISDv4 E3 Pen stylus               	id=11	[slave  pointer
â   â SynPS/2 Synaptics TouchPad              	id=13	[slave  pointer
â   â Wacom ISDv4 E3 Pen eraser               	id=15	[slave  pointer
â   â Genius 4D Scroll Mouse                  	id=16	[slave  pointer
â Virtual core keyboard                   	id=3	[master keyboard
    â Virtual core XTEST keyboard             	id=5	[slave  keyboard
    â Power Button                            	id=6	[slave  keyboard
    â Video Bus                               	id=7	[slave  keyboard
    â Video Bus                               	id=8	[slave  keyboard
    â Power Button                            	id=9	[slave  keyboard
    â AT Translated Set 2 keyboard            	id=12	[slave  keyboard
    â HP WMI hotkeys                          	id=14	[slave  keyboard
    â Chicony USB Keyboard                    	id=17	[slave  keyboard

3) Everything handled is generically, the only difference is made
between keyboards and pointers

4) Both, keyboards and pointers provide the following per-device
mapping:

** Key/Button => GIMP Action (as currently exposed through the keyboard
bindings dialog)

5) In addition, pointer devices provide the following:

** Channel mappings (similar to what already exists): That is, every
available channel that is exposed through XInput can be mapped to either
of

Pressure
X
Y
Tilt
...etc, you know the rest...

If a certain value is not mapped on a device (such as Pressure not being mapped
on #16), GIMP will optain the data from the CorePointer

** Associated toolset: If this option is enabled, a tool is associated with
the device and settings for that tool are associated with the device.
That tool is made the active tool, and the settings the active settings ,
when the device is used.

If the option is disabled for a device, the associated tool will be that
of the last-used device, so changing settings or the tool will change
the associated tool / associated settigns for the last used device. If
the last used device doesn't have an associated toolset either, this
recurses to the last used device with an associated toolset.

This option is necessarily enabled for the Corepointer.

** Dedicated Color
** Dedicated Gradient
** Dedicated Pattern
** Dedicated Brush: Similar to above.


kind regards,
Cedric
_______________________________________________
Gimp-developer mailing list
Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer



[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux