Xpra-org / xpra-html5

HTML5 client for Xpra
Mozilla Public License 2.0
209 stars 55 forks source link

Can't send Shift+Tab (it sends Tab) #237

Open Rush-iam opened 1 year ago

Rush-iam commented 1 year ago

Can't send Shift+Tab (it sends Tab)

s-kotte commented 1 year ago

Can confirm that Shift + Tab does not work with the html5 client. Caps + Tab seems to work. With xpra on a Windows computer shift tab works fine.

xpra version: 4.4.6 html5-client version: 7.0

Tested with Firefox and Chrome, for testing you can use any program e.g. gedit xpra logs:

2023-07-05 17:09:55,204 will try levels: [1, 5, 0, 4, 3, 7, 2, 6]
2023-07-05 17:09:55,204 do_get_keycode(16, 'Shift_L', True, ['shift'], 16, 'Shift', 0)=50 (level=0, shift=True, mode=0, keysyms=['Shift_L'])
2023-07-05 17:09:55,204 not toggling any modifiers state for keysyms=['Shift_L']
2023-07-05 17:09:55,204 process_key_action(['key-action', 1, 'Shift_L', True, ('shift',), 16, 'Shift', 16, 0]) server keycode=50, group=0
2023-07-05 17:09:55,204 set_keyboard_layout_group(0) ignored, no layout groups support
2023-07-05 17:09:55,204 set_keyboard_layout_group(0) ignored, value unchanged
2023-07-05 17:09:55,205 filtered_modifiers_set([])=set()
2023-07-05 17:09:55,205 modifier 'shift' ignored (in ignored keynames=['Shift_L', 'Shift_R'])
2023-07-05 17:09:55,206 filtered_modifiers_set(['shift'])=set()
2023-07-05 17:09:55,206 handle_key((1, True, 'Shift_L', 16, 50, ['shift'], True, True))
2023-07-05 17:09:55,206 handle keycode pressing    50: key 'Shift_L'
2023-07-05 17:09:55,207 fake_key(50, True)
2023-07-05 17:09:55,210 will try levels: [1, 5, 0, 4, 3, 7, 2, 6]
2023-07-05 17:09:55,210 do_get_keycode(9, 'Tab', True, ['shift'], 9, 'Tab', 0)=23 (level=0, shift=True, mode=0, keysyms=['Tab', 'ISO_Left_Tab'])
2023-07-05 17:09:55,210 removing 'shift' from modifiers
2023-07-05 17:09:55,210 process_key_action(['key-action', 1, 'Tab', True, ('shift',), 9, 'Tab', 9, 0]) server keycode=23, group=0
2023-07-05 17:09:55,211 set_keyboard_layout_group(0) ignored, no layout groups support
2023-07-05 17:09:55,211 set_keyboard_layout_group(0) ignored, value unchanged
2023-07-05 17:09:55,211 filtered_modifiers_set(['shift'])={'shift'}
2023-07-05 17:09:55,211 filtered_modifiers_set([])=set()
2023-07-05 17:09:55,211 make_keymask_match([]) current mask: {'shift'}, wanted: set(), ignoring=23/['Tab'], keys_pressed={50: 'Shift_L'}
2023-07-05 17:09:55,211 found the key pressed for shift: Shift_L
2023-07-05 17:09:55,211 keynames(shift)=['Shift_L', 'Shift_R'], keycodes=[50, 62], nuisance=False, nuisance keys={'lock', 'mod2'}
2023-07-05 17:09:55,212 change_mask(remove) [] modifier 'shift' using keycode 50
2023-07-05 17:09:55,212 change_mask({'shift'}, False, remove) failed=[]
2023-07-05 17:09:55,212 change_mask(set(), True, add) failed=[]
2023-07-05 17:09:55,212 is_modifier(23) not found
2023-07-05 17:09:55,212 handle_key((1, True, 'Tab', 9, 23, [], False, True))
2023-07-05 17:09:55,212 handle keycode pressing    23: key 'Tab'
2023-07-05 17:09:55,213 fake_key(23, True)
2023-07-05 17:09:55,295 process_key_action(['key-action', 1, 'Tab', False, ('shift',), 9, 'Tab', 9, 0]) server keycode=23, group=0
2023-07-05 17:09:55,295 set_keyboard_layout_group(0) ignored, no layout groups support
2023-07-05 17:09:55,295 set_keyboard_layout_group(0) ignored, value unchanged
2023-07-05 17:09:55,296 filtered_modifiers_set([])=set()
2023-07-05 17:09:55,296 filtered_modifiers_set(['shift'])={'shift'}
2023-07-05 17:09:55,296 make_keymask_match(['shift']) current mask: set(), wanted: {'shift'}, ignoring=23/['Tab'], keys_pressed={50: 'Shift_L', 23: 'Tab'}
2023-07-05 17:09:55,296 change_mask(set(), False, remove) failed=[]
2023-07-05 17:09:55,296 found the key pressed for shift: Shift_L
2023-07-05 17:09:55,296 keynames(shift)=['Shift_L', 'Shift_R'], keycodes=[50, 62], nuisance=False, nuisance keys={'lock', 'mod2'}
2023-07-05 17:09:55,297 change_mask(add) ['shift'] modifier 'shift' using keycode 50
2023-07-05 17:09:55,297 change_mask({'shift'}, True, add) failed=[]
2023-07-05 17:09:55,297 is_modifier(23) not found
2023-07-05 17:09:55,297 handle_key((1, False, 'Tab', 9, 23, ['shift'], False, True))
2023-07-05 17:09:55,297 handle keycode unpressing  23: key 'Tab'
2023-07-05 17:09:55,297 fake_key(23, False)
2023-07-05 17:09:55,298 process_key_action(['key-action', 1, 'Shift_L', False, (), 16, 'shift', 16, 0]) server keycode=50, group=0
2023-07-05 17:09:55,298 set_keyboard_layout_group(0) ignored, no layout groups support
2023-07-05 17:09:55,298 set_keyboard_layout_group(0) ignored, value unchanged
2023-07-05 17:09:55,299 modifier 'shift' ignored (in ignored keynames=['Shift_L', 'Shift_R'])
2023-07-05 17:09:55,299 filtered_modifiers_set(['shift'])=set()
2023-07-05 17:09:55,299 filtered_modifiers_set([])=set()
2023-07-05 17:09:55,299 handle_key((1, False, 'Shift_L', 16, 50, [], True, True))
2023-07-05 17:09:55,299 handle keycode unpressing  50: key 'Shift_L'
2023-07-05 17:09:55,299 fake_key(50, False)

