2022-04-27 23:02:32

by Stephen Boyd

[permalink] [raw]
Subject: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

If the device is a detachable, this device won't have a matrix keyboard
but it may have some button switches, e.g. volume buttons and power
buttons. Let's add a more specific compatible for this type of device
that indicates to the OS that there are only switches and no matrix
keyboard present.

Cc: Krzysztof Kozlowski <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: <[email protected]>
Cc: Benson Leung <[email protected]>
Cc: Guenter Roeck <[email protected]>
Cc: Douglas Anderson <[email protected]>
Cc: Hsin-Yi Wang <[email protected]>
Cc: "Joseph S. Barrera III" <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
---
.../bindings/input/google,cros-ec-keyb.yaml | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
index e8f137abb03c..edc1194d558d 100644
--- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
+++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
@@ -15,14 +15,20 @@ description: |
Google's ChromeOS EC Keyboard is a simple matrix keyboard
implemented on a separate EC (Embedded Controller) device. It provides
a message for reading key scans from the EC. These are then converted
- into keycodes for processing by the kernel.
+ into keycodes for processing by the kernel. This device also supports
+ switches/buttons like power and volume buttons.

allOf:
- $ref: "/schemas/input/matrix-keymap.yaml#"

properties:
compatible:
- const: google,cros-ec-keyb
+ oneOf:
+ - items:
+ - const: google,cros-ec-keyb-switches
+ - const: google,cros-ec-keyb
+ - items:
+ - const: google,cros-ec-keyb

