mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Merge pull request #169 from glyptodon/json-layout
GUAC-1170: Migrate to JSON OSK layout
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
@@ -36,8 +36,15 @@
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.guac-keyboard,
|
||||
.guac-keyboard * {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.guac-keyboard .guac-keyboard-key-container {
|
||||
display: inline-block;
|
||||
margin: 0.05em;
|
||||
}
|
||||
|
||||
.guac-keyboard .guac-keyboard-key {
|
||||
@@ -51,7 +58,6 @@
|
||||
|
||||
.guac-keyboard .guac-keyboard-cap {
|
||||
color: white;
|
||||
font-family: sans-serif;
|
||||
font-size: 50%;
|
||||
font-weight: lighter;
|
||||
text-align: center;
|
||||
@@ -67,26 +73,26 @@
|
||||
border-color: #666;
|
||||
}
|
||||
|
||||
.guac-keyboard.guac-keyboard-modifier-shift .guac-keyboard-key.shift,
|
||||
.guac-keyboard.guac-keyboard-modifier-numsym .guac-keyboard-key.numsym {
|
||||
/* Active shift */
|
||||
.guac-keyboard.guac-keyboard-modifier-shift .guac-keyboard-key-rshift,
|
||||
.guac-keyboard.guac-keyboard-modifier-shift .guac-keyboard-key-lshift,
|
||||
|
||||
/* Active ctrl */
|
||||
.guac-keyboard.guac-keyboard-modifier-control .guac-keyboard-key-rctrl,
|
||||
.guac-keyboard.guac-keyboard-modifier-control .guac-keyboard-key-lctrl,
|
||||
|
||||
/* Active alt */
|
||||
.guac-keyboard.guac-keyboard-modifier-alt .guac-keyboard-key-ralt,
|
||||
.guac-keyboard.guac-keyboard-modifier-alt .guac-keyboard-key-lalt,
|
||||
|
||||
/* Active caps */
|
||||
.guac-keyboard.guac-keyboard-modifier-caps .guac-keyboard-key-caps {
|
||||
background: #882;
|
||||
border-color: #DD4;
|
||||
}
|
||||
|
||||
.guac-keyboard.guac-keyboard-modifier-control .guac-keyboard-key.control,
|
||||
.guac-keyboard.guac-keyboard-modifier-numsym .guac-keyboard-key.numsym {
|
||||
background: #882;
|
||||
border-color: #DD4;
|
||||
}
|
||||
|
||||
.guac-keyboard.guac-keyboard-modifier-alt .guac-keyboard-key.alt,
|
||||
.guac-keyboard.guac-keyboard-modifier-numsym .guac-keyboard-key.numsym {
|
||||
background: #882;
|
||||
border-color: #DD4;
|
||||
}
|
||||
|
||||
.guac-keyboard.guac-keyboard-modifier-super .guac-keyboard-key.super,
|
||||
.guac-keyboard.guac-keyboard-modifier-numsym .guac-keyboard-key.numsym {
|
||||
.guac-keyboard.guac-keyboard-modifier-super .guac-keyboard-key-super,
|
||||
.guac-keyboard.guac-keyboard-modifier-super .guac-keyboard-key-menu {
|
||||
background: #882;
|
||||
border-color: #DD4;
|
||||
}
|
||||
@@ -97,16 +103,54 @@
|
||||
border-style: inset;
|
||||
}
|
||||
|
||||
.guac-keyboard .guac-keyboard-row {
|
||||
.guac-keyboard .guac-keyboard-group {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.guac-keyboard .guac-keyboard-column {
|
||||
.guac-keyboard .guac-keyboard-group.guac-keyboard-alpha,
|
||||
.guac-keyboard .guac-keyboard-group.guac-keyboard-movement {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.guac-keyboard .guac-keyboard-group.guac-keyboard-main {
|
||||
|
||||
/* IE10 */
|
||||
display: -ms-flexbox;
|
||||
-ms-flex-align: stretch;
|
||||
-ms-flex-direction: row;
|
||||
|
||||
/* Ancient Mozilla */
|
||||
display: -moz-box;
|
||||
-moz-box-align: stretch;
|
||||
-moz-box-orient: horizontal;
|
||||
|
||||
/* Ancient WebKit */
|
||||
display: -webkit-box;
|
||||
-webkit-box-align: stretch;
|
||||
-webkit-box-orient: horizontal;
|
||||
|
||||
/* Old WebKit */
|
||||
display: -webkit-flex;
|
||||
-webkit-align-items: stretch;
|
||||
-webkit-flex-direction: row;
|
||||
|
||||
/* W3C */
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
flex-direction: row;
|
||||
|
||||
}
|
||||
|
||||
.guac-keyboard .guac-keyboard-group.guac-keyboard-movement {
|
||||
-ms-flex: 1 1 auto;
|
||||
-moz-box-flex: 1;
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1 1 auto;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.guac-keyboard .guac-keyboard-gap {
|
||||
display: inline-block;
|
||||
}
|
||||
@@ -115,9 +159,6 @@
|
||||
.guac-keyboard:not(.guac-keyboard-modifier-caps)
|
||||
.guac-keyboard-cap.guac-keyboard-requires-caps,
|
||||
|
||||
.guac-keyboard:not(.guac-keyboard-modifier-numsym)
|
||||
.guac-keyboard-cap.guac-keyboard-requires-numsym,
|
||||
|
||||
.guac-keyboard:not(.guac-keyboard-modifier-shift)
|
||||
.guac-keyboard-cap.guac-keyboard-requires-shift,
|
||||
|
||||
@@ -127,10 +168,6 @@
|
||||
.guac-keyboard-key.guac-keyboard-uses-shift
|
||||
.guac-keyboard-cap:not(.guac-keyboard-requires-shift),
|
||||
|
||||
.guac-keyboard.guac-keyboard-modifier-numsym
|
||||
.guac-keyboard-key.guac-keyboard-uses-numsym
|
||||
.guac-keyboard-cap:not(.guac-keyboard-requires-numsym),
|
||||
|
||||
.guac-keyboard.guac-keyboard-modifier-caps
|
||||
.guac-keyboard-key.guac-keyboard-uses-caps
|
||||
.guac-keyboard-cap:not(.guac-keyboard-requires-caps) {
|
||||
|
@@ -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>
|
400
guacamole/src/main/webapp/layouts/en-us-qwerty.json
Normal file
400
guacamole/src/main/webapp/layouts/en-us-qwerty.json
Normal file
@@ -0,0 +1,400 @@
|
||||
{
|
||||
|
||||
"language" : "en_US",
|
||||
"type" : "qwerty",
|
||||
"width" : 22,
|
||||
|
||||
"keys" : {
|
||||
|
||||
"Back" : 65288,
|
||||
"Tab" : 65289,
|
||||
"Enter" : 65293,
|
||||
"Esc" : 65307,
|
||||
"Home" : 65360,
|
||||
"PgUp" : 65365,
|
||||
"PgDn" : 65366,
|
||||
"End" : 65367,
|
||||
"Ins" : 65379,
|
||||
"F1" : 65470,
|
||||
"F2" : 65471,
|
||||
"F3" : 65472,
|
||||
"F4" : 65473,
|
||||
"F5" : 65474,
|
||||
"F6" : 65475,
|
||||
"F7" : 65476,
|
||||
"F8" : 65477,
|
||||
"F9" : 65478,
|
||||
"F10" : 65479,
|
||||
"F11" : 65480,
|
||||
"F12" : 65481,
|
||||
"Del" : 65535,
|
||||
|
||||
"Space" : " ",
|
||||
|
||||
"Left" : [{
|
||||
"title" : "←",
|
||||
"keysym" : 65361
|
||||
}],
|
||||
"Up" : [{
|
||||
"title" : "↑",
|
||||
"keysym" : 65362
|
||||
}],
|
||||
"Right" : [{
|
||||
"title" : "→",
|
||||
"keysym" : 65363
|
||||
}],
|
||||
"Down" : [{
|
||||
"title" : "↓",
|
||||
"keysym" : 65364
|
||||
}],
|
||||
|
||||
"Menu" : [{
|
||||
"title" : "Menu",
|
||||
"modifier" : "super",
|
||||
"keysym" : 65383
|
||||
}],
|
||||
"LShift" : [{
|
||||
"title" : "Shift",
|
||||
"modifier" : "shift",
|
||||
"keysym" : 65505
|
||||
}],
|
||||
"RShift" : [{
|
||||
"title" : "Shift",
|
||||
"modifier" : "shift",
|
||||
"keysym" : 65506
|
||||
}],
|
||||
"LCtrl" : [{
|
||||
"title" : "Ctrl",
|
||||
"modifier" : "control",
|
||||
"keysym" : 65507
|
||||
}],
|
||||
"RCtrl" : [{
|
||||
"title" : "Ctrl",
|
||||
"modifier" : "control",
|
||||
"keysym" : 65508
|
||||
}],
|
||||
"Caps" : [{
|
||||
"title" : "Caps",
|
||||
"modifier" : "caps",
|
||||
"keysym" : 65509
|
||||
}],
|
||||
"LAlt" : [{
|
||||
"title" : "Alt",
|
||||
"modifier" : "alt",
|
||||
"keysym" : 65513
|
||||
}],
|
||||
"RAlt" : [{
|
||||
"title" : "Alt",
|
||||
"modifier" : "alt",
|
||||
"keysym" : 65514
|
||||
}],
|
||||
"Super" : [{
|
||||
"title" : "Super",
|
||||
"modifier" : "super",
|
||||
"keysym" : 65515
|
||||
}],
|
||||
|
||||
"`" : [
|
||||
{ "title" : "`", "requires" : [ ] },
|
||||
{ "title" : "~", "requires" : [ "shift" ] }
|
||||
],
|
||||
"1" : [
|
||||
{ "title" : "1", "requires" : [ ] },
|
||||
{ "title" : "!", "requires" : [ "shift" ] }
|
||||
],
|
||||
"2" : [
|
||||
{ "title" : "2", "requires" : [ ] },
|
||||
{ "title" : "@", "requires" : [ "shift" ] }
|
||||
],
|
||||
"3" : [
|
||||
{ "title" : "3", "requires" : [ ] },
|
||||
{ "title" : "#", "requires" : [ "shift" ] }
|
||||
],
|
||||
"4" : [
|
||||
{ "title" : "4", "requires" : [ ] },
|
||||
{ "title" : "$", "requires" : [ "shift" ] }
|
||||
],
|
||||
"5" : [
|
||||
{ "title" : "5", "requires" : [ ] },
|
||||
{ "title" : "%", "requires" : [ "shift" ] }
|
||||
],
|
||||
"6" : [
|
||||
{ "title" : "6", "requires" : [ ] },
|
||||
{ "title" : "^", "requires" : [ "shift" ] }
|
||||
],
|
||||
"7" : [
|
||||
{ "title" : "7", "requires" : [ ] },
|
||||
{ "title" : "&", "requires" : [ "shift" ] }
|
||||
],
|
||||
"8" : [
|
||||
{ "title" : "8", "requires" : [ ] },
|
||||
{ "title" : "*", "requires" : [ "shift" ] }
|
||||
],
|
||||
"9" : [
|
||||
{ "title" : "9", "requires" : [ ] },
|
||||
{ "title" : "(", "requires" : [ "shift" ] }
|
||||
],
|
||||
"0" : [
|
||||
{ "title" : "0", "requires" : [ ] },
|
||||
{ "title" : ")", "requires" : [ "shift" ] }
|
||||
],
|
||||
"-" : [
|
||||
{ "title" : "-", "requires" : [ ] },
|
||||
{ "title" : "_", "requires" : [ "shift" ] }
|
||||
],
|
||||
"=" : [
|
||||
{ "title" : "=", "requires" : [ ] },
|
||||
{ "title" : "+", "requires" : [ "shift" ] }
|
||||
],
|
||||
"," : [
|
||||
{ "title" : ",", "requires" : [ ] },
|
||||
{ "title" : "<", "requires" : [ "shift" ] }
|
||||
],
|
||||
"." : [
|
||||
{ "title" : ".", "requires" : [ ] },
|
||||
{ "title" : ">", "requires" : [ "shift" ] }
|
||||
],
|
||||
"/" : [
|
||||
{ "title" : "/", "requires" : [ ] },
|
||||
{ "title" : "?", "requires" : [ "shift" ] }
|
||||
],
|
||||
"[" : [
|
||||
{ "title" : "[", "requires" : [ ] },
|
||||
{ "title" : "{", "requires" : [ "shift" ] }
|
||||
],
|
||||
"]" : [
|
||||
{ "title" : "]", "requires" : [ ] },
|
||||
{ "title" : "}", "requires" : [ "shift" ] }
|
||||
],
|
||||
"\\" : [
|
||||
{ "title" : "\\", "requires" : [ ] },
|
||||
{ "title" : "|", "requires" : [ "shift" ] }
|
||||
],
|
||||
";" : [
|
||||
{ "title" : ";", "requires" : [ ] },
|
||||
{ "title" : ":", "requires" : [ "shift" ] }
|
||||
],
|
||||
"'" : [
|
||||
{ "title" : "'", "requires" : [ ] },
|
||||
{ "title" : "\"", "requires" : [ "shift" ] }
|
||||
],
|
||||
|
||||
"q" : [
|
||||
{ "title" : "q", "requires" : [ ] },
|
||||
{ "title" : "Q", "requires" : [ "caps" ] },
|
||||
{ "title" : "Q", "requires" : [ "shift" ] },
|
||||
{ "title" : "q", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"w" : [
|
||||
{ "title" : "w", "requires" : [ ] },
|
||||
{ "title" : "W", "requires" : [ "caps" ] },
|
||||
{ "title" : "W", "requires" : [ "shift" ] },
|
||||
{ "title" : "w", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"e" : [
|
||||
{ "title" : "e", "requires" : [ ] },
|
||||
{ "title" : "E", "requires" : [ "caps" ] },
|
||||
{ "title" : "E", "requires" : [ "shift" ] },
|
||||
{ "title" : "e", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"r" : [
|
||||
{ "title" : "r", "requires" : [ ] },
|
||||
{ "title" : "R", "requires" : [ "caps" ] },
|
||||
{ "title" : "R", "requires" : [ "shift" ] },
|
||||
{ "title" : "r", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"t" : [
|
||||
{ "title" : "t", "requires" : [ ] },
|
||||
{ "title" : "T", "requires" : [ "caps" ] },
|
||||
{ "title" : "T", "requires" : [ "shift" ] },
|
||||
{ "title" : "t", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"y" : [
|
||||
{ "title" : "y", "requires" : [ ] },
|
||||
{ "title" : "Y", "requires" : [ "caps" ] },
|
||||
{ "title" : "Y", "requires" : [ "shift" ] },
|
||||
{ "title" : "y", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"u" : [
|
||||
{ "title" : "u", "requires" : [ ] },
|
||||
{ "title" : "U", "requires" : [ "caps" ] },
|
||||
{ "title" : "U", "requires" : [ "shift" ] },
|
||||
{ "title" : "u", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"i" : [
|
||||
{ "title" : "i", "requires" : [ ] },
|
||||
{ "title" : "I", "requires" : [ "caps" ] },
|
||||
{ "title" : "I", "requires" : [ "shift" ] },
|
||||
{ "title" : "i", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"o" : [
|
||||
{ "title" : "o", "requires" : [ ] },
|
||||
{ "title" : "O", "requires" : [ "caps" ] },
|
||||
{ "title" : "O", "requires" : [ "shift" ] },
|
||||
{ "title" : "o", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"p" : [
|
||||
{ "title" : "p", "requires" : [ ] },
|
||||
{ "title" : "P", "requires" : [ "caps" ] },
|
||||
{ "title" : "P", "requires" : [ "shift" ] },
|
||||
{ "title" : "p", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"a" : [
|
||||
{ "title" : "a", "requires" : [ ] },
|
||||
{ "title" : "A", "requires" : [ "caps" ] },
|
||||
{ "title" : "A", "requires" : [ "shift" ] },
|
||||
{ "title" : "a", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"s" : [
|
||||
{ "title" : "s", "requires" : [ ] },
|
||||
{ "title" : "S", "requires" : [ "caps" ] },
|
||||
{ "title" : "S", "requires" : [ "shift" ] },
|
||||
{ "title" : "s", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"d" : [
|
||||
{ "title" : "d", "requires" : [ ] },
|
||||
{ "title" : "D", "requires" : [ "caps" ] },
|
||||
{ "title" : "D", "requires" : [ "shift" ] },
|
||||
{ "title" : "d", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"f" : [
|
||||
{ "title" : "f", "requires" : [ ] },
|
||||
{ "title" : "F", "requires" : [ "caps" ] },
|
||||
{ "title" : "F", "requires" : [ "shift" ] },
|
||||
{ "title" : "f", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"g" : [
|
||||
{ "title" : "g", "requires" : [ ] },
|
||||
{ "title" : "G", "requires" : [ "caps" ] },
|
||||
{ "title" : "G", "requires" : [ "shift" ] },
|
||||
{ "title" : "g", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"h" : [
|
||||
{ "title" : "h", "requires" : [ ] },
|
||||
{ "title" : "H", "requires" : [ "caps" ] },
|
||||
{ "title" : "H", "requires" : [ "shift" ] },
|
||||
{ "title" : "h", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"j" : [
|
||||
{ "title" : "j", "requires" : [ ] },
|
||||
{ "title" : "J", "requires" : [ "caps" ] },
|
||||
{ "title" : "J", "requires" : [ "shift" ] },
|
||||
{ "title" : "j", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"k" : [
|
||||
{ "title" : "k", "requires" : [ ] },
|
||||
{ "title" : "K", "requires" : [ "caps" ] },
|
||||
{ "title" : "K", "requires" : [ "shift" ] },
|
||||
{ "title" : "k", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"l" : [
|
||||
{ "title" : "l", "requires" : [ ] },
|
||||
{ "title" : "L", "requires" : [ "caps" ] },
|
||||
{ "title" : "L", "requires" : [ "shift" ] },
|
||||
{ "title" : "l", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"z" : [
|
||||
{ "title" : "z", "requires" : [ ] },
|
||||
{ "title" : "Z", "requires" : [ "caps" ] },
|
||||
{ "title" : "Z", "requires" : [ "shift" ] },
|
||||
{ "title" : "z", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"x" : [
|
||||
{ "title" : "x", "requires" : [ ] },
|
||||
{ "title" : "X", "requires" : [ "caps" ] },
|
||||
{ "title" : "X", "requires" : [ "shift" ] },
|
||||
{ "title" : "x", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"c" : [
|
||||
{ "title" : "c", "requires" : [ ] },
|
||||
{ "title" : "C", "requires" : [ "caps" ] },
|
||||
{ "title" : "C", "requires" : [ "shift" ] },
|
||||
{ "title" : "c", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"v" : [
|
||||
{ "title" : "v", "requires" : [ ] },
|
||||
{ "title" : "V", "requires" : [ "caps" ] },
|
||||
{ "title" : "V", "requires" : [ "shift" ] },
|
||||
{ "title" : "v", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"b" : [
|
||||
{ "title" : "b", "requires" : [ ] },
|
||||
{ "title" : "B", "requires" : [ "caps" ] },
|
||||
{ "title" : "B", "requires" : [ "shift" ] },
|
||||
{ "title" : "b", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"n" : [
|
||||
{ "title" : "n", "requires" : [ ] },
|
||||
{ "title" : "N", "requires" : [ "caps" ] },
|
||||
{ "title" : "N", "requires" : [ "shift" ] },
|
||||
{ "title" : "n", "requires" : [ "caps", "shift" ] }
|
||||
],
|
||||
"m" : [
|
||||
{ "title" : "m", "requires" : [ ] },
|
||||
{ "title" : "M", "requires" : [ "caps" ] },
|
||||
{ "title" : "M", "requires" : [ "shift" ] },
|
||||
{ "title" : "m", "requires" : [ "caps", "shift" ] }
|
||||
]
|
||||
|
||||
},
|
||||
|
||||
"layout" : [
|
||||
|
||||
[ "Esc", 0.7, "F1", "F2", "F3", "F4",
|
||||
0.7, "F5", "F6", "F7", "F8",
|
||||
0.7, "F9", "F10", "F11", "F12" ],
|
||||
|
||||
[ 0.1 ],
|
||||
|
||||
{
|
||||
"main" : {
|
||||
"alpha" : [
|
||||
|
||||
[ "`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "Back" ],
|
||||
[ "Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "\\" ],
|
||||
[ "Caps", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "Enter" ],
|
||||
[ "LShift", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "RShift" ],
|
||||
[ "LCtrl", "Super", "LAlt", "Space", "RAlt", "Menu", "RCtrl" ]
|
||||
|
||||
],
|
||||
|
||||
"movement" : [
|
||||
[ "Ins", "Home", "PgUp" ],
|
||||
[ "Del", "End", "PgDn" ],
|
||||
[ 1 ],
|
||||
[ "Up" ],
|
||||
[ "Left", "Down", "Right" ]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
],
|
||||
|
||||
"keyWidths" : {
|
||||
|
||||
"Back" : 2,
|
||||
"Tab" : 1.5,
|
||||
"\\" : 1.5,
|
||||
"Caps" : 1.85,
|
||||
"Enter" : 2.25,
|
||||
"LShift" : 2.1,
|
||||
"RShift" : 3.1,
|
||||
|
||||
"LCtrl" : 1.6,
|
||||
"Super" : 1.6,
|
||||
"LAlt" : 1.6,
|
||||
"Space" : 6.1,
|
||||
"RAlt" : 1.6,
|
||||
"Menu" : 1.6,
|
||||
"RCtrl" : 1.6,
|
||||
|
||||
"Ins" : 1.6,
|
||||
"Home" : 1.6,
|
||||
"PgUp" : 1.6,
|
||||
"Del" : 1.6,
|
||||
"End" : 1.6,
|
||||
"PgDn" : 1.6
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -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