ppisa opened a new pull request, #19577:
URL: https://github.com/apache/nuttx/pull/19577
## Summary
As analyzed, the NuttX initial keyboard API design uses event type
KBD_SPECPRESS/KBD_SPECREL to deliver special keys and KBD_PRESS/KBD_RELEASE to
deliver ASCII codes.
But it seems that this design choice has not been followed in virtio-input,
goldfish_events and sim_keyboard designs and result is that external keyboard
special keys events are mapped to KEYCODE_xxx values which start from 0 and
overlaps with ASCII keys.
The issue is tracked under #19527 number.
This set of changes correct events reporting for mentioned keyboards to
report right event type for special keys.
The solution is only partial at this phase.
Virtual and more complex keyboards usually deliver key pressures as
scancodes (key position on keyboard) and mapping to ASCII for keys which
corresponds to letter and other similar keys lacks mapping of national
alphabets, second row symbols and switch to capital letter according to
modifiers.
## Impact
Any attempt to use virtio-input, goldfish_events and sim_keyboard is
broken, keys
which could be delivered as ASCII codes are often incorrectly remapped
to special key code but delivered as regular ASCII keys or they are delivered
as scancodes. Special keys are not marked as special so they are incorrectly
interpreted as ASCII coded.
## Testing
The code has been tested with SIM BSP and updated Microwidows example
as well as with qemu-intel64:fb/qemu-intel64:mw configuration.
In this case multiple keyboard options have been used.
Invocation with VirtIO keyboard
````
qemu-system-x86_64 -cpu host -enable-kvm -m 2G -cdrom boot.iso -s \
-device qemu-xhci -device virtio-keyboard-pci -device usb-mouse \
-vga cirrus
````
Invocation with raw USB keyboard
````
qemu-system-x86_64 -cpu host -enable-kvm -m 2G -cdrom boot.iso -s \
-device qemu-xhci -device virtio-keyboard-pci -device usb-mouse \
-vga cirrus
````
It would worth to test code with some other NuttX demos which are know
to work with both special keys and keys reported in ASCII range.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]