Roger Peppe 9da5b44513 cmd/devdraw: avoid use of X button state field
This bug is an intermittent annoyance and does not seem likely to be
fixed soon. It means that every so often my acme becomes unusable
because it behaves as if a mouse button is permanently set.

Avoid that issue by keeping track of mouse button state directly.

While we're about it, fix another annoying issue: under Linux the
FocusOut event reset the kstate field but not the kbuttons field,
meaning that the buttons state could inappropriately persist. This
happened occasionally by accident, but was easy to reproduce: with the
mouse button held down, drag outside the window and click Alt-Tab to
switch away from the window. We see a KeyDown event followed by FocusOut
but no KeyUp event.

Change-Id: I3708316478c80c41806d7157ae9929c6cd84b662
2025-03-29 11:23:26 -04:00
2012-03-05 16:36:31 -05:00
2025-01-29 15:55:23 -05:00
2017-09-14 17:25:17 +02:00
2005-09-13 01:24:50 +00:00
2022-07-27 10:25:51 -04:00
2022-08-18 10:48:50 -04:00
2017-09-14 17:25:17 +02:00
2024-10-22 08:11:37 -04:00
2017-09-14 17:25:17 +02:00
2024-06-15 22:10:59 -04:00
2004-04-21 23:43:46 +00:00
2022-07-27 10:25:51 -04:00
2005-01-13 04:56:07 +00:00
2017-09-14 17:25:17 +02:00
2025-01-29 15:55:23 -05:00
2021-03-23 20:59:23 -04:00
2025-02-17 20:15:27 -05:00
2008-05-10 13:38:21 -04:00
2005-11-25 13:18:11 +00:00
2017-07-23 11:11:56 +00:00
2024-04-06 11:14:36 -04:00
2021-03-23 20:59:23 -04:00
2005-11-25 13:18:11 +00:00
2013-08-13 12:46:38 -04:00
2024-01-09 19:00:21 -05:00

This is a port of many Plan 9 libraries and programs to Unix.

Installation

To install, run ./INSTALL. It builds mk and then uses mk to run the rest of the installation.

For more details, see install(1), at install.txt in this directory and at https://9fans.github.io/plan9port/man/man1/install.html.

Documentation

See https://9fans.github.io/plan9port/man/ for more documentation. (Documentation is also in this tree, but you need to run a successful install first. After that, "9 man 1 intro".)

Intro(1) contains a list of man pages that describe new features or differences from Plan 9.

Helping out

If you'd like to help out, great!

If you port this code to other architectures, please share your changes so others can benefit.

Git

You can use Git to keep your local copy up-to-date as we make changes and fix bugs. See the git(1) man page here ("9 man git") for details on using Git.

Status

Github Actions Build Status Coverity Scan Build Status

Contact

Languages
C 91.6%
Roff 1.4%
C++ 1.3%
Yacc 1.2%
Shell 1.2%
Other 3%