google,needs-ghost-filter:
description:
@@ -50,7 +56,7 @@ examples:
- |
#include <dt-bindings/input/input.h>
cros-ec-keyb {
- compatible = "google,cros-ec-keyb";
+ compatible = "google,cros-ec-keyb-switches", "google,cros-ec-keyb";
keypad,num-rows = <8>;
keypad,num-columns = <13>;
google,needs-ghost-filter;
--
https://chromeos.dev


2022-04-28 15:08:47

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

On 28/04/2022 08:24, Stephen Boyd wrote:
> Quoting Krzysztof Kozlowski (2022-04-27 23:12:47)
>> On 27/04/2022 22:30, Stephen Boyd wrote:
>>> If the device is a detachable, this device won't have a matrix keyboard
>>> but it may have some button switches, e.g. volume buttons and power
>>> buttons. Let's add a more specific compatible for this type of device
>>> that indicates to the OS that there are only switches and no matrix
>>> keyboard present.
>>>
>>> Cc: Krzysztof Kozlowski <[email protected]>
>>> Cc: Rob Herring <[email protected]>
>>> Cc: <[email protected]>
>>> Cc: Benson Leung <[email protected]>
>>> Cc: Guenter Roeck <[email protected]>
>>> Cc: Douglas Anderson <[email protected]>
>>> Cc: Hsin-Yi Wang <[email protected]>
>>> Cc: "Joseph S. Barrera III" <[email protected]>
>>> Signed-off-by: Stephen Boyd <[email protected]>
>>> ---
>>> .../bindings/input/google,cros-ec-keyb.yaml | 12 +++++++++---
>>> 1 file changed, 9 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
>>> index e8f137abb03c..edc1194d558d 100644
>>> --- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
>>> +++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
>>> @@ -15,14 +15,20 @@ description: |
>>> Google's ChromeOS EC Keyboard is a simple matrix keyboard
>>> implemented on a separate EC (Embedded Controller) device. It provides
>>> a message for reading key scans from the EC. These are then converted
>>> - into keycodes for processing by the kernel.
>>> + into keycodes for processing by the kernel. This device also supports
>>> + switches/buttons like power and volume buttons.
>>>
>>> allOf:
>>> - $ref: "/schemas/input/matrix-keymap.yaml#"
>>>
>>> properties:
>>> compatible:
>>> - const: google,cros-ec-keyb
>>> + oneOf:
>>> + - items:
>>> + - const: google,cros-ec-keyb-switches
>>> + - const: google,cros-ec-keyb
>>> + - items:
>>> + - const: google,cros-ec-keyb
>>>
>>
>> In such case matrix-keymap properties are not valid, right? The
>> matrix-keymap should not be referenced, IOW, you need to move allOf
>> below "required" and add:
>> if:not:...then: $ref: "/schemas/input/matrix-keymap.yaml
>>
>
> Eventually that sounds doable, but for the time being I want to merely
> add this new compatible in front of the original compatible so that
> updated DTBs still work with older kernels, i.e. the switches still get
> registered because the driver works with the original
> google,cros-ec-keyb compatible.

The bindings here do not invalidate (break) existing DTBs. Old DTBs can
work in old way, we talk only about binding.

> Given that none of the properties are
> required for google,cros-ec-keyb it didn't seem necessary to make having
> the google,cros-ec-keyb-switches compatible deny the existence of the
> matrix-keymap properties.

Maybe I misunderstood the commit msg. Are the
"google,cros-ec-keyb-switches" devices coming with matrix keyboard or
not? I mean physically.

Best regards,
Krzysztof

2022-04-28 15:22:08

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

Quoting Krzysztof Kozlowski (2022-04-27 23:12:47)
> On 27/04/2022 22:30, Stephen Boyd wrote:
> > If the device is a detachable, this device won't have a matrix keyboard
> > but it may have some button switches, e.g. volume buttons and power
> > buttons. Let's add a more specific compatible for this type of device
> > that indicates to the OS that there are only switches and no matrix
> > keyboard present.
> >
> > Cc: Krzysztof Kozlowski <[email protected]>
> > Cc: Rob Herring <[email protected]>
> > Cc: <[email protected]>
> > Cc: Benson Leung <[email protected]>
> > Cc: Guenter Roeck <[email protected]>
> > Cc: Douglas Anderson <[email protected]>
> > Cc: Hsin-Yi Wang <[email protected]>
> > Cc: "Joseph S. Barrera III" <[email protected]>
> > Signed-off-by: Stephen Boyd <[email protected]>
> > ---
> > .../bindings/input/google,cros-ec-keyb.yaml | 12 +++++++++---
> > 1 file changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> > index e8f137abb03c..edc1194d558d 100644
> > --- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> > +++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> > @@ -15,14 +15,20 @@ description: |
> > Google's ChromeOS EC Keyboard is a simple matrix keyboard
> > implemented on a separate EC (Embedded Controller) device. It provides
> > a message for reading key scans from the EC. These are then converted
> > - into keycodes for processing by the kernel.
> > + into keycodes for processing by the kernel. This device also supports
> > + switches/buttons like power and volume buttons.
> >
> > allOf:
> > - $ref: "/schemas/input/matrix-keymap.yaml#"
> >
> > properties:
> > compatible:
> > - const: google,cros-ec-keyb
> > + oneOf:
> > + - items:
> > + - const: google,cros-ec-keyb-switches
> > + - const: google,cros-ec-keyb
> > + - items:
> > + - const: google,cros-ec-keyb
> >
>
> In such case matrix-keymap properties are not valid, right? The
> matrix-keymap should not be referenced, IOW, you need to move allOf
> below "required" and add:
> if:not:...then: $ref: "/schemas/input/matrix-keymap.yaml
>

Eventually that sounds doable, but for the time being I want to merely
add this new compatible in front of the original compatible so that
updated DTBs still work with older kernels, i.e. the switches still get
registered because the driver works with the original
google,cros-ec-keyb compatible. Given that none of the properties are
required for google,cros-ec-keyb it didn't seem necessary to make having
the google,cros-ec-keyb-switches compatible deny the existence of the
matrix-keymap properties.

2022-04-29 09:27:20

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

On 27/04/2022 22:30, Stephen Boyd wrote:
> If the device is a detachable, this device won't have a matrix keyboard
> but it may have some button switches, e.g. volume buttons and power
> buttons. Let's add a more specific compatible for this type of device
> that indicates to the OS that there are only switches and no matrix
> keyboard present.
>
> Cc: Krzysztof Kozlowski <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: <[email protected]>
> Cc: Benson Leung <[email protected]>
> Cc: Guenter Roeck <[email protected]>
> Cc: Douglas Anderson <[email protected]>
> Cc: Hsin-Yi Wang <[email protected]>
> Cc: "Joseph S. Barrera III" <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>
> ---
> .../bindings/input/google,cros-ec-keyb.yaml | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> index e8f137abb03c..edc1194d558d 100644
> --- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> +++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> @@ -15,14 +15,20 @@ description: |
> Google's ChromeOS EC Keyboard is a simple matrix keyboard
> implemented on a separate EC (Embedded Controller) device. It provides
> a message for reading key scans from the EC. These are then converted
> - into keycodes for processing by the kernel.
> + into keycodes for processing by the kernel. This device also supports
> + switches/buttons like power and volume buttons.
>
> allOf:
> - $ref: "/schemas/input/matrix-keymap.yaml#"
>
> properties:
> compatible:
> - const: google,cros-ec-keyb
> + oneOf:
> + - items:
> + - const: google,cros-ec-keyb-switches
> + - const: google,cros-ec-keyb
> + - items:
> + - const: google,cros-ec-keyb
>

In such case matrix-keymap properties are not valid, right? The
matrix-keymap should not be referenced, IOW, you need to move allOf
below "required" and add:
if:not:...then: $ref: "/schemas/input/matrix-keymap.yaml

Best regards,
Krzysztof

2022-04-29 15:15:02

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

On 27/04/2022 22:30, Stephen Boyd wrote:
> If the device is a detachable, this device won't have a matrix keyboard
> but it may have some button switches, e.g. volume buttons and power
> buttons. Let's add a more specific compatible for this type of device
> that indicates to the OS that there are only switches and no matrix
> keyboard present.
>
> Cc: Krzysztof Kozlowski <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: <[email protected]>
> Cc: Benson Leung <[email protected]>
> Cc: Guenter Roeck <[email protected]>
> Cc: Douglas Anderson <[email protected]>
> Cc: Hsin-Yi Wang <[email protected]>
> Cc: "Joseph S. Barrera III" <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>


Acked-by: Krzysztof Kozlowski <[email protected]>


Best regards,
Krzysztof

2022-04-30 08:00:07

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

On 28/04/2022 18:01, Stephen Boyd wrote:
>>
>>> Given that none of the properties are
>>> required for google,cros-ec-keyb it didn't seem necessary to make having
>>> the google,cros-ec-keyb-switches compatible deny the existence of the
>>> matrix-keymap properties.
>>
>> Maybe I misunderstood the commit msg. Are the
>> "google,cros-ec-keyb-switches" devices coming with matrix keyboard or
>> not? I mean physically.
>>
>
> The answer is "sometimes, physically". Sometimes there are switches like
> volume buttons and power buttons and also a matrix keyboard (convertible
> and clamshells). Other times there are volume buttons and power buttons
> and no matrix keyboard (detachable). This device node represents both
> the keyboard and the switches.
>
> Unfortunately the EC firmware on older Chromebooks that don't have a
> matrix keyboard still report that they have some number of columns and
> rows. I was hoping to make this fully dynamic by querying the EC but
> that isn't possible.

OK, then it's indeed slightly different case. Let's skip my comment.


Best regards,
Krzysztof

2022-04-30 15:39:18

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

Quoting Krzysztof Kozlowski (2022-04-28 00:27:52)
> On 28/04/2022 08:24, Stephen Boyd wrote:
> > Quoting Krzysztof Kozlowski (2022-04-27 23:12:47)
> >> On 27/04/2022 22:30, Stephen Boyd wrote:
> >>> If the device is a detachable, this device won't have a matrix keyboard
> >>> but it may have some button switches, e.g. volume buttons and power
> >>> buttons. Let's add a more specific compatible for this type of device
> >>> that indicates to the OS that there are only switches and no matrix
> >>> keyboard present.
> >>>
> >>> Cc: Krzysztof Kozlowski <[email protected]>
> >>> Cc: Rob Herring <[email protected]>
> >>> Cc: <[email protected]>
> >>> Cc: Benson Leung <[email protected]>
> >>> Cc: Guenter Roeck <[email protected]>
> >>> Cc: Douglas Anderson <[email protected]>
> >>> Cc: Hsin-Yi Wang <[email protected]>
> >>> Cc: "Joseph S. Barrera III" <[email protected]>
> >>> Signed-off-by: Stephen Boyd <[email protected]>
> >>> ---
> >>> .../bindings/input/google,cros-ec-keyb.yaml | 12 +++++++++---
> >>> 1 file changed, 9 insertions(+), 3 deletions(-)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> >>> index e8f137abb03c..edc1194d558d 100644
> >>> --- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> >>> +++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> >>> @@ -15,14 +15,20 @@ description: |
> >>> Google's ChromeOS EC Keyboard is a simple matrix keyboard
> >>> implemented on a separate EC (Embedded Controller) device. It provides
> >>> a message for reading key scans from the EC. These are then converted
> >>> - into keycodes for processing by the kernel.
> >>> + into keycodes for processing by the kernel. This device also supports
> >>> + switches/buttons like power and volume buttons.
> >>>
> >>> allOf:
> >>> - $ref: "/schemas/input/matrix-keymap.yaml#"
> >>>
> >>> properties:
> >>> compatible:
> >>> - const: google,cros-ec-keyb
> >>> + oneOf:
> >>> + - items:
> >>> + - const: google,cros-ec-keyb-switches
> >>> + - const: google,cros-ec-keyb
> >>> + - items:
> >>> + - const: google,cros-ec-keyb
> >>>
> >>
> >> In such case matrix-keymap properties are not valid, right? The
> >> matrix-keymap should not be referenced, IOW, you need to move allOf
> >> below "required" and add:
> >> if:not:...then: $ref: "/schemas/input/matrix-keymap.yaml
> >>
> >
> > Eventually that sounds doable, but for the time being I want to merely
> > add this new compatible in front of the original compatible so that
> > updated DTBs still work with older kernels, i.e. the switches still get
> > registered because the driver works with the original
> > google,cros-ec-keyb compatible.
>
> The bindings here do not invalidate (break) existing DTBs. Old DTBs can
> work in old way, we talk only about binding.

Ok, got it.

>
> > Given that none of the properties are
> > required for google,cros-ec-keyb it didn't seem necessary to make having
> > the google,cros-ec-keyb-switches compatible deny the existence of the
> > matrix-keymap properties.
>
> Maybe I misunderstood the commit msg. Are the
> "google,cros-ec-keyb-switches" devices coming with matrix keyboard or
> not? I mean physically.
>

The answer is "sometimes, physically". Sometimes there are switches like
volume buttons and power buttons and also a matrix keyboard (convertible
and clamshells). Other times there are volume buttons and power buttons
and no matrix keyboard (detachable). This device node represents both
the keyboard and the switches.

Unfortunately the EC firmware on older Chromebooks that don't have a
matrix keyboard still report that they have some number of columns and
rows. I was hoping to make this fully dynamic by querying the EC but
that isn't possible.

2022-04-30 16:17:03

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

Quoting Krzysztof Kozlowski (2022-04-29 09:35:58)
> On 29/04/2022 18:31, Doug Anderson wrote:
> >> - $ref: "/schemas/input/matrix-keymap.yaml#"
> >>
> >> properties:
> >> compatible:
> >> - const: google,cros-ec-keyb
> >> + oneOf:
> >> + - items:
> >> + - const: google,cros-ec-keyb-switches
> >> + - const: google,cros-ec-keyb
> >> + - items:
> >> + - const: google,cros-ec-keyb
> >
> > nit: if I come back and read this binding later I'm not sure it would
> > be obvious which compatible I should pick. Can we give any description
> > here that indicates that the first choice is for devices that _only_
> > have buttons and switches (the google,cros-ec-keyb is just for
> > backward compatibility) and the second choice is for devices that have
> > a physical keyboard and _also_ possibly some buttons/switches?

Sounds fair. I have to figure out how to add a description to the
choices. I guess a comment is the approach?

> >
> > I could also imagine people in the future being confused about whether
> > it's allowed to specify matrix properties even for devices that don't
> > have a matrix keyboard. It might be worth noting that it's allowed (to
> > support old drivers that might still be matching against the
> > google,cros-ec-keyb compatible) but not required.
>
> +1

