On Fri, Jun 28, 2013 at 08:35:42AM -0600, Stephen Warren wrote: > On 06/28/2013 01:52 AM, Gerhard Sittig wrote: > > > > [ late reply, just catching up with the backlog ] > > > > On Mon, Jun 24, 2013 at 17:26 -0600, Stephen Warren wrote: > >> > >> [ ... sparse matrices, not all columns/rows populated ... ] > > >> On some Tegra boards, there end up > >> being rather tri-angular keymaps, where key positions (0, 0), (0, 1), > >> (0, 2), (1, 1), (1, 2), (2, 2) end up being used. In this scenario, > >> detailed investigation of the keymap would reveal: > >> > >> * Only scan columns 0..2 > >> * For column 0, scan rows 0..2 > >> * For column 1, scan rows 1..2 > >> * For columm 2, scan row 2. > > > > That's another question I had. So far I was concerned with just > > polling or scanning the relevant columns, while all the rows for > > a given column were queried (as the driver always used to do). > > > > Now you raise the question of whether rows should get queried as > > well depending on whether "a key may sit there". It wasn't the > > exact question I raised, but I added a comment to the spot where > > input subsystem events get generated: Is the driver expected to > > emit events for matrix positions where no key map entry exists? > > I would assume there is no need to, but I don't know for sure. Perhaps > Dmitry can answer that? It really depends whether the driver can absolutely be sure that the key is not there or if it might be. Because keymaps are configurable from userspace the driver should not make this decision based on keymap itself. When you scan a matrix and come upon the "pressed key" condition, you supposed to emit EV_MSC/MSC_SCAN, followed by appropriate EV_KEY/KEY_*. Normally the "keys that aren't there" generate KEY_RESERVED events that are simply dropped by input core (cause it is easier to implement). MSC_SCAN events, however, reach the userspace intact. Hope this helps. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html