[Arm-netbook] EOMA-68 laptop Keyboard support improvement pushed

Luke Kenneth Casson Leighton lkcl at lkcl.net
Wed Aug 3 14:22:04 BST 2016


---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68


On Wed, Aug 3, 2016 at 7:39 AM, Albert ARIBAUD <albert.aribaud at free.fr> wrote:
> Hi Luke,
>
> Le Mon, 1 Aug 2016 20:31:17 +0100
> Luke Kenneth Casson Leighton <lkcl at lkcl.net> a écrit:
>
>> ---
>> crowd-funded eco-conscious hardware:
>> https://www.crowdsupply.com/eoma68
>>
>>
>> On Mon, Aug 1, 2016 at 8:21 PM, Albert ARIBAUD
>> <albert.aribaud at free.fr> wrote:
>> > Le Mon, 1 Aug 2016 01:15:43 +0100
>> > Luke Kenneth Casson Leighton <lkcl at lkcl.net> a écrit:
>> >
>> >>  my point is: if you've activated 2x the amount of keys because
>> >> you're firing on "rows" (16 activated) instead of "columns (only 8
>> >> activated), there's now 2x the chance of having a "ghosting"
>> >> problem.
>> >
>> > *At a given time*, yes, you may think that one active column
>> > crossing 16 rows runs twice more chances of ghosting than if it
>> > only crosses 8 rows; but then, *over the course of a whole scan*,
>>
>>  logic flaw (i think) - each activation is independent from all
>> others.  so with 50% the keyboard's keys "activated" if you use
>> columns instead of rows...
>
> I /think/ I see your point now. What you mean is:
>
> Ghosting causes keys on the active column to be seen as depressed when
> they are not, and the more keys per column, the more candidates for
> ghosting when a column goes active; so, doubling the number of rows
> doubles the number of keys on a column and thus doubles the number
> of potentially ghosted keys.

 that was the logic going through my head, yes.

> However, transposing the matrix also halves the number of columns:
> twice more candidate keys for ghosting per column times half less
> columns, the total number of candidates remains the same for the whole
> matrix.

 that's kinda what i figured

> Or, considered one column at a time: doubling the number of rows
> doubles the number of candidate keys for ghosting, but also halves the
> number of columns, thus halving the number of key combinations which
> will cause ghosting of any of this column's keys. twice more candidate
> keys for ghosting per column times half less combinations leading to
> actual ghosting : the column's ghosting risk remains unchanged, which
> implies that the whole keyboard's ghosting risk remains unchanged.

 .... something like that :)

> Anyway:
>
>>  mmmm it's too much for me to think about.  sorry :)  perhaps best is
>> to try it, see what happens, after all
>
> Actually I've gotten the split (scan in timer tick context, report in
> main context) and row GPIO read reduction committed first, then tried
> ghosting with the current setup.
>
> I've checked that ghosting happens with keys E, O, 9 and 3: any three
> of these depressed will show the fourth one as depressed too.

 yeahyeah.  keyboards are *designed* so that the chances of these
keypresses is greatly reduced


> Note: my own laptop's keyboard has ghosting too; I'd just had never
> ever been affected by it, as I'm not a gamer and do not use emacs
> either. O:-)
>
> So, whatever the orientation, we *will* have ghosting. I believe only
> gamer keyboards have actual anti-ghosting which they realize either by
> just putting each key on its own GPIO or by having a diode in series
> with each switch,

 yeahyeah - but that costs.

> methods which won't do with the present project
> (although some people might want to go and use a non-ghosting keyboard
> on their own custom laptop).
>
> Ghosting reduction, OTOH, can be done by laying out the matrix so that
> the most current key combinations won't cause ghosting, and by jamming,
> that is, not reporting potentially ghost keys.
>
> For the layout, we have to rely on the keyboard manufacturer; we don't
> control that.
>
> For jamming: we can detect potential ghosts: that'w whenever all four
> keys are seen down on any set of two columns by two rows. I don't
> say it's going to be easy, but I've got a few leads.
>
> Now, Which of the four keys we shall report will depend on our priority
> policy.
>
> Also: despite dire warnings :)

 they weren't warnings... i just don't like it or see the necessity
for the complexity, i feel that if i have to use a jtag port i'm doing
something wrong, but that's just me

>, I've gone and set up a debugging
> environment for the NUCLEO through the ST-Link interface. Took me about
> one hour to get it working (OpenOCD is a sensitive creature) but it
> now does!

 yay!



More information about the arm-netbook mailing list