Sure. I'll work that into the description for the first one with two
compatibles.

>
> >
> >
> >> google,needs-ghost-filter:
> >> description:
> >> @@ -50,7 +56,7 @@ examples:
> >> - |
> >> #include <dt-bindings/input/input.h>
> >> cros-ec-keyb {
> >> - compatible = "google,cros-ec-keyb";
> >> + compatible = "google,cros-ec-keyb-switches", "google,cros-ec-keyb";
> >
> > Feels like we should create a second example?
>
> +1 as well, because it really would confuse what's the difference
> between them.

Ok.

2022-04-30 17:00:33

by Doug Anderson

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

Hi,

On Wed, Apr 27, 2022 at 1:30 PM Stephen Boyd <[email protected]> wrote:
>
> If the device is a detachable, this device won't have a matrix keyboard
> but it may have some button switches, e.g. volume buttons and power
> buttons. Let's add a more specific compatible for this type of device
> that indicates to the OS that there are only switches and no matrix
> keyboard present.
>
> Cc: Krzysztof Kozlowski <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: <[email protected]>
> Cc: Benson Leung <[email protected]>
> Cc: Guenter Roeck <[email protected]>
> Cc: Douglas Anderson <[email protected]>
> Cc: Hsin-Yi Wang <[email protected]>
> Cc: "Joseph S. Barrera III" <[email protected]>
> Signed-off-by: Stephen Boyd <[email protected]>
> ---
> .../bindings/input/google,cros-ec-keyb.yaml | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> index e8f137abb03c..edc1194d558d 100644
> --- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> +++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> @@ -15,14 +15,20 @@ description: |
> Google's ChromeOS EC Keyboard is a simple matrix keyboard
> implemented on a separate EC (Embedded Controller) device. It provides
> a message for reading key scans from the EC. These are then converted
> - into keycodes for processing by the kernel.
> + into keycodes for processing by the kernel. This device also supports
> + switches/buttons like power and volume buttons.
>
> allOf:
> - $ref: "/schemas/input/matrix-keymap.yaml#"
>
> properties:
> compatible:
> - const: google,cros-ec-keyb
> + oneOf:
> + - items:
> + - const: google,cros-ec-keyb-switches
> + - const: google,cros-ec-keyb
> + - items:
> + - const: google,cros-ec-keyb

nit: if I come back and read this binding later I'm not sure it would
be obvious which compatible I should pick. Can we give any description
here that indicates that the first choice is for devices that _only_
have buttons and switches (the google,cros-ec-keyb is just for
backward compatibility) and the second choice is for devices that have
a physical keyboard and _also_ possibly some buttons/switches?

I could also imagine people in the future being confused about whether
it's allowed to specify matrix properties even for devices that don't
have a matrix keyboard. It might be worth noting that it's allowed (to
support old drivers that might still be matching against the
google,cros-ec-keyb compatible) but not required.