html5-client logs:

clipboard pending= false buffer= <empty string> Utilities.js:777:30
keyboard last keycode pressed= 0 , keycode= 16 , pressed= true , str= Shift Utilities.js:777:30
keyboard processKeyEvent( true ,  
keydown Shift { target: textarea#pasteboard, key: "Shift", charCode: 0, keyCode: 16 }
 ) key= ShiftLeft keycode= 16 dead= false Utilities.js:777:30
keyboard _get_keyboard_layout() keyboard_layout= de Utilities.js:777:30
keyboard passing clipboard modifier key event to browser: Shift_L Utilities.js:777:30
keyboard last keycode pressed= 16 , keycode= 9 , pressed= true , str= Tab Utilities.js:777:30
keyboard processKeyEvent( true ,  
keydown Shift { target: textarea#pasteboard, key: "Tab", charCode: 0, keyCode: 9 }
 ) key= Tab keycode= 9 dead= false Utilities.js:777:30
keyboard _get_keyboard_layout() keyboard_layout= de Utilities.js:777:30
keyboard last keycode pressed= 9 , keycode= 9 , pressed= false , str= Tab Utilities.js:777:30
keyboard processKeyEvent( false ,  
keyup Shift { target: textarea#pasteboard, key: "Tab", charCode: 0, keyCode: 9 }
 ) key= Tab keycode= 9 dead= false Utilities.js:777:30
keyboard _get_keyboard_layout() keyboard_layout= de Utilities.js:777:30
keyboard last keycode pressed= 0 , keycode= 16 , pressed= false , str= Shift Utilities.js:777:30
keyboard processKeyEvent( false ,  
keyup { target: textarea#pasteboard, key: "Shift", charCode: 0, keyCode: 16 }
 ) key= ShiftLeft keycode= 16 dead= false Utilities.js:777:30
keyboard passing clipboard modifier key event to browser: Shift_L Utilities.js:777:30
visibilitychange hidden= true connected= true Utilities.js:789:28
visibilitychange hidden= false connected= true Utilities.js:789:28
visibilitychange hidden= true connected= true Utilities.js:789:28