RSS/Atom feed Twitter
Site is read-only, email is disabled

Plans for input handling in GIMP

This discussion is connected to the gimp-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.

This is a read-only list on gimpusers.com so this discussion thread is read-only, too.

1 of 1 message available
Toggle history

Please log in to manage your subscriptions.

Plans for input handling in GIMP Cedric Sodhi 10 May 11:32
Cedric Sodhi
2011-05-10 11:32:28 UTC (over 13 years ago)

Plans for input handling in GIMP

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