> google,needs-ghost-filter:
> description:
> @@ -50,7 +56,7 @@ examples:
> - |
> #include <dt-bindings/input/input.h>
> cros-ec-keyb {
> - compatible = "google,cros-ec-keyb";
> + compatible = "google,cros-ec-keyb-switches", "google,cros-ec-keyb";

Feels like we should create a second example?

2022-05-03 00:38:07

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

On 29/04/2022 18:31, Doug Anderson wrote:
>> - $ref: "/schemas/input/matrix-keymap.yaml#"
>>
>> properties:
>> compatible:
>> - const: google,cros-ec-keyb
>> + oneOf:
>> + - items:
>> + - const: google,cros-ec-keyb-switches
>> + - const: google,cros-ec-keyb
>> + - items:
>> + - const: google,cros-ec-keyb
>
> nit: if I come back and read this binding later I'm not sure it would
> be obvious which compatible I should pick. Can we give any description
> here that indicates that the first choice is for devices that _only_
> have buttons and switches (the google,cros-ec-keyb is just for
> backward compatibility) and the second choice is for devices that have
> a physical keyboard and _also_ possibly some buttons/switches?
>
> I could also imagine people in the future being confused about whether
> it's allowed to specify matrix properties even for devices that don't
> have a matrix keyboard. It might be worth noting that it's allowed (to
> support old drivers that might still be matching against the
> google,cros-ec-keyb compatible) but not required.

+1

>
>
>> google,needs-ghost-filter:
>> description:
>> @@ -50,7 +56,7 @@ examples:
>> - |
>> #include <dt-bindings/input/input.h>
>> cros-ec-keyb {
>> - compatible = "google,cros-ec-keyb";
>> + compatible = "google,cros-ec-keyb-switches", "google,cros-ec-keyb";
>
> Feels like we should create a second example?

+1 as well, because it really would confuse what's the difference
between them.

Best regards,
Krzysztof