mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-07 05:31:22 +00:00
GUAC-1170: Load keyboard layout within guacOsk directive. Update translation to point to new JSON layout. Remove old XML layouts.
This commit is contained in:
@@ -40,8 +40,13 @@ angular.module('osk').directive('guacOsk', [function guacOsk() {
|
||||
},
|
||||
|
||||
templateUrl: 'app/osk/templates/guacOsk.html',
|
||||
controller: ['$scope', '$rootScope', '$window', '$element',
|
||||
function guacOsk($scope, $rootScope, $window, $element) {
|
||||
controller: ['$scope', '$injector', '$element',
|
||||
function guacOsk($scope, $injector, $element) {
|
||||
|
||||
// Required services
|
||||
var $http = $injector.get('$http');
|
||||
var $rootScope = $injector.get('$rootScope');
|
||||
var cacheService = $injector.get('cacheService');
|
||||
|
||||
/**
|
||||
* The current on-screen keyboard, if any.
|
||||
@@ -67,7 +72,7 @@ angular.module('osk').directive('guacOsk', [function guacOsk() {
|
||||
};
|
||||
|
||||
// Set layout whenever URL changes
|
||||
$scope.$watch("layout", function setLayout(layout) {
|
||||
$scope.$watch("layout", function setLayout(url) {
|
||||
|
||||
// Remove current keyboard
|
||||
if (keyboard) {
|
||||
@@ -76,24 +81,40 @@ angular.module('osk').directive('guacOsk', [function guacOsk() {
|
||||
}
|
||||
|
||||
// Load new keyboard
|
||||
if (layout) {
|
||||
if (url) {
|
||||
|
||||
// Add OSK element
|
||||
keyboard = new Guacamole.OnScreenKeyboard(layout);
|
||||
main.appendChild(keyboard.getElement());
|
||||
// Retrieve layout JSON
|
||||
$http({
|
||||
cache : cacheService.languages,
|
||||
method : 'GET',
|
||||
url : url
|
||||
})
|
||||
|
||||
// Init size
|
||||
keyboard.resize(main.offsetWidth);
|
||||
// Build OSK with retrieved layout
|
||||
.success(function layoutRetrieved(layout) {
|
||||
|
||||
// Broadcast keydown for each key pressed
|
||||
keyboard.onkeydown = function(keysym) {
|
||||
$rootScope.$broadcast('guacSyntheticKeydown', keysym);
|
||||
};
|
||||
|
||||
// Broadcast keydown for each key released
|
||||
keyboard.onkeyup = function(keysym) {
|
||||
$rootScope.$broadcast('guacSyntheticKeyup', keysym);
|
||||
};
|
||||
// Abort if the layout changed while we were waiting for a response
|
||||
if ($scope.layout !== url)
|
||||
return;
|
||||
|
||||
// Add OSK element
|
||||
keyboard = new Guacamole.OnScreenKeyboard(layout);
|
||||
main.appendChild(keyboard.getElement());
|
||||
|
||||
// Init size
|
||||
keyboard.resize(main.offsetWidth);
|
||||
|
||||
// Broadcast keydown for each key pressed
|
||||
keyboard.onkeydown = function(keysym) {
|
||||
$rootScope.$broadcast('guacSyntheticKeydown', keysym);
|
||||
};
|
||||
|
||||
// Broadcast keydown for each key released
|
||||
keyboard.onkeyup = function(keysym) {
|
||||
$rootScope.$broadcast('guacSyntheticKeyup', keysym);
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
@@ -1,316 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE keyboard PUBLIC
|
||||
"-//Guacamole/Guacamole Onscreen Keyboard DTD 0.6.0//EN"
|
||||
"http://guac-dev.org/pub/dtd/guacamole-osk-0.6.0.dtd">
|
||||
|
||||
<!--
|
||||
Copyright (C) 2013 Glyptodon LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
-->
|
||||
|
||||
<keyboard lang="en_US" layout="qwerty" size="16.3">
|
||||
<row>
|
||||
<key size="1.5">
|
||||
<cap keysym="0xFF09">Tab</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>q</cap>
|
||||
<cap if="numsym">1</cap>
|
||||
<cap if="shift">Q</cap>
|
||||
<cap if="numsym,shift">q</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>w</cap>
|
||||
<cap if="numsym">2</cap>
|
||||
<cap if="shift">W</cap>
|
||||
<cap if="numsym,shift">w</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>e</cap>
|
||||
<cap if="numsym">3</cap>
|
||||
<cap if="shift">E</cap>
|
||||
<cap if="numsym,shift">e</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>r</cap>
|
||||
<cap if="numsym">4</cap>
|
||||
<cap if="shift">R</cap>
|
||||
<cap if="numsym,shift">r</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>t</cap>
|
||||
<cap if="numsym">5</cap>
|
||||
<cap if="shift">T</cap>
|
||||
<cap if="numsym,shift">t</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>y</cap>
|
||||
<cap if="numsym">6</cap>
|
||||
<cap if="shift">Y</cap>
|
||||
<cap if="numsym,shift">y</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>u</cap>
|
||||
<cap if="numsym">7</cap>
|
||||
<cap if="shift">U</cap>
|
||||
<cap if="numsym,shift">u</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>i</cap>
|
||||
<cap if="numsym">8</cap>
|
||||
<cap if="shift">I</cap>
|
||||
<cap if="numsym,shift">i</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>o</cap>
|
||||
<cap if="numsym">9</cap>
|
||||
<cap if="shift">O</cap>
|
||||
<cap if="numsym,shift">o</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>p</cap>
|
||||
<cap if="numsym">0</cap>
|
||||
<cap if="shift">P</cap>
|
||||
<cap if="numsym,shift">p</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>[</cap>
|
||||
<cap if="shift">{</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>]</cap>
|
||||
<cap if="shift">}</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.5">
|
||||
<cap keysym="0xFF08">Back</cap>
|
||||
</key>
|
||||
</row>
|
||||
|
||||
<row><gap size="0.1"/></row>
|
||||
|
||||
<row>
|
||||
<key size="1.85" class="numsym">
|
||||
<cap modifier="numsym" sticky="true">?123</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>a</cap>
|
||||
<cap if="numsym">#</cap>
|
||||
<cap if="shift">A</cap>
|
||||
<cap if="numsym,shift">a</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>s</cap>
|
||||
<cap if="numsym">$</cap>
|
||||
<cap if="shift">S</cap>
|
||||
<cap if="numsym,shift">s</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>d</cap>
|
||||
<cap if="numsym">%</cap>
|
||||
<cap if="shift">D</cap>
|
||||
<cap if="numsym,shift">d</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>f</cap>
|
||||
<cap if="numsym">&</cap>
|
||||
<cap if="shift">F</cap>
|
||||
<cap if="numsym,shift">f</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>g</cap>
|
||||
<cap if="numsym">*</cap>
|
||||
<cap if="shift">G</cap>
|
||||
<cap if="numsym,shift">g</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>h</cap>
|
||||
<cap if="numsym">-</cap>
|
||||
<cap if="shift">H</cap>
|
||||
<cap if="numsym,shift">h</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>j</cap>
|
||||
<cap if="numsym">+</cap>
|
||||
<cap if="shift">J</cap>
|
||||
<cap if="numsym,shift">j</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>k</cap>
|
||||
<cap if="numsym">(</cap>
|
||||
<cap if="shift">K</cap>
|
||||
<cap if="numsym,shift">k</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>l</cap>
|
||||
<cap if="numsym">)</cap>
|
||||
<cap if="shift">L</cap>
|
||||
<cap if="numsym,shift">l</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>;</cap>
|
||||
<cap if="shift">:</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>'</cap>
|
||||
<cap if="shift">"</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="2.25">
|
||||
<cap keysym="0xFF0D">Enter</cap>
|
||||
</key>
|
||||
</row>
|
||||
|
||||
<row><gap size="0.1"/></row>
|
||||
|
||||
<row>
|
||||
<key size="2.1" class="shift">
|
||||
<cap modifier="shift" keysym="0xFFE1">Shift</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>z</cap>
|
||||
<cap if="numsym"><</cap>
|
||||
<cap if="shift">Z</cap>
|
||||
<cap if="numsym,shift">z</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>x</cap>
|
||||
<cap if="numsym">></cap>
|
||||
<cap if="shift">X</cap>
|
||||
<cap if="numsym,shift">x</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>c</cap>
|
||||
<cap if="numsym">=</cap>
|
||||
<cap if="shift">C</cap>
|
||||
<cap if="numsym,shift">c</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>v</cap>
|
||||
<cap if="numsym">'</cap>
|
||||
<cap if="shift">V</cap>
|
||||
<cap if="numsym,shift">v</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>b</cap>
|
||||
<cap if="numsym">;</cap>
|
||||
<cap if="shift">B</cap>
|
||||
<cap if="numsym,shift">b</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>n</cap>
|
||||
<cap if="numsym">,</cap>
|
||||
<cap if="shift">N</cap>
|
||||
<cap if="numsym,shift">n</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>m</cap>
|
||||
<cap if="numsym">.</cap>
|
||||
<cap if="shift">M</cap>
|
||||
<cap if="numsym,shift">m</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>,</cap>
|
||||
<cap if="numsym">!</cap>
|
||||
<cap if="shift">!</cap>
|
||||
<cap if="numsym,shift">!</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>.</cap>
|
||||
<cap if="numsym">?</cap>
|
||||
<cap if="shift">?</cap>
|
||||
<cap if="numsym,shift">?</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>/</cap>
|
||||
<cap if="shift">?</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="3.1" class="shift">
|
||||
<cap modifier="shift" keysym="0xFFE2">Shift</cap>
|
||||
</key>
|
||||
</row>
|
||||
|
||||
<row><gap size="0.1"/></row>
|
||||
|
||||
<row>
|
||||
<key size="1.6" class="control">
|
||||
<cap modifier="control" keysym="0xFFE3">Ctrl</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="super">
|
||||
<cap modifier="super" keysym="0xFFEB">Super</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="alt">
|
||||
<cap modifier="alt" keysym="0xFFE9">Alt</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="6.1">
|
||||
<cap> </cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="alt">
|
||||
<cap modifier="alt" keysym="0xFFEA">Alt</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6">
|
||||
<cap keysym="0xFF67">Menu</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="control">
|
||||
<cap modifier="control" keysym="0xFFE4">Ctrl</cap>
|
||||
</key>
|
||||
</row>
|
||||
</keyboard>
|
@@ -1,500 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE keyboard PUBLIC
|
||||
"-//Guacamole/Guacamole Onscreen Keyboard DTD 0.6.0//EN"
|
||||
"http://guac-dev.org/pub/dtd/guacamole-osk-0.6.0.dtd">
|
||||
|
||||
<!--
|
||||
Copyright (C) 2013 Glyptodon LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
-->
|
||||
|
||||
<keyboard lang="en_US" layout="qwerty" size="22">
|
||||
<row>
|
||||
<key>
|
||||
<cap keysym="0xFF1B">Esc</cap>
|
||||
</key>
|
||||
<gap size="0.8"/>
|
||||
<key>
|
||||
<cap keysym="0xFFBE">F1</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFBF">F2</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC0">F3</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC1">F4</cap>
|
||||
</key>
|
||||
<gap size="0.8"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC2">F5</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC3">F6</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC4">F7</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC5">F8</cap>
|
||||
</key>
|
||||
<gap size="0.8"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC6">F9</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC7">F10</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC8">F11</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFFC9">F12</cap>
|
||||
</key>
|
||||
</row>
|
||||
<row>
|
||||
<gap size="0.25"/>
|
||||
</row>
|
||||
<column>
|
||||
<row>
|
||||
<key>
|
||||
<cap>`</cap>
|
||||
<cap if="shift">~</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>1</cap>
|
||||
<cap if="shift">!</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>2</cap>
|
||||
<cap if="shift">@</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>3</cap>
|
||||
<cap if="shift">#</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>4</cap>
|
||||
<cap if="shift">$</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>5</cap>
|
||||
<cap if="shift">%</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>6</cap>
|
||||
<cap if="shift">^</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>7</cap>
|
||||
<cap if="shift">&</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>8</cap>
|
||||
<cap if="shift">*</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>9</cap>
|
||||
<cap if="shift">(</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>0</cap>
|
||||
<cap if="shift">)</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>-</cap>
|
||||
<cap if="shift">_</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>=</cap>
|
||||
<cap if="shift">+</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="2">
|
||||
<cap keysym="0xFF08">Back</cap>
|
||||
</key>
|
||||
</row>
|
||||
|
||||
<row><gap size="0.1"/></row>
|
||||
|
||||
<row>
|
||||
<key size="1.5">
|
||||
<cap keysym="0xFF09">Tab</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>q</cap>
|
||||
<cap if="caps">Q</cap>
|
||||
<cap if="shift">Q</cap>
|
||||
<cap if="caps,shift">q</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>w</cap>
|
||||
<cap if="caps">W</cap>
|
||||
<cap if="shift">W</cap>
|
||||
<cap if="caps,shift">w</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>e</cap>
|
||||
<cap if="caps">E</cap>
|
||||
<cap if="shift">E</cap>
|
||||
<cap if="caps,shift">e</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>r</cap>
|
||||
<cap if="caps">R</cap>
|
||||
<cap if="shift">R</cap>
|
||||
<cap if="caps,shift">r</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>t</cap>
|
||||
<cap if="caps">T</cap>
|
||||
<cap if="shift">T</cap>
|
||||
<cap if="caps,shift">t</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>y</cap>
|
||||
<cap if="caps">Y</cap>
|
||||
<cap if="shift">Y</cap>
|
||||
<cap if="caps,shift">y</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>u</cap>
|
||||
<cap if="caps">U</cap>
|
||||
<cap if="shift">U</cap>
|
||||
<cap if="caps,shift">u</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>i</cap>
|
||||
<cap if="caps">I</cap>
|
||||
<cap if="shift">I</cap>
|
||||
<cap if="caps,shift">i</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>o</cap>
|
||||
<cap if="caps">O</cap>
|
||||
<cap if="shift">O</cap>
|
||||
<cap if="caps,shift">o</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>p</cap>
|
||||
<cap if="caps">P</cap>
|
||||
<cap if="shift">P</cap>
|
||||
<cap if="caps,shift">p</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>[</cap>
|
||||
<cap if="shift">{</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>]</cap>
|
||||
<cap if="shift">}</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.5">
|
||||
<cap>\</cap>
|
||||
<cap if="shift">|</cap>
|
||||
</key>
|
||||
</row>
|
||||
|
||||
<row><gap size="0.1"/></row>
|
||||
|
||||
<row>
|
||||
<key size="1.85">
|
||||
<cap modifier="caps" keysym="0xFFE5" sticky="true">Caps</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>a</cap>
|
||||
<cap if="caps">A</cap>
|
||||
<cap if="shift">A</cap>
|
||||
<cap if="caps,shift">a</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>s</cap>
|
||||
<cap if="caps">S</cap>
|
||||
<cap if="shift">S</cap>
|
||||
<cap if="caps,shift">s</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>d</cap>
|
||||
<cap if="caps">D</cap>
|
||||
<cap if="shift">D</cap>
|
||||
<cap if="caps,shift">d</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>f</cap>
|
||||
<cap if="caps">F</cap>
|
||||
<cap if="shift">F</cap>
|
||||
<cap if="caps,shift">f</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>g</cap>
|
||||
<cap if="caps">G</cap>
|
||||
<cap if="shift">G</cap>
|
||||
<cap if="caps,shift">g</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>h</cap>
|
||||
<cap if="caps">H</cap>
|
||||
<cap if="shift">H</cap>
|
||||
<cap if="caps,shift">h</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>j</cap>
|
||||
<cap if="caps">J</cap>
|
||||
<cap if="shift">J</cap>
|
||||
<cap if="caps,shift">j</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>k</cap>
|
||||
<cap if="caps">K</cap>
|
||||
<cap if="shift">K</cap>
|
||||
<cap if="caps,shift">k</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>l</cap>
|
||||
<cap if="caps">L</cap>
|
||||
<cap if="shift">L</cap>
|
||||
<cap if="caps,shift">l</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>;</cap>
|
||||
<cap if="shift">:</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>'</cap>
|
||||
<cap if="shift">"</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="2.25">
|
||||
<cap keysym="0xFF0D">Enter</cap>
|
||||
</key>
|
||||
</row>
|
||||
|
||||
<row><gap size="0.1"/></row>
|
||||
|
||||
<row>
|
||||
<key size="2.1" class="shift">
|
||||
<cap modifier="shift" keysym="0xFFE1">Shift</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>z</cap>
|
||||
<cap if="caps">Z</cap>
|
||||
<cap if="shift">Z</cap>
|
||||
<cap if="caps,shift">z</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>x</cap>
|
||||
<cap if="caps">X</cap>
|
||||
<cap if="shift">X</cap>
|
||||
<cap if="caps,shift">x</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>c</cap>
|
||||
<cap if="caps">C</cap>
|
||||
<cap if="shift">C</cap>
|
||||
<cap if="caps,shift">c</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>v</cap>
|
||||
<cap if="caps">V</cap>
|
||||
<cap if="shift">V</cap>
|
||||
<cap if="caps,shift">v</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>b</cap>
|
||||
<cap if="caps">B</cap>
|
||||
<cap if="shift">B</cap>
|
||||
<cap if="caps,shift">b</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>n</cap>
|
||||
<cap if="caps">N</cap>
|
||||
<cap if="shift">N</cap>
|
||||
<cap if="caps,shift">n</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>m</cap>
|
||||
<cap if="caps">M</cap>
|
||||
<cap if="shift">M</cap>
|
||||
<cap if="caps,shift">m</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>,</cap>
|
||||
<cap if="shift"><</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>.</cap>
|
||||
<cap if="shift">></cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap>/</cap>
|
||||
<cap if="shift">?</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="3.1" class="shift">
|
||||
<cap modifier="shift" keysym="0xFFE2">Shift</cap>
|
||||
</key>
|
||||
</row>
|
||||
|
||||
<row><gap size="0.1"/></row>
|
||||
|
||||
<row>
|
||||
<key size="1.6" class="control">
|
||||
<cap modifier="control" keysym="0xFFE3">Ctrl</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="super">
|
||||
<cap modifier="super" keysym="0xFFEB">Super</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="alt">
|
||||
<cap modifier="alt" keysym="0xFFE9">Alt</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="6.1">
|
||||
<cap> </cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="alt">
|
||||
<cap modifier="alt" keysym="0xFFE3">Alt</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="super">
|
||||
<cap modifier="super" keysym="0xFF67">Menu</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.6" class="control">
|
||||
<cap modifier="control" keysym="0xFFE4">Ctrl</cap>
|
||||
</key>
|
||||
</row>
|
||||
</column>
|
||||
<column>
|
||||
<row>
|
||||
<gap size="0.25"/>
|
||||
</row>
|
||||
</column>
|
||||
<column align="center">
|
||||
<row>
|
||||
<key size="1.75">
|
||||
<cap keysym="0xFF63">Ins</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.75">
|
||||
<cap keysym="0xFF50">Home</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.75">
|
||||
<cap keysym="0xFF55">PgUp</cap>
|
||||
</key>
|
||||
</row>
|
||||
<row><gap size="0.1"/></row>
|
||||
<row>
|
||||
<key size="1.75">
|
||||
<cap keysym="0xFFFF">Del</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.75">
|
||||
<cap keysym="0xFF57">End</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key size="1.75">
|
||||
<cap keysym="0xFF56">PgDn</cap>
|
||||
</key>
|
||||
</row>
|
||||
<row>
|
||||
<gap/>
|
||||
</row>
|
||||
<row>
|
||||
<key>
|
||||
<cap keysym="0xFF52">↑</cap>
|
||||
</key>
|
||||
</row>
|
||||
<row><gap size="0.1"/></row>
|
||||
<row>
|
||||
<key>
|
||||
<cap keysym="0xFF51">←</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFF54">↓</cap>
|
||||
</key>
|
||||
<gap size="0.1"/>
|
||||
<key>
|
||||
<cap keysym="0xFF53">→</cap>
|
||||
</key>
|
||||
</row>
|
||||
</column>
|
||||
</keyboard>
|
@@ -117,7 +117,7 @@
|
||||
"TEXT_RECONNECT_COUNTDOWN" : "Reconnecting in {REMAINING} {REMAINING, plural, one{second} other{seconds}}...",
|
||||
"TEXT_FILE_TRANSFER_PROGRESS" : "{PROGRESS} {UNIT, select, b{B} kb{KB} mb{MB} gb{GB} other{}}",
|
||||
|
||||
"URL_OSK_LAYOUT" : "layouts/en-us-qwerty.xml"
|
||||
"URL_OSK_LAYOUT" : "layouts/en-us-qwerty.json"
|
||||
|
||||
},
|
||||
|
||||
|
Reference in New Issue
Block a user