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]

Reply via email to