You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@guacamole.apache.org by "Mike Jumper (Jira)" <ji...@apache.org> on 2019/10/07 15:27:00 UTC
[jira] [Updated] (GUACAMOLE-892) Ctrl+Alt+Shift menu call is
incompatible with Alt+Shift keyboard layout swith on Linux
[ https://issues.apache.org/jira/browse/GUACAMOLE-892?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mike Jumper updated GUACAMOLE-892:
----------------------------------
Description:
The problem is that on Linux in case of such key-combo we receive {{"GroupNext"}} key instaead of "Shift".
In Firefox the keydown event looks like this:
{code:none}
keydown Alt-Control
altKey: true
bubbles: true
cancelBubble: false
cancelable: true
charCode: 0
code: "ShiftLeft"
composed: true
ctrlKey: true
currentTarget: null
defaultPrevented: false
detail: 0
eventPhase: 0
explicitOriginalTarget: <body>
isComposing: false
isTrusted: true
key: "GroupNext"
keyCode: 16
layerX: 0
layerY: 0
location: 0
metaKey: false
originalTarget: <body>
rangeOffset: 0
rangeParent: null
repeat: false
returnValue: true
shiftKey: false
srcElement: <body>
target: <body>
timeStamp: 2320832
type: "keydown"
view: Window about:blank
which: 16
<get isTrusted()>: function isTrusted()
<prototype>: KeyboardEventPrototype { getModifierState: getModifierState(), initKeyboardEvent: initKeyboardEvent(), initKeyEvent: initKeyEvent(), ... }{code}
So I guess the most easy way to fix it could be to change the order here [https://github.com/apache/guacamole-client/blob/9d485ffcf755e88cccf9a7aadc72911633277117/guacamole-common-js/src/main/webapp/modules/Keyboard.js#L249]
in the same way as in KeyupEvent.
But unfortunately in Chrome we get keyCode == 0
{code:none}
KeyboardEvent {isTrusted: true, key: "GroupNext", code: "ShiftLeft", location: 1, ctrlKey: true, ...}
altKey: true
bubbles: true
cancelBubble: false
cancelable: true
charCode: 0
code: "ShiftLeft"
composed: true
ctrlKey: true
currentTarget: null
defaultPrevented: false
detail: 0
eventPhase: 0
isComposing: false
isTrusted: true
key: "GroupNext"
keyCode: 0
location: 1
metaKey: false
path: (4) [body.light-chip.inited, html, document, Window]
repeat: false
returnValue: true
shiftKey: false
sourceCapabilities: InputDeviceCapabilities {firesTouchEvents: false}
srcElement: body.light-chip.inited
target: body.light-chip.inited
timeStamp: 9475.445000000036
type: "keydown"
view: Window {parent: Window, postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, ...}
which: 0
__proto__: KeyboardEvent
{code}
So it looks like the only way to guess the real Shift key is event.code.
was:
The problem is that on Linux in case of such key-combo we receive {{"GroupNext"}} key instaead of "Shift".
In Firefox the keydown event looks like this:
{code:none}
keydown Alt-Control
altKey: true
bubbles: true
cancelBubble: false
cancelable: true
charCode: 0
code: "ShiftLeft"
composed: true
ctrlKey: true
currentTarget: null
defaultPrevented: false
detail: 0
eventPhase: 0
explicitOriginalTarget: <body>
isComposing: false
isTrusted: true
key: "GroupNext"
keyCode: 16
layerX: 0
layerY: 0
location: 0
metaKey: false
originalTarget: <body>
rangeOffset: 0
rangeParent: null
repeat: false
returnValue: true
shiftKey: false
srcElement: <body>
target: <body>
timeStamp: 2320832
type: "keydown"
view: Window about:blank
which: 16
<get isTrusted()>: function isTrusted()
<prototype>: KeyboardEventPrototype { getModifierState: getModifierState(), initKeyboardEvent: initKeyboardEvent(), initKeyEvent: initKeyEvent(), ... }{code}
So I guess the most easy way to fix it could be to change the order here [https://github.com/apache/guacamole-client/blob/9d485ffcf755e88cccf9a7aadc72911633277117/guacamole-common-js/src/main/webapp/modules/Keyboard.js#L249]
in the same way as in KeyupEvent.
But unfortunately in Chrome we get keyCode == 0
{code:java}
KeyboardEvent {isTrusted: true, key: "GroupNext", code: "ShiftLeft", location: 1, ctrlKey: true, ...}
altKey: true
bubbles: true
cancelBubble: false
cancelable: true
charCode: 0
code: "ShiftLeft"
composed: true
ctrlKey: true
currentTarget: null
defaultPrevented: false
detail: 0
eventPhase: 0
isComposing: false
isTrusted: true
key: "GroupNext"
keyCode: 0
location: 1
metaKey: false
path: (4) [body.light-chip.inited, html, document, Window]
repeat: false
returnValue: true
shiftKey: false
sourceCapabilities: InputDeviceCapabilities {firesTouchEvents: false}
srcElement: body.light-chip.inited
target: body.light-chip.inited
timeStamp: 9475.445000000036
type: "keydown"
view: Window {parent: Window, postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, ...}
which: 0
__proto__: KeyboardEvent
{code}
So it looks like the only way to guess the real Shift key is event.code.
> Ctrl+Alt+Shift menu call is incompatible with Alt+Shift keyboard layout swith on Linux
> --------------------------------------------------------------------------------------
>
> Key: GUACAMOLE-892
> URL: https://issues.apache.org/jira/browse/GUACAMOLE-892
> Project: Guacamole
> Issue Type: Bug
> Components: guacamole-client
> Affects Versions: 1.0.0
> Environment: Ubuntu 18.04.3 LTS
> Firefox 70.0b2 and Chrome 77.0.3865.90
> Reporter: Andrey Doronin
> Priority: Major
>
> The problem is that on Linux in case of such key-combo we receive {{"GroupNext"}} key instaead of "Shift".
> In Firefox the keydown event looks like this:
> {code:none}
> keydown Alt-Control
> altKey: true
> bubbles: true
> cancelBubble: false
> cancelable: true
> charCode: 0
> code: "ShiftLeft"
> composed: true
> ctrlKey: true
> currentTarget: null
> defaultPrevented: false
> detail: 0
> eventPhase: 0
> explicitOriginalTarget: <body>
> isComposing: false
> isTrusted: true
> key: "GroupNext"
> keyCode: 16
> layerX: 0
> layerY: 0
> location: 0
> metaKey: false
> originalTarget: <body>
> rangeOffset: 0
> rangeParent: null
> repeat: false
> returnValue: true
> shiftKey: false
> srcElement: <body>
> target: <body>
> timeStamp: 2320832
> type: "keydown"
> view: Window about:blank
> which: 16
> <get isTrusted()>: function isTrusted()
> <prototype>: KeyboardEventPrototype { getModifierState: getModifierState(), initKeyboardEvent: initKeyboardEvent(), initKeyEvent: initKeyEvent(), ... }{code}
> So I guess the most easy way to fix it could be to change the order here [https://github.com/apache/guacamole-client/blob/9d485ffcf755e88cccf9a7aadc72911633277117/guacamole-common-js/src/main/webapp/modules/Keyboard.js#L249]
> in the same way as in KeyupEvent.
> But unfortunately in Chrome we get keyCode == 0
> {code:none}
> KeyboardEvent {isTrusted: true, key: "GroupNext", code: "ShiftLeft", location: 1, ctrlKey: true, ...}
> altKey: true
> bubbles: true
> cancelBubble: false
> cancelable: true
> charCode: 0
> code: "ShiftLeft"
> composed: true
> ctrlKey: true
> currentTarget: null
> defaultPrevented: false
> detail: 0
> eventPhase: 0
> isComposing: false
> isTrusted: true
> key: "GroupNext"
> keyCode: 0
> location: 1
> metaKey: false
> path: (4) [body.light-chip.inited, html, document, Window]
> repeat: false
> returnValue: true
> shiftKey: false
> sourceCapabilities: InputDeviceCapabilities {firesTouchEvents: false}
> srcElement: body.light-chip.inited
> target: body.light-chip.inited
> timeStamp: 9475.445000000036
> type: "keydown"
> view: Window {parent: Window, postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, ...}
> which: 0
> __proto__: KeyboardEvent
> {code}
> So it looks like the only way to guess the real Shift key is event.code.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)