All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] input: Add Marine Navigation Keycodes
@ 2021-06-22 23:57 Matthew Stephenson
  2022-01-26 21:12 ` [PATCH v2] " Shelby Heffron
  0 siblings, 1 reply; 14+ messages in thread
From: Matthew Stephenson @ 2021-06-22 23:57 UTC (permalink / raw)
  To: dmitry.torokhov, linux-input, linux-kernel; +Cc: Matthew Stephenson

Add keycodes that are used by marine navigation devices

Signed-off-by: Matthew Stephenson <matthew.stephenson2@garmin.com>
---
 include/uapi/linux/input-event-codes.h | 27 ++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index ee93428ced9a..4d5e5cd17a7b 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -659,6 +659,33 @@
 /* Select an area of screen to be copied */
 #define KEY_SELECTIVE_SCREENSHOT	0x27a
 
+/* Toggle the focus in or out */
+#define KEY_FOCUSE_TOGGLE		0x27b
+
+/* Move between highlightable items */
+#define KEY_NEXT_HIGHLIGHT		0x27c
+#define KEY_PREVIOUS_HIGHLIGHT		0x27d
+
+/* Toggle Autopilot enagement */
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE	0x27e
+
+/* Navigate Displays */
+#define KEY_NEXT_DISPLAY		0x27f
+#define KEY_PREVIOUS_DISPLAY		0x280
+
+/* Shortcut Keys */
+#define KEY_MARK_WAYPOINT		0x281
+#define KEY_SOS			0x282
+#define KEY_NAV_CHART			0x283
+#define KEY_FISHING_CHART		0x284
+#define KEY_SINGLE_RANGE_RADAR		0x285
+#define KEY_DUAL_RANGE_RADAR		0x286
+#define KEY_RADAR_OVERLAY		0x287
+#define KEY_TRADITIONAL_SONAR		0x288
+#define KEY_CLEARVU_SONAR		0x289
+#define KEY_SIDEVU_SONAR		0x28a
+#define KEY_NAV_INFO			0x28d
+
 /*
  * Some keyboards have keys which do not have a defined meaning, these keys
  * are intended to be programmed / bound to macros by the user. For most
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v2] input: Add Marine Navigation Keycodes
  2021-06-22 23:57 [PATCH] input: Add Marine Navigation Keycodes Matthew Stephenson
@ 2022-01-26 21:12 ` Shelby Heffron
  2022-02-11  4:47   ` Shelby Heffron
                     ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-01-26 21:12 UTC (permalink / raw)
  To: dmitry.torokhov, linux-input, linux-kernel; +Cc: Shelby Heffron

Add keycodes that are used by marine navigation devices

Signed-off-by: Shelby Heffron <Shelby.Heffron@garmin.com>
---
 include/uapi/linux/input-event-codes.h | 28 ++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 225ec87d4f22..26b6a2f482ab 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -660,6 +660,34 @@
 /* Select an area of screen to be copied */
 #define KEY_SELECTIVE_SCREENSHOT	0x27a
 
+/* Toggle the focus in or out */
+#define KEY_FOCUS_TOGGLE		0x27b
+
+/* Move between highlightable items */
+#define KEY_NEXT_HIGHLIGHT		0x27c
+#define KEY_PREVIOUS_HIGHLIGHT		0x27d
+
+/* Toggle Autopilot enagement */
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE	0x27e
+
+/* Navigate Displays */
+#define KEY_NEXT_DISPLAY		0x27f
+#define KEY_PREVIOUS_DISPLAY		0x280
+
+/* Shortcut Keys */
+#define KEY_MARK_WAYPOINT		0x281
+#define KEY_SOS			0x282
+#define KEY_NAV_CHART			0x283
+#define KEY_FISHING_CHART		0x284
+#define KEY_SINGLE_RANGE_RADAR		0x285
+#define KEY_DUAL_RANGE_RADAR		0x286
+#define KEY_RADAR_OVERLAY		0x287
+#define KEY_TRADITIONAL_SONAR		0x288
+#define KEY_CLEARVU_SONAR		0x289
+#define KEY_SIDEVU_SONAR		0x28a
+#define KEY_NAV_INFO			0x28b
+#define KEY_BRIGHTNESS_MENU		0x28c
+
 /*
  * Some keyboards have keys which do not have a defined meaning, these keys
  * are intended to be programmed / bound to macros by the user. For most
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-01-26 21:12 ` [PATCH v2] " Shelby Heffron
@ 2022-02-11  4:47   ` Shelby Heffron
  2022-02-17 23:41     ` Shelby Heffron
  2022-02-18  7:02   ` Dmitry Torokhov
  2022-04-14  1:53   ` [PATCH] [V3] " Shelby Heffron
  2 siblings, 1 reply; 14+ messages in thread
From: Shelby Heffron @ 2022-02-11  4:47 UTC (permalink / raw)
  To: dmitry.torokhov, linux-input, linux-kernel

Hello all,

On 1/26/2022 3:12 PM, Shelby Heffron wrote:
> Add keycodes that are used by marine navigation devices
> 
> Signed-off-by: Shelby Heffron <Shelby.Heffron@garmin.com>
> ---
>   include/uapi/linux/input-event-codes.h | 28 ++++++++++++++++++++++++++
>   1 file changed, 28 insertions(+)
> 
> diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> index 225ec87d4f22..26b6a2f482ab 100644
> --- a/include/uapi/linux/input-event-codes.h
> +++ b/include/uapi/linux/input-event-codes.h
> @@ -660,6 +660,34 @@
>   /* Select an area of screen to be copied */
>   #define KEY_SELECTIVE_SCREENSHOT	0x27a
>   
> +/* Toggle the focus in or out */
> +#define KEY_FOCUS_TOGGLE		0x27b
> +
> +/* Move between highlightable items */
> +#define KEY_NEXT_HIGHLIGHT		0x27c
> +#define KEY_PREVIOUS_HIGHLIGHT		0x27d
> +
> +/* Toggle Autopilot enagement */
> +#define KEY_AUTOPILOT_ENGAGE_TOGGLE	0x27e
> +
> +/* Navigate Displays */
> +#define KEY_NEXT_DISPLAY		0x27f
> +#define KEY_PREVIOUS_DISPLAY		0x280
> +
> +/* Shortcut Keys */
> +#define KEY_MARK_WAYPOINT		0x281
> +#define KEY_SOS			0x282
> +#define KEY_NAV_CHART			0x283
> +#define KEY_FISHING_CHART		0x284
> +#define KEY_SINGLE_RANGE_RADAR		0x285
> +#define KEY_DUAL_RANGE_RADAR		0x286
> +#define KEY_RADAR_OVERLAY		0x287
> +#define KEY_TRADITIONAL_SONAR		0x288
> +#define KEY_CLEARVU_SONAR		0x289
> +#define KEY_SIDEVU_SONAR		0x28a
> +#define KEY_NAV_INFO			0x28b
> +#define KEY_BRIGHTNESS_MENU		0x28c

I am looking for some guidance on if this is the proper place for these 
keys to be defined? If not, or if they are too specific, do I have any 
other options?

Thanks.
Shelby

> +
>   /*
>    * Some keyboards have keys which do not have a defined meaning, these keys
>    * are intended to be programmed / bound to macros by the user. For most


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-02-11  4:47   ` Shelby Heffron
@ 2022-02-17 23:41     ` Shelby Heffron
  0 siblings, 0 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-02-17 23:41 UTC (permalink / raw)
  To: dmitry.torokhov, linux-input, linux-kernel

Hello,

Please let me know if you have any feedback or questions about this patch.

Thank you.
Shelby

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-01-26 21:12 ` [PATCH v2] " Shelby Heffron
  2022-02-11  4:47   ` Shelby Heffron
@ 2022-02-18  7:02   ` Dmitry Torokhov
  2022-02-18 20:53     ` Shelby Heffron
                       ` (3 more replies)
  2022-04-14  1:53   ` [PATCH] [V3] " Shelby Heffron
  2 siblings, 4 replies; 14+ messages in thread
From: Dmitry Torokhov @ 2022-02-18  7:02 UTC (permalink / raw)
  To: Shelby Heffron; +Cc: linux-input, linux-kernel

Hi Shelby,

On Wed, Jan 26, 2022 at 03:12:24PM -0600, Shelby Heffron wrote:
> Add keycodes that are used by marine navigation devices
> 
> Signed-off-by: Shelby Heffron <Shelby.Heffron@garmin.com>
> ---
>  include/uapi/linux/input-event-codes.h | 28 ++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> index 225ec87d4f22..26b6a2f482ab 100644
> --- a/include/uapi/linux/input-event-codes.h
> +++ b/include/uapi/linux/input-event-codes.h
> @@ -660,6 +660,34 @@
>  /* Select an area of screen to be copied */
>  #define KEY_SELECTIVE_SCREENSHOT	0x27a
>  
> +/* Toggle the focus in or out */
> +#define KEY_FOCUS_TOGGLE		0x27b

Could it be served by KEY_SELECT?

> +
> +/* Move between highlightable items */
> +#define KEY_NEXT_HIGHLIGHT		0x27c
> +#define KEY_PREVIOUS_HIGHLIGHT		0x27d

I wonder if KEY_NEXT and KEY_PREVIOUS would be suitable for your
application.

> +
> +/* Toggle Autopilot enagement */
> +#define KEY_AUTOPILOT_ENGAGE_TOGGLE	0x27e
> +
> +/* Navigate Displays */
> +#define KEY_NEXT_DISPLAY		0x27f
> +#define KEY_PREVIOUS_DISPLAY		0x280

I am not familiar with marine navigation devices, could you please
explain a bit more about displays you are navigating. Are there separate
physical screens or are there several application screens/views you are
switching between?

> +
> +/* Shortcut Keys */
> +#define KEY_MARK_WAYPOINT		0x281
> +#define KEY_SOS			0x282
> +#define KEY_NAV_CHART			0x283
> +#define KEY_FISHING_CHART		0x284
> +#define KEY_SINGLE_RANGE_RADAR		0x285
> +#define KEY_DUAL_RANGE_RADAR		0x286
> +#define KEY_RADAR_OVERLAY		0x287
> +#define KEY_TRADITIONAL_SONAR		0x288
> +#define KEY_CLEARVU_SONAR		0x289
> +#define KEY_SIDEVU_SONAR		0x28a
> +#define KEY_NAV_INFO			0x28b

This are fine I believe.

> +#define KEY_BRIGHTNESS_MENU		0x28c

Do you have multiple menus in the application?

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-02-18  7:02   ` Dmitry Torokhov
@ 2022-02-18 20:53     ` Shelby Heffron
  2022-03-03 23:28     ` Shelby Heffron
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-02-18 20:53 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Hi Dmitry,

>> +/* Toggle the focus in or out */
>> +#define KEY_FOCUS_TOGGLE            0x27b
>
> Could it be served by KEY_SELECT?

We have found another keycode that will serve for this. Will remove in
next patch.

>> +
>> +/* Move between highlightable items */
>> +#define KEY_NEXT_HIGHLIGHT          0x27c
>> +#define KEY_PREVIOUS_HIGHLIGHT              0x27d
>
> I wonder if KEY_NEXT and KEY_PREVIOUS would be suitable for your
> application.

Yes, those keycodes should be suitable. Will remove in next patch.

>> +/* Navigate Displays */
>> +#define KEY_NEXT_DISPLAY            0x27f
>> +#define KEY_PREVIOUS_DISPLAY                0x280
>
> I am not familiar with marine navigation devices, could you please
> explain a bit more about displays you are navigating. Are there separate
> physical screens or are there several application screens/views you are
> switching between?
>

Yes - these keys would navigate between separate physical screens.

>> +#define KEY_BRIGHTNESS_MENU         0x28c
>
> Do you have multiple menus in the application?
>
We have found another keycode that will serve for this. Will remove in
next patch.


Thanks.
Shelby



________________________________

CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-02-18  7:02   ` Dmitry Torokhov
  2022-02-18 20:53     ` Shelby Heffron
@ 2022-03-03 23:28     ` Shelby Heffron
  2022-03-11 19:05       ` Shelby Heffron
                         ` (2 more replies)
  2022-03-29  3:40     ` Shelby Heffron
  2022-04-05 13:29     ` Shelby Heffron
  3 siblings, 3 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-03-03 23:28 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Hi Dmitry,

We would like to take a step back and describe our application in more
detail. We are supporting global physical keys on devices such as boat
steering wheels that will interact with multiple marine navigation
displays on the vessel. Could you please provide some further
suggestions based on our requested keys and the description below.

Our marine displays usually show a single fullscreen application which
may show multiple types of data at the same time. For example, the
application may be showing a map, RADAR, and some media controls at the
same time. There can also be a control bar at the bottom of the screen
giving options to do things like return to the home page or open a menu.
Multiple network-connected marine displays can interact with each other
to share a single keyed input device across them. In this setup, there
will only be one active focus for the set of those connected devices.
For multi-display setups, the focus can transition between displays
either through the use of dedicated keys to immediately move the focus
to the previous or next display or the focus can transition between
displays automatically (e.g. when the user requests to move the focus to
the next element but we're already at the current display's last element
we will move the focus to the first element of the next display).

For the elements displayed on a single marine display, our UI supports
grouping them together into containers which function somewhat similarly
to a group of radio buttons in a more-traditional application. We would
place the previously mentioned map, RADAR, media controls, and bottom
bar each into their own container. Containers also get used for things
like menu pages where we have a list of items to scroll through and a
separate list of buttons that can be used to take actions on the
currently selected item. The focus can move between items within a
container by using keys like up, down, left, right, next highlight, and
previous highlight. To make navigating between these containers more
convenient, we have a focus key that moves to the next container. This
focus key behaves similarly to the tab key with a traditional
application that has multiple sets of radio buttons, but we also have
support for embedding traditional keyboard input into one of these
containers where we would need KEY_TAB to behave normally. Our focus key
does not change the visibility of anything on screen, which made it feel
a little different than the description of KEY_CYCLEWINDOWS from the
video remote controller documentation
(https://www.kernel.org/doc/html/v4.9/media/uapi/rc/rc-tables.html), so
our initial proposal avoided repurposing that event code.

 >> +/* Toggle the focus in or out */
 >> +#define KEY_FOCUS_TOGGLE        0x27b
 >
 > Could it be served by KEY_SELECT?
 >

We have a select key on our marine display which is used for actions
like to select/press the currently-focused button or behave similarly to
a left mouse click when moving a cursor around on a map. We'd planned on
using KEY_SELECT for that since its proximity to KEY_OK made us think it
was intended to confirm selection of an item rather than to select the
next item.

In our application, the focus key will move between containers on the
same display, but we felt it was different than KEY_CYCLEWINDOWS or KEY_TAB.

 >> +/* Move between highlightable items */
 >> +#define KEY_NEXT_HIGHLIGHT        0x27c
 >> +#define KEY_PREVIOUS_HIGHLIGHT        0x27d
 >
 > I wonder if KEY_NEXT and KEY_PREVIOUS would be suitable for your
 > application.
 >

KEY_NEXT/KEY_PREVIOUS seemed to be designated as media-related to
control chapters in the remote controller documentation, so our initial
proposal avoided repurposing those event codes. We anticipate needing
keys for next chapter/previous chapter to control our media inputs in
the future, so using KEY_NEXT/KEY_PREVIOUS for highlight movement now
could lead to conflicts for us down the road.

In our application, the next/previous highlight will transition the
focus to elements within the same UI container.

 >> +/* Navigate Displays */
 >> +#define KEY_NEXT_DISPLAY        0x27f
 >> +#define KEY_PREVIOUS_DISPLAY        0x280
 >
 > I am not familiar with marine navigation devices, could you please
 > explain a bit more about displays you are navigating. Are there separate
 > physical screens or are there several application screens/views you are
 > switching between?
 >

Correct. These are separate physical screens. These keys would
transition the current highlight between separate physical screens that
are located next to each other.


 >> +#define KEY_BRIGHTNESS_MENU        0x28c
 >
 > Do you have multiple menus in the application?
 >

Our marine displays do have multiple menus. This physical key will bring
up a menu to immediately adjust the display brightness. Our displays go
extremely bright and extremely dim to support outdoor use during the day
or at night. This physical key can be used to quickly adjust brightness.

Thank you for your assistance.

________________________________

CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-03-03 23:28     ` Shelby Heffron
@ 2022-03-11 19:05       ` Shelby Heffron
  2022-03-21 13:45       ` Shelby Heffron
  2022-04-09  3:38       ` Dmitry Torokhov
  2 siblings, 0 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-03-11 19:05 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Hi Dmitry,

Please let me know if you have any additional feedback after a more
detailed explanation our application.

Thank you.

________________________________

CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-03-03 23:28     ` Shelby Heffron
  2022-03-11 19:05       ` Shelby Heffron
@ 2022-03-21 13:45       ` Shelby Heffron
  2022-04-09  3:38       ` Dmitry Torokhov
  2 siblings, 0 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-03-21 13:45 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Hello Dmitry,

Please let me know if you have any further suggestions for this patch
after the more detailed description of our system.

Thank you.

________________________________

CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-02-18  7:02   ` Dmitry Torokhov
  2022-02-18 20:53     ` Shelby Heffron
  2022-03-03 23:28     ` Shelby Heffron
@ 2022-03-29  3:40     ` Shelby Heffron
  2022-04-05 13:29     ` Shelby Heffron
  3 siblings, 0 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-03-29  3:40 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Hi Dmitry,

Please let me know if you think that any additional changes are needed
on this patch.

Thank you.

________________________________

CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-02-18  7:02   ` Dmitry Torokhov
                       ` (2 preceding siblings ...)
  2022-03-29  3:40     ` Shelby Heffron
@ 2022-04-05 13:29     ` Shelby Heffron
  3 siblings, 0 replies; 14+ messages in thread
From: Shelby Heffron @ 2022-04-05 13:29 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-input, linux-kernel

Hi Dmitry,

Please let me know if you have any further suggestions on this patch.

Thank you.

________________________________

CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v2] input: Add Marine Navigation Keycodes
  2022-03-03 23:28     ` Shelby Heffron
  2022-03-11 19:05       ` Shelby Heffron
  2022-03-21 13:45       ` Shelby Heffron
@ 2022-04-09  3:38       ` Dmitry Torokhov
  2 siblings, 0 replies; 14+ messages in thread
From: Dmitry Torokhov @ 2022-04-09  3:38 UTC (permalink / raw)
  To: Shelby Heffron; +Cc: linux-input, linux-kernel

Hi Shelby,

On Thu, Mar 03, 2022 at 05:28:52PM -0600, Shelby Heffron wrote:
> Hi Dmitry,
> 
> We would like to take a step back and describe our application in more
> detail. We are supporting global physical keys on devices such as boat
> steering wheels that will interact with multiple marine navigation
> displays on the vessel. Could you please provide some further
> suggestions based on our requested keys and the description below.

Thank you very much for the detailed explanation.

> 
> Our marine displays usually show a single fullscreen application which
> may show multiple types of data at the same time. For example, the
> application may be showing a map, RADAR, and some media controls at the
> same time. There can also be a control bar at the bottom of the screen
> giving options to do things like return to the home page or open a menu.
> Multiple network-connected marine displays can interact with each other
> to share a single keyed input device across them. In this setup, there
> will only be one active focus for the set of those connected devices.
> For multi-display setups, the focus can transition between displays
> either through the use of dedicated keys to immediately move the focus
> to the previous or next display or the focus can transition between
> displays automatically (e.g. when the user requests to move the focus to
> the next element but we're already at the current display's last element
> we will move the focus to the first element of the next display).
> 
> For the elements displayed on a single marine display, our UI supports
> grouping them together into containers which function somewhat similarly
> to a group of radio buttons in a more-traditional application. We would
> place the previously mentioned map, RADAR, media controls, and bottom
> bar each into their own container. Containers also get used for things
> like menu pages where we have a list of items to scroll through and a
> separate list of buttons that can be used to take actions on the
> currently selected item. The focus can move between items within a
> container by using keys like up, down, left, right, next highlight, and
> previous highlight. To make navigating between these containers more
> convenient, we have a focus key that moves to the next container. This
> focus key behaves similarly to the tab key with a traditional
> application that has multiple sets of radio buttons, but we also have
> support for embedding traditional keyboard input into one of these
> containers where we would need KEY_TAB to behave normally. Our focus key
> does not change the visibility of anything on screen, which made it feel
> a little different than the description of KEY_CYCLEWINDOWS from the
> video remote controller documentation
> (https://www.kernel.org/doc/html/v4.9/media/uapi/rc/rc-tables.html), so
> our initial proposal avoided repurposing that event code.
> 
> >> +/* Toggle the focus in or out */
> >> +#define KEY_FOCUS_TOGGLE        0x27b
> >
> > Could it be served by KEY_SELECT?
> >
> 
> We have a select key on our marine display which is used for actions
> like to select/press the currently-focused button or behave similarly to
> a left mouse click when moving a cursor around on a map. We'd planned on
> using KEY_SELECT for that since its proximity to KEY_OK made us think it
> was intended to confirm selection of an item rather than to select the
> next item.
> 
> In our application, the focus key will move between containers on the
> same display, but we felt it was different than KEY_CYCLEWINDOWS or KEY_TAB.

I see. In HID spec we have consumer code 0x1A3 AL Next Task/Application
that seems to be fitting the bill. And we map it to KEY_NEXT (to which
you voicing the concerns below). But HID also defines

0xb5 Scan Next Track - Moves to the next chapter or track boundary
0xb6 Scan Previous Track - Moves to the previous chapter or track
boundary

that we map to KEY_NEXTSONG and KEY_PREVIOUSSONG and I recommend your
media application(s) to use those for media controls.

> 
> >> +/* Move between highlightable items */
> >> +#define KEY_NEXT_HIGHLIGHT        0x27c
> >> +#define KEY_PREVIOUS_HIGHLIGHT        0x27d
> >
> > I wonder if KEY_NEXT and KEY_PREVIOUS would be suitable for your
> > application.
> >
> 
> KEY_NEXT/KEY_PREVIOUS seemed to be designated as media-related to
> control chapters in the remote controller documentation, so our initial
> proposal avoided repurposing those event codes. We anticipate needing
> keys for next chapter/previous chapter to control our media inputs in
> the future, so using KEY_NEXT/KEY_PREVIOUS for highlight movement now
> could lead to conflicts for us down the road.
> 
> In our application, the next/previous highlight will transition the
> focus to elements within the same UI container.

OK, I see. Could we call them KEY_NEXT_ELEMENT/KEY_PREV_ELEMENT maybe?
And I would like to see comments describing intended use.

> 
> >> +/* Navigate Displays */
> >> +#define KEY_NEXT_DISPLAY        0x27f
> >> +#define KEY_PREVIOUS_DISPLAY        0x280
> >
> > I am not familiar with marine navigation devices, could you please
> > explain a bit more about displays you are navigating. Are there separate
> > physical screens or are there several application screens/views you are
> > switching between?
> >
> 
> Correct. These are separate physical screens. These keys would
> transition the current highlight between separate physical screens that
> are located next to each other.

OK, so we have the following keycodes:

KEY_SWITCHVIDEOMODE
KEY_VIDEO_NEXT
KEY_VIDEO_PREV

They are intended to request to switch between physical displays (see
drivers/acpi/acpi_video.c) and were introduced specifically for that in 
a7ecd1ea913346a72f41a002c365882dc05c9bd5.

The comments on KEY_VIDEO_NEXT and KEY_VIDEO_PREV are unfortunate, I'll
need to fix that, and their use in hid-input.c,
rc-terratec-cinergy-c-pci, and rc-tivo are not correct. I think,
however, that there are not a lot of systems where we have combination
of multiple signal sources, and multiple output displays, so probably
this clash does not matter in practice.

> 
> 
> >> +#define KEY_BRIGHTNESS_MENU        0x28c
> >
> > Do you have multiple menus in the application?
> >
> 
> Our marine displays do have multiple menus. This physical key will bring
> up a menu to immediately adjust the display brightness. Our displays go
> extremely bright and extremely dim to support outdoor use during the day
> or at night. This physical key can be used to quickly adjust brightness.

OK, then we shall have it.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH] [V3] input: Add Marine Navigation Keycodes
  2022-01-26 21:12 ` [PATCH v2] " Shelby Heffron
  2022-02-11  4:47   ` Shelby Heffron
  2022-02-18  7:02   ` Dmitry Torokhov
@ 2022-04-14  1:53   ` Shelby Heffron
  2022-04-17 20:23     ` Dmitry Torokhov
  2 siblings, 1 reply; 14+ messages in thread
From: Shelby Heffron @ 2022-04-14  1:53 UTC (permalink / raw)
  To: dmitry.torokhov; +Cc: linux-input, linux-kernel, Shelby Heffron

Add keycodes that are used by marine navigation devices

Signed-off-by: Shelby Heffron <Shelby.Heffron@garmin.com>
---
 include/uapi/linux/input-event-codes.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 7989d9483ea7..ec1daa459fd4 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -662,6 +662,27 @@
 /* Select an area of screen to be copied */
 #define KEY_SELECTIVE_SCREENSHOT       0x27a

+/* Move the focus to the next or previous user controllable element within a UI container */
+#define KEY_NEXT_ELEMENT               0x27b
+#define KEY_PREVIOUS_ELEMENT           0x27c
+
+/* Toggle Autopilot engagement */
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE    0x27d
+
+/* Shortcut Keys */
+#define KEY_MARK_WAYPOINT              0x27e
+#define KEY_SOS                                0x27f
+#define KEY_NAV_CHART                  0x280
+#define KEY_FISHING_CHART              0x281
+#define KEY_SINGLE_RANGE_RADAR         0x282
+#define KEY_DUAL_RANGE_RADAR           0x283
+#define KEY_RADAR_OVERLAY              0x284
+#define KEY_TRADITIONAL_SONAR          0x285
+#define KEY_CLEARVU_SONAR              0x286
+#define KEY_SIDEVU_SONAR               0x287
+#define KEY_NAV_INFO                   0x288
+#define KEY_BRIGHTNESS_MENU            0x289
+
 /*
  * Some keyboards have keys which do not have a defined meaning, these keys
  * are intended to be programmed / bound to macros by the user. For most
--
2.35.2


________________________________

CONFIDENTIALITY NOTICE: This email and any attachments are for the sole use of the intended recipient(s) and contain information that may be Garmin confidential and/or Garmin legally privileged. If you have received this email in error, please notify the sender by reply email and delete the message. Any disclosure, copying, distribution or use of this communication (including attachments) by someone other than the intended recipient is prohibited. Thank you.

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] [V3] input: Add Marine Navigation Keycodes
  2022-04-14  1:53   ` [PATCH] [V3] " Shelby Heffron
@ 2022-04-17 20:23     ` Dmitry Torokhov
  0 siblings, 0 replies; 14+ messages in thread
From: Dmitry Torokhov @ 2022-04-17 20:23 UTC (permalink / raw)
  To: Shelby Heffron; +Cc: linux-input, linux-kernel

On Wed, Apr 13, 2022 at 08:53:56PM -0500, Shelby Heffron wrote:
> Add keycodes that are used by marine navigation devices
> 
> Signed-off-by: Shelby Heffron <Shelby.Heffron@garmin.com>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-04-17 20:23 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-22 23:57 [PATCH] input: Add Marine Navigation Keycodes Matthew Stephenson
2022-01-26 21:12 ` [PATCH v2] " Shelby Heffron
2022-02-11  4:47   ` Shelby Heffron
2022-02-17 23:41     ` Shelby Heffron
2022-02-18  7:02   ` Dmitry Torokhov
2022-02-18 20:53     ` Shelby Heffron
2022-03-03 23:28     ` Shelby Heffron
2022-03-11 19:05       ` Shelby Heffron
2022-03-21 13:45       ` Shelby Heffron
2022-04-09  3:38       ` Dmitry Torokhov
2022-03-29  3:40     ` Shelby Heffron
2022-04-05 13:29     ` Shelby Heffron
2022-04-14  1:53   ` [PATCH] [V3] " Shelby Heffron
2022-04-17 20:23     ` Dmitry Torokhov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.