aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-01-26 08:22:59 +0000
committermarha <marha@users.sourceforge.net>2011-01-26 08:22:59 +0000
commit048e4ee930453823c4123abe846b63315283e297 (patch)
treec5e5506ff35408284dbc87a1e8a1b66f103b99ab
parent9ad7416b909d358cb254a48eaccd7888d684fcb6 (diff)
parent1e1e2c35b405bbb537a6bbe35d9f0831111e272f (diff)
downloadvcxsrv-048e4ee930453823c4123abe846b63315283e297.tar.gz
vcxsrv-048e4ee930453823c4123abe846b63315283e297.tar.bz2
vcxsrv-048e4ee930453823c4123abe846b63315283e297.zip
svn merge ^/branches/released .
-rw-r--r--mesalib/configure.ac3
-rw-r--r--mesalib/src/glsl/ir_reader.cpp1995
-rw-r--r--mesalib/src/glsl/link_functions.cpp528
-rw-r--r--mesalib/src/glsl/linker.cpp3348
-rw-r--r--mesalib/src/mesa/main/teximage.c33
-rw-r--r--mesalib/src/mesa/main/texparam.c137
-rw-r--r--mesalib/src/mesa/program/ir_to_mesa.cpp6424
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_texture.c4043
-rw-r--r--mesalib/src/mesa/state_tracker/st_extensions.c6
-rw-r--r--mesalib/src/mesa/state_tracker/st_mesa_to_tgsi.c2496
-rw-r--r--xorg-server/xkeyboard-config/NEWS89
-rw-r--r--xorg-server/xkeyboard-config/configure.in196
-rw-r--r--xorg-server/xkeyboard-config/po/bg.po1926
-rw-r--r--xorg-server/xkeyboard-config/po/ca.po6223
-rw-r--r--xorg-server/xkeyboard-config/po/cs.po6097
-rw-r--r--xorg-server/xkeyboard-config/po/da.po6227
-rw-r--r--xorg-server/xkeyboard-config/po/de.po6553
-rw-r--r--xorg-server/xkeyboard-config/po/eo.po6541
-rw-r--r--xorg-server/xkeyboard-config/po/es.po6374
-rw-r--r--xorg-server/xkeyboard-config/po/gl.po6046
-rw-r--r--xorg-server/xkeyboard-config/po/hu.po5901
-rw-r--r--xorg-server/xkeyboard-config/po/id.po6432
-rw-r--r--xorg-server/xkeyboard-config/po/pl.po6116
-rw-r--r--xorg-server/xkeyboard-config/po/ru.po6147
24 files changed, 45589 insertions, 44292 deletions
diff --git a/mesalib/configure.ac b/mesalib/configure.ac
index 1c6edb75b..a331174bd 100644
--- a/mesalib/configure.ac
+++ b/mesalib/configure.ac
@@ -20,6 +20,7 @@ AC_CANONICAL_HOST
dnl Versions for external dependencies
LIBDRM_REQUIRED=2.4.23
LIBDRM_RADEON_REQUIRED=2.4.23
+LIBDRM_INTEL_REQUIRED=2.4.23
DRI2PROTO_REQUIRED=2.1
GLPROTO_REQUIRED=1.4.11
LIBDRM_XORG_REQUIRED=2.4.23
@@ -997,7 +998,7 @@ AC_SUBST([DRI_LIB_DEPS])
case $DRI_DIRS in
*i915*|*i965*)
- PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.23])
+ PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
;;
esac
diff --git a/mesalib/src/glsl/ir_reader.cpp b/mesalib/src/glsl/ir_reader.cpp
index 5b1eccb46..b78aa051b 100644
--- a/mesalib/src/glsl/ir_reader.cpp
+++ b/mesalib/src/glsl/ir_reader.cpp
@@ -1,996 +1,999 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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.
- */
-
-#include "ir_reader.h"
-#include "glsl_parser_extras.h"
-#include "glsl_types.h"
-#include "s_expression.h"
-
-const static bool debug = false;
-
-class ir_reader {
-public:
- ir_reader(_mesa_glsl_parse_state *);
-
- void read(exec_list *instructions, const char *src, bool scan_for_protos);
-
-private:
- void *mem_ctx;
- _mesa_glsl_parse_state *state;
-
- void ir_read_error(s_expression *, const char *fmt, ...);
-
- const glsl_type *read_type(s_expression *);
-
- void scan_for_prototypes(exec_list *, s_expression *);
- ir_function *read_function(s_expression *, bool skip_body);
- void read_function_sig(ir_function *, s_expression *, bool skip_body);
-
- void read_instructions(exec_list *, s_expression *, ir_loop *);
- ir_instruction *read_instruction(s_expression *, ir_loop *);
- ir_variable *read_declaration(s_expression *);
- ir_if *read_if(s_expression *, ir_loop *);
- ir_loop *read_loop(s_expression *);
- ir_return *read_return(s_expression *);
- ir_rvalue *read_rvalue(s_expression *);
- ir_assignment *read_assignment(s_expression *);
- ir_expression *read_expression(s_expression *);
- ir_call *read_call(s_expression *);
- ir_swizzle *read_swizzle(s_expression *);
- ir_constant *read_constant(s_expression *);
- ir_texture *read_texture(s_expression *);
-
- ir_dereference *read_dereference(s_expression *);
-};
-
-ir_reader::ir_reader(_mesa_glsl_parse_state *state) : state(state)
-{
- this->mem_ctx = state;
-}
-
-void
-_mesa_glsl_read_ir(_mesa_glsl_parse_state *state, exec_list *instructions,
- const char *src, bool scan_for_protos)
-{
- ir_reader r(state);
- r.read(instructions, src, scan_for_protos);
-}
-
-void
-ir_reader::read(exec_list *instructions, const char *src, bool scan_for_protos)
-{
- s_expression *expr = s_expression::read_expression(mem_ctx, src);
- if (expr == NULL) {
- ir_read_error(NULL, "couldn't parse S-Expression.");
- return;
- }
-
- if (scan_for_protos) {
- scan_for_prototypes(instructions, expr);
- if (state->error)
- return;
- }
-
- read_instructions(instructions, expr, NULL);
- talloc_free(expr);
-
- if (debug)
- validate_ir_tree(instructions);
-}
-
-void
-ir_reader::ir_read_error(s_expression *expr, const char *fmt, ...)
-{
- va_list ap;
-
- state->error = true;
-
- if (state->current_function != NULL)
- state->info_log = talloc_asprintf_append(state->info_log,
- "In function %s:\n",
- state->current_function->function_name());
- state->info_log = talloc_strdup_append(state->info_log, "error: ");
-
- va_start(ap, fmt);
- state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap);
- va_end(ap);
- state->info_log = talloc_strdup_append(state->info_log, "\n");
-
- if (expr != NULL) {
- state->info_log = talloc_strdup_append(state->info_log,
- "...in this context:\n ");
- expr->print();
- state->info_log = talloc_strdup_append(state->info_log, "\n\n");
- }
-}
-
-const glsl_type *
-ir_reader::read_type(s_expression *expr)
-{
- s_expression *s_base_type;
- s_int *s_size;
-
- s_pattern pat[] = { "array", s_base_type, s_size };
- if (MATCH(expr, pat)) {
- const glsl_type *base_type = read_type(s_base_type);
- if (base_type == NULL) {
- ir_read_error(NULL, "when reading base type of array type");
- return NULL;
- }
-
- return glsl_type::get_array_instance(base_type, s_size->value());
- }
-
- s_symbol *type_sym = SX_AS_SYMBOL(expr);
- if (type_sym == NULL) {
- ir_read_error(expr, "expected <type>");
- return NULL;
- }
-
- const glsl_type *type = state->symbols->get_type(type_sym->value());
- if (type == NULL)
- ir_read_error(expr, "invalid type: %s", type_sym->value());
-
- return type;
-}
-
-
-void
-ir_reader::scan_for_prototypes(exec_list *instructions, s_expression *expr)
-{
- s_list *list = SX_AS_LIST(expr);
- if (list == NULL) {
- ir_read_error(expr, "Expected (<instruction> ...); found an atom.");
- return;
- }
-
- foreach_iter(exec_list_iterator, it, list->subexpressions) {
- s_list *sub = SX_AS_LIST(it.get());
- if (sub == NULL)
- continue; // not a (function ...); ignore it.
-
- s_symbol *tag = SX_AS_SYMBOL(sub->subexpressions.get_head());
- if (tag == NULL || strcmp(tag->value(), "function") != 0)
- continue; // not a (function ...); ignore it.
-
- ir_function *f = read_function(sub, true);
- if (f == NULL)
- return;
- instructions->push_tail(f);
- }
-}
-
-ir_function *
-ir_reader::read_function(s_expression *expr, bool skip_body)
-{
- bool added = false;
- s_symbol *name;
-
- s_pattern pat[] = { "function", name };
- if (!PARTIAL_MATCH(expr, pat)) {
- ir_read_error(expr, "Expected (function <name> (signature ...) ...)");
- return NULL;
- }
-
- ir_function *f = state->symbols->get_function(name->value());
- if (f == NULL) {
- f = new(mem_ctx) ir_function(name->value());
- added = state->symbols->add_function(f);
- assert(added);
- }
-
- exec_list_iterator it = ((s_list *) expr)->subexpressions.iterator();
- it.next(); // skip "function" tag
- it.next(); // skip function name
- for (/* nothing */; it.has_next(); it.next()) {
- s_expression *s_sig = (s_expression *) it.get();
- read_function_sig(f, s_sig, skip_body);
- }
- return added ? f : NULL;
-}
-
-void
-ir_reader::read_function_sig(ir_function *f, s_expression *expr, bool skip_body)
-{
- s_expression *type_expr;
- s_list *paramlist;
- s_list *body_list;
-
- s_pattern pat[] = { "signature", type_expr, paramlist, body_list };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "Expected (signature <type> (parameters ...) "
- "(<instruction> ...))");
- return;
- }
-
- const glsl_type *return_type = read_type(type_expr);
- if (return_type == NULL)
- return;
-
- s_symbol *paramtag = SX_AS_SYMBOL(paramlist->subexpressions.get_head());
- if (paramtag == NULL || strcmp(paramtag->value(), "parameters") != 0) {
- ir_read_error(paramlist, "Expected (parameters ...)");
- return;
- }
-
- // Read the parameters list into a temporary place.
- exec_list hir_parameters;
- state->symbols->push_scope();
-
- exec_list_iterator it = paramlist->subexpressions.iterator();
- for (it.next() /* skip "parameters" */; it.has_next(); it.next()) {
- ir_variable *var = read_declaration((s_expression *) it.get());
- if (var == NULL)
- return;
-
- hir_parameters.push_tail(var);
- }
-
- ir_function_signature *sig = f->exact_matching_signature(&hir_parameters);
- if (sig == NULL && skip_body) {
- /* If scanning for prototypes, generate a new signature. */
- sig = new(mem_ctx) ir_function_signature(return_type);
- sig->is_builtin = true;
- f->add_signature(sig);
- } else if (sig != NULL) {
- const char *badvar = sig->qualifiers_match(&hir_parameters);
- if (badvar != NULL) {
- ir_read_error(expr, "function `%s' parameter `%s' qualifiers "
- "don't match prototype", f->name, badvar);
- return;
- }
-
- if (sig->return_type != return_type) {
- ir_read_error(expr, "function `%s' return type doesn't "
- "match prototype", f->name);
- return;
- }
- } else {
- /* No prototype for this body exists - skip it. */
- state->symbols->pop_scope();
- return;
- }
- assert(sig != NULL);
-
- sig->replace_parameters(&hir_parameters);
-
- if (!skip_body && !body_list->subexpressions.is_empty()) {
- if (sig->is_defined) {
- ir_read_error(expr, "function %s redefined", f->name);
- return;
- }
- state->current_function = sig;
- read_instructions(&sig->body, body_list, NULL);
- state->current_function = NULL;
- sig->is_defined = true;
- }
-
- state->symbols->pop_scope();
-}
-
-void
-ir_reader::read_instructions(exec_list *instructions, s_expression *expr,
- ir_loop *loop_ctx)
-{
- // Read in a list of instructions
- s_list *list = SX_AS_LIST(expr);
- if (list == NULL) {
- ir_read_error(expr, "Expected (<instruction> ...); found an atom.");
- return;
- }
-
- foreach_iter(exec_list_iterator, it, list->subexpressions) {
- s_expression *sub = (s_expression*) it.get();
- ir_instruction *ir = read_instruction(sub, loop_ctx);
- if (ir != NULL) {
- /* Global variable declarations should be moved to the top, before
- * any functions that might use them. Functions are added to the
- * instruction stream when scanning for prototypes, so without this
- * hack, they always appear before variable declarations.
- */
- if (state->current_function == NULL && ir->as_variable() != NULL)
- instructions->push_head(ir);
- else
- instructions->push_tail(ir);
- }
- }
-}
-
-
-ir_instruction *
-ir_reader::read_instruction(s_expression *expr, ir_loop *loop_ctx)
-{
- s_symbol *symbol = SX_AS_SYMBOL(expr);
- if (symbol != NULL) {
- if (strcmp(symbol->value(), "break") == 0 && loop_ctx != NULL)
- return new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break);
- if (strcmp(symbol->value(), "continue") == 0 && loop_ctx != NULL)
- return new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_continue);
- }
-
- s_list *list = SX_AS_LIST(expr);
- if (list == NULL || list->subexpressions.is_empty()) {
- ir_read_error(expr, "Invalid instruction.\n");
- return NULL;
- }
-
- s_symbol *tag = SX_AS_SYMBOL(list->subexpressions.get_head());
- if (tag == NULL) {
- ir_read_error(expr, "expected instruction tag");
- return NULL;
- }
-
- ir_instruction *inst = NULL;
- if (strcmp(tag->value(), "declare") == 0) {
- inst = read_declaration(list);
- } else if (strcmp(tag->value(), "assign") == 0) {
- inst = read_assignment(list);
- } else if (strcmp(tag->value(), "if") == 0) {
- inst = read_if(list, loop_ctx);
- } else if (strcmp(tag->value(), "loop") == 0) {
- inst = read_loop(list);
- } else if (strcmp(tag->value(), "return") == 0) {
- inst = read_return(list);
- } else if (strcmp(tag->value(), "function") == 0) {
- inst = read_function(list, false);
- } else {
- inst = read_rvalue(list);
- if (inst == NULL)
- ir_read_error(NULL, "when reading instruction");
- }
- return inst;
-}
-
-ir_variable *
-ir_reader::read_declaration(s_expression *expr)
-{
- s_list *s_quals;
- s_expression *s_type;
- s_symbol *s_name;
-
- s_pattern pat[] = { "declare", s_quals, s_type, s_name };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (declare (<qualifiers>) <type> <name>)");
- return NULL;
- }
-
- const glsl_type *type = read_type(s_type);
- if (type == NULL)
- return NULL;
-
- ir_variable *var = new(mem_ctx) ir_variable(type, s_name->value(),
- ir_var_auto);
-
- foreach_iter(exec_list_iterator, it, s_quals->subexpressions) {
- s_symbol *qualifier = SX_AS_SYMBOL(it.get());
- if (qualifier == NULL) {
- ir_read_error(expr, "qualifier list must contain only symbols");
- return NULL;
- }
-
- // FINISHME: Check for duplicate/conflicting qualifiers.
- if (strcmp(qualifier->value(), "centroid") == 0) {
- var->centroid = 1;
- } else if (strcmp(qualifier->value(), "invariant") == 0) {
- var->invariant = 1;
- } else if (strcmp(qualifier->value(), "uniform") == 0) {
- var->mode = ir_var_uniform;
- } else if (strcmp(qualifier->value(), "auto") == 0) {
- var->mode = ir_var_auto;
- } else if (strcmp(qualifier->value(), "in") == 0) {
- var->mode = ir_var_in;
- } else if (strcmp(qualifier->value(), "out") == 0) {
- var->mode = ir_var_out;
- } else if (strcmp(qualifier->value(), "inout") == 0) {
- var->mode = ir_var_inout;
- } else if (strcmp(qualifier->value(), "smooth") == 0) {
- var->interpolation = ir_var_smooth;
- } else if (strcmp(qualifier->value(), "flat") == 0) {
- var->interpolation = ir_var_flat;
- } else if (strcmp(qualifier->value(), "noperspective") == 0) {
- var->interpolation = ir_var_noperspective;
- } else {
- ir_read_error(expr, "unknown qualifier: %s", qualifier->value());
- return NULL;
- }
- }
-
- // Add the variable to the symbol table
- state->symbols->add_variable(var);
-
- return var;
-}
-
-
-ir_if *
-ir_reader::read_if(s_expression *expr, ir_loop *loop_ctx)
-{
- s_expression *s_cond;
- s_expression *s_then;
- s_expression *s_else;
-
- s_pattern pat[] = { "if", s_cond, s_then, s_else };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (if <condition> (<then>...) (<else>...))");
- return NULL;
- }
-
- ir_rvalue *condition = read_rvalue(s_cond);
- if (condition == NULL) {
- ir_read_error(NULL, "when reading condition of (if ...)");
- return NULL;
- }
-
- ir_if *iff = new(mem_ctx) ir_if(condition);
-
- read_instructions(&iff->then_instructions, s_then, loop_ctx);
- read_instructions(&iff->else_instructions, s_else, loop_ctx);
- if (state->error) {
- delete iff;
- iff = NULL;
- }
- return iff;
-}
-
-
-ir_loop *
-ir_reader::read_loop(s_expression *expr)
-{
- s_expression *s_counter, *s_from, *s_to, *s_inc, *s_body;
-
- s_pattern pat[] = { "loop", s_counter, s_from, s_to, s_inc, s_body };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (loop <counter> <from> <to> "
- "<increment> <body>)");
- return NULL;
- }
-
- // FINISHME: actually read the count/from/to fields.
-
- ir_loop *loop = new(mem_ctx) ir_loop;
- read_instructions(&loop->body_instructions, s_body, loop);
- if (state->error) {
- delete loop;
- loop = NULL;
- }
- return loop;
-}
-
-
-ir_return *
-ir_reader::read_return(s_expression *expr)
-{
- s_expression *s_retval;
-
- s_pattern pat[] = { "return", s_retval};
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (return <rvalue>)");
- return NULL;
- }
-
- ir_rvalue *retval = read_rvalue(s_retval);
- if (retval == NULL) {
- ir_read_error(NULL, "when reading return value");
- return NULL;
- }
-
- return new(mem_ctx) ir_return(retval);
-}
-
-
-ir_rvalue *
-ir_reader::read_rvalue(s_expression *expr)
-{
- s_list *list = SX_AS_LIST(expr);
- if (list == NULL || list->subexpressions.is_empty())
- return NULL;
-
- s_symbol *tag = SX_AS_SYMBOL(list->subexpressions.get_head());
- if (tag == NULL) {
- ir_read_error(expr, "expected rvalue tag");
- return NULL;
- }
-
- ir_rvalue *rvalue = read_dereference(list);
- if (rvalue != NULL || state->error)
- return rvalue;
- else if (strcmp(tag->value(), "swiz") == 0) {
- rvalue = read_swizzle(list);
- } else if (strcmp(tag->value(), "expression") == 0) {
- rvalue = read_expression(list);
- } else if (strcmp(tag->value(), "call") == 0) {
- rvalue = read_call(list);
- } else if (strcmp(tag->value(), "constant") == 0) {
- rvalue = read_constant(list);
- } else {
- rvalue = read_texture(list);
- if (rvalue == NULL && !state->error)
- ir_read_error(expr, "unrecognized rvalue tag: %s", tag->value());
- }
-
- return rvalue;
-}
-
-ir_assignment *
-ir_reader::read_assignment(s_expression *expr)
-{
- s_expression *cond_expr = NULL;
- s_expression *lhs_expr, *rhs_expr;
- s_list *mask_list;
-
- s_pattern pat4[] = { "assign", mask_list, lhs_expr, rhs_expr };
- s_pattern pat5[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr };
- if (!MATCH(expr, pat4) && !MATCH(expr, pat5)) {
- ir_read_error(expr, "expected (assign [<condition>] (<write mask>) "
- "<lhs> <rhs>)");
- return NULL;
- }
-
- ir_rvalue *condition = NULL;
- if (cond_expr != NULL) {
- condition = read_rvalue(cond_expr);
- if (condition == NULL) {
- ir_read_error(NULL, "when reading condition of assignment");
- return NULL;
- }
- }
-
- unsigned mask = 0;
-
- s_symbol *mask_symbol;
- s_pattern mask_pat[] = { mask_symbol };
- if (MATCH(mask_list, mask_pat)) {
- const char *mask_str = mask_symbol->value();
- unsigned mask_length = strlen(mask_str);
- if (mask_length > 4) {
- ir_read_error(expr, "invalid write mask: %s", mask_str);
- return NULL;
- }
-
- const unsigned idx_map[] = { 3, 0, 1, 2 }; /* w=bit 3, x=0, y=1, z=2 */
-
- for (unsigned i = 0; i < mask_length; i++) {
- if (mask_str[i] < 'w' || mask_str[i] > 'z') {
- ir_read_error(expr, "write mask contains invalid character: %c",
- mask_str[i]);
- return NULL;
- }
- mask |= 1 << idx_map[mask_str[i] - 'w'];
- }
- } else if (!mask_list->subexpressions.is_empty()) {
- ir_read_error(mask_list, "expected () or (<write mask>)");
- return NULL;
- }
-
- ir_dereference *lhs = read_dereference(lhs_expr);
- if (lhs == NULL) {
- ir_read_error(NULL, "when reading left-hand side of assignment");
- return NULL;
- }
-
- ir_rvalue *rhs = read_rvalue(rhs_expr);
- if (rhs == NULL) {
- ir_read_error(NULL, "when reading right-hand side of assignment");
- return NULL;
- }
-
- if (mask == 0 && (lhs->type->is_vector() || lhs->type->is_scalar())) {
- ir_read_error(expr, "non-zero write mask required.");
- return NULL;
- }
-
- return new(mem_ctx) ir_assignment(lhs, rhs, condition, mask);
-}
-
-ir_call *
-ir_reader::read_call(s_expression *expr)
-{
- s_symbol *name;
- s_list *params;
-
- s_pattern pat[] = { "call", name, params };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (call <name> (<param> ...))");
- return NULL;
- }
-
- exec_list parameters;
-
- foreach_iter(exec_list_iterator, it, params->subexpressions) {
- s_expression *expr = (s_expression*) it.get();
- ir_rvalue *param = read_rvalue(expr);
- if (param == NULL) {
- ir_read_error(expr, "when reading parameter to function call");
- return NULL;
- }
- parameters.push_tail(param);
- }
-
- ir_function *f = state->symbols->get_function(name->value());
- if (f == NULL) {
- ir_read_error(expr, "found call to undefined function %s",
- name->value());
- return NULL;
- }
-
- ir_function_signature *callee = f->matching_signature(&parameters);
- if (callee == NULL) {
- ir_read_error(expr, "couldn't find matching signature for function "
- "%s", name->value());
- return NULL;
- }
-
- return new(mem_ctx) ir_call(callee, &parameters);
-}
-
-ir_expression *
-ir_reader::read_expression(s_expression *expr)
-{
- s_expression *s_type;
- s_symbol *s_op;
- s_expression *s_arg1;
-
- s_pattern pat[] = { "expression", s_type, s_op, s_arg1 };
- if (!PARTIAL_MATCH(expr, pat)) {
- ir_read_error(expr, "expected (expression <type> <operator> "
- "<operand> [<operand>])");
- return NULL;
- }
- s_expression *s_arg2 = (s_expression *) s_arg1->next; // may be tail sentinel
-
- const glsl_type *type = read_type(s_type);
- if (type == NULL)
- return NULL;
-
- /* Read the operator */
- ir_expression_operation op = ir_expression::get_operator(s_op->value());
- if (op == (ir_expression_operation) -1) {
- ir_read_error(expr, "invalid operator: %s", s_op->value());
- return NULL;
- }
-
- unsigned num_operands = ir_expression::get_num_operands(op);
- if (num_operands == 1 && !s_arg1->next->is_tail_sentinel()) {
- ir_read_error(expr, "expected (expression <type> %s <operand>)",
- s_op->value());
- return NULL;
- }
-
- ir_rvalue *arg1 = read_rvalue(s_arg1);
- ir_rvalue *arg2 = NULL;
- if (arg1 == NULL) {
- ir_read_error(NULL, "when reading first operand of %s", s_op->value());
- return NULL;
- }
-
- if (num_operands == 2) {
- if (s_arg2->is_tail_sentinel() || !s_arg2->next->is_tail_sentinel()) {
- ir_read_error(expr, "expected (expression <type> %s <operand> "
- "<operand>)", s_op->value());
- return NULL;
- }
- arg2 = read_rvalue(s_arg2);
- if (arg2 == NULL) {
- ir_read_error(NULL, "when reading second operand of %s",
- s_op->value());
- return NULL;
- }
- }
-
- return new(mem_ctx) ir_expression(op, type, arg1, arg2);
-}
-
-ir_swizzle *
-ir_reader::read_swizzle(s_expression *expr)
-{
- s_symbol *swiz;
- s_expression *sub;
-
- s_pattern pat[] = { "swiz", swiz, sub };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (swiz <swizzle> <rvalue>)");
- return NULL;
- }
-
- if (strlen(swiz->value()) > 4) {
- ir_read_error(expr, "expected a valid swizzle; found %s", swiz->value());
- return NULL;
- }
-
- ir_rvalue *rvalue = read_rvalue(sub);
- if (rvalue == NULL)
- return NULL;
-
- ir_swizzle *ir = ir_swizzle::create(rvalue, swiz->value(),
- rvalue->type->vector_elements);
- if (ir == NULL)
- ir_read_error(expr, "invalid swizzle");
-
- return ir;
-}
-
-ir_constant *
-ir_reader::read_constant(s_expression *expr)
-{
- s_expression *type_expr;
- s_list *values;
-
- s_pattern pat[] = { "constant", type_expr, values };
- if (!MATCH(expr, pat)) {
- ir_read_error(expr, "expected (constant <type> (...))");
- return NULL;
- }
-
- const glsl_type *type = read_type(type_expr);
- if (type == NULL)
- return NULL;
-
- if (values == NULL) {
- ir_read_error(expr, "expected (constant <type> (...))");
- return NULL;
- }
-
- if (type->is_array()) {
- unsigned elements_supplied = 0;
- exec_list elements;
- foreach_iter(exec_list_iterator, it, values->subexpressions) {
- s_expression *elt = (s_expression *) it.get();
- ir_constant *ir_elt = read_constant(elt);
- if (ir_elt == NULL)
- return NULL;
- elements.push_tail(ir_elt);
- elements_supplied++;
- }
-
- if (elements_supplied != type->length) {
- ir_read_error(values, "expected exactly %u array elements, "
- "given %u", type->length, elements_supplied);
- return NULL;
- }
- return new(mem_ctx) ir_constant(type, &elements);
- }
-
- const glsl_type *const base_type = type->get_base_type();
-
- ir_constant_data data = { { 0 } };
-
- // Read in list of values (at most 16).
- int k = 0;
- foreach_iter(exec_list_iterator, it, values->subexpressions) {
- if (k >= 16) {
- ir_read_error(values, "expected at most 16 numbers");
- return NULL;
- }
-
- s_expression *expr = (s_expression*) it.get();
-
- if (base_type->base_type == GLSL_TYPE_FLOAT) {
- s_number *value = SX_AS_NUMBER(expr);
- if (value == NULL) {
- ir_read_error(values, "expected numbers");
- return NULL;
- }
- data.f[k] = value->fvalue();
- } else {
- s_int *value = SX_AS_INT(expr);
- if (value == NULL) {
- ir_read_error(values, "expected integers");
- return NULL;
- }
-
- switch (base_type->base_type) {
- case GLSL_TYPE_UINT: {
- data.u[k] = value->value();
- break;
- }
- case GLSL_TYPE_INT: {
- data.i[k] = value->value();
- break;
- }
- case GLSL_TYPE_BOOL: {
- data.b[k] = value->value();
- break;
- }
- default:
- ir_read_error(values, "unsupported constant type");
- return NULL;
- }
- }
- ++k;
- }
-
- return new(mem_ctx) ir_constant(type, &data);
-}
-
-ir_dereference *
-ir_reader::read_dereference(s_expression *expr)
-{
- s_symbol *s_var;
- s_expression *s_subject;
- s_expression *s_index;
- s_symbol *s_field;
-
- s_pattern var_pat[] = { "var_ref", s_var };
- s_pattern array_pat[] = { "array_ref", s_subject, s_index };
- s_pattern record_pat[] = { "record_ref", s_subject, s_field };
-
- if (MATCH(expr, var_pat)) {
- ir_variable *var = state->symbols->get_variable(s_var->value());
- if (var == NULL) {
- ir_read_error(expr, "undeclared variable: %s", s_var->value());
- return NULL;
- }
- return new(mem_ctx) ir_dereference_variable(var);
- } else if (MATCH(expr, array_pat)) {
- ir_rvalue *subject = read_rvalue(s_subject);
- if (subject == NULL) {
- ir_read_error(NULL, "when reading the subject of an array_ref");
- return NULL;
- }
-
- ir_rvalue *idx = read_rvalue(s_index);
- if (subject == NULL) {
- ir_read_error(NULL, "when reading the index of an array_ref");
- return NULL;
- }
- return new(mem_ctx) ir_dereference_array(subject, idx);
- } else if (MATCH(expr, record_pat)) {
- ir_rvalue *subject = read_rvalue(s_subject);
- if (subject == NULL) {
- ir_read_error(NULL, "when reading the subject of a record_ref");
- return NULL;
- }
- return new(mem_ctx) ir_dereference_record(subject, s_field->value());
- }
- return NULL;
-}
-
-ir_texture *
-ir_reader::read_texture(s_expression *expr)
-{
- s_symbol *tag = NULL;
- s_expression *s_sampler = NULL;
- s_expression *s_coord = NULL;
- s_list *s_offset = NULL;
- s_expression *s_proj = NULL;
- s_list *s_shadow = NULL;
- s_expression *s_lod = NULL;
-
- ir_texture_opcode op;
-
- s_pattern tex_pattern[] =
- { "tex", s_sampler, s_coord, s_offset, s_proj, s_shadow };
- s_pattern txf_pattern[] =
- { "txf", s_sampler, s_coord, s_offset, s_lod };
- s_pattern other_pattern[] =
- { tag, s_sampler, s_coord, s_offset, s_proj, s_shadow, s_lod };
-
- if (MATCH(expr, tex_pattern)) {
- op = ir_tex;
- } else if (MATCH(expr, txf_pattern)) {
- op = ir_txf;
- } else if (MATCH(expr, other_pattern)) {
- op = ir_texture::get_opcode(tag->value());
- if (op == -1)
- return NULL;
- }
-
- ir_texture *tex = new(mem_ctx) ir_texture(op);
-
- // Read sampler (must be a deref)
- ir_dereference *sampler = read_dereference(s_sampler);
- if (sampler == NULL) {
- ir_read_error(NULL, "when reading sampler in (%s ...)",
- tex->opcode_string());
- return NULL;
- }
- tex->set_sampler(sampler);
-
- // Read coordinate (any rvalue)
- tex->coordinate = read_rvalue(s_coord);
- if (tex->coordinate == NULL) {
- ir_read_error(NULL, "when reading coordinate in (%s ...)",
- tex->opcode_string());
- return NULL;
- }
-
- // Read texel offset, i.e. (0 0 0)
- s_int *offset_x;
- s_int *offset_y;
- s_int *offset_z;
- s_pattern offset_pat[] = { offset_x, offset_y, offset_z };
- if (!MATCH(s_offset, offset_pat)) {
- ir_read_error(s_offset, "expected (<int> <int> <int>)");
- return NULL;
- }
- tex->offsets[0] = offset_x->value();
- tex->offsets[1] = offset_y->value();
- tex->offsets[2] = offset_z->value();
-
- if (op != ir_txf) {
- s_int *proj_as_int = SX_AS_INT(s_proj);
- if (proj_as_int && proj_as_int->value() == 1) {
- tex->projector = NULL;
- } else {
- tex->projector = read_rvalue(s_proj);
- if (tex->projector == NULL) {
- ir_read_error(NULL, "when reading projective divide in (%s ..)",
- tex->opcode_string());
- return NULL;
- }
- }
-
- if (s_shadow->subexpressions.is_empty()) {
- tex->shadow_comparitor = NULL;
- } else {
- tex->shadow_comparitor = read_rvalue(s_shadow);
- if (tex->shadow_comparitor == NULL) {
- ir_read_error(NULL, "when reading shadow comparitor in (%s ..)",
- tex->opcode_string());
- return NULL;
- }
- }
- }
-
- switch (op) {
- case ir_txb:
- tex->lod_info.bias = read_rvalue(s_lod);
- if (tex->lod_info.bias == NULL) {
- ir_read_error(NULL, "when reading LOD bias in (txb ...)");
- return NULL;
- }
- break;
- case ir_txl:
- case ir_txf:
- tex->lod_info.lod = read_rvalue(s_lod);
- if (tex->lod_info.lod == NULL) {
- ir_read_error(NULL, "when reading LOD in (%s ...)",
- tex->opcode_string());
- return NULL;
- }
- break;
- case ir_txd: {
- s_expression *s_dx, *s_dy;
- s_pattern dxdy_pat[] = { s_dx, s_dy };
- if (!MATCH(s_lod, dxdy_pat)) {
- ir_read_error(s_lod, "expected (dPdx dPdy) in (txd ...)");
- return NULL;
- }
- tex->lod_info.grad.dPdx = read_rvalue(s_dx);
- if (tex->lod_info.grad.dPdx == NULL) {
- ir_read_error(NULL, "when reading dPdx in (txd ...)");
- return NULL;
- }
- tex->lod_info.grad.dPdy = read_rvalue(s_dy);
- if (tex->lod_info.grad.dPdy == NULL) {
- ir_read_error(NULL, "when reading dPdy in (txd ...)");
- return NULL;
- }
- break;
- }
- default:
- // tex doesn't have any extra parameters.
- break;
- };
- return tex;
-}
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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.
+ */
+
+#include "ir_reader.h"
+#include "glsl_parser_extras.h"
+#include "glsl_types.h"
+#include "s_expression.h"
+
+const static bool debug = false;
+
+class ir_reader {
+public:
+ ir_reader(_mesa_glsl_parse_state *);
+
+ void read(exec_list *instructions, const char *src, bool scan_for_protos);
+
+private:
+ void *mem_ctx;
+ _mesa_glsl_parse_state *state;
+
+ void ir_read_error(s_expression *, const char *fmt, ...);
+
+ const glsl_type *read_type(s_expression *);
+
+ void scan_for_prototypes(exec_list *, s_expression *);
+ ir_function *read_function(s_expression *, bool skip_body);
+ void read_function_sig(ir_function *, s_expression *, bool skip_body);
+
+ void read_instructions(exec_list *, s_expression *, ir_loop *);
+ ir_instruction *read_instruction(s_expression *, ir_loop *);
+ ir_variable *read_declaration(s_expression *);
+ ir_if *read_if(s_expression *, ir_loop *);
+ ir_loop *read_loop(s_expression *);
+ ir_return *read_return(s_expression *);
+ ir_rvalue *read_rvalue(s_expression *);
+ ir_assignment *read_assignment(s_expression *);
+ ir_expression *read_expression(s_expression *);
+ ir_call *read_call(s_expression *);
+ ir_swizzle *read_swizzle(s_expression *);
+ ir_constant *read_constant(s_expression *);
+ ir_texture *read_texture(s_expression *);
+
+ ir_dereference *read_dereference(s_expression *);
+};
+
+ir_reader::ir_reader(_mesa_glsl_parse_state *state) : state(state)
+{
+ this->mem_ctx = state;
+}
+
+void
+_mesa_glsl_read_ir(_mesa_glsl_parse_state *state, exec_list *instructions,
+ const char *src, bool scan_for_protos)
+{
+ ir_reader r(state);
+ r.read(instructions, src, scan_for_protos);
+}
+
+void
+ir_reader::read(exec_list *instructions, const char *src, bool scan_for_protos)
+{
+ s_expression *expr = s_expression::read_expression(mem_ctx, src);
+ if (expr == NULL) {
+ ir_read_error(NULL, "couldn't parse S-Expression.");
+ return;
+ }
+
+ if (scan_for_protos) {
+ scan_for_prototypes(instructions, expr);
+ if (state->error)
+ return;
+ }
+
+ read_instructions(instructions, expr, NULL);
+ talloc_free(expr);
+
+ if (debug)
+ validate_ir_tree(instructions);
+}
+
+void
+ir_reader::ir_read_error(s_expression *expr, const char *fmt, ...)
+{
+ va_list ap;
+
+ state->error = true;
+
+ if (state->current_function != NULL)
+ state->info_log = talloc_asprintf_append(state->info_log,
+ "In function %s:\n",
+ state->current_function->function_name());
+ state->info_log = talloc_strdup_append(state->info_log, "error: ");
+
+ va_start(ap, fmt);
+ state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap);
+ va_end(ap);
+ state->info_log = talloc_strdup_append(state->info_log, "\n");
+
+ if (expr != NULL) {
+ state->info_log = talloc_strdup_append(state->info_log,
+ "...in this context:\n ");
+ expr->print();
+ state->info_log = talloc_strdup_append(state->info_log, "\n\n");
+ }
+}
+
+const glsl_type *
+ir_reader::read_type(s_expression *expr)
+{
+ s_expression *s_base_type;
+ s_int *s_size;
+
+ s_pattern pat[] = { "array", s_base_type, s_size };
+ if (MATCH(expr, pat)) {
+ const glsl_type *base_type = read_type(s_base_type);
+ if (base_type == NULL) {
+ ir_read_error(NULL, "when reading base type of array type");
+ return NULL;
+ }
+
+ return glsl_type::get_array_instance(base_type, s_size->value());
+ }
+
+ s_symbol *type_sym = SX_AS_SYMBOL(expr);
+ if (type_sym == NULL) {
+ ir_read_error(expr, "expected <type>");
+ return NULL;
+ }
+
+ const glsl_type *type = state->symbols->get_type(type_sym->value());
+ if (type == NULL)
+ ir_read_error(expr, "invalid type: %s", type_sym->value());
+
+ return type;
+}
+
+
+void
+ir_reader::scan_for_prototypes(exec_list *instructions, s_expression *expr)
+{
+ s_list *list = SX_AS_LIST(expr);
+ if (list == NULL) {
+ ir_read_error(expr, "Expected (<instruction> ...); found an atom.");
+ return;
+ }
+
+ foreach_iter(exec_list_iterator, it, list->subexpressions) {
+ s_list *sub = SX_AS_LIST(it.get());
+ if (sub == NULL)
+ continue; // not a (function ...); ignore it.
+
+ s_symbol *tag = SX_AS_SYMBOL(sub->subexpressions.get_head());
+ if (tag == NULL || strcmp(tag->value(), "function") != 0)
+ continue; // not a (function ...); ignore it.
+
+ ir_function *f = read_function(sub, true);
+ if (f == NULL)
+ return;
+ instructions->push_tail(f);
+ }
+}
+
+ir_function *
+ir_reader::read_function(s_expression *expr, bool skip_body)
+{
+ bool added = false;
+ s_symbol *name;
+
+ s_pattern pat[] = { "function", name };
+ if (!PARTIAL_MATCH(expr, pat)) {
+ ir_read_error(expr, "Expected (function <name> (signature ...) ...)");
+ return NULL;
+ }
+
+ ir_function *f = state->symbols->get_function(name->value());
+ if (f == NULL) {
+ f = new(mem_ctx) ir_function(name->value());
+ added = state->symbols->add_function(f);
+ assert(added);
+ }
+
+ exec_list_iterator it = ((s_list *) expr)->subexpressions.iterator();
+ it.next(); // skip "function" tag
+ it.next(); // skip function name
+ for (/* nothing */; it.has_next(); it.next()) {
+ s_expression *s_sig = (s_expression *) it.get();
+ read_function_sig(f, s_sig, skip_body);
+ }
+ return added ? f : NULL;
+}
+
+void
+ir_reader::read_function_sig(ir_function *f, s_expression *expr, bool skip_body)
+{
+ s_expression *type_expr;
+ s_list *paramlist;
+ s_list *body_list;
+
+ s_pattern pat[] = { "signature", type_expr, paramlist, body_list };
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "Expected (signature <type> (parameters ...) "
+ "(<instruction> ...))");
+ return;
+ }
+
+ const glsl_type *return_type = read_type(type_expr);
+ if (return_type == NULL)
+ return;
+
+ s_symbol *paramtag = SX_AS_SYMBOL(paramlist->subexpressions.get_head());
+ if (paramtag == NULL || strcmp(paramtag->value(), "parameters") != 0) {
+ ir_read_error(paramlist, "Expected (parameters ...)");
+ return;
+ }
+
+ // Read the parameters list into a temporary place.
+ exec_list hir_parameters;
+ state->symbols->push_scope();
+
+ exec_list_iterator it = paramlist->subexpressions.iterator();
+ for (it.next() /* skip "parameters" */; it.has_next(); it.next()) {
+ ir_variable *var = read_declaration((s_expression *) it.get());
+ if (var == NULL)
+ return;
+
+ hir_parameters.push_tail(var);
+ }
+
+ ir_function_signature *sig = f->exact_matching_signature(&hir_parameters);
+ if (sig == NULL && skip_body) {
+ /* If scanning for prototypes, generate a new signature. */
+ sig = new(mem_ctx) ir_function_signature(return_type);
+ sig->is_builtin = true;
+ f->add_signature(sig);
+ } else if (sig != NULL) {
+ const char *badvar = sig->qualifiers_match(&hir_parameters);
+ if (badvar != NULL) {
+ ir_read_error(expr, "function `%s' parameter `%s' qualifiers "
+ "don't match prototype", f->name, badvar);
+ return;
+ }
+
+ if (sig->return_type != return_type) {
+ ir_read_error(expr, "function `%s' return type doesn't "
+ "match prototype", f->name);
+ return;
+ }
+ } else {
+ /* No prototype for this body exists - skip it. */
+ state->symbols->pop_scope();
+ return;
+ }
+ assert(sig != NULL);
+
+ sig->replace_parameters(&hir_parameters);
+
+ if (!skip_body && !body_list->subexpressions.is_empty()) {
+ if (sig->is_defined) {
+ ir_read_error(expr, "function %s redefined", f->name);
+ return;
+ }
+ state->current_function = sig;
+ read_instructions(&sig->body, body_list, NULL);
+ state->current_function = NULL;
+ sig->is_defined = true;
+ }
+
+ state->symbols->pop_scope();
+}
+
+void
+ir_reader::read_instructions(exec_list *instructions, s_expression *expr,
+ ir_loop *loop_ctx)
+{
+ // Read in a list of instructions
+ s_list *list = SX_AS_LIST(expr);
+ if (list == NULL) {
+ ir_read_error(expr, "Expected (<instruction> ...); found an atom.");
+ return;
+ }
+
+ foreach_iter(exec_list_iterator, it, list->subexpressions) {
+ s_expression *sub = (s_expression*) it.get();
+ ir_instruction *ir = read_instruction(sub, loop_ctx);
+ if (ir != NULL) {
+ /* Global variable declarations should be moved to the top, before
+ * any functions that might use them. Functions are added to the
+ * instruction stream when scanning for prototypes, so without this
+ * hack, they always appear before variable declarations.
+ */
+ if (state->current_function == NULL && ir->as_variable() != NULL)
+ instructions->push_head(ir);
+ else
+ instructions->push_tail(ir);
+ }
+ }
+}
+
+
+ir_instruction *
+ir_reader::read_instruction(s_expression *expr, ir_loop *loop_ctx)
+{
+ s_symbol *symbol = SX_AS_SYMBOL(expr);
+ if (symbol != NULL) {
+ if (strcmp(symbol->value(), "break") == 0 && loop_ctx != NULL)
+ return new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break);
+ if (strcmp(symbol->value(), "continue") == 0 && loop_ctx != NULL)
+ return new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_continue);
+ }
+
+ s_list *list = SX_AS_LIST(expr);
+ if (list == NULL || list->subexpressions.is_empty()) {
+ ir_read_error(expr, "Invalid instruction.\n");
+ return NULL;
+ }
+
+ s_symbol *tag = SX_AS_SYMBOL(list->subexpressions.get_head());
+ if (tag == NULL) {
+ ir_read_error(expr, "expected instruction tag");
+ return NULL;
+ }
+
+ ir_instruction *inst = NULL;
+ if (strcmp(tag->value(), "declare") == 0) {
+ inst = read_declaration(list);
+ } else if (strcmp(tag->value(), "assign") == 0) {
+ inst = read_assignment(list);
+ } else if (strcmp(tag->value(), "if") == 0) {
+ inst = read_if(list, loop_ctx);
+ } else if (strcmp(tag->value(), "loop") == 0) {
+ inst = read_loop(list);
+ } else if (strcmp(tag->value(), "return") == 0) {
+ inst = read_return(list);
+ } else if (strcmp(tag->value(), "function") == 0) {
+ inst = read_function(list, false);
+ } else {
+ inst = read_rvalue(list);
+ if (inst == NULL)
+ ir_read_error(NULL, "when reading instruction");
+ }
+ return inst;
+}
+
+ir_variable *
+ir_reader::read_declaration(s_expression *expr)
+{
+ s_list *s_quals;
+ s_expression *s_type;
+ s_symbol *s_name;
+
+ s_pattern pat[] = { "declare", s_quals, s_type, s_name };
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (declare (<qualifiers>) <type> <name>)");
+ return NULL;
+ }
+
+ const glsl_type *type = read_type(s_type);
+ if (type == NULL)
+ return NULL;
+
+ ir_variable *var = new(mem_ctx) ir_variable(type, s_name->value(),
+ ir_var_auto);
+
+ foreach_iter(exec_list_iterator, it, s_quals->subexpressions) {
+ s_symbol *qualifier = SX_AS_SYMBOL(it.get());
+ if (qualifier == NULL) {
+ ir_read_error(expr, "qualifier list must contain only symbols");
+ return NULL;
+ }
+
+ // FINISHME: Check for duplicate/conflicting qualifiers.
+ if (strcmp(qualifier->value(), "centroid") == 0) {
+ var->centroid = 1;
+ } else if (strcmp(qualifier->value(), "invariant") == 0) {
+ var->invariant = 1;
+ } else if (strcmp(qualifier->value(), "uniform") == 0) {
+ var->mode = ir_var_uniform;
+ } else if (strcmp(qualifier->value(), "auto") == 0) {
+ var->mode = ir_var_auto;
+ } else if (strcmp(qualifier->value(), "in") == 0) {
+ var->mode = ir_var_in;
+ } else if (strcmp(qualifier->value(), "out") == 0) {
+ var->mode = ir_var_out;
+ } else if (strcmp(qualifier->value(), "inout") == 0) {
+ var->mode = ir_var_inout;
+ } else if (strcmp(qualifier->value(), "smooth") == 0) {
+ var->interpolation = ir_var_smooth;
+ } else if (strcmp(qualifier->value(), "flat") == 0) {
+ var->interpolation = ir_var_flat;
+ } else if (strcmp(qualifier->value(), "noperspective") == 0) {
+ var->interpolation = ir_var_noperspective;
+ } else {
+ ir_read_error(expr, "unknown qualifier: %s", qualifier->value());
+ return NULL;
+ }
+ }
+
+ // Add the variable to the symbol table
+ state->symbols->add_variable(var);
+
+ return var;
+}
+
+
+ir_if *
+ir_reader::read_if(s_expression *expr, ir_loop *loop_ctx)
+{
+ s_expression *s_cond;
+ s_expression *s_then;
+ s_expression *s_else;
+
+ s_pattern pat[] = { "if", s_cond, s_then, s_else };
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (if <condition> (<then>...) (<else>...))");
+ return NULL;
+ }
+
+ ir_rvalue *condition = read_rvalue(s_cond);
+ if (condition == NULL) {
+ ir_read_error(NULL, "when reading condition of (if ...)");
+ return NULL;
+ }
+
+ ir_if *iff = new(mem_ctx) ir_if(condition);
+
+ read_instructions(&iff->then_instructions, s_then, loop_ctx);
+ read_instructions(&iff->else_instructions, s_else, loop_ctx);
+ if (state->error) {
+ delete iff;
+ iff = NULL;
+ }
+ return iff;
+}
+
+
+ir_loop *
+ir_reader::read_loop(s_expression *expr)
+{
+ s_expression *s_counter, *s_from, *s_to, *s_inc, *s_body;
+
+ s_pattern pat[] = { "loop", s_counter, s_from, s_to, s_inc, s_body };
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (loop <counter> <from> <to> "
+ "<increment> <body>)");
+ return NULL;
+ }
+
+ // FINISHME: actually read the count/from/to fields.
+
+ ir_loop *loop = new(mem_ctx) ir_loop;
+ read_instructions(&loop->body_instructions, s_body, loop);
+ if (state->error) {
+ delete loop;
+ loop = NULL;
+ }
+ return loop;
+}
+
+
+ir_return *
+ir_reader::read_return(s_expression *expr)
+{
+ s_expression *s_retval;
+
+ s_pattern pat[] = { "return", s_retval};
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (return <rvalue>)");
+ return NULL;
+ }
+
+ ir_rvalue *retval = read_rvalue(s_retval);
+ if (retval == NULL) {
+ ir_read_error(NULL, "when reading return value");
+ return NULL;
+ }
+
+ return new(mem_ctx) ir_return(retval);
+}
+
+
+ir_rvalue *
+ir_reader::read_rvalue(s_expression *expr)
+{
+ s_list *list = SX_AS_LIST(expr);
+ if (list == NULL || list->subexpressions.is_empty())
+ return NULL;
+
+ s_symbol *tag = SX_AS_SYMBOL(list->subexpressions.get_head());
+ if (tag == NULL) {
+ ir_read_error(expr, "expected rvalue tag");
+ return NULL;
+ }
+
+ ir_rvalue *rvalue = read_dereference(list);
+ if (rvalue != NULL || state->error)
+ return rvalue;
+ else if (strcmp(tag->value(), "swiz") == 0) {
+ rvalue = read_swizzle(list);
+ } else if (strcmp(tag->value(), "expression") == 0) {
+ rvalue = read_expression(list);
+ } else if (strcmp(tag->value(), "call") == 0) {
+ rvalue = read_call(list);
+ } else if (strcmp(tag->value(), "constant") == 0) {
+ rvalue = read_constant(list);
+ } else {
+ rvalue = read_texture(list);
+ if (rvalue == NULL && !state->error)
+ ir_read_error(expr, "unrecognized rvalue tag: %s", tag->value());
+ }
+
+ return rvalue;
+}
+
+ir_assignment *
+ir_reader::read_assignment(s_expression *expr)
+{
+ s_expression *cond_expr = NULL;
+ s_expression *lhs_expr, *rhs_expr;
+ s_list *mask_list;
+
+ s_pattern pat4[] = { "assign", mask_list, lhs_expr, rhs_expr };
+ s_pattern pat5[] = { "assign", cond_expr, mask_list, lhs_expr, rhs_expr };
+ if (!MATCH(expr, pat4) && !MATCH(expr, pat5)) {
+ ir_read_error(expr, "expected (assign [<condition>] (<write mask>) "
+ "<lhs> <rhs>)");
+ return NULL;
+ }
+
+ ir_rvalue *condition = NULL;
+ if (cond_expr != NULL) {
+ condition = read_rvalue(cond_expr);
+ if (condition == NULL) {
+ ir_read_error(NULL, "when reading condition of assignment");
+ return NULL;
+ }
+ }
+
+ unsigned mask = 0;
+
+ s_symbol *mask_symbol;
+ s_pattern mask_pat[] = { mask_symbol };
+ if (MATCH(mask_list, mask_pat)) {
+ const char *mask_str = mask_symbol->value();
+ unsigned mask_length = strlen(mask_str);
+ if (mask_length > 4) {
+ ir_read_error(expr, "invalid write mask: %s", mask_str);
+ return NULL;
+ }
+
+ const unsigned idx_map[] = { 3, 0, 1, 2 }; /* w=bit 3, x=0, y=1, z=2 */
+
+ for (unsigned i = 0; i < mask_length; i++) {
+ if (mask_str[i] < 'w' || mask_str[i] > 'z') {
+ ir_read_error(expr, "write mask contains invalid character: %c",
+ mask_str[i]);
+ return NULL;
+ }
+ mask |= 1 << idx_map[mask_str[i] - 'w'];
+ }
+ } else if (!mask_list->subexpressions.is_empty()) {
+ ir_read_error(mask_list, "expected () or (<write mask>)");
+ return NULL;
+ }
+
+ ir_dereference *lhs = read_dereference(lhs_expr);
+ if (lhs == NULL) {
+ ir_read_error(NULL, "when reading left-hand side of assignment");
+ return NULL;
+ }
+
+ ir_rvalue *rhs = read_rvalue(rhs_expr);
+ if (rhs == NULL) {
+ ir_read_error(NULL, "when reading right-hand side of assignment");
+ return NULL;
+ }
+
+ if (mask == 0 && (lhs->type->is_vector() || lhs->type->is_scalar())) {
+ ir_read_error(expr, "non-zero write mask required.");
+ return NULL;
+ }
+
+ return new(mem_ctx) ir_assignment(lhs, rhs, condition, mask);
+}
+
+ir_call *
+ir_reader::read_call(s_expression *expr)
+{
+ s_symbol *name;
+ s_list *params;
+
+ s_pattern pat[] = { "call", name, params };
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (call <name> (<param> ...))");
+ return NULL;
+ }
+
+ exec_list parameters;
+
+ foreach_iter(exec_list_iterator, it, params->subexpressions) {
+ s_expression *expr = (s_expression*) it.get();
+ ir_rvalue *param = read_rvalue(expr);
+ if (param == NULL) {
+ ir_read_error(expr, "when reading parameter to function call");
+ return NULL;
+ }
+ parameters.push_tail(param);
+ }
+
+ ir_function *f = state->symbols->get_function(name->value());
+ if (f == NULL) {
+ ir_read_error(expr, "found call to undefined function %s",
+ name->value());
+ return NULL;
+ }
+
+ ir_function_signature *callee = f->matching_signature(&parameters);
+ if (callee == NULL) {
+ ir_read_error(expr, "couldn't find matching signature for function "
+ "%s", name->value());
+ return NULL;
+ }
+
+ return new(mem_ctx) ir_call(callee, &parameters);
+}
+
+ir_expression *
+ir_reader::read_expression(s_expression *expr)
+{
+ s_expression *s_type;
+ s_symbol *s_op;
+ s_expression *s_arg1;
+
+ s_pattern pat[] = { "expression", s_type, s_op, s_arg1 };
+ if (!PARTIAL_MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (expression <type> <operator> "
+ "<operand> [<operand>])");
+ return NULL;
+ }
+ s_expression *s_arg2 = (s_expression *) s_arg1->next; // may be tail sentinel
+
+ const glsl_type *type = read_type(s_type);
+ if (type == NULL)
+ return NULL;
+
+ /* Read the operator */
+ ir_expression_operation op = ir_expression::get_operator(s_op->value());
+ if (op == (ir_expression_operation) -1) {
+ ir_read_error(expr, "invalid operator: %s", s_op->value());
+ return NULL;
+ }
+
+ unsigned num_operands = ir_expression::get_num_operands(op);
+ if (num_operands == 1 && !s_arg1->next->is_tail_sentinel()) {
+ ir_read_error(expr, "expected (expression <type> %s <operand>)",
+ s_op->value());
+ return NULL;
+ }
+
+ ir_rvalue *arg1 = read_rvalue(s_arg1);
+ ir_rvalue *arg2 = NULL;
+ if (arg1 == NULL) {
+ ir_read_error(NULL, "when reading first operand of %s", s_op->value());
+ return NULL;
+ }
+
+ if (num_operands == 2) {
+ if (s_arg2->is_tail_sentinel() || !s_arg2->next->is_tail_sentinel()) {
+ ir_read_error(expr, "expected (expression <type> %s <operand> "
+ "<operand>)", s_op->value());
+ return NULL;
+ }
+ arg2 = read_rvalue(s_arg2);
+ if (arg2 == NULL) {
+ ir_read_error(NULL, "when reading second operand of %s",
+ s_op->value());
+ return NULL;
+ }
+ }
+
+ return new(mem_ctx) ir_expression(op, type, arg1, arg2);
+}
+
+ir_swizzle *
+ir_reader::read_swizzle(s_expression *expr)
+{
+ s_symbol *swiz;
+ s_expression *sub;
+
+ s_pattern pat[] = { "swiz", swiz, sub };
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (swiz <swizzle> <rvalue>)");
+ return NULL;
+ }
+
+ if (strlen(swiz->value()) > 4) {
+ ir_read_error(expr, "expected a valid swizzle; found %s", swiz->value());
+ return NULL;
+ }
+
+ ir_rvalue *rvalue = read_rvalue(sub);
+ if (rvalue == NULL)
+ return NULL;
+
+ ir_swizzle *ir = ir_swizzle::create(rvalue, swiz->value(),
+ rvalue->type->vector_elements);
+ if (ir == NULL)
+ ir_read_error(expr, "invalid swizzle");
+
+ return ir;
+}
+
+ir_constant *
+ir_reader::read_constant(s_expression *expr)
+{
+ s_expression *type_expr;
+ s_list *values;
+
+ s_pattern pat[] = { "constant", type_expr, values };
+ if (!MATCH(expr, pat)) {
+ ir_read_error(expr, "expected (constant <type> (...))");
+ return NULL;
+ }
+
+ const glsl_type *type = read_type(type_expr);
+ if (type == NULL)
+ return NULL;
+
+ if (values == NULL) {
+ ir_read_error(expr, "expected (constant <type> (...))");
+ return NULL;
+ }
+
+ if (type->is_array()) {
+ unsigned elements_supplied = 0;
+ exec_list elements;
+ foreach_iter(exec_list_iterator, it, values->subexpressions) {
+ s_expression *elt = (s_expression *) it.get();
+ ir_constant *ir_elt = read_constant(elt);
+ if (ir_elt == NULL)
+ return NULL;
+ elements.push_tail(ir_elt);
+ elements_supplied++;
+ }
+
+ if (elements_supplied != type->length) {
+ ir_read_error(values, "expected exactly %u array elements, "
+ "given %u", type->length, elements_supplied);
+ return NULL;
+ }
+ return new(mem_ctx) ir_constant(type, &elements);
+ }
+
+ const glsl_type *const base_type = type->get_base_type();
+
+ ir_constant_data data = { { 0 } };
+
+ // Read in list of values (at most 16).
+ int k = 0;
+ foreach_iter(exec_list_iterator, it, values->subexpressions) {
+ if (k >= 16) {
+ ir_read_error(values, "expected at most 16 numbers");
+ return NULL;
+ }
+
+ s_expression *expr = (s_expression*) it.get();
+
+ if (base_type->base_type == GLSL_TYPE_FLOAT) {
+ s_number *value = SX_AS_NUMBER(expr);
+ if (value == NULL) {
+ ir_read_error(values, "expected numbers");
+ return NULL;
+ }
+ data.f[k] = value->fvalue();
+ } else {
+ s_int *value = SX_AS_INT(expr);
+ if (value == NULL) {
+ ir_read_error(values, "expected integers");
+ return NULL;
+ }
+
+ switch (base_type->base_type) {
+ case GLSL_TYPE_UINT: {
+ data.u[k] = value->value();
+ break;
+ }
+ case GLSL_TYPE_INT: {
+ data.i[k] = value->value();
+ break;
+ }
+ case GLSL_TYPE_BOOL: {
+ data.b[k] = value->value();
+ break;
+ }
+ default:
+ ir_read_error(values, "unsupported constant type");
+ return NULL;
+ }
+ }
+ ++k;
+ }
+
+ return new(mem_ctx) ir_constant(type, &data);
+}
+
+ir_dereference *
+ir_reader::read_dereference(s_expression *expr)
+{
+ s_symbol *s_var;
+ s_expression *s_subject;
+ s_expression *s_index;
+ s_symbol *s_field;
+
+ s_pattern var_pat[] = { "var_ref", s_var };
+ s_pattern array_pat[] = { "array_ref", s_subject, s_index };
+ s_pattern record_pat[] = { "record_ref", s_subject, s_field };
+
+ if (MATCH(expr, var_pat)) {
+ ir_variable *var = state->symbols->get_variable(s_var->value());
+ if (var == NULL) {
+ ir_read_error(expr, "undeclared variable: %s", s_var->value());
+ return NULL;
+ }
+ return new(mem_ctx) ir_dereference_variable(var);
+ } else if (MATCH(expr, array_pat)) {
+ ir_rvalue *subject = read_rvalue(s_subject);
+ if (subject == NULL) {
+ ir_read_error(NULL, "when reading the subject of an array_ref");
+ return NULL;
+ }
+
+ ir_rvalue *idx = read_rvalue(s_index);
+ if (subject == NULL) {
+ ir_read_error(NULL, "when reading the index of an array_ref");
+ return NULL;
+ }
+ return new(mem_ctx) ir_dereference_array(subject, idx);
+ } else if (MATCH(expr, record_pat)) {
+ ir_rvalue *subject = read_rvalue(s_subject);
+ if (subject == NULL) {
+ ir_read_error(NULL, "when reading the subject of a record_ref");
+ return NULL;
+ }
+ return new(mem_ctx) ir_dereference_record(subject, s_field->value());
+ }
+ return NULL;
+}
+
+ir_texture *
+ir_reader::read_texture(s_expression *expr)
+{
+ s_symbol *tag = NULL;
+ s_expression *s_sampler = NULL;
+ s_expression *s_coord = NULL;
+ s_list *s_offset = NULL;
+ s_expression *s_proj = NULL;
+ s_list *s_shadow = NULL;
+ s_expression *s_lod = NULL;
+
+ ir_texture_opcode op = ir_tex; /* silence warning */
+
+ s_pattern tex_pattern[] =
+ { "tex", s_sampler, s_coord, s_offset, s_proj, s_shadow };
+ s_pattern txf_pattern[] =
+ { "txf", s_sampler, s_coord, s_offset, s_lod };
+ s_pattern other_pattern[] =
+ { tag, s_sampler, s_coord, s_offset, s_proj, s_shadow, s_lod };
+
+ if (MATCH(expr, tex_pattern)) {
+ op = ir_tex;
+ } else if (MATCH(expr, txf_pattern)) {
+ op = ir_txf;
+ } else if (MATCH(expr, other_pattern)) {
+ op = ir_texture::get_opcode(tag->value());
+ if (op == -1)
+ return NULL;
+ } else {
+ ir_read_error(NULL, "unexpected texture pattern");
+ return NULL;
+ }
+
+ ir_texture *tex = new(mem_ctx) ir_texture(op);
+
+ // Read sampler (must be a deref)
+ ir_dereference *sampler = read_dereference(s_sampler);
+ if (sampler == NULL) {
+ ir_read_error(NULL, "when reading sampler in (%s ...)",
+ tex->opcode_string());
+ return NULL;
+ }
+ tex->set_sampler(sampler);
+
+ // Read coordinate (any rvalue)
+ tex->coordinate = read_rvalue(s_coord);
+ if (tex->coordinate == NULL) {
+ ir_read_error(NULL, "when reading coordinate in (%s ...)",
+ tex->opcode_string());
+ return NULL;
+ }
+
+ // Read texel offset, i.e. (0 0 0)
+ s_int *offset_x;
+ s_int *offset_y;
+ s_int *offset_z;
+ s_pattern offset_pat[] = { offset_x, offset_y, offset_z };
+ if (!MATCH(s_offset, offset_pat)) {
+ ir_read_error(s_offset, "expected (<int> <int> <int>)");
+ return NULL;
+ }
+ tex->offsets[0] = offset_x->value();
+ tex->offsets[1] = offset_y->value();
+ tex->offsets[2] = offset_z->value();
+
+ if (op != ir_txf) {
+ s_int *proj_as_int = SX_AS_INT(s_proj);
+ if (proj_as_int && proj_as_int->value() == 1) {
+ tex->projector = NULL;
+ } else {
+ tex->projector = read_rvalue(s_proj);
+ if (tex->projector == NULL) {
+ ir_read_error(NULL, "when reading projective divide in (%s ..)",
+ tex->opcode_string());
+ return NULL;
+ }
+ }
+
+ if (s_shadow->subexpressions.is_empty()) {
+ tex->shadow_comparitor = NULL;
+ } else {
+ tex->shadow_comparitor = read_rvalue(s_shadow);
+ if (tex->shadow_comparitor == NULL) {
+ ir_read_error(NULL, "when reading shadow comparitor in (%s ..)",
+ tex->opcode_string());
+ return NULL;
+ }
+ }
+ }
+
+ switch (op) {
+ case ir_txb:
+ tex->lod_info.bias = read_rvalue(s_lod);
+ if (tex->lod_info.bias == NULL) {
+ ir_read_error(NULL, "when reading LOD bias in (txb ...)");
+ return NULL;
+ }
+ break;
+ case ir_txl:
+ case ir_txf:
+ tex->lod_info.lod = read_rvalue(s_lod);
+ if (tex->lod_info.lod == NULL) {
+ ir_read_error(NULL, "when reading LOD in (%s ...)",
+ tex->opcode_string());
+ return NULL;
+ }
+ break;
+ case ir_txd: {
+ s_expression *s_dx, *s_dy;
+ s_pattern dxdy_pat[] = { s_dx, s_dy };
+ if (!MATCH(s_lod, dxdy_pat)) {
+ ir_read_error(s_lod, "expected (dPdx dPdy) in (txd ...)");
+ return NULL;
+ }
+ tex->lod_info.grad.dPdx = read_rvalue(s_dx);
+ if (tex->lod_info.grad.dPdx == NULL) {
+ ir_read_error(NULL, "when reading dPdx in (txd ...)");
+ return NULL;
+ }
+ tex->lod_info.grad.dPdy = read_rvalue(s_dy);
+ if (tex->lod_info.grad.dPdy == NULL) {
+ ir_read_error(NULL, "when reading dPdy in (txd ...)");
+ return NULL;
+ }
+ break;
+ }
+ default:
+ // tex doesn't have any extra parameters.
+ break;
+ };
+ return tex;
+}
diff --git a/mesalib/src/glsl/link_functions.cpp b/mesalib/src/glsl/link_functions.cpp
index ea9129fe3..861fa39b5 100644
--- a/mesalib/src/glsl/link_functions.cpp
+++ b/mesalib/src/glsl/link_functions.cpp
@@ -1,258 +1,270 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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.
- */
-
-#include <cstdlib>
-#include <cstdio>
-#include <cstdarg>
-
-#include "main/core.h"
-#include "glsl_symbol_table.h"
-#include "glsl_parser_extras.h"
-#include "ir.h"
-#include "program.h"
-#include "program/hash_table.h"
-#include "linker.h"
-
-static ir_function_signature *
-find_matching_signature(const char *name, const exec_list *actual_parameters,
- gl_shader **shader_list, unsigned num_shaders);
-
-class call_link_visitor : public ir_hierarchical_visitor {
-public:
- call_link_visitor(gl_shader_program *prog, gl_shader *linked,
- gl_shader **shader_list, unsigned num_shaders)
- {
- this->prog = prog;
- this->shader_list = shader_list;
- this->num_shaders = num_shaders;
- this->success = true;
- this->linked = linked;
-
- this->locals = hash_table_ctor(0, hash_table_pointer_hash,
- hash_table_pointer_compare);
- }
-
- ~call_link_visitor()
- {
- hash_table_dtor(this->locals);
- }
-
- virtual ir_visitor_status visit(ir_variable *ir)
- {
- hash_table_insert(locals, ir, ir);
- return visit_continue;
- }
-
- virtual ir_visitor_status visit_enter(ir_call *ir)
- {
- /* If ir is an ir_call from a function that was imported from another
- * shader callee will point to an ir_function_signature in the original
- * shader. In this case the function signature MUST NOT BE MODIFIED.
- * Doing so will modify the original shader. This may prevent that
- * shader from being linkable in other programs.
- */
- const ir_function_signature *const callee = ir->get_callee();
- assert(callee != NULL);
- const char *const name = callee->function_name();
-
- /* Determine if the requested function signature already exists in the
- * final linked shader. If it does, use it as the target of the call.
- */
- ir_function_signature *sig =
- find_matching_signature(name, &callee->parameters, &linked, 1);
- if (sig != NULL) {
- ir->set_callee(sig);
- return visit_continue;
- }
-
- /* Try to find the signature in one of the other shaders that is being
- * linked. If it's not found there, return an error.
- */
- sig = find_matching_signature(name, &ir->actual_parameters, shader_list,
- num_shaders);
- if (sig == NULL) {
- /* FINISHME: Log the full signature of unresolved function.
- */
- linker_error_printf(this->prog, "unresolved reference to function "
- "`%s'\n", name);
- this->success = false;
- return visit_stop;
- }
-
- /* Find the prototype information in the linked shader. Generate any
- * details that may be missing.
- */
- ir_function *f = linked->symbols->get_function(name);
- if (f == NULL)
- f = new(linked) ir_function(name);
-
- ir_function_signature *linked_sig =
- f->exact_matching_signature(&callee->parameters);
- if (linked_sig == NULL) {
- linked_sig = new(linked) ir_function_signature(callee->return_type);
- f->add_signature(linked_sig);
- }
-
- /* At this point linked_sig and called may be the same. If ir is an
- * ir_call from linked then linked_sig and callee will be
- * ir_function_signatures that have no definitions (is_defined is false).
- */
- assert(!linked_sig->is_defined);
- assert(linked_sig->body.is_empty());
-
- /* Create an in-place clone of the function definition. This multistep
- * process introduces some complexity here, but it has some advantages.
- * The parameter list and the and function body are cloned separately.
- * The clone of the parameter list is used to prime the hashtable used
- * to replace variable references in the cloned body.
- *
- * The big advantage is that the ir_function_signature does not change.
- * This means that we don't have to process the rest of the IR tree to
- * patch ir_call nodes. In addition, there is no way to remove or
- * replace signature stored in a function. One could easily be added,
- * but this avoids the need.
- */
- struct hash_table *ht = hash_table_ctor(0, hash_table_pointer_hash,
- hash_table_pointer_compare);
- exec_list formal_parameters;
- foreach_list_const(node, &sig->parameters) {
- const ir_instruction *const original = (ir_instruction *) node;
- assert(const_cast<ir_instruction *>(original)->as_variable());
-
- ir_instruction *copy = original->clone(linked, ht);
- formal_parameters.push_tail(copy);
- }
-
- linked_sig->replace_parameters(&formal_parameters);
-
- foreach_list_const(node, &sig->body) {
- const ir_instruction *const original = (ir_instruction *) node;
-
- ir_instruction *copy = original->clone(linked, ht);
- linked_sig->body.push_tail(copy);
- }
-
- linked_sig->is_defined = true;
- hash_table_dtor(ht);
-
- /* Patch references inside the function to things outside the function
- * (i.e., function calls and global variables).
- */
- linked_sig->accept(this);
-
- ir->set_callee(linked_sig);
-
- return visit_continue;
- }
-
- virtual ir_visitor_status visit(ir_dereference_variable *ir)
- {
- if (hash_table_find(locals, ir->var) == NULL) {
- /* The non-function variable must be a global, so try to find the
- * variable in the shader's symbol table. If the variable is not
- * found, then it's a global that *MUST* be defined in the original
- * shader.
- */
- ir_variable *var = linked->symbols->get_variable(ir->var->name);
- if (var == NULL) {
- /* Clone the ir_variable that the dereference already has and add
- * it to the linked shader.
- */
- var = ir->var->clone(linked, NULL);
- linked->symbols->add_variable(var);
- linked->ir->push_head(var);
- }
-
- ir->var = var;
- }
-
- return visit_continue;
- }
-
- /** Was function linking successful? */
- bool success;
-
-private:
- /**
- * Shader program being linked
- *
- * This is only used for logging error messages.
- */
- gl_shader_program *prog;
-
- /** List of shaders available for linking. */
- gl_shader **shader_list;
-
- /** Number of shaders available for linking. */
- unsigned num_shaders;
-
- /**
- * Final linked shader
- *
- * This is used two ways. It is used to find global variables in the
- * linked shader that are accessed by the function. It is also used to add
- * global variables from the shader where the function originated.
- */
- gl_shader *linked;
-
- /**
- * Table of variables local to the function.
- */
- hash_table *locals;
-};
-
-
-/**
- * Searches a list of shaders for a particular function definition
- */
-ir_function_signature *
-find_matching_signature(const char *name, const exec_list *actual_parameters,
- gl_shader **shader_list, unsigned num_shaders)
-{
- for (unsigned i = 0; i < num_shaders; i++) {
- ir_function *const f = shader_list[i]->symbols->get_function(name);
-
- if (f == NULL)
- continue;
-
- ir_function_signature *sig = f->matching_signature(actual_parameters);
-
- if ((sig == NULL) || !sig->is_defined)
- continue;
-
- return sig;
- }
-
- return NULL;
-}
-
-
-bool
-link_function_calls(gl_shader_program *prog, gl_shader *main,
- gl_shader **shader_list, unsigned num_shaders)
-{
- call_link_visitor v(prog, main, shader_list, num_shaders);
-
- v.run(main->ir);
- return v.success;
-}
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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.
+ */
+
+#include <cstdlib>
+#include <cstdio>
+#include <cstdarg>
+
+#include "main/core.h"
+#include "glsl_symbol_table.h"
+#include "glsl_parser_extras.h"
+#include "ir.h"
+#include "program.h"
+#include "program/hash_table.h"
+#include "linker.h"
+
+static ir_function_signature *
+find_matching_signature(const char *name, const exec_list *actual_parameters,
+ gl_shader **shader_list, unsigned num_shaders);
+
+class call_link_visitor : public ir_hierarchical_visitor {
+public:
+ call_link_visitor(gl_shader_program *prog, gl_shader *linked,
+ gl_shader **shader_list, unsigned num_shaders)
+ {
+ this->prog = prog;
+ this->shader_list = shader_list;
+ this->num_shaders = num_shaders;
+ this->success = true;
+ this->linked = linked;
+
+ this->locals = hash_table_ctor(0, hash_table_pointer_hash,
+ hash_table_pointer_compare);
+ }
+
+ ~call_link_visitor()
+ {
+ hash_table_dtor(this->locals);
+ }
+
+ virtual ir_visitor_status visit(ir_variable *ir)
+ {
+ hash_table_insert(locals, ir, ir);
+ return visit_continue;
+ }
+
+ virtual ir_visitor_status visit_enter(ir_call *ir)
+ {
+ /* If ir is an ir_call from a function that was imported from another
+ * shader callee will point to an ir_function_signature in the original
+ * shader. In this case the function signature MUST NOT BE MODIFIED.
+ * Doing so will modify the original shader. This may prevent that
+ * shader from being linkable in other programs.
+ */
+ const ir_function_signature *const callee = ir->get_callee();
+ assert(callee != NULL);
+ const char *const name = callee->function_name();
+
+ /* Determine if the requested function signature already exists in the
+ * final linked shader. If it does, use it as the target of the call.
+ */
+ ir_function_signature *sig =
+ find_matching_signature(name, &callee->parameters, &linked, 1);
+ if (sig != NULL) {
+ ir->set_callee(sig);
+ return visit_continue;
+ }
+
+ /* Try to find the signature in one of the other shaders that is being
+ * linked. If it's not found there, return an error.
+ */
+ sig = find_matching_signature(name, &ir->actual_parameters, shader_list,
+ num_shaders);
+ if (sig == NULL) {
+ /* FINISHME: Log the full signature of unresolved function.
+ */
+ linker_error_printf(this->prog, "unresolved reference to function "
+ "`%s'\n", name);
+ this->success = false;
+ return visit_stop;
+ }
+
+ /* Find the prototype information in the linked shader. Generate any
+ * details that may be missing.
+ */
+ ir_function *f = linked->symbols->get_function(name);
+ if (f == NULL)
+ f = new(linked) ir_function(name);
+
+ ir_function_signature *linked_sig =
+ f->exact_matching_signature(&callee->parameters);
+ if (linked_sig == NULL) {
+ linked_sig = new(linked) ir_function_signature(callee->return_type);
+ f->add_signature(linked_sig);
+ }
+
+ /* At this point linked_sig and called may be the same. If ir is an
+ * ir_call from linked then linked_sig and callee will be
+ * ir_function_signatures that have no definitions (is_defined is false).
+ */
+ assert(!linked_sig->is_defined);
+ assert(linked_sig->body.is_empty());
+
+ /* Create an in-place clone of the function definition. This multistep
+ * process introduces some complexity here, but it has some advantages.
+ * The parameter list and the and function body are cloned separately.
+ * The clone of the parameter list is used to prime the hashtable used
+ * to replace variable references in the cloned body.
+ *
+ * The big advantage is that the ir_function_signature does not change.
+ * This means that we don't have to process the rest of the IR tree to
+ * patch ir_call nodes. In addition, there is no way to remove or
+ * replace signature stored in a function. One could easily be added,
+ * but this avoids the need.
+ */
+ struct hash_table *ht = hash_table_ctor(0, hash_table_pointer_hash,
+ hash_table_pointer_compare);
+ exec_list formal_parameters;
+ foreach_list_const(node, &sig->parameters) {
+ const ir_instruction *const original = (ir_instruction *) node;
+ assert(const_cast<ir_instruction *>(original)->as_variable());
+
+ ir_instruction *copy = original->clone(linked, ht);
+ formal_parameters.push_tail(copy);
+ }
+
+ linked_sig->replace_parameters(&formal_parameters);
+
+ foreach_list_const(node, &sig->body) {
+ const ir_instruction *const original = (ir_instruction *) node;
+
+ ir_instruction *copy = original->clone(linked, ht);
+ linked_sig->body.push_tail(copy);
+ }
+
+ linked_sig->is_defined = true;
+ hash_table_dtor(ht);
+
+ /* Patch references inside the function to things outside the function
+ * (i.e., function calls and global variables).
+ */
+ linked_sig->accept(this);
+
+ ir->set_callee(linked_sig);
+
+ return visit_continue;
+ }
+
+ virtual ir_visitor_status visit(ir_dereference_variable *ir)
+ {
+ if (hash_table_find(locals, ir->var) == NULL) {
+ /* The non-function variable must be a global, so try to find the
+ * variable in the shader's symbol table. If the variable is not
+ * found, then it's a global that *MUST* be defined in the original
+ * shader.
+ */
+ ir_variable *var = linked->symbols->get_variable(ir->var->name);
+ if (var == NULL) {
+ /* Clone the ir_variable that the dereference already has and add
+ * it to the linked shader.
+ */
+ var = ir->var->clone(linked, NULL);
+ linked->symbols->add_variable(var);
+ linked->ir->push_head(var);
+ } else if (var->type->is_array()) {
+ /* It is possible to have a global array declared in multiple
+ * shaders without a size. The array is implicitly sized by the
+ * maximal access to it in *any* shader. Because of this, we
+ * need to track the maximal access to the array as linking pulls
+ * more functions in that access the array.
+ */
+ var->max_array_access =
+ MAX2(var->max_array_access, ir->var->max_array_access);
+
+ if (var->type->length == 0 && ir->var->type->length != 0)
+ var->type = ir->var->type;
+ }
+
+ ir->var = var;
+ }
+
+ return visit_continue;
+ }
+
+ /** Was function linking successful? */
+ bool success;
+
+private:
+ /**
+ * Shader program being linked
+ *
+ * This is only used for logging error messages.
+ */
+ gl_shader_program *prog;
+
+ /** List of shaders available for linking. */
+ gl_shader **shader_list;
+
+ /** Number of shaders available for linking. */
+ unsigned num_shaders;
+
+ /**
+ * Final linked shader
+ *
+ * This is used two ways. It is used to find global variables in the
+ * linked shader that are accessed by the function. It is also used to add
+ * global variables from the shader where the function originated.
+ */
+ gl_shader *linked;
+
+ /**
+ * Table of variables local to the function.
+ */
+ hash_table *locals;
+};
+
+
+/**
+ * Searches a list of shaders for a particular function definition
+ */
+ir_function_signature *
+find_matching_signature(const char *name, const exec_list *actual_parameters,
+ gl_shader **shader_list, unsigned num_shaders)
+{
+ for (unsigned i = 0; i < num_shaders; i++) {
+ ir_function *const f = shader_list[i]->symbols->get_function(name);
+
+ if (f == NULL)
+ continue;
+
+ ir_function_signature *sig = f->matching_signature(actual_parameters);
+
+ if ((sig == NULL) || !sig->is_defined)
+ continue;
+
+ return sig;
+ }
+
+ return NULL;
+}
+
+
+bool
+link_function_calls(gl_shader_program *prog, gl_shader *main,
+ gl_shader **shader_list, unsigned num_shaders)
+{
+ call_link_visitor v(prog, main, shader_list, num_shaders);
+
+ v.run(main->ir);
+ return v.success;
+}
diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp
index 9f4b4149c..bf7a56353 100644
--- a/mesalib/src/glsl/linker.cpp
+++ b/mesalib/src/glsl/linker.cpp
@@ -1,1676 +1,1672 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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.
- */
-
-/**
- * \file linker.cpp
- * GLSL linker implementation
- *
- * Given a set of shaders that are to be linked to generate a final program,
- * there are three distinct stages.
- *
- * In the first stage shaders are partitioned into groups based on the shader
- * type. All shaders of a particular type (e.g., vertex shaders) are linked
- * together.
- *
- * - Undefined references in each shader are resolve to definitions in
- * another shader.
- * - Types and qualifiers of uniforms, outputs, and global variables defined
- * in multiple shaders with the same name are verified to be the same.
- * - Initializers for uniforms and global variables defined
- * in multiple shaders with the same name are verified to be the same.
- *
- * The result, in the terminology of the GLSL spec, is a set of shader
- * executables for each processing unit.
- *
- * After the first stage is complete, a series of semantic checks are performed
- * on each of the shader executables.
- *
- * - Each shader executable must define a \c main function.
- * - Each vertex shader executable must write to \c gl_Position.
- * - Each fragment shader executable must write to either \c gl_FragData or
- * \c gl_FragColor.
- *
- * In the final stage individual shader executables are linked to create a
- * complete exectuable.
- *
- * - Types of uniforms defined in multiple shader stages with the same name
- * are verified to be the same.
- * - Initializers for uniforms defined in multiple shader stages with the
- * same name are verified to be the same.
- * - Types and qualifiers of outputs defined in one stage are verified to
- * be the same as the types and qualifiers of inputs defined with the same
- * name in a later stage.
- *
- * \author Ian Romanick <ian.d.romanick@intel.com>
- */
-#include <cstdlib>
-#include <cstdio>
-#include <cstdarg>
-#include <climits>
-
-#include "main/core.h"
-#include "glsl_symbol_table.h"
-#include "ir.h"
-#include "program.h"
-#include "program/hash_table.h"
-#include "linker.h"
-#include "ir_optimization.h"
-
-extern "C" {
-#include "main/shaderobj.h"
-}
-
-/**
- * Visitor that determines whether or not a variable is ever written.
- */
-class find_assignment_visitor : public ir_hierarchical_visitor {
-public:
- find_assignment_visitor(const char *name)
- : name(name), found(false)
- {
- /* empty */
- }
-
- virtual ir_visitor_status visit_enter(ir_assignment *ir)
- {
- ir_variable *const var = ir->lhs->variable_referenced();
-
- if (strcmp(name, var->name) == 0) {
- found = true;
- return visit_stop;
- }
-
- return visit_continue_with_parent;
- }
-
- virtual ir_visitor_status visit_enter(ir_call *ir)
- {
- exec_list_iterator sig_iter = ir->get_callee()->parameters.iterator();
- foreach_iter(exec_list_iterator, iter, *ir) {
- ir_rvalue *param_rval = (ir_rvalue *)iter.get();
- ir_variable *sig_param = (ir_variable *)sig_iter.get();
-
- if (sig_param->mode == ir_var_out ||
- sig_param->mode == ir_var_inout) {
- ir_variable *var = param_rval->variable_referenced();
- if (var && strcmp(name, var->name) == 0) {
- found = true;
- return visit_stop;
- }
- }
- sig_iter.next();
- }
-
- return visit_continue_with_parent;
- }
-
- bool variable_found()
- {
- return found;
- }
-
-private:
- const char *name; /**< Find writes to a variable with this name. */
- bool found; /**< Was a write to the variable found? */
-};
-
-
-/**
- * Visitor that determines whether or not a variable is ever read.
- */
-class find_deref_visitor : public ir_hierarchical_visitor {
-public:
- find_deref_visitor(const char *name)
- : name(name), found(false)
- {
- /* empty */
- }
-
- virtual ir_visitor_status visit(ir_dereference_variable *ir)
- {
- if (strcmp(this->name, ir->var->name) == 0) {
- this->found = true;
- return visit_stop;
- }
-
- return visit_continue;
- }
-
- bool variable_found() const
- {
- return this->found;
- }
-
-private:
- const char *name; /**< Find writes to a variable with this name. */
- bool found; /**< Was a write to the variable found? */
-};
-
-
-void
-linker_error_printf(gl_shader_program *prog, const char *fmt, ...)
-{
- va_list ap;
-
- prog->InfoLog = talloc_strdup_append(prog->InfoLog, "error: ");
- va_start(ap, fmt);
- prog->InfoLog = talloc_vasprintf_append(prog->InfoLog, fmt, ap);
- va_end(ap);
-}
-
-
-void
-invalidate_variable_locations(gl_shader *sh, enum ir_variable_mode mode,
- int generic_base)
-{
- foreach_list(node, sh->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if ((var == NULL) || (var->mode != (unsigned) mode))
- continue;
-
- /* Only assign locations for generic attributes / varyings / etc.
- */
- if ((var->location >= generic_base) && !var->explicit_location)
- var->location = -1;
- }
-}
-
-
-/**
- * Determine the number of attribute slots required for a particular type
- *
- * This code is here because it implements the language rules of a specific
- * GLSL version. Since it's a property of the language and not a property of
- * types in general, it doesn't really belong in glsl_type.
- */
-unsigned
-count_attribute_slots(const glsl_type *t)
-{
- /* From page 31 (page 37 of the PDF) of the GLSL 1.50 spec:
- *
- * "A scalar input counts the same amount against this limit as a vec4,
- * so applications may want to consider packing groups of four
- * unrelated float inputs together into a vector to better utilize the
- * capabilities of the underlying hardware. A matrix input will use up
- * multiple locations. The number of locations used will equal the
- * number of columns in the matrix."
- *
- * The spec does not explicitly say how arrays are counted. However, it
- * should be safe to assume the total number of slots consumed by an array
- * is the number of entries in the array multiplied by the number of slots
- * consumed by a single element of the array.
- */
-
- if (t->is_array())
- return t->array_size() * count_attribute_slots(t->element_type());
-
- if (t->is_matrix())
- return t->matrix_columns;
-
- return 1;
-}
-
-
-/**
- * Verify that a vertex shader executable meets all semantic requirements
- *
- * \param shader Vertex shader executable to be verified
- */
-bool
-validate_vertex_shader_executable(struct gl_shader_program *prog,
- struct gl_shader *shader)
-{
- if (shader == NULL)
- return true;
-
- find_assignment_visitor find("gl_Position");
- find.run(shader->ir);
- if (!find.variable_found()) {
- linker_error_printf(prog,
- "vertex shader does not write to `gl_Position'\n");
- return false;
- }
-
- return true;
-}
-
-
-/**
- * Verify that a fragment shader executable meets all semantic requirements
- *
- * \param shader Fragment shader executable to be verified
- */
-bool
-validate_fragment_shader_executable(struct gl_shader_program *prog,
- struct gl_shader *shader)
-{
- if (shader == NULL)
- return true;
-
- find_assignment_visitor frag_color("gl_FragColor");
- find_assignment_visitor frag_data("gl_FragData");
-
- frag_color.run(shader->ir);
- frag_data.run(shader->ir);
-
- if (frag_color.variable_found() && frag_data.variable_found()) {
- linker_error_printf(prog, "fragment shader writes to both "
- "`gl_FragColor' and `gl_FragData'\n");
- return false;
- }
-
- return true;
-}
-
-
-/**
- * Generate a string describing the mode of a variable
- */
-static const char *
-mode_string(const ir_variable *var)
-{
- switch (var->mode) {
- case ir_var_auto:
- return (var->read_only) ? "global constant" : "global variable";
-
- case ir_var_uniform: return "uniform";
- case ir_var_in: return "shader input";
- case ir_var_out: return "shader output";
- case ir_var_inout: return "shader inout";
-
- case ir_var_temporary:
- default:
- assert(!"Should not get here.");
- return "invalid variable";
- }
-}
-
-
-/**
- * Perform validation of global variables used across multiple shaders
- */
-bool
-cross_validate_globals(struct gl_shader_program *prog,
- struct gl_shader **shader_list,
- unsigned num_shaders,
- bool uniforms_only)
-{
- /* Examine all of the uniforms in all of the shaders and cross validate
- * them.
- */
- glsl_symbol_table variables;
- for (unsigned i = 0; i < num_shaders; i++) {
- if (shader_list[i] == NULL)
- continue;
-
- foreach_list(node, shader_list[i]->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if (var == NULL)
- continue;
-
- if (uniforms_only && (var->mode != ir_var_uniform))
- continue;
-
- /* Don't cross validate temporaries that are at global scope. These
- * will eventually get pulled into the shaders 'main'.
- */
- if (var->mode == ir_var_temporary)
- continue;
-
- /* If a global with this name has already been seen, verify that the
- * new instance has the same type. In addition, if the globals have
- * initializers, the values of the initializers must be the same.
- */
- ir_variable *const existing = variables.get_variable(var->name);
- if (existing != NULL) {
- if (var->type != existing->type) {
- /* Consider the types to be "the same" if both types are arrays
- * of the same type and one of the arrays is implicitly sized.
- * In addition, set the type of the linked variable to the
- * explicitly sized array.
- */
- if (var->type->is_array()
- && existing->type->is_array()
- && (var->type->fields.array == existing->type->fields.array)
- && ((var->type->length == 0)
- || (existing->type->length == 0))) {
- if (existing->type->length == 0) {
- existing->type = var->type;
- existing->max_array_access =
- MAX2(existing->max_array_access,
- var->max_array_access);
- }
- } else {
- linker_error_printf(prog, "%s `%s' declared as type "
- "`%s' and type `%s'\n",
- mode_string(var),
- var->name, var->type->name,
- existing->type->name);
- return false;
- }
- }
-
- if (var->explicit_location) {
- if (existing->explicit_location
- && (var->location != existing->location)) {
- linker_error_printf(prog, "explicit locations for %s "
- "`%s' have differing values\n",
- mode_string(var), var->name);
- return false;
- }
-
- existing->location = var->location;
- existing->explicit_location = true;
- }
-
- /* FINISHME: Handle non-constant initializers.
- */
- if (var->constant_value != NULL) {
- if (existing->constant_value != NULL) {
- if (!var->constant_value->has_value(existing->constant_value)) {
- linker_error_printf(prog, "initializers for %s "
- "`%s' have differing values\n",
- mode_string(var), var->name);
- return false;
- }
- } else
- /* If the first-seen instance of a particular uniform did not
- * have an initializer but a later instance does, copy the
- * initializer to the version stored in the symbol table.
- */
- /* FINISHME: This is wrong. The constant_value field should
- * FINISHME: not be modified! Imagine a case where a shader
- * FINISHME: without an initializer is linked in two different
- * FINISHME: programs with shaders that have differing
- * FINISHME: initializers. Linking with the first will
- * FINISHME: modify the shader, and linking with the second
- * FINISHME: will fail.
- */
- existing->constant_value =
- var->constant_value->clone(talloc_parent(existing), NULL);
- }
-
- if (existing->invariant != var->invariant) {
- linker_error_printf(prog, "declarations for %s `%s' have "
- "mismatching invariant qualifiers\n",
- mode_string(var), var->name);
- return false;
- }
- if (existing->centroid != var->centroid) {
- linker_error_printf(prog, "declarations for %s `%s' have "
- "mismatching centroid qualifiers\n",
- mode_string(var), var->name);
- return false;
- }
- } else
- variables.add_variable(var);
- }
- }
-
- return true;
-}
-
-
-/**
- * Perform validation of uniforms used across multiple shader stages
- */
-bool
-cross_validate_uniforms(struct gl_shader_program *prog)
-{
- return cross_validate_globals(prog, prog->_LinkedShaders,
- MESA_SHADER_TYPES, true);
-}
-
-
-/**
- * Validate that outputs from one stage match inputs of another
- */
-bool
-cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
- gl_shader *producer, gl_shader *consumer)
-{
- glsl_symbol_table parameters;
- /* FINISHME: Figure these out dynamically. */
- const char *const producer_stage = "vertex";
- const char *const consumer_stage = "fragment";
-
- /* Find all shader outputs in the "producer" stage.
- */
- foreach_list(node, producer->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- /* FINISHME: For geometry shaders, this should also look for inout
- * FINISHME: variables.
- */
- if ((var == NULL) || (var->mode != ir_var_out))
- continue;
-
- parameters.add_variable(var);
- }
-
-
- /* Find all shader inputs in the "consumer" stage. Any variables that have
- * matching outputs already in the symbol table must have the same type and
- * qualifiers.
- */
- foreach_list(node, consumer->ir) {
- ir_variable *const input = ((ir_instruction *) node)->as_variable();
-
- /* FINISHME: For geometry shaders, this should also look for inout
- * FINISHME: variables.
- */
- if ((input == NULL) || (input->mode != ir_var_in))
- continue;
-
- ir_variable *const output = parameters.get_variable(input->name);
- if (output != NULL) {
- /* Check that the types match between stages.
- */
- if (input->type != output->type) {
- /* There is a bit of a special case for gl_TexCoord. This
- * built-in is unsized by default. Appliations that variable
- * access it must redeclare it with a size. There is some
- * language in the GLSL spec that implies the fragment shader
- * and vertex shader do not have to agree on this size. Other
- * driver behave this way, and one or two applications seem to
- * rely on it.
- *
- * Neither declaration needs to be modified here because the array
- * sizes are fixed later when update_array_sizes is called.
- *
- * From page 48 (page 54 of the PDF) of the GLSL 1.10 spec:
- *
- * "Unlike user-defined varying variables, the built-in
- * varying variables don't have a strict one-to-one
- * correspondence between the vertex language and the
- * fragment language."
- */
- if (!output->type->is_array()
- || (strncmp("gl_", output->name, 3) != 0)) {
- linker_error_printf(prog,
- "%s shader output `%s' declared as "
- "type `%s', but %s shader input declared "
- "as type `%s'\n",
- producer_stage, output->name,
- output->type->name,
- consumer_stage, input->type->name);
- return false;
- }
- }
-
- /* Check that all of the qualifiers match between stages.
- */
- if (input->centroid != output->centroid) {
- linker_error_printf(prog,
- "%s shader output `%s' %s centroid qualifier, "
- "but %s shader input %s centroid qualifier\n",
- producer_stage,
- output->name,
- (output->centroid) ? "has" : "lacks",
- consumer_stage,
- (input->centroid) ? "has" : "lacks");
- return false;
- }
-
- if (input->invariant != output->invariant) {
- linker_error_printf(prog,
- "%s shader output `%s' %s invariant qualifier, "
- "but %s shader input %s invariant qualifier\n",
- producer_stage,
- output->name,
- (output->invariant) ? "has" : "lacks",
- consumer_stage,
- (input->invariant) ? "has" : "lacks");
- return false;
- }
-
- if (input->interpolation != output->interpolation) {
- linker_error_printf(prog,
- "%s shader output `%s' specifies %s "
- "interpolation qualifier, "
- "but %s shader input specifies %s "
- "interpolation qualifier\n",
- producer_stage,
- output->name,
- output->interpolation_string(),
- consumer_stage,
- input->interpolation_string());
- return false;
- }
- }
- }
-
- return true;
-}
-
-
-/**
- * Populates a shaders symbol table with all global declarations
- */
-static void
-populate_symbol_table(gl_shader *sh)
-{
- sh->symbols = new(sh) glsl_symbol_table;
-
- foreach_list(node, sh->ir) {
- ir_instruction *const inst = (ir_instruction *) node;
- ir_variable *var;
- ir_function *func;
-
- if ((func = inst->as_function()) != NULL) {
- sh->symbols->add_function(func);
- } else if ((var = inst->as_variable()) != NULL) {
- sh->symbols->add_variable(var);
- }
- }
-}
-
-
-/**
- * Remap variables referenced in an instruction tree
- *
- * This is used when instruction trees are cloned from one shader and placed in
- * another. These trees will contain references to \c ir_variable nodes that
- * do not exist in the target shader. This function finds these \c ir_variable
- * references and replaces the references with matching variables in the target
- * shader.
- *
- * If there is no matching variable in the target shader, a clone of the
- * \c ir_variable is made and added to the target shader. The new variable is
- * added to \b both the instruction stream and the symbol table.
- *
- * \param inst IR tree that is to be processed.
- * \param symbols Symbol table containing global scope symbols in the
- * linked shader.
- * \param instructions Instruction stream where new variable declarations
- * should be added.
- */
-void
-remap_variables(ir_instruction *inst, struct gl_shader *target,
- hash_table *temps)
-{
- class remap_visitor : public ir_hierarchical_visitor {
- public:
- remap_visitor(struct gl_shader *target,
- hash_table *temps)
- {
- this->target = target;
- this->symbols = target->symbols;
- this->instructions = target->ir;
- this->temps = temps;
- }
-
- virtual ir_visitor_status visit(ir_dereference_variable *ir)
- {
- if (ir->var->mode == ir_var_temporary) {
- ir_variable *var = (ir_variable *) hash_table_find(temps, ir->var);
-
- assert(var != NULL);
- ir->var = var;
- return visit_continue;
- }
-
- ir_variable *const existing =
- this->symbols->get_variable(ir->var->name);
- if (existing != NULL)
- ir->var = existing;
- else {
- ir_variable *copy = ir->var->clone(this->target, NULL);
-
- this->symbols->add_variable(copy);
- this->instructions->push_head(copy);
- ir->var = copy;
- }
-
- return visit_continue;
- }
-
- private:
- struct gl_shader *target;
- glsl_symbol_table *symbols;
- exec_list *instructions;
- hash_table *temps;
- };
-
- remap_visitor v(target, temps);
-
- inst->accept(&v);
-}
-
-
-/**
- * Move non-declarations from one instruction stream to another
- *
- * The intended usage pattern of this function is to pass the pointer to the
- * head sentinel of a list (i.e., a pointer to the list cast to an \c exec_node
- * pointer) for \c last and \c false for \c make_copies on the first
- * call. Successive calls pass the return value of the previous call for
- * \c last and \c true for \c make_copies.
- *
- * \param instructions Source instruction stream
- * \param last Instruction after which new instructions should be
- * inserted in the target instruction stream
- * \param make_copies Flag selecting whether instructions in \c instructions
- * should be copied (via \c ir_instruction::clone) into the
- * target list or moved.
- *
- * \return
- * The new "last" instruction in the target instruction stream. This pointer
- * is suitable for use as the \c last parameter of a later call to this
- * function.
- */
-exec_node *
-move_non_declarations(exec_list *instructions, exec_node *last,
- bool make_copies, gl_shader *target)
-{
- hash_table *temps = NULL;
-
- if (make_copies)
- temps = hash_table_ctor(0, hash_table_pointer_hash,
- hash_table_pointer_compare);
-
- foreach_list_safe(node, instructions) {
- ir_instruction *inst = (ir_instruction *) node;
-
- if (inst->as_function())
- continue;
-
- ir_variable *var = inst->as_variable();
- if ((var != NULL) && (var->mode != ir_var_temporary))
- continue;
-
- assert(inst->as_assignment()
- || ((var != NULL) && (var->mode == ir_var_temporary)));
-
- if (make_copies) {
- inst = inst->clone(target, NULL);
-
- if (var != NULL)
- hash_table_insert(temps, inst, var);
- else
- remap_variables(inst, target, temps);
- } else {
- inst->remove();
- }
-
- last->insert_after(inst);
- last = inst;
- }
-
- if (make_copies)
- hash_table_dtor(temps);
-
- return last;
-}
-
-/**
- * Get the function signature for main from a shader
- */
-static ir_function_signature *
-get_main_function_signature(gl_shader *sh)
-{
- ir_function *const f = sh->symbols->get_function("main");
- if (f != NULL) {
- exec_list void_parameters;
-
- /* Look for the 'void main()' signature and ensure that it's defined.
- * This keeps the linker from accidentally pick a shader that just
- * contains a prototype for main.
- *
- * We don't have to check for multiple definitions of main (in multiple
- * shaders) because that would have already been caught above.
- */
- ir_function_signature *sig = f->matching_signature(&void_parameters);
- if ((sig != NULL) && sig->is_defined) {
- return sig;
- }
- }
-
- return NULL;
-}
-
-
-/**
- * Combine a group of shaders for a single stage to generate a linked shader
- *
- * \note
- * If this function is supplied a single shader, it is cloned, and the new
- * shader is returned.
- */
-static struct gl_shader *
-link_intrastage_shaders(void *mem_ctx,
- struct gl_context *ctx,
- struct gl_shader_program *prog,
- struct gl_shader **shader_list,
- unsigned num_shaders)
-{
- /* Check that global variables defined in multiple shaders are consistent.
- */
- if (!cross_validate_globals(prog, shader_list, num_shaders, false))
- return NULL;
-
- /* Check that there is only a single definition of each function signature
- * across all shaders.
- */
- for (unsigned i = 0; i < (num_shaders - 1); i++) {
- foreach_list(node, shader_list[i]->ir) {
- ir_function *const f = ((ir_instruction *) node)->as_function();
-
- if (f == NULL)
- continue;
-
- for (unsigned j = i + 1; j < num_shaders; j++) {
- ir_function *const other =
- shader_list[j]->symbols->get_function(f->name);
-
- /* If the other shader has no function (and therefore no function
- * signatures) with the same name, skip to the next shader.
- */
- if (other == NULL)
- continue;
-
- foreach_iter (exec_list_iterator, iter, *f) {
- ir_function_signature *sig =
- (ir_function_signature *) iter.get();
-
- if (!sig->is_defined || sig->is_builtin)
- continue;
-
- ir_function_signature *other_sig =
- other->exact_matching_signature(& sig->parameters);
-
- if ((other_sig != NULL) && other_sig->is_defined
- && !other_sig->is_builtin) {
- linker_error_printf(prog,
- "function `%s' is multiply defined",
- f->name);
- return NULL;
- }
- }
- }
- }
- }
-
- /* Find the shader that defines main, and make a clone of it.
- *
- * Starting with the clone, search for undefined references. If one is
- * found, find the shader that defines it. Clone the reference and add
- * it to the shader. Repeat until there are no undefined references or
- * until a reference cannot be resolved.
- */
- gl_shader *main = NULL;
- for (unsigned i = 0; i < num_shaders; i++) {
- if (get_main_function_signature(shader_list[i]) != NULL) {
- main = shader_list[i];
- break;
- }
- }
-
- if (main == NULL) {
- linker_error_printf(prog, "%s shader lacks `main'\n",
- (shader_list[0]->Type == GL_VERTEX_SHADER)
- ? "vertex" : "fragment");
- return NULL;
- }
-
- gl_shader *linked = ctx->Driver.NewShader(NULL, 0, main->Type);
- linked->ir = new(linked) exec_list;
- clone_ir_list(mem_ctx, linked->ir, main->ir);
-
- populate_symbol_table(linked);
-
- /* The a pointer to the main function in the final linked shader (i.e., the
- * copy of the original shader that contained the main function).
- */
- ir_function_signature *const main_sig = get_main_function_signature(linked);
-
- /* Move any instructions other than variable declarations or function
- * declarations into main.
- */
- exec_node *insertion_point =
- move_non_declarations(linked->ir, (exec_node *) &main_sig->body, false,
- linked);
-
- for (unsigned i = 0; i < num_shaders; i++) {
- if (shader_list[i] == main)
- continue;
-
- insertion_point = move_non_declarations(shader_list[i]->ir,
- insertion_point, true, linked);
- }
-
- /* Resolve initializers for global variables in the linked shader.
- */
- unsigned num_linking_shaders = num_shaders;
- for (unsigned i = 0; i < num_shaders; i++)
- num_linking_shaders += shader_list[i]->num_builtins_to_link;
-
- gl_shader **linking_shaders =
- (gl_shader **) calloc(num_linking_shaders, sizeof(gl_shader *));
-
- memcpy(linking_shaders, shader_list,
- sizeof(linking_shaders[0]) * num_shaders);
-
- unsigned idx = num_shaders;
- for (unsigned i = 0; i < num_shaders; i++) {
- memcpy(&linking_shaders[idx], shader_list[i]->builtins_to_link,
- sizeof(linking_shaders[0]) * shader_list[i]->num_builtins_to_link);
- idx += shader_list[i]->num_builtins_to_link;
- }
-
- assert(idx == num_linking_shaders);
-
- if (!link_function_calls(prog, linked, linking_shaders,
- num_linking_shaders)) {
- ctx->Driver.DeleteShader(ctx, linked);
- linked = NULL;
- }
-
- free(linking_shaders);
-
- /* Make a pass over all global variables to ensure that arrays with
- * unspecified sizes have a size specified. The size is inferred from the
- * max_array_access field.
- */
- if (linked != NULL) {
- foreach_list(node, linked->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if (var == NULL)
- continue;
-
- if ((var->mode != ir_var_auto) && (var->mode != ir_var_temporary))
- continue;
-
- if (!var->type->is_array() || (var->type->length != 0))
- continue;
-
- const glsl_type *type =
- glsl_type::get_array_instance(var->type->fields.array,
- var->max_array_access);
-
- assert(type != NULL);
- var->type = type;
- }
- }
-
- return linked;
-}
-
-
-struct uniform_node {
- exec_node link;
- struct gl_uniform *u;
- unsigned slots;
-};
-
-/**
- * Update the sizes of linked shader uniform arrays to the maximum
- * array index used.
- *
- * From page 81 (page 95 of the PDF) of the OpenGL 2.1 spec:
- *
- * If one or more elements of an array are active,
- * GetActiveUniform will return the name of the array in name,
- * subject to the restrictions listed above. The type of the array
- * is returned in type. The size parameter contains the highest
- * array element index used, plus one. The compiler or linker
- * determines the highest index used. There will be only one
- * active uniform reported by the GL per uniform array.
-
- */
-static void
-update_array_sizes(struct gl_shader_program *prog)
-{
- for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- foreach_list(node, prog->_LinkedShaders[i]->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if ((var == NULL) || (var->mode != ir_var_uniform &&
- var->mode != ir_var_in &&
- var->mode != ir_var_out) ||
- !var->type->is_array())
- continue;
-
- unsigned int size = var->max_array_access;
- for (unsigned j = 0; j < MESA_SHADER_TYPES; j++) {
- if (prog->_LinkedShaders[j] == NULL)
- continue;
-
- foreach_list(node2, prog->_LinkedShaders[j]->ir) {
- ir_variable *other_var = ((ir_instruction *) node2)->as_variable();
- if (!other_var)
- continue;
-
- if (strcmp(var->name, other_var->name) == 0 &&
- other_var->max_array_access > size) {
- size = other_var->max_array_access;
- }
- }
- }
-
- if (size + 1 != var->type->fields.array->length) {
- var->type = glsl_type::get_array_instance(var->type->fields.array,
- size + 1);
- /* FINISHME: We should update the types of array
- * dereferences of this variable now.
- */
- }
- }
- }
-}
-
-static void
-add_uniform(void *mem_ctx, exec_list *uniforms, struct hash_table *ht,
- const char *name, const glsl_type *type, GLenum shader_type,
- unsigned *next_shader_pos, unsigned *total_uniforms)
-{
- if (type->is_record()) {
- for (unsigned int i = 0; i < type->length; i++) {
- const glsl_type *field_type = type->fields.structure[i].type;
- char *field_name = talloc_asprintf(mem_ctx, "%s.%s", name,
- type->fields.structure[i].name);
-
- add_uniform(mem_ctx, uniforms, ht, field_name, field_type,
- shader_type, next_shader_pos, total_uniforms);
- }
- } else {
- uniform_node *n = (uniform_node *) hash_table_find(ht, name);
- unsigned int vec4_slots;
- const glsl_type *array_elem_type = NULL;
-
- if (type->is_array()) {
- array_elem_type = type->fields.array;
- /* Array of structures. */
- if (array_elem_type->is_record()) {
- for (unsigned int i = 0; i < type->length; i++) {
- char *elem_name = talloc_asprintf(mem_ctx, "%s[%d]", name, i);
- add_uniform(mem_ctx, uniforms, ht, elem_name, array_elem_type,
- shader_type, next_shader_pos, total_uniforms);
- }
- return;
- }
- }
-
- /* Fix the storage size of samplers at 1 vec4 each. Be sure to pad out
- * vectors to vec4 slots.
- */
- if (type->is_array()) {
- if (array_elem_type->is_sampler())
- vec4_slots = type->length;
- else
- vec4_slots = type->length * array_elem_type->matrix_columns;
- } else if (type->is_sampler()) {
- vec4_slots = 1;
- } else {
- vec4_slots = type->matrix_columns;
- }
-
- if (n == NULL) {
- n = (uniform_node *) calloc(1, sizeof(struct uniform_node));
- n->u = (gl_uniform *) calloc(1, sizeof(struct gl_uniform));
- n->slots = vec4_slots;
-
- n->u->Name = strdup(name);
- n->u->Type = type;
- n->u->VertPos = -1;
- n->u->FragPos = -1;
- n->u->GeomPos = -1;
- (*total_uniforms)++;
-
- hash_table_insert(ht, n, name);
- uniforms->push_tail(& n->link);
- }
-
- switch (shader_type) {
- case GL_VERTEX_SHADER:
- n->u->VertPos = *next_shader_pos;
- break;
- case GL_FRAGMENT_SHADER:
- n->u->FragPos = *next_shader_pos;
- break;
- case GL_GEOMETRY_SHADER:
- n->u->GeomPos = *next_shader_pos;
- break;
- }
-
- (*next_shader_pos) += vec4_slots;
- }
-}
-
-void
-assign_uniform_locations(struct gl_shader_program *prog)
-{
- /* */
- exec_list uniforms;
- unsigned total_uniforms = 0;
- hash_table *ht = hash_table_ctor(32, hash_table_string_hash,
- hash_table_string_compare);
- void *mem_ctx = talloc_new(NULL);
-
- for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- unsigned next_position = 0;
-
- foreach_list(node, prog->_LinkedShaders[i]->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if ((var == NULL) || (var->mode != ir_var_uniform))
- continue;
-
- if (strncmp(var->name, "gl_", 3) == 0) {
- /* At the moment, we don't allocate uniform locations for
- * builtin uniforms. It's permitted by spec, and we'll
- * likely switch to doing that at some point, but not yet.
- */
- continue;
- }
-
- var->location = next_position;
- add_uniform(mem_ctx, &uniforms, ht, var->name, var->type,
- prog->_LinkedShaders[i]->Type,
- &next_position, &total_uniforms);
- }
- }
-
- talloc_free(mem_ctx);
-
- gl_uniform_list *ul = (gl_uniform_list *)
- calloc(1, sizeof(gl_uniform_list));
-
- ul->Size = total_uniforms;
- ul->NumUniforms = total_uniforms;
- ul->Uniforms = (gl_uniform *) calloc(total_uniforms, sizeof(gl_uniform));
-
- unsigned idx = 0;
- uniform_node *next;
- for (uniform_node *node = (uniform_node *) uniforms.head
- ; node->link.next != NULL
- ; node = next) {
- next = (uniform_node *) node->link.next;
-
- node->link.remove();
- memcpy(&ul->Uniforms[idx], node->u, sizeof(gl_uniform));
- idx++;
-
- free(node->u);
- free(node);
- }
-
- hash_table_dtor(ht);
-
- prog->Uniforms = ul;
-}
-
-
-/**
- * Find a contiguous set of available bits in a bitmask
- *
- * \param used_mask Bits representing used (1) and unused (0) locations
- * \param needed_count Number of contiguous bits needed.
- *
- * \return
- * Base location of the available bits on success or -1 on failure.
- */
-int
-find_available_slots(unsigned used_mask, unsigned needed_count)
-{
- unsigned needed_mask = (1 << needed_count) - 1;
- const int max_bit_to_test = (8 * sizeof(used_mask)) - needed_count;
-
- /* The comparison to 32 is redundant, but without it GCC emits "warning:
- * cannot optimize possibly infinite loops" for the loop below.
- */
- if ((needed_count == 0) || (max_bit_to_test < 0) || (max_bit_to_test > 32))
- return -1;
-
- for (int i = 0; i <= max_bit_to_test; i++) {
- if ((needed_mask & ~used_mask) == needed_mask)
- return i;
-
- needed_mask <<= 1;
- }
-
- return -1;
-}
-
-
-bool
-assign_attribute_locations(gl_shader_program *prog, unsigned max_attribute_index)
-{
- /* Mark invalid attribute locations as being used.
- */
- unsigned used_locations = (max_attribute_index >= 32)
- ? ~0 : ~((1 << max_attribute_index) - 1);
-
- gl_shader *const sh = prog->_LinkedShaders[0];
- assert(sh->Type == GL_VERTEX_SHADER);
-
- /* Operate in a total of four passes.
- *
- * 1. Invalidate the location assignments for all vertex shader inputs.
- *
- * 2. Assign locations for inputs that have user-defined (via
- * glBindVertexAttribLocation) locatoins.
- *
- * 3. Sort the attributes without assigned locations by number of slots
- * required in decreasing order. Fragmentation caused by attribute
- * locations assigned by the application may prevent large attributes
- * from having enough contiguous space.
- *
- * 4. Assign locations to any inputs without assigned locations.
- */
-
- invalidate_variable_locations(sh, ir_var_in, VERT_ATTRIB_GENERIC0);
-
- if (prog->Attributes != NULL) {
- for (unsigned i = 0; i < prog->Attributes->NumParameters; i++) {
- ir_variable *const var =
- sh->symbols->get_variable(prog->Attributes->Parameters[i].Name);
-
- /* Note: attributes that occupy multiple slots, such as arrays or
- * matrices, may appear in the attrib array multiple times.
- */
- if ((var == NULL) || (var->location != -1))
- continue;
-
- /* From page 61 of the OpenGL 4.0 spec:
- *
- * "LinkProgram will fail if the attribute bindings assigned by
- * BindAttribLocation do not leave not enough space to assign a
- * location for an active matrix attribute or an active attribute
- * array, both of which require multiple contiguous generic
- * attributes."
- *
- * Previous versions of the spec contain similar language but omit the
- * bit about attribute arrays.
- *
- * Page 61 of the OpenGL 4.0 spec also says:
- *
- * "It is possible for an application to bind more than one
- * attribute name to the same location. This is referred to as
- * aliasing. This will only work if only one of the aliased
- * attributes is active in the executable program, or if no path
- * through the shader consumes more than one attribute of a set
- * of attributes aliased to the same location. A link error can
- * occur if the linker determines that every path through the
- * shader consumes multiple aliased attributes, but
- * implementations are not required to generate an error in this
- * case."
- *
- * These two paragraphs are either somewhat contradictory, or I don't
- * fully understand one or both of them.
- */
- /* FINISHME: The code as currently written does not support attribute
- * FINISHME: location aliasing (see comment above).
- */
- const int attr = prog->Attributes->Parameters[i].StateIndexes[0];
- const unsigned slots = count_attribute_slots(var->type);
-
- /* Mask representing the contiguous slots that will be used by this
- * attribute.
- */
- const unsigned use_mask = (1 << slots) - 1;
-
- /* Generate a link error if the set of bits requested for this
- * attribute overlaps any previously allocated bits.
- */
- if ((~(use_mask << attr) & used_locations) != used_locations) {
- linker_error_printf(prog,
- "insufficient contiguous attribute locations "
- "available for vertex shader input `%s'",
- var->name);
- return false;
- }
-
- var->location = VERT_ATTRIB_GENERIC0 + attr;
- used_locations |= (use_mask << attr);
- }
- }
-
- /* Temporary storage for the set of attributes that need locations assigned.
- */
- struct temp_attr {
- unsigned slots;
- ir_variable *var;
-
- /* Used below in the call to qsort. */
- static int compare(const void *a, const void *b)
- {
- const temp_attr *const l = (const temp_attr *) a;
- const temp_attr *const r = (const temp_attr *) b;
-
- /* Reversed because we want a descending order sort below. */
- return r->slots - l->slots;
- }
- } to_assign[16];
-
- unsigned num_attr = 0;
-
- foreach_list(node, sh->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if ((var == NULL) || (var->mode != ir_var_in))
- continue;
-
- if (var->explicit_location) {
- const unsigned slots = count_attribute_slots(var->type);
- const unsigned use_mask = (1 << slots) - 1;
- const int attr = var->location - VERT_ATTRIB_GENERIC0;
-
- if ((var->location >= (int)(max_attribute_index + VERT_ATTRIB_GENERIC0))
- || (var->location < 0)) {
- linker_error_printf(prog,
- "invalid explicit location %d specified for "
- "`%s'\n",
- (var->location < 0) ? var->location : attr,
- var->name);
- return false;
- } else if (var->location >= VERT_ATTRIB_GENERIC0) {
- used_locations |= (use_mask << attr);
- }
- }
-
- /* The location was explicitly assigned, nothing to do here.
- */
- if (var->location != -1)
- continue;
-
- to_assign[num_attr].slots = count_attribute_slots(var->type);
- to_assign[num_attr].var = var;
- num_attr++;
- }
-
- /* If all of the attributes were assigned locations by the application (or
- * are built-in attributes with fixed locations), return early. This should
- * be the common case.
- */
- if (num_attr == 0)
- return true;
-
- qsort(to_assign, num_attr, sizeof(to_assign[0]), temp_attr::compare);
-
- /* VERT_ATTRIB_GENERIC0 is a psdueo-alias for VERT_ATTRIB_POS. It can only
- * be explicitly assigned by via glBindAttribLocation. Mark it as reserved
- * to prevent it from being automatically allocated below.
- */
- find_deref_visitor find("gl_Vertex");
- find.run(sh->ir);
- if (find.variable_found())
- used_locations |= (1 << 0);
-
- for (unsigned i = 0; i < num_attr; i++) {
- /* Mask representing the contiguous slots that will be used by this
- * attribute.
- */
- const unsigned use_mask = (1 << to_assign[i].slots) - 1;
-
- int location = find_available_slots(used_locations, to_assign[i].slots);
-
- if (location < 0) {
- linker_error_printf(prog,
- "insufficient contiguous attribute locations "
- "available for vertex shader input `%s'",
- to_assign[i].var->name);
- return false;
- }
-
- to_assign[i].var->location = VERT_ATTRIB_GENERIC0 + location;
- used_locations |= (use_mask << location);
- }
-
- return true;
-}
-
-
-/**
- * Demote shader inputs and outputs that are not used in other stages
- */
-void
-demote_shader_inputs_and_outputs(gl_shader *sh, enum ir_variable_mode mode)
-{
- foreach_list(node, sh->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if ((var == NULL) || (var->mode != int(mode)))
- continue;
-
- /* A shader 'in' or 'out' variable is only really an input or output if
- * its value is used by other shader stages. This will cause the variable
- * to have a location assigned.
- */
- if (var->location == -1) {
- var->mode = ir_var_auto;
- }
- }
-}
-
-
-void
-assign_varying_locations(struct gl_shader_program *prog,
- gl_shader *producer, gl_shader *consumer)
-{
- /* FINISHME: Set dynamically when geometry shader support is added. */
- unsigned output_index = VERT_RESULT_VAR0;
- unsigned input_index = FRAG_ATTRIB_VAR0;
-
- /* Operate in a total of three passes.
- *
- * 1. Assign locations for any matching inputs and outputs.
- *
- * 2. Mark output variables in the producer that do not have locations as
- * not being outputs. This lets the optimizer eliminate them.
- *
- * 3. Mark input variables in the consumer that do not have locations as
- * not being inputs. This lets the optimizer eliminate them.
- */
-
- invalidate_variable_locations(producer, ir_var_out, VERT_RESULT_VAR0);
- invalidate_variable_locations(consumer, ir_var_in, FRAG_ATTRIB_VAR0);
-
- foreach_list(node, producer->ir) {
- ir_variable *const output_var = ((ir_instruction *) node)->as_variable();
-
- if ((output_var == NULL) || (output_var->mode != ir_var_out)
- || (output_var->location != -1))
- continue;
-
- ir_variable *const input_var =
- consumer->symbols->get_variable(output_var->name);
-
- if ((input_var == NULL) || (input_var->mode != ir_var_in))
- continue;
-
- assert(input_var->location == -1);
-
- output_var->location = output_index;
- input_var->location = input_index;
-
- /* FINISHME: Support for "varying" records in GLSL 1.50. */
- assert(!output_var->type->is_record());
-
- if (output_var->type->is_array()) {
- const unsigned slots = output_var->type->length
- * output_var->type->fields.array->matrix_columns;
-
- output_index += slots;
- input_index += slots;
- } else {
- const unsigned slots = output_var->type->matrix_columns;
-
- output_index += slots;
- input_index += slots;
- }
- }
-
- foreach_list(node, consumer->ir) {
- ir_variable *const var = ((ir_instruction *) node)->as_variable();
-
- if ((var == NULL) || (var->mode != ir_var_in))
- continue;
-
- if (var->location == -1) {
- if (prog->Version <= 120) {
- /* On page 25 (page 31 of the PDF) of the GLSL 1.20 spec:
- *
- * Only those varying variables used (i.e. read) in
- * the fragment shader executable must be written to
- * by the vertex shader executable; declaring
- * superfluous varying variables in a vertex shader is
- * permissible.
- *
- * We interpret this text as meaning that the VS must
- * write the variable for the FS to read it. See
- * "glsl1-varying read but not written" in piglit.
- */
-
- linker_error_printf(prog, "fragment shader varying %s not written "
- "by vertex shader\n.", var->name);
- prog->LinkStatus = false;
- }
-
- /* An 'in' variable is only really a shader input if its
- * value is written by the previous stage.
- */
- var->mode = ir_var_auto;
- }
- }
-}
-
-
-void
-link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
-{
- void *mem_ctx = talloc_init("temporary linker context");
-
- prog->LinkStatus = false;
- prog->Validated = false;
- prog->_Used = false;
-
- if (prog->InfoLog != NULL)
- talloc_free(prog->InfoLog);
-
- prog->InfoLog = talloc_strdup(NULL, "");
-
- /* Separate the shaders into groups based on their type.
- */
- struct gl_shader **vert_shader_list;
- unsigned num_vert_shaders = 0;
- struct gl_shader **frag_shader_list;
- unsigned num_frag_shaders = 0;
-
- vert_shader_list = (struct gl_shader **)
- calloc(2 * prog->NumShaders, sizeof(struct gl_shader *));
- frag_shader_list = &vert_shader_list[prog->NumShaders];
-
- unsigned min_version = UINT_MAX;
- unsigned max_version = 0;
- for (unsigned i = 0; i < prog->NumShaders; i++) {
- min_version = MIN2(min_version, prog->Shaders[i]->Version);
- max_version = MAX2(max_version, prog->Shaders[i]->Version);
-
- switch (prog->Shaders[i]->Type) {
- case GL_VERTEX_SHADER:
- vert_shader_list[num_vert_shaders] = prog->Shaders[i];
- num_vert_shaders++;
- break;
- case GL_FRAGMENT_SHADER:
- frag_shader_list[num_frag_shaders] = prog->Shaders[i];
- num_frag_shaders++;
- break;
- case GL_GEOMETRY_SHADER:
- /* FINISHME: Support geometry shaders. */
- assert(prog->Shaders[i]->Type != GL_GEOMETRY_SHADER);
- break;
- }
- }
-
- /* Previous to GLSL version 1.30, different compilation units could mix and
- * match shading language versions. With GLSL 1.30 and later, the versions
- * of all shaders must match.
- */
- assert(min_version >= 100);
- assert(max_version <= 130);
- if ((max_version >= 130 || min_version == 100)
- && min_version != max_version) {
- linker_error_printf(prog, "all shaders must use same shading "
- "language version\n");
- goto done;
- }
-
- prog->Version = max_version;
-
- for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] != NULL)
- ctx->Driver.DeleteShader(ctx, prog->_LinkedShaders[i]);
-
- prog->_LinkedShaders[i] = NULL;
- }
-
- /* Link all shaders for a particular stage and validate the result.
- */
- if (num_vert_shaders > 0) {
- gl_shader *const sh =
- link_intrastage_shaders(mem_ctx, ctx, prog, vert_shader_list,
- num_vert_shaders);
-
- if (sh == NULL)
- goto done;
-
- if (!validate_vertex_shader_executable(prog, sh))
- goto done;
-
- _mesa_reference_shader(ctx, &prog->_LinkedShaders[MESA_SHADER_VERTEX],
- sh);
- }
-
- if (num_frag_shaders > 0) {
- gl_shader *const sh =
- link_intrastage_shaders(mem_ctx, ctx, prog, frag_shader_list,
- num_frag_shaders);
-
- if (sh == NULL)
- goto done;
-
- if (!validate_fragment_shader_executable(prog, sh))
- goto done;
-
- _mesa_reference_shader(ctx, &prog->_LinkedShaders[MESA_SHADER_FRAGMENT],
- sh);
- }
-
- /* Here begins the inter-stage linking phase. Some initial validation is
- * performed, then locations are assigned for uniforms, attributes, and
- * varyings.
- */
- if (cross_validate_uniforms(prog)) {
- unsigned prev;
-
- for (prev = 0; prev < MESA_SHADER_TYPES; prev++) {
- if (prog->_LinkedShaders[prev] != NULL)
- break;
- }
-
- /* Validate the inputs of each stage with the output of the preceeding
- * stage.
- */
- for (unsigned i = prev + 1; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- if (!cross_validate_outputs_to_inputs(prog,
- prog->_LinkedShaders[prev],
- prog->_LinkedShaders[i]))
- goto done;
-
- prev = i;
- }
-
- prog->LinkStatus = true;
- }
-
- /* Do common optimization before assigning storage for attributes,
- * uniforms, and varyings. Later optimization could possibly make
- * some of that unused.
- */
- for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, 32))
- ;
- }
-
- update_array_sizes(prog);
-
- assign_uniform_locations(prog);
-
- if (prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL) {
- /* FINISHME: The value of the max_attribute_index parameter is
- * FINISHME: implementation dependent based on the value of
- * FINISHME: GL_MAX_VERTEX_ATTRIBS. GL_MAX_VERTEX_ATTRIBS must be
- * FINISHME: at least 16, so hardcode 16 for now.
- */
- if (!assign_attribute_locations(prog, 16)) {
- prog->LinkStatus = false;
- goto done;
- }
- }
-
- unsigned prev;
- for (prev = 0; prev < MESA_SHADER_TYPES; prev++) {
- if (prog->_LinkedShaders[prev] != NULL)
- break;
- }
-
- for (unsigned i = prev + 1; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- assign_varying_locations(prog,
- prog->_LinkedShaders[prev],
- prog->_LinkedShaders[i]);
- prev = i;
- }
-
- if (prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL) {
- demote_shader_inputs_and_outputs(prog->_LinkedShaders[MESA_SHADER_VERTEX],
- ir_var_out);
- }
-
- if (prog->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
- gl_shader *const sh = prog->_LinkedShaders[MESA_SHADER_GEOMETRY];
-
- demote_shader_inputs_and_outputs(sh, ir_var_in);
- demote_shader_inputs_and_outputs(sh, ir_var_inout);
- demote_shader_inputs_and_outputs(sh, ir_var_out);
- }
-
- if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL) {
- gl_shader *const sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
-
- demote_shader_inputs_and_outputs(sh, ir_var_in);
- }
-
- /* FINISHME: Assign fragment shader output locations. */
-
-done:
- free(vert_shader_list);
-
- for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- /* Retain any live IR, but trash the rest. */
- reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir);
- }
-
- talloc_free(mem_ctx);
-}
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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.
+ */
+
+/**
+ * \file linker.cpp
+ * GLSL linker implementation
+ *
+ * Given a set of shaders that are to be linked to generate a final program,
+ * there are three distinct stages.
+ *
+ * In the first stage shaders are partitioned into groups based on the shader
+ * type. All shaders of a particular type (e.g., vertex shaders) are linked
+ * together.
+ *
+ * - Undefined references in each shader are resolve to definitions in
+ * another shader.
+ * - Types and qualifiers of uniforms, outputs, and global variables defined
+ * in multiple shaders with the same name are verified to be the same.
+ * - Initializers for uniforms and global variables defined
+ * in multiple shaders with the same name are verified to be the same.
+ *
+ * The result, in the terminology of the GLSL spec, is a set of shader
+ * executables for each processing unit.
+ *
+ * After the first stage is complete, a series of semantic checks are performed
+ * on each of the shader executables.
+ *
+ * - Each shader executable must define a \c main function.
+ * - Each vertex shader executable must write to \c gl_Position.
+ * - Each fragment shader executable must write to either \c gl_FragData or
+ * \c gl_FragColor.
+ *
+ * In the final stage individual shader executables are linked to create a
+ * complete exectuable.
+ *
+ * - Types of uniforms defined in multiple shader stages with the same name
+ * are verified to be the same.
+ * - Initializers for uniforms defined in multiple shader stages with the
+ * same name are verified to be the same.
+ * - Types and qualifiers of outputs defined in one stage are verified to
+ * be the same as the types and qualifiers of inputs defined with the same
+ * name in a later stage.
+ *
+ * \author Ian Romanick <ian.d.romanick@intel.com>
+ */
+#include <cstdlib>
+#include <cstdio>
+#include <cstdarg>
+#include <climits>
+
+#include "main/core.h"
+#include "glsl_symbol_table.h"
+#include "ir.h"
+#include "program.h"
+#include "program/hash_table.h"
+#include "linker.h"
+#include "ir_optimization.h"
+
+extern "C" {
+#include "main/shaderobj.h"
+}
+
+/**
+ * Visitor that determines whether or not a variable is ever written.
+ */
+class find_assignment_visitor : public ir_hierarchical_visitor {
+public:
+ find_assignment_visitor(const char *name)
+ : name(name), found(false)
+ {
+ /* empty */
+ }
+
+ virtual ir_visitor_status visit_enter(ir_assignment *ir)
+ {
+ ir_variable *const var = ir->lhs->variable_referenced();
+
+ if (strcmp(name, var->name) == 0) {
+ found = true;
+ return visit_stop;
+ }
+
+ return visit_continue_with_parent;
+ }
+
+ virtual ir_visitor_status visit_enter(ir_call *ir)
+ {
+ exec_list_iterator sig_iter = ir->get_callee()->parameters.iterator();
+ foreach_iter(exec_list_iterator, iter, *ir) {
+ ir_rvalue *param_rval = (ir_rvalue *)iter.get();
+ ir_variable *sig_param = (ir_variable *)sig_iter.get();
+
+ if (sig_param->mode == ir_var_out ||
+ sig_param->mode == ir_var_inout) {
+ ir_variable *var = param_rval->variable_referenced();
+ if (var && strcmp(name, var->name) == 0) {
+ found = true;
+ return visit_stop;
+ }
+ }
+ sig_iter.next();
+ }
+
+ return visit_continue_with_parent;
+ }
+
+ bool variable_found()
+ {
+ return found;
+ }
+
+private:
+ const char *name; /**< Find writes to a variable with this name. */
+ bool found; /**< Was a write to the variable found? */
+};
+
+
+/**
+ * Visitor that determines whether or not a variable is ever read.
+ */
+class find_deref_visitor : public ir_hierarchical_visitor {
+public:
+ find_deref_visitor(const char *name)
+ : name(name), found(false)
+ {
+ /* empty */
+ }
+
+ virtual ir_visitor_status visit(ir_dereference_variable *ir)
+ {
+ if (strcmp(this->name, ir->var->name) == 0) {
+ this->found = true;
+ return visit_stop;
+ }
+
+ return visit_continue;
+ }
+
+ bool variable_found() const
+ {
+ return this->found;
+ }
+
+private:
+ const char *name; /**< Find writes to a variable with this name. */
+ bool found; /**< Was a write to the variable found? */
+};
+
+
+void
+linker_error_printf(gl_shader_program *prog, const char *fmt, ...)
+{
+ va_list ap;
+
+ prog->InfoLog = talloc_strdup_append(prog->InfoLog, "error: ");
+ va_start(ap, fmt);
+ prog->InfoLog = talloc_vasprintf_append(prog->InfoLog, fmt, ap);
+ va_end(ap);
+}
+
+
+void
+invalidate_variable_locations(gl_shader *sh, enum ir_variable_mode mode,
+ int generic_base)
+{
+ foreach_list(node, sh->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if ((var == NULL) || (var->mode != (unsigned) mode))
+ continue;
+
+ /* Only assign locations for generic attributes / varyings / etc.
+ */
+ if ((var->location >= generic_base) && !var->explicit_location)
+ var->location = -1;
+ }
+}
+
+
+/**
+ * Determine the number of attribute slots required for a particular type
+ *
+ * This code is here because it implements the language rules of a specific
+ * GLSL version. Since it's a property of the language and not a property of
+ * types in general, it doesn't really belong in glsl_type.
+ */
+unsigned
+count_attribute_slots(const glsl_type *t)
+{
+ /* From page 31 (page 37 of the PDF) of the GLSL 1.50 spec:
+ *
+ * "A scalar input counts the same amount against this limit as a vec4,
+ * so applications may want to consider packing groups of four
+ * unrelated float inputs together into a vector to better utilize the
+ * capabilities of the underlying hardware. A matrix input will use up
+ * multiple locations. The number of locations used will equal the
+ * number of columns in the matrix."
+ *
+ * The spec does not explicitly say how arrays are counted. However, it
+ * should be safe to assume the total number of slots consumed by an array
+ * is the number of entries in the array multiplied by the number of slots
+ * consumed by a single element of the array.
+ */
+
+ if (t->is_array())
+ return t->array_size() * count_attribute_slots(t->element_type());
+
+ if (t->is_matrix())
+ return t->matrix_columns;
+
+ return 1;
+}
+
+
+/**
+ * Verify that a vertex shader executable meets all semantic requirements
+ *
+ * \param shader Vertex shader executable to be verified
+ */
+bool
+validate_vertex_shader_executable(struct gl_shader_program *prog,
+ struct gl_shader *shader)
+{
+ if (shader == NULL)
+ return true;
+
+ find_assignment_visitor find("gl_Position");
+ find.run(shader->ir);
+ if (!find.variable_found()) {
+ linker_error_printf(prog,
+ "vertex shader does not write to `gl_Position'\n");
+ return false;
+ }
+
+ return true;
+}
+
+
+/**
+ * Verify that a fragment shader executable meets all semantic requirements
+ *
+ * \param shader Fragment shader executable to be verified
+ */
+bool
+validate_fragment_shader_executable(struct gl_shader_program *prog,
+ struct gl_shader *shader)
+{
+ if (shader == NULL)
+ return true;
+
+ find_assignment_visitor frag_color("gl_FragColor");
+ find_assignment_visitor frag_data("gl_FragData");
+
+ frag_color.run(shader->ir);
+ frag_data.run(shader->ir);
+
+ if (frag_color.variable_found() && frag_data.variable_found()) {
+ linker_error_printf(prog, "fragment shader writes to both "
+ "`gl_FragColor' and `gl_FragData'\n");
+ return false;
+ }
+
+ return true;
+}
+
+
+/**
+ * Generate a string describing the mode of a variable
+ */
+static const char *
+mode_string(const ir_variable *var)
+{
+ switch (var->mode) {
+ case ir_var_auto:
+ return (var->read_only) ? "global constant" : "global variable";
+
+ case ir_var_uniform: return "uniform";
+ case ir_var_in: return "shader input";
+ case ir_var_out: return "shader output";
+ case ir_var_inout: return "shader inout";
+
+ case ir_var_temporary:
+ default:
+ assert(!"Should not get here.");
+ return "invalid variable";
+ }
+}
+
+
+/**
+ * Perform validation of global variables used across multiple shaders
+ */
+bool
+cross_validate_globals(struct gl_shader_program *prog,
+ struct gl_shader **shader_list,
+ unsigned num_shaders,
+ bool uniforms_only)
+{
+ /* Examine all of the uniforms in all of the shaders and cross validate
+ * them.
+ */
+ glsl_symbol_table variables;
+ for (unsigned i = 0; i < num_shaders; i++) {
+ if (shader_list[i] == NULL)
+ continue;
+
+ foreach_list(node, shader_list[i]->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if (var == NULL)
+ continue;
+
+ if (uniforms_only && (var->mode != ir_var_uniform))
+ continue;
+
+ /* Don't cross validate temporaries that are at global scope. These
+ * will eventually get pulled into the shaders 'main'.
+ */
+ if (var->mode == ir_var_temporary)
+ continue;
+
+ /* If a global with this name has already been seen, verify that the
+ * new instance has the same type. In addition, if the globals have
+ * initializers, the values of the initializers must be the same.
+ */
+ ir_variable *const existing = variables.get_variable(var->name);
+ if (existing != NULL) {
+ if (var->type != existing->type) {
+ /* Consider the types to be "the same" if both types are arrays
+ * of the same type and one of the arrays is implicitly sized.
+ * In addition, set the type of the linked variable to the
+ * explicitly sized array.
+ */
+ if (var->type->is_array()
+ && existing->type->is_array()
+ && (var->type->fields.array == existing->type->fields.array)
+ && ((var->type->length == 0)
+ || (existing->type->length == 0))) {
+ if (var->type->length != 0) {
+ existing->type = var->type;
+ }
+ } else {
+ linker_error_printf(prog, "%s `%s' declared as type "
+ "`%s' and type `%s'\n",
+ mode_string(var),
+ var->name, var->type->name,
+ existing->type->name);
+ return false;
+ }
+ }
+
+ if (var->explicit_location) {
+ if (existing->explicit_location
+ && (var->location != existing->location)) {
+ linker_error_printf(prog, "explicit locations for %s "
+ "`%s' have differing values\n",
+ mode_string(var), var->name);
+ return false;
+ }
+
+ existing->location = var->location;
+ existing->explicit_location = true;
+ }
+
+ /* FINISHME: Handle non-constant initializers.
+ */
+ if (var->constant_value != NULL) {
+ if (existing->constant_value != NULL) {
+ if (!var->constant_value->has_value(existing->constant_value)) {
+ linker_error_printf(prog, "initializers for %s "
+ "`%s' have differing values\n",
+ mode_string(var), var->name);
+ return false;
+ }
+ } else
+ /* If the first-seen instance of a particular uniform did not
+ * have an initializer but a later instance does, copy the
+ * initializer to the version stored in the symbol table.
+ */
+ /* FINISHME: This is wrong. The constant_value field should
+ * FINISHME: not be modified! Imagine a case where a shader
+ * FINISHME: without an initializer is linked in two different
+ * FINISHME: programs with shaders that have differing
+ * FINISHME: initializers. Linking with the first will
+ * FINISHME: modify the shader, and linking with the second
+ * FINISHME: will fail.
+ */
+ existing->constant_value =
+ var->constant_value->clone(talloc_parent(existing), NULL);
+ }
+
+ if (existing->invariant != var->invariant) {
+ linker_error_printf(prog, "declarations for %s `%s' have "
+ "mismatching invariant qualifiers\n",
+ mode_string(var), var->name);
+ return false;
+ }
+ if (existing->centroid != var->centroid) {
+ linker_error_printf(prog, "declarations for %s `%s' have "
+ "mismatching centroid qualifiers\n",
+ mode_string(var), var->name);
+ return false;
+ }
+ } else
+ variables.add_variable(var);
+ }
+ }
+
+ return true;
+}
+
+
+/**
+ * Perform validation of uniforms used across multiple shader stages
+ */
+bool
+cross_validate_uniforms(struct gl_shader_program *prog)
+{
+ return cross_validate_globals(prog, prog->_LinkedShaders,
+ MESA_SHADER_TYPES, true);
+}
+
+
+/**
+ * Validate that outputs from one stage match inputs of another
+ */
+bool
+cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
+ gl_shader *producer, gl_shader *consumer)
+{
+ glsl_symbol_table parameters;
+ /* FINISHME: Figure these out dynamically. */
+ const char *const producer_stage = "vertex";
+ const char *const consumer_stage = "fragment";
+
+ /* Find all shader outputs in the "producer" stage.
+ */
+ foreach_list(node, producer->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ /* FINISHME: For geometry shaders, this should also look for inout
+ * FINISHME: variables.
+ */
+ if ((var == NULL) || (var->mode != ir_var_out))
+ continue;
+
+ parameters.add_variable(var);
+ }
+
+
+ /* Find all shader inputs in the "consumer" stage. Any variables that have
+ * matching outputs already in the symbol table must have the same type and
+ * qualifiers.
+ */
+ foreach_list(node, consumer->ir) {
+ ir_variable *const input = ((ir_instruction *) node)->as_variable();
+
+ /* FINISHME: For geometry shaders, this should also look for inout
+ * FINISHME: variables.
+ */
+ if ((input == NULL) || (input->mode != ir_var_in))
+ continue;
+
+ ir_variable *const output = parameters.get_variable(input->name);
+ if (output != NULL) {
+ /* Check that the types match between stages.
+ */
+ if (input->type != output->type) {
+ /* There is a bit of a special case for gl_TexCoord. This
+ * built-in is unsized by default. Appliations that variable
+ * access it must redeclare it with a size. There is some
+ * language in the GLSL spec that implies the fragment shader
+ * and vertex shader do not have to agree on this size. Other
+ * driver behave this way, and one or two applications seem to
+ * rely on it.
+ *
+ * Neither declaration needs to be modified here because the array
+ * sizes are fixed later when update_array_sizes is called.
+ *
+ * From page 48 (page 54 of the PDF) of the GLSL 1.10 spec:
+ *
+ * "Unlike user-defined varying variables, the built-in
+ * varying variables don't have a strict one-to-one
+ * correspondence between the vertex language and the
+ * fragment language."
+ */
+ if (!output->type->is_array()
+ || (strncmp("gl_", output->name, 3) != 0)) {
+ linker_error_printf(prog,
+ "%s shader output `%s' declared as "
+ "type `%s', but %s shader input declared "
+ "as type `%s'\n",
+ producer_stage, output->name,
+ output->type->name,
+ consumer_stage, input->type->name);
+ return false;
+ }
+ }
+
+ /* Check that all of the qualifiers match between stages.
+ */
+ if (input->centroid != output->centroid) {
+ linker_error_printf(prog,
+ "%s shader output `%s' %s centroid qualifier, "
+ "but %s shader input %s centroid qualifier\n",
+ producer_stage,
+ output->name,
+ (output->centroid) ? "has" : "lacks",
+ consumer_stage,
+ (input->centroid) ? "has" : "lacks");
+ return false;
+ }
+
+ if (input->invariant != output->invariant) {
+ linker_error_printf(prog,
+ "%s shader output `%s' %s invariant qualifier, "
+ "but %s shader input %s invariant qualifier\n",
+ producer_stage,
+ output->name,
+ (output->invariant) ? "has" : "lacks",
+ consumer_stage,
+ (input->invariant) ? "has" : "lacks");
+ return false;
+ }
+
+ if (input->interpolation != output->interpolation) {
+ linker_error_printf(prog,
+ "%s shader output `%s' specifies %s "
+ "interpolation qualifier, "
+ "but %s shader input specifies %s "
+ "interpolation qualifier\n",
+ producer_stage,
+ output->name,
+ output->interpolation_string(),
+ consumer_stage,
+ input->interpolation_string());
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+
+/**
+ * Populates a shaders symbol table with all global declarations
+ */
+static void
+populate_symbol_table(gl_shader *sh)
+{
+ sh->symbols = new(sh) glsl_symbol_table;
+
+ foreach_list(node, sh->ir) {
+ ir_instruction *const inst = (ir_instruction *) node;
+ ir_variable *var;
+ ir_function *func;
+
+ if ((func = inst->as_function()) != NULL) {
+ sh->symbols->add_function(func);
+ } else if ((var = inst->as_variable()) != NULL) {
+ sh->symbols->add_variable(var);
+ }
+ }
+}
+
+
+/**
+ * Remap variables referenced in an instruction tree
+ *
+ * This is used when instruction trees are cloned from one shader and placed in
+ * another. These trees will contain references to \c ir_variable nodes that
+ * do not exist in the target shader. This function finds these \c ir_variable
+ * references and replaces the references with matching variables in the target
+ * shader.
+ *
+ * If there is no matching variable in the target shader, a clone of the
+ * \c ir_variable is made and added to the target shader. The new variable is
+ * added to \b both the instruction stream and the symbol table.
+ *
+ * \param inst IR tree that is to be processed.
+ * \param symbols Symbol table containing global scope symbols in the
+ * linked shader.
+ * \param instructions Instruction stream where new variable declarations
+ * should be added.
+ */
+void
+remap_variables(ir_instruction *inst, struct gl_shader *target,
+ hash_table *temps)
+{
+ class remap_visitor : public ir_hierarchical_visitor {
+ public:
+ remap_visitor(struct gl_shader *target,
+ hash_table *temps)
+ {
+ this->target = target;
+ this->symbols = target->symbols;
+ this->instructions = target->ir;
+ this->temps = temps;
+ }
+
+ virtual ir_visitor_status visit(ir_dereference_variable *ir)
+ {
+ if (ir->var->mode == ir_var_temporary) {
+ ir_variable *var = (ir_variable *) hash_table_find(temps, ir->var);
+
+ assert(var != NULL);
+ ir->var = var;
+ return visit_continue;
+ }
+
+ ir_variable *const existing =
+ this->symbols->get_variable(ir->var->name);
+ if (existing != NULL)
+ ir->var = existing;
+ else {
+ ir_variable *copy = ir->var->clone(this->target, NULL);
+
+ this->symbols->add_variable(copy);
+ this->instructions->push_head(copy);
+ ir->var = copy;
+ }
+
+ return visit_continue;
+ }
+
+ private:
+ struct gl_shader *target;
+ glsl_symbol_table *symbols;
+ exec_list *instructions;
+ hash_table *temps;
+ };
+
+ remap_visitor v(target, temps);
+
+ inst->accept(&v);
+}
+
+
+/**
+ * Move non-declarations from one instruction stream to another
+ *
+ * The intended usage pattern of this function is to pass the pointer to the
+ * head sentinel of a list (i.e., a pointer to the list cast to an \c exec_node
+ * pointer) for \c last and \c false for \c make_copies on the first
+ * call. Successive calls pass the return value of the previous call for
+ * \c last and \c true for \c make_copies.
+ *
+ * \param instructions Source instruction stream
+ * \param last Instruction after which new instructions should be
+ * inserted in the target instruction stream
+ * \param make_copies Flag selecting whether instructions in \c instructions
+ * should be copied (via \c ir_instruction::clone) into the
+ * target list or moved.
+ *
+ * \return
+ * The new "last" instruction in the target instruction stream. This pointer
+ * is suitable for use as the \c last parameter of a later call to this
+ * function.
+ */
+exec_node *
+move_non_declarations(exec_list *instructions, exec_node *last,
+ bool make_copies, gl_shader *target)
+{
+ hash_table *temps = NULL;
+
+ if (make_copies)
+ temps = hash_table_ctor(0, hash_table_pointer_hash,
+ hash_table_pointer_compare);
+
+ foreach_list_safe(node, instructions) {
+ ir_instruction *inst = (ir_instruction *) node;
+
+ if (inst->as_function())
+ continue;
+
+ ir_variable *var = inst->as_variable();
+ if ((var != NULL) && (var->mode != ir_var_temporary))
+ continue;
+
+ assert(inst->as_assignment()
+ || ((var != NULL) && (var->mode == ir_var_temporary)));
+
+ if (make_copies) {
+ inst = inst->clone(target, NULL);
+
+ if (var != NULL)
+ hash_table_insert(temps, inst, var);
+ else
+ remap_variables(inst, target, temps);
+ } else {
+ inst->remove();
+ }
+
+ last->insert_after(inst);
+ last = inst;
+ }
+
+ if (make_copies)
+ hash_table_dtor(temps);
+
+ return last;
+}
+
+/**
+ * Get the function signature for main from a shader
+ */
+static ir_function_signature *
+get_main_function_signature(gl_shader *sh)
+{
+ ir_function *const f = sh->symbols->get_function("main");
+ if (f != NULL) {
+ exec_list void_parameters;
+
+ /* Look for the 'void main()' signature and ensure that it's defined.
+ * This keeps the linker from accidentally pick a shader that just
+ * contains a prototype for main.
+ *
+ * We don't have to check for multiple definitions of main (in multiple
+ * shaders) because that would have already been caught above.
+ */
+ ir_function_signature *sig = f->matching_signature(&void_parameters);
+ if ((sig != NULL) && sig->is_defined) {
+ return sig;
+ }
+ }
+
+ return NULL;
+}
+
+
+/**
+ * Combine a group of shaders for a single stage to generate a linked shader
+ *
+ * \note
+ * If this function is supplied a single shader, it is cloned, and the new
+ * shader is returned.
+ */
+static struct gl_shader *
+link_intrastage_shaders(void *mem_ctx,
+ struct gl_context *ctx,
+ struct gl_shader_program *prog,
+ struct gl_shader **shader_list,
+ unsigned num_shaders)
+{
+ /* Check that global variables defined in multiple shaders are consistent.
+ */
+ if (!cross_validate_globals(prog, shader_list, num_shaders, false))
+ return NULL;
+
+ /* Check that there is only a single definition of each function signature
+ * across all shaders.
+ */
+ for (unsigned i = 0; i < (num_shaders - 1); i++) {
+ foreach_list(node, shader_list[i]->ir) {
+ ir_function *const f = ((ir_instruction *) node)->as_function();
+
+ if (f == NULL)
+ continue;
+
+ for (unsigned j = i + 1; j < num_shaders; j++) {
+ ir_function *const other =
+ shader_list[j]->symbols->get_function(f->name);
+
+ /* If the other shader has no function (and therefore no function
+ * signatures) with the same name, skip to the next shader.
+ */
+ if (other == NULL)
+ continue;
+
+ foreach_iter (exec_list_iterator, iter, *f) {
+ ir_function_signature *sig =
+ (ir_function_signature *) iter.get();
+
+ if (!sig->is_defined || sig->is_builtin)
+ continue;
+
+ ir_function_signature *other_sig =
+ other->exact_matching_signature(& sig->parameters);
+
+ if ((other_sig != NULL) && other_sig->is_defined
+ && !other_sig->is_builtin) {
+ linker_error_printf(prog,
+ "function `%s' is multiply defined",
+ f->name);
+ return NULL;
+ }
+ }
+ }
+ }
+ }
+
+ /* Find the shader that defines main, and make a clone of it.
+ *
+ * Starting with the clone, search for undefined references. If one is
+ * found, find the shader that defines it. Clone the reference and add
+ * it to the shader. Repeat until there are no undefined references or
+ * until a reference cannot be resolved.
+ */
+ gl_shader *main = NULL;
+ for (unsigned i = 0; i < num_shaders; i++) {
+ if (get_main_function_signature(shader_list[i]) != NULL) {
+ main = shader_list[i];
+ break;
+ }
+ }
+
+ if (main == NULL) {
+ linker_error_printf(prog, "%s shader lacks `main'\n",
+ (shader_list[0]->Type == GL_VERTEX_SHADER)
+ ? "vertex" : "fragment");
+ return NULL;
+ }
+
+ gl_shader *linked = ctx->Driver.NewShader(NULL, 0, main->Type);
+ linked->ir = new(linked) exec_list;
+ clone_ir_list(mem_ctx, linked->ir, main->ir);
+
+ populate_symbol_table(linked);
+
+ /* The a pointer to the main function in the final linked shader (i.e., the
+ * copy of the original shader that contained the main function).
+ */
+ ir_function_signature *const main_sig = get_main_function_signature(linked);
+
+ /* Move any instructions other than variable declarations or function
+ * declarations into main.
+ */
+ exec_node *insertion_point =
+ move_non_declarations(linked->ir, (exec_node *) &main_sig->body, false,
+ linked);
+
+ for (unsigned i = 0; i < num_shaders; i++) {
+ if (shader_list[i] == main)
+ continue;
+
+ insertion_point = move_non_declarations(shader_list[i]->ir,
+ insertion_point, true, linked);
+ }
+
+ /* Resolve initializers for global variables in the linked shader.
+ */
+ unsigned num_linking_shaders = num_shaders;
+ for (unsigned i = 0; i < num_shaders; i++)
+ num_linking_shaders += shader_list[i]->num_builtins_to_link;
+
+ gl_shader **linking_shaders =
+ (gl_shader **) calloc(num_linking_shaders, sizeof(gl_shader *));
+
+ memcpy(linking_shaders, shader_list,
+ sizeof(linking_shaders[0]) * num_shaders);
+
+ unsigned idx = num_shaders;
+ for (unsigned i = 0; i < num_shaders; i++) {
+ memcpy(&linking_shaders[idx], shader_list[i]->builtins_to_link,
+ sizeof(linking_shaders[0]) * shader_list[i]->num_builtins_to_link);
+ idx += shader_list[i]->num_builtins_to_link;
+ }
+
+ assert(idx == num_linking_shaders);
+
+ if (!link_function_calls(prog, linked, linking_shaders,
+ num_linking_shaders)) {
+ ctx->Driver.DeleteShader(ctx, linked);
+ linked = NULL;
+ }
+
+ free(linking_shaders);
+
+ /* Make a pass over all variable declarations to ensure that arrays with
+ * unspecified sizes have a size specified. The size is inferred from the
+ * max_array_access field.
+ */
+ if (linked != NULL) {
+ class array_sizing_visitor : public ir_hierarchical_visitor {
+ public:
+ virtual ir_visitor_status visit(ir_variable *var)
+ {
+ if (var->type->is_array() && (var->type->length == 0)) {
+ const glsl_type *type =
+ glsl_type::get_array_instance(var->type->fields.array,
+ var->max_array_access);
+
+ assert(type != NULL);
+ var->type = type;
+ }
+
+ return visit_continue;
+ }
+ } v;
+
+ v.run(linked->ir);
+ }
+
+ return linked;
+}
+
+
+struct uniform_node {
+ exec_node link;
+ struct gl_uniform *u;
+ unsigned slots;
+};
+
+/**
+ * Update the sizes of linked shader uniform arrays to the maximum
+ * array index used.
+ *
+ * From page 81 (page 95 of the PDF) of the OpenGL 2.1 spec:
+ *
+ * If one or more elements of an array are active,
+ * GetActiveUniform will return the name of the array in name,
+ * subject to the restrictions listed above. The type of the array
+ * is returned in type. The size parameter contains the highest
+ * array element index used, plus one. The compiler or linker
+ * determines the highest index used. There will be only one
+ * active uniform reported by the GL per uniform array.
+
+ */
+static void
+update_array_sizes(struct gl_shader_program *prog)
+{
+ for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ foreach_list(node, prog->_LinkedShaders[i]->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if ((var == NULL) || (var->mode != ir_var_uniform &&
+ var->mode != ir_var_in &&
+ var->mode != ir_var_out) ||
+ !var->type->is_array())
+ continue;
+
+ unsigned int size = var->max_array_access;
+ for (unsigned j = 0; j < MESA_SHADER_TYPES; j++) {
+ if (prog->_LinkedShaders[j] == NULL)
+ continue;
+
+ foreach_list(node2, prog->_LinkedShaders[j]->ir) {
+ ir_variable *other_var = ((ir_instruction *) node2)->as_variable();
+ if (!other_var)
+ continue;
+
+ if (strcmp(var->name, other_var->name) == 0 &&
+ other_var->max_array_access > size) {
+ size = other_var->max_array_access;
+ }
+ }
+ }
+
+ if (size + 1 != var->type->fields.array->length) {
+ var->type = glsl_type::get_array_instance(var->type->fields.array,
+ size + 1);
+ /* FINISHME: We should update the types of array
+ * dereferences of this variable now.
+ */
+ }
+ }
+ }
+}
+
+static void
+add_uniform(void *mem_ctx, exec_list *uniforms, struct hash_table *ht,
+ const char *name, const glsl_type *type, GLenum shader_type,
+ unsigned *next_shader_pos, unsigned *total_uniforms)
+{
+ if (type->is_record()) {
+ for (unsigned int i = 0; i < type->length; i++) {
+ const glsl_type *field_type = type->fields.structure[i].type;
+ char *field_name = talloc_asprintf(mem_ctx, "%s.%s", name,
+ type->fields.structure[i].name);
+
+ add_uniform(mem_ctx, uniforms, ht, field_name, field_type,
+ shader_type, next_shader_pos, total_uniforms);
+ }
+ } else {
+ uniform_node *n = (uniform_node *) hash_table_find(ht, name);
+ unsigned int vec4_slots;
+ const glsl_type *array_elem_type = NULL;
+
+ if (type->is_array()) {
+ array_elem_type = type->fields.array;
+ /* Array of structures. */
+ if (array_elem_type->is_record()) {
+ for (unsigned int i = 0; i < type->length; i++) {
+ char *elem_name = talloc_asprintf(mem_ctx, "%s[%d]", name, i);
+ add_uniform(mem_ctx, uniforms, ht, elem_name, array_elem_type,
+ shader_type, next_shader_pos, total_uniforms);
+ }
+ return;
+ }
+ }
+
+ /* Fix the storage size of samplers at 1 vec4 each. Be sure to pad out
+ * vectors to vec4 slots.
+ */
+ if (type->is_array()) {
+ if (array_elem_type->is_sampler())
+ vec4_slots = type->length;
+ else
+ vec4_slots = type->length * array_elem_type->matrix_columns;
+ } else if (type->is_sampler()) {
+ vec4_slots = 1;
+ } else {
+ vec4_slots = type->matrix_columns;
+ }
+
+ if (n == NULL) {
+ n = (uniform_node *) calloc(1, sizeof(struct uniform_node));
+ n->u = (gl_uniform *) calloc(1, sizeof(struct gl_uniform));
+ n->slots = vec4_slots;
+
+ n->u->Name = strdup(name);
+ n->u->Type = type;
+ n->u->VertPos = -1;
+ n->u->FragPos = -1;
+ n->u->GeomPos = -1;
+ (*total_uniforms)++;
+
+ hash_table_insert(ht, n, name);
+ uniforms->push_tail(& n->link);
+ }
+
+ switch (shader_type) {
+ case GL_VERTEX_SHADER:
+ n->u->VertPos = *next_shader_pos;
+ break;
+ case GL_FRAGMENT_SHADER:
+ n->u->FragPos = *next_shader_pos;
+ break;
+ case GL_GEOMETRY_SHADER:
+ n->u->GeomPos = *next_shader_pos;
+ break;
+ }
+
+ (*next_shader_pos) += vec4_slots;
+ }
+}
+
+void
+assign_uniform_locations(struct gl_shader_program *prog)
+{
+ /* */
+ exec_list uniforms;
+ unsigned total_uniforms = 0;
+ hash_table *ht = hash_table_ctor(32, hash_table_string_hash,
+ hash_table_string_compare);
+ void *mem_ctx = talloc_new(NULL);
+
+ for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ unsigned next_position = 0;
+
+ foreach_list(node, prog->_LinkedShaders[i]->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if ((var == NULL) || (var->mode != ir_var_uniform))
+ continue;
+
+ if (strncmp(var->name, "gl_", 3) == 0) {
+ /* At the moment, we don't allocate uniform locations for
+ * builtin uniforms. It's permitted by spec, and we'll
+ * likely switch to doing that at some point, but not yet.
+ */
+ continue;
+ }
+
+ var->location = next_position;
+ add_uniform(mem_ctx, &uniforms, ht, var->name, var->type,
+ prog->_LinkedShaders[i]->Type,
+ &next_position, &total_uniforms);
+ }
+ }
+
+ talloc_free(mem_ctx);
+
+ gl_uniform_list *ul = (gl_uniform_list *)
+ calloc(1, sizeof(gl_uniform_list));
+
+ ul->Size = total_uniforms;
+ ul->NumUniforms = total_uniforms;
+ ul->Uniforms = (gl_uniform *) calloc(total_uniforms, sizeof(gl_uniform));
+
+ unsigned idx = 0;
+ uniform_node *next;
+ for (uniform_node *node = (uniform_node *) uniforms.head
+ ; node->link.next != NULL
+ ; node = next) {
+ next = (uniform_node *) node->link.next;
+
+ node->link.remove();
+ memcpy(&ul->Uniforms[idx], node->u, sizeof(gl_uniform));
+ idx++;
+
+ free(node->u);
+ free(node);
+ }
+
+ hash_table_dtor(ht);
+
+ prog->Uniforms = ul;
+}
+
+
+/**
+ * Find a contiguous set of available bits in a bitmask
+ *
+ * \param used_mask Bits representing used (1) and unused (0) locations
+ * \param needed_count Number of contiguous bits needed.
+ *
+ * \return
+ * Base location of the available bits on success or -1 on failure.
+ */
+int
+find_available_slots(unsigned used_mask, unsigned needed_count)
+{
+ unsigned needed_mask = (1 << needed_count) - 1;
+ const int max_bit_to_test = (8 * sizeof(used_mask)) - needed_count;
+
+ /* The comparison to 32 is redundant, but without it GCC emits "warning:
+ * cannot optimize possibly infinite loops" for the loop below.
+ */
+ if ((needed_count == 0) || (max_bit_to_test < 0) || (max_bit_to_test > 32))
+ return -1;
+
+ for (int i = 0; i <= max_bit_to_test; i++) {
+ if ((needed_mask & ~used_mask) == needed_mask)
+ return i;
+
+ needed_mask <<= 1;
+ }
+
+ return -1;
+}
+
+
+bool
+assign_attribute_locations(gl_shader_program *prog, unsigned max_attribute_index)
+{
+ /* Mark invalid attribute locations as being used.
+ */
+ unsigned used_locations = (max_attribute_index >= 32)
+ ? ~0 : ~((1 << max_attribute_index) - 1);
+
+ gl_shader *const sh = prog->_LinkedShaders[0];
+ assert(sh->Type == GL_VERTEX_SHADER);
+
+ /* Operate in a total of four passes.
+ *
+ * 1. Invalidate the location assignments for all vertex shader inputs.
+ *
+ * 2. Assign locations for inputs that have user-defined (via
+ * glBindVertexAttribLocation) locatoins.
+ *
+ * 3. Sort the attributes without assigned locations by number of slots
+ * required in decreasing order. Fragmentation caused by attribute
+ * locations assigned by the application may prevent large attributes
+ * from having enough contiguous space.
+ *
+ * 4. Assign locations to any inputs without assigned locations.
+ */
+
+ invalidate_variable_locations(sh, ir_var_in, VERT_ATTRIB_GENERIC0);
+
+ if (prog->Attributes != NULL) {
+ for (unsigned i = 0; i < prog->Attributes->NumParameters; i++) {
+ ir_variable *const var =
+ sh->symbols->get_variable(prog->Attributes->Parameters[i].Name);
+
+ /* Note: attributes that occupy multiple slots, such as arrays or
+ * matrices, may appear in the attrib array multiple times.
+ */
+ if ((var == NULL) || (var->location != -1))
+ continue;
+
+ /* From page 61 of the OpenGL 4.0 spec:
+ *
+ * "LinkProgram will fail if the attribute bindings assigned by
+ * BindAttribLocation do not leave not enough space to assign a
+ * location for an active matrix attribute or an active attribute
+ * array, both of which require multiple contiguous generic
+ * attributes."
+ *
+ * Previous versions of the spec contain similar language but omit the
+ * bit about attribute arrays.
+ *
+ * Page 61 of the OpenGL 4.0 spec also says:
+ *
+ * "It is possible for an application to bind more than one
+ * attribute name to the same location. This is referred to as
+ * aliasing. This will only work if only one of the aliased
+ * attributes is active in the executable program, or if no path
+ * through the shader consumes more than one attribute of a set
+ * of attributes aliased to the same location. A link error can
+ * occur if the linker determines that every path through the
+ * shader consumes multiple aliased attributes, but
+ * implementations are not required to generate an error in this
+ * case."
+ *
+ * These two paragraphs are either somewhat contradictory, or I don't
+ * fully understand one or both of them.
+ */
+ /* FINISHME: The code as currently written does not support attribute
+ * FINISHME: location aliasing (see comment above).
+ */
+ const int attr = prog->Attributes->Parameters[i].StateIndexes[0];
+ const unsigned slots = count_attribute_slots(var->type);
+
+ /* Mask representing the contiguous slots that will be used by this
+ * attribute.
+ */
+ const unsigned use_mask = (1 << slots) - 1;
+
+ /* Generate a link error if the set of bits requested for this
+ * attribute overlaps any previously allocated bits.
+ */
+ if ((~(use_mask << attr) & used_locations) != used_locations) {
+ linker_error_printf(prog,
+ "insufficient contiguous attribute locations "
+ "available for vertex shader input `%s'",
+ var->name);
+ return false;
+ }
+
+ var->location = VERT_ATTRIB_GENERIC0 + attr;
+ used_locations |= (use_mask << attr);
+ }
+ }
+
+ /* Temporary storage for the set of attributes that need locations assigned.
+ */
+ struct temp_attr {
+ unsigned slots;
+ ir_variable *var;
+
+ /* Used below in the call to qsort. */
+ static int compare(const void *a, const void *b)
+ {
+ const temp_attr *const l = (const temp_attr *) a;
+ const temp_attr *const r = (const temp_attr *) b;
+
+ /* Reversed because we want a descending order sort below. */
+ return r->slots - l->slots;
+ }
+ } to_assign[16];
+
+ unsigned num_attr = 0;
+
+ foreach_list(node, sh->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if ((var == NULL) || (var->mode != ir_var_in))
+ continue;
+
+ if (var->explicit_location) {
+ const unsigned slots = count_attribute_slots(var->type);
+ const unsigned use_mask = (1 << slots) - 1;
+ const int attr = var->location - VERT_ATTRIB_GENERIC0;
+
+ if ((var->location >= (int)(max_attribute_index + VERT_ATTRIB_GENERIC0))
+ || (var->location < 0)) {
+ linker_error_printf(prog,
+ "invalid explicit location %d specified for "
+ "`%s'\n",
+ (var->location < 0) ? var->location : attr,
+ var->name);
+ return false;
+ } else if (var->location >= VERT_ATTRIB_GENERIC0) {
+ used_locations |= (use_mask << attr);
+ }
+ }
+
+ /* The location was explicitly assigned, nothing to do here.
+ */
+ if (var->location != -1)
+ continue;
+
+ to_assign[num_attr].slots = count_attribute_slots(var->type);
+ to_assign[num_attr].var = var;
+ num_attr++;
+ }
+
+ /* If all of the attributes were assigned locations by the application (or
+ * are built-in attributes with fixed locations), return early. This should
+ * be the common case.
+ */
+ if (num_attr == 0)
+ return true;
+
+ qsort(to_assign, num_attr, sizeof(to_assign[0]), temp_attr::compare);
+
+ /* VERT_ATTRIB_GENERIC0 is a psdueo-alias for VERT_ATTRIB_POS. It can only
+ * be explicitly assigned by via glBindAttribLocation. Mark it as reserved
+ * to prevent it from being automatically allocated below.
+ */
+ find_deref_visitor find("gl_Vertex");
+ find.run(sh->ir);
+ if (find.variable_found())
+ used_locations |= (1 << 0);
+
+ for (unsigned i = 0; i < num_attr; i++) {
+ /* Mask representing the contiguous slots that will be used by this
+ * attribute.
+ */
+ const unsigned use_mask = (1 << to_assign[i].slots) - 1;
+
+ int location = find_available_slots(used_locations, to_assign[i].slots);
+
+ if (location < 0) {
+ linker_error_printf(prog,
+ "insufficient contiguous attribute locations "
+ "available for vertex shader input `%s'",
+ to_assign[i].var->name);
+ return false;
+ }
+
+ to_assign[i].var->location = VERT_ATTRIB_GENERIC0 + location;
+ used_locations |= (use_mask << location);
+ }
+
+ return true;
+}
+
+
+/**
+ * Demote shader inputs and outputs that are not used in other stages
+ */
+void
+demote_shader_inputs_and_outputs(gl_shader *sh, enum ir_variable_mode mode)
+{
+ foreach_list(node, sh->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if ((var == NULL) || (var->mode != int(mode)))
+ continue;
+
+ /* A shader 'in' or 'out' variable is only really an input or output if
+ * its value is used by other shader stages. This will cause the variable
+ * to have a location assigned.
+ */
+ if (var->location == -1) {
+ var->mode = ir_var_auto;
+ }
+ }
+}
+
+
+void
+assign_varying_locations(struct gl_shader_program *prog,
+ gl_shader *producer, gl_shader *consumer)
+{
+ /* FINISHME: Set dynamically when geometry shader support is added. */
+ unsigned output_index = VERT_RESULT_VAR0;
+ unsigned input_index = FRAG_ATTRIB_VAR0;
+
+ /* Operate in a total of three passes.
+ *
+ * 1. Assign locations for any matching inputs and outputs.
+ *
+ * 2. Mark output variables in the producer that do not have locations as
+ * not being outputs. This lets the optimizer eliminate them.
+ *
+ * 3. Mark input variables in the consumer that do not have locations as
+ * not being inputs. This lets the optimizer eliminate them.
+ */
+
+ invalidate_variable_locations(producer, ir_var_out, VERT_RESULT_VAR0);
+ invalidate_variable_locations(consumer, ir_var_in, FRAG_ATTRIB_VAR0);
+
+ foreach_list(node, producer->ir) {
+ ir_variable *const output_var = ((ir_instruction *) node)->as_variable();
+
+ if ((output_var == NULL) || (output_var->mode != ir_var_out)
+ || (output_var->location != -1))
+ continue;
+
+ ir_variable *const input_var =
+ consumer->symbols->get_variable(output_var->name);
+
+ if ((input_var == NULL) || (input_var->mode != ir_var_in))
+ continue;
+
+ assert(input_var->location == -1);
+
+ output_var->location = output_index;
+ input_var->location = input_index;
+
+ /* FINISHME: Support for "varying" records in GLSL 1.50. */
+ assert(!output_var->type->is_record());
+
+ if (output_var->type->is_array()) {
+ const unsigned slots = output_var->type->length
+ * output_var->type->fields.array->matrix_columns;
+
+ output_index += slots;
+ input_index += slots;
+ } else {
+ const unsigned slots = output_var->type->matrix_columns;
+
+ output_index += slots;
+ input_index += slots;
+ }
+ }
+
+ foreach_list(node, consumer->ir) {
+ ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if ((var == NULL) || (var->mode != ir_var_in))
+ continue;
+
+ if (var->location == -1) {
+ if (prog->Version <= 120) {
+ /* On page 25 (page 31 of the PDF) of the GLSL 1.20 spec:
+ *
+ * Only those varying variables used (i.e. read) in
+ * the fragment shader executable must be written to
+ * by the vertex shader executable; declaring
+ * superfluous varying variables in a vertex shader is
+ * permissible.
+ *
+ * We interpret this text as meaning that the VS must
+ * write the variable for the FS to read it. See
+ * "glsl1-varying read but not written" in piglit.
+ */
+
+ linker_error_printf(prog, "fragment shader varying %s not written "
+ "by vertex shader\n.", var->name);
+ prog->LinkStatus = false;
+ }
+
+ /* An 'in' variable is only really a shader input if its
+ * value is written by the previous stage.
+ */
+ var->mode = ir_var_auto;
+ }
+ }
+}
+
+
+void
+link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
+{
+ void *mem_ctx = talloc_init("temporary linker context");
+
+ prog->LinkStatus = false;
+ prog->Validated = false;
+ prog->_Used = false;
+
+ if (prog->InfoLog != NULL)
+ talloc_free(prog->InfoLog);
+
+ prog->InfoLog = talloc_strdup(NULL, "");
+
+ /* Separate the shaders into groups based on their type.
+ */
+ struct gl_shader **vert_shader_list;
+ unsigned num_vert_shaders = 0;
+ struct gl_shader **frag_shader_list;
+ unsigned num_frag_shaders = 0;
+
+ vert_shader_list = (struct gl_shader **)
+ calloc(2 * prog->NumShaders, sizeof(struct gl_shader *));
+ frag_shader_list = &vert_shader_list[prog->NumShaders];
+
+ unsigned min_version = UINT_MAX;
+ unsigned max_version = 0;
+ for (unsigned i = 0; i < prog->NumShaders; i++) {
+ min_version = MIN2(min_version, prog->Shaders[i]->Version);
+ max_version = MAX2(max_version, prog->Shaders[i]->Version);
+
+ switch (prog->Shaders[i]->Type) {
+ case GL_VERTEX_SHADER:
+ vert_shader_list[num_vert_shaders] = prog->Shaders[i];
+ num_vert_shaders++;
+ break;
+ case GL_FRAGMENT_SHADER:
+ frag_shader_list[num_frag_shaders] = prog->Shaders[i];
+ num_frag_shaders++;
+ break;
+ case GL_GEOMETRY_SHADER:
+ /* FINISHME: Support geometry shaders. */
+ assert(prog->Shaders[i]->Type != GL_GEOMETRY_SHADER);
+ break;
+ }
+ }
+
+ /* Previous to GLSL version 1.30, different compilation units could mix and
+ * match shading language versions. With GLSL 1.30 and later, the versions
+ * of all shaders must match.
+ */
+ assert(min_version >= 100);
+ assert(max_version <= 130);
+ if ((max_version >= 130 || min_version == 100)
+ && min_version != max_version) {
+ linker_error_printf(prog, "all shaders must use same shading "
+ "language version\n");
+ goto done;
+ }
+
+ prog->Version = max_version;
+
+ for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] != NULL)
+ ctx->Driver.DeleteShader(ctx, prog->_LinkedShaders[i]);
+
+ prog->_LinkedShaders[i] = NULL;
+ }
+
+ /* Link all shaders for a particular stage and validate the result.
+ */
+ if (num_vert_shaders > 0) {
+ gl_shader *const sh =
+ link_intrastage_shaders(mem_ctx, ctx, prog, vert_shader_list,
+ num_vert_shaders);
+
+ if (sh == NULL)
+ goto done;
+
+ if (!validate_vertex_shader_executable(prog, sh))
+ goto done;
+
+ _mesa_reference_shader(ctx, &prog->_LinkedShaders[MESA_SHADER_VERTEX],
+ sh);
+ }
+
+ if (num_frag_shaders > 0) {
+ gl_shader *const sh =
+ link_intrastage_shaders(mem_ctx, ctx, prog, frag_shader_list,
+ num_frag_shaders);
+
+ if (sh == NULL)
+ goto done;
+
+ if (!validate_fragment_shader_executable(prog, sh))
+ goto done;
+
+ _mesa_reference_shader(ctx, &prog->_LinkedShaders[MESA_SHADER_FRAGMENT],
+ sh);
+ }
+
+ /* Here begins the inter-stage linking phase. Some initial validation is
+ * performed, then locations are assigned for uniforms, attributes, and
+ * varyings.
+ */
+ if (cross_validate_uniforms(prog)) {
+ unsigned prev;
+
+ for (prev = 0; prev < MESA_SHADER_TYPES; prev++) {
+ if (prog->_LinkedShaders[prev] != NULL)
+ break;
+ }
+
+ /* Validate the inputs of each stage with the output of the preceeding
+ * stage.
+ */
+ for (unsigned i = prev + 1; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ if (!cross_validate_outputs_to_inputs(prog,
+ prog->_LinkedShaders[prev],
+ prog->_LinkedShaders[i]))
+ goto done;
+
+ prev = i;
+ }
+
+ prog->LinkStatus = true;
+ }
+
+ /* Do common optimization before assigning storage for attributes,
+ * uniforms, and varyings. Later optimization could possibly make
+ * some of that unused.
+ */
+ for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, 32))
+ ;
+ }
+
+ update_array_sizes(prog);
+
+ assign_uniform_locations(prog);
+
+ if (prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL) {
+ /* FINISHME: The value of the max_attribute_index parameter is
+ * FINISHME: implementation dependent based on the value of
+ * FINISHME: GL_MAX_VERTEX_ATTRIBS. GL_MAX_VERTEX_ATTRIBS must be
+ * FINISHME: at least 16, so hardcode 16 for now.
+ */
+ if (!assign_attribute_locations(prog, 16)) {
+ prog->LinkStatus = false;
+ goto done;
+ }
+ }
+
+ unsigned prev;
+ for (prev = 0; prev < MESA_SHADER_TYPES; prev++) {
+ if (prog->_LinkedShaders[prev] != NULL)
+ break;
+ }
+
+ for (unsigned i = prev + 1; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ assign_varying_locations(prog,
+ prog->_LinkedShaders[prev],
+ prog->_LinkedShaders[i]);
+ prev = i;
+ }
+
+ if (prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL) {
+ demote_shader_inputs_and_outputs(prog->_LinkedShaders[MESA_SHADER_VERTEX],
+ ir_var_out);
+ }
+
+ if (prog->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
+ gl_shader *const sh = prog->_LinkedShaders[MESA_SHADER_GEOMETRY];
+
+ demote_shader_inputs_and_outputs(sh, ir_var_in);
+ demote_shader_inputs_and_outputs(sh, ir_var_inout);
+ demote_shader_inputs_and_outputs(sh, ir_var_out);
+ }
+
+ if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL) {
+ gl_shader *const sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
+
+ demote_shader_inputs_and_outputs(sh, ir_var_in);
+ }
+
+ /* FINISHME: Assign fragment shader output locations. */
+
+done:
+ free(vert_shader_list);
+
+ for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ /* Retain any live IR, but trash the rest. */
+ reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir);
+ }
+
+ talloc_free(mem_ctx);
+}
diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c
index c3cd6b66a..7f630e23c 100644
--- a/mesalib/src/mesa/main/teximage.c
+++ b/mesalib/src/mesa/main/teximage.c
@@ -703,6 +703,9 @@ _mesa_select_tex_object(struct gl_context *ctx,
const struct gl_texture_unit *texUnit,
GLenum target)
{
+ const GLboolean arrayTex = (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array);
+
switch (target) {
case GL_TEXTURE_1D:
return texUnit->CurrentTex[TEXTURE_1D_INDEX];
@@ -735,17 +738,13 @@ _mesa_select_tex_object(struct gl_context *ctx,
return ctx->Extensions.NV_texture_rectangle
? ctx->Texture.ProxyTex[TEXTURE_RECT_INDEX] : NULL;
case GL_TEXTURE_1D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array
- ? texUnit->CurrentTex[TEXTURE_1D_ARRAY_INDEX] : NULL;
+ return arrayTex ? texUnit->CurrentTex[TEXTURE_1D_ARRAY_INDEX] : NULL;
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array
- ? ctx->Texture.ProxyTex[TEXTURE_1D_ARRAY_INDEX] : NULL;
+ return arrayTex ? ctx->Texture.ProxyTex[TEXTURE_1D_ARRAY_INDEX] : NULL;
case GL_TEXTURE_2D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array
- ? texUnit->CurrentTex[TEXTURE_2D_ARRAY_INDEX] : NULL;
+ return arrayTex ? texUnit->CurrentTex[TEXTURE_2D_ARRAY_INDEX] : NULL;
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array
- ? ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX] : NULL;
+ return arrayTex ? ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX] : NULL;
default:
_mesa_problem(NULL, "bad target in _mesa_select_tex_object()");
return NULL;
@@ -930,7 +929,8 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target)
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
case GL_TEXTURE_2D_ARRAY_EXT:
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array
+ return (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array)
? ctx->Const.MaxTextureLevels : 0;
default:
return 0; /* bad target */
@@ -1382,7 +1382,8 @@ target_can_be_compressed(const struct gl_context *ctx, GLenum target,
return ctx->Extensions.ARB_texture_cube_map;
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
case GL_TEXTURE_2D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array;
+ return (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.MESA_texture_array);
default:
return GL_FALSE;
}
@@ -1423,7 +1424,8 @@ legal_teximage_target(struct gl_context *ctx, GLuint dims, GLenum target)
return ctx->Extensions.NV_texture_rectangle;
case GL_TEXTURE_1D_ARRAY_EXT:
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array;
+ return (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array);
default:
return GL_FALSE;
}
@@ -1434,7 +1436,8 @@ legal_teximage_target(struct gl_context *ctx, GLuint dims, GLenum target)
return GL_TRUE;
case GL_TEXTURE_2D_ARRAY_EXT:
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array;
+ return (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array);
default:
return GL_FALSE;
}
@@ -1471,7 +1474,8 @@ legal_texsubimage_target(struct gl_context *ctx, GLuint dims, GLenum target)
case GL_TEXTURE_RECTANGLE_NV:
return ctx->Extensions.NV_texture_rectangle;
case GL_TEXTURE_1D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array;
+ return (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array);
default:
return GL_FALSE;
}
@@ -1480,7 +1484,8 @@ legal_texsubimage_target(struct gl_context *ctx, GLuint dims, GLenum target)
case GL_TEXTURE_3D:
return GL_TRUE;
case GL_TEXTURE_2D_ARRAY_EXT:
- return ctx->Extensions.MESA_texture_array;
+ return (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array);
default:
return GL_FALSE;
}
diff --git a/mesalib/src/mesa/main/texparam.c b/mesalib/src/mesa/main/texparam.c
index 4909b76cb..6e14face4 100644
--- a/mesalib/src/mesa/main/texparam.c
+++ b/mesalib/src/mesa/main/texparam.c
@@ -33,6 +33,7 @@
#include "main/glheader.h"
#include "main/colormac.h"
#include "main/context.h"
+#include "main/enums.h"
#include "main/formats.h"
#include "main/macros.h"
#include "main/mfeatures.h"
@@ -116,12 +117,14 @@ get_texobj(struct gl_context *ctx, GLenum target, GLboolean get)
}
break;
case GL_TEXTURE_1D_ARRAY_EXT:
- if (ctx->Extensions.MESA_texture_array) {
+ if (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array) {
return texUnit->CurrentTex[TEXTURE_1D_ARRAY_INDEX];
}
break;
case GL_TEXTURE_2D_ARRAY_EXT:
- if (ctx->Extensions.MESA_texture_array) {
+ if (ctx->Extensions.MESA_texture_array ||
+ ctx->Extensions.EXT_texture_array) {
return texUnit->CurrentTex[TEXTURE_2D_ARRAY_INDEX];
}
break;
@@ -231,8 +234,7 @@ set_tex_parameteri(struct gl_context *ctx,
}
/* fall-through */
default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)",
- params[0] );
+ goto invalid_param;
}
return GL_FALSE;
@@ -246,8 +248,7 @@ set_tex_parameteri(struct gl_context *ctx,
texObj->MagFilter = params[0];
return GL_TRUE;
default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glTexParameter(param=0x%x)",
- params[0]);
+ goto invalid_param;
}
return GL_FALSE;
@@ -315,21 +316,18 @@ set_tex_parameteri(struct gl_context *ctx,
return GL_FALSE;
case GL_TEXTURE_COMPARE_MODE_ARB:
- if (ctx->Extensions.ARB_shadow &&
- (params[0] == GL_NONE ||
- params[0] == GL_COMPARE_R_TO_TEXTURE_ARB)) {
- if (texObj->CompareMode != params[0]) {
+ if (ctx->Extensions.ARB_shadow) {
+ if (texObj->CompareMode == params[0])
+ return GL_FALSE;
+ if (params[0] == GL_NONE ||
+ params[0] == GL_COMPARE_R_TO_TEXTURE_ARB) {
flush(ctx);
texObj->CompareMode = params[0];
return GL_TRUE;
}
- return GL_FALSE;
- }
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glTexParameter(GL_TEXTURE_COMPARE_MODE_ARB)");
+ goto invalid_param;
}
- return GL_FALSE;
+ goto invalid_pname;
case GL_TEXTURE_COMPARE_FUNC_ARB:
if (ctx->Extensions.ARB_shadow) {
@@ -354,32 +352,26 @@ set_tex_parameteri(struct gl_context *ctx,
}
/* fall-through */
default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glTexParameter(GL_TEXTURE_COMPARE_FUNC_ARB)");
+ goto invalid_param;
}
}
- else {
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
- }
- return GL_FALSE;
+ goto invalid_pname;
case GL_DEPTH_TEXTURE_MODE_ARB:
- if (ctx->Extensions.ARB_depth_texture &&
- (params[0] == GL_LUMINANCE ||
- params[0] == GL_INTENSITY ||
- params[0] == GL_ALPHA ||
- (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED))) {
- if (texObj->DepthMode != params[0]) {
+ if (ctx->Extensions.ARB_depth_texture) {
+ if (texObj->DepthMode == params[0])
+ return GL_FALSE;
+ if (params[0] == GL_LUMINANCE ||
+ params[0] == GL_INTENSITY ||
+ params[0] == GL_ALPHA ||
+ (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED)) {
flush(ctx);
texObj->DepthMode = params[0];
return GL_TRUE;
}
+ goto invalid_param;
}
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glTexParameter(GL_DEPTH_TEXTURE_MODE_ARB)");
- }
- return GL_FALSE;
+ goto invalid_pname;
#if FEATURE_OES_draw_texture
case GL_TEXTURE_CROP_RECT_OES:
@@ -410,8 +402,7 @@ set_tex_parameteri(struct gl_context *ctx,
return GL_TRUE;
}
}
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
- return GL_FALSE;
+ goto invalid_pname;
case GL_TEXTURE_SWIZZLE_RGBA_EXT:
if (ctx->Extensions.EXT_texture_swizzle) {
@@ -431,8 +422,8 @@ set_tex_parameteri(struct gl_context *ctx,
}
return GL_TRUE;
}
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
- return GL_FALSE;
+ goto invalid_pname;
+
case GL_TEXTURE_SRGB_DECODE_EXT:
if (ctx->Extensions.EXT_texture_sRGB_decode) {
GLenum decode = params[0];
@@ -445,11 +436,20 @@ set_tex_parameteri(struct gl_context *ctx,
return GL_TRUE;
}
}
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
- return GL_FALSE;
+ goto invalid_pname;
+
default:
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=0x%x)", pname);
+ goto invalid_pname;
}
+
+invalid_pname:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=%s)",
+ _mesa_lookup_enum_by_nr(pname));
+ return GL_FALSE;
+
+invalid_param:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(param=%s)",
+ _mesa_lookup_enum_by_nr(params[0]));
return GL_FALSE;
}
@@ -834,7 +834,6 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
const struct gl_texture_unit *texUnit;
struct gl_texture_object *texObj;
const struct gl_texture_image *img = NULL;
- GLboolean isProxy;
GLint maxLevels;
gl_format texFormat;
GET_CURRENT_CONTEXT(ctx);
@@ -862,7 +861,6 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
}
texObj = _mesa_select_tex_object(ctx, texUnit, target);
- _mesa_lock_texture(ctx, texObj);
img = _mesa_select_tex_image(ctx, texObj, target, level);
if (!img || !img->TexFormat) {
@@ -871,13 +869,11 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
*params = 1;
else
*params = 0;
- goto out;
+ return;
}
texFormat = img->TexFormat;
- isProxy = _mesa_is_proxy_texture(target);
-
switch (pname) {
case GL_TEXTURE_WIDTH:
*params = img->Width;
@@ -889,9 +885,9 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
*params = img->Depth;
break;
case GL_TEXTURE_INTERNAL_FORMAT:
- if (_mesa_is_format_compressed(img->TexFormat)) {
+ if (_mesa_is_format_compressed(texFormat)) {
/* need to return the actual compressed format */
- *params = _mesa_compressed_format_to_glenum(ctx, img->TexFormat);
+ *params = _mesa_compressed_format_to_glenum(ctx, texFormat);
}
else {
/* return the user's requested internal format */
@@ -962,8 +958,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
if (ctx->Extensions.ARB_depth_texture)
*params = _mesa_get_format_bits(texFormat, pname);
else
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
break;
case GL_TEXTURE_STENCIL_SIZE_EXT:
if (ctx->Extensions.EXT_packed_depth_stencil ||
@@ -971,8 +966,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
*params = _mesa_get_format_bits(texFormat, pname);
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
case GL_TEXTURE_SHARED_SIZE:
@@ -983,14 +977,14 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
*params = 0;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
/* GL_ARB_texture_compression */
case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
- if (_mesa_is_format_compressed(img->TexFormat) && !isProxy) {
+ if (_mesa_is_format_compressed(texFormat) &&
+ !_mesa_is_proxy_texture(target)) {
*params = _mesa_format_image_size(texFormat, img->Width,
img->Height, img->Depth);
}
@@ -1000,7 +994,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
}
break;
case GL_TEXTURE_COMPRESSED:
- *params = (GLint) _mesa_is_format_compressed(img->TexFormat);
+ *params = (GLint) _mesa_is_format_compressed(texFormat);
break;
/* GL_ARB_texture_float */
@@ -1010,8 +1004,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
_mesa_get_format_datatype(texFormat) : GL_NONE;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
case GL_TEXTURE_GREEN_TYPE_ARB:
@@ -1020,8 +1013,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
_mesa_get_format_datatype(texFormat) : GL_NONE;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
case GL_TEXTURE_BLUE_TYPE_ARB:
@@ -1030,8 +1022,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
_mesa_get_format_datatype(texFormat) : GL_NONE;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
case GL_TEXTURE_ALPHA_TYPE_ARB:
@@ -1040,8 +1031,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
_mesa_get_format_datatype(texFormat) : GL_NONE;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
case GL_TEXTURE_LUMINANCE_TYPE_ARB:
@@ -1050,8 +1040,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
_mesa_get_format_datatype(texFormat) : GL_NONE;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
case GL_TEXTURE_INTENSITY_TYPE_ARB:
@@ -1060,8 +1049,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
_mesa_get_format_datatype(texFormat) : GL_NONE;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
case GL_TEXTURE_DEPTH_TYPE_ARB:
@@ -1070,18 +1058,21 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
_mesa_get_format_datatype(texFormat) : GL_NONE;
}
else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
break;
default:
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glGetTexLevelParameter[if]v(pname)");
+ goto invalid_pname;
}
- out:
- _mesa_unlock_texture(ctx, texObj);
+ /* no error if we get here */
+ return;
+
+invalid_pname:
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glGetTexLevelParameter[if]v(pname=%s)",
+ _mesa_lookup_enum_by_nr(pname));
}
diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp
index ae2742afd..ee3eae6cf 100644
--- a/mesalib/src/mesa/program/ir_to_mesa.cpp
+++ b/mesalib/src/mesa/program/ir_to_mesa.cpp
@@ -1,3210 +1,3214 @@
-/*
- * Copyright (C) 2005-2007 Brian Paul All Rights Reserved.
- * Copyright (C) 2008 VMware, Inc. All Rights Reserved.
- * Copyright © 2010 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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.
- */
-
-/**
- * \file ir_to_mesa.cpp
- *
- * Translate GLSL IR to Mesa's gl_program representation.
- */
-
-#include <stdio.h>
-#include "main/compiler.h"
-#include "ir.h"
-#include "ir_visitor.h"
-#include "ir_print_visitor.h"
-#include "ir_expression_flattening.h"
-#include "glsl_types.h"
-#include "glsl_parser_extras.h"
-#include "../glsl/program.h"
-#include "ir_optimization.h"
-#include "ast.h"
-
-extern "C" {
-#include "main/mtypes.h"
-#include "main/shaderapi.h"
-#include "main/shaderobj.h"
-#include "main/uniforms.h"
-#include "program/hash_table.h"
-#include "program/prog_instruction.h"
-#include "program/prog_optimize.h"
-#include "program/prog_print.h"
-#include "program/program.h"
-#include "program/prog_uniform.h"
-#include "program/prog_parameter.h"
-#include "program/sampler.h"
-}
-
-static int swizzle_for_size(int size);
-
-/**
- * This struct is a corresponding struct to Mesa prog_src_register, with
- * wider fields.
- */
-typedef struct ir_to_mesa_src_reg {
- ir_to_mesa_src_reg(int file, int index, const glsl_type *type)
- {
- this->file = (gl_register_file) file;
- this->index = index;
- if (type && (type->is_scalar() || type->is_vector() || type->is_matrix()))
- this->swizzle = swizzle_for_size(type->vector_elements);
- else
- this->swizzle = SWIZZLE_XYZW;
- this->negate = 0;
- this->reladdr = NULL;
- }
-
- ir_to_mesa_src_reg()
- {
- this->file = PROGRAM_UNDEFINED;
- this->index = 0;
- this->swizzle = 0;
- this->negate = 0;
- this->reladdr = NULL;
- }
-
- gl_register_file file; /**< PROGRAM_* from Mesa */
- int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
- GLuint swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */
- int negate; /**< NEGATE_XYZW mask from mesa */
- /** Register index should be offset by the integer in this reg. */
- ir_to_mesa_src_reg *reladdr;
-} ir_to_mesa_src_reg;
-
-typedef struct ir_to_mesa_dst_reg {
- int file; /**< PROGRAM_* from Mesa */
- int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
- int writemask; /**< Bitfield of WRITEMASK_[XYZW] */
- GLuint cond_mask:4;
- /** Register index should be offset by the integer in this reg. */
- ir_to_mesa_src_reg *reladdr;
-} ir_to_mesa_dst_reg;
-
-extern ir_to_mesa_src_reg ir_to_mesa_undef;
-
-class ir_to_mesa_instruction : public exec_node {
-public:
- /* Callers of this talloc-based new need not call delete. It's
- * easier to just talloc_free 'ctx' (or any of its ancestors). */
- static void* operator new(size_t size, void *ctx)
- {
- void *node;
-
- node = talloc_zero_size(ctx, size);
- assert(node != NULL);
-
- return node;
- }
-
- enum prog_opcode op;
- ir_to_mesa_dst_reg dst_reg;
- ir_to_mesa_src_reg src_reg[3];
- /** Pointer to the ir source this tree came from for debugging */
- ir_instruction *ir;
- GLboolean cond_update;
- bool saturate;
- int sampler; /**< sampler index */
- int tex_target; /**< One of TEXTURE_*_INDEX */
- GLboolean tex_shadow;
-
- class function_entry *function; /* Set on OPCODE_CAL or OPCODE_BGNSUB */
-};
-
-class variable_storage : public exec_node {
-public:
- variable_storage(ir_variable *var, gl_register_file file, int index)
- : file(file), index(index), var(var)
- {
- /* empty */
- }
-
- gl_register_file file;
- int index;
- ir_variable *var; /* variable that maps to this, if any */
-};
-
-class function_entry : public exec_node {
-public:
- ir_function_signature *sig;
-
- /**
- * identifier of this function signature used by the program.
- *
- * At the point that Mesa instructions for function calls are
- * generated, we don't know the address of the first instruction of
- * the function body. So we make the BranchTarget that is called a
- * small integer and rewrite them during set_branchtargets().
- */
- int sig_id;
-
- /**
- * Pointer to first instruction of the function body.
- *
- * Set during function body emits after main() is processed.
- */
- ir_to_mesa_instruction *bgn_inst;
-
- /**
- * Index of the first instruction of the function body in actual
- * Mesa IR.
- *
- * Set after convertion from ir_to_mesa_instruction to prog_instruction.
- */
- int inst;
-
- /** Storage for the return value. */
- ir_to_mesa_src_reg return_reg;
-};
-
-class ir_to_mesa_visitor : public ir_visitor {
-public:
- ir_to_mesa_visitor();
- ~ir_to_mesa_visitor();
-
- function_entry *current_function;
-
- struct gl_context *ctx;
- struct gl_program *prog;
- struct gl_shader_program *shader_program;
- struct gl_shader_compiler_options *options;
-
- int next_temp;
-
- variable_storage *find_variable_storage(ir_variable *var);
-
- function_entry *get_function_signature(ir_function_signature *sig);
-
- ir_to_mesa_src_reg get_temp(const glsl_type *type);
- void reladdr_to_temp(ir_instruction *ir,
- ir_to_mesa_src_reg *reg, int *num_reladdr);
-
- struct ir_to_mesa_src_reg src_reg_for_float(float val);
-
- /**
- * \name Visit methods
- *
- * As typical for the visitor pattern, there must be one \c visit method for
- * each concrete subclass of \c ir_instruction. Virtual base classes within
- * the hierarchy should not have \c visit methods.
- */
- /*@{*/
- virtual void visit(ir_variable *);
- virtual void visit(ir_loop *);
- virtual void visit(ir_loop_jump *);
- virtual void visit(ir_function_signature *);
- virtual void visit(ir_function *);
- virtual void visit(ir_expression *);
- virtual void visit(ir_swizzle *);
- virtual void visit(ir_dereference_variable *);
- virtual void visit(ir_dereference_array *);
- virtual void visit(ir_dereference_record *);
- virtual void visit(ir_assignment *);
- virtual void visit(ir_constant *);
- virtual void visit(ir_call *);
- virtual void visit(ir_return *);
- virtual void visit(ir_discard *);
- virtual void visit(ir_texture *);
- virtual void visit(ir_if *);
- /*@}*/
-
- struct ir_to_mesa_src_reg result;
-
- /** List of variable_storage */
- exec_list variables;
-
- /** List of function_entry */
- exec_list function_signatures;
- int next_signature_id;
-
- /** List of ir_to_mesa_instruction */
- exec_list instructions;
-
- ir_to_mesa_instruction *ir_to_mesa_emit_op0(ir_instruction *ir,
- enum prog_opcode op);
-
- ir_to_mesa_instruction *ir_to_mesa_emit_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0);
-
- ir_to_mesa_instruction *ir_to_mesa_emit_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1);
-
- ir_to_mesa_instruction *ir_to_mesa_emit_op3(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- ir_to_mesa_src_reg src2);
-
- /**
- * Emit the correct dot-product instruction for the type of arguments
- *
- * \sa ir_to_mesa_emit_op2
- */
- void ir_to_mesa_emit_dp(ir_instruction *ir,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- unsigned elements);
-
- void ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0);
-
- void ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1);
-
- void emit_scs(ir_instruction *ir, enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- const ir_to_mesa_src_reg &src);
-
- GLboolean try_emit_mad(ir_expression *ir,
- int mul_operand);
- GLboolean try_emit_sat(ir_expression *ir);
-
- void emit_swz(ir_expression *ir);
-
- bool process_move_condition(ir_rvalue *ir);
-
- void copy_propagate(void);
-
- void *mem_ctx;
-};
-
-ir_to_mesa_src_reg ir_to_mesa_undef = ir_to_mesa_src_reg(PROGRAM_UNDEFINED, 0, NULL);
-
-ir_to_mesa_dst_reg ir_to_mesa_undef_dst = {
- PROGRAM_UNDEFINED, 0, SWIZZLE_NOOP, COND_TR, NULL,
-};
-
-ir_to_mesa_dst_reg ir_to_mesa_address_reg = {
- PROGRAM_ADDRESS, 0, WRITEMASK_X, COND_TR, NULL
-};
-
-static void
-fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3);
-
-static void
-fail_link(struct gl_shader_program *prog, const char *fmt, ...)
-{
- va_list args;
- va_start(args, fmt);
- prog->InfoLog = talloc_vasprintf_append(prog->InfoLog, fmt, args);
- va_end(args);
-
- prog->LinkStatus = GL_FALSE;
-}
-
-static int
-swizzle_for_size(int size)
-{
- int size_swizzles[4] = {
- MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_X),
- MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Y, SWIZZLE_Y),
- MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z),
- MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W),
- };
-
- assert((size >= 1) && (size <= 4));
- return size_swizzles[size - 1];
-}
-
-ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- ir_to_mesa_src_reg src2)
-{
- ir_to_mesa_instruction *inst = new(mem_ctx) ir_to_mesa_instruction();
- int num_reladdr = 0;
-
- /* If we have to do relative addressing, we want to load the ARL
- * reg directly for one of the regs, and preload the other reladdr
- * sources into temps.
- */
- num_reladdr += dst.reladdr != NULL;
- num_reladdr += src0.reladdr != NULL;
- num_reladdr += src1.reladdr != NULL;
- num_reladdr += src2.reladdr != NULL;
-
- reladdr_to_temp(ir, &src2, &num_reladdr);
- reladdr_to_temp(ir, &src1, &num_reladdr);
- reladdr_to_temp(ir, &src0, &num_reladdr);
-
- if (dst.reladdr) {
- ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg,
- *dst.reladdr);
-
- num_reladdr--;
- }
- assert(num_reladdr == 0);
-
- inst->op = op;
- inst->dst_reg = dst;
- inst->src_reg[0] = src0;
- inst->src_reg[1] = src1;
- inst->src_reg[2] = src2;
- inst->ir = ir;
-
- inst->function = NULL;
-
- this->instructions.push_tail(inst);
-
- return inst;
-}
-
-
-ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1)
-{
- return ir_to_mesa_emit_op3(ir, op, dst, src0, src1, ir_to_mesa_undef);
-}
-
-ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0)
-{
- assert(dst.writemask != 0);
- return ir_to_mesa_emit_op3(ir, op, dst,
- src0, ir_to_mesa_undef, ir_to_mesa_undef);
-}
-
-ir_to_mesa_instruction *
-ir_to_mesa_visitor::ir_to_mesa_emit_op0(ir_instruction *ir,
- enum prog_opcode op)
-{
- return ir_to_mesa_emit_op3(ir, op, ir_to_mesa_undef_dst,
- ir_to_mesa_undef,
- ir_to_mesa_undef,
- ir_to_mesa_undef);
-}
-
-void
-ir_to_mesa_visitor::ir_to_mesa_emit_dp(ir_instruction *ir,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0,
- ir_to_mesa_src_reg src1,
- unsigned elements)
-{
- static const gl_inst_opcode dot_opcodes[] = {
- OPCODE_DP2, OPCODE_DP3, OPCODE_DP4
- };
-
- ir_to_mesa_emit_op3(ir, dot_opcodes[elements - 2],
- dst, src0, src1, ir_to_mesa_undef);
-}
-
-inline ir_to_mesa_dst_reg
-ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg reg)
-{
- ir_to_mesa_dst_reg dst_reg;
-
- dst_reg.file = reg.file;
- dst_reg.index = reg.index;
- dst_reg.writemask = WRITEMASK_XYZW;
- dst_reg.cond_mask = COND_TR;
- dst_reg.reladdr = reg.reladdr;
-
- return dst_reg;
-}
-
-inline ir_to_mesa_src_reg
-ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg)
-{
- return ir_to_mesa_src_reg(reg.file, reg.index, NULL);
-}
-
-/**
- * Emits Mesa scalar opcodes to produce unique answers across channels.
- *
- * Some Mesa opcodes are scalar-only, like ARB_fp/vp. The src X
- * channel determines the result across all channels. So to do a vec4
- * of this operation, we want to emit a scalar per source channel used
- * to produce dest channels.
- */
-void
-ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg orig_src0,
- ir_to_mesa_src_reg orig_src1)
-{
- int i, j;
- int done_mask = ~dst.writemask;
-
- /* Mesa RCP is a scalar operation splatting results to all channels,
- * like ARB_fp/vp. So emit as many RCPs as necessary to cover our
- * dst channels.
- */
- for (i = 0; i < 4; i++) {
- GLuint this_mask = (1 << i);
- ir_to_mesa_instruction *inst;
- ir_to_mesa_src_reg src0 = orig_src0;
- ir_to_mesa_src_reg src1 = orig_src1;
-
- if (done_mask & this_mask)
- continue;
-
- GLuint src0_swiz = GET_SWZ(src0.swizzle, i);
- GLuint src1_swiz = GET_SWZ(src1.swizzle, i);
- for (j = i + 1; j < 4; j++) {
- /* If there is another enabled component in the destination that is
- * derived from the same inputs, generate its value on this pass as
- * well.
- */
- if (!(done_mask & (1 << j)) &&
- GET_SWZ(src0.swizzle, j) == src0_swiz &&
- GET_SWZ(src1.swizzle, j) == src1_swiz) {
- this_mask |= (1 << j);
- }
- }
- src0.swizzle = MAKE_SWIZZLE4(src0_swiz, src0_swiz,
- src0_swiz, src0_swiz);
- src1.swizzle = MAKE_SWIZZLE4(src1_swiz, src1_swiz,
- src1_swiz, src1_swiz);
-
- inst = ir_to_mesa_emit_op2(ir, op,
- dst,
- src0,
- src1);
- inst->dst_reg.writemask = this_mask;
- done_mask |= this_mask;
- }
-}
-
-void
-ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
- enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- ir_to_mesa_src_reg src0)
-{
- ir_to_mesa_src_reg undef = ir_to_mesa_undef;
-
- undef.swizzle = SWIZZLE_XXXX;
-
- ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef);
-}
-
-/**
- * Emit an OPCODE_SCS instruction
- *
- * The \c SCS opcode functions a bit differently than the other Mesa (or
- * ARB_fragment_program) opcodes. Instead of splatting its result across all
- * four components of the destination, it writes one value to the \c x
- * component and another value to the \c y component.
- *
- * \param ir IR instruction being processed
- * \param op Either \c OPCODE_SIN or \c OPCODE_COS depending on which
- * value is desired.
- * \param dst Destination register
- * \param src Source register
- */
-void
-ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op,
- ir_to_mesa_dst_reg dst,
- const ir_to_mesa_src_reg &src)
-{
- /* Vertex programs cannot use the SCS opcode.
- */
- if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) {
- ir_to_mesa_emit_scalar_op1(ir, op, dst, src);
- return;
- }
-
- const unsigned component = (op == OPCODE_SIN) ? 0 : 1;
- const unsigned scs_mask = (1U << component);
- int done_mask = ~dst.writemask;
- ir_to_mesa_src_reg tmp;
-
- assert(op == OPCODE_SIN || op == OPCODE_COS);
-
- /* If there are compnents in the destination that differ from the component
- * that will be written by the SCS instrution, we'll need a temporary.
- */
- if (scs_mask != unsigned(dst.writemask)) {
- tmp = get_temp(glsl_type::vec4_type);
- }
-
- for (unsigned i = 0; i < 4; i++) {
- unsigned this_mask = (1U << i);
- ir_to_mesa_src_reg src0 = src;
-
- if ((done_mask & this_mask) != 0)
- continue;
-
- /* The source swizzle specified which component of the source generates
- * sine / cosine for the current component in the destination. The SCS
- * instruction requires that this value be swizzle to the X component.
- * Replace the current swizzle with a swizzle that puts the source in
- * the X component.
- */
- unsigned src0_swiz = GET_SWZ(src.swizzle, i);
-
- src0.swizzle = MAKE_SWIZZLE4(src0_swiz, src0_swiz,
- src0_swiz, src0_swiz);
- for (unsigned j = i + 1; j < 4; j++) {
- /* If there is another enabled component in the destination that is
- * derived from the same inputs, generate its value on this pass as
- * well.
- */
- if (!(done_mask & (1 << j)) &&
- GET_SWZ(src0.swizzle, j) == src0_swiz) {
- this_mask |= (1 << j);
- }
- }
-
- if (this_mask != scs_mask) {
- ir_to_mesa_instruction *inst;
- ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp);
-
- /* Emit the SCS instruction.
- */
- inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0);
- inst->dst_reg.writemask = scs_mask;
-
- /* Move the result of the SCS instruction to the desired location in
- * the destination.
- */
- tmp.swizzle = MAKE_SWIZZLE4(component, component,
- component, component);
- inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp);
- inst->dst_reg.writemask = this_mask;
- } else {
- /* Emit the SCS instruction to write directly to the destination.
- */
- ir_to_mesa_instruction *inst =
- ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0);
- inst->dst_reg.writemask = scs_mask;
- }
-
- done_mask |= this_mask;
- }
-}
-
-struct ir_to_mesa_src_reg
-ir_to_mesa_visitor::src_reg_for_float(float val)
-{
- ir_to_mesa_src_reg src_reg(PROGRAM_CONSTANT, -1, NULL);
-
- src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters,
- &val, 1, &src_reg.swizzle);
-
- return src_reg;
-}
-
-static int
-type_size(const struct glsl_type *type)
-{
- unsigned int i;
- int size;
-
- switch (type->base_type) {
- case GLSL_TYPE_UINT:
- case GLSL_TYPE_INT:
- case GLSL_TYPE_FLOAT:
- case GLSL_TYPE_BOOL:
- if (type->is_matrix()) {
- return type->matrix_columns;
- } else {
- /* Regardless of size of vector, it gets a vec4. This is bad
- * packing for things like floats, but otherwise arrays become a
- * mess. Hopefully a later pass over the code can pack scalars
- * down if appropriate.
- */
- return 1;
- }
- case GLSL_TYPE_ARRAY:
- return type_size(type->fields.array) * type->length;
- case GLSL_TYPE_STRUCT:
- size = 0;
- for (i = 0; i < type->length; i++) {
- size += type_size(type->fields.structure[i].type);
- }
- return size;
- case GLSL_TYPE_SAMPLER:
- /* Samplers take up one slot in UNIFORMS[], but they're baked in
- * at link time.
- */
- return 1;
- default:
- assert(0);
- return 0;
- }
-}
-
-/**
- * In the initial pass of codegen, we assign temporary numbers to
- * intermediate results. (not SSA -- variable assignments will reuse
- * storage). Actual register allocation for the Mesa VM occurs in a
- * pass over the Mesa IR later.
- */
-ir_to_mesa_src_reg
-ir_to_mesa_visitor::get_temp(const glsl_type *type)
-{
- ir_to_mesa_src_reg src_reg;
- int swizzle[4];
- int i;
-
- src_reg.file = PROGRAM_TEMPORARY;
- src_reg.index = next_temp;
- src_reg.reladdr = NULL;
- next_temp += type_size(type);
-
- if (type->is_array() || type->is_record()) {
- src_reg.swizzle = SWIZZLE_NOOP;
- } else {
- for (i = 0; i < type->vector_elements; i++)
- swizzle[i] = i;
- for (; i < 4; i++)
- swizzle[i] = type->vector_elements - 1;
- src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1],
- swizzle[2], swizzle[3]);
- }
- src_reg.negate = 0;
-
- return src_reg;
-}
-
-variable_storage *
-ir_to_mesa_visitor::find_variable_storage(ir_variable *var)
-{
-
- variable_storage *entry;
-
- foreach_iter(exec_list_iterator, iter, this->variables) {
- entry = (variable_storage *)iter.get();
-
- if (entry->var == var)
- return entry;
- }
-
- return NULL;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_variable *ir)
-{
- if (strcmp(ir->name, "gl_FragCoord") == 0) {
- struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog;
-
- fp->OriginUpperLeft = ir->origin_upper_left;
- fp->PixelCenterInteger = ir->pixel_center_integer;
- }
-
- if (ir->mode == ir_var_uniform && strncmp(ir->name, "gl_", 3) == 0) {
- unsigned int i;
- const struct gl_builtin_uniform_desc *statevar;
-
- for (i = 0; _mesa_builtin_uniform_desc[i].name; i++) {
- if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0)
- break;
- }
-
- if (!_mesa_builtin_uniform_desc[i].name) {
- fail_link(this->shader_program,
- "Failed to find builtin uniform `%s'\n", ir->name);
- return;
- }
-
- statevar = &_mesa_builtin_uniform_desc[i];
-
- int array_count;
- if (ir->type->is_array()) {
- array_count = ir->type->length;
- } else {
- array_count = 1;
- }
-
- /* Check if this statevar's setup in the STATE file exactly
- * matches how we'll want to reference it as a
- * struct/array/whatever. If not, then we need to move it into
- * temporary storage and hope that it'll get copy-propagated
- * out.
- */
- for (i = 0; i < statevar->num_elements; i++) {
- if (statevar->elements[i].swizzle != SWIZZLE_XYZW) {
- break;
- }
- }
-
- struct variable_storage *storage;
- ir_to_mesa_dst_reg dst;
- if (i == statevar->num_elements) {
- /* We'll set the index later. */
- storage = new(mem_ctx) variable_storage(ir, PROGRAM_STATE_VAR, -1);
- this->variables.push_tail(storage);
-
- dst = ir_to_mesa_undef_dst;
- } else {
- storage = new(mem_ctx) variable_storage(ir, PROGRAM_TEMPORARY,
- this->next_temp);
- this->variables.push_tail(storage);
- this->next_temp += type_size(ir->type);
-
- dst = ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg(PROGRAM_TEMPORARY,
- storage->index,
- NULL));
- }
-
-
- for (int a = 0; a < array_count; a++) {
- for (unsigned int i = 0; i < statevar->num_elements; i++) {
- struct gl_builtin_uniform_element *element = &statevar->elements[i];
- int tokens[STATE_LENGTH];
-
- memcpy(tokens, element->tokens, sizeof(element->tokens));
- if (ir->type->is_array()) {
- tokens[1] = a;
- }
-
- int index = _mesa_add_state_reference(this->prog->Parameters,
- (gl_state_index *)tokens);
-
- if (storage->file == PROGRAM_STATE_VAR) {
- if (storage->index == -1) {
- storage->index = index;
- } else {
- assert(index ==
- (int)(storage->index + a * statevar->num_elements + i));
- }
- } else {
- ir_to_mesa_src_reg src(PROGRAM_STATE_VAR, index, NULL);
- src.swizzle = element->swizzle;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, dst, src);
- /* even a float takes up a whole vec4 reg in a struct/array. */
- dst.index++;
- }
- }
- }
- if (storage->file == PROGRAM_TEMPORARY &&
- dst.index != storage->index + type_size(ir->type)) {
- fail_link(this->shader_program,
- "failed to load builtin uniform `%s' (%d/%d regs loaded)\n",
- ir->name, dst.index - storage->index,
- type_size(ir->type));
- }
- }
-}
-
-void
-ir_to_mesa_visitor::visit(ir_loop *ir)
-{
- ir_dereference_variable *counter = NULL;
-
- if (ir->counter != NULL)
- counter = new(ir) ir_dereference_variable(ir->counter);
-
- if (ir->from != NULL) {
- assert(ir->counter != NULL);
-
- ir_assignment *a = new(ir) ir_assignment(counter, ir->from, NULL);
-
- a->accept(this);
- delete a;
- }
-
- ir_to_mesa_emit_op0(NULL, OPCODE_BGNLOOP);
-
- if (ir->to) {
- ir_expression *e =
- new(ir) ir_expression(ir->cmp, glsl_type::bool_type,
- counter, ir->to);
- ir_if *if_stmt = new(ir) ir_if(e);
-
- ir_loop_jump *brk = new(ir) ir_loop_jump(ir_loop_jump::jump_break);
-
- if_stmt->then_instructions.push_tail(brk);
-
- if_stmt->accept(this);
-
- delete if_stmt;
- delete e;
- delete brk;
- }
-
- visit_exec_list(&ir->body_instructions, this);
-
- if (ir->increment) {
- ir_expression *e =
- new(ir) ir_expression(ir_binop_add, counter->type,
- counter, ir->increment);
-
- ir_assignment *a = new(ir) ir_assignment(counter, e, NULL);
-
- a->accept(this);
- delete a;
- delete e;
- }
-
- ir_to_mesa_emit_op0(NULL, OPCODE_ENDLOOP);
-}
-
-void
-ir_to_mesa_visitor::visit(ir_loop_jump *ir)
-{
- switch (ir->mode) {
- case ir_loop_jump::jump_break:
- ir_to_mesa_emit_op0(NULL, OPCODE_BRK);
- break;
- case ir_loop_jump::jump_continue:
- ir_to_mesa_emit_op0(NULL, OPCODE_CONT);
- break;
- }
-}
-
-
-void
-ir_to_mesa_visitor::visit(ir_function_signature *ir)
-{
- assert(0);
- (void)ir;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_function *ir)
-{
- /* Ignore function bodies other than main() -- we shouldn't see calls to
- * them since they should all be inlined before we get to ir_to_mesa.
- */
- if (strcmp(ir->name, "main") == 0) {
- const ir_function_signature *sig;
- exec_list empty;
-
- sig = ir->matching_signature(&empty);
-
- assert(sig);
-
- foreach_iter(exec_list_iterator, iter, sig->body) {
- ir_instruction *ir = (ir_instruction *)iter.get();
-
- ir->accept(this);
- }
- }
-}
-
-GLboolean
-ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
-{
- int nonmul_operand = 1 - mul_operand;
- ir_to_mesa_src_reg a, b, c;
-
- ir_expression *expr = ir->operands[mul_operand]->as_expression();
- if (!expr || expr->operation != ir_binop_mul)
- return false;
-
- expr->operands[0]->accept(this);
- a = this->result;
- expr->operands[1]->accept(this);
- b = this->result;
- ir->operands[nonmul_operand]->accept(this);
- c = this->result;
-
- this->result = get_temp(ir->type);
- ir_to_mesa_emit_op3(ir, OPCODE_MAD,
- ir_to_mesa_dst_reg_from_src(this->result), a, b, c);
-
- return true;
-}
-
-GLboolean
-ir_to_mesa_visitor::try_emit_sat(ir_expression *ir)
-{
- /* Saturates were only introduced to vertex programs in
- * NV_vertex_program3, so don't give them to drivers in the VP.
- */
- if (this->prog->Target == GL_VERTEX_PROGRAM_ARB)
- return false;
-
- ir_rvalue *sat_src = ir->as_rvalue_to_saturate();
- if (!sat_src)
- return false;
-
- sat_src->accept(this);
- ir_to_mesa_src_reg src = this->result;
-
- this->result = get_temp(ir->type);
- ir_to_mesa_instruction *inst;
- inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV,
- ir_to_mesa_dst_reg_from_src(this->result),
- src);
- inst->saturate = true;
-
- return true;
-}
-
-void
-ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir,
- ir_to_mesa_src_reg *reg, int *num_reladdr)
-{
- if (!reg->reladdr)
- return;
-
- ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg, *reg->reladdr);
-
- if (*num_reladdr != 1) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
-
- ir_to_mesa_emit_op1(ir, OPCODE_MOV,
- ir_to_mesa_dst_reg_from_src(temp), *reg);
- *reg = temp;
- }
-
- (*num_reladdr)--;
-}
-
-void
-ir_to_mesa_visitor::emit_swz(ir_expression *ir)
-{
- /* Assume that the vector operator is in a form compatible with OPCODE_SWZ.
- * This means that each of the operands is either an immediate value of -1,
- * 0, or 1, or is a component from one source register (possibly with
- * negation).
- */
- uint8_t components[4] = { 0 };
- bool negate[4] = { false };
- ir_variable *var = NULL;
-
- for (unsigned i = 0; i < ir->type->vector_elements; i++) {
- ir_rvalue *op = ir->operands[i];
-
- assert(op->type->is_scalar());
-
- while (op != NULL) {
- switch (op->ir_type) {
- case ir_type_constant: {
-
- assert(op->type->is_scalar());
-
- const ir_constant *const c = op->as_constant();
- if (c->is_one()) {
- components[i] = SWIZZLE_ONE;
- } else if (c->is_zero()) {
- components[i] = SWIZZLE_ZERO;
- } else if (c->is_negative_one()) {
- components[i] = SWIZZLE_ONE;
- negate[i] = true;
- } else {
- assert(!"SWZ constant must be 0.0 or 1.0.");
- }
-
- op = NULL;
- break;
- }
-
- case ir_type_dereference_variable: {
- ir_dereference_variable *const deref =
- (ir_dereference_variable *) op;
-
- assert((var == NULL) || (deref->var == var));
- components[i] = SWIZZLE_X;
- var = deref->var;
- op = NULL;
- break;
- }
-
- case ir_type_expression: {
- ir_expression *const expr = (ir_expression *) op;
-
- assert(expr->operation == ir_unop_neg);
- negate[i] = true;
-
- op = expr->operands[0];
- break;
- }
-
- case ir_type_swizzle: {
- ir_swizzle *const swiz = (ir_swizzle *) op;
-
- components[i] = swiz->mask.x;
- op = swiz->val;
- break;
- }
-
- default:
- assert(!"Should not get here.");
- return;
- }
- }
- }
-
- assert(var != NULL);
-
- ir_dereference_variable *const deref =
- new(mem_ctx) ir_dereference_variable(var);
-
- this->result.file = PROGRAM_UNDEFINED;
- deref->accept(this);
- if (this->result.file == PROGRAM_UNDEFINED) {
- ir_print_visitor v;
- printf("Failed to get tree for expression operand:\n");
- deref->accept(&v);
- exit(1);
- }
-
- ir_to_mesa_src_reg src;
-
- src = this->result;
- src.swizzle = MAKE_SWIZZLE4(components[0],
- components[1],
- components[2],
- components[3]);
- src.negate = ((unsigned(negate[0]) << 0)
- | (unsigned(negate[1]) << 1)
- | (unsigned(negate[2]) << 2)
- | (unsigned(negate[3]) << 3));
-
- /* Storage for our result. Ideally for an assignment we'd be using the
- * actual storage for the result here, instead.
- */
- const ir_to_mesa_src_reg result_src = get_temp(ir->type);
- ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src);
-
- /* Limit writes to the channels that will be used by result_src later.
- * This does limit this temp's use as a temporary for multi-instruction
- * sequences.
- */
- result_dst.writemask = (1 << ir->type->vector_elements) - 1;
-
- ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src);
- this->result = result_src;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_expression *ir)
-{
- unsigned int operand;
- struct ir_to_mesa_src_reg op[Elements(ir->operands)];
- struct ir_to_mesa_src_reg result_src;
- struct ir_to_mesa_dst_reg result_dst;
-
- /* Quick peephole: Emit OPCODE_MAD(a, b, c) instead of ADD(MUL(a, b), c)
- */
- if (ir->operation == ir_binop_add) {
- if (try_emit_mad(ir, 1))
- return;
- if (try_emit_mad(ir, 0))
- return;
- }
- if (try_emit_sat(ir))
- return;
-
- if (ir->operation == ir_quadop_vector) {
- this->emit_swz(ir);
- return;
- }
-
- for (operand = 0; operand < ir->get_num_operands(); operand++) {
- this->result.file = PROGRAM_UNDEFINED;
- ir->operands[operand]->accept(this);
- if (this->result.file == PROGRAM_UNDEFINED) {
- ir_print_visitor v;
- printf("Failed to get tree for expression operand:\n");
- ir->operands[operand]->accept(&v);
- exit(1);
- }
- op[operand] = this->result;
-
- /* Matrix expression operands should have been broken down to vector
- * operations already.
- */
- assert(!ir->operands[operand]->type->is_matrix());
- }
-
- int vector_elements = ir->operands[0]->type->vector_elements;
- if (ir->operands[1]) {
- vector_elements = MAX2(vector_elements,
- ir->operands[1]->type->vector_elements);
- }
-
- this->result.file = PROGRAM_UNDEFINED;
-
- /* Storage for our result. Ideally for an assignment we'd be using
- * the actual storage for the result here, instead.
- */
- result_src = get_temp(ir->type);
- /* convenience for the emit functions below. */
- result_dst = ir_to_mesa_dst_reg_from_src(result_src);
- /* Limit writes to the channels that will be used by result_src later.
- * This does limit this temp's use as a temporary for multi-instruction
- * sequences.
- */
- result_dst.writemask = (1 << ir->type->vector_elements) - 1;
-
- switch (ir->operation) {
- case ir_unop_logic_not:
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst,
- op[0], src_reg_for_float(0.0));
- break;
- case ir_unop_neg:
- op[0].negate = ~op[0].negate;
- result_src = op[0];
- break;
- case ir_unop_abs:
- ir_to_mesa_emit_op1(ir, OPCODE_ABS, result_dst, op[0]);
- break;
- case ir_unop_sign:
- ir_to_mesa_emit_op1(ir, OPCODE_SSG, result_dst, op[0]);
- break;
- case ir_unop_rcp:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_RCP, result_dst, op[0]);
- break;
-
- case ir_unop_exp2:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_EX2, result_dst, op[0]);
- break;
- case ir_unop_exp:
- case ir_unop_log:
- assert(!"not reached: should be handled by ir_explog_to_explog2");
- break;
- case ir_unop_log2:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_LG2, result_dst, op[0]);
- break;
- case ir_unop_sin:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_SIN, result_dst, op[0]);
- break;
- case ir_unop_cos:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]);
- break;
- case ir_unop_sin_reduced:
- emit_scs(ir, OPCODE_SIN, result_dst, op[0]);
- break;
- case ir_unop_cos_reduced:
- emit_scs(ir, OPCODE_COS, result_dst, op[0]);
- break;
-
- case ir_unop_dFdx:
- ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]);
- break;
- case ir_unop_dFdy:
- ir_to_mesa_emit_op1(ir, OPCODE_DDY, result_dst, op[0]);
- break;
-
- case ir_unop_noise: {
- const enum prog_opcode opcode =
- prog_opcode(OPCODE_NOISE1
- + (ir->operands[0]->type->vector_elements) - 1);
- assert((opcode >= OPCODE_NOISE1) && (opcode <= OPCODE_NOISE4));
-
- ir_to_mesa_emit_op1(ir, opcode, result_dst, op[0]);
- break;
- }
-
- case ir_binop_add:
- ir_to_mesa_emit_op2(ir, OPCODE_ADD, result_dst, op[0], op[1]);
- break;
- case ir_binop_sub:
- ir_to_mesa_emit_op2(ir, OPCODE_SUB, result_dst, op[0], op[1]);
- break;
-
- case ir_binop_mul:
- ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, op[0], op[1]);
- break;
- case ir_binop_div:
- assert(!"not reached: should be handled by ir_div_to_mul_rcp");
- case ir_binop_mod:
- assert(!"ir_binop_mod should have been converted to b * fract(a/b)");
- break;
-
- case ir_binop_less:
- ir_to_mesa_emit_op2(ir, OPCODE_SLT, result_dst, op[0], op[1]);
- break;
- case ir_binop_greater:
- ir_to_mesa_emit_op2(ir, OPCODE_SGT, result_dst, op[0], op[1]);
- break;
- case ir_binop_lequal:
- ir_to_mesa_emit_op2(ir, OPCODE_SLE, result_dst, op[0], op[1]);
- break;
- case ir_binop_gequal:
- ir_to_mesa_emit_op2(ir, OPCODE_SGE, result_dst, op[0], op[1]);
- break;
- case ir_binop_equal:
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
- break;
- case ir_binop_nequal:
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
- break;
- case ir_binop_all_equal:
- /* "==" operator producing a scalar boolean. */
- if (ir->operands[0]->type->is_vector() ||
- ir->operands[1]->type->is_vector()) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
- ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ,
- result_dst, result_src, src_reg_for_float(0.0));
- } else {
- ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
- }
- break;
- case ir_binop_any_nequal:
- /* "!=" operator producing a scalar boolean. */
- if (ir->operands[0]->type->is_vector() ||
- ir->operands[1]->type->is_vector()) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
- ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- result_dst, result_src, src_reg_for_float(0.0));
- } else {
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
- }
- break;
-
- case ir_unop_any:
- assert(ir->operands[0]->type->is_vector());
- ir_to_mesa_emit_dp(ir, result_dst, op[0], op[0],
- ir->operands[0]->type->vector_elements);
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- result_dst, result_src, src_reg_for_float(0.0));
- break;
-
- case ir_binop_logic_xor:
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
- break;
-
- case ir_binop_logic_or:
- /* This could be a saturated add and skip the SNE. */
- ir_to_mesa_emit_op2(ir, OPCODE_ADD,
- result_dst,
- op[0], op[1]);
-
- ir_to_mesa_emit_op2(ir, OPCODE_SNE,
- result_dst,
- result_src, src_reg_for_float(0.0));
- break;
-
- case ir_binop_logic_and:
- /* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */
- ir_to_mesa_emit_op2(ir, OPCODE_MUL,
- result_dst,
- op[0], op[1]);
- break;
-
- case ir_binop_dot:
- assert(ir->operands[0]->type->is_vector());
- assert(ir->operands[0]->type == ir->operands[1]->type);
- ir_to_mesa_emit_dp(ir, result_dst, op[0], op[1],
- ir->operands[0]->type->vector_elements);
- break;
-
- case ir_unop_sqrt:
- /* sqrt(x) = x * rsq(x). */
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]);
- ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, result_src, op[0]);
- /* For incoming channels <= 0, set the result to 0. */
- op[0].negate = ~op[0].negate;
- ir_to_mesa_emit_op3(ir, OPCODE_CMP, result_dst,
- op[0], result_src, src_reg_for_float(0.0));
- break;
- case ir_unop_rsq:
- ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]);
- break;
- case ir_unop_i2f:
- case ir_unop_b2f:
- case ir_unop_b2i:
- /* Mesa IR lacks types, ints are stored as truncated floats. */
- result_src = op[0];
- break;
- case ir_unop_f2i:
- ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]);
- break;
- case ir_unop_f2b:
- case ir_unop_i2b:
- ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst,
- op[0], src_reg_for_float(0.0));
- break;
- case ir_unop_trunc:
- ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]);
- break;
- case ir_unop_ceil:
- op[0].negate = ~op[0].negate;
- ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]);
- result_src.negate = ~result_src.negate;
- break;
- case ir_unop_floor:
- ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]);
- break;
- case ir_unop_fract:
- ir_to_mesa_emit_op1(ir, OPCODE_FRC, result_dst, op[0]);
- break;
-
- case ir_binop_min:
- ir_to_mesa_emit_op2(ir, OPCODE_MIN, result_dst, op[0], op[1]);
- break;
- case ir_binop_max:
- ir_to_mesa_emit_op2(ir, OPCODE_MAX, result_dst, op[0], op[1]);
- break;
- case ir_binop_pow:
- ir_to_mesa_emit_scalar_op2(ir, OPCODE_POW, result_dst, op[0], op[1]);
- break;
-
- case ir_unop_bit_not:
- case ir_unop_u2f:
- case ir_binop_lshift:
- case ir_binop_rshift:
- case ir_binop_bit_and:
- case ir_binop_bit_xor:
- case ir_binop_bit_or:
- case ir_unop_round_even:
- assert(!"GLSL 1.30 features unsupported");
- break;
-
- case ir_quadop_vector:
- /* This operation should have already been handled.
- */
- assert(!"Should not get here.");
- break;
- }
-
- this->result = result_src;
-}
-
-
-void
-ir_to_mesa_visitor::visit(ir_swizzle *ir)
-{
- ir_to_mesa_src_reg src_reg;
- int i;
- int swizzle[4];
-
- /* Note that this is only swizzles in expressions, not those on the left
- * hand side of an assignment, which do write masking. See ir_assignment
- * for that.
- */
-
- ir->val->accept(this);
- src_reg = this->result;
- assert(src_reg.file != PROGRAM_UNDEFINED);
-
- for (i = 0; i < 4; i++) {
- if (i < ir->type->vector_elements) {
- switch (i) {
- case 0:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.x);
- break;
- case 1:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.y);
- break;
- case 2:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.z);
- break;
- case 3:
- swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.w);
- break;
- }
- } else {
- /* If the type is smaller than a vec4, replicate the last
- * channel out.
- */
- swizzle[i] = swizzle[ir->type->vector_elements - 1];
- }
- }
-
- src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0],
- swizzle[1],
- swizzle[2],
- swizzle[3]);
-
- this->result = src_reg;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_dereference_variable *ir)
-{
- variable_storage *entry = find_variable_storage(ir->var);
-
- if (!entry) {
- switch (ir->var->mode) {
- case ir_var_uniform:
- entry = new(mem_ctx) variable_storage(ir->var, PROGRAM_UNIFORM,
- ir->var->location);
- this->variables.push_tail(entry);
- break;
- case ir_var_in:
- case ir_var_out:
- case ir_var_inout:
- case ir_var_system_value:
- /* The linker assigns locations for varyings and attributes,
- * including deprecated builtins (like gl_Color), user-assign
- * generic attributes (glBindVertexLocation), and
- * user-defined varyings.
- *
- * FINISHME: We would hit this path for function arguments. Fix!
- */
- assert(ir->var->location != -1);
- if (ir->var->mode == ir_var_in ||
- ir->var->mode == ir_var_inout) {
- entry = new(mem_ctx) variable_storage(ir->var,
- PROGRAM_INPUT,
- ir->var->location);
-
- if (this->prog->Target == GL_VERTEX_PROGRAM_ARB &&
- ir->var->location >= VERT_ATTRIB_GENERIC0) {
- _mesa_add_attribute(prog->Attributes,
- ir->var->name,
- _mesa_sizeof_glsl_type(ir->var->type->gl_type),
- ir->var->type->gl_type,
- ir->var->location - VERT_ATTRIB_GENERIC0);
- }
- } else if (ir->var->mode == ir_var_system_value) {
- entry = new(mem_ctx) variable_storage(ir->var,
- PROGRAM_SYSTEM_VALUE,
- ir->var->location);
- } else {
- entry = new(mem_ctx) variable_storage(ir->var,
- PROGRAM_OUTPUT,
- ir->var->location);
- }
-
- break;
- case ir_var_auto:
- case ir_var_temporary:
- entry = new(mem_ctx) variable_storage(ir->var, PROGRAM_TEMPORARY,
- this->next_temp);
- this->variables.push_tail(entry);
-
- next_temp += type_size(ir->var->type);
- break;
- }
-
- if (!entry) {
- printf("Failed to make storage for %s\n", ir->var->name);
- exit(1);
- }
- }
-
- this->result = ir_to_mesa_src_reg(entry->file, entry->index, ir->var->type);
-}
-
-void
-ir_to_mesa_visitor::visit(ir_dereference_array *ir)
-{
- ir_constant *index;
- ir_to_mesa_src_reg src_reg;
- int element_size = type_size(ir->type);
-
- index = ir->array_index->constant_expression_value();
-
- ir->array->accept(this);
- src_reg = this->result;
-
- if (index) {
- src_reg.index += index->value.i[0] * element_size;
- } else {
- ir_to_mesa_src_reg array_base = this->result;
- /* Variable index array dereference. It eats the "vec4" of the
- * base of the array and an index that offsets the Mesa register
- * index.
- */
- ir->array_index->accept(this);
-
- ir_to_mesa_src_reg index_reg;
-
- if (element_size == 1) {
- index_reg = this->result;
- } else {
- index_reg = get_temp(glsl_type::float_type);
-
- ir_to_mesa_emit_op2(ir, OPCODE_MUL,
- ir_to_mesa_dst_reg_from_src(index_reg),
- this->result, src_reg_for_float(element_size));
- }
-
- src_reg.reladdr = talloc(mem_ctx, ir_to_mesa_src_reg);
- memcpy(src_reg.reladdr, &index_reg, sizeof(index_reg));
- }
-
- /* If the type is smaller than a vec4, replicate the last channel out. */
- if (ir->type->is_scalar() || ir->type->is_vector())
- src_reg.swizzle = swizzle_for_size(ir->type->vector_elements);
- else
- src_reg.swizzle = SWIZZLE_NOOP;
-
- this->result = src_reg;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_dereference_record *ir)
-{
- unsigned int i;
- const glsl_type *struct_type = ir->record->type;
- int offset = 0;
-
- ir->record->accept(this);
-
- for (i = 0; i < struct_type->length; i++) {
- if (strcmp(struct_type->fields.structure[i].name, ir->field) == 0)
- break;
- offset += type_size(struct_type->fields.structure[i].type);
- }
-
- /* If the type is smaller than a vec4, replicate the last channel out. */
- if (ir->type->is_scalar() || ir->type->is_vector())
- this->result.swizzle = swizzle_for_size(ir->type->vector_elements);
- else
- this->result.swizzle = SWIZZLE_NOOP;
-
- this->result.index += offset;
-}
-
-/**
- * We want to be careful in assignment setup to hit the actual storage
- * instead of potentially using a temporary like we might with the
- * ir_dereference handler.
- */
-static struct ir_to_mesa_dst_reg
-get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v)
-{
- /* The LHS must be a dereference. If the LHS is a variable indexed array
- * access of a vector, it must be separated into a series conditional moves
- * before reaching this point (see ir_vec_index_to_cond_assign).
- */
- assert(ir->as_dereference());
- ir_dereference_array *deref_array = ir->as_dereference_array();
- if (deref_array) {
- assert(!deref_array->array->type->is_vector());
- }
-
- /* Use the rvalue deref handler for the most part. We'll ignore
- * swizzles in it and write swizzles using writemask, though.
- */
- ir->accept(v);
- return ir_to_mesa_dst_reg_from_src(v->result);
-}
-
-/**
- * Process the condition of a conditional assignment
- *
- * Examines the condition of a conditional assignment to generate the optimal
- * first operand of a \c CMP instruction. If the condition is a relational
- * operator with 0 (e.g., \c ir_binop_less), the value being compared will be
- * used as the source for the \c CMP instruction. Otherwise the comparison
- * is processed to a boolean result, and the boolean result is used as the
- * operand to the CMP instruction.
- */
-bool
-ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir)
-{
- ir_rvalue *src_ir = ir;
- bool negate = true;
- bool switch_order = false;
-
- ir_expression *const expr = ir->as_expression();
- if ((expr != NULL) && (expr->get_num_operands() == 2)) {
- bool zero_on_left = false;
-
- if (expr->operands[0]->is_zero()) {
- src_ir = expr->operands[1];
- zero_on_left = true;
- } else if (expr->operands[1]->is_zero()) {
- src_ir = expr->operands[0];
- zero_on_left = false;
- }
-
- /* a is - 0 + - 0 +
- * (a < 0) T F F ( a < 0) T F F
- * (0 < a) F F T (-a < 0) F F T
- * (a <= 0) T T F (-a < 0) F F T (swap order of other operands)
- * (0 <= a) F T T ( a < 0) T F F (swap order of other operands)
- * (a > 0) F F T (-a < 0) F F T
- * (0 > a) T F F ( a < 0) T F F
- * (a >= 0) F T T ( a < 0) T F F (swap order of other operands)
- * (0 >= a) T T F (-a < 0) F F T (swap order of other operands)
- *
- * Note that exchanging the order of 0 and 'a' in the comparison simply
- * means that the value of 'a' should be negated.
- */
- if (src_ir != ir) {
- switch (expr->operation) {
- case ir_binop_less:
- switch_order = false;
- negate = zero_on_left;
- break;
-
- case ir_binop_greater:
- switch_order = false;
- negate = !zero_on_left;
- break;
-
- case ir_binop_lequal:
- switch_order = true;
- negate = !zero_on_left;
- break;
-
- case ir_binop_gequal:
- switch_order = true;
- negate = zero_on_left;
- break;
-
- default:
- /* This isn't the right kind of comparison afterall, so make sure
- * the whole condition is visited.
- */
- src_ir = ir;
- break;
- }
- }
- }
-
- src_ir->accept(this);
-
- /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves, and the
- * condition we produced is 0.0 or 1.0. By flipping the sign, we can
- * choose which value OPCODE_CMP produces without an extra instruction
- * computing the condition.
- */
- if (negate)
- this->result.negate = ~this->result.negate;
-
- return switch_order;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_assignment *ir)
-{
- struct ir_to_mesa_dst_reg l;
- struct ir_to_mesa_src_reg r;
- int i;
-
- ir->rhs->accept(this);
- r = this->result;
-
- l = get_assignment_lhs(ir->lhs, this);
-
- /* FINISHME: This should really set to the correct maximal writemask for each
- * FINISHME: component written (in the loops below). This case can only
- * FINISHME: occur for matrices, arrays, and structures.
- */
- if (ir->write_mask == 0) {
- assert(!ir->lhs->type->is_scalar() && !ir->lhs->type->is_vector());
- l.writemask = WRITEMASK_XYZW;
- } else if (ir->lhs->type->is_scalar()) {
- /* FINISHME: This hack makes writing to gl_FragDepth, which lives in the
- * FINISHME: W component of fragment shader output zero, work correctly.
- */
- l.writemask = WRITEMASK_XYZW;
- } else {
- int swizzles[4];
- int first_enabled_chan = 0;
- int rhs_chan = 0;
-
- assert(ir->lhs->type->is_vector());
- l.writemask = ir->write_mask;
-
- for (int i = 0; i < 4; i++) {
- if (l.writemask & (1 << i)) {
- first_enabled_chan = GET_SWZ(r.swizzle, i);
- break;
- }
- }
-
- /* Swizzle a small RHS vector into the channels being written.
- *
- * glsl ir treats write_mask as dictating how many channels are
- * present on the RHS while Mesa IR treats write_mask as just
- * showing which channels of the vec4 RHS get written.
- */
- for (int i = 0; i < 4; i++) {
- if (l.writemask & (1 << i))
- swizzles[i] = GET_SWZ(r.swizzle, rhs_chan++);
- else
- swizzles[i] = first_enabled_chan;
- }
- r.swizzle = MAKE_SWIZZLE4(swizzles[0], swizzles[1],
- swizzles[2], swizzles[3]);
- }
-
- assert(l.file != PROGRAM_UNDEFINED);
- assert(r.file != PROGRAM_UNDEFINED);
-
- if (ir->condition) {
- const bool switch_order = this->process_move_condition(ir->condition);
- ir_to_mesa_src_reg condition = this->result;
-
- for (i = 0; i < type_size(ir->lhs->type); i++) {
- if (switch_order) {
- ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
- condition, ir_to_mesa_src_reg_from_dst(l), r);
- } else {
- ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
- condition, r, ir_to_mesa_src_reg_from_dst(l));
- }
-
- l.index++;
- r.index++;
- }
- } else {
- for (i = 0; i < type_size(ir->lhs->type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
- l.index++;
- r.index++;
- }
- }
-}
-
-
-void
-ir_to_mesa_visitor::visit(ir_constant *ir)
-{
- ir_to_mesa_src_reg src_reg;
- GLfloat stack_vals[4] = { 0 };
- GLfloat *values = stack_vals;
- unsigned int i;
-
- /* Unfortunately, 4 floats is all we can get into
- * _mesa_add_unnamed_constant. So, make a temp to store an
- * aggregate constant and move each constant value into it. If we
- * get lucky, copy propagation will eliminate the extra moves.
- */
-
- if (ir->type->base_type == GLSL_TYPE_STRUCT) {
- ir_to_mesa_src_reg temp_base = get_temp(ir->type);
- ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base);
-
- foreach_iter(exec_list_iterator, iter, ir->components) {
- ir_constant *field_value = (ir_constant *)iter.get();
- int size = type_size(field_value->type);
-
- assert(size > 0);
-
- field_value->accept(this);
- src_reg = this->result;
-
- for (i = 0; i < (unsigned int)size; i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg);
-
- src_reg.index++;
- temp.index++;
- }
- }
- this->result = temp_base;
- return;
- }
-
- if (ir->type->is_array()) {
- ir_to_mesa_src_reg temp_base = get_temp(ir->type);
- ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base);
- int size = type_size(ir->type->fields.array);
-
- assert(size > 0);
-
- for (i = 0; i < ir->type->length; i++) {
- ir->array_elements[i]->accept(this);
- src_reg = this->result;
- for (int j = 0; j < size; j++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg);
-
- src_reg.index++;
- temp.index++;
- }
- }
- this->result = temp_base;
- return;
- }
-
- if (ir->type->is_matrix()) {
- ir_to_mesa_src_reg mat = get_temp(ir->type);
- ir_to_mesa_dst_reg mat_column = ir_to_mesa_dst_reg_from_src(mat);
-
- for (i = 0; i < ir->type->matrix_columns; i++) {
- assert(ir->type->base_type == GLSL_TYPE_FLOAT);
- values = &ir->value.f[i * ir->type->vector_elements];
-
- src_reg = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, NULL);
- src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters,
- values,
- ir->type->vector_elements,
- &src_reg.swizzle);
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, mat_column, src_reg);
-
- mat_column.index++;
- }
-
- this->result = mat;
- return;
- }
-
- src_reg.file = PROGRAM_CONSTANT;
- switch (ir->type->base_type) {
- case GLSL_TYPE_FLOAT:
- values = &ir->value.f[0];
- break;
- case GLSL_TYPE_UINT:
- for (i = 0; i < ir->type->vector_elements; i++) {
- values[i] = ir->value.u[i];
- }
- break;
- case GLSL_TYPE_INT:
- for (i = 0; i < ir->type->vector_elements; i++) {
- values[i] = ir->value.i[i];
- }
- break;
- case GLSL_TYPE_BOOL:
- for (i = 0; i < ir->type->vector_elements; i++) {
- values[i] = ir->value.b[i];
- }
- break;
- default:
- assert(!"Non-float/uint/int/bool constant");
- }
-
- this->result = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, ir->type);
- this->result.index = _mesa_add_unnamed_constant(this->prog->Parameters,
- values,
- ir->type->vector_elements,
- &this->result.swizzle);
-}
-
-function_entry *
-ir_to_mesa_visitor::get_function_signature(ir_function_signature *sig)
-{
- function_entry *entry;
-
- foreach_iter(exec_list_iterator, iter, this->function_signatures) {
- entry = (function_entry *)iter.get();
-
- if (entry->sig == sig)
- return entry;
- }
-
- entry = talloc(mem_ctx, function_entry);
- entry->sig = sig;
- entry->sig_id = this->next_signature_id++;
- entry->bgn_inst = NULL;
-
- /* Allocate storage for all the parameters. */
- foreach_iter(exec_list_iterator, iter, sig->parameters) {
- ir_variable *param = (ir_variable *)iter.get();
- variable_storage *storage;
-
- storage = find_variable_storage(param);
- assert(!storage);
-
- storage = new(mem_ctx) variable_storage(param, PROGRAM_TEMPORARY,
- this->next_temp);
- this->variables.push_tail(storage);
-
- this->next_temp += type_size(param->type);
- }
-
- if (!sig->return_type->is_void()) {
- entry->return_reg = get_temp(sig->return_type);
- } else {
- entry->return_reg = ir_to_mesa_undef;
- }
-
- this->function_signatures.push_tail(entry);
- return entry;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_call *ir)
-{
- ir_to_mesa_instruction *call_inst;
- ir_function_signature *sig = ir->get_callee();
- function_entry *entry = get_function_signature(sig);
- int i;
-
- /* Process in parameters. */
- exec_list_iterator sig_iter = sig->parameters.iterator();
- foreach_iter(exec_list_iterator, iter, *ir) {
- ir_rvalue *param_rval = (ir_rvalue *)iter.get();
- ir_variable *param = (ir_variable *)sig_iter.get();
-
- if (param->mode == ir_var_in ||
- param->mode == ir_var_inout) {
- variable_storage *storage = find_variable_storage(param);
- assert(storage);
-
- param_rval->accept(this);
- ir_to_mesa_src_reg r = this->result;
-
- ir_to_mesa_dst_reg l;
- l.file = storage->file;
- l.index = storage->index;
- l.reladdr = NULL;
- l.writemask = WRITEMASK_XYZW;
- l.cond_mask = COND_TR;
-
- for (i = 0; i < type_size(param->type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
- l.index++;
- r.index++;
- }
- }
-
- sig_iter.next();
- }
- assert(!sig_iter.has_next());
-
- /* Emit call instruction */
- call_inst = ir_to_mesa_emit_op1(ir, OPCODE_CAL,
- ir_to_mesa_undef_dst, ir_to_mesa_undef);
- call_inst->function = entry;
-
- /* Process out parameters. */
- sig_iter = sig->parameters.iterator();
- foreach_iter(exec_list_iterator, iter, *ir) {
- ir_rvalue *param_rval = (ir_rvalue *)iter.get();
- ir_variable *param = (ir_variable *)sig_iter.get();
-
- if (param->mode == ir_var_out ||
- param->mode == ir_var_inout) {
- variable_storage *storage = find_variable_storage(param);
- assert(storage);
-
- ir_to_mesa_src_reg r;
- r.file = storage->file;
- r.index = storage->index;
- r.reladdr = NULL;
- r.swizzle = SWIZZLE_NOOP;
- r.negate = 0;
-
- param_rval->accept(this);
- ir_to_mesa_dst_reg l = ir_to_mesa_dst_reg_from_src(this->result);
-
- for (i = 0; i < type_size(param->type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
- l.index++;
- r.index++;
- }
- }
-
- sig_iter.next();
- }
- assert(!sig_iter.has_next());
-
- /* Process return value. */
- this->result = entry->return_reg;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_texture *ir)
-{
- ir_to_mesa_src_reg result_src, coord, lod_info, projector;
- ir_to_mesa_dst_reg result_dst, coord_dst;
- ir_to_mesa_instruction *inst = NULL;
- prog_opcode opcode = OPCODE_NOP;
-
- ir->coordinate->accept(this);
-
- /* Put our coords in a temp. We'll need to modify them for shadow,
- * projection, or LOD, so the only case we'd use it as is is if
- * we're doing plain old texturing. Mesa IR optimization should
- * handle cleaning up our mess in that case.
- */
- coord = get_temp(glsl_type::vec4_type);
- coord_dst = ir_to_mesa_dst_reg_from_src(coord);
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst,
- this->result);
-
- if (ir->projector) {
- ir->projector->accept(this);
- projector = this->result;
- }
-
- /* Storage for our result. Ideally for an assignment we'd be using
- * the actual storage for the result here, instead.
- */
- result_src = get_temp(glsl_type::vec4_type);
- result_dst = ir_to_mesa_dst_reg_from_src(result_src);
-
- switch (ir->op) {
- case ir_tex:
- opcode = OPCODE_TEX;
- break;
- case ir_txb:
- opcode = OPCODE_TXB;
- ir->lod_info.bias->accept(this);
- lod_info = this->result;
- break;
- case ir_txl:
- opcode = OPCODE_TXL;
- ir->lod_info.lod->accept(this);
- lod_info = this->result;
- break;
- case ir_txd:
- case ir_txf:
- assert(!"GLSL 1.30 features unsupported");
- break;
- }
-
- if (ir->projector) {
- if (opcode == OPCODE_TEX) {
- /* Slot the projector in as the last component of the coord. */
- coord_dst.writemask = WRITEMASK_W;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, projector);
- coord_dst.writemask = WRITEMASK_XYZW;
- opcode = OPCODE_TXP;
- } else {
- ir_to_mesa_src_reg coord_w = coord;
- coord_w.swizzle = SWIZZLE_WWWW;
-
- /* For the other TEX opcodes there's no projective version
- * since the last slot is taken up by lod info. Do the
- * projective divide now.
- */
- coord_dst.writemask = WRITEMASK_W;
- ir_to_mesa_emit_op1(ir, OPCODE_RCP, coord_dst, projector);
-
- coord_dst.writemask = WRITEMASK_XYZ;
- ir_to_mesa_emit_op2(ir, OPCODE_MUL, coord_dst, coord, coord_w);
-
- coord_dst.writemask = WRITEMASK_XYZW;
- coord.swizzle = SWIZZLE_XYZW;
- }
- }
-
- if (ir->shadow_comparitor) {
- /* Slot the shadow value in as the second to last component of the
- * coord.
- */
- ir->shadow_comparitor->accept(this);
- coord_dst.writemask = WRITEMASK_Z;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, this->result);
- coord_dst.writemask = WRITEMASK_XYZW;
- }
-
- if (opcode == OPCODE_TXL || opcode == OPCODE_TXB) {
- /* Mesa IR stores lod or lod bias in the last channel of the coords. */
- coord_dst.writemask = WRITEMASK_W;
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, lod_info);
- coord_dst.writemask = WRITEMASK_XYZW;
- }
-
- inst = ir_to_mesa_emit_op1(ir, opcode, result_dst, coord);
-
- if (ir->shadow_comparitor)
- inst->tex_shadow = GL_TRUE;
-
- inst->sampler = _mesa_get_sampler_uniform_value(ir->sampler,
- this->shader_program,
- this->prog);
-
- const glsl_type *sampler_type = ir->sampler->type;
-
- switch (sampler_type->sampler_dimensionality) {
- case GLSL_SAMPLER_DIM_1D:
- inst->tex_target = (sampler_type->sampler_array)
- ? TEXTURE_1D_ARRAY_INDEX : TEXTURE_1D_INDEX;
- break;
- case GLSL_SAMPLER_DIM_2D:
- inst->tex_target = (sampler_type->sampler_array)
- ? TEXTURE_2D_ARRAY_INDEX : TEXTURE_2D_INDEX;
- break;
- case GLSL_SAMPLER_DIM_3D:
- inst->tex_target = TEXTURE_3D_INDEX;
- break;
- case GLSL_SAMPLER_DIM_CUBE:
- inst->tex_target = TEXTURE_CUBE_INDEX;
- break;
- case GLSL_SAMPLER_DIM_RECT:
- inst->tex_target = TEXTURE_RECT_INDEX;
- break;
- case GLSL_SAMPLER_DIM_BUF:
- assert(!"FINISHME: Implement ARB_texture_buffer_object");
- break;
- default:
- assert(!"Should not get here.");
- }
-
- this->result = result_src;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_return *ir)
-{
- if (ir->get_value()) {
- ir_to_mesa_dst_reg l;
- int i;
-
- assert(current_function);
-
- ir->get_value()->accept(this);
- ir_to_mesa_src_reg r = this->result;
-
- l = ir_to_mesa_dst_reg_from_src(current_function->return_reg);
-
- for (i = 0; i < type_size(current_function->sig->return_type); i++) {
- ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
- l.index++;
- r.index++;
- }
- }
-
- ir_to_mesa_emit_op0(ir, OPCODE_RET);
-}
-
-void
-ir_to_mesa_visitor::visit(ir_discard *ir)
-{
- struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog;
-
- if (ir->condition) {
- ir->condition->accept(this);
- this->result.negate = ~this->result.negate;
- ir_to_mesa_emit_op1(ir, OPCODE_KIL, ir_to_mesa_undef_dst, this->result);
- } else {
- ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV);
- }
-
- fp->UsesKill = GL_TRUE;
-}
-
-void
-ir_to_mesa_visitor::visit(ir_if *ir)
-{
- ir_to_mesa_instruction *cond_inst, *if_inst, *else_inst = NULL;
- ir_to_mesa_instruction *prev_inst;
-
- prev_inst = (ir_to_mesa_instruction *)this->instructions.get_tail();
-
- ir->condition->accept(this);
- assert(this->result.file != PROGRAM_UNDEFINED);
-
- if (this->options->EmitCondCodes) {
- cond_inst = (ir_to_mesa_instruction *)this->instructions.get_tail();
-
- /* See if we actually generated any instruction for generating
- * the condition. If not, then cook up a move to a temp so we
- * have something to set cond_update on.
- */
- if (cond_inst == prev_inst) {
- ir_to_mesa_src_reg temp = get_temp(glsl_type::bool_type);
- cond_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_MOV,
- ir_to_mesa_dst_reg_from_src(temp),
- result);
- }
- cond_inst->cond_update = GL_TRUE;
-
- if_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_IF);
- if_inst->dst_reg.cond_mask = COND_NE;
- } else {
- if_inst = ir_to_mesa_emit_op1(ir->condition,
- OPCODE_IF, ir_to_mesa_undef_dst,
- this->result);
- }
-
- this->instructions.push_tail(if_inst);
-
- visit_exec_list(&ir->then_instructions, this);
-
- if (!ir->else_instructions.is_empty()) {
- else_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_ELSE);
- visit_exec_list(&ir->else_instructions, this);
- }
-
- if_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_ENDIF,
- ir_to_mesa_undef_dst, ir_to_mesa_undef);
-}
-
-ir_to_mesa_visitor::ir_to_mesa_visitor()
-{
- result.file = PROGRAM_UNDEFINED;
- next_temp = 1;
- next_signature_id = 1;
- current_function = NULL;
- mem_ctx = talloc_new(NULL);
-}
-
-ir_to_mesa_visitor::~ir_to_mesa_visitor()
-{
- talloc_free(mem_ctx);
-}
-
-static struct prog_src_register
-mesa_src_reg_from_ir_src_reg(ir_to_mesa_src_reg reg)
-{
- struct prog_src_register mesa_reg;
-
- mesa_reg.File = reg.file;
- assert(reg.index < (1 << INST_INDEX_BITS));
- mesa_reg.Index = reg.index;
- mesa_reg.Swizzle = reg.swizzle;
- mesa_reg.RelAddr = reg.reladdr != NULL;
- mesa_reg.Negate = reg.negate;
- mesa_reg.Abs = 0;
- mesa_reg.HasIndex2 = GL_FALSE;
- mesa_reg.RelAddr2 = 0;
- mesa_reg.Index2 = 0;
-
- return mesa_reg;
-}
-
-static void
-set_branchtargets(ir_to_mesa_visitor *v,
- struct prog_instruction *mesa_instructions,
- int num_instructions)
-{
- int if_count = 0, loop_count = 0;
- int *if_stack, *loop_stack;
- int if_stack_pos = 0, loop_stack_pos = 0;
- int i, j;
-
- for (i = 0; i < num_instructions; i++) {
- switch (mesa_instructions[i].Opcode) {
- case OPCODE_IF:
- if_count++;
- break;
- case OPCODE_BGNLOOP:
- loop_count++;
- break;
- case OPCODE_BRK:
- case OPCODE_CONT:
- mesa_instructions[i].BranchTarget = -1;
- break;
- default:
- break;
- }
- }
-
- if_stack = talloc_zero_array(v->mem_ctx, int, if_count);
- loop_stack = talloc_zero_array(v->mem_ctx, int, loop_count);
-
- for (i = 0; i < num_instructions; i++) {
- switch (mesa_instructions[i].Opcode) {
- case OPCODE_IF:
- if_stack[if_stack_pos] = i;
- if_stack_pos++;
- break;
- case OPCODE_ELSE:
- mesa_instructions[if_stack[if_stack_pos - 1]].BranchTarget = i;
- if_stack[if_stack_pos - 1] = i;
- break;
- case OPCODE_ENDIF:
- mesa_instructions[if_stack[if_stack_pos - 1]].BranchTarget = i;
- if_stack_pos--;
- break;
- case OPCODE_BGNLOOP:
- loop_stack[loop_stack_pos] = i;
- loop_stack_pos++;
- break;
- case OPCODE_ENDLOOP:
- loop_stack_pos--;
- /* Rewrite any breaks/conts at this nesting level (haven't
- * already had a BranchTarget assigned) to point to the end
- * of the loop.
- */
- for (j = loop_stack[loop_stack_pos]; j < i; j++) {
- if (mesa_instructions[j].Opcode == OPCODE_BRK ||
- mesa_instructions[j].Opcode == OPCODE_CONT) {
- if (mesa_instructions[j].BranchTarget == -1) {
- mesa_instructions[j].BranchTarget = i;
- }
- }
- }
- /* The loop ends point at each other. */
- mesa_instructions[i].BranchTarget = loop_stack[loop_stack_pos];
- mesa_instructions[loop_stack[loop_stack_pos]].BranchTarget = i;
- break;
- case OPCODE_CAL:
- foreach_iter(exec_list_iterator, iter, v->function_signatures) {
- function_entry *entry = (function_entry *)iter.get();
-
- if (entry->sig_id == mesa_instructions[i].BranchTarget) {
- mesa_instructions[i].BranchTarget = entry->inst;
- break;
- }
- }
- break;
- default:
- break;
- }
- }
-}
-
-static void
-print_program(struct prog_instruction *mesa_instructions,
- ir_instruction **mesa_instruction_annotation,
- int num_instructions)
-{
- ir_instruction *last_ir = NULL;
- int i;
- int indent = 0;
-
- for (i = 0; i < num_instructions; i++) {
- struct prog_instruction *mesa_inst = mesa_instructions + i;
- ir_instruction *ir = mesa_instruction_annotation[i];
-
- fprintf(stdout, "%3d: ", i);
-
- if (last_ir != ir && ir) {
- int j;
-
- for (j = 0; j < indent; j++) {
- fprintf(stdout, " ");
- }
- ir->print();
- printf("\n");
- last_ir = ir;
-
- fprintf(stdout, " "); /* line number spacing. */
- }
-
- indent = _mesa_fprint_instruction_opt(stdout, mesa_inst, indent,
- PROG_PRINT_DEBUG, NULL);
- }
-}
-
-static void
-count_resources(struct gl_program *prog)
-{
- unsigned int i;
-
- prog->SamplersUsed = 0;
-
- for (i = 0; i < prog->NumInstructions; i++) {
- struct prog_instruction *inst = &prog->Instructions[i];
-
- if (_mesa_is_tex_instruction(inst->Opcode)) {
- prog->SamplerTargets[inst->TexSrcUnit] =
- (gl_texture_index)inst->TexSrcTarget;
- prog->SamplersUsed |= 1 << inst->TexSrcUnit;
- if (inst->TexShadow) {
- prog->ShadowSamplers |= 1 << inst->TexSrcUnit;
- }
- }
- }
-
- _mesa_update_shader_textures_used(prog);
-}
-
-struct uniform_sort {
- struct gl_uniform *u;
- int pos;
-};
-
-/* The shader_program->Uniforms list is almost sorted in increasing
- * uniform->{Frag,Vert}Pos locations, but not quite when there are
- * uniforms shared between targets. We need to add parameters in
- * increasing order for the targets.
- */
-static int
-sort_uniforms(const void *a, const void *b)
-{
- struct uniform_sort *u1 = (struct uniform_sort *)a;
- struct uniform_sort *u2 = (struct uniform_sort *)b;
-
- return u1->pos - u2->pos;
-}
-
-/* Add the uniforms to the parameters. The linker chose locations
- * in our parameters lists (which weren't created yet), which the
- * uniforms code will use to poke values into our parameters list
- * when uniforms are updated.
- */
-static void
-add_uniforms_to_parameters_list(struct gl_shader_program *shader_program,
- struct gl_shader *shader,
- struct gl_program *prog)
-{
- unsigned int i;
- unsigned int next_sampler = 0, num_uniforms = 0;
- struct uniform_sort *sorted_uniforms;
-
- sorted_uniforms = talloc_array(NULL, struct uniform_sort,
- shader_program->Uniforms->NumUniforms);
-
- for (i = 0; i < shader_program->Uniforms->NumUniforms; i++) {
- struct gl_uniform *uniform = shader_program->Uniforms->Uniforms + i;
- int parameter_index = -1;
-
- switch (shader->Type) {
- case GL_VERTEX_SHADER:
- parameter_index = uniform->VertPos;
- break;
- case GL_FRAGMENT_SHADER:
- parameter_index = uniform->FragPos;
- break;
- case GL_GEOMETRY_SHADER:
- parameter_index = uniform->GeomPos;
- break;
- }
-
- /* Only add uniforms used in our target. */
- if (parameter_index != -1) {
- sorted_uniforms[num_uniforms].pos = parameter_index;
- sorted_uniforms[num_uniforms].u = uniform;
- num_uniforms++;
- }
- }
-
- qsort(sorted_uniforms, num_uniforms, sizeof(struct uniform_sort),
- sort_uniforms);
-
- for (i = 0; i < num_uniforms; i++) {
- struct gl_uniform *uniform = sorted_uniforms[i].u;
- int parameter_index = sorted_uniforms[i].pos;
- const glsl_type *type = uniform->Type;
- unsigned int size;
-
- if (type->is_vector() ||
- type->is_scalar()) {
- size = type->vector_elements;
- } else {
- size = type_size(type) * 4;
- }
-
- gl_register_file file;
- if (type->is_sampler() ||
- (type->is_array() && type->fields.array->is_sampler())) {
- file = PROGRAM_SAMPLER;
- } else {
- file = PROGRAM_UNIFORM;
- }
-
- GLint index = _mesa_lookup_parameter_index(prog->Parameters, -1,
- uniform->Name);
-
- if (index < 0) {
- index = _mesa_add_parameter(prog->Parameters, file,
- uniform->Name, size, type->gl_type,
- NULL, NULL, 0x0);
-
- /* Sampler uniform values are stored in prog->SamplerUnits,
- * and the entry in that array is selected by this index we
- * store in ParameterValues[].
- */
- if (file == PROGRAM_SAMPLER) {
- for (unsigned int j = 0; j < size / 4; j++)
- prog->Parameters->ParameterValues[index + j][0] = next_sampler++;
- }
-
- /* The location chosen in the Parameters list here (returned
- * from _mesa_add_uniform) has to match what the linker chose.
- */
- if (index != parameter_index) {
- fail_link(shader_program, "Allocation of uniform `%s' to target "
- "failed (%d vs %d)\n",
- uniform->Name, index, parameter_index);
- }
- }
- }
-
- talloc_free(sorted_uniforms);
-}
-
-static void
-set_uniform_initializer(struct gl_context *ctx, void *mem_ctx,
- struct gl_shader_program *shader_program,
- const char *name, const glsl_type *type,
- ir_constant *val)
-{
- if (type->is_record()) {
- ir_constant *field_constant;
-
- field_constant = (ir_constant *)val->components.get_head();
-
- for (unsigned int i = 0; i < type->length; i++) {
- const glsl_type *field_type = type->fields.structure[i].type;
- const char *field_name = talloc_asprintf(mem_ctx, "%s.%s", name,
- type->fields.structure[i].name);
- set_uniform_initializer(ctx, mem_ctx, shader_program, field_name,
- field_type, field_constant);
- field_constant = (ir_constant *)field_constant->next;
- }
- return;
- }
-
- int loc = _mesa_get_uniform_location(ctx, shader_program, name);
-
- if (loc == -1) {
- fail_link(shader_program,
- "Couldn't find uniform for initializer %s\n", name);
- return;
- }
-
- for (unsigned int i = 0; i < (type->is_array() ? type->length : 1); i++) {
- ir_constant *element;
- const glsl_type *element_type;
- if (type->is_array()) {
- element = val->array_elements[i];
- element_type = type->fields.array;
- } else {
- element = val;
- element_type = type;
- }
-
- void *values;
-
- if (element_type->base_type == GLSL_TYPE_BOOL) {
- int *conv = talloc_array(mem_ctx, int, element_type->components());
- for (unsigned int j = 0; j < element_type->components(); j++) {
- conv[j] = element->value.b[j];
- }
- values = (void *)conv;
- element_type = glsl_type::get_instance(GLSL_TYPE_INT,
- element_type->vector_elements,
- 1);
- } else {
- values = &element->value;
- }
-
- if (element_type->is_matrix()) {
- _mesa_uniform_matrix(ctx, shader_program,
- element_type->matrix_columns,
- element_type->vector_elements,
- loc, 1, GL_FALSE, (GLfloat *)values);
- loc += element_type->matrix_columns;
- } else {
- _mesa_uniform(ctx, shader_program, loc, element_type->matrix_columns,
- values, element_type->gl_type);
- loc += type_size(element_type);
- }
- }
-}
-
-static void
-set_uniform_initializers(struct gl_context *ctx,
- struct gl_shader_program *shader_program)
-{
- void *mem_ctx = NULL;
-
- for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) {
- struct gl_shader *shader = shader_program->_LinkedShaders[i];
-
- if (shader == NULL)
- continue;
-
- foreach_iter(exec_list_iterator, iter, *shader->ir) {
- ir_instruction *ir = (ir_instruction *)iter.get();
- ir_variable *var = ir->as_variable();
-
- if (!var || var->mode != ir_var_uniform || !var->constant_value)
- continue;
-
- if (!mem_ctx)
- mem_ctx = talloc_new(NULL);
-
- set_uniform_initializer(ctx, mem_ctx, shader_program, var->name,
- var->type, var->constant_value);
- }
- }
-
- talloc_free(mem_ctx);
-}
-
-/*
- * On a basic block basis, tracks available PROGRAM_TEMPORARY register
- * channels for copy propagation and updates following instructions to
- * use the original versions.
- *
- * The ir_to_mesa_visitor lazily produces code assuming that this pass
- * will occur. As an example, a TXP production before this pass:
- *
- * 0: MOV TEMP[1], INPUT[4].xyyy;
- * 1: MOV TEMP[1].w, INPUT[4].wwww;
- * 2: TXP TEMP[2], TEMP[1], texture[0], 2D;
- *
- * and after:
- *
- * 0: MOV TEMP[1], INPUT[4].xyyy;
- * 1: MOV TEMP[1].w, INPUT[4].wwww;
- * 2: TXP TEMP[2], INPUT[4].xyyw, texture[0], 2D;
- *
- * which allows for dead code elimination on TEMP[1]'s writes.
- */
-void
-ir_to_mesa_visitor::copy_propagate(void)
-{
- ir_to_mesa_instruction **acp = talloc_zero_array(mem_ctx,
- ir_to_mesa_instruction *,
- this->next_temp * 4);
-
- foreach_iter(exec_list_iterator, iter, this->instructions) {
- ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get();
-
- /* First, do any copy propagation possible into the src regs. */
- for (int r = 0; r < 3; r++) {
- ir_to_mesa_instruction *first = NULL;
- bool good = true;
- int acp_base = inst->src_reg[r].index * 4;
-
- if (inst->src_reg[r].file != PROGRAM_TEMPORARY ||
- inst->src_reg[r].reladdr)
- continue;
-
- /* See if we can find entries in the ACP consisting of MOVs
- * from the same src register for all the swizzled channels
- * of this src register reference.
- */
- for (int i = 0; i < 4; i++) {
- int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i);
- ir_to_mesa_instruction *copy_chan = acp[acp_base + src_chan];
-
- if (!copy_chan) {
- good = false;
- break;
- }
-
- if (!first) {
- first = copy_chan;
- } else {
- if (first->src_reg[0].file != copy_chan->src_reg[0].file ||
- first->src_reg[0].index != copy_chan->src_reg[0].index) {
- good = false;
- break;
- }
- }
- }
-
- if (good) {
- /* We've now validated that we can copy-propagate to
- * replace this src register reference. Do it.
- */
- inst->src_reg[r].file = first->src_reg[0].file;
- inst->src_reg[r].index = first->src_reg[0].index;
-
- int swizzle = 0;
- for (int i = 0; i < 4; i++) {
- int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i);
- ir_to_mesa_instruction *copy_inst = acp[acp_base + src_chan];
- swizzle |= (GET_SWZ(copy_inst->src_reg[0].swizzle, src_chan) <<
- (3 * i));
- }
- inst->src_reg[r].swizzle = swizzle;
- }
- }
-
- switch (inst->op) {
- case OPCODE_BGNLOOP:
- case OPCODE_ENDLOOP:
- case OPCODE_ELSE:
- case OPCODE_ENDIF:
- /* End of a basic block, clear the ACP entirely. */
- memset(acp, 0, sizeof(*acp) * this->next_temp * 4);
- break;
-
- default:
- /* Continuing the block, clear any written channels from
- * the ACP.
- */
- if (inst->dst_reg.file == PROGRAM_TEMPORARY) {
- if (inst->dst_reg.reladdr) {
- memset(acp, 0, sizeof(*acp) * this->next_temp * 4);
- } else {
- for (int i = 0; i < 4; i++) {
- if (inst->dst_reg.writemask & (1 << i)) {
- acp[4 * inst->dst_reg.index + i] = NULL;
- }
- }
- }
- }
- break;
- }
-
- /* If this is a copy, add it to the ACP. */
- if (inst->op == OPCODE_MOV &&
- inst->dst_reg.file == PROGRAM_TEMPORARY &&
- !inst->dst_reg.reladdr &&
- !inst->saturate &&
- !inst->src_reg[0].reladdr &&
- !inst->src_reg[0].negate) {
- for (int i = 0; i < 4; i++) {
- if (inst->dst_reg.writemask & (1 << i)) {
- acp[4 * inst->dst_reg.index + i] = inst;
- }
- }
- }
- }
-
- talloc_free(acp);
-}
-
-
-/**
- * Convert a shader's GLSL IR into a Mesa gl_program.
- */
-static struct gl_program *
-get_mesa_program(struct gl_context *ctx,
- struct gl_shader_program *shader_program,
- struct gl_shader *shader)
-{
- ir_to_mesa_visitor v;
- struct prog_instruction *mesa_instructions, *mesa_inst;
- ir_instruction **mesa_instruction_annotation;
- int i;
- struct gl_program *prog;
- GLenum target;
- const char *target_string;
- GLboolean progress;
- struct gl_shader_compiler_options *options =
- &ctx->ShaderCompilerOptions[_mesa_shader_type_to_index(shader->Type)];
-
- switch (shader->Type) {
- case GL_VERTEX_SHADER:
- target = GL_VERTEX_PROGRAM_ARB;
- target_string = "vertex";
- break;
- case GL_FRAGMENT_SHADER:
- target = GL_FRAGMENT_PROGRAM_ARB;
- target_string = "fragment";
- break;
- case GL_GEOMETRY_SHADER:
- target = GL_GEOMETRY_PROGRAM_NV;
- target_string = "geometry";
- break;
- default:
- assert(!"should not be reached");
- return NULL;
- }
-
- validate_ir_tree(shader->ir);
-
- prog = ctx->Driver.NewProgram(ctx, target, shader_program->Name);
- if (!prog)
- return NULL;
- prog->Parameters = _mesa_new_parameter_list();
- prog->Varying = _mesa_new_parameter_list();
- prog->Attributes = _mesa_new_parameter_list();
- v.ctx = ctx;
- v.prog = prog;
- v.shader_program = shader_program;
- v.options = options;
-
- add_uniforms_to_parameters_list(shader_program, shader, prog);
-
- /* Emit Mesa IR for main(). */
- visit_exec_list(shader->ir, &v);
- v.ir_to_mesa_emit_op0(NULL, OPCODE_END);
-
- /* Now emit bodies for any functions that were used. */
- do {
- progress = GL_FALSE;
-
- foreach_iter(exec_list_iterator, iter, v.function_signatures) {
- function_entry *entry = (function_entry *)iter.get();
-
- if (!entry->bgn_inst) {
- v.current_function = entry;
-
- entry->bgn_inst = v.ir_to_mesa_emit_op0(NULL, OPCODE_BGNSUB);
- entry->bgn_inst->function = entry;
-
- visit_exec_list(&entry->sig->body, &v);
-
- ir_to_mesa_instruction *last;
- last = (ir_to_mesa_instruction *)v.instructions.get_tail();
- if (last->op != OPCODE_RET)
- v.ir_to_mesa_emit_op0(NULL, OPCODE_RET);
-
- ir_to_mesa_instruction *end;
- end = v.ir_to_mesa_emit_op0(NULL, OPCODE_ENDSUB);
- end->function = entry;
-
- progress = GL_TRUE;
- }
- }
- } while (progress);
-
- prog->NumTemporaries = v.next_temp;
-
- int num_instructions = 0;
- foreach_iter(exec_list_iterator, iter, v.instructions) {
- num_instructions++;
- }
-
- mesa_instructions =
- (struct prog_instruction *)calloc(num_instructions,
- sizeof(*mesa_instructions));
- mesa_instruction_annotation = talloc_array(v.mem_ctx, ir_instruction *,
- num_instructions);
-
- v.copy_propagate();
-
- /* Convert ir_mesa_instructions into prog_instructions.
- */
- mesa_inst = mesa_instructions;
- i = 0;
- foreach_iter(exec_list_iterator, iter, v.instructions) {
- const ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get();
-
- mesa_inst->Opcode = inst->op;
- mesa_inst->CondUpdate = inst->cond_update;
- if (inst->saturate)
- mesa_inst->SaturateMode = SATURATE_ZERO_ONE;
- mesa_inst->DstReg.File = inst->dst_reg.file;
- mesa_inst->DstReg.Index = inst->dst_reg.index;
- mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask;
- mesa_inst->DstReg.WriteMask = inst->dst_reg.writemask;
- mesa_inst->DstReg.RelAddr = inst->dst_reg.reladdr != NULL;
- mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src_reg[0]);
- mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src_reg[1]);
- mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src_reg[2]);
- mesa_inst->TexSrcUnit = inst->sampler;
- mesa_inst->TexSrcTarget = inst->tex_target;
- mesa_inst->TexShadow = inst->tex_shadow;
- mesa_instruction_annotation[i] = inst->ir;
-
- /* Set IndirectRegisterFiles. */
- if (mesa_inst->DstReg.RelAddr)
- prog->IndirectRegisterFiles |= 1 << mesa_inst->DstReg.File;
-
- /* Update program's bitmask of indirectly accessed register files */
- for (unsigned src = 0; src < 3; src++)
- if (mesa_inst->SrcReg[src].RelAddr)
- prog->IndirectRegisterFiles |= 1 << mesa_inst->SrcReg[src].File;
-
- if (options->EmitNoIfs && mesa_inst->Opcode == OPCODE_IF) {
- fail_link(shader_program, "Couldn't flatten if statement\n");
- }
-
- switch (mesa_inst->Opcode) {
- case OPCODE_BGNSUB:
- inst->function->inst = i;
- mesa_inst->Comment = strdup(inst->function->sig->function_name());
- break;
- case OPCODE_ENDSUB:
- mesa_inst->Comment = strdup(inst->function->sig->function_name());
- break;
- case OPCODE_CAL:
- mesa_inst->BranchTarget = inst->function->sig_id; /* rewritten later */
- break;
- case OPCODE_ARL:
- prog->NumAddressRegs = 1;
- break;
- default:
- break;
- }
-
- mesa_inst++;
- i++;
-
- if (!shader_program->LinkStatus)
- break;
- }
-
- if (!shader_program->LinkStatus) {
- free(mesa_instructions);
- _mesa_reference_program(ctx, &shader->Program, NULL);
- return NULL;
- }
-
- set_branchtargets(&v, mesa_instructions, num_instructions);
-
- if (ctx->Shader.Flags & GLSL_DUMP) {
- printf("\n");
- printf("GLSL IR for linked %s program %d:\n", target_string,
- shader_program->Name);
- _mesa_print_ir(shader->ir, NULL);
- printf("\n");
- printf("\n");
- printf("Mesa IR for linked %s program %d:\n", target_string,
- shader_program->Name);
- print_program(mesa_instructions, mesa_instruction_annotation,
- num_instructions);
- }
-
- prog->Instructions = mesa_instructions;
- prog->NumInstructions = num_instructions;
-
- do_set_program_inouts(shader->ir, prog);
- count_resources(prog);
-
- _mesa_reference_program(ctx, &shader->Program, prog);
-
- if ((ctx->Shader.Flags & GLSL_NO_OPT) == 0) {
- _mesa_optimize_program(ctx, prog);
- }
-
- return prog;
-}
-
-extern "C" {
-
-/**
- * Called via ctx->Driver.CompilerShader().
- * This is a no-op.
- * XXX can we remove the ctx->Driver.CompileShader() hook?
- */
-GLboolean
-_mesa_ir_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
-{
- assert(shader->CompileStatus);
- (void) ctx;
-
- return GL_TRUE;
-}
-
-
-/**
- * Link a shader.
- * Called via ctx->Driver.LinkShader()
- * This actually involves converting GLSL IR into Mesa gl_programs with
- * code lowering and other optimizations.
- */
-GLboolean
-_mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
-{
- assert(prog->LinkStatus);
-
- for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- bool progress;
- exec_list *ir = prog->_LinkedShaders[i]->ir;
- const struct gl_shader_compiler_options *options =
- &ctx->ShaderCompilerOptions[_mesa_shader_type_to_index(prog->_LinkedShaders[i]->Type)];
-
- do {
- progress = false;
-
- /* Lowering */
- do_mat_op_to_vec(ir);
- lower_instructions(ir, (MOD_TO_FRACT | DIV_TO_MUL_RCP | EXP_TO_EXP2
- | LOG_TO_LOG2
- | ((options->EmitNoPow) ? POW_TO_EXP2 : 0)));
-
- progress = do_lower_jumps(ir, true, true, options->EmitNoMainReturn, options->EmitNoCont, options->EmitNoLoops) || progress;
-
- progress = do_common_optimization(ir, true, options->MaxUnrollIterations) || progress;
-
- progress = lower_quadop_vector(ir, true) || progress;
-
- if (options->EmitNoIfs) {
- progress = lower_discard(ir) || progress;
- progress = lower_if_to_cond_assign(ir) || progress;
- }
-
- if (options->EmitNoNoise)
- progress = lower_noise(ir) || progress;
-
- /* If there are forms of indirect addressing that the driver
- * cannot handle, perform the lowering pass.
- */
- if (options->EmitNoIndirectInput || options->EmitNoIndirectOutput
- || options->EmitNoIndirectTemp || options->EmitNoIndirectUniform)
- progress =
- lower_variable_index_to_cond_assign(ir,
- options->EmitNoIndirectInput,
- options->EmitNoIndirectOutput,
- options->EmitNoIndirectTemp,
- options->EmitNoIndirectUniform)
- || progress;
-
- progress = do_vec_index_to_cond_assign(ir) || progress;
- } while (progress);
-
- validate_ir_tree(ir);
- }
-
- for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
- struct gl_program *linked_prog;
-
- if (prog->_LinkedShaders[i] == NULL)
- continue;
-
- linked_prog = get_mesa_program(ctx, prog, prog->_LinkedShaders[i]);
-
- if (linked_prog) {
- bool ok = true;
-
- switch (prog->_LinkedShaders[i]->Type) {
- case GL_VERTEX_SHADER:
- _mesa_reference_vertprog(ctx, &prog->VertexProgram,
- (struct gl_vertex_program *)linked_prog);
- ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
- linked_prog);
- break;
- case GL_FRAGMENT_SHADER:
- _mesa_reference_fragprog(ctx, &prog->FragmentProgram,
- (struct gl_fragment_program *)linked_prog);
- ok = ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB,
- linked_prog);
- break;
- case GL_GEOMETRY_SHADER:
- _mesa_reference_geomprog(ctx, &prog->GeometryProgram,
- (struct gl_geometry_program *)linked_prog);
- ok = ctx->Driver.ProgramStringNotify(ctx, GL_GEOMETRY_PROGRAM_NV,
- linked_prog);
- break;
- }
- if (!ok) {
- return GL_FALSE;
- }
- }
-
- _mesa_reference_program(ctx, &linked_prog, NULL);
- }
-
- return GL_TRUE;
-}
-
-
-/**
- * Compile a GLSL shader. Called via glCompileShader().
- */
-void
-_mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
-{
- struct _mesa_glsl_parse_state *state =
- new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader);
-
- const char *source = shader->Source;
- /* Check if the user called glCompileShader without first calling
- * glShaderSource. This should fail to compile, but not raise a GL_ERROR.
- */
- if (source == NULL) {
- shader->CompileStatus = GL_FALSE;
- return;
- }
-
- state->error = preprocess(state, &source, &state->info_log,
- &ctx->Extensions, ctx->API);
-
- if (ctx->Shader.Flags & GLSL_DUMP) {
- printf("GLSL source for shader %d:\n", shader->Name);
- printf("%s\n", shader->Source);
- }
-
- if (!state->error) {
- _mesa_glsl_lexer_ctor(state, source);
- _mesa_glsl_parse(state);
- _mesa_glsl_lexer_dtor(state);
- }
-
- talloc_free(shader->ir);
- shader->ir = new(shader) exec_list;
- if (!state->error && !state->translation_unit.is_empty())
- _mesa_ast_to_hir(shader->ir, state);
-
- if (!state->error && !shader->ir->is_empty()) {
- validate_ir_tree(shader->ir);
-
- /* Do some optimization at compile time to reduce shader IR size
- * and reduce later work if the same shader is linked multiple times
- */
- while (do_common_optimization(shader->ir, false, 32))
- ;
-
- validate_ir_tree(shader->ir);
- }
-
- shader->symbols = state->symbols;
-
- shader->CompileStatus = !state->error;
- shader->InfoLog = state->info_log;
- shader->Version = state->language_version;
- memcpy(shader->builtins_to_link, state->builtins_to_link,
- sizeof(shader->builtins_to_link[0]) * state->num_builtins_to_link);
- shader->num_builtins_to_link = state->num_builtins_to_link;
-
- if (ctx->Shader.Flags & GLSL_LOG) {
- _mesa_write_shader_to_file(shader);
- }
-
- if (ctx->Shader.Flags & GLSL_DUMP) {
- if (shader->CompileStatus) {
- printf("GLSL IR for shader %d:\n", shader->Name);
- _mesa_print_ir(shader->ir, NULL);
- printf("\n\n");
- } else {
- printf("GLSL shader %d failed to compile.\n", shader->Name);
- }
- if (shader->InfoLog && shader->InfoLog[0] != 0) {
- printf("GLSL shader %d info log:\n", shader->Name);
- printf("%s\n", shader->InfoLog);
- }
- }
-
- /* Retain any live IR, but trash the rest. */
- reparent_ir(shader->ir, shader->ir);
-
- talloc_free(state);
-
- if (shader->CompileStatus) {
- if (!ctx->Driver.CompileShader(ctx, shader))
- shader->CompileStatus = GL_FALSE;
- }
-}
-
-
-/**
- * Link a GLSL shader program. Called via glLinkProgram().
- */
-void
-_mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
-{
- unsigned int i;
-
- _mesa_clear_shader_program_data(ctx, prog);
-
- prog->LinkStatus = GL_TRUE;
-
- for (i = 0; i < prog->NumShaders; i++) {
- if (!prog->Shaders[i]->CompileStatus) {
- fail_link(prog, "linking with uncompiled shader");
- prog->LinkStatus = GL_FALSE;
- }
- }
-
- prog->Varying = _mesa_new_parameter_list();
- _mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL);
- _mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL);
- _mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL);
-
- if (prog->LinkStatus) {
- link_shaders(ctx, prog);
- }
-
- if (prog->LinkStatus) {
- if (!ctx->Driver.LinkShader(ctx, prog)) {
- prog->LinkStatus = GL_FALSE;
- }
- }
-
- set_uniform_initializers(ctx, prog);
-
- if (ctx->Shader.Flags & GLSL_DUMP) {
- if (!prog->LinkStatus) {
- printf("GLSL shader program %d failed to link\n", prog->Name);
- }
-
- if (prog->InfoLog && prog->InfoLog[0] != 0) {
- printf("GLSL shader program %d info log:\n", prog->Name);
- printf("%s\n", prog->InfoLog);
- }
- }
-}
-
-} /* extern "C" */
+/*
+ * Copyright (C) 2005-2007 Brian Paul All Rights Reserved.
+ * Copyright (C) 2008 VMware, Inc. All Rights Reserved.
+ * Copyright © 2010 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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.
+ */
+
+/**
+ * \file ir_to_mesa.cpp
+ *
+ * Translate GLSL IR to Mesa's gl_program representation.
+ */
+
+#include <stdio.h>
+#include "main/compiler.h"
+#include "ir.h"
+#include "ir_visitor.h"
+#include "ir_print_visitor.h"
+#include "ir_expression_flattening.h"
+#include "glsl_types.h"
+#include "glsl_parser_extras.h"
+#include "../glsl/program.h"
+#include "ir_optimization.h"
+#include "ast.h"
+
+extern "C" {
+#include "main/mtypes.h"
+#include "main/shaderapi.h"
+#include "main/shaderobj.h"
+#include "main/uniforms.h"
+#include "program/hash_table.h"
+#include "program/prog_instruction.h"
+#include "program/prog_optimize.h"
+#include "program/prog_print.h"
+#include "program/program.h"
+#include "program/prog_uniform.h"
+#include "program/prog_parameter.h"
+#include "program/sampler.h"
+}
+
+static int swizzle_for_size(int size);
+
+/**
+ * This struct is a corresponding struct to Mesa prog_src_register, with
+ * wider fields.
+ */
+typedef struct ir_to_mesa_src_reg {
+ ir_to_mesa_src_reg(int file, int index, const glsl_type *type)
+ {
+ this->file = (gl_register_file) file;
+ this->index = index;
+ if (type && (type->is_scalar() || type->is_vector() || type->is_matrix()))
+ this->swizzle = swizzle_for_size(type->vector_elements);
+ else
+ this->swizzle = SWIZZLE_XYZW;
+ this->negate = 0;
+ this->reladdr = NULL;
+ }
+
+ ir_to_mesa_src_reg()
+ {
+ this->file = PROGRAM_UNDEFINED;
+ this->index = 0;
+ this->swizzle = 0;
+ this->negate = 0;
+ this->reladdr = NULL;
+ }
+
+ gl_register_file file; /**< PROGRAM_* from Mesa */
+ int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
+ GLuint swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */
+ int negate; /**< NEGATE_XYZW mask from mesa */
+ /** Register index should be offset by the integer in this reg. */
+ ir_to_mesa_src_reg *reladdr;
+} ir_to_mesa_src_reg;
+
+typedef struct ir_to_mesa_dst_reg {
+ int file; /**< PROGRAM_* from Mesa */
+ int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */
+ int writemask; /**< Bitfield of WRITEMASK_[XYZW] */
+ GLuint cond_mask:4;
+ /** Register index should be offset by the integer in this reg. */
+ ir_to_mesa_src_reg *reladdr;
+} ir_to_mesa_dst_reg;
+
+extern ir_to_mesa_src_reg ir_to_mesa_undef;
+
+class ir_to_mesa_instruction : public exec_node {
+public:
+ /* Callers of this talloc-based new need not call delete. It's
+ * easier to just talloc_free 'ctx' (or any of its ancestors). */
+ static void* operator new(size_t size, void *ctx)
+ {
+ void *node;
+
+ node = talloc_zero_size(ctx, size);
+ assert(node != NULL);
+
+ return node;
+ }
+
+ enum prog_opcode op;
+ ir_to_mesa_dst_reg dst_reg;
+ ir_to_mesa_src_reg src_reg[3];
+ /** Pointer to the ir source this tree came from for debugging */
+ ir_instruction *ir;
+ GLboolean cond_update;
+ bool saturate;
+ int sampler; /**< sampler index */
+ int tex_target; /**< One of TEXTURE_*_INDEX */
+ GLboolean tex_shadow;
+
+ class function_entry *function; /* Set on OPCODE_CAL or OPCODE_BGNSUB */
+};
+
+class variable_storage : public exec_node {
+public:
+ variable_storage(ir_variable *var, gl_register_file file, int index)
+ : file(file), index(index), var(var)
+ {
+ /* empty */
+ }
+
+ gl_register_file file;
+ int index;
+ ir_variable *var; /* variable that maps to this, if any */
+};
+
+class function_entry : public exec_node {
+public:
+ ir_function_signature *sig;
+
+ /**
+ * identifier of this function signature used by the program.
+ *
+ * At the point that Mesa instructions for function calls are
+ * generated, we don't know the address of the first instruction of
+ * the function body. So we make the BranchTarget that is called a
+ * small integer and rewrite them during set_branchtargets().
+ */
+ int sig_id;
+
+ /**
+ * Pointer to first instruction of the function body.
+ *
+ * Set during function body emits after main() is processed.
+ */
+ ir_to_mesa_instruction *bgn_inst;
+
+ /**
+ * Index of the first instruction of the function body in actual
+ * Mesa IR.
+ *
+ * Set after convertion from ir_to_mesa_instruction to prog_instruction.
+ */
+ int inst;
+
+ /** Storage for the return value. */
+ ir_to_mesa_src_reg return_reg;
+};
+
+class ir_to_mesa_visitor : public ir_visitor {
+public:
+ ir_to_mesa_visitor();
+ ~ir_to_mesa_visitor();
+
+ function_entry *current_function;
+
+ struct gl_context *ctx;
+ struct gl_program *prog;
+ struct gl_shader_program *shader_program;
+ struct gl_shader_compiler_options *options;
+
+ int next_temp;
+
+ variable_storage *find_variable_storage(ir_variable *var);
+
+ function_entry *get_function_signature(ir_function_signature *sig);
+
+ ir_to_mesa_src_reg get_temp(const glsl_type *type);
+ void reladdr_to_temp(ir_instruction *ir,
+ ir_to_mesa_src_reg *reg, int *num_reladdr);
+
+ struct ir_to_mesa_src_reg src_reg_for_float(float val);
+
+ /**
+ * \name Visit methods
+ *
+ * As typical for the visitor pattern, there must be one \c visit method for
+ * each concrete subclass of \c ir_instruction. Virtual base classes within
+ * the hierarchy should not have \c visit methods.
+ */
+ /*@{*/
+ virtual void visit(ir_variable *);
+ virtual void visit(ir_loop *);
+ virtual void visit(ir_loop_jump *);
+ virtual void visit(ir_function_signature *);
+ virtual void visit(ir_function *);
+ virtual void visit(ir_expression *);
+ virtual void visit(ir_swizzle *);
+ virtual void visit(ir_dereference_variable *);
+ virtual void visit(ir_dereference_array *);
+ virtual void visit(ir_dereference_record *);
+ virtual void visit(ir_assignment *);
+ virtual void visit(ir_constant *);
+ virtual void visit(ir_call *);
+ virtual void visit(ir_return *);
+ virtual void visit(ir_discard *);
+ virtual void visit(ir_texture *);
+ virtual void visit(ir_if *);
+ /*@}*/
+
+ struct ir_to_mesa_src_reg result;
+
+ /** List of variable_storage */
+ exec_list variables;
+
+ /** List of function_entry */
+ exec_list function_signatures;
+ int next_signature_id;
+
+ /** List of ir_to_mesa_instruction */
+ exec_list instructions;
+
+ ir_to_mesa_instruction *ir_to_mesa_emit_op0(ir_instruction *ir,
+ enum prog_opcode op);
+
+ ir_to_mesa_instruction *ir_to_mesa_emit_op1(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0);
+
+ ir_to_mesa_instruction *ir_to_mesa_emit_op2(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1);
+
+ ir_to_mesa_instruction *ir_to_mesa_emit_op3(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1,
+ ir_to_mesa_src_reg src2);
+
+ /**
+ * Emit the correct dot-product instruction for the type of arguments
+ *
+ * \sa ir_to_mesa_emit_op2
+ */
+ void ir_to_mesa_emit_dp(ir_instruction *ir,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1,
+ unsigned elements);
+
+ void ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0);
+
+ void ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1);
+
+ void emit_scs(ir_instruction *ir, enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ const ir_to_mesa_src_reg &src);
+
+ GLboolean try_emit_mad(ir_expression *ir,
+ int mul_operand);
+ GLboolean try_emit_sat(ir_expression *ir);
+
+ void emit_swz(ir_expression *ir);
+
+ bool process_move_condition(ir_rvalue *ir);
+
+ void copy_propagate(void);
+
+ void *mem_ctx;
+};
+
+ir_to_mesa_src_reg ir_to_mesa_undef = ir_to_mesa_src_reg(PROGRAM_UNDEFINED, 0, NULL);
+
+ir_to_mesa_dst_reg ir_to_mesa_undef_dst = {
+ PROGRAM_UNDEFINED, 0, SWIZZLE_NOOP, COND_TR, NULL,
+};
+
+ir_to_mesa_dst_reg ir_to_mesa_address_reg = {
+ PROGRAM_ADDRESS, 0, WRITEMASK_X, COND_TR, NULL
+};
+
+static void
+fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3);
+
+static void
+fail_link(struct gl_shader_program *prog, const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ prog->InfoLog = talloc_vasprintf_append(prog->InfoLog, fmt, args);
+ va_end(args);
+
+ prog->LinkStatus = GL_FALSE;
+}
+
+static int
+swizzle_for_size(int size)
+{
+ int size_swizzles[4] = {
+ MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_X),
+ MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Y, SWIZZLE_Y),
+ MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z),
+ MAKE_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W),
+ };
+
+ assert((size >= 1) && (size <= 4));
+ return size_swizzles[size - 1];
+}
+
+ir_to_mesa_instruction *
+ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1,
+ ir_to_mesa_src_reg src2)
+{
+ ir_to_mesa_instruction *inst = new(mem_ctx) ir_to_mesa_instruction();
+ int num_reladdr = 0;
+
+ /* If we have to do relative addressing, we want to load the ARL
+ * reg directly for one of the regs, and preload the other reladdr
+ * sources into temps.
+ */
+ num_reladdr += dst.reladdr != NULL;
+ num_reladdr += src0.reladdr != NULL;
+ num_reladdr += src1.reladdr != NULL;
+ num_reladdr += src2.reladdr != NULL;
+
+ reladdr_to_temp(ir, &src2, &num_reladdr);
+ reladdr_to_temp(ir, &src1, &num_reladdr);
+ reladdr_to_temp(ir, &src0, &num_reladdr);
+
+ if (dst.reladdr) {
+ ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg,
+ *dst.reladdr);
+
+ num_reladdr--;
+ }
+ assert(num_reladdr == 0);
+
+ inst->op = op;
+ inst->dst_reg = dst;
+ inst->src_reg[0] = src0;
+ inst->src_reg[1] = src1;
+ inst->src_reg[2] = src2;
+ inst->ir = ir;
+
+ inst->function = NULL;
+
+ this->instructions.push_tail(inst);
+
+ return inst;
+}
+
+
+ir_to_mesa_instruction *
+ir_to_mesa_visitor::ir_to_mesa_emit_op2(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1)
+{
+ return ir_to_mesa_emit_op3(ir, op, dst, src0, src1, ir_to_mesa_undef);
+}
+
+ir_to_mesa_instruction *
+ir_to_mesa_visitor::ir_to_mesa_emit_op1(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0)
+{
+ assert(dst.writemask != 0);
+ return ir_to_mesa_emit_op3(ir, op, dst,
+ src0, ir_to_mesa_undef, ir_to_mesa_undef);
+}
+
+ir_to_mesa_instruction *
+ir_to_mesa_visitor::ir_to_mesa_emit_op0(ir_instruction *ir,
+ enum prog_opcode op)
+{
+ return ir_to_mesa_emit_op3(ir, op, ir_to_mesa_undef_dst,
+ ir_to_mesa_undef,
+ ir_to_mesa_undef,
+ ir_to_mesa_undef);
+}
+
+void
+ir_to_mesa_visitor::ir_to_mesa_emit_dp(ir_instruction *ir,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0,
+ ir_to_mesa_src_reg src1,
+ unsigned elements)
+{
+ static const gl_inst_opcode dot_opcodes[] = {
+ OPCODE_DP2, OPCODE_DP3, OPCODE_DP4
+ };
+
+ ir_to_mesa_emit_op3(ir, dot_opcodes[elements - 2],
+ dst, src0, src1, ir_to_mesa_undef);
+}
+
+inline ir_to_mesa_dst_reg
+ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg reg)
+{
+ ir_to_mesa_dst_reg dst_reg;
+
+ dst_reg.file = reg.file;
+ dst_reg.index = reg.index;
+ dst_reg.writemask = WRITEMASK_XYZW;
+ dst_reg.cond_mask = COND_TR;
+ dst_reg.reladdr = reg.reladdr;
+
+ return dst_reg;
+}
+
+inline ir_to_mesa_src_reg
+ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg)
+{
+ return ir_to_mesa_src_reg(reg.file, reg.index, NULL);
+}
+
+/**
+ * Emits Mesa scalar opcodes to produce unique answers across channels.
+ *
+ * Some Mesa opcodes are scalar-only, like ARB_fp/vp. The src X
+ * channel determines the result across all channels. So to do a vec4
+ * of this operation, we want to emit a scalar per source channel used
+ * to produce dest channels.
+ */
+void
+ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg orig_src0,
+ ir_to_mesa_src_reg orig_src1)
+{
+ int i, j;
+ int done_mask = ~dst.writemask;
+
+ /* Mesa RCP is a scalar operation splatting results to all channels,
+ * like ARB_fp/vp. So emit as many RCPs as necessary to cover our
+ * dst channels.
+ */
+ for (i = 0; i < 4; i++) {
+ GLuint this_mask = (1 << i);
+ ir_to_mesa_instruction *inst;
+ ir_to_mesa_src_reg src0 = orig_src0;
+ ir_to_mesa_src_reg src1 = orig_src1;
+
+ if (done_mask & this_mask)
+ continue;
+
+ GLuint src0_swiz = GET_SWZ(src0.swizzle, i);
+ GLuint src1_swiz = GET_SWZ(src1.swizzle, i);
+ for (j = i + 1; j < 4; j++) {
+ /* If there is another enabled component in the destination that is
+ * derived from the same inputs, generate its value on this pass as
+ * well.
+ */
+ if (!(done_mask & (1 << j)) &&
+ GET_SWZ(src0.swizzle, j) == src0_swiz &&
+ GET_SWZ(src1.swizzle, j) == src1_swiz) {
+ this_mask |= (1 << j);
+ }
+ }
+ src0.swizzle = MAKE_SWIZZLE4(src0_swiz, src0_swiz,
+ src0_swiz, src0_swiz);
+ src1.swizzle = MAKE_SWIZZLE4(src1_swiz, src1_swiz,
+ src1_swiz, src1_swiz);
+
+ inst = ir_to_mesa_emit_op2(ir, op,
+ dst,
+ src0,
+ src1);
+ inst->dst_reg.writemask = this_mask;
+ done_mask |= this_mask;
+ }
+}
+
+void
+ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir,
+ enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ ir_to_mesa_src_reg src0)
+{
+ ir_to_mesa_src_reg undef = ir_to_mesa_undef;
+
+ undef.swizzle = SWIZZLE_XXXX;
+
+ ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef);
+}
+
+/**
+ * Emit an OPCODE_SCS instruction
+ *
+ * The \c SCS opcode functions a bit differently than the other Mesa (or
+ * ARB_fragment_program) opcodes. Instead of splatting its result across all
+ * four components of the destination, it writes one value to the \c x
+ * component and another value to the \c y component.
+ *
+ * \param ir IR instruction being processed
+ * \param op Either \c OPCODE_SIN or \c OPCODE_COS depending on which
+ * value is desired.
+ * \param dst Destination register
+ * \param src Source register
+ */
+void
+ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op,
+ ir_to_mesa_dst_reg dst,
+ const ir_to_mesa_src_reg &src)
+{
+ /* Vertex programs cannot use the SCS opcode.
+ */
+ if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) {
+ ir_to_mesa_emit_scalar_op1(ir, op, dst, src);
+ return;
+ }
+
+ const unsigned component = (op == OPCODE_SIN) ? 0 : 1;
+ const unsigned scs_mask = (1U << component);
+ int done_mask = ~dst.writemask;
+ ir_to_mesa_src_reg tmp;
+
+ assert(op == OPCODE_SIN || op == OPCODE_COS);
+
+ /* If there are compnents in the destination that differ from the component
+ * that will be written by the SCS instrution, we'll need a temporary.
+ */
+ if (scs_mask != unsigned(dst.writemask)) {
+ tmp = get_temp(glsl_type::vec4_type);
+ }
+
+ for (unsigned i = 0; i < 4; i++) {
+ unsigned this_mask = (1U << i);
+ ir_to_mesa_src_reg src0 = src;
+
+ if ((done_mask & this_mask) != 0)
+ continue;
+
+ /* The source swizzle specified which component of the source generates
+ * sine / cosine for the current component in the destination. The SCS
+ * instruction requires that this value be swizzle to the X component.
+ * Replace the current swizzle with a swizzle that puts the source in
+ * the X component.
+ */
+ unsigned src0_swiz = GET_SWZ(src.swizzle, i);
+
+ src0.swizzle = MAKE_SWIZZLE4(src0_swiz, src0_swiz,
+ src0_swiz, src0_swiz);
+ for (unsigned j = i + 1; j < 4; j++) {
+ /* If there is another enabled component in the destination that is
+ * derived from the same inputs, generate its value on this pass as
+ * well.
+ */
+ if (!(done_mask & (1 << j)) &&
+ GET_SWZ(src0.swizzle, j) == src0_swiz) {
+ this_mask |= (1 << j);
+ }
+ }
+
+ if (this_mask != scs_mask) {
+ ir_to_mesa_instruction *inst;
+ ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp);
+
+ /* Emit the SCS instruction.
+ */
+ inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0);
+ inst->dst_reg.writemask = scs_mask;
+
+ /* Move the result of the SCS instruction to the desired location in
+ * the destination.
+ */
+ tmp.swizzle = MAKE_SWIZZLE4(component, component,
+ component, component);
+ inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp);
+ inst->dst_reg.writemask = this_mask;
+ } else {
+ /* Emit the SCS instruction to write directly to the destination.
+ */
+ ir_to_mesa_instruction *inst =
+ ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0);
+ inst->dst_reg.writemask = scs_mask;
+ }
+
+ done_mask |= this_mask;
+ }
+}
+
+struct ir_to_mesa_src_reg
+ir_to_mesa_visitor::src_reg_for_float(float val)
+{
+ ir_to_mesa_src_reg src_reg(PROGRAM_CONSTANT, -1, NULL);
+
+ src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters,
+ &val, 1, &src_reg.swizzle);
+
+ return src_reg;
+}
+
+static int
+type_size(const struct glsl_type *type)
+{
+ unsigned int i;
+ int size;
+
+ switch (type->base_type) {
+ case GLSL_TYPE_UINT:
+ case GLSL_TYPE_INT:
+ case GLSL_TYPE_FLOAT:
+ case GLSL_TYPE_BOOL:
+ if (type->is_matrix()) {
+ return type->matrix_columns;
+ } else {
+ /* Regardless of size of vector, it gets a vec4. This is bad
+ * packing for things like floats, but otherwise arrays become a
+ * mess. Hopefully a later pass over the code can pack scalars
+ * down if appropriate.
+ */
+ return 1;
+ }
+ case GLSL_TYPE_ARRAY:
+ assert(type->length > 0);
+ return type_size(type->fields.array) * type->length;
+ case GLSL_TYPE_STRUCT:
+ size = 0;
+ for (i = 0; i < type->length; i++) {
+ size += type_size(type->fields.structure[i].type);
+ }
+ return size;
+ case GLSL_TYPE_SAMPLER:
+ /* Samplers take up one slot in UNIFORMS[], but they're baked in
+ * at link time.
+ */
+ return 1;
+ default:
+ assert(0);
+ return 0;
+ }
+}
+
+/**
+ * In the initial pass of codegen, we assign temporary numbers to
+ * intermediate results. (not SSA -- variable assignments will reuse
+ * storage). Actual register allocation for the Mesa VM occurs in a
+ * pass over the Mesa IR later.
+ */
+ir_to_mesa_src_reg
+ir_to_mesa_visitor::get_temp(const glsl_type *type)
+{
+ ir_to_mesa_src_reg src_reg;
+ int swizzle[4];
+ int i;
+
+ src_reg.file = PROGRAM_TEMPORARY;
+ src_reg.index = next_temp;
+ src_reg.reladdr = NULL;
+ next_temp += type_size(type);
+
+ if (type->is_array() || type->is_record()) {
+ src_reg.swizzle = SWIZZLE_NOOP;
+ } else {
+ for (i = 0; i < type->vector_elements; i++)
+ swizzle[i] = i;
+ for (; i < 4; i++)
+ swizzle[i] = type->vector_elements - 1;
+ src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1],
+ swizzle[2], swizzle[3]);
+ }
+ src_reg.negate = 0;
+
+ return src_reg;
+}
+
+variable_storage *
+ir_to_mesa_visitor::find_variable_storage(ir_variable *var)
+{
+
+ variable_storage *entry;
+
+ foreach_iter(exec_list_iterator, iter, this->variables) {
+ entry = (variable_storage *)iter.get();
+
+ if (entry->var == var)
+ return entry;
+ }
+
+ return NULL;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_variable *ir)
+{
+ if (strcmp(ir->name, "gl_FragCoord") == 0) {
+ struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog;
+
+ fp->OriginUpperLeft = ir->origin_upper_left;
+ fp->PixelCenterInteger = ir->pixel_center_integer;
+ }
+
+ if (ir->mode == ir_var_uniform && strncmp(ir->name, "gl_", 3) == 0) {
+ unsigned int i;
+ const struct gl_builtin_uniform_desc *statevar;
+
+ for (i = 0; _mesa_builtin_uniform_desc[i].name; i++) {
+ if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0)
+ break;
+ }
+
+ if (!_mesa_builtin_uniform_desc[i].name) {
+ fail_link(this->shader_program,
+ "Failed to find builtin uniform `%s'\n", ir->name);
+ return;
+ }
+
+ statevar = &_mesa_builtin_uniform_desc[i];
+
+ int array_count;
+ if (ir->type->is_array()) {
+ array_count = ir->type->length;
+ } else {
+ array_count = 1;
+ }
+
+ /* Check if this statevar's setup in the STATE file exactly
+ * matches how we'll want to reference it as a
+ * struct/array/whatever. If not, then we need to move it into
+ * temporary storage and hope that it'll get copy-propagated
+ * out.
+ */
+ for (i = 0; i < statevar->num_elements; i++) {
+ if (statevar->elements[i].swizzle != SWIZZLE_XYZW) {
+ break;
+ }
+ }
+
+ struct variable_storage *storage;
+ ir_to_mesa_dst_reg dst;
+ if (i == statevar->num_elements) {
+ /* We'll set the index later. */
+ storage = new(mem_ctx) variable_storage(ir, PROGRAM_STATE_VAR, -1);
+ this->variables.push_tail(storage);
+
+ dst = ir_to_mesa_undef_dst;
+ } else {
+ storage = new(mem_ctx) variable_storage(ir, PROGRAM_TEMPORARY,
+ this->next_temp);
+ this->variables.push_tail(storage);
+ this->next_temp += type_size(ir->type);
+
+ dst = ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg(PROGRAM_TEMPORARY,
+ storage->index,
+ NULL));
+ }
+
+
+ for (int a = 0; a < array_count; a++) {
+ for (unsigned int i = 0; i < statevar->num_elements; i++) {
+ struct gl_builtin_uniform_element *element = &statevar->elements[i];
+ int tokens[STATE_LENGTH];
+
+ memcpy(tokens, element->tokens, sizeof(element->tokens));
+ if (ir->type->is_array()) {
+ tokens[1] = a;
+ }
+
+ int index = _mesa_add_state_reference(this->prog->Parameters,
+ (gl_state_index *)tokens);
+
+ if (storage->file == PROGRAM_STATE_VAR) {
+ if (storage->index == -1) {
+ storage->index = index;
+ } else {
+ assert(index ==
+ (int)(storage->index + a * statevar->num_elements + i));
+ }
+ } else {
+ ir_to_mesa_src_reg src(PROGRAM_STATE_VAR, index, NULL);
+ src.swizzle = element->swizzle;
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, dst, src);
+ /* even a float takes up a whole vec4 reg in a struct/array. */
+ dst.index++;
+ }
+ }
+ }
+ if (storage->file == PROGRAM_TEMPORARY &&
+ dst.index != storage->index + type_size(ir->type)) {
+ fail_link(this->shader_program,
+ "failed to load builtin uniform `%s' (%d/%d regs loaded)\n",
+ ir->name, dst.index - storage->index,
+ type_size(ir->type));
+ }
+ }
+}
+
+void
+ir_to_mesa_visitor::visit(ir_loop *ir)
+{
+ ir_dereference_variable *counter = NULL;
+
+ if (ir->counter != NULL)
+ counter = new(ir) ir_dereference_variable(ir->counter);
+
+ if (ir->from != NULL) {
+ assert(ir->counter != NULL);
+
+ ir_assignment *a = new(ir) ir_assignment(counter, ir->from, NULL);
+
+ a->accept(this);
+ delete a;
+ }
+
+ ir_to_mesa_emit_op0(NULL, OPCODE_BGNLOOP);
+
+ if (ir->to) {
+ ir_expression *e =
+ new(ir) ir_expression(ir->cmp, glsl_type::bool_type,
+ counter, ir->to);
+ ir_if *if_stmt = new(ir) ir_if(e);
+
+ ir_loop_jump *brk = new(ir) ir_loop_jump(ir_loop_jump::jump_break);
+
+ if_stmt->then_instructions.push_tail(brk);
+
+ if_stmt->accept(this);
+
+ delete if_stmt;
+ delete e;
+ delete brk;
+ }
+
+ visit_exec_list(&ir->body_instructions, this);
+
+ if (ir->increment) {
+ ir_expression *e =
+ new(ir) ir_expression(ir_binop_add, counter->type,
+ counter, ir->increment);
+
+ ir_assignment *a = new(ir) ir_assignment(counter, e, NULL);
+
+ a->accept(this);
+ delete a;
+ delete e;
+ }
+
+ ir_to_mesa_emit_op0(NULL, OPCODE_ENDLOOP);
+}
+
+void
+ir_to_mesa_visitor::visit(ir_loop_jump *ir)
+{
+ switch (ir->mode) {
+ case ir_loop_jump::jump_break:
+ ir_to_mesa_emit_op0(NULL, OPCODE_BRK);
+ break;
+ case ir_loop_jump::jump_continue:
+ ir_to_mesa_emit_op0(NULL, OPCODE_CONT);
+ break;
+ }
+}
+
+
+void
+ir_to_mesa_visitor::visit(ir_function_signature *ir)
+{
+ assert(0);
+ (void)ir;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_function *ir)
+{
+ /* Ignore function bodies other than main() -- we shouldn't see calls to
+ * them since they should all be inlined before we get to ir_to_mesa.
+ */
+ if (strcmp(ir->name, "main") == 0) {
+ const ir_function_signature *sig;
+ exec_list empty;
+
+ sig = ir->matching_signature(&empty);
+
+ assert(sig);
+
+ foreach_iter(exec_list_iterator, iter, sig->body) {
+ ir_instruction *ir = (ir_instruction *)iter.get();
+
+ ir->accept(this);
+ }
+ }
+}
+
+GLboolean
+ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
+{
+ int nonmul_operand = 1 - mul_operand;
+ ir_to_mesa_src_reg a, b, c;
+
+ ir_expression *expr = ir->operands[mul_operand]->as_expression();
+ if (!expr || expr->operation != ir_binop_mul)
+ return false;
+
+ expr->operands[0]->accept(this);
+ a = this->result;
+ expr->operands[1]->accept(this);
+ b = this->result;
+ ir->operands[nonmul_operand]->accept(this);
+ c = this->result;
+
+ this->result = get_temp(ir->type);
+ ir_to_mesa_emit_op3(ir, OPCODE_MAD,
+ ir_to_mesa_dst_reg_from_src(this->result), a, b, c);
+
+ return true;
+}
+
+GLboolean
+ir_to_mesa_visitor::try_emit_sat(ir_expression *ir)
+{
+ /* Saturates were only introduced to vertex programs in
+ * NV_vertex_program3, so don't give them to drivers in the VP.
+ */
+ if (this->prog->Target == GL_VERTEX_PROGRAM_ARB)
+ return false;
+
+ ir_rvalue *sat_src = ir->as_rvalue_to_saturate();
+ if (!sat_src)
+ return false;
+
+ sat_src->accept(this);
+ ir_to_mesa_src_reg src = this->result;
+
+ this->result = get_temp(ir->type);
+ ir_to_mesa_instruction *inst;
+ inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV,
+ ir_to_mesa_dst_reg_from_src(this->result),
+ src);
+ inst->saturate = true;
+
+ return true;
+}
+
+void
+ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir,
+ ir_to_mesa_src_reg *reg, int *num_reladdr)
+{
+ if (!reg->reladdr)
+ return;
+
+ ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg, *reg->reladdr);
+
+ if (*num_reladdr != 1) {
+ ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
+
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV,
+ ir_to_mesa_dst_reg_from_src(temp), *reg);
+ *reg = temp;
+ }
+
+ (*num_reladdr)--;
+}
+
+void
+ir_to_mesa_visitor::emit_swz(ir_expression *ir)
+{
+ /* Assume that the vector operator is in a form compatible with OPCODE_SWZ.
+ * This means that each of the operands is either an immediate value of -1,
+ * 0, or 1, or is a component from one source register (possibly with
+ * negation).
+ */
+ uint8_t components[4] = { 0 };
+ bool negate[4] = { false };
+ ir_variable *var = NULL;
+
+ for (unsigned i = 0; i < ir->type->vector_elements; i++) {
+ ir_rvalue *op = ir->operands[i];
+
+ assert(op->type->is_scalar());
+
+ while (op != NULL) {
+ switch (op->ir_type) {
+ case ir_type_constant: {
+
+ assert(op->type->is_scalar());
+
+ const ir_constant *const c = op->as_constant();
+ if (c->is_one()) {
+ components[i] = SWIZZLE_ONE;
+ } else if (c->is_zero()) {
+ components[i] = SWIZZLE_ZERO;
+ } else if (c->is_negative_one()) {
+ components[i] = SWIZZLE_ONE;
+ negate[i] = true;
+ } else {
+ assert(!"SWZ constant must be 0.0 or 1.0.");
+ }
+
+ op = NULL;
+ break;
+ }
+
+ case ir_type_dereference_variable: {
+ ir_dereference_variable *const deref =
+ (ir_dereference_variable *) op;
+
+ assert((var == NULL) || (deref->var == var));
+ components[i] = SWIZZLE_X;
+ var = deref->var;
+ op = NULL;
+ break;
+ }
+
+ case ir_type_expression: {
+ ir_expression *const expr = (ir_expression *) op;
+
+ assert(expr->operation == ir_unop_neg);
+ negate[i] = true;
+
+ op = expr->operands[0];
+ break;
+ }
+
+ case ir_type_swizzle: {
+ ir_swizzle *const swiz = (ir_swizzle *) op;
+
+ components[i] = swiz->mask.x;
+ op = swiz->val;
+ break;
+ }
+
+ default:
+ assert(!"Should not get here.");
+ return;
+ }
+ }
+ }
+
+ assert(var != NULL);
+
+ ir_dereference_variable *const deref =
+ new(mem_ctx) ir_dereference_variable(var);
+
+ this->result.file = PROGRAM_UNDEFINED;
+ deref->accept(this);
+ if (this->result.file == PROGRAM_UNDEFINED) {
+ ir_print_visitor v;
+ printf("Failed to get tree for expression operand:\n");
+ deref->accept(&v);
+ exit(1);
+ }
+
+ ir_to_mesa_src_reg src;
+
+ src = this->result;
+ src.swizzle = MAKE_SWIZZLE4(components[0],
+ components[1],
+ components[2],
+ components[3]);
+ src.negate = ((unsigned(negate[0]) << 0)
+ | (unsigned(negate[1]) << 1)
+ | (unsigned(negate[2]) << 2)
+ | (unsigned(negate[3]) << 3));
+
+ /* Storage for our result. Ideally for an assignment we'd be using the
+ * actual storage for the result here, instead.
+ */
+ const ir_to_mesa_src_reg result_src = get_temp(ir->type);
+ ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src);
+
+ /* Limit writes to the channels that will be used by result_src later.
+ * This does limit this temp's use as a temporary for multi-instruction
+ * sequences.
+ */
+ result_dst.writemask = (1 << ir->type->vector_elements) - 1;
+
+ ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src);
+ this->result = result_src;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_expression *ir)
+{
+ unsigned int operand;
+ struct ir_to_mesa_src_reg op[Elements(ir->operands)];
+ struct ir_to_mesa_src_reg result_src;
+ struct ir_to_mesa_dst_reg result_dst;
+
+ /* Quick peephole: Emit OPCODE_MAD(a, b, c) instead of ADD(MUL(a, b), c)
+ */
+ if (ir->operation == ir_binop_add) {
+ if (try_emit_mad(ir, 1))
+ return;
+ if (try_emit_mad(ir, 0))
+ return;
+ }
+ if (try_emit_sat(ir))
+ return;
+
+ if (ir->operation == ir_quadop_vector) {
+ this->emit_swz(ir);
+ return;
+ }
+
+ for (operand = 0; operand < ir->get_num_operands(); operand++) {
+ this->result.file = PROGRAM_UNDEFINED;
+ ir->operands[operand]->accept(this);
+ if (this->result.file == PROGRAM_UNDEFINED) {
+ ir_print_visitor v;
+ printf("Failed to get tree for expression operand:\n");
+ ir->operands[operand]->accept(&v);
+ exit(1);
+ }
+ op[operand] = this->result;
+
+ /* Matrix expression operands should have been broken down to vector
+ * operations already.
+ */
+ assert(!ir->operands[operand]->type->is_matrix());
+ }
+
+ int vector_elements = ir->operands[0]->type->vector_elements;
+ if (ir->operands[1]) {
+ vector_elements = MAX2(vector_elements,
+ ir->operands[1]->type->vector_elements);
+ }
+
+ this->result.file = PROGRAM_UNDEFINED;
+
+ /* Storage for our result. Ideally for an assignment we'd be using
+ * the actual storage for the result here, instead.
+ */
+ result_src = get_temp(ir->type);
+ /* convenience for the emit functions below. */
+ result_dst = ir_to_mesa_dst_reg_from_src(result_src);
+ /* Limit writes to the channels that will be used by result_src later.
+ * This does limit this temp's use as a temporary for multi-instruction
+ * sequences.
+ */
+ result_dst.writemask = (1 << ir->type->vector_elements) - 1;
+
+ switch (ir->operation) {
+ case ir_unop_logic_not:
+ ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst,
+ op[0], src_reg_for_float(0.0));
+ break;
+ case ir_unop_neg:
+ op[0].negate = ~op[0].negate;
+ result_src = op[0];
+ break;
+ case ir_unop_abs:
+ ir_to_mesa_emit_op1(ir, OPCODE_ABS, result_dst, op[0]);
+ break;
+ case ir_unop_sign:
+ ir_to_mesa_emit_op1(ir, OPCODE_SSG, result_dst, op[0]);
+ break;
+ case ir_unop_rcp:
+ ir_to_mesa_emit_scalar_op1(ir, OPCODE_RCP, result_dst, op[0]);
+ break;
+
+ case ir_unop_exp2:
+ ir_to_mesa_emit_scalar_op1(ir, OPCODE_EX2, result_dst, op[0]);
+ break;
+ case ir_unop_exp:
+ case ir_unop_log:
+ assert(!"not reached: should be handled by ir_explog_to_explog2");
+ break;
+ case ir_unop_log2:
+ ir_to_mesa_emit_scalar_op1(ir, OPCODE_LG2, result_dst, op[0]);
+ break;
+ case ir_unop_sin:
+ ir_to_mesa_emit_scalar_op1(ir, OPCODE_SIN, result_dst, op[0]);
+ break;
+ case ir_unop_cos:
+ ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]);
+ break;
+ case ir_unop_sin_reduced:
+ emit_scs(ir, OPCODE_SIN, result_dst, op[0]);
+ break;
+ case ir_unop_cos_reduced:
+ emit_scs(ir, OPCODE_COS, result_dst, op[0]);
+ break;
+
+ case ir_unop_dFdx:
+ ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]);
+ break;
+ case ir_unop_dFdy:
+ ir_to_mesa_emit_op1(ir, OPCODE_DDY, result_dst, op[0]);
+ break;
+
+ case ir_unop_noise: {
+ const enum prog_opcode opcode =
+ prog_opcode(OPCODE_NOISE1
+ + (ir->operands[0]->type->vector_elements) - 1);
+ assert((opcode >= OPCODE_NOISE1) && (opcode <= OPCODE_NOISE4));
+
+ ir_to_mesa_emit_op1(ir, opcode, result_dst, op[0]);
+ break;
+ }
+
+ case ir_binop_add:
+ ir_to_mesa_emit_op2(ir, OPCODE_ADD, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_sub:
+ ir_to_mesa_emit_op2(ir, OPCODE_SUB, result_dst, op[0], op[1]);
+ break;
+
+ case ir_binop_mul:
+ ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_div:
+ assert(!"not reached: should be handled by ir_div_to_mul_rcp");
+ case ir_binop_mod:
+ assert(!"ir_binop_mod should have been converted to b * fract(a/b)");
+ break;
+
+ case ir_binop_less:
+ ir_to_mesa_emit_op2(ir, OPCODE_SLT, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_greater:
+ ir_to_mesa_emit_op2(ir, OPCODE_SGT, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_lequal:
+ ir_to_mesa_emit_op2(ir, OPCODE_SLE, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_gequal:
+ ir_to_mesa_emit_op2(ir, OPCODE_SGE, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_equal:
+ ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_nequal:
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_all_equal:
+ /* "==" operator producing a scalar boolean. */
+ if (ir->operands[0]->type->is_vector() ||
+ ir->operands[1]->type->is_vector()) {
+ ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE,
+ ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
+ ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
+ ir_to_mesa_emit_op2(ir, OPCODE_SEQ,
+ result_dst, result_src, src_reg_for_float(0.0));
+ } else {
+ ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
+ }
+ break;
+ case ir_binop_any_nequal:
+ /* "!=" operator producing a scalar boolean. */
+ if (ir->operands[0]->type->is_vector() ||
+ ir->operands[1]->type->is_vector()) {
+ ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type);
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE,
+ ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]);
+ ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements);
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE,
+ result_dst, result_src, src_reg_for_float(0.0));
+ } else {
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
+ }
+ break;
+
+ case ir_unop_any:
+ assert(ir->operands[0]->type->is_vector());
+ ir_to_mesa_emit_dp(ir, result_dst, op[0], op[0],
+ ir->operands[0]->type->vector_elements);
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE,
+ result_dst, result_src, src_reg_for_float(0.0));
+ break;
+
+ case ir_binop_logic_xor:
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]);
+ break;
+
+ case ir_binop_logic_or:
+ /* This could be a saturated add and skip the SNE. */
+ ir_to_mesa_emit_op2(ir, OPCODE_ADD,
+ result_dst,
+ op[0], op[1]);
+
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE,
+ result_dst,
+ result_src, src_reg_for_float(0.0));
+ break;
+
+ case ir_binop_logic_and:
+ /* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */
+ ir_to_mesa_emit_op2(ir, OPCODE_MUL,
+ result_dst,
+ op[0], op[1]);
+ break;
+
+ case ir_binop_dot:
+ assert(ir->operands[0]->type->is_vector());
+ assert(ir->operands[0]->type == ir->operands[1]->type);
+ ir_to_mesa_emit_dp(ir, result_dst, op[0], op[1],
+ ir->operands[0]->type->vector_elements);
+ break;
+
+ case ir_unop_sqrt:
+ /* sqrt(x) = x * rsq(x). */
+ ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]);
+ ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, result_src, op[0]);
+ /* For incoming channels <= 0, set the result to 0. */
+ op[0].negate = ~op[0].negate;
+ ir_to_mesa_emit_op3(ir, OPCODE_CMP, result_dst,
+ op[0], result_src, src_reg_for_float(0.0));
+ break;
+ case ir_unop_rsq:
+ ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]);
+ break;
+ case ir_unop_i2f:
+ case ir_unop_b2f:
+ case ir_unop_b2i:
+ /* Mesa IR lacks types, ints are stored as truncated floats. */
+ result_src = op[0];
+ break;
+ case ir_unop_f2i:
+ ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]);
+ break;
+ case ir_unop_f2b:
+ case ir_unop_i2b:
+ ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst,
+ op[0], src_reg_for_float(0.0));
+ break;
+ case ir_unop_trunc:
+ ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]);
+ break;
+ case ir_unop_ceil:
+ op[0].negate = ~op[0].negate;
+ ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]);
+ result_src.negate = ~result_src.negate;
+ break;
+ case ir_unop_floor:
+ ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]);
+ break;
+ case ir_unop_fract:
+ ir_to_mesa_emit_op1(ir, OPCODE_FRC, result_dst, op[0]);
+ break;
+
+ case ir_binop_min:
+ ir_to_mesa_emit_op2(ir, OPCODE_MIN, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_max:
+ ir_to_mesa_emit_op2(ir, OPCODE_MAX, result_dst, op[0], op[1]);
+ break;
+ case ir_binop_pow:
+ ir_to_mesa_emit_scalar_op2(ir, OPCODE_POW, result_dst, op[0], op[1]);
+ break;
+
+ case ir_unop_bit_not:
+ case ir_unop_u2f:
+ case ir_binop_lshift:
+ case ir_binop_rshift:
+ case ir_binop_bit_and:
+ case ir_binop_bit_xor:
+ case ir_binop_bit_or:
+ case ir_unop_round_even:
+ assert(!"GLSL 1.30 features unsupported");
+ break;
+
+ case ir_quadop_vector:
+ /* This operation should have already been handled.
+ */
+ assert(!"Should not get here.");
+ break;
+ }
+
+ this->result = result_src;
+}
+
+
+void
+ir_to_mesa_visitor::visit(ir_swizzle *ir)
+{
+ ir_to_mesa_src_reg src_reg;
+ int i;
+ int swizzle[4];
+
+ /* Note that this is only swizzles in expressions, not those on the left
+ * hand side of an assignment, which do write masking. See ir_assignment
+ * for that.
+ */
+
+ ir->val->accept(this);
+ src_reg = this->result;
+ assert(src_reg.file != PROGRAM_UNDEFINED);
+
+ for (i = 0; i < 4; i++) {
+ if (i < ir->type->vector_elements) {
+ switch (i) {
+ case 0:
+ swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.x);
+ break;
+ case 1:
+ swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.y);
+ break;
+ case 2:
+ swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.z);
+ break;
+ case 3:
+ swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.w);
+ break;
+ }
+ } else {
+ /* If the type is smaller than a vec4, replicate the last
+ * channel out.
+ */
+ swizzle[i] = swizzle[ir->type->vector_elements - 1];
+ }
+ }
+
+ src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0],
+ swizzle[1],
+ swizzle[2],
+ swizzle[3]);
+
+ this->result = src_reg;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_dereference_variable *ir)
+{
+ variable_storage *entry = find_variable_storage(ir->var);
+
+ if (!entry) {
+ switch (ir->var->mode) {
+ case ir_var_uniform:
+ entry = new(mem_ctx) variable_storage(ir->var, PROGRAM_UNIFORM,
+ ir->var->location);
+ this->variables.push_tail(entry);
+ break;
+ case ir_var_in:
+ case ir_var_out:
+ case ir_var_inout:
+ case ir_var_system_value:
+ /* The linker assigns locations for varyings and attributes,
+ * including deprecated builtins (like gl_Color), user-assign
+ * generic attributes (glBindVertexLocation), and
+ * user-defined varyings.
+ *
+ * FINISHME: We would hit this path for function arguments. Fix!
+ */
+ assert(ir->var->location != -1);
+ if (ir->var->mode == ir_var_in ||
+ ir->var->mode == ir_var_inout) {
+ entry = new(mem_ctx) variable_storage(ir->var,
+ PROGRAM_INPUT,
+ ir->var->location);
+
+ if (this->prog->Target == GL_VERTEX_PROGRAM_ARB &&
+ ir->var->location >= VERT_ATTRIB_GENERIC0) {
+ _mesa_add_attribute(prog->Attributes,
+ ir->var->name,
+ _mesa_sizeof_glsl_type(ir->var->type->gl_type),
+ ir->var->type->gl_type,
+ ir->var->location - VERT_ATTRIB_GENERIC0);
+ }
+ } else if (ir->var->mode == ir_var_system_value) {
+ entry = new(mem_ctx) variable_storage(ir->var,
+ PROGRAM_SYSTEM_VALUE,
+ ir->var->location);
+ } else {
+ entry = new(mem_ctx) variable_storage(ir->var,
+ PROGRAM_OUTPUT,
+ ir->var->location);
+ }
+
+ break;
+ case ir_var_auto:
+ case ir_var_temporary:
+ entry = new(mem_ctx) variable_storage(ir->var, PROGRAM_TEMPORARY,
+ this->next_temp);
+ this->variables.push_tail(entry);
+
+ next_temp += type_size(ir->var->type);
+ break;
+ }
+
+ if (!entry) {
+ printf("Failed to make storage for %s\n", ir->var->name);
+ exit(1);
+ }
+ }
+
+ this->result = ir_to_mesa_src_reg(entry->file, entry->index, ir->var->type);
+}
+
+void
+ir_to_mesa_visitor::visit(ir_dereference_array *ir)
+{
+ ir_constant *index;
+ ir_to_mesa_src_reg src_reg;
+ int element_size = type_size(ir->type);
+
+ index = ir->array_index->constant_expression_value();
+
+ ir->array->accept(this);
+ src_reg = this->result;
+
+ if (index) {
+ src_reg.index += index->value.i[0] * element_size;
+ } else {
+ ir_to_mesa_src_reg array_base = this->result;
+ /* Variable index array dereference. It eats the "vec4" of the
+ * base of the array and an index that offsets the Mesa register
+ * index.
+ */
+ ir->array_index->accept(this);
+
+ ir_to_mesa_src_reg index_reg;
+
+ if (element_size == 1) {
+ index_reg = this->result;
+ } else {
+ index_reg = get_temp(glsl_type::float_type);
+
+ ir_to_mesa_emit_op2(ir, OPCODE_MUL,
+ ir_to_mesa_dst_reg_from_src(index_reg),
+ this->result, src_reg_for_float(element_size));
+ }
+
+ src_reg.reladdr = talloc(mem_ctx, ir_to_mesa_src_reg);
+ memcpy(src_reg.reladdr, &index_reg, sizeof(index_reg));
+ }
+
+ /* If the type is smaller than a vec4, replicate the last channel out. */
+ if (ir->type->is_scalar() || ir->type->is_vector())
+ src_reg.swizzle = swizzle_for_size(ir->type->vector_elements);
+ else
+ src_reg.swizzle = SWIZZLE_NOOP;
+
+ this->result = src_reg;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_dereference_record *ir)
+{
+ unsigned int i;
+ const glsl_type *struct_type = ir->record->type;
+ int offset = 0;
+
+ ir->record->accept(this);
+
+ for (i = 0; i < struct_type->length; i++) {
+ if (strcmp(struct_type->fields.structure[i].name, ir->field) == 0)
+ break;
+ offset += type_size(struct_type->fields.structure[i].type);
+ }
+
+ /* If the type is smaller than a vec4, replicate the last channel out. */
+ if (ir->type->is_scalar() || ir->type->is_vector())
+ this->result.swizzle = swizzle_for_size(ir->type->vector_elements);
+ else
+ this->result.swizzle = SWIZZLE_NOOP;
+
+ this->result.index += offset;
+}
+
+/**
+ * We want to be careful in assignment setup to hit the actual storage
+ * instead of potentially using a temporary like we might with the
+ * ir_dereference handler.
+ */
+static struct ir_to_mesa_dst_reg
+get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v)
+{
+ /* The LHS must be a dereference. If the LHS is a variable indexed array
+ * access of a vector, it must be separated into a series conditional moves
+ * before reaching this point (see ir_vec_index_to_cond_assign).
+ */
+ assert(ir->as_dereference());
+ ir_dereference_array *deref_array = ir->as_dereference_array();
+ if (deref_array) {
+ assert(!deref_array->array->type->is_vector());
+ }
+
+ /* Use the rvalue deref handler for the most part. We'll ignore
+ * swizzles in it and write swizzles using writemask, though.
+ */
+ ir->accept(v);
+ return ir_to_mesa_dst_reg_from_src(v->result);
+}
+
+/**
+ * Process the condition of a conditional assignment
+ *
+ * Examines the condition of a conditional assignment to generate the optimal
+ * first operand of a \c CMP instruction. If the condition is a relational
+ * operator with 0 (e.g., \c ir_binop_less), the value being compared will be
+ * used as the source for the \c CMP instruction. Otherwise the comparison
+ * is processed to a boolean result, and the boolean result is used as the
+ * operand to the CMP instruction.
+ */
+bool
+ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir)
+{
+ ir_rvalue *src_ir = ir;
+ bool negate = true;
+ bool switch_order = false;
+
+ ir_expression *const expr = ir->as_expression();
+ if ((expr != NULL) && (expr->get_num_operands() == 2)) {
+ bool zero_on_left = false;
+
+ if (expr->operands[0]->is_zero()) {
+ src_ir = expr->operands[1];
+ zero_on_left = true;
+ } else if (expr->operands[1]->is_zero()) {
+ src_ir = expr->operands[0];
+ zero_on_left = false;
+ }
+
+ /* a is - 0 + - 0 +
+ * (a < 0) T F F ( a < 0) T F F
+ * (0 < a) F F T (-a < 0) F F T
+ * (a <= 0) T T F (-a < 0) F F T (swap order of other operands)
+ * (0 <= a) F T T ( a < 0) T F F (swap order of other operands)
+ * (a > 0) F F T (-a < 0) F F T
+ * (0 > a) T F F ( a < 0) T F F
+ * (a >= 0) F T T ( a < 0) T F F (swap order of other operands)
+ * (0 >= a) T T F (-a < 0) F F T (swap order of other operands)
+ *
+ * Note that exchanging the order of 0 and 'a' in the comparison simply
+ * means that the value of 'a' should be negated.
+ */
+ if (src_ir != ir) {
+ switch (expr->operation) {
+ case ir_binop_less:
+ switch_order = false;
+ negate = zero_on_left;
+ break;
+
+ case ir_binop_greater:
+ switch_order = false;
+ negate = !zero_on_left;
+ break;
+
+ case ir_binop_lequal:
+ switch_order = true;
+ negate = !zero_on_left;
+ break;
+
+ case ir_binop_gequal:
+ switch_order = true;
+ negate = zero_on_left;
+ break;
+
+ default:
+ /* This isn't the right kind of comparison afterall, so make sure
+ * the whole condition is visited.
+ */
+ src_ir = ir;
+ break;
+ }
+ }
+ }
+
+ src_ir->accept(this);
+
+ /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves, and the
+ * condition we produced is 0.0 or 1.0. By flipping the sign, we can
+ * choose which value OPCODE_CMP produces without an extra instruction
+ * computing the condition.
+ */
+ if (negate)
+ this->result.negate = ~this->result.negate;
+
+ return switch_order;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_assignment *ir)
+{
+ struct ir_to_mesa_dst_reg l;
+ struct ir_to_mesa_src_reg r;
+ int i;
+
+ ir->rhs->accept(this);
+ r = this->result;
+
+ l = get_assignment_lhs(ir->lhs, this);
+
+ /* FINISHME: This should really set to the correct maximal writemask for each
+ * FINISHME: component written (in the loops below). This case can only
+ * FINISHME: occur for matrices, arrays, and structures.
+ */
+ if (ir->write_mask == 0) {
+ assert(!ir->lhs->type->is_scalar() && !ir->lhs->type->is_vector());
+ l.writemask = WRITEMASK_XYZW;
+ } else if (ir->lhs->type->is_scalar()) {
+ /* FINISHME: This hack makes writing to gl_FragDepth, which lives in the
+ * FINISHME: W component of fragment shader output zero, work correctly.
+ */
+ l.writemask = WRITEMASK_XYZW;
+ } else {
+ int swizzles[4];
+ int first_enabled_chan = 0;
+ int rhs_chan = 0;
+
+ assert(ir->lhs->type->is_vector());
+ l.writemask = ir->write_mask;
+
+ for (int i = 0; i < 4; i++) {
+ if (l.writemask & (1 << i)) {
+ first_enabled_chan = GET_SWZ(r.swizzle, i);
+ break;
+ }
+ }
+
+ /* Swizzle a small RHS vector into the channels being written.
+ *
+ * glsl ir treats write_mask as dictating how many channels are
+ * present on the RHS while Mesa IR treats write_mask as just
+ * showing which channels of the vec4 RHS get written.
+ */
+ for (int i = 0; i < 4; i++) {
+ if (l.writemask & (1 << i))
+ swizzles[i] = GET_SWZ(r.swizzle, rhs_chan++);
+ else
+ swizzles[i] = first_enabled_chan;
+ }
+ r.swizzle = MAKE_SWIZZLE4(swizzles[0], swizzles[1],
+ swizzles[2], swizzles[3]);
+ }
+
+ assert(l.file != PROGRAM_UNDEFINED);
+ assert(r.file != PROGRAM_UNDEFINED);
+
+ if (ir->condition) {
+ const bool switch_order = this->process_move_condition(ir->condition);
+ ir_to_mesa_src_reg condition = this->result;
+
+ for (i = 0; i < type_size(ir->lhs->type); i++) {
+ if (switch_order) {
+ ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
+ condition, ir_to_mesa_src_reg_from_dst(l), r);
+ } else {
+ ir_to_mesa_emit_op3(ir, OPCODE_CMP, l,
+ condition, r, ir_to_mesa_src_reg_from_dst(l));
+ }
+
+ l.index++;
+ r.index++;
+ }
+ } else {
+ for (i = 0; i < type_size(ir->lhs->type); i++) {
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ l.index++;
+ r.index++;
+ }
+ }
+}
+
+
+void
+ir_to_mesa_visitor::visit(ir_constant *ir)
+{
+ ir_to_mesa_src_reg src_reg;
+ GLfloat stack_vals[4] = { 0 };
+ GLfloat *values = stack_vals;
+ unsigned int i;
+
+ /* Unfortunately, 4 floats is all we can get into
+ * _mesa_add_unnamed_constant. So, make a temp to store an
+ * aggregate constant and move each constant value into it. If we
+ * get lucky, copy propagation will eliminate the extra moves.
+ */
+
+ if (ir->type->base_type == GLSL_TYPE_STRUCT) {
+ ir_to_mesa_src_reg temp_base = get_temp(ir->type);
+ ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base);
+
+ foreach_iter(exec_list_iterator, iter, ir->components) {
+ ir_constant *field_value = (ir_constant *)iter.get();
+ int size = type_size(field_value->type);
+
+ assert(size > 0);
+
+ field_value->accept(this);
+ src_reg = this->result;
+
+ for (i = 0; i < (unsigned int)size; i++) {
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg);
+
+ src_reg.index++;
+ temp.index++;
+ }
+ }
+ this->result = temp_base;
+ return;
+ }
+
+ if (ir->type->is_array()) {
+ ir_to_mesa_src_reg temp_base = get_temp(ir->type);
+ ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base);
+ int size = type_size(ir->type->fields.array);
+
+ assert(size > 0);
+
+ for (i = 0; i < ir->type->length; i++) {
+ ir->array_elements[i]->accept(this);
+ src_reg = this->result;
+ for (int j = 0; j < size; j++) {
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg);
+
+ src_reg.index++;
+ temp.index++;
+ }
+ }
+ this->result = temp_base;
+ return;
+ }
+
+ if (ir->type->is_matrix()) {
+ ir_to_mesa_src_reg mat = get_temp(ir->type);
+ ir_to_mesa_dst_reg mat_column = ir_to_mesa_dst_reg_from_src(mat);
+
+ for (i = 0; i < ir->type->matrix_columns; i++) {
+ assert(ir->type->base_type == GLSL_TYPE_FLOAT);
+ values = &ir->value.f[i * ir->type->vector_elements];
+
+ src_reg = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, NULL);
+ src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters,
+ values,
+ ir->type->vector_elements,
+ &src_reg.swizzle);
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, mat_column, src_reg);
+
+ mat_column.index++;
+ }
+
+ this->result = mat;
+ return;
+ }
+
+ src_reg.file = PROGRAM_CONSTANT;
+ switch (ir->type->base_type) {
+ case GLSL_TYPE_FLOAT:
+ values = &ir->value.f[0];
+ break;
+ case GLSL_TYPE_UINT:
+ for (i = 0; i < ir->type->vector_elements; i++) {
+ values[i] = ir->value.u[i];
+ }
+ break;
+ case GLSL_TYPE_INT:
+ for (i = 0; i < ir->type->vector_elements; i++) {
+ values[i] = ir->value.i[i];
+ }
+ break;
+ case GLSL_TYPE_BOOL:
+ for (i = 0; i < ir->type->vector_elements; i++) {
+ values[i] = ir->value.b[i];
+ }
+ break;
+ default:
+ assert(!"Non-float/uint/int/bool constant");
+ }
+
+ this->result = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, ir->type);
+ this->result.index = _mesa_add_unnamed_constant(this->prog->Parameters,
+ values,
+ ir->type->vector_elements,
+ &this->result.swizzle);
+}
+
+function_entry *
+ir_to_mesa_visitor::get_function_signature(ir_function_signature *sig)
+{
+ function_entry *entry;
+
+ foreach_iter(exec_list_iterator, iter, this->function_signatures) {
+ entry = (function_entry *)iter.get();
+
+ if (entry->sig == sig)
+ return entry;
+ }
+
+ entry = talloc(mem_ctx, function_entry);
+ entry->sig = sig;
+ entry->sig_id = this->next_signature_id++;
+ entry->bgn_inst = NULL;
+
+ /* Allocate storage for all the parameters. */
+ foreach_iter(exec_list_iterator, iter, sig->parameters) {
+ ir_variable *param = (ir_variable *)iter.get();
+ variable_storage *storage;
+
+ storage = find_variable_storage(param);
+ assert(!storage);
+
+ storage = new(mem_ctx) variable_storage(param, PROGRAM_TEMPORARY,
+ this->next_temp);
+ this->variables.push_tail(storage);
+
+ this->next_temp += type_size(param->type);
+ }
+
+ if (!sig->return_type->is_void()) {
+ entry->return_reg = get_temp(sig->return_type);
+ } else {
+ entry->return_reg = ir_to_mesa_undef;
+ }
+
+ this->function_signatures.push_tail(entry);
+ return entry;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_call *ir)
+{
+ ir_to_mesa_instruction *call_inst;
+ ir_function_signature *sig = ir->get_callee();
+ function_entry *entry = get_function_signature(sig);
+ int i;
+
+ /* Process in parameters. */
+ exec_list_iterator sig_iter = sig->parameters.iterator();
+ foreach_iter(exec_list_iterator, iter, *ir) {
+ ir_rvalue *param_rval = (ir_rvalue *)iter.get();
+ ir_variable *param = (ir_variable *)sig_iter.get();
+
+ if (param->mode == ir_var_in ||
+ param->mode == ir_var_inout) {
+ variable_storage *storage = find_variable_storage(param);
+ assert(storage);
+
+ param_rval->accept(this);
+ ir_to_mesa_src_reg r = this->result;
+
+ ir_to_mesa_dst_reg l;
+ l.file = storage->file;
+ l.index = storage->index;
+ l.reladdr = NULL;
+ l.writemask = WRITEMASK_XYZW;
+ l.cond_mask = COND_TR;
+
+ for (i = 0; i < type_size(param->type); i++) {
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ l.index++;
+ r.index++;
+ }
+ }
+
+ sig_iter.next();
+ }
+ assert(!sig_iter.has_next());
+
+ /* Emit call instruction */
+ call_inst = ir_to_mesa_emit_op1(ir, OPCODE_CAL,
+ ir_to_mesa_undef_dst, ir_to_mesa_undef);
+ call_inst->function = entry;
+
+ /* Process out parameters. */
+ sig_iter = sig->parameters.iterator();
+ foreach_iter(exec_list_iterator, iter, *ir) {
+ ir_rvalue *param_rval = (ir_rvalue *)iter.get();
+ ir_variable *param = (ir_variable *)sig_iter.get();
+
+ if (param->mode == ir_var_out ||
+ param->mode == ir_var_inout) {
+ variable_storage *storage = find_variable_storage(param);
+ assert(storage);
+
+ ir_to_mesa_src_reg r;
+ r.file = storage->file;
+ r.index = storage->index;
+ r.reladdr = NULL;
+ r.swizzle = SWIZZLE_NOOP;
+ r.negate = 0;
+
+ param_rval->accept(this);
+ ir_to_mesa_dst_reg l = ir_to_mesa_dst_reg_from_src(this->result);
+
+ for (i = 0; i < type_size(param->type); i++) {
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ l.index++;
+ r.index++;
+ }
+ }
+
+ sig_iter.next();
+ }
+ assert(!sig_iter.has_next());
+
+ /* Process return value. */
+ this->result = entry->return_reg;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_texture *ir)
+{
+ ir_to_mesa_src_reg result_src, coord, lod_info, projector;
+ ir_to_mesa_dst_reg result_dst, coord_dst;
+ ir_to_mesa_instruction *inst = NULL;
+ prog_opcode opcode = OPCODE_NOP;
+
+ ir->coordinate->accept(this);
+
+ /* Put our coords in a temp. We'll need to modify them for shadow,
+ * projection, or LOD, so the only case we'd use it as is is if
+ * we're doing plain old texturing. Mesa IR optimization should
+ * handle cleaning up our mess in that case.
+ */
+ coord = get_temp(glsl_type::vec4_type);
+ coord_dst = ir_to_mesa_dst_reg_from_src(coord);
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst,
+ this->result);
+
+ if (ir->projector) {
+ ir->projector->accept(this);
+ projector = this->result;
+ }
+
+ /* Storage for our result. Ideally for an assignment we'd be using
+ * the actual storage for the result here, instead.
+ */
+ result_src = get_temp(glsl_type::vec4_type);
+ result_dst = ir_to_mesa_dst_reg_from_src(result_src);
+
+ switch (ir->op) {
+ case ir_tex:
+ opcode = OPCODE_TEX;
+ break;
+ case ir_txb:
+ opcode = OPCODE_TXB;
+ ir->lod_info.bias->accept(this);
+ lod_info = this->result;
+ break;
+ case ir_txl:
+ opcode = OPCODE_TXL;
+ ir->lod_info.lod->accept(this);
+ lod_info = this->result;
+ break;
+ case ir_txd:
+ case ir_txf:
+ assert(!"GLSL 1.30 features unsupported");
+ break;
+ }
+
+ if (ir->projector) {
+ if (opcode == OPCODE_TEX) {
+ /* Slot the projector in as the last component of the coord. */
+ coord_dst.writemask = WRITEMASK_W;
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, projector);
+ coord_dst.writemask = WRITEMASK_XYZW;
+ opcode = OPCODE_TXP;
+ } else {
+ ir_to_mesa_src_reg coord_w = coord;
+ coord_w.swizzle = SWIZZLE_WWWW;
+
+ /* For the other TEX opcodes there's no projective version
+ * since the last slot is taken up by lod info. Do the
+ * projective divide now.
+ */
+ coord_dst.writemask = WRITEMASK_W;
+ ir_to_mesa_emit_op1(ir, OPCODE_RCP, coord_dst, projector);
+
+ coord_dst.writemask = WRITEMASK_XYZ;
+ ir_to_mesa_emit_op2(ir, OPCODE_MUL, coord_dst, coord, coord_w);
+
+ coord_dst.writemask = WRITEMASK_XYZW;
+ coord.swizzle = SWIZZLE_XYZW;
+ }
+ }
+
+ if (ir->shadow_comparitor) {
+ /* Slot the shadow value in as the second to last component of the
+ * coord.
+ */
+ ir->shadow_comparitor->accept(this);
+ coord_dst.writemask = WRITEMASK_Z;
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, this->result);
+ coord_dst.writemask = WRITEMASK_XYZW;
+ }
+
+ if (opcode == OPCODE_TXL || opcode == OPCODE_TXB) {
+ /* Mesa IR stores lod or lod bias in the last channel of the coords. */
+ coord_dst.writemask = WRITEMASK_W;
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, lod_info);
+ coord_dst.writemask = WRITEMASK_XYZW;
+ }
+
+ inst = ir_to_mesa_emit_op1(ir, opcode, result_dst, coord);
+
+ if (ir->shadow_comparitor)
+ inst->tex_shadow = GL_TRUE;
+
+ inst->sampler = _mesa_get_sampler_uniform_value(ir->sampler,
+ this->shader_program,
+ this->prog);
+
+ const glsl_type *sampler_type = ir->sampler->type;
+
+ switch (sampler_type->sampler_dimensionality) {
+ case GLSL_SAMPLER_DIM_1D:
+ inst->tex_target = (sampler_type->sampler_array)
+ ? TEXTURE_1D_ARRAY_INDEX : TEXTURE_1D_INDEX;
+ break;
+ case GLSL_SAMPLER_DIM_2D:
+ inst->tex_target = (sampler_type->sampler_array)
+ ? TEXTURE_2D_ARRAY_INDEX : TEXTURE_2D_INDEX;
+ break;
+ case GLSL_SAMPLER_DIM_3D:
+ inst->tex_target = TEXTURE_3D_INDEX;
+ break;
+ case GLSL_SAMPLER_DIM_CUBE:
+ inst->tex_target = TEXTURE_CUBE_INDEX;
+ break;
+ case GLSL_SAMPLER_DIM_RECT:
+ inst->tex_target = TEXTURE_RECT_INDEX;
+ break;
+ case GLSL_SAMPLER_DIM_BUF:
+ assert(!"FINISHME: Implement ARB_texture_buffer_object");
+ break;
+ default:
+ assert(!"Should not get here.");
+ }
+
+ this->result = result_src;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_return *ir)
+{
+ if (ir->get_value()) {
+ ir_to_mesa_dst_reg l;
+ int i;
+
+ assert(current_function);
+
+ ir->get_value()->accept(this);
+ ir_to_mesa_src_reg r = this->result;
+
+ l = ir_to_mesa_dst_reg_from_src(current_function->return_reg);
+
+ for (i = 0; i < type_size(current_function->sig->return_type); i++) {
+ ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r);
+ l.index++;
+ r.index++;
+ }
+ }
+
+ ir_to_mesa_emit_op0(ir, OPCODE_RET);
+}
+
+void
+ir_to_mesa_visitor::visit(ir_discard *ir)
+{
+ struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog;
+
+ if (ir->condition) {
+ ir->condition->accept(this);
+ this->result.negate = ~this->result.negate;
+ ir_to_mesa_emit_op1(ir, OPCODE_KIL, ir_to_mesa_undef_dst, this->result);
+ } else {
+ ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV);
+ }
+
+ fp->UsesKill = GL_TRUE;
+}
+
+void
+ir_to_mesa_visitor::visit(ir_if *ir)
+{
+ ir_to_mesa_instruction *cond_inst, *if_inst, *else_inst = NULL;
+ ir_to_mesa_instruction *prev_inst;
+
+ prev_inst = (ir_to_mesa_instruction *)this->instructions.get_tail();
+
+ ir->condition->accept(this);
+ assert(this->result.file != PROGRAM_UNDEFINED);
+
+ if (this->options->EmitCondCodes) {
+ cond_inst = (ir_to_mesa_instruction *)this->instructions.get_tail();
+
+ /* See if we actually generated any instruction for generating
+ * the condition. If not, then cook up a move to a temp so we
+ * have something to set cond_update on.
+ */
+ if (cond_inst == prev_inst) {
+ ir_to_mesa_src_reg temp = get_temp(glsl_type::bool_type);
+ cond_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_MOV,
+ ir_to_mesa_dst_reg_from_src(temp),
+ result);
+ }
+ cond_inst->cond_update = GL_TRUE;
+
+ if_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_IF);
+ if_inst->dst_reg.cond_mask = COND_NE;
+ } else {
+ if_inst = ir_to_mesa_emit_op1(ir->condition,
+ OPCODE_IF, ir_to_mesa_undef_dst,
+ this->result);
+ }
+
+ this->instructions.push_tail(if_inst);
+
+ visit_exec_list(&ir->then_instructions, this);
+
+ if (!ir->else_instructions.is_empty()) {
+ else_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_ELSE);
+ visit_exec_list(&ir->else_instructions, this);
+ }
+
+ if_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_ENDIF,
+ ir_to_mesa_undef_dst, ir_to_mesa_undef);
+}
+
+ir_to_mesa_visitor::ir_to_mesa_visitor()
+{
+ result.file = PROGRAM_UNDEFINED;
+ next_temp = 1;
+ next_signature_id = 1;
+ current_function = NULL;
+ mem_ctx = talloc_new(NULL);
+}
+
+ir_to_mesa_visitor::~ir_to_mesa_visitor()
+{
+ talloc_free(mem_ctx);
+}
+
+static struct prog_src_register
+mesa_src_reg_from_ir_src_reg(ir_to_mesa_src_reg reg)
+{
+ struct prog_src_register mesa_reg;
+
+ mesa_reg.File = reg.file;
+ assert(reg.index < (1 << INST_INDEX_BITS));
+ mesa_reg.Index = reg.index;
+ mesa_reg.Swizzle = reg.swizzle;
+ mesa_reg.RelAddr = reg.reladdr != NULL;
+ mesa_reg.Negate = reg.negate;
+ mesa_reg.Abs = 0;
+ mesa_reg.HasIndex2 = GL_FALSE;
+ mesa_reg.RelAddr2 = 0;
+ mesa_reg.Index2 = 0;
+
+ return mesa_reg;
+}
+
+static void
+set_branchtargets(ir_to_mesa_visitor *v,
+ struct prog_instruction *mesa_instructions,
+ int num_instructions)
+{
+ int if_count = 0, loop_count = 0;
+ int *if_stack, *loop_stack;
+ int if_stack_pos = 0, loop_stack_pos = 0;
+ int i, j;
+
+ for (i = 0; i < num_instructions; i++) {
+ switch (mesa_instructions[i].Opcode) {
+ case OPCODE_IF:
+ if_count++;
+ break;
+ case OPCODE_BGNLOOP:
+ loop_count++;
+ break;
+ case OPCODE_BRK:
+ case OPCODE_CONT:
+ mesa_instructions[i].BranchTarget = -1;
+ break;
+ default:
+ break;
+ }
+ }
+
+ if_stack = talloc_zero_array(v->mem_ctx, int, if_count);
+ loop_stack = talloc_zero_array(v->mem_ctx, int, loop_count);
+
+ for (i = 0; i < num_instructions; i++) {
+ switch (mesa_instructions[i].Opcode) {
+ case OPCODE_IF:
+ if_stack[if_stack_pos] = i;
+ if_stack_pos++;
+ break;
+ case OPCODE_ELSE:
+ mesa_instructions[if_stack[if_stack_pos - 1]].BranchTarget = i;
+ if_stack[if_stack_pos - 1] = i;
+ break;
+ case OPCODE_ENDIF:
+ mesa_instructions[if_stack[if_stack_pos - 1]].BranchTarget = i;
+ if_stack_pos--;
+ break;
+ case OPCODE_BGNLOOP:
+ loop_stack[loop_stack_pos] = i;
+ loop_stack_pos++;
+ break;
+ case OPCODE_ENDLOOP:
+ loop_stack_pos--;
+ /* Rewrite any breaks/conts at this nesting level (haven't
+ * already had a BranchTarget assigned) to point to the end
+ * of the loop.
+ */
+ for (j = loop_stack[loop_stack_pos]; j < i; j++) {
+ if (mesa_instructions[j].Opcode == OPCODE_BRK ||
+ mesa_instructions[j].Opcode == OPCODE_CONT) {
+ if (mesa_instructions[j].BranchTarget == -1) {
+ mesa_instructions[j].BranchTarget = i;
+ }
+ }
+ }
+ /* The loop ends point at each other. */
+ mesa_instructions[i].BranchTarget = loop_stack[loop_stack_pos];
+ mesa_instructions[loop_stack[loop_stack_pos]].BranchTarget = i;
+ break;
+ case OPCODE_CAL:
+ foreach_iter(exec_list_iterator, iter, v->function_signatures) {
+ function_entry *entry = (function_entry *)iter.get();
+
+ if (entry->sig_id == mesa_instructions[i].BranchTarget) {
+ mesa_instructions[i].BranchTarget = entry->inst;
+ break;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+static void
+print_program(struct prog_instruction *mesa_instructions,
+ ir_instruction **mesa_instruction_annotation,
+ int num_instructions)
+{
+ ir_instruction *last_ir = NULL;
+ int i;
+ int indent = 0;
+
+ for (i = 0; i < num_instructions; i++) {
+ struct prog_instruction *mesa_inst = mesa_instructions + i;
+ ir_instruction *ir = mesa_instruction_annotation[i];
+
+ fprintf(stdout, "%3d: ", i);
+
+ if (last_ir != ir && ir) {
+ int j;
+
+ for (j = 0; j < indent; j++) {
+ fprintf(stdout, " ");
+ }
+ ir->print();
+ printf("\n");
+ last_ir = ir;
+
+ fprintf(stdout, " "); /* line number spacing. */
+ }
+
+ indent = _mesa_fprint_instruction_opt(stdout, mesa_inst, indent,
+ PROG_PRINT_DEBUG, NULL);
+ }
+}
+
+static void
+count_resources(struct gl_program *prog)
+{
+ unsigned int i;
+
+ prog->SamplersUsed = 0;
+
+ for (i = 0; i < prog->NumInstructions; i++) {
+ struct prog_instruction *inst = &prog->Instructions[i];
+
+ if (_mesa_is_tex_instruction(inst->Opcode)) {
+ prog->SamplerTargets[inst->TexSrcUnit] =
+ (gl_texture_index)inst->TexSrcTarget;
+ prog->SamplersUsed |= 1 << inst->TexSrcUnit;
+ if (inst->TexShadow) {
+ prog->ShadowSamplers |= 1 << inst->TexSrcUnit;
+ }
+ }
+ }
+
+ _mesa_update_shader_textures_used(prog);
+}
+
+struct uniform_sort {
+ struct gl_uniform *u;
+ int pos;
+};
+
+/* The shader_program->Uniforms list is almost sorted in increasing
+ * uniform->{Frag,Vert}Pos locations, but not quite when there are
+ * uniforms shared between targets. We need to add parameters in
+ * increasing order for the targets.
+ */
+static int
+sort_uniforms(const void *a, const void *b)
+{
+ struct uniform_sort *u1 = (struct uniform_sort *)a;
+ struct uniform_sort *u2 = (struct uniform_sort *)b;
+
+ return u1->pos - u2->pos;
+}
+
+/* Add the uniforms to the parameters. The linker chose locations
+ * in our parameters lists (which weren't created yet), which the
+ * uniforms code will use to poke values into our parameters list
+ * when uniforms are updated.
+ */
+static void
+add_uniforms_to_parameters_list(struct gl_shader_program *shader_program,
+ struct gl_shader *shader,
+ struct gl_program *prog)
+{
+ unsigned int i;
+ unsigned int next_sampler = 0, num_uniforms = 0;
+ struct uniform_sort *sorted_uniforms;
+
+ sorted_uniforms = talloc_array(NULL, struct uniform_sort,
+ shader_program->Uniforms->NumUniforms);
+
+ for (i = 0; i < shader_program->Uniforms->NumUniforms; i++) {
+ struct gl_uniform *uniform = shader_program->Uniforms->Uniforms + i;
+ int parameter_index = -1;
+
+ switch (shader->Type) {
+ case GL_VERTEX_SHADER:
+ parameter_index = uniform->VertPos;
+ break;
+ case GL_FRAGMENT_SHADER:
+ parameter_index = uniform->FragPos;
+ break;
+ case GL_GEOMETRY_SHADER:
+ parameter_index = uniform->GeomPos;
+ break;
+ }
+
+ /* Only add uniforms used in our target. */
+ if (parameter_index != -1) {
+ sorted_uniforms[num_uniforms].pos = parameter_index;
+ sorted_uniforms[num_uniforms].u = uniform;
+ num_uniforms++;
+ }
+ }
+
+ qsort(sorted_uniforms, num_uniforms, sizeof(struct uniform_sort),
+ sort_uniforms);
+
+ for (i = 0; i < num_uniforms; i++) {
+ struct gl_uniform *uniform = sorted_uniforms[i].u;
+ int parameter_index = sorted_uniforms[i].pos;
+ const glsl_type *type = uniform->Type;
+ unsigned int size;
+
+ if (type->is_vector() ||
+ type->is_scalar()) {
+ size = type->vector_elements;
+ } else {
+ size = type_size(type) * 4;
+ }
+
+ gl_register_file file;
+ if (type->is_sampler() ||
+ (type->is_array() && type->fields.array->is_sampler())) {
+ file = PROGRAM_SAMPLER;
+ } else {
+ file = PROGRAM_UNIFORM;
+ }
+
+ GLint index = _mesa_lookup_parameter_index(prog->Parameters, -1,
+ uniform->Name);
+
+ if (index < 0) {
+ index = _mesa_add_parameter(prog->Parameters, file,
+ uniform->Name, size, type->gl_type,
+ NULL, NULL, 0x0);
+
+ /* Sampler uniform values are stored in prog->SamplerUnits,
+ * and the entry in that array is selected by this index we
+ * store in ParameterValues[].
+ */
+ if (file == PROGRAM_SAMPLER) {
+ for (unsigned int j = 0; j < size / 4; j++)
+ prog->Parameters->ParameterValues[index + j][0] = next_sampler++;
+ }
+
+ /* The location chosen in the Parameters list here (returned
+ * from _mesa_add_uniform) has to match what the linker chose.
+ */
+ if (index != parameter_index) {
+ fail_link(shader_program, "Allocation of uniform `%s' to target "
+ "failed (%d vs %d)\n",
+ uniform->Name, index, parameter_index);
+ }
+ }
+ }
+
+ talloc_free(sorted_uniforms);
+}
+
+static void
+set_uniform_initializer(struct gl_context *ctx, void *mem_ctx,
+ struct gl_shader_program *shader_program,
+ const char *name, const glsl_type *type,
+ ir_constant *val)
+{
+ if (type->is_record()) {
+ ir_constant *field_constant;
+
+ field_constant = (ir_constant *)val->components.get_head();
+
+ for (unsigned int i = 0; i < type->length; i++) {
+ const glsl_type *field_type = type->fields.structure[i].type;
+ const char *field_name = talloc_asprintf(mem_ctx, "%s.%s", name,
+ type->fields.structure[i].name);
+ set_uniform_initializer(ctx, mem_ctx, shader_program, field_name,
+ field_type, field_constant);
+ field_constant = (ir_constant *)field_constant->next;
+ }
+ return;
+ }
+
+ int loc = _mesa_get_uniform_location(ctx, shader_program, name);
+
+ if (loc == -1) {
+ fail_link(shader_program,
+ "Couldn't find uniform for initializer %s\n", name);
+ return;
+ }
+
+ for (unsigned int i = 0; i < (type->is_array() ? type->length : 1); i++) {
+ ir_constant *element;
+ const glsl_type *element_type;
+ if (type->is_array()) {
+ element = val->array_elements[i];
+ element_type = type->fields.array;
+ } else {
+ element = val;
+ element_type = type;
+ }
+
+ void *values;
+
+ if (element_type->base_type == GLSL_TYPE_BOOL) {
+ int *conv = talloc_array(mem_ctx, int, element_type->components());
+ for (unsigned int j = 0; j < element_type->components(); j++) {
+ conv[j] = element->value.b[j];
+ }
+ values = (void *)conv;
+ element_type = glsl_type::get_instance(GLSL_TYPE_INT,
+ element_type->vector_elements,
+ 1);
+ } else {
+ values = &element->value;
+ }
+
+ if (element_type->is_matrix()) {
+ _mesa_uniform_matrix(ctx, shader_program,
+ element_type->matrix_columns,
+ element_type->vector_elements,
+ loc, 1, GL_FALSE, (GLfloat *)values);
+ loc += element_type->matrix_columns;
+ } else {
+ _mesa_uniform(ctx, shader_program, loc, element_type->matrix_columns,
+ values, element_type->gl_type);
+ loc += type_size(element_type);
+ }
+ }
+}
+
+static void
+set_uniform_initializers(struct gl_context *ctx,
+ struct gl_shader_program *shader_program)
+{
+ void *mem_ctx = NULL;
+
+ for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) {
+ struct gl_shader *shader = shader_program->_LinkedShaders[i];
+
+ if (shader == NULL)
+ continue;
+
+ foreach_iter(exec_list_iterator, iter, *shader->ir) {
+ ir_instruction *ir = (ir_instruction *)iter.get();
+ ir_variable *var = ir->as_variable();
+
+ if (!var || var->mode != ir_var_uniform || !var->constant_value)
+ continue;
+
+ if (!mem_ctx)
+ mem_ctx = talloc_new(NULL);
+
+ set_uniform_initializer(ctx, mem_ctx, shader_program, var->name,
+ var->type, var->constant_value);
+ }
+ }
+
+ talloc_free(mem_ctx);
+}
+
+/*
+ * On a basic block basis, tracks available PROGRAM_TEMPORARY register
+ * channels for copy propagation and updates following instructions to
+ * use the original versions.
+ *
+ * The ir_to_mesa_visitor lazily produces code assuming that this pass
+ * will occur. As an example, a TXP production before this pass:
+ *
+ * 0: MOV TEMP[1], INPUT[4].xyyy;
+ * 1: MOV TEMP[1].w, INPUT[4].wwww;
+ * 2: TXP TEMP[2], TEMP[1], texture[0], 2D;
+ *
+ * and after:
+ *
+ * 0: MOV TEMP[1], INPUT[4].xyyy;
+ * 1: MOV TEMP[1].w, INPUT[4].wwww;
+ * 2: TXP TEMP[2], INPUT[4].xyyw, texture[0], 2D;
+ *
+ * which allows for dead code elimination on TEMP[1]'s writes.
+ */
+void
+ir_to_mesa_visitor::copy_propagate(void)
+{
+ ir_to_mesa_instruction **acp = talloc_zero_array(mem_ctx,
+ ir_to_mesa_instruction *,
+ this->next_temp * 4);
+
+ foreach_iter(exec_list_iterator, iter, this->instructions) {
+ ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get();
+
+ assert(inst->dst_reg.file != PROGRAM_TEMPORARY
+ || inst->dst_reg.index < this->next_temp);
+
+ /* First, do any copy propagation possible into the src regs. */
+ for (int r = 0; r < 3; r++) {
+ ir_to_mesa_instruction *first = NULL;
+ bool good = true;
+ int acp_base = inst->src_reg[r].index * 4;
+
+ if (inst->src_reg[r].file != PROGRAM_TEMPORARY ||
+ inst->src_reg[r].reladdr)
+ continue;
+
+ /* See if we can find entries in the ACP consisting of MOVs
+ * from the same src register for all the swizzled channels
+ * of this src register reference.
+ */
+ for (int i = 0; i < 4; i++) {
+ int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i);
+ ir_to_mesa_instruction *copy_chan = acp[acp_base + src_chan];
+
+ if (!copy_chan) {
+ good = false;
+ break;
+ }
+
+ if (!first) {
+ first = copy_chan;
+ } else {
+ if (first->src_reg[0].file != copy_chan->src_reg[0].file ||
+ first->src_reg[0].index != copy_chan->src_reg[0].index) {
+ good = false;
+ break;
+ }
+ }
+ }
+
+ if (good) {
+ /* We've now validated that we can copy-propagate to
+ * replace this src register reference. Do it.
+ */
+ inst->src_reg[r].file = first->src_reg[0].file;
+ inst->src_reg[r].index = first->src_reg[0].index;
+
+ int swizzle = 0;
+ for (int i = 0; i < 4; i++) {
+ int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i);
+ ir_to_mesa_instruction *copy_inst = acp[acp_base + src_chan];
+ swizzle |= (GET_SWZ(copy_inst->src_reg[0].swizzle, src_chan) <<
+ (3 * i));
+ }
+ inst->src_reg[r].swizzle = swizzle;
+ }
+ }
+
+ switch (inst->op) {
+ case OPCODE_BGNLOOP:
+ case OPCODE_ENDLOOP:
+ case OPCODE_ELSE:
+ case OPCODE_ENDIF:
+ /* End of a basic block, clear the ACP entirely. */
+ memset(acp, 0, sizeof(*acp) * this->next_temp * 4);
+ break;
+
+ default:
+ /* Continuing the block, clear any written channels from
+ * the ACP.
+ */
+ if (inst->dst_reg.file == PROGRAM_TEMPORARY) {
+ if (inst->dst_reg.reladdr) {
+ memset(acp, 0, sizeof(*acp) * this->next_temp * 4);
+ } else {
+ for (int i = 0; i < 4; i++) {
+ if (inst->dst_reg.writemask & (1 << i)) {
+ acp[4 * inst->dst_reg.index + i] = NULL;
+ }
+ }
+ }
+ }
+ break;
+ }
+
+ /* If this is a copy, add it to the ACP. */
+ if (inst->op == OPCODE_MOV &&
+ inst->dst_reg.file == PROGRAM_TEMPORARY &&
+ !inst->dst_reg.reladdr &&
+ !inst->saturate &&
+ !inst->src_reg[0].reladdr &&
+ !inst->src_reg[0].negate) {
+ for (int i = 0; i < 4; i++) {
+ if (inst->dst_reg.writemask & (1 << i)) {
+ acp[4 * inst->dst_reg.index + i] = inst;
+ }
+ }
+ }
+ }
+
+ talloc_free(acp);
+}
+
+
+/**
+ * Convert a shader's GLSL IR into a Mesa gl_program.
+ */
+static struct gl_program *
+get_mesa_program(struct gl_context *ctx,
+ struct gl_shader_program *shader_program,
+ struct gl_shader *shader)
+{
+ ir_to_mesa_visitor v;
+ struct prog_instruction *mesa_instructions, *mesa_inst;
+ ir_instruction **mesa_instruction_annotation;
+ int i;
+ struct gl_program *prog;
+ GLenum target;
+ const char *target_string;
+ GLboolean progress;
+ struct gl_shader_compiler_options *options =
+ &ctx->ShaderCompilerOptions[_mesa_shader_type_to_index(shader->Type)];
+
+ switch (shader->Type) {
+ case GL_VERTEX_SHADER:
+ target = GL_VERTEX_PROGRAM_ARB;
+ target_string = "vertex";
+ break;
+ case GL_FRAGMENT_SHADER:
+ target = GL_FRAGMENT_PROGRAM_ARB;
+ target_string = "fragment";
+ break;
+ case GL_GEOMETRY_SHADER:
+ target = GL_GEOMETRY_PROGRAM_NV;
+ target_string = "geometry";
+ break;
+ default:
+ assert(!"should not be reached");
+ return NULL;
+ }
+
+ validate_ir_tree(shader->ir);
+
+ prog = ctx->Driver.NewProgram(ctx, target, shader_program->Name);
+ if (!prog)
+ return NULL;
+ prog->Parameters = _mesa_new_parameter_list();
+ prog->Varying = _mesa_new_parameter_list();
+ prog->Attributes = _mesa_new_parameter_list();
+ v.ctx = ctx;
+ v.prog = prog;
+ v.shader_program = shader_program;
+ v.options = options;
+
+ add_uniforms_to_parameters_list(shader_program, shader, prog);
+
+ /* Emit Mesa IR for main(). */
+ visit_exec_list(shader->ir, &v);
+ v.ir_to_mesa_emit_op0(NULL, OPCODE_END);
+
+ /* Now emit bodies for any functions that were used. */
+ do {
+ progress = GL_FALSE;
+
+ foreach_iter(exec_list_iterator, iter, v.function_signatures) {
+ function_entry *entry = (function_entry *)iter.get();
+
+ if (!entry->bgn_inst) {
+ v.current_function = entry;
+
+ entry->bgn_inst = v.ir_to_mesa_emit_op0(NULL, OPCODE_BGNSUB);
+ entry->bgn_inst->function = entry;
+
+ visit_exec_list(&entry->sig->body, &v);
+
+ ir_to_mesa_instruction *last;
+ last = (ir_to_mesa_instruction *)v.instructions.get_tail();
+ if (last->op != OPCODE_RET)
+ v.ir_to_mesa_emit_op0(NULL, OPCODE_RET);
+
+ ir_to_mesa_instruction *end;
+ end = v.ir_to_mesa_emit_op0(NULL, OPCODE_ENDSUB);
+ end->function = entry;
+
+ progress = GL_TRUE;
+ }
+ }
+ } while (progress);
+
+ prog->NumTemporaries = v.next_temp;
+
+ int num_instructions = 0;
+ foreach_iter(exec_list_iterator, iter, v.instructions) {
+ num_instructions++;
+ }
+
+ mesa_instructions =
+ (struct prog_instruction *)calloc(num_instructions,
+ sizeof(*mesa_instructions));
+ mesa_instruction_annotation = talloc_array(v.mem_ctx, ir_instruction *,
+ num_instructions);
+
+ v.copy_propagate();
+
+ /* Convert ir_mesa_instructions into prog_instructions.
+ */
+ mesa_inst = mesa_instructions;
+ i = 0;
+ foreach_iter(exec_list_iterator, iter, v.instructions) {
+ const ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get();
+
+ mesa_inst->Opcode = inst->op;
+ mesa_inst->CondUpdate = inst->cond_update;
+ if (inst->saturate)
+ mesa_inst->SaturateMode = SATURATE_ZERO_ONE;
+ mesa_inst->DstReg.File = inst->dst_reg.file;
+ mesa_inst->DstReg.Index = inst->dst_reg.index;
+ mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask;
+ mesa_inst->DstReg.WriteMask = inst->dst_reg.writemask;
+ mesa_inst->DstReg.RelAddr = inst->dst_reg.reladdr != NULL;
+ mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src_reg[0]);
+ mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src_reg[1]);
+ mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src_reg[2]);
+ mesa_inst->TexSrcUnit = inst->sampler;
+ mesa_inst->TexSrcTarget = inst->tex_target;
+ mesa_inst->TexShadow = inst->tex_shadow;
+ mesa_instruction_annotation[i] = inst->ir;
+
+ /* Set IndirectRegisterFiles. */
+ if (mesa_inst->DstReg.RelAddr)
+ prog->IndirectRegisterFiles |= 1 << mesa_inst->DstReg.File;
+
+ /* Update program's bitmask of indirectly accessed register files */
+ for (unsigned src = 0; src < 3; src++)
+ if (mesa_inst->SrcReg[src].RelAddr)
+ prog->IndirectRegisterFiles |= 1 << mesa_inst->SrcReg[src].File;
+
+ if (options->EmitNoIfs && mesa_inst->Opcode == OPCODE_IF) {
+ fail_link(shader_program, "Couldn't flatten if statement\n");
+ }
+
+ switch (mesa_inst->Opcode) {
+ case OPCODE_BGNSUB:
+ inst->function->inst = i;
+ mesa_inst->Comment = strdup(inst->function->sig->function_name());
+ break;
+ case OPCODE_ENDSUB:
+ mesa_inst->Comment = strdup(inst->function->sig->function_name());
+ break;
+ case OPCODE_CAL:
+ mesa_inst->BranchTarget = inst->function->sig_id; /* rewritten later */
+ break;
+ case OPCODE_ARL:
+ prog->NumAddressRegs = 1;
+ break;
+ default:
+ break;
+ }
+
+ mesa_inst++;
+ i++;
+
+ if (!shader_program->LinkStatus)
+ break;
+ }
+
+ if (!shader_program->LinkStatus) {
+ free(mesa_instructions);
+ _mesa_reference_program(ctx, &shader->Program, NULL);
+ return NULL;
+ }
+
+ set_branchtargets(&v, mesa_instructions, num_instructions);
+
+ if (ctx->Shader.Flags & GLSL_DUMP) {
+ printf("\n");
+ printf("GLSL IR for linked %s program %d:\n", target_string,
+ shader_program->Name);
+ _mesa_print_ir(shader->ir, NULL);
+ printf("\n");
+ printf("\n");
+ printf("Mesa IR for linked %s program %d:\n", target_string,
+ shader_program->Name);
+ print_program(mesa_instructions, mesa_instruction_annotation,
+ num_instructions);
+ }
+
+ prog->Instructions = mesa_instructions;
+ prog->NumInstructions = num_instructions;
+
+ do_set_program_inouts(shader->ir, prog);
+ count_resources(prog);
+
+ _mesa_reference_program(ctx, &shader->Program, prog);
+
+ if ((ctx->Shader.Flags & GLSL_NO_OPT) == 0) {
+ _mesa_optimize_program(ctx, prog);
+ }
+
+ return prog;
+}
+
+extern "C" {
+
+/**
+ * Called via ctx->Driver.CompilerShader().
+ * This is a no-op.
+ * XXX can we remove the ctx->Driver.CompileShader() hook?
+ */
+GLboolean
+_mesa_ir_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
+{
+ assert(shader->CompileStatus);
+ (void) ctx;
+
+ return GL_TRUE;
+}
+
+
+/**
+ * Link a shader.
+ * Called via ctx->Driver.LinkShader()
+ * This actually involves converting GLSL IR into Mesa gl_programs with
+ * code lowering and other optimizations.
+ */
+GLboolean
+_mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
+{
+ assert(prog->LinkStatus);
+
+ for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ bool progress;
+ exec_list *ir = prog->_LinkedShaders[i]->ir;
+ const struct gl_shader_compiler_options *options =
+ &ctx->ShaderCompilerOptions[_mesa_shader_type_to_index(prog->_LinkedShaders[i]->Type)];
+
+ do {
+ progress = false;
+
+ /* Lowering */
+ do_mat_op_to_vec(ir);
+ lower_instructions(ir, (MOD_TO_FRACT | DIV_TO_MUL_RCP | EXP_TO_EXP2
+ | LOG_TO_LOG2
+ | ((options->EmitNoPow) ? POW_TO_EXP2 : 0)));
+
+ progress = do_lower_jumps(ir, true, true, options->EmitNoMainReturn, options->EmitNoCont, options->EmitNoLoops) || progress;
+
+ progress = do_common_optimization(ir, true, options->MaxUnrollIterations) || progress;
+
+ progress = lower_quadop_vector(ir, true) || progress;
+
+ if (options->EmitNoIfs) {
+ progress = lower_discard(ir) || progress;
+ progress = lower_if_to_cond_assign(ir) || progress;
+ }
+
+ if (options->EmitNoNoise)
+ progress = lower_noise(ir) || progress;
+
+ /* If there are forms of indirect addressing that the driver
+ * cannot handle, perform the lowering pass.
+ */
+ if (options->EmitNoIndirectInput || options->EmitNoIndirectOutput
+ || options->EmitNoIndirectTemp || options->EmitNoIndirectUniform)
+ progress =
+ lower_variable_index_to_cond_assign(ir,
+ options->EmitNoIndirectInput,
+ options->EmitNoIndirectOutput,
+ options->EmitNoIndirectTemp,
+ options->EmitNoIndirectUniform)
+ || progress;
+
+ progress = do_vec_index_to_cond_assign(ir) || progress;
+ } while (progress);
+
+ validate_ir_tree(ir);
+ }
+
+ for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) {
+ struct gl_program *linked_prog;
+
+ if (prog->_LinkedShaders[i] == NULL)
+ continue;
+
+ linked_prog = get_mesa_program(ctx, prog, prog->_LinkedShaders[i]);
+
+ if (linked_prog) {
+ bool ok = true;
+
+ switch (prog->_LinkedShaders[i]->Type) {
+ case GL_VERTEX_SHADER:
+ _mesa_reference_vertprog(ctx, &prog->VertexProgram,
+ (struct gl_vertex_program *)linked_prog);
+ ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
+ linked_prog);
+ break;
+ case GL_FRAGMENT_SHADER:
+ _mesa_reference_fragprog(ctx, &prog->FragmentProgram,
+ (struct gl_fragment_program *)linked_prog);
+ ok = ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB,
+ linked_prog);
+ break;
+ case GL_GEOMETRY_SHADER:
+ _mesa_reference_geomprog(ctx, &prog->GeometryProgram,
+ (struct gl_geometry_program *)linked_prog);
+ ok = ctx->Driver.ProgramStringNotify(ctx, GL_GEOMETRY_PROGRAM_NV,
+ linked_prog);
+ break;
+ }
+ if (!ok) {
+ return GL_FALSE;
+ }
+ }
+
+ _mesa_reference_program(ctx, &linked_prog, NULL);
+ }
+
+ return GL_TRUE;
+}
+
+
+/**
+ * Compile a GLSL shader. Called via glCompileShader().
+ */
+void
+_mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader)
+{
+ struct _mesa_glsl_parse_state *state =
+ new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader);
+
+ const char *source = shader->Source;
+ /* Check if the user called glCompileShader without first calling
+ * glShaderSource. This should fail to compile, but not raise a GL_ERROR.
+ */
+ if (source == NULL) {
+ shader->CompileStatus = GL_FALSE;
+ return;
+ }
+
+ state->error = preprocess(state, &source, &state->info_log,
+ &ctx->Extensions, ctx->API);
+
+ if (ctx->Shader.Flags & GLSL_DUMP) {
+ printf("GLSL source for shader %d:\n", shader->Name);
+ printf("%s\n", shader->Source);
+ }
+
+ if (!state->error) {
+ _mesa_glsl_lexer_ctor(state, source);
+ _mesa_glsl_parse(state);
+ _mesa_glsl_lexer_dtor(state);
+ }
+
+ talloc_free(shader->ir);
+ shader->ir = new(shader) exec_list;
+ if (!state->error && !state->translation_unit.is_empty())
+ _mesa_ast_to_hir(shader->ir, state);
+
+ if (!state->error && !shader->ir->is_empty()) {
+ validate_ir_tree(shader->ir);
+
+ /* Do some optimization at compile time to reduce shader IR size
+ * and reduce later work if the same shader is linked multiple times
+ */
+ while (do_common_optimization(shader->ir, false, 32))
+ ;
+
+ validate_ir_tree(shader->ir);
+ }
+
+ shader->symbols = state->symbols;
+
+ shader->CompileStatus = !state->error;
+ shader->InfoLog = state->info_log;
+ shader->Version = state->language_version;
+ memcpy(shader->builtins_to_link, state->builtins_to_link,
+ sizeof(shader->builtins_to_link[0]) * state->num_builtins_to_link);
+ shader->num_builtins_to_link = state->num_builtins_to_link;
+
+ if (ctx->Shader.Flags & GLSL_LOG) {
+ _mesa_write_shader_to_file(shader);
+ }
+
+ if (ctx->Shader.Flags & GLSL_DUMP) {
+ if (shader->CompileStatus) {
+ printf("GLSL IR for shader %d:\n", shader->Name);
+ _mesa_print_ir(shader->ir, NULL);
+ printf("\n\n");
+ } else {
+ printf("GLSL shader %d failed to compile.\n", shader->Name);
+ }
+ if (shader->InfoLog && shader->InfoLog[0] != 0) {
+ printf("GLSL shader %d info log:\n", shader->Name);
+ printf("%s\n", shader->InfoLog);
+ }
+ }
+
+ /* Retain any live IR, but trash the rest. */
+ reparent_ir(shader->ir, shader->ir);
+
+ talloc_free(state);
+
+ if (shader->CompileStatus) {
+ if (!ctx->Driver.CompileShader(ctx, shader))
+ shader->CompileStatus = GL_FALSE;
+ }
+}
+
+
+/**
+ * Link a GLSL shader program. Called via glLinkProgram().
+ */
+void
+_mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
+{
+ unsigned int i;
+
+ _mesa_clear_shader_program_data(ctx, prog);
+
+ prog->LinkStatus = GL_TRUE;
+
+ for (i = 0; i < prog->NumShaders; i++) {
+ if (!prog->Shaders[i]->CompileStatus) {
+ fail_link(prog, "linking with uncompiled shader");
+ prog->LinkStatus = GL_FALSE;
+ }
+ }
+
+ prog->Varying = _mesa_new_parameter_list();
+ _mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL);
+ _mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL);
+ _mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL);
+
+ if (prog->LinkStatus) {
+ link_shaders(ctx, prog);
+ }
+
+ if (prog->LinkStatus) {
+ if (!ctx->Driver.LinkShader(ctx, prog)) {
+ prog->LinkStatus = GL_FALSE;
+ }
+ }
+
+ set_uniform_initializers(ctx, prog);
+
+ if (ctx->Shader.Flags & GLSL_DUMP) {
+ if (!prog->LinkStatus) {
+ printf("GLSL shader program %d failed to link\n", prog->Name);
+ }
+
+ if (prog->InfoLog && prog->InfoLog[0] != 0) {
+ printf("GLSL shader program %d info log:\n", prog->Name);
+ printf("%s\n", prog->InfoLog);
+ }
+ }
+}
+
+} /* extern "C" */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texture.c b/mesalib/src/mesa/state_tracker/st_cb_texture.c
index b60ac72e4..9653dcd65 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_texture.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_texture.c
@@ -1,2022 +1,2021 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#include "main/mfeatures.h"
-#include "main/bufferobj.h"
-#include "main/enums.h"
-#include "main/fbobject.h"
-#include "main/formats.h"
-#include "main/image.h"
-#include "main/imports.h"
-#include "main/macros.h"
-#include "main/mipmap.h"
-#include "main/pack.h"
-#include "main/pixeltransfer.h"
-#include "main/texcompress.h"
-#include "main/texfetch.h"
-#include "main/texgetimage.h"
-#include "main/teximage.h"
-#include "main/texobj.h"
-#include "main/texstore.h"
-
-#include "state_tracker/st_debug.h"
-#include "state_tracker/st_context.h"
-#include "state_tracker/st_cb_fbo.h"
-#include "state_tracker/st_cb_flush.h"
-#include "state_tracker/st_cb_texture.h"
-#include "state_tracker/st_format.h"
-#include "state_tracker/st_texture.h"
-#include "state_tracker/st_gen_mipmap.h"
-#include "state_tracker/st_atom.h"
-
-#include "pipe/p_context.h"
-#include "pipe/p_defines.h"
-#include "util/u_inlines.h"
-#include "pipe/p_shader_tokens.h"
-#include "util/u_tile.h"
-#include "util/u_blit.h"
-#include "util/u_format.h"
-#include "util/u_surface.h"
-#include "util/u_sampler.h"
-#include "util/u_math.h"
-#include "util/u_box.h"
-
-#define DBG if (0) printf
-
-
-static enum pipe_texture_target
-gl_target_to_pipe(GLenum target)
-{
- switch (target) {
- case GL_TEXTURE_1D:
- return PIPE_TEXTURE_1D;
-
- case GL_TEXTURE_2D:
- return PIPE_TEXTURE_2D;
-
- case GL_TEXTURE_RECTANGLE_NV:
- return PIPE_TEXTURE_RECT;
-
- case GL_TEXTURE_3D:
- return PIPE_TEXTURE_3D;
-
- case GL_TEXTURE_CUBE_MAP_ARB:
- return PIPE_TEXTURE_CUBE;
-
- default:
- assert(0);
- return 0;
- }
-}
-
-
-/** called via ctx->Driver.NewTextureImage() */
-static struct gl_texture_image *
-st_NewTextureImage(struct gl_context * ctx)
-{
- DBG("%s\n", __FUNCTION__);
- (void) ctx;
- return (struct gl_texture_image *) ST_CALLOC_STRUCT(st_texture_image);
-}
-
-
-/** called via ctx->Driver.NewTextureObject() */
-static struct gl_texture_object *
-st_NewTextureObject(struct gl_context * ctx, GLuint name, GLenum target)
-{
- struct st_texture_object *obj = ST_CALLOC_STRUCT(st_texture_object);
-
- DBG("%s\n", __FUNCTION__);
- _mesa_initialize_texture_object(&obj->base, name, target);
-
- return &obj->base;
-}
-
-/** called via ctx->Driver.DeleteTextureObject() */
-static void
-st_DeleteTextureObject(struct gl_context *ctx,
- struct gl_texture_object *texObj)
-{
- struct st_context *st = st_context(ctx);
- struct st_texture_object *stObj = st_texture_object(texObj);
- if (stObj->pt)
- pipe_resource_reference(&stObj->pt, NULL);
- if (stObj->sampler_view) {
- if (stObj->sampler_view->context != st->pipe) {
- /* Take "ownership" of this texture sampler view by setting
- * its context pointer to this context. This avoids potential
- * crashes when the texture object is shared among contexts
- * and the original/owner context has already been destroyed.
- */
- stObj->sampler_view->context = st->pipe;
- }
- pipe_sampler_view_reference(&stObj->sampler_view, NULL);
- }
- _mesa_delete_texture_object(ctx, texObj);
-}
-
-
-/** called via ctx->Driver.FreeTexImageData() */
-static void
-st_FreeTextureImageData(struct gl_context * ctx, struct gl_texture_image *texImage)
-{
- struct st_texture_image *stImage = st_texture_image(texImage);
-
- DBG("%s\n", __FUNCTION__);
-
- if (stImage->pt) {
- pipe_resource_reference(&stImage->pt, NULL);
- }
-
- if (texImage->Data) {
- _mesa_align_free(texImage->Data);
- texImage->Data = NULL;
- }
-}
-
-
-/**
- * From linux kernel i386 header files, copes with odd sizes better
- * than COPY_DWORDS would:
- * XXX Put this in src/mesa/main/imports.h ???
- */
-#if defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86)
-static INLINE void *
-__memcpy(void *to, const void *from, size_t n)
-{
- int d0, d1, d2;
- __asm__ __volatile__("rep ; movsl\n\t"
- "testb $2,%b4\n\t"
- "je 1f\n\t"
- "movsw\n"
- "1:\ttestb $1,%b4\n\t"
- "je 2f\n\t"
- "movsb\n" "2:":"=&c"(d0), "=&D"(d1), "=&S"(d2)
- :"0"(n / 4), "q"(n), "1"((long) to), "2"((long) from)
- :"memory");
- return (to);
-}
-#else
-#define __memcpy(a,b,c) memcpy(a,b,c)
-#endif
-
-
-/**
- * The system memcpy (at least on ubuntu 5.10) has problems copying
- * to agp (writecombined) memory from a source which isn't 64-byte
- * aligned - there is a 4x performance falloff.
- *
- * The x86 __memcpy is immune to this but is slightly slower
- * (10%-ish) than the system memcpy.
- *
- * The sse_memcpy seems to have a slight cliff at 64/32 bytes, but
- * isn't much faster than x86_memcpy for agp copies.
- *
- * TODO: switch dynamically.
- */
-static void *
-do_memcpy(void *dest, const void *src, size_t n)
-{
- if ((((unsigned long) src) & 63) || (((unsigned long) dest) & 63)) {
- return __memcpy(dest, src, n);
- }
- else
- return memcpy(dest, src, n);
-}
-
-
-/**
- * Return default texture resource binding bitmask for the given format.
- */
-static GLuint
-default_bindings(struct st_context *st, enum pipe_format format)
-{
- struct pipe_screen *screen = st->pipe->screen;
- const unsigned target = PIPE_TEXTURE_2D;
- const unsigned geom = 0x0;
- unsigned bindings;
-
- if (util_format_is_depth_or_stencil(format))
- bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_DEPTH_STENCIL;
- else
- bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
-
- if (screen->is_format_supported(screen, format, target, 0, bindings, geom))
- return bindings;
- else
- return PIPE_BIND_SAMPLER_VIEW;
-}
-
-
-/** Return number of image dimensions (1, 2 or 3) for a texture target. */
-static GLuint
-get_texture_dims(GLenum target)
-{
- switch (target) {
- case GL_TEXTURE_1D:
- case GL_TEXTURE_1D_ARRAY_EXT:
- return 1;
- case GL_TEXTURE_2D:
- case GL_TEXTURE_CUBE_MAP_ARB:
- case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB:
- case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB:
- case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB:
- case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB:
- case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB:
- case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB:
- case GL_TEXTURE_RECTANGLE_NV:
- case GL_TEXTURE_2D_ARRAY_EXT:
- return 2;
- case GL_TEXTURE_3D:
- return 3;
- default:
- assert(0 && "invalid texture target in get_texture_dims()");
- return 1;
- }
-}
-
-
-/**
- * Try to allocate a pipe_resource object for the given st_texture_object.
- *
- * We use the given st_texture_image as a clue to determine the size of the
- * mipmap image at level=0.
- *
- * \return GL_TRUE for success, GL_FALSE if out of memory.
- */
-static GLboolean
-guess_and_alloc_texture(struct st_context *st,
- struct st_texture_object *stObj,
- const struct st_texture_image *stImage)
-{
- const GLuint dims = get_texture_dims(stObj->base.Target);
- GLuint level, lastLevel, width, height, depth;
- GLuint bindings;
- enum pipe_format fmt;
-
- DBG("%s\n", __FUNCTION__);
-
- assert(!stObj->pt);
-
- level = stImage->level;
- width = stImage->base.Width2; /* size w/out border */
- height = stImage->base.Height2;
- depth = stImage->base.Depth2;
-
- assert(width > 0);
- assert(height > 0);
- assert(depth > 0);
-
- /* Depending on the image's size, we can't always make a guess here.
- */
- if (level > 0) {
- if ( (dims >= 1 && width == 1) ||
- (dims >= 2 && height == 1) ||
- (dims >= 3 && depth == 1) ) {
- /* we can't determine the image size at level=0 */
- stObj->width0 = stObj->height0 = stObj->depth0 = 0;
- /* this is not an out of memory error */
- return GL_TRUE;
- }
- }
-
- /* grow the image size until we hit level = 0 */
- while (level > 0) {
- if (width != 1)
- width <<= 1;
- if (height != 1)
- height <<= 1;
- if (depth != 1)
- depth <<= 1;
- level--;
- }
-
- assert(level == 0);
-
- /* At this point, (width x height x depth) is the expected size of
- * the level=0 mipmap image.
- */
-
- /* Guess a reasonable value for lastLevel. With OpenGL we have no
- * idea how many mipmap levels will be in a texture until we start
- * to render with it. Make an educated guess here but be prepared
- * to re-allocating a texture buffer with space for more (or fewer)
- * mipmap levels later.
- */
- if ((stObj->base.MinFilter == GL_NEAREST ||
- stObj->base.MinFilter == GL_LINEAR ||
- stImage->base._BaseFormat == GL_DEPTH_COMPONENT ||
- stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) &&
- !stObj->base.GenerateMipmap &&
- stImage->level == 0) {
- /* only alloc space for a single mipmap level */
- lastLevel = 0;
- }
- else {
- /* alloc space for a full mipmap */
- GLuint l2width = util_logbase2(width);
- GLuint l2height = util_logbase2(height);
- GLuint l2depth = util_logbase2(depth);
- lastLevel = MAX2(MAX2(l2width, l2height), l2depth);
- }
-
- /* Save the level=0 dimensions */
- stObj->width0 = width;
- stObj->height0 = height;
- stObj->depth0 = depth;
-
- fmt = st_mesa_format_to_pipe_format(stImage->base.TexFormat);
-
- bindings = default_bindings(st, fmt);
-
- stObj->pt = st_texture_create(st,
- gl_target_to_pipe(stObj->base.Target),
- fmt,
- lastLevel,
- width,
- height,
- depth,
- bindings);
-
- DBG("%s returning %d\n", __FUNCTION__, (stObj->pt != NULL));
-
- return stObj->pt != NULL;
-}
-
-
-/**
- * Adjust pixel unpack params and image dimensions to strip off the
- * texture border.
- * Gallium doesn't support texture borders. They've seldem been used
- * and seldom been implemented correctly anyway.
- * \param unpackNew returns the new pixel unpack parameters
- */
-static void
-strip_texture_border(GLint border,
- GLint *width, GLint *height, GLint *depth,
- const struct gl_pixelstore_attrib *unpack,
- struct gl_pixelstore_attrib *unpackNew)
-{
- assert(border > 0); /* sanity check */
-
- *unpackNew = *unpack;
-
- if (unpackNew->RowLength == 0)
- unpackNew->RowLength = *width;
-
- if (depth && unpackNew->ImageHeight == 0)
- unpackNew->ImageHeight = *height;
-
- unpackNew->SkipPixels += border;
- if (height)
- unpackNew->SkipRows += border;
- if (depth)
- unpackNew->SkipImages += border;
-
- assert(*width >= 3);
- *width = *width - 2 * border;
- if (height && *height >= 3)
- *height = *height - 2 * border;
- if (depth && *depth >= 3)
- *depth = *depth - 2 * border;
-}
-
-
-/**
- * Try to do texture compression via rendering. If the Gallium driver
- * can render into a compressed surface this will allow us to do texture
- * compression.
- * \return GL_TRUE for success, GL_FALSE for failure
- */
-static GLboolean
-compress_with_blit(struct gl_context * ctx,
- GLenum target, GLint level,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLint width, GLint height, GLint depth,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack,
- struct gl_texture_image *texImage)
-{
- const GLuint dstImageOffsets[1] = {0};
- struct st_texture_image *stImage = st_texture_image(texImage);
- struct st_context *st = st_context(ctx);
- struct pipe_context *pipe = st->pipe;
- struct pipe_screen *screen = pipe->screen;
- gl_format mesa_format;
- struct pipe_resource templ;
- struct pipe_resource *src_tex;
- struct pipe_sampler_view view_templ;
- struct pipe_sampler_view *src_view;
- struct pipe_surface *dst_surface, surf_tmpl;
- struct pipe_transfer *tex_xfer;
- void *map;
-
- if (!stImage->pt) {
- /* XXX: Can this happen? Should we assert? */
- return GL_FALSE;
- }
-
- /* get destination surface (in the compressed texture) */
- memset(&surf_tmpl, 0, sizeof(surf_tmpl));
- surf_tmpl.format = stImage->pt->format;
- surf_tmpl.usage = PIPE_BIND_RENDER_TARGET;
- surf_tmpl.u.tex.level = stImage->level;
- surf_tmpl.u.tex.first_layer = stImage->face;
- surf_tmpl.u.tex.last_layer = stImage->face;
- dst_surface = pipe->create_surface(pipe, stImage->pt, &surf_tmpl);
- if (!dst_surface) {
- /* can't render into this format (or other problem) */
- return GL_FALSE;
- }
-
- /* Choose format for the temporary RGBA texture image.
- */
- mesa_format = st_ChooseTextureFormat(ctx, GL_RGBA, format, type);
- assert(mesa_format);
- if (!mesa_format)
- return GL_FALSE;
-
- /* Create the temporary source texture
- */
- memset(&templ, 0, sizeof(templ));
- templ.target = st->internal_target;
- templ.format = st_mesa_format_to_pipe_format(mesa_format);
- templ.width0 = width;
- templ.height0 = height;
- templ.depth0 = 1;
- templ.array_size = 1;
- templ.last_level = 0;
- templ.usage = PIPE_USAGE_DEFAULT;
- templ.bind = PIPE_BIND_SAMPLER_VIEW;
- src_tex = screen->resource_create(screen, &templ);
-
- if (!src_tex)
- return GL_FALSE;
-
- /* Put user's tex data into the temporary texture
- */
- tex_xfer = pipe_get_transfer(st_context(ctx)->pipe, src_tex,
- 0, 0, /* layer, level are zero */
- PIPE_TRANSFER_WRITE,
- 0, 0, width, height); /* x, y, w, h */
- map = pipe_transfer_map(pipe, tex_xfer);
-
- _mesa_texstore(ctx, 2, GL_RGBA, mesa_format,
- map, /* dest ptr */
- 0, 0, 0, /* dest x/y/z offset */
- tex_xfer->stride, /* dest row stride (bytes) */
- dstImageOffsets, /* image offsets (for 3D only) */
- width, height, 1, /* size */
- format, type, /* source format/type */
- pixels, /* source data */
- unpack); /* source data packing */
-
- pipe_transfer_unmap(pipe, tex_xfer);
- pipe->transfer_destroy(pipe, tex_xfer);
-
- /* Create temporary sampler view */
- u_sampler_view_default_template(&view_templ,
- src_tex,
- src_tex->format);
- src_view = pipe->create_sampler_view(pipe, src_tex, &view_templ);
-
-
- /* copy / compress image */
- util_blit_pixels_tex(st->blit,
- src_view, /* sampler view (src) */
- 0, 0, /* src x0, y0 */
- width, height, /* src x1, y1 */
- dst_surface, /* pipe_surface (dst) */
- xoffset, yoffset, /* dst x0, y0 */
- xoffset + width, /* dst x1 */
- yoffset + height, /* dst y1 */
- 0.0, /* z */
- PIPE_TEX_MIPFILTER_NEAREST);
-
- pipe_surface_reference(&dst_surface, NULL);
- pipe_resource_reference(&src_tex, NULL);
- pipe_sampler_view_reference(&src_view, NULL);
-
- return GL_TRUE;
-}
-
-
-/**
- * Do glTexImage1/2/3D().
- */
-static void
-st_TexImage(struct gl_context * ctx,
- GLint dims,
- GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint height, GLint depth,
- GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage,
- GLsizei imageSize, GLboolean compressed_src)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_screen *screen = st->pipe->screen;
- struct st_texture_object *stObj = st_texture_object(texObj);
- struct st_texture_image *stImage = st_texture_image(texImage);
- GLuint dstRowStride = 0;
- struct gl_pixelstore_attrib unpackNB;
- enum pipe_transfer_usage transfer_usage = 0;
-
- DBG("%s target %s level %d %dx%dx%d border %d\n", __FUNCTION__,
- _mesa_lookup_enum_by_nr(target), level, width, height, depth, border);
-
- /* switch to "normal" */
- if (stObj->surface_based) {
- gl_format texFormat;
-
- _mesa_clear_texture_object(ctx, texObj);
- pipe_resource_reference(&stObj->pt, NULL);
-
- /* oops, need to init this image again */
- texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
- internalFormat, format, type);
-
- _mesa_init_teximage_fields(ctx, target, texImage,
- width, height, depth, border,
- internalFormat, texFormat);
-
- stObj->surface_based = GL_FALSE;
- }
-
- /* gallium does not support texture borders, strip it off */
- if (border) {
- strip_texture_border(border, &width, &height, &depth, unpack, &unpackNB);
- unpack = &unpackNB;
- texImage->Width = width;
- texImage->Height = height;
- texImage->Depth = depth;
- texImage->Border = 0;
- border = 0;
- }
- else {
- assert(texImage->Width == width);
- assert(texImage->Height == height);
- assert(texImage->Depth == depth);
- }
-
- stImage->face = _mesa_tex_target_to_face(target);
- stImage->level = level;
-
- _mesa_set_fetch_functions(texImage, dims);
-
- /* Release the reference to a potentially orphaned buffer.
- * Release any old malloced memory.
- */
- if (stImage->pt) {
- pipe_resource_reference(&stImage->pt, NULL);
- assert(!texImage->Data);
- }
- else if (texImage->Data) {
- _mesa_align_free(texImage->Data);
- }
-
- /*
- * See if the new image is somehow incompatible with the existing
- * mipmap. If so, free the old mipmap.
- */
- if (stObj->pt) {
- if (level > (GLint) stObj->pt->last_level ||
- !st_texture_match_image(stObj->pt, &stImage->base,
- stImage->face, stImage->level)) {
- DBG("release it\n");
- pipe_resource_reference(&stObj->pt, NULL);
- assert(!stObj->pt);
- pipe_sampler_view_reference(&stObj->sampler_view, NULL);
- }
- }
-
- if (width == 0 || height == 0 || depth == 0) {
- /* stop after freeing old image */
- return;
- }
-
- if (!stObj->pt) {
- if (!guess_and_alloc_texture(st, stObj, stImage)) {
- /* Probably out of memory.
- * Try flushing any pending rendering, then retry.
- */
- st_finish(st);
- if (!guess_and_alloc_texture(st, stObj, stImage)) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
- return;
- }
- }
- }
-
- assert(!stImage->pt);
-
- /* Check if this texture image can live inside the texture object's buffer.
- * If so, store the image there. Otherwise the image will temporarily live
- * in its own buffer.
- */
- if (stObj->pt &&
- st_texture_match_image(stObj->pt, &stImage->base,
- stImage->face, stImage->level)) {
-
- pipe_resource_reference(&stImage->pt, stObj->pt);
- assert(stImage->pt);
- }
-
- if (!stImage->pt)
- DBG("XXX: Image did not fit into texture - storing in local memory!\n");
-
- /* Pixel data may come from regular user memory or a PBO. For the later,
- * do bounds checking and map the PBO to read pixels data from it.
- *
- * XXX we should try to use a GPU-accelerated path to copy the image data
- * from the PBO to the texture.
- */
- if (compressed_src) {
- pixels = _mesa_validate_pbo_compressed_teximage(ctx, imageSize, pixels,
- unpack,
- "glCompressedTexImage");
- }
- else {
- pixels = _mesa_validate_pbo_teximage(ctx, dims, width, height, 1,
- format, type,
- pixels, unpack, "glTexImage");
- }
-
- /* See if we can do texture compression with a blit/render.
- */
- if (!compressed_src &&
- !ctx->Mesa_DXTn &&
- _mesa_is_format_compressed(texImage->TexFormat) &&
- screen->is_format_supported(screen,
- stImage->pt->format,
- stImage->pt->target, 0,
- PIPE_BIND_RENDER_TARGET, 0)) {
- if (!pixels)
- goto done;
-
- if (compress_with_blit(ctx, target, level, 0, 0, 0, width, height, depth,
- format, type, pixels, unpack, texImage)) {
- goto done;
- }
- }
-
- /*
- * Prepare to store the texture data. Either map the gallium texture buffer
- * memory or malloc space for it.
- */
- if (stImage->pt) {
- /* Store the image in the gallium texture memory buffer */
- if (format == GL_DEPTH_COMPONENT &&
- util_format_is_depth_and_stencil(stImage->pt->format))
- transfer_usage = PIPE_TRANSFER_READ_WRITE;
- else
- transfer_usage = PIPE_TRANSFER_WRITE;
-
- texImage->Data = st_texture_image_map(st, stImage, 0,
- transfer_usage, 0, 0, width, height);
- if(stImage->transfer)
- dstRowStride = stImage->transfer->stride;
- }
- else {
- /* Allocate regular memory and store the image there temporarily. */
- GLuint imageSize = _mesa_format_image_size(texImage->TexFormat,
- width, height, depth);
- dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width);
-
- texImage->Data = _mesa_align_malloc(imageSize, 16);
- }
-
- if (!texImage->Data) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
- return;
- }
-
- if (!pixels) {
- /* We've allocated texture memory, but have no pixel data - all done. */
- goto done;
- }
-
- DBG("Upload image %dx%dx%d row_len %x pitch %x\n",
- width, height, depth, width, dstRowStride);
-
- /* Copy user texture image into the texture buffer.
- */
- if (compressed_src) {
- const GLuint srcRowStride =
- _mesa_format_row_stride(texImage->TexFormat, width);
- if (dstRowStride == srcRowStride) {
- memcpy(texImage->Data, pixels, imageSize);
- }
- else {
- char *dst = texImage->Data;
- const char *src = pixels;
- GLuint i, bw, bh, lines;
- _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh);
- lines = (height + bh - 1) / bh;
-
- for (i = 0; i < lines; ++i) {
- memcpy(dst, src, srcRowStride);
- dst += dstRowStride;
- src += srcRowStride;
- }
- }
- }
- else {
- const GLuint srcImageStride =
- _mesa_image_image_stride(unpack, width, height, format, type);
- GLint i;
- const GLubyte *src = (const GLubyte *) pixels;
-
- for (i = 0; i < depth; i++) {
- if (!_mesa_texstore(ctx, dims,
- texImage->_BaseFormat,
- texImage->TexFormat,
- texImage->Data,
- 0, 0, 0, /* dstX/Y/Zoffset */
- dstRowStride,
- texImage->ImageOffsets,
- width, height, 1,
- format, type, src, unpack)) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
- }
-
- if (stImage->pt && i + 1 < depth) {
- /* unmap this slice */
- st_texture_image_unmap(st, stImage);
- /* map next slice of 3D texture */
- texImage->Data = st_texture_image_map(st, stImage, i + 1,
- transfer_usage, 0, 0,
- width, height);
- src += srcImageStride;
- }
- }
- }
-
-done:
- _mesa_unmap_teximage_pbo(ctx, unpack);
-
- if (stImage->pt && texImage->Data) {
- st_texture_image_unmap(st, stImage);
- texImage->Data = NULL;
- }
-}
-
-
-static void
-st_TexImage3D(struct gl_context * ctx,
- GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint height, GLint depth,
- GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_TexImage(ctx, 3, target, level, internalFormat, width, height, depth,
- border, format, type, pixels, unpack, texObj, texImage,
- 0, GL_FALSE);
-}
-
-
-static void
-st_TexImage2D(struct gl_context * ctx,
- GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_TexImage(ctx, 2, target, level, internalFormat, width, height, 1, border,
- format, type, pixels, unpack, texObj, texImage, 0, GL_FALSE);
-}
-
-
-static void
-st_TexImage1D(struct gl_context * ctx,
- GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_TexImage(ctx, 1, target, level, internalFormat, width, 1, 1, border,
- format, type, pixels, unpack, texObj, texImage, 0, GL_FALSE);
-}
-
-
-static void
-st_CompressedTexImage2D(struct gl_context *ctx, GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLsizei imageSize, const GLvoid *data,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_TexImage(ctx, 2, target, level, internalFormat, width, height, 1, border,
- 0, 0, data, &ctx->Unpack, texObj, texImage, imageSize, GL_TRUE);
-}
-
-
-
-/**
- * glGetTexImage() helper: decompress a compressed texture by rendering
- * a textured quad. Store the results in the user's buffer.
- */
-static void
-decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
- GLenum format, GLenum type, GLvoid *pixels,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_context *pipe = st->pipe;
- struct st_texture_image *stImage = st_texture_image(texImage);
- struct st_texture_object *stObj = st_texture_object(texObj);
- struct pipe_sampler_view *src_view =
- st_get_texture_sampler_view(stObj, pipe);
- const GLuint width = texImage->Width;
- const GLuint height = texImage->Height;
- struct pipe_surface *dst_surface;
- struct pipe_resource *dst_texture;
- struct pipe_transfer *tex_xfer;
- unsigned bind = (PIPE_BIND_RENDER_TARGET | /* util_blit may choose to render */
- PIPE_BIND_TRANSFER_READ);
-
- /* create temp / dest surface */
- if (!util_create_rgba_surface(pipe, width, height, bind,
- &dst_texture, &dst_surface)) {
- _mesa_problem(ctx, "util_create_rgba_surface() failed "
- "in decompress_with_blit()");
- return;
- }
-
- /* blit/render/decompress */
- util_blit_pixels_tex(st->blit,
- src_view, /* pipe_resource (src) */
- 0, 0, /* src x0, y0 */
- width, height, /* src x1, y1 */
- dst_surface, /* pipe_surface (dst) */
- 0, 0, /* dst x0, y0 */
- width, height, /* dst x1, y1 */
- 0.0, /* z */
- PIPE_TEX_MIPFILTER_NEAREST);
-
- /* map the dst_surface so we can read from it */
- tex_xfer = pipe_get_transfer(st_context(ctx)->pipe,
- dst_texture, 0, 0,
- PIPE_TRANSFER_READ,
- 0, 0, width, height);
-
- pixels = _mesa_map_pbo_dest(ctx, &ctx->Pack, pixels);
-
- /* copy/pack data into user buffer */
- if (st_equal_formats(stImage->pt->format, format, type)) {
- /* memcpy */
- const uint bytesPerRow = width * util_format_get_blocksize(stImage->pt->format);
- ubyte *map = pipe_transfer_map(pipe, tex_xfer);
- GLuint row;
- for (row = 0; row < height; row++) {
- GLvoid *dest = _mesa_image_address2d(&ctx->Pack, pixels, width,
- height, format, type, row, 0);
- memcpy(dest, map, bytesPerRow);
- map += tex_xfer->stride;
- }
- pipe_transfer_unmap(pipe, tex_xfer);
- }
- else {
- /* format translation via floats */
- GLuint row;
- enum pipe_format format = util_format_linear(dst_texture->format);
- for (row = 0; row < height; row++) {
- const GLbitfield transferOps = 0x0; /* bypassed for glGetTexImage() */
- GLfloat rgba[4 * MAX_WIDTH];
- GLvoid *dest = _mesa_image_address2d(&ctx->Pack, pixels, width,
- height, format, type, row, 0);
-
- if (ST_DEBUG & DEBUG_FALLBACK)
- debug_printf("%s: fallback format translation\n", __FUNCTION__);
-
- /* get float[4] rgba row from surface */
- pipe_get_tile_rgba_format(pipe, tex_xfer, 0, row, width, 1,
- format, rgba);
-
- _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba, format,
- type, dest, &ctx->Pack, transferOps);
- }
- }
-
- _mesa_unmap_pbo_dest(ctx, &ctx->Pack);
-
- pipe->transfer_destroy(pipe, tex_xfer);
-
- /* destroy the temp / dest surface */
- util_destroy_rgba_surface(dst_texture, dst_surface);
-}
-
-
-
-/**
- * Need to map texture image into memory before copying image data,
- * then unmap it.
- */
-static void
-st_get_tex_image(struct gl_context * ctx, GLenum target, GLint level,
- GLenum format, GLenum type, GLvoid * pixels,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage, GLboolean compressed_dst)
-{
- struct st_context *st = st_context(ctx);
- struct st_texture_image *stImage = st_texture_image(texImage);
- const GLuint dstImageStride =
- _mesa_image_image_stride(&ctx->Pack, texImage->Width, texImage->Height,
- format, type);
- GLuint depth, i;
- GLubyte *dest;
-
- if (stImage->pt &&
- util_format_is_s3tc(stImage->pt->format) &&
- !compressed_dst) {
- /* Need to decompress the texture.
- * We'll do this by rendering a textured quad.
- * Note that we only expect RGBA formats (no Z/depth formats).
- */
- decompress_with_blit(ctx, target, level, format, type, pixels,
- texObj, texImage);
- return;
- }
-
- /* Map */
- if (stImage->pt) {
- /* Image is stored in hardware format in a buffer managed by the
- * kernel. Need to explicitly map and unmap it.
- */
- texImage->Data = st_texture_image_map(st, stImage, 0,
- PIPE_TRANSFER_READ, 0, 0,
- stImage->base.Width,
- stImage->base.Height);
- /* compute stride in texels from stride in bytes */
- texImage->RowStride = stImage->transfer->stride
- * util_format_get_blockwidth(stImage->pt->format)
- / util_format_get_blocksize(stImage->pt->format);
- }
- else {
- /* Otherwise, the image should actually be stored in
- * texImage->Data. This is pretty confusing for
- * everybody, I'd much prefer to separate the two functions of
- * texImage->Data - storage for texture images in main memory
- * and access (ie mappings) of images. In other words, we'd
- * create a new texImage->Map field and leave Data simply for
- * storage.
- */
- assert(texImage->Data);
- }
-
- depth = texImage->Depth;
- texImage->Depth = 1;
-
- dest = (GLubyte *) pixels;
-
- _mesa_set_fetch_functions(texImage, get_texture_dims(target));
-
- for (i = 0; i < depth; i++) {
- if (compressed_dst) {
- _mesa_get_compressed_teximage(ctx, target, level, dest,
- texObj, texImage);
- }
- else {
- _mesa_get_teximage(ctx, target, level, format, type, dest,
- texObj, texImage);
- }
-
- if (stImage->pt && i + 1 < depth) {
- /* unmap this slice */
- st_texture_image_unmap(st, stImage);
- /* map next slice of 3D texture */
- texImage->Data = st_texture_image_map(st, stImage, i + 1,
- PIPE_TRANSFER_READ, 0, 0,
- stImage->base.Width,
- stImage->base.Height);
- dest += dstImageStride;
- }
- }
-
- texImage->Depth = depth;
-
- /* Unmap */
- if (stImage->pt) {
- st_texture_image_unmap(st, stImage);
- texImage->Data = NULL;
- }
-}
-
-
-static void
-st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level,
- GLenum format, GLenum type, GLvoid * pixels,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_get_tex_image(ctx, target, level, format, type, pixels, texObj, texImage,
- GL_FALSE);
-}
-
-
-static void
-st_GetCompressedTexImage(struct gl_context *ctx, GLenum target, GLint level,
- GLvoid *pixels,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_get_tex_image(ctx, target, level, 0, 0, pixels, texObj, texImage,
- GL_TRUE);
-}
-
-
-
-static void
-st_TexSubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint level,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLint width, GLint height, GLint depth,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_screen *screen = st->pipe->screen;
- struct st_texture_image *stImage = st_texture_image(texImage);
- GLuint dstRowStride;
- const GLuint srcImageStride =
- _mesa_image_image_stride(packing, width, height, format, type);
- GLint i;
- const GLubyte *src;
- /* init to silence warning only: */
- enum pipe_transfer_usage transfer_usage = PIPE_TRANSFER_WRITE;
-
- DBG("%s target %s level %d offset %d,%d %dx%d\n", __FUNCTION__,
- _mesa_lookup_enum_by_nr(target),
- level, xoffset, yoffset, width, height);
-
- pixels =
- _mesa_validate_pbo_teximage(ctx, dims, width, height, depth, format,
- type, pixels, packing, "glTexSubImage2D");
- if (!pixels)
- return;
-
- /* See if we can do texture compression with a blit/render.
- */
- if (!ctx->Mesa_DXTn &&
- _mesa_is_format_compressed(texImage->TexFormat) &&
- screen->is_format_supported(screen,
- stImage->pt->format,
- stImage->pt->target, 0,
- PIPE_BIND_RENDER_TARGET, 0)) {
- if (compress_with_blit(ctx, target, level,
- xoffset, yoffset, zoffset,
- width, height, depth,
- format, type, pixels, packing, texImage)) {
- goto done;
- }
- }
-
- /* Map buffer if necessary. Need to lock to prevent other contexts
- * from uploading the buffer under us.
- */
- if (stImage->pt) {
- if (format == GL_DEPTH_COMPONENT &&
- util_format_is_depth_and_stencil(stImage->pt->format))
- transfer_usage = PIPE_TRANSFER_READ_WRITE;
- else
- transfer_usage = PIPE_TRANSFER_WRITE;
-
- texImage->Data = st_texture_image_map(st, stImage, zoffset,
- transfer_usage,
- xoffset, yoffset,
- width, height);
- }
-
- if (!texImage->Data) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
- goto done;
- }
-
- src = (const GLubyte *) pixels;
- dstRowStride = stImage->transfer->stride;
-
- for (i = 0; i < depth; i++) {
- if (!_mesa_texstore(ctx, dims, texImage->_BaseFormat,
- texImage->TexFormat,
- texImage->Data,
- 0, 0, 0,
- dstRowStride,
- texImage->ImageOffsets,
- width, height, 1,
- format, type, src, packing)) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
- }
-
- if (stImage->pt && i + 1 < depth) {
- /* unmap this slice */
- st_texture_image_unmap(st, stImage);
- /* map next slice of 3D texture */
- texImage->Data = st_texture_image_map(st, stImage,
- zoffset + i + 1,
- transfer_usage,
- xoffset, yoffset,
- width, height);
- src += srcImageStride;
- }
- }
-
-done:
- _mesa_unmap_teximage_pbo(ctx, packing);
-
- if (stImage->pt && texImage->Data) {
- st_texture_image_unmap(st, stImage);
- texImage->Data = NULL;
- }
-}
-
-
-
-static void
-st_TexSubImage3D(struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLsizei height, GLsizei depth,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_TexSubimage(ctx, 3, target, level, xoffset, yoffset, zoffset,
- width, height, depth, format, type,
- pixels, packing, texObj, texImage);
-}
-
-
-static void
-st_TexSubImage2D(struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type, const GLvoid * pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_TexSubimage(ctx, 2, target, level, xoffset, yoffset, 0,
- width, height, 1, format, type,
- pixels, packing, texObj, texImage);
-}
-
-
-static void
-st_TexSubImage1D(struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLsizei width, GLenum format, GLenum type,
- const GLvoid * pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- st_TexSubimage(ctx, 1, target, level, xoffset, 0, 0, width, 1, 1,
- format, type, pixels, packing, texObj, texImage);
-}
-
-
-static void
-st_CompressedTexSubImage1D(struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLsizei width,
- GLenum format,
- GLsizei imageSize, const GLvoid *data,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- assert(0);
-}
-
-
-static void
-st_CompressedTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLint height,
- GLenum format,
- GLsizei imageSize, const GLvoid *data,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- struct st_context *st = st_context(ctx);
- struct st_texture_image *stImage = st_texture_image(texImage);
- int srcBlockStride;
- int dstBlockStride;
- int y;
- enum pipe_format pformat;
-
- if (stImage->pt) {
- pformat = stImage->pt->format;
-
- texImage->Data = st_texture_image_map(st, stImage, 0,
- PIPE_TRANSFER_WRITE,
- xoffset, yoffset,
- width, height);
-
- srcBlockStride = util_format_get_stride(pformat, width);
- dstBlockStride = stImage->transfer->stride;
- } else {
- assert(stImage->pt);
- /* TODO find good values for block and strides */
- /* TODO also adjust texImage->data for yoffset/xoffset */
- return;
- }
-
- if (!texImage->Data) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexSubImage");
- return;
- }
-
- assert(xoffset % util_format_get_blockwidth(pformat) == 0);
- assert(yoffset % util_format_get_blockheight(pformat) == 0);
-
- for (y = 0; y < height; y += util_format_get_blockheight(pformat)) {
- /* don't need to adjust for xoffset and yoffset as st_texture_image_map does that */
- const char *src = (const char*)data + srcBlockStride * util_format_get_nblocksy(pformat, y);
- char *dst = (char*)texImage->Data + dstBlockStride * util_format_get_nblocksy(pformat, y);
- memcpy(dst, src, util_format_get_stride(pformat, width));
- }
-
- if (stImage->pt) {
- st_texture_image_unmap(st, stImage);
- texImage->Data = NULL;
- }
-}
-
-
-static void
-st_CompressedTexSubImage3D(struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLint height, GLint depth,
- GLenum format,
- GLsizei imageSize, const GLvoid *data,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage)
-{
- assert(0);
-}
-
-
-
-/**
- * Do a CopyTexSubImage operation using a read transfer from the source,
- * a write transfer to the destination and get_tile()/put_tile() to access
- * the pixels/texels.
- *
- * Note: srcY=0=TOP of renderbuffer
- */
-static void
-fallback_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level,
- struct st_renderbuffer *strb,
- struct st_texture_image *stImage,
- GLenum baseFormat,
- GLint destX, GLint destY, GLint destZ,
- GLint srcX, GLint srcY,
- GLsizei width, GLsizei height)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_context *pipe = st->pipe;
- struct pipe_transfer *src_trans;
- GLvoid *texDest;
- enum pipe_transfer_usage transfer_usage;
-
- if (ST_DEBUG & DEBUG_FALLBACK)
- debug_printf("%s: fallback processing\n", __FUNCTION__);
-
- assert(width <= MAX_WIDTH);
-
- if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
- srcY = strb->Base.Height - srcY - height;
- }
-
- src_trans = pipe_get_transfer(st_context(ctx)->pipe,
- strb->texture,
- 0, 0,
- PIPE_TRANSFER_READ,
- srcX, srcY,
- width, height);
-
- if ((baseFormat == GL_DEPTH_COMPONENT ||
- baseFormat == GL_DEPTH_STENCIL) &&
- util_format_is_depth_and_stencil(stImage->pt->format))
- transfer_usage = PIPE_TRANSFER_READ_WRITE;
- else
- transfer_usage = PIPE_TRANSFER_WRITE;
-
- /* XXX this used to ignore destZ param */
- texDest = st_texture_image_map(st, stImage, destZ, transfer_usage,
- destX, destY, width, height);
-
- if (baseFormat == GL_DEPTH_COMPONENT ||
- baseFormat == GL_DEPTH_STENCIL) {
- const GLboolean scaleOrBias = (ctx->Pixel.DepthScale != 1.0F ||
- ctx->Pixel.DepthBias != 0.0F);
- GLint row, yStep;
-
- /* determine bottom-to-top vs. top-to-bottom order for src buffer */
- if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
- srcY = height - 1;
- yStep = -1;
- }
- else {
- srcY = 0;
- yStep = 1;
- }
-
- /* To avoid a large temp memory allocation, do copy row by row */
- for (row = 0; row < height; row++, srcY += yStep) {
- uint data[MAX_WIDTH];
- pipe_get_tile_z(pipe, src_trans, 0, srcY, width, 1, data);
- if (scaleOrBias) {
- _mesa_scale_and_bias_depth_uint(ctx, width, data);
- }
- pipe_put_tile_z(pipe, stImage->transfer, 0, row, width, 1, data);
- }
- }
- else {
- /* RGBA format */
- GLfloat *tempSrc =
- (GLfloat *) malloc(width * height * 4 * sizeof(GLfloat));
-
- if (tempSrc && texDest) {
- const GLint dims = 2;
- const GLint dstRowStride = stImage->transfer->stride;
- struct gl_texture_image *texImage = &stImage->base;
- struct gl_pixelstore_attrib unpack = ctx->DefaultPacking;
-
- if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
- unpack.Invert = GL_TRUE;
- }
-
- /* get float/RGBA image from framebuffer */
- /* XXX this usually involves a lot of int/float conversion.
- * try to avoid that someday.
- */
- pipe_get_tile_rgba_format(pipe, src_trans, 0, 0, width, height,
- util_format_linear(strb->texture->format),
- tempSrc);
-
- /* Store into texture memory.
- * Note that this does some special things such as pixel transfer
- * ops and format conversion. In particular, if the dest tex format
- * is actually RGBA but the user created the texture as GL_RGB we
- * need to fill-in/override the alpha channel with 1.0.
- */
- _mesa_texstore(ctx, dims,
- texImage->_BaseFormat,
- texImage->TexFormat,
- texDest,
- 0, 0, 0,
- dstRowStride,
- texImage->ImageOffsets,
- width, height, 1,
- GL_RGBA, GL_FLOAT, tempSrc, /* src */
- &unpack);
- }
- else {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
- }
-
- if (tempSrc)
- free(tempSrc);
- }
-
- st_texture_image_unmap(st, stImage);
- pipe->transfer_destroy(pipe, src_trans);
-}
-
-
-
-/**
- * If the format of the src renderbuffer and the format of the dest
- * texture are compatible (in terms of blitting), return a TGSI writemask
- * to be used during the blit.
- * If the src/dest are incompatible, return 0.
- */
-static unsigned
-compatible_src_dst_formats(struct gl_context *ctx,
- const struct gl_renderbuffer *src,
- const struct gl_texture_image *dst)
-{
- /* Get logical base formats for the src and dest.
- * That is, use the user-requested formats and not the actual, device-
- * chosen formats.
- * For example, the user may have requested an A8 texture but the
- * driver may actually be using an RGBA texture format. When we
- * copy/blit to that texture, we only want to copy the Alpha channel
- * and not the RGB channels.
- *
- * Similarly, when the src FBO was created an RGB format may have been
- * requested but the driver actually chose an RGBA format. In that case,
- * we don't want to copy the undefined Alpha channel to the dest texture
- * (it should be 1.0).
- */
- const GLenum srcFormat = _mesa_base_fbo_format(ctx, src->InternalFormat);
- const GLenum dstFormat = _mesa_base_tex_format(ctx, dst->InternalFormat);
-
- /**
- * XXX when we have red-only and red/green renderbuffers we'll need
- * to add more cases here (or implement a general-purpose routine that
- * queries the existance of the R,G,B,A channels in the src and dest).
- */
- if (srcFormat == dstFormat) {
- /* This is the same as matching_base_formats, which should
- * always pass, as it did previously.
- */
- return TGSI_WRITEMASK_XYZW;
- }
- else if (srcFormat == GL_RGB && dstFormat == GL_RGBA) {
- /* Make sure that A in the dest is 1. The actual src format
- * may be RGBA and have undefined A values.
- */
- return TGSI_WRITEMASK_XYZ;
- }
- else if (srcFormat == GL_RGBA && dstFormat == GL_RGB) {
- /* Make sure that A in the dest is 1. The actual dst format
- * may be RGBA and will need A=1 to provide proper alpha values
- * when sampled later.
- */
- return TGSI_WRITEMASK_XYZ;
- }
- else {
- if (ST_DEBUG & DEBUG_FALLBACK)
- debug_printf("%s failed for src %s, dst %s\n",
- __FUNCTION__,
- _mesa_lookup_enum_by_nr(srcFormat),
- _mesa_lookup_enum_by_nr(dstFormat));
-
- /* Otherwise fail.
- */
- return 0;
- }
-}
-
-
-
-/**
- * Do a CopyTex[Sub]Image1/2/3D() using a hardware (blit) path if possible.
- * Note that the region to copy has already been clipped so we know we
- * won't read from outside the source renderbuffer's bounds.
- *
- * Note: srcY=0=Bottom of renderbuffer (GL convention)
- */
-static void
-st_copy_texsubimage(struct gl_context *ctx,
- GLenum target, GLint level,
- GLint destX, GLint destY, GLint destZ,
- GLint srcX, GLint srcY,
- GLsizei width, GLsizei height)
-{
- struct gl_texture_unit *texUnit =
- &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
- struct gl_texture_object *texObj =
- _mesa_select_tex_object(ctx, texUnit, target);
- struct gl_texture_image *texImage =
- _mesa_select_tex_image(ctx, texObj, target, level);
- struct st_texture_image *stImage = st_texture_image(texImage);
- const GLenum texBaseFormat = texImage->_BaseFormat;
- struct gl_framebuffer *fb = ctx->ReadBuffer;
- struct st_renderbuffer *strb;
- struct st_context *st = st_context(ctx);
- struct pipe_context *pipe = st->pipe;
- struct pipe_screen *screen = pipe->screen;
- enum pipe_format dest_format, src_format;
- GLboolean use_fallback = GL_TRUE;
- GLboolean matching_base_formats;
- GLuint format_writemask, sample_count;
- struct pipe_surface *dest_surface = NULL;
- GLboolean do_flip = (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP);
-
- /* make sure finalize_textures has been called?
- */
- if (0) st_validate_state(st);
-
- /* determine if copying depth or color data */
- if (texBaseFormat == GL_DEPTH_COMPONENT ||
- texBaseFormat == GL_DEPTH_STENCIL) {
- strb = st_renderbuffer(fb->_DepthBuffer);
- if (strb->Base.Wrapped) {
- strb = st_renderbuffer(strb->Base.Wrapped);
- }
- }
- else {
- /* texBaseFormat == GL_RGB, GL_RGBA, GL_ALPHA, etc */
- strb = st_renderbuffer(fb->_ColorReadBuffer);
- }
-
- if (!strb || !strb->surface || !stImage->pt) {
- debug_printf("%s: null strb or stImage\n", __FUNCTION__);
- return;
- }
-
- sample_count = strb->surface->texture->nr_samples;
- /* I believe this would be legal, presumably would need to do a resolve
- for color, and for depth/stencil spec says to just use one of the
- depth/stencil samples per pixel? Need some transfer clarifications. */
- assert(sample_count < 2);
-
- if (srcX < 0) {
- width -= -srcX;
- destX += -srcX;
- srcX = 0;
- }
-
- if (srcY < 0) {
- height -= -srcY;
- destY += -srcY;
- srcY = 0;
- }
-
- if (destX < 0) {
- width -= -destX;
- srcX += -destX;
- destX = 0;
- }
-
- if (destY < 0) {
- height -= -destY;
- srcY += -destY;
- destY = 0;
- }
-
- if (width < 0 || height < 0)
- return;
-
-
- assert(strb);
- assert(strb->surface);
- assert(stImage->pt);
-
- src_format = strb->surface->format;
- dest_format = stImage->pt->format;
-
- /*
- * Determine if the src framebuffer and dest texture have the same
- * base format. We need this to detect a case such as the framebuffer
- * being GL_RGBA but the texture being GL_RGB. If the actual hardware
- * texture format stores RGBA we need to set A=1 (overriding the
- * framebuffer's alpha values). We can't do that with the blit or
- * textured-quad paths.
- */
- matching_base_formats =
- (_mesa_get_format_base_format(strb->Base.Format) ==
- _mesa_get_format_base_format(texImage->TexFormat));
- format_writemask = compatible_src_dst_formats(ctx, &strb->Base, texImage);
-
- if (ctx->_ImageTransferState == 0x0) {
-
- if (matching_base_formats &&
- src_format == dest_format &&
- !do_flip)
- {
- /* use surface_copy() / blit */
- struct pipe_box src_box;
- u_box_2d_zslice(srcX, srcY, strb->surface->u.tex.first_layer,
- width, height, &src_box);
-
- /* for resource_copy_region(), y=0=top, always */
- pipe->resource_copy_region(pipe,
- /* dest */
- stImage->pt,
- stImage->level,
- destX, destY, destZ + stImage->face,
- /* src */
- strb->texture,
- strb->surface->u.tex.level,
- &src_box);
- use_fallback = GL_FALSE;
- }
- else if (format_writemask &&
- texBaseFormat != GL_DEPTH_COMPONENT &&
- texBaseFormat != GL_DEPTH_STENCIL &&
- screen->is_format_supported(screen, src_format,
- PIPE_TEXTURE_2D, sample_count,
- PIPE_BIND_SAMPLER_VIEW,
- 0) &&
- screen->is_format_supported(screen, dest_format,
- PIPE_TEXTURE_2D, 0,
- PIPE_BIND_RENDER_TARGET,
- 0)) {
- /* draw textured quad to do the copy */
- GLint srcY0, srcY1;
- struct pipe_surface surf_tmpl;
- memset(&surf_tmpl, 0, sizeof(surf_tmpl));
- surf_tmpl.format = stImage->pt->format;
- surf_tmpl.usage = PIPE_BIND_RENDER_TARGET;
- surf_tmpl.u.tex.level = stImage->level;
- surf_tmpl.u.tex.first_layer = stImage->face + destZ;
- surf_tmpl.u.tex.last_layer = stImage->face + destZ;
-
- dest_surface = pipe->create_surface(pipe, stImage->pt,
- &surf_tmpl);
-
- if (do_flip) {
- srcY1 = strb->Base.Height - srcY - height;
- srcY0 = srcY1 + height;
- }
- else {
- srcY0 = srcY;
- srcY1 = srcY0 + height;
- }
-
- util_blit_pixels_writemask(st->blit,
- strb->texture,
- strb->surface->u.tex.level,
- srcX, srcY0,
- srcX + width, srcY1,
- strb->surface->u.tex.first_layer,
- dest_surface,
- destX, destY,
- destX + width, destY + height,
- 0.0, PIPE_TEX_MIPFILTER_NEAREST,
- format_writemask);
- use_fallback = GL_FALSE;
- }
-
- if (dest_surface)
- pipe_surface_reference(&dest_surface, NULL);
- }
-
- if (use_fallback) {
- /* software fallback */
- fallback_copy_texsubimage(ctx, target, level,
- strb, stImage, texBaseFormat,
- destX, destY, destZ,
- srcX, srcY, width, height);
- }
-}
-
-
-
-static void
-st_CopyTexImage1D(struct gl_context * ctx, GLenum target, GLint level,
- GLenum internalFormat,
- GLint x, GLint y, GLsizei width, GLint border)
-{
- struct gl_texture_unit *texUnit =
- &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
- struct gl_texture_object *texObj =
- _mesa_select_tex_object(ctx, texUnit, target);
- struct gl_texture_image *texImage =
- _mesa_select_tex_image(ctx, texObj, target, level);
-
- /* Setup or redefine the texture object, texture and texture
- * image. Don't populate yet.
- */
- ctx->Driver.TexImage1D(ctx, target, level, internalFormat,
- width, border,
- GL_RGBA, CHAN_TYPE, NULL,
- &ctx->DefaultPacking, texObj, texImage);
-
- st_copy_texsubimage(ctx, target, level,
- 0, 0, 0, /* destX,Y,Z */
- x, y, width, 1); /* src X, Y, size */
-}
-
-
-static void
-st_CopyTexImage2D(struct gl_context * ctx, GLenum target, GLint level,
- GLenum internalFormat,
- GLint x, GLint y, GLsizei width, GLsizei height,
- GLint border)
-{
- struct gl_texture_unit *texUnit =
- &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
- struct gl_texture_object *texObj =
- _mesa_select_tex_object(ctx, texUnit, target);
- struct gl_texture_image *texImage =
- _mesa_select_tex_image(ctx, texObj, target, level);
-
- /* Setup or redefine the texture object, texture and texture
- * image. Don't populate yet.
- */
- ctx->Driver.TexImage2D(ctx, target, level, internalFormat,
- width, height, border,
- GL_RGBA, CHAN_TYPE, NULL,
- &ctx->DefaultPacking, texObj, texImage);
-
- st_copy_texsubimage(ctx, target, level,
- 0, 0, 0, /* destX,Y,Z */
- x, y, width, height); /* src X, Y, size */
-}
-
-
-static void
-st_CopyTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level,
- GLint xoffset, GLint x, GLint y, GLsizei width)
-{
- const GLint yoffset = 0, zoffset = 0;
- const GLsizei height = 1;
- st_copy_texsubimage(ctx, target, level,
- xoffset, yoffset, zoffset, /* destX,Y,Z */
- x, y, width, height); /* src X, Y, size */
-}
-
-
-static void
-st_CopyTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLint x, GLint y, GLsizei width, GLsizei height)
-{
- const GLint zoffset = 0;
- st_copy_texsubimage(ctx, target, level,
- xoffset, yoffset, zoffset, /* destX,Y,Z */
- x, y, width, height); /* src X, Y, size */
-}
-
-
-static void
-st_CopyTexSubImage3D(struct gl_context * ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLint x, GLint y, GLsizei width, GLsizei height)
-{
- st_copy_texsubimage(ctx, target, level,
- xoffset, yoffset, zoffset, /* destX,Y,Z */
- x, y, width, height); /* src X, Y, size */
-}
-
-
-/**
- * Copy image data from stImage into the texture object 'stObj' at level
- * 'dstLevel'.
- */
-static void
-copy_image_data_to_texture(struct st_context *st,
- struct st_texture_object *stObj,
- GLuint dstLevel,
- struct st_texture_image *stImage)
-{
- /* debug checks */
- {
- const struct gl_texture_image *dstImage =
- stObj->base.Image[stImage->face][stImage->level];
- assert(dstImage);
- assert(dstImage->Width == stImage->base.Width);
- assert(dstImage->Height == stImage->base.Height);
- assert(dstImage->Depth == stImage->base.Depth);
- }
-
- if (stImage->pt) {
- /* Copy potentially with the blitter:
- */
- st_texture_image_copy(st->pipe,
- stObj->pt, dstLevel, /* dest texture, level */
- stImage->pt, stImage->level, /* src texture, level */
- stImage->face);
-
- pipe_resource_reference(&stImage->pt, NULL);
- }
- else if (stImage->base.Data) {
- st_texture_image_data(st,
- stObj->pt,
- stImage->face,
- dstLevel,
- stImage->base.Data,
- stImage->base.RowStride *
- util_format_get_blocksize(stObj->pt->format),
- stImage->base.RowStride *
- stImage->base.Height *
- util_format_get_blocksize(stObj->pt->format));
- _mesa_align_free(stImage->base.Data);
- stImage->base.Data = NULL;
- }
-
- pipe_resource_reference(&stImage->pt, stObj->pt);
-}
-
-
-/**
- * Called during state validation. When this function is finished,
- * the texture object should be ready for rendering.
- * \return GL_TRUE for success, GL_FALSE for failure (out of mem)
- */
-GLboolean
-st_finalize_texture(struct gl_context *ctx,
- struct pipe_context *pipe,
- struct gl_texture_object *tObj)
-{
- struct st_context *st = st_context(ctx);
- struct st_texture_object *stObj = st_texture_object(tObj);
- const GLuint nr_faces = (stObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
- GLuint face;
- struct st_texture_image *firstImage;
- enum pipe_format firstImageFormat;
-
- if (stObj->base._Complete) {
- /* The texture is complete and we know exactly how many mipmap levels
- * are present/needed. This is conditional because we may be called
- * from the st_generate_mipmap() function when the texture object is
- * incomplete. In that case, we'll have set stObj->lastLevel before
- * we get here.
- */
- if (stObj->base.MinFilter == GL_LINEAR ||
- stObj->base.MinFilter == GL_NEAREST)
- stObj->lastLevel = stObj->base.BaseLevel;
- else
- stObj->lastLevel = stObj->base._MaxLevel;
- }
-
- firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);
- assert(firstImage);
-
- /* If both firstImage and stObj point to a texture which can contain
- * all active images, favour firstImage. Note that because of the
- * completeness requirement, we know that the image dimensions
- * will match.
- */
- if (firstImage->pt &&
- firstImage->pt != stObj->pt &&
- (!stObj->pt || firstImage->pt->last_level >= stObj->pt->last_level)) {
- pipe_resource_reference(&stObj->pt, firstImage->pt);
- pipe_sampler_view_reference(&stObj->sampler_view, NULL);
- }
-
- /* Find gallium format for the Mesa texture */
- firstImageFormat = st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
-
- /* If we already have a gallium texture, check that it matches the texture
- * object's format, target, size, num_levels, etc.
- */
- if (stObj->pt) {
- if (stObj->pt->target != gl_target_to_pipe(stObj->base.Target) ||
- !st_sampler_compat_formats(stObj->pt->format, firstImageFormat) ||
- stObj->pt->last_level < stObj->lastLevel ||
- stObj->pt->width0 != stObj->width0 ||
- stObj->pt->height0 != stObj->height0 ||
- stObj->pt->depth0 != stObj->depth0)
- {
- /* The gallium texture does not match the Mesa texture so delete the
- * gallium texture now. We'll make a new one below.
- */
- pipe_resource_reference(&stObj->pt, NULL);
- pipe_sampler_view_reference(&stObj->sampler_view, NULL);
- st->dirty.st |= ST_NEW_FRAMEBUFFER;
- }
- }
-
- /* May need to create a new gallium texture:
- */
- if (!stObj->pt) {
- GLuint bindings = default_bindings(st, firstImageFormat);
-
- stObj->pt = st_texture_create(st,
- gl_target_to_pipe(stObj->base.Target),
- firstImageFormat,
- stObj->lastLevel,
- stObj->width0,
- stObj->height0,
- stObj->depth0,
- bindings);
-
- if (!stObj->pt) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
- return GL_FALSE;
- }
- }
-
- /* Pull in any images not in the object's texture:
- */
- for (face = 0; face < nr_faces; face++) {
- GLuint level;
- for (level = stObj->base.BaseLevel; level <= stObj->lastLevel; level++) {
- struct st_texture_image *stImage =
- st_texture_image(stObj->base.Image[face][level]);
-
- /* Need to import images in main memory or held in other textures.
- */
- if (stImage && stObj->pt != stImage->pt) {
- copy_image_data_to_texture(st, stObj, level, stImage);
- }
- }
- }
-
- return GL_TRUE;
-}
-
-
-/**
- * Returns pointer to a default/dummy texture.
- * This is typically used when the current shader has tex/sample instructions
- * but the user has not provided a (any) texture(s).
- */
-struct gl_texture_object *
-st_get_default_texture(struct st_context *st)
-{
- if (!st->default_texture) {
- static const GLenum target = GL_TEXTURE_2D;
- GLubyte pixels[16][16][4];
- struct gl_texture_object *texObj;
- struct gl_texture_image *texImg;
- GLuint i, j;
-
- /* The ARB_fragment_program spec says (0,0,0,1) should be returned
- * when attempting to sample incomplete textures.
- */
- for (i = 0; i < 16; i++) {
- for (j = 0; j < 16; j++) {
- pixels[i][j][0] = 0;
- pixels[i][j][1] = 0;
- pixels[i][j][2] = 0;
- pixels[i][j][3] = 255;
- }
- }
-
- texObj = st->ctx->Driver.NewTextureObject(st->ctx, 0, target);
-
- texImg = _mesa_get_tex_image(st->ctx, texObj, target, 0);
-
- _mesa_init_teximage_fields(st->ctx, target, texImg,
- 16, 16, 1, 0, /* w, h, d, border */
- GL_RGBA, MESA_FORMAT_RGBA8888);
-
- st_TexImage(st->ctx, 2, target,
- 0, GL_RGBA, /* level, intformat */
- 16, 16, 1, 0, /* w, h, d, border */
- GL_RGBA, GL_UNSIGNED_BYTE, pixels,
- &st->ctx->DefaultPacking,
- texObj, texImg,
- 0, 0);
-
- texObj->MinFilter = GL_NEAREST;
- texObj->MagFilter = GL_NEAREST;
- texObj->_Complete = GL_TRUE;
-
- st->default_texture = texObj;
- }
- return st->default_texture;
-}
-
-
-void
-st_init_texture_functions(struct dd_function_table *functions)
-{
- functions->ChooseTextureFormat = st_ChooseTextureFormat;
- functions->TexImage1D = st_TexImage1D;
- functions->TexImage2D = st_TexImage2D;
- functions->TexImage3D = st_TexImage3D;
- functions->TexSubImage1D = st_TexSubImage1D;
- functions->TexSubImage2D = st_TexSubImage2D;
- functions->TexSubImage3D = st_TexSubImage3D;
- functions->CompressedTexSubImage1D = st_CompressedTexSubImage1D;
- functions->CompressedTexSubImage2D = st_CompressedTexSubImage2D;
- functions->CompressedTexSubImage3D = st_CompressedTexSubImage3D;
- functions->CopyTexImage1D = st_CopyTexImage1D;
- functions->CopyTexImage2D = st_CopyTexImage2D;
- functions->CopyTexSubImage1D = st_CopyTexSubImage1D;
- functions->CopyTexSubImage2D = st_CopyTexSubImage2D;
- functions->CopyTexSubImage3D = st_CopyTexSubImage3D;
- functions->GenerateMipmap = st_generate_mipmap;
-
- functions->GetTexImage = st_GetTexImage;
-
- /* compressed texture functions */
- functions->CompressedTexImage2D = st_CompressedTexImage2D;
- functions->GetCompressedTexImage = st_GetCompressedTexImage;
-
- functions->NewTextureObject = st_NewTextureObject;
- functions->NewTextureImage = st_NewTextureImage;
- functions->DeleteTexture = st_DeleteTextureObject;
- functions->FreeTexImageData = st_FreeTextureImageData;
-
- functions->TextureMemCpy = do_memcpy;
-
- /* XXX Temporary until we can query pipe's texture sizes */
- functions->TestProxyTexImage = _mesa_test_proxy_teximage;
-}
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#include "main/mfeatures.h"
+#include "main/bufferobj.h"
+#include "main/enums.h"
+#include "main/fbobject.h"
+#include "main/formats.h"
+#include "main/image.h"
+#include "main/imports.h"
+#include "main/macros.h"
+#include "main/mipmap.h"
+#include "main/pack.h"
+#include "main/pixeltransfer.h"
+#include "main/texcompress.h"
+#include "main/texfetch.h"
+#include "main/texgetimage.h"
+#include "main/teximage.h"
+#include "main/texobj.h"
+#include "main/texstore.h"
+
+#include "state_tracker/st_debug.h"
+#include "state_tracker/st_context.h"
+#include "state_tracker/st_cb_fbo.h"
+#include "state_tracker/st_cb_flush.h"
+#include "state_tracker/st_cb_texture.h"
+#include "state_tracker/st_format.h"
+#include "state_tracker/st_texture.h"
+#include "state_tracker/st_gen_mipmap.h"
+#include "state_tracker/st_atom.h"
+
+#include "pipe/p_context.h"
+#include "pipe/p_defines.h"
+#include "util/u_inlines.h"
+#include "pipe/p_shader_tokens.h"
+#include "util/u_tile.h"
+#include "util/u_blit.h"
+#include "util/u_format.h"
+#include "util/u_surface.h"
+#include "util/u_sampler.h"
+#include "util/u_math.h"
+#include "util/u_box.h"
+
+#define DBG if (0) printf
+
+
+static enum pipe_texture_target
+gl_target_to_pipe(GLenum target)
+{
+ switch (target) {
+ case GL_TEXTURE_1D:
+ return PIPE_TEXTURE_1D;
+ case GL_TEXTURE_2D:
+ return PIPE_TEXTURE_2D;
+ case GL_TEXTURE_RECTANGLE_NV:
+ return PIPE_TEXTURE_RECT;
+ case GL_TEXTURE_3D:
+ return PIPE_TEXTURE_3D;
+ case GL_TEXTURE_CUBE_MAP_ARB:
+ return PIPE_TEXTURE_CUBE;
+ case GL_TEXTURE_1D_ARRAY_EXT:
+ return PIPE_TEXTURE_1D_ARRAY;
+ case GL_TEXTURE_2D_ARRAY_EXT:
+ return PIPE_TEXTURE_2D_ARRAY;
+ default:
+ assert(0);
+ return 0;
+ }
+}
+
+
+/** called via ctx->Driver.NewTextureImage() */
+static struct gl_texture_image *
+st_NewTextureImage(struct gl_context * ctx)
+{
+ DBG("%s\n", __FUNCTION__);
+ (void) ctx;
+ return (struct gl_texture_image *) ST_CALLOC_STRUCT(st_texture_image);
+}
+
+
+/** called via ctx->Driver.NewTextureObject() */
+static struct gl_texture_object *
+st_NewTextureObject(struct gl_context * ctx, GLuint name, GLenum target)
+{
+ struct st_texture_object *obj = ST_CALLOC_STRUCT(st_texture_object);
+
+ DBG("%s\n", __FUNCTION__);
+ _mesa_initialize_texture_object(&obj->base, name, target);
+
+ return &obj->base;
+}
+
+/** called via ctx->Driver.DeleteTextureObject() */
+static void
+st_DeleteTextureObject(struct gl_context *ctx,
+ struct gl_texture_object *texObj)
+{
+ struct st_context *st = st_context(ctx);
+ struct st_texture_object *stObj = st_texture_object(texObj);
+ if (stObj->pt)
+ pipe_resource_reference(&stObj->pt, NULL);
+ if (stObj->sampler_view) {
+ if (stObj->sampler_view->context != st->pipe) {
+ /* Take "ownership" of this texture sampler view by setting
+ * its context pointer to this context. This avoids potential
+ * crashes when the texture object is shared among contexts
+ * and the original/owner context has already been destroyed.
+ */
+ stObj->sampler_view->context = st->pipe;
+ }
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
+ }
+ _mesa_delete_texture_object(ctx, texObj);
+}
+
+
+/** called via ctx->Driver.FreeTexImageData() */
+static void
+st_FreeTextureImageData(struct gl_context * ctx, struct gl_texture_image *texImage)
+{
+ struct st_texture_image *stImage = st_texture_image(texImage);
+
+ DBG("%s\n", __FUNCTION__);
+
+ if (stImage->pt) {
+ pipe_resource_reference(&stImage->pt, NULL);
+ }
+
+ if (texImage->Data) {
+ _mesa_align_free(texImage->Data);
+ texImage->Data = NULL;
+ }
+}
+
+
+/**
+ * From linux kernel i386 header files, copes with odd sizes better
+ * than COPY_DWORDS would:
+ * XXX Put this in src/mesa/main/imports.h ???
+ */
+#if defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86)
+static INLINE void *
+__memcpy(void *to, const void *from, size_t n)
+{
+ int d0, d1, d2;
+ __asm__ __volatile__("rep ; movsl\n\t"
+ "testb $2,%b4\n\t"
+ "je 1f\n\t"
+ "movsw\n"
+ "1:\ttestb $1,%b4\n\t"
+ "je 2f\n\t"
+ "movsb\n" "2:":"=&c"(d0), "=&D"(d1), "=&S"(d2)
+ :"0"(n / 4), "q"(n), "1"((long) to), "2"((long) from)
+ :"memory");
+ return (to);
+}
+#else
+#define __memcpy(a,b,c) memcpy(a,b,c)
+#endif
+
+
+/**
+ * The system memcpy (at least on ubuntu 5.10) has problems copying
+ * to agp (writecombined) memory from a source which isn't 64-byte
+ * aligned - there is a 4x performance falloff.
+ *
+ * The x86 __memcpy is immune to this but is slightly slower
+ * (10%-ish) than the system memcpy.
+ *
+ * The sse_memcpy seems to have a slight cliff at 64/32 bytes, but
+ * isn't much faster than x86_memcpy for agp copies.
+ *
+ * TODO: switch dynamically.
+ */
+static void *
+do_memcpy(void *dest, const void *src, size_t n)
+{
+ if ((((unsigned long) src) & 63) || (((unsigned long) dest) & 63)) {
+ return __memcpy(dest, src, n);
+ }
+ else
+ return memcpy(dest, src, n);
+}
+
+
+/**
+ * Return default texture resource binding bitmask for the given format.
+ */
+static GLuint
+default_bindings(struct st_context *st, enum pipe_format format)
+{
+ struct pipe_screen *screen = st->pipe->screen;
+ const unsigned target = PIPE_TEXTURE_2D;
+ const unsigned geom = 0x0;
+ unsigned bindings;
+
+ if (util_format_is_depth_or_stencil(format))
+ bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_DEPTH_STENCIL;
+ else
+ bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
+
+ if (screen->is_format_supported(screen, format, target, 0, bindings, geom))
+ return bindings;
+ else
+ return PIPE_BIND_SAMPLER_VIEW;
+}
+
+
+/** Return number of image dimensions (1, 2 or 3) for a texture target. */
+static GLuint
+get_texture_dims(GLenum target)
+{
+ switch (target) {
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_1D_ARRAY_EXT:
+ return 1;
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_CUBE_MAP_ARB:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB:
+ case GL_TEXTURE_RECTANGLE_NV:
+ case GL_TEXTURE_2D_ARRAY_EXT:
+ return 2;
+ case GL_TEXTURE_3D:
+ return 3;
+ default:
+ assert(0 && "invalid texture target in get_texture_dims()");
+ return 1;
+ }
+}
+
+
+/**
+ * Try to allocate a pipe_resource object for the given st_texture_object.
+ *
+ * We use the given st_texture_image as a clue to determine the size of the
+ * mipmap image at level=0.
+ *
+ * \return GL_TRUE for success, GL_FALSE if out of memory.
+ */
+static GLboolean
+guess_and_alloc_texture(struct st_context *st,
+ struct st_texture_object *stObj,
+ const struct st_texture_image *stImage)
+{
+ const GLuint dims = get_texture_dims(stObj->base.Target);
+ GLuint level, lastLevel, width, height, depth;
+ GLuint bindings;
+ enum pipe_format fmt;
+
+ DBG("%s\n", __FUNCTION__);
+
+ assert(!stObj->pt);
+
+ level = stImage->level;
+ width = stImage->base.Width2; /* size w/out border */
+ height = stImage->base.Height2;
+ depth = stImage->base.Depth2;
+
+ assert(width > 0);
+ assert(height > 0);
+ assert(depth > 0);
+
+ /* Depending on the image's size, we can't always make a guess here.
+ */
+ if (level > 0) {
+ if ( (dims >= 1 && width == 1) ||
+ (dims >= 2 && height == 1) ||
+ (dims >= 3 && depth == 1) ) {
+ /* we can't determine the image size at level=0 */
+ stObj->width0 = stObj->height0 = stObj->depth0 = 0;
+ /* this is not an out of memory error */
+ return GL_TRUE;
+ }
+ }
+
+ /* grow the image size until we hit level = 0 */
+ while (level > 0) {
+ if (width != 1)
+ width <<= 1;
+ if (height != 1)
+ height <<= 1;
+ if (depth != 1)
+ depth <<= 1;
+ level--;
+ }
+
+ assert(level == 0);
+
+ /* At this point, (width x height x depth) is the expected size of
+ * the level=0 mipmap image.
+ */
+
+ /* Guess a reasonable value for lastLevel. With OpenGL we have no
+ * idea how many mipmap levels will be in a texture until we start
+ * to render with it. Make an educated guess here but be prepared
+ * to re-allocating a texture buffer with space for more (or fewer)
+ * mipmap levels later.
+ */
+ if ((stObj->base.MinFilter == GL_NEAREST ||
+ stObj->base.MinFilter == GL_LINEAR ||
+ stImage->base._BaseFormat == GL_DEPTH_COMPONENT ||
+ stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) &&
+ !stObj->base.GenerateMipmap &&
+ stImage->level == 0) {
+ /* only alloc space for a single mipmap level */
+ lastLevel = 0;
+ }
+ else {
+ /* alloc space for a full mipmap */
+ GLuint l2width = util_logbase2(width);
+ GLuint l2height = util_logbase2(height);
+ GLuint l2depth = util_logbase2(depth);
+ lastLevel = MAX2(MAX2(l2width, l2height), l2depth);
+ }
+
+ /* Save the level=0 dimensions */
+ stObj->width0 = width;
+ stObj->height0 = height;
+ stObj->depth0 = depth;
+
+ fmt = st_mesa_format_to_pipe_format(stImage->base.TexFormat);
+
+ bindings = default_bindings(st, fmt);
+
+ stObj->pt = st_texture_create(st,
+ gl_target_to_pipe(stObj->base.Target),
+ fmt,
+ lastLevel,
+ width,
+ height,
+ depth,
+ bindings);
+
+ DBG("%s returning %d\n", __FUNCTION__, (stObj->pt != NULL));
+
+ return stObj->pt != NULL;
+}
+
+
+/**
+ * Adjust pixel unpack params and image dimensions to strip off the
+ * texture border.
+ * Gallium doesn't support texture borders. They've seldem been used
+ * and seldom been implemented correctly anyway.
+ * \param unpackNew returns the new pixel unpack parameters
+ */
+static void
+strip_texture_border(GLint border,
+ GLint *width, GLint *height, GLint *depth,
+ const struct gl_pixelstore_attrib *unpack,
+ struct gl_pixelstore_attrib *unpackNew)
+{
+ assert(border > 0); /* sanity check */
+
+ *unpackNew = *unpack;
+
+ if (unpackNew->RowLength == 0)
+ unpackNew->RowLength = *width;
+
+ if (depth && unpackNew->ImageHeight == 0)
+ unpackNew->ImageHeight = *height;
+
+ unpackNew->SkipPixels += border;
+ if (height)
+ unpackNew->SkipRows += border;
+ if (depth)
+ unpackNew->SkipImages += border;
+
+ assert(*width >= 3);
+ *width = *width - 2 * border;
+ if (height && *height >= 3)
+ *height = *height - 2 * border;
+ if (depth && *depth >= 3)
+ *depth = *depth - 2 * border;
+}
+
+
+/**
+ * Try to do texture compression via rendering. If the Gallium driver
+ * can render into a compressed surface this will allow us to do texture
+ * compression.
+ * \return GL_TRUE for success, GL_FALSE for failure
+ */
+static GLboolean
+compress_with_blit(struct gl_context * ctx,
+ GLenum target, GLint level,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLint width, GLint height, GLint depth,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *unpack,
+ struct gl_texture_image *texImage)
+{
+ const GLuint dstImageOffsets[1] = {0};
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
+ struct pipe_screen *screen = pipe->screen;
+ gl_format mesa_format;
+ struct pipe_resource templ;
+ struct pipe_resource *src_tex;
+ struct pipe_sampler_view view_templ;
+ struct pipe_sampler_view *src_view;
+ struct pipe_surface *dst_surface, surf_tmpl;
+ struct pipe_transfer *tex_xfer;
+ void *map;
+
+ if (!stImage->pt) {
+ /* XXX: Can this happen? Should we assert? */
+ return GL_FALSE;
+ }
+
+ /* get destination surface (in the compressed texture) */
+ memset(&surf_tmpl, 0, sizeof(surf_tmpl));
+ surf_tmpl.format = stImage->pt->format;
+ surf_tmpl.usage = PIPE_BIND_RENDER_TARGET;
+ surf_tmpl.u.tex.level = stImage->level;
+ surf_tmpl.u.tex.first_layer = stImage->face;
+ surf_tmpl.u.tex.last_layer = stImage->face;
+ dst_surface = pipe->create_surface(pipe, stImage->pt, &surf_tmpl);
+ if (!dst_surface) {
+ /* can't render into this format (or other problem) */
+ return GL_FALSE;
+ }
+
+ /* Choose format for the temporary RGBA texture image.
+ */
+ mesa_format = st_ChooseTextureFormat(ctx, GL_RGBA, format, type);
+ assert(mesa_format);
+ if (!mesa_format)
+ return GL_FALSE;
+
+ /* Create the temporary source texture
+ */
+ memset(&templ, 0, sizeof(templ));
+ templ.target = st->internal_target;
+ templ.format = st_mesa_format_to_pipe_format(mesa_format);
+ templ.width0 = width;
+ templ.height0 = height;
+ templ.depth0 = 1;
+ templ.array_size = 1;
+ templ.last_level = 0;
+ templ.usage = PIPE_USAGE_DEFAULT;
+ templ.bind = PIPE_BIND_SAMPLER_VIEW;
+ src_tex = screen->resource_create(screen, &templ);
+
+ if (!src_tex)
+ return GL_FALSE;
+
+ /* Put user's tex data into the temporary texture
+ */
+ tex_xfer = pipe_get_transfer(st_context(ctx)->pipe, src_tex,
+ 0, 0, /* layer, level are zero */
+ PIPE_TRANSFER_WRITE,
+ 0, 0, width, height); /* x, y, w, h */
+ map = pipe_transfer_map(pipe, tex_xfer);
+
+ _mesa_texstore(ctx, 2, GL_RGBA, mesa_format,
+ map, /* dest ptr */
+ 0, 0, 0, /* dest x/y/z offset */
+ tex_xfer->stride, /* dest row stride (bytes) */
+ dstImageOffsets, /* image offsets (for 3D only) */
+ width, height, 1, /* size */
+ format, type, /* source format/type */
+ pixels, /* source data */
+ unpack); /* source data packing */
+
+ pipe_transfer_unmap(pipe, tex_xfer);
+ pipe->transfer_destroy(pipe, tex_xfer);
+
+ /* Create temporary sampler view */
+ u_sampler_view_default_template(&view_templ,
+ src_tex,
+ src_tex->format);
+ src_view = pipe->create_sampler_view(pipe, src_tex, &view_templ);
+
+
+ /* copy / compress image */
+ util_blit_pixels_tex(st->blit,
+ src_view, /* sampler view (src) */
+ 0, 0, /* src x0, y0 */
+ width, height, /* src x1, y1 */
+ dst_surface, /* pipe_surface (dst) */
+ xoffset, yoffset, /* dst x0, y0 */
+ xoffset + width, /* dst x1 */
+ yoffset + height, /* dst y1 */
+ 0.0, /* z */
+ PIPE_TEX_MIPFILTER_NEAREST);
+
+ pipe_surface_reference(&dst_surface, NULL);
+ pipe_resource_reference(&src_tex, NULL);
+ pipe_sampler_view_reference(&src_view, NULL);
+
+ return GL_TRUE;
+}
+
+
+/**
+ * Do glTexImage1/2/3D().
+ */
+static void
+st_TexImage(struct gl_context * ctx,
+ GLint dims,
+ GLenum target, GLint level,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth,
+ GLint border,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *unpack,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage,
+ GLsizei imageSize, GLboolean compressed_src)
+{
+ struct st_context *st = st_context(ctx);
+ struct pipe_screen *screen = st->pipe->screen;
+ struct st_texture_object *stObj = st_texture_object(texObj);
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ GLuint dstRowStride = 0;
+ struct gl_pixelstore_attrib unpackNB;
+ enum pipe_transfer_usage transfer_usage = 0;
+
+ DBG("%s target %s level %d %dx%dx%d border %d\n", __FUNCTION__,
+ _mesa_lookup_enum_by_nr(target), level, width, height, depth, border);
+
+ /* switch to "normal" */
+ if (stObj->surface_based) {
+ gl_format texFormat;
+
+ _mesa_clear_texture_object(ctx, texObj);
+ pipe_resource_reference(&stObj->pt, NULL);
+
+ /* oops, need to init this image again */
+ texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+ internalFormat, format, type);
+
+ _mesa_init_teximage_fields(ctx, target, texImage,
+ width, height, depth, border,
+ internalFormat, texFormat);
+
+ stObj->surface_based = GL_FALSE;
+ }
+
+ /* gallium does not support texture borders, strip it off */
+ if (border) {
+ strip_texture_border(border, &width, &height, &depth, unpack, &unpackNB);
+ unpack = &unpackNB;
+ texImage->Width = width;
+ texImage->Height = height;
+ texImage->Depth = depth;
+ texImage->Border = 0;
+ border = 0;
+ }
+ else {
+ assert(texImage->Width == width);
+ assert(texImage->Height == height);
+ assert(texImage->Depth == depth);
+ }
+
+ stImage->face = _mesa_tex_target_to_face(target);
+ stImage->level = level;
+
+ _mesa_set_fetch_functions(texImage, dims);
+
+ /* Release the reference to a potentially orphaned buffer.
+ * Release any old malloced memory.
+ */
+ if (stImage->pt) {
+ pipe_resource_reference(&stImage->pt, NULL);
+ assert(!texImage->Data);
+ }
+ else if (texImage->Data) {
+ _mesa_align_free(texImage->Data);
+ }
+
+ /*
+ * See if the new image is somehow incompatible with the existing
+ * mipmap. If so, free the old mipmap.
+ */
+ if (stObj->pt) {
+ if (level > (GLint) stObj->pt->last_level ||
+ !st_texture_match_image(stObj->pt, &stImage->base,
+ stImage->face, stImage->level)) {
+ DBG("release it\n");
+ pipe_resource_reference(&stObj->pt, NULL);
+ assert(!stObj->pt);
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
+ }
+ }
+
+ if (width == 0 || height == 0 || depth == 0) {
+ /* stop after freeing old image */
+ return;
+ }
+
+ if (!stObj->pt) {
+ if (!guess_and_alloc_texture(st, stObj, stImage)) {
+ /* Probably out of memory.
+ * Try flushing any pending rendering, then retry.
+ */
+ st_finish(st);
+ if (!guess_and_alloc_texture(st, stObj, stImage)) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
+ return;
+ }
+ }
+ }
+
+ assert(!stImage->pt);
+
+ /* Check if this texture image can live inside the texture object's buffer.
+ * If so, store the image there. Otherwise the image will temporarily live
+ * in its own buffer.
+ */
+ if (stObj->pt &&
+ st_texture_match_image(stObj->pt, &stImage->base,
+ stImage->face, stImage->level)) {
+
+ pipe_resource_reference(&stImage->pt, stObj->pt);
+ assert(stImage->pt);
+ }
+
+ if (!stImage->pt)
+ DBG("XXX: Image did not fit into texture - storing in local memory!\n");
+
+ /* Pixel data may come from regular user memory or a PBO. For the later,
+ * do bounds checking and map the PBO to read pixels data from it.
+ *
+ * XXX we should try to use a GPU-accelerated path to copy the image data
+ * from the PBO to the texture.
+ */
+ if (compressed_src) {
+ pixels = _mesa_validate_pbo_compressed_teximage(ctx, imageSize, pixels,
+ unpack,
+ "glCompressedTexImage");
+ }
+ else {
+ pixels = _mesa_validate_pbo_teximage(ctx, dims, width, height, 1,
+ format, type,
+ pixels, unpack, "glTexImage");
+ }
+
+ /* See if we can do texture compression with a blit/render.
+ */
+ if (!compressed_src &&
+ !ctx->Mesa_DXTn &&
+ _mesa_is_format_compressed(texImage->TexFormat) &&
+ screen->is_format_supported(screen,
+ stImage->pt->format,
+ stImage->pt->target, 0,
+ PIPE_BIND_RENDER_TARGET, 0)) {
+ if (!pixels)
+ goto done;
+
+ if (compress_with_blit(ctx, target, level, 0, 0, 0, width, height, depth,
+ format, type, pixels, unpack, texImage)) {
+ goto done;
+ }
+ }
+
+ /*
+ * Prepare to store the texture data. Either map the gallium texture buffer
+ * memory or malloc space for it.
+ */
+ if (stImage->pt) {
+ /* Store the image in the gallium texture memory buffer */
+ if (format == GL_DEPTH_COMPONENT &&
+ util_format_is_depth_and_stencil(stImage->pt->format))
+ transfer_usage = PIPE_TRANSFER_READ_WRITE;
+ else
+ transfer_usage = PIPE_TRANSFER_WRITE;
+
+ texImage->Data = st_texture_image_map(st, stImage, 0,
+ transfer_usage, 0, 0, width, height);
+ if(stImage->transfer)
+ dstRowStride = stImage->transfer->stride;
+ }
+ else {
+ /* Allocate regular memory and store the image there temporarily. */
+ GLuint imageSize = _mesa_format_image_size(texImage->TexFormat,
+ width, height, depth);
+ dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width);
+
+ texImage->Data = _mesa_align_malloc(imageSize, 16);
+ }
+
+ if (!texImage->Data) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
+ return;
+ }
+
+ if (!pixels) {
+ /* We've allocated texture memory, but have no pixel data - all done. */
+ goto done;
+ }
+
+ DBG("Upload image %dx%dx%d row_len %x pitch %x\n",
+ width, height, depth, width, dstRowStride);
+
+ /* Copy user texture image into the texture buffer.
+ */
+ if (compressed_src) {
+ const GLuint srcRowStride =
+ _mesa_format_row_stride(texImage->TexFormat, width);
+ if (dstRowStride == srcRowStride) {
+ memcpy(texImage->Data, pixels, imageSize);
+ }
+ else {
+ char *dst = texImage->Data;
+ const char *src = pixels;
+ GLuint i, bw, bh, lines;
+ _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh);
+ lines = (height + bh - 1) / bh;
+
+ for (i = 0; i < lines; ++i) {
+ memcpy(dst, src, srcRowStride);
+ dst += dstRowStride;
+ src += srcRowStride;
+ }
+ }
+ }
+ else {
+ const GLuint srcImageStride =
+ _mesa_image_image_stride(unpack, width, height, format, type);
+ GLint i;
+ const GLubyte *src = (const GLubyte *) pixels;
+
+ for (i = 0; i < depth; i++) {
+ if (!_mesa_texstore(ctx, dims,
+ texImage->_BaseFormat,
+ texImage->TexFormat,
+ texImage->Data,
+ 0, 0, 0, /* dstX/Y/Zoffset */
+ dstRowStride,
+ texImage->ImageOffsets,
+ width, height, 1,
+ format, type, src, unpack)) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
+ }
+
+ if (stImage->pt && i + 1 < depth) {
+ /* unmap this slice */
+ st_texture_image_unmap(st, stImage);
+ /* map next slice of 3D texture */
+ texImage->Data = st_texture_image_map(st, stImage, i + 1,
+ transfer_usage, 0, 0,
+ width, height);
+ src += srcImageStride;
+ }
+ }
+ }
+
+done:
+ _mesa_unmap_teximage_pbo(ctx, unpack);
+
+ if (stImage->pt && texImage->Data) {
+ st_texture_image_unmap(st, stImage);
+ texImage->Data = NULL;
+ }
+}
+
+
+static void
+st_TexImage3D(struct gl_context * ctx,
+ GLenum target, GLint level,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth,
+ GLint border,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *unpack,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_TexImage(ctx, 3, target, level, internalFormat, width, height, depth,
+ border, format, type, pixels, unpack, texObj, texImage,
+ 0, GL_FALSE);
+}
+
+
+static void
+st_TexImage2D(struct gl_context * ctx,
+ GLenum target, GLint level,
+ GLint internalFormat,
+ GLint width, GLint height, GLint border,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *unpack,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_TexImage(ctx, 2, target, level, internalFormat, width, height, 1, border,
+ format, type, pixels, unpack, texObj, texImage, 0, GL_FALSE);
+}
+
+
+static void
+st_TexImage1D(struct gl_context * ctx,
+ GLenum target, GLint level,
+ GLint internalFormat,
+ GLint width, GLint border,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *unpack,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_TexImage(ctx, 1, target, level, internalFormat, width, 1, 1, border,
+ format, type, pixels, unpack, texObj, texImage, 0, GL_FALSE);
+}
+
+
+static void
+st_CompressedTexImage2D(struct gl_context *ctx, GLenum target, GLint level,
+ GLint internalFormat,
+ GLint width, GLint height, GLint border,
+ GLsizei imageSize, const GLvoid *data,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_TexImage(ctx, 2, target, level, internalFormat, width, height, 1, border,
+ 0, 0, data, &ctx->Unpack, texObj, texImage, imageSize, GL_TRUE);
+}
+
+
+
+/**
+ * glGetTexImage() helper: decompress a compressed texture by rendering
+ * a textured quad. Store the results in the user's buffer.
+ */
+static void
+decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
+ GLenum format, GLenum type, GLvoid *pixels,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ struct st_texture_object *stObj = st_texture_object(texObj);
+ struct pipe_sampler_view *src_view =
+ st_get_texture_sampler_view(stObj, pipe);
+ const GLuint width = texImage->Width;
+ const GLuint height = texImage->Height;
+ struct pipe_surface *dst_surface;
+ struct pipe_resource *dst_texture;
+ struct pipe_transfer *tex_xfer;
+ unsigned bind = (PIPE_BIND_RENDER_TARGET | /* util_blit may choose to render */
+ PIPE_BIND_TRANSFER_READ);
+
+ /* create temp / dest surface */
+ if (!util_create_rgba_surface(pipe, width, height, bind,
+ &dst_texture, &dst_surface)) {
+ _mesa_problem(ctx, "util_create_rgba_surface() failed "
+ "in decompress_with_blit()");
+ return;
+ }
+
+ /* blit/render/decompress */
+ util_blit_pixels_tex(st->blit,
+ src_view, /* pipe_resource (src) */
+ 0, 0, /* src x0, y0 */
+ width, height, /* src x1, y1 */
+ dst_surface, /* pipe_surface (dst) */
+ 0, 0, /* dst x0, y0 */
+ width, height, /* dst x1, y1 */
+ 0.0, /* z */
+ PIPE_TEX_MIPFILTER_NEAREST);
+
+ /* map the dst_surface so we can read from it */
+ tex_xfer = pipe_get_transfer(st_context(ctx)->pipe,
+ dst_texture, 0, 0,
+ PIPE_TRANSFER_READ,
+ 0, 0, width, height);
+
+ pixels = _mesa_map_pbo_dest(ctx, &ctx->Pack, pixels);
+
+ /* copy/pack data into user buffer */
+ if (st_equal_formats(stImage->pt->format, format, type)) {
+ /* memcpy */
+ const uint bytesPerRow = width * util_format_get_blocksize(stImage->pt->format);
+ ubyte *map = pipe_transfer_map(pipe, tex_xfer);
+ GLuint row;
+ for (row = 0; row < height; row++) {
+ GLvoid *dest = _mesa_image_address2d(&ctx->Pack, pixels, width,
+ height, format, type, row, 0);
+ memcpy(dest, map, bytesPerRow);
+ map += tex_xfer->stride;
+ }
+ pipe_transfer_unmap(pipe, tex_xfer);
+ }
+ else {
+ /* format translation via floats */
+ GLuint row;
+ enum pipe_format format = util_format_linear(dst_texture->format);
+ for (row = 0; row < height; row++) {
+ const GLbitfield transferOps = 0x0; /* bypassed for glGetTexImage() */
+ GLfloat rgba[4 * MAX_WIDTH];
+ GLvoid *dest = _mesa_image_address2d(&ctx->Pack, pixels, width,
+ height, format, type, row, 0);
+
+ if (ST_DEBUG & DEBUG_FALLBACK)
+ debug_printf("%s: fallback format translation\n", __FUNCTION__);
+
+ /* get float[4] rgba row from surface */
+ pipe_get_tile_rgba_format(pipe, tex_xfer, 0, row, width, 1,
+ format, rgba);
+
+ _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba, format,
+ type, dest, &ctx->Pack, transferOps);
+ }
+ }
+
+ _mesa_unmap_pbo_dest(ctx, &ctx->Pack);
+
+ pipe->transfer_destroy(pipe, tex_xfer);
+
+ /* destroy the temp / dest surface */
+ util_destroy_rgba_surface(dst_texture, dst_surface);
+}
+
+
+
+/**
+ * Need to map texture image into memory before copying image data,
+ * then unmap it.
+ */
+static void
+st_get_tex_image(struct gl_context * ctx, GLenum target, GLint level,
+ GLenum format, GLenum type, GLvoid * pixels,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage, GLboolean compressed_dst)
+{
+ struct st_context *st = st_context(ctx);
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ const GLuint dstImageStride =
+ _mesa_image_image_stride(&ctx->Pack, texImage->Width, texImage->Height,
+ format, type);
+ GLuint depth, i;
+ GLubyte *dest;
+
+ if (stImage->pt &&
+ util_format_is_s3tc(stImage->pt->format) &&
+ !compressed_dst) {
+ /* Need to decompress the texture.
+ * We'll do this by rendering a textured quad.
+ * Note that we only expect RGBA formats (no Z/depth formats).
+ */
+ decompress_with_blit(ctx, target, level, format, type, pixels,
+ texObj, texImage);
+ return;
+ }
+
+ /* Map */
+ if (stImage->pt) {
+ /* Image is stored in hardware format in a buffer managed by the
+ * kernel. Need to explicitly map and unmap it.
+ */
+ texImage->Data = st_texture_image_map(st, stImage, 0,
+ PIPE_TRANSFER_READ, 0, 0,
+ stImage->base.Width,
+ stImage->base.Height);
+ /* compute stride in texels from stride in bytes */
+ texImage->RowStride = stImage->transfer->stride
+ * util_format_get_blockwidth(stImage->pt->format)
+ / util_format_get_blocksize(stImage->pt->format);
+ }
+ else {
+ /* Otherwise, the image should actually be stored in
+ * texImage->Data. This is pretty confusing for
+ * everybody, I'd much prefer to separate the two functions of
+ * texImage->Data - storage for texture images in main memory
+ * and access (ie mappings) of images. In other words, we'd
+ * create a new texImage->Map field and leave Data simply for
+ * storage.
+ */
+ assert(texImage->Data);
+ }
+
+ depth = texImage->Depth;
+ texImage->Depth = 1;
+
+ dest = (GLubyte *) pixels;
+
+ _mesa_set_fetch_functions(texImage, get_texture_dims(target));
+
+ for (i = 0; i < depth; i++) {
+ if (compressed_dst) {
+ _mesa_get_compressed_teximage(ctx, target, level, dest,
+ texObj, texImage);
+ }
+ else {
+ _mesa_get_teximage(ctx, target, level, format, type, dest,
+ texObj, texImage);
+ }
+
+ if (stImage->pt && i + 1 < depth) {
+ /* unmap this slice */
+ st_texture_image_unmap(st, stImage);
+ /* map next slice of 3D texture */
+ texImage->Data = st_texture_image_map(st, stImage, i + 1,
+ PIPE_TRANSFER_READ, 0, 0,
+ stImage->base.Width,
+ stImage->base.Height);
+ dest += dstImageStride;
+ }
+ }
+
+ texImage->Depth = depth;
+
+ /* Unmap */
+ if (stImage->pt) {
+ st_texture_image_unmap(st, stImage);
+ texImage->Data = NULL;
+ }
+}
+
+
+static void
+st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level,
+ GLenum format, GLenum type, GLvoid * pixels,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_get_tex_image(ctx, target, level, format, type, pixels, texObj, texImage,
+ GL_FALSE);
+}
+
+
+static void
+st_GetCompressedTexImage(struct gl_context *ctx, GLenum target, GLint level,
+ GLvoid *pixels,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_get_tex_image(ctx, target, level, 0, 0, pixels, texObj, texImage,
+ GL_TRUE);
+}
+
+
+
+static void
+st_TexSubimage(struct gl_context *ctx, GLint dims, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLint width, GLint height, GLint depth,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *packing,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ struct st_context *st = st_context(ctx);
+ struct pipe_screen *screen = st->pipe->screen;
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ GLuint dstRowStride;
+ const GLuint srcImageStride =
+ _mesa_image_image_stride(packing, width, height, format, type);
+ GLint i;
+ const GLubyte *src;
+ /* init to silence warning only: */
+ enum pipe_transfer_usage transfer_usage = PIPE_TRANSFER_WRITE;
+
+ DBG("%s target %s level %d offset %d,%d %dx%d\n", __FUNCTION__,
+ _mesa_lookup_enum_by_nr(target),
+ level, xoffset, yoffset, width, height);
+
+ pixels =
+ _mesa_validate_pbo_teximage(ctx, dims, width, height, depth, format,
+ type, pixels, packing, "glTexSubImage2D");
+ if (!pixels)
+ return;
+
+ /* See if we can do texture compression with a blit/render.
+ */
+ if (!ctx->Mesa_DXTn &&
+ _mesa_is_format_compressed(texImage->TexFormat) &&
+ screen->is_format_supported(screen,
+ stImage->pt->format,
+ stImage->pt->target, 0,
+ PIPE_BIND_RENDER_TARGET, 0)) {
+ if (compress_with_blit(ctx, target, level,
+ xoffset, yoffset, zoffset,
+ width, height, depth,
+ format, type, pixels, packing, texImage)) {
+ goto done;
+ }
+ }
+
+ /* Map buffer if necessary. Need to lock to prevent other contexts
+ * from uploading the buffer under us.
+ */
+ if (stImage->pt) {
+ if (format == GL_DEPTH_COMPONENT &&
+ util_format_is_depth_and_stencil(stImage->pt->format))
+ transfer_usage = PIPE_TRANSFER_READ_WRITE;
+ else
+ transfer_usage = PIPE_TRANSFER_WRITE;
+
+ texImage->Data = st_texture_image_map(st, stImage, zoffset,
+ transfer_usage,
+ xoffset, yoffset,
+ width, height);
+ }
+
+ if (!texImage->Data) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
+ goto done;
+ }
+
+ src = (const GLubyte *) pixels;
+ dstRowStride = stImage->transfer->stride;
+
+ for (i = 0; i < depth; i++) {
+ if (!_mesa_texstore(ctx, dims, texImage->_BaseFormat,
+ texImage->TexFormat,
+ texImage->Data,
+ 0, 0, 0,
+ dstRowStride,
+ texImage->ImageOffsets,
+ width, height, 1,
+ format, type, src, packing)) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
+ }
+
+ if (stImage->pt && i + 1 < depth) {
+ /* unmap this slice */
+ st_texture_image_unmap(st, stImage);
+ /* map next slice of 3D texture */
+ texImage->Data = st_texture_image_map(st, stImage,
+ zoffset + i + 1,
+ transfer_usage,
+ xoffset, yoffset,
+ width, height);
+ src += srcImageStride;
+ }
+ }
+
+done:
+ _mesa_unmap_teximage_pbo(ctx, packing);
+
+ if (stImage->pt && texImage->Data) {
+ st_texture_image_unmap(st, stImage);
+ texImage->Data = NULL;
+ }
+}
+
+
+
+static void
+st_TexSubImage3D(struct gl_context *ctx, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLsizei width, GLsizei height, GLsizei depth,
+ GLenum format, GLenum type, const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *packing,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_TexSubimage(ctx, 3, target, level, xoffset, yoffset, zoffset,
+ width, height, depth, format, type,
+ pixels, packing, texObj, texImage);
+}
+
+
+static void
+st_TexSubImage2D(struct gl_context *ctx, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height,
+ GLenum format, GLenum type, const GLvoid * pixels,
+ const struct gl_pixelstore_attrib *packing,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_TexSubimage(ctx, 2, target, level, xoffset, yoffset, 0,
+ width, height, 1, format, type,
+ pixels, packing, texObj, texImage);
+}
+
+
+static void
+st_TexSubImage1D(struct gl_context *ctx, GLenum target, GLint level,
+ GLint xoffset, GLsizei width, GLenum format, GLenum type,
+ const GLvoid * pixels,
+ const struct gl_pixelstore_attrib *packing,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ st_TexSubimage(ctx, 1, target, level, xoffset, 0, 0, width, 1, 1,
+ format, type, pixels, packing, texObj, texImage);
+}
+
+
+static void
+st_CompressedTexSubImage1D(struct gl_context *ctx, GLenum target, GLint level,
+ GLint xoffset, GLsizei width,
+ GLenum format,
+ GLsizei imageSize, const GLvoid *data,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ assert(0);
+}
+
+
+static void
+st_CompressedTexSubImage2D(struct gl_context *ctx, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLsizei width, GLint height,
+ GLenum format,
+ GLsizei imageSize, const GLvoid *data,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ struct st_context *st = st_context(ctx);
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ int srcBlockStride;
+ int dstBlockStride;
+ int y;
+ enum pipe_format pformat;
+
+ if (stImage->pt) {
+ pformat = stImage->pt->format;
+
+ texImage->Data = st_texture_image_map(st, stImage, 0,
+ PIPE_TRANSFER_WRITE,
+ xoffset, yoffset,
+ width, height);
+
+ srcBlockStride = util_format_get_stride(pformat, width);
+ dstBlockStride = stImage->transfer->stride;
+ } else {
+ assert(stImage->pt);
+ /* TODO find good values for block and strides */
+ /* TODO also adjust texImage->data for yoffset/xoffset */
+ return;
+ }
+
+ if (!texImage->Data) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexSubImage");
+ return;
+ }
+
+ assert(xoffset % util_format_get_blockwidth(pformat) == 0);
+ assert(yoffset % util_format_get_blockheight(pformat) == 0);
+
+ for (y = 0; y < height; y += util_format_get_blockheight(pformat)) {
+ /* don't need to adjust for xoffset and yoffset as st_texture_image_map does that */
+ const char *src = (const char*)data + srcBlockStride * util_format_get_nblocksy(pformat, y);
+ char *dst = (char*)texImage->Data + dstBlockStride * util_format_get_nblocksy(pformat, y);
+ memcpy(dst, src, util_format_get_stride(pformat, width));
+ }
+
+ if (stImage->pt) {
+ st_texture_image_unmap(st, stImage);
+ texImage->Data = NULL;
+ }
+}
+
+
+static void
+st_CompressedTexSubImage3D(struct gl_context *ctx, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLsizei width, GLint height, GLint depth,
+ GLenum format,
+ GLsizei imageSize, const GLvoid *data,
+ struct gl_texture_object *texObj,
+ struct gl_texture_image *texImage)
+{
+ assert(0);
+}
+
+
+
+/**
+ * Do a CopyTexSubImage operation using a read transfer from the source,
+ * a write transfer to the destination and get_tile()/put_tile() to access
+ * the pixels/texels.
+ *
+ * Note: srcY=0=TOP of renderbuffer
+ */
+static void
+fallback_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level,
+ struct st_renderbuffer *strb,
+ struct st_texture_image *stImage,
+ GLenum baseFormat,
+ GLint destX, GLint destY, GLint destZ,
+ GLint srcX, GLint srcY,
+ GLsizei width, GLsizei height)
+{
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
+ struct pipe_transfer *src_trans;
+ GLvoid *texDest;
+ enum pipe_transfer_usage transfer_usage;
+
+ if (ST_DEBUG & DEBUG_FALLBACK)
+ debug_printf("%s: fallback processing\n", __FUNCTION__);
+
+ assert(width <= MAX_WIDTH);
+
+ if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
+ srcY = strb->Base.Height - srcY - height;
+ }
+
+ src_trans = pipe_get_transfer(st_context(ctx)->pipe,
+ strb->texture,
+ 0, 0,
+ PIPE_TRANSFER_READ,
+ srcX, srcY,
+ width, height);
+
+ if ((baseFormat == GL_DEPTH_COMPONENT ||
+ baseFormat == GL_DEPTH_STENCIL) &&
+ util_format_is_depth_and_stencil(stImage->pt->format))
+ transfer_usage = PIPE_TRANSFER_READ_WRITE;
+ else
+ transfer_usage = PIPE_TRANSFER_WRITE;
+
+ /* XXX this used to ignore destZ param */
+ texDest = st_texture_image_map(st, stImage, destZ, transfer_usage,
+ destX, destY, width, height);
+
+ if (baseFormat == GL_DEPTH_COMPONENT ||
+ baseFormat == GL_DEPTH_STENCIL) {
+ const GLboolean scaleOrBias = (ctx->Pixel.DepthScale != 1.0F ||
+ ctx->Pixel.DepthBias != 0.0F);
+ GLint row, yStep;
+
+ /* determine bottom-to-top vs. top-to-bottom order for src buffer */
+ if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
+ srcY = height - 1;
+ yStep = -1;
+ }
+ else {
+ srcY = 0;
+ yStep = 1;
+ }
+
+ /* To avoid a large temp memory allocation, do copy row by row */
+ for (row = 0; row < height; row++, srcY += yStep) {
+ uint data[MAX_WIDTH];
+ pipe_get_tile_z(pipe, src_trans, 0, srcY, width, 1, data);
+ if (scaleOrBias) {
+ _mesa_scale_and_bias_depth_uint(ctx, width, data);
+ }
+ pipe_put_tile_z(pipe, stImage->transfer, 0, row, width, 1, data);
+ }
+ }
+ else {
+ /* RGBA format */
+ GLfloat *tempSrc =
+ (GLfloat *) malloc(width * height * 4 * sizeof(GLfloat));
+
+ if (tempSrc && texDest) {
+ const GLint dims = 2;
+ const GLint dstRowStride = stImage->transfer->stride;
+ struct gl_texture_image *texImage = &stImage->base;
+ struct gl_pixelstore_attrib unpack = ctx->DefaultPacking;
+
+ if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
+ unpack.Invert = GL_TRUE;
+ }
+
+ /* get float/RGBA image from framebuffer */
+ /* XXX this usually involves a lot of int/float conversion.
+ * try to avoid that someday.
+ */
+ pipe_get_tile_rgba_format(pipe, src_trans, 0, 0, width, height,
+ util_format_linear(strb->texture->format),
+ tempSrc);
+
+ /* Store into texture memory.
+ * Note that this does some special things such as pixel transfer
+ * ops and format conversion. In particular, if the dest tex format
+ * is actually RGBA but the user created the texture as GL_RGB we
+ * need to fill-in/override the alpha channel with 1.0.
+ */
+ _mesa_texstore(ctx, dims,
+ texImage->_BaseFormat,
+ texImage->TexFormat,
+ texDest,
+ 0, 0, 0,
+ dstRowStride,
+ texImage->ImageOffsets,
+ width, height, 1,
+ GL_RGBA, GL_FLOAT, tempSrc, /* src */
+ &unpack);
+ }
+ else {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage");
+ }
+
+ if (tempSrc)
+ free(tempSrc);
+ }
+
+ st_texture_image_unmap(st, stImage);
+ pipe->transfer_destroy(pipe, src_trans);
+}
+
+
+
+/**
+ * If the format of the src renderbuffer and the format of the dest
+ * texture are compatible (in terms of blitting), return a TGSI writemask
+ * to be used during the blit.
+ * If the src/dest are incompatible, return 0.
+ */
+static unsigned
+compatible_src_dst_formats(struct gl_context *ctx,
+ const struct gl_renderbuffer *src,
+ const struct gl_texture_image *dst)
+{
+ /* Get logical base formats for the src and dest.
+ * That is, use the user-requested formats and not the actual, device-
+ * chosen formats.
+ * For example, the user may have requested an A8 texture but the
+ * driver may actually be using an RGBA texture format. When we
+ * copy/blit to that texture, we only want to copy the Alpha channel
+ * and not the RGB channels.
+ *
+ * Similarly, when the src FBO was created an RGB format may have been
+ * requested but the driver actually chose an RGBA format. In that case,
+ * we don't want to copy the undefined Alpha channel to the dest texture
+ * (it should be 1.0).
+ */
+ const GLenum srcFormat = _mesa_base_fbo_format(ctx, src->InternalFormat);
+ const GLenum dstFormat = _mesa_base_tex_format(ctx, dst->InternalFormat);
+
+ /**
+ * XXX when we have red-only and red/green renderbuffers we'll need
+ * to add more cases here (or implement a general-purpose routine that
+ * queries the existance of the R,G,B,A channels in the src and dest).
+ */
+ if (srcFormat == dstFormat) {
+ /* This is the same as matching_base_formats, which should
+ * always pass, as it did previously.
+ */
+ return TGSI_WRITEMASK_XYZW;
+ }
+ else if (srcFormat == GL_RGB && dstFormat == GL_RGBA) {
+ /* Make sure that A in the dest is 1. The actual src format
+ * may be RGBA and have undefined A values.
+ */
+ return TGSI_WRITEMASK_XYZ;
+ }
+ else if (srcFormat == GL_RGBA && dstFormat == GL_RGB) {
+ /* Make sure that A in the dest is 1. The actual dst format
+ * may be RGBA and will need A=1 to provide proper alpha values
+ * when sampled later.
+ */
+ return TGSI_WRITEMASK_XYZ;
+ }
+ else {
+ if (ST_DEBUG & DEBUG_FALLBACK)
+ debug_printf("%s failed for src %s, dst %s\n",
+ __FUNCTION__,
+ _mesa_lookup_enum_by_nr(srcFormat),
+ _mesa_lookup_enum_by_nr(dstFormat));
+
+ /* Otherwise fail.
+ */
+ return 0;
+ }
+}
+
+
+
+/**
+ * Do a CopyTex[Sub]Image1/2/3D() using a hardware (blit) path if possible.
+ * Note that the region to copy has already been clipped so we know we
+ * won't read from outside the source renderbuffer's bounds.
+ *
+ * Note: srcY=0=Bottom of renderbuffer (GL convention)
+ */
+static void
+st_copy_texsubimage(struct gl_context *ctx,
+ GLenum target, GLint level,
+ GLint destX, GLint destY, GLint destZ,
+ GLint srcX, GLint srcY,
+ GLsizei width, GLsizei height)
+{
+ struct gl_texture_unit *texUnit =
+ &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+ struct gl_texture_object *texObj =
+ _mesa_select_tex_object(ctx, texUnit, target);
+ struct gl_texture_image *texImage =
+ _mesa_select_tex_image(ctx, texObj, target, level);
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ const GLenum texBaseFormat = texImage->_BaseFormat;
+ struct gl_framebuffer *fb = ctx->ReadBuffer;
+ struct st_renderbuffer *strb;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
+ struct pipe_screen *screen = pipe->screen;
+ enum pipe_format dest_format, src_format;
+ GLboolean use_fallback = GL_TRUE;
+ GLboolean matching_base_formats;
+ GLuint format_writemask, sample_count;
+ struct pipe_surface *dest_surface = NULL;
+ GLboolean do_flip = (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP);
+
+ /* make sure finalize_textures has been called?
+ */
+ if (0) st_validate_state(st);
+
+ /* determine if copying depth or color data */
+ if (texBaseFormat == GL_DEPTH_COMPONENT ||
+ texBaseFormat == GL_DEPTH_STENCIL) {
+ strb = st_renderbuffer(fb->_DepthBuffer);
+ if (strb->Base.Wrapped) {
+ strb = st_renderbuffer(strb->Base.Wrapped);
+ }
+ }
+ else {
+ /* texBaseFormat == GL_RGB, GL_RGBA, GL_ALPHA, etc */
+ strb = st_renderbuffer(fb->_ColorReadBuffer);
+ }
+
+ if (!strb || !strb->surface || !stImage->pt) {
+ debug_printf("%s: null strb or stImage\n", __FUNCTION__);
+ return;
+ }
+
+ sample_count = strb->surface->texture->nr_samples;
+ /* I believe this would be legal, presumably would need to do a resolve
+ for color, and for depth/stencil spec says to just use one of the
+ depth/stencil samples per pixel? Need some transfer clarifications. */
+ assert(sample_count < 2);
+
+ if (srcX < 0) {
+ width -= -srcX;
+ destX += -srcX;
+ srcX = 0;
+ }
+
+ if (srcY < 0) {
+ height -= -srcY;
+ destY += -srcY;
+ srcY = 0;
+ }
+
+ if (destX < 0) {
+ width -= -destX;
+ srcX += -destX;
+ destX = 0;
+ }
+
+ if (destY < 0) {
+ height -= -destY;
+ srcY += -destY;
+ destY = 0;
+ }
+
+ if (width < 0 || height < 0)
+ return;
+
+
+ assert(strb);
+ assert(strb->surface);
+ assert(stImage->pt);
+
+ src_format = strb->surface->format;
+ dest_format = stImage->pt->format;
+
+ /*
+ * Determine if the src framebuffer and dest texture have the same
+ * base format. We need this to detect a case such as the framebuffer
+ * being GL_RGBA but the texture being GL_RGB. If the actual hardware
+ * texture format stores RGBA we need to set A=1 (overriding the
+ * framebuffer's alpha values). We can't do that with the blit or
+ * textured-quad paths.
+ */
+ matching_base_formats =
+ (_mesa_get_format_base_format(strb->Base.Format) ==
+ _mesa_get_format_base_format(texImage->TexFormat));
+ format_writemask = compatible_src_dst_formats(ctx, &strb->Base, texImage);
+
+ if (ctx->_ImageTransferState == 0x0) {
+
+ if (matching_base_formats &&
+ src_format == dest_format &&
+ !do_flip)
+ {
+ /* use surface_copy() / blit */
+ struct pipe_box src_box;
+ u_box_2d_zslice(srcX, srcY, strb->surface->u.tex.first_layer,
+ width, height, &src_box);
+
+ /* for resource_copy_region(), y=0=top, always */
+ pipe->resource_copy_region(pipe,
+ /* dest */
+ stImage->pt,
+ stImage->level,
+ destX, destY, destZ + stImage->face,
+ /* src */
+ strb->texture,
+ strb->surface->u.tex.level,
+ &src_box);
+ use_fallback = GL_FALSE;
+ }
+ else if (format_writemask &&
+ texBaseFormat != GL_DEPTH_COMPONENT &&
+ texBaseFormat != GL_DEPTH_STENCIL &&
+ screen->is_format_supported(screen, src_format,
+ PIPE_TEXTURE_2D, sample_count,
+ PIPE_BIND_SAMPLER_VIEW,
+ 0) &&
+ screen->is_format_supported(screen, dest_format,
+ PIPE_TEXTURE_2D, 0,
+ PIPE_BIND_RENDER_TARGET,
+ 0)) {
+ /* draw textured quad to do the copy */
+ GLint srcY0, srcY1;
+ struct pipe_surface surf_tmpl;
+ memset(&surf_tmpl, 0, sizeof(surf_tmpl));
+ surf_tmpl.format = stImage->pt->format;
+ surf_tmpl.usage = PIPE_BIND_RENDER_TARGET;
+ surf_tmpl.u.tex.level = stImage->level;
+ surf_tmpl.u.tex.first_layer = stImage->face + destZ;
+ surf_tmpl.u.tex.last_layer = stImage->face + destZ;
+
+ dest_surface = pipe->create_surface(pipe, stImage->pt,
+ &surf_tmpl);
+
+ if (do_flip) {
+ srcY1 = strb->Base.Height - srcY - height;
+ srcY0 = srcY1 + height;
+ }
+ else {
+ srcY0 = srcY;
+ srcY1 = srcY0 + height;
+ }
+
+ util_blit_pixels_writemask(st->blit,
+ strb->texture,
+ strb->surface->u.tex.level,
+ srcX, srcY0,
+ srcX + width, srcY1,
+ strb->surface->u.tex.first_layer,
+ dest_surface,
+ destX, destY,
+ destX + width, destY + height,
+ 0.0, PIPE_TEX_MIPFILTER_NEAREST,
+ format_writemask);
+ use_fallback = GL_FALSE;
+ }
+
+ if (dest_surface)
+ pipe_surface_reference(&dest_surface, NULL);
+ }
+
+ if (use_fallback) {
+ /* software fallback */
+ fallback_copy_texsubimage(ctx, target, level,
+ strb, stImage, texBaseFormat,
+ destX, destY, destZ,
+ srcX, srcY, width, height);
+ }
+}
+
+
+
+static void
+st_CopyTexImage1D(struct gl_context * ctx, GLenum target, GLint level,
+ GLenum internalFormat,
+ GLint x, GLint y, GLsizei width, GLint border)
+{
+ struct gl_texture_unit *texUnit =
+ &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+ struct gl_texture_object *texObj =
+ _mesa_select_tex_object(ctx, texUnit, target);
+ struct gl_texture_image *texImage =
+ _mesa_select_tex_image(ctx, texObj, target, level);
+
+ /* Setup or redefine the texture object, texture and texture
+ * image. Don't populate yet.
+ */
+ ctx->Driver.TexImage1D(ctx, target, level, internalFormat,
+ width, border,
+ GL_RGBA, CHAN_TYPE, NULL,
+ &ctx->DefaultPacking, texObj, texImage);
+
+ st_copy_texsubimage(ctx, target, level,
+ 0, 0, 0, /* destX,Y,Z */
+ x, y, width, 1); /* src X, Y, size */
+}
+
+
+static void
+st_CopyTexImage2D(struct gl_context * ctx, GLenum target, GLint level,
+ GLenum internalFormat,
+ GLint x, GLint y, GLsizei width, GLsizei height,
+ GLint border)
+{
+ struct gl_texture_unit *texUnit =
+ &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+ struct gl_texture_object *texObj =
+ _mesa_select_tex_object(ctx, texUnit, target);
+ struct gl_texture_image *texImage =
+ _mesa_select_tex_image(ctx, texObj, target, level);
+
+ /* Setup or redefine the texture object, texture and texture
+ * image. Don't populate yet.
+ */
+ ctx->Driver.TexImage2D(ctx, target, level, internalFormat,
+ width, height, border,
+ GL_RGBA, CHAN_TYPE, NULL,
+ &ctx->DefaultPacking, texObj, texImage);
+
+ st_copy_texsubimage(ctx, target, level,
+ 0, 0, 0, /* destX,Y,Z */
+ x, y, width, height); /* src X, Y, size */
+}
+
+
+static void
+st_CopyTexSubImage1D(struct gl_context * ctx, GLenum target, GLint level,
+ GLint xoffset, GLint x, GLint y, GLsizei width)
+{
+ const GLint yoffset = 0, zoffset = 0;
+ const GLsizei height = 1;
+ st_copy_texsubimage(ctx, target, level,
+ xoffset, yoffset, zoffset, /* destX,Y,Z */
+ x, y, width, height); /* src X, Y, size */
+}
+
+
+static void
+st_CopyTexSubImage2D(struct gl_context * ctx, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset,
+ GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ const GLint zoffset = 0;
+ st_copy_texsubimage(ctx, target, level,
+ xoffset, yoffset, zoffset, /* destX,Y,Z */
+ x, y, width, height); /* src X, Y, size */
+}
+
+
+static void
+st_CopyTexSubImage3D(struct gl_context * ctx, GLenum target, GLint level,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ st_copy_texsubimage(ctx, target, level,
+ xoffset, yoffset, zoffset, /* destX,Y,Z */
+ x, y, width, height); /* src X, Y, size */
+}
+
+
+/**
+ * Copy image data from stImage into the texture object 'stObj' at level
+ * 'dstLevel'.
+ */
+static void
+copy_image_data_to_texture(struct st_context *st,
+ struct st_texture_object *stObj,
+ GLuint dstLevel,
+ struct st_texture_image *stImage)
+{
+ /* debug checks */
+ {
+ const struct gl_texture_image *dstImage =
+ stObj->base.Image[stImage->face][stImage->level];
+ assert(dstImage);
+ assert(dstImage->Width == stImage->base.Width);
+ assert(dstImage->Height == stImage->base.Height);
+ assert(dstImage->Depth == stImage->base.Depth);
+ }
+
+ if (stImage->pt) {
+ /* Copy potentially with the blitter:
+ */
+ st_texture_image_copy(st->pipe,
+ stObj->pt, dstLevel, /* dest texture, level */
+ stImage->pt, stImage->level, /* src texture, level */
+ stImage->face);
+
+ pipe_resource_reference(&stImage->pt, NULL);
+ }
+ else if (stImage->base.Data) {
+ st_texture_image_data(st,
+ stObj->pt,
+ stImage->face,
+ dstLevel,
+ stImage->base.Data,
+ stImage->base.RowStride *
+ util_format_get_blocksize(stObj->pt->format),
+ stImage->base.RowStride *
+ stImage->base.Height *
+ util_format_get_blocksize(stObj->pt->format));
+ _mesa_align_free(stImage->base.Data);
+ stImage->base.Data = NULL;
+ }
+
+ pipe_resource_reference(&stImage->pt, stObj->pt);
+}
+
+
+/**
+ * Called during state validation. When this function is finished,
+ * the texture object should be ready for rendering.
+ * \return GL_TRUE for success, GL_FALSE for failure (out of mem)
+ */
+GLboolean
+st_finalize_texture(struct gl_context *ctx,
+ struct pipe_context *pipe,
+ struct gl_texture_object *tObj)
+{
+ struct st_context *st = st_context(ctx);
+ struct st_texture_object *stObj = st_texture_object(tObj);
+ const GLuint nr_faces = (stObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
+ GLuint face;
+ struct st_texture_image *firstImage;
+ enum pipe_format firstImageFormat;
+
+ if (stObj->base._Complete) {
+ /* The texture is complete and we know exactly how many mipmap levels
+ * are present/needed. This is conditional because we may be called
+ * from the st_generate_mipmap() function when the texture object is
+ * incomplete. In that case, we'll have set stObj->lastLevel before
+ * we get here.
+ */
+ if (stObj->base.MinFilter == GL_LINEAR ||
+ stObj->base.MinFilter == GL_NEAREST)
+ stObj->lastLevel = stObj->base.BaseLevel;
+ else
+ stObj->lastLevel = stObj->base._MaxLevel;
+ }
+
+ firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);
+ assert(firstImage);
+
+ /* If both firstImage and stObj point to a texture which can contain
+ * all active images, favour firstImage. Note that because of the
+ * completeness requirement, we know that the image dimensions
+ * will match.
+ */
+ if (firstImage->pt &&
+ firstImage->pt != stObj->pt &&
+ (!stObj->pt || firstImage->pt->last_level >= stObj->pt->last_level)) {
+ pipe_resource_reference(&stObj->pt, firstImage->pt);
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
+ }
+
+ /* Find gallium format for the Mesa texture */
+ firstImageFormat = st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
+
+ /* If we already have a gallium texture, check that it matches the texture
+ * object's format, target, size, num_levels, etc.
+ */
+ if (stObj->pt) {
+ if (stObj->pt->target != gl_target_to_pipe(stObj->base.Target) ||
+ !st_sampler_compat_formats(stObj->pt->format, firstImageFormat) ||
+ stObj->pt->last_level < stObj->lastLevel ||
+ stObj->pt->width0 != stObj->width0 ||
+ stObj->pt->height0 != stObj->height0 ||
+ stObj->pt->depth0 != stObj->depth0)
+ {
+ /* The gallium texture does not match the Mesa texture so delete the
+ * gallium texture now. We'll make a new one below.
+ */
+ pipe_resource_reference(&stObj->pt, NULL);
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
+ st->dirty.st |= ST_NEW_FRAMEBUFFER;
+ }
+ }
+
+ /* May need to create a new gallium texture:
+ */
+ if (!stObj->pt) {
+ GLuint bindings = default_bindings(st, firstImageFormat);
+
+ stObj->pt = st_texture_create(st,
+ gl_target_to_pipe(stObj->base.Target),
+ firstImageFormat,
+ stObj->lastLevel,
+ stObj->width0,
+ stObj->height0,
+ stObj->depth0,
+ bindings);
+
+ if (!stObj->pt) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
+ return GL_FALSE;
+ }
+ }
+
+ /* Pull in any images not in the object's texture:
+ */
+ for (face = 0; face < nr_faces; face++) {
+ GLuint level;
+ for (level = stObj->base.BaseLevel; level <= stObj->lastLevel; level++) {
+ struct st_texture_image *stImage =
+ st_texture_image(stObj->base.Image[face][level]);
+
+ /* Need to import images in main memory or held in other textures.
+ */
+ if (stImage && stObj->pt != stImage->pt) {
+ copy_image_data_to_texture(st, stObj, level, stImage);
+ }
+ }
+ }
+
+ return GL_TRUE;
+}
+
+
+/**
+ * Returns pointer to a default/dummy texture.
+ * This is typically used when the current shader has tex/sample instructions
+ * but the user has not provided a (any) texture(s).
+ */
+struct gl_texture_object *
+st_get_default_texture(struct st_context *st)
+{
+ if (!st->default_texture) {
+ static const GLenum target = GL_TEXTURE_2D;
+ GLubyte pixels[16][16][4];
+ struct gl_texture_object *texObj;
+ struct gl_texture_image *texImg;
+ GLuint i, j;
+
+ /* The ARB_fragment_program spec says (0,0,0,1) should be returned
+ * when attempting to sample incomplete textures.
+ */
+ for (i = 0; i < 16; i++) {
+ for (j = 0; j < 16; j++) {
+ pixels[i][j][0] = 0;
+ pixels[i][j][1] = 0;
+ pixels[i][j][2] = 0;
+ pixels[i][j][3] = 255;
+ }
+ }
+
+ texObj = st->ctx->Driver.NewTextureObject(st->ctx, 0, target);
+
+ texImg = _mesa_get_tex_image(st->ctx, texObj, target, 0);
+
+ _mesa_init_teximage_fields(st->ctx, target, texImg,
+ 16, 16, 1, 0, /* w, h, d, border */
+ GL_RGBA, MESA_FORMAT_RGBA8888);
+
+ st_TexImage(st->ctx, 2, target,
+ 0, GL_RGBA, /* level, intformat */
+ 16, 16, 1, 0, /* w, h, d, border */
+ GL_RGBA, GL_UNSIGNED_BYTE, pixels,
+ &st->ctx->DefaultPacking,
+ texObj, texImg,
+ 0, 0);
+
+ texObj->MinFilter = GL_NEAREST;
+ texObj->MagFilter = GL_NEAREST;
+ texObj->_Complete = GL_TRUE;
+
+ st->default_texture = texObj;
+ }
+ return st->default_texture;
+}
+
+
+void
+st_init_texture_functions(struct dd_function_table *functions)
+{
+ functions->ChooseTextureFormat = st_ChooseTextureFormat;
+ functions->TexImage1D = st_TexImage1D;
+ functions->TexImage2D = st_TexImage2D;
+ functions->TexImage3D = st_TexImage3D;
+ functions->TexSubImage1D = st_TexSubImage1D;
+ functions->TexSubImage2D = st_TexSubImage2D;
+ functions->TexSubImage3D = st_TexSubImage3D;
+ functions->CompressedTexSubImage1D = st_CompressedTexSubImage1D;
+ functions->CompressedTexSubImage2D = st_CompressedTexSubImage2D;
+ functions->CompressedTexSubImage3D = st_CompressedTexSubImage3D;
+ functions->CopyTexImage1D = st_CopyTexImage1D;
+ functions->CopyTexImage2D = st_CopyTexImage2D;
+ functions->CopyTexSubImage1D = st_CopyTexSubImage1D;
+ functions->CopyTexSubImage2D = st_CopyTexSubImage2D;
+ functions->CopyTexSubImage3D = st_CopyTexSubImage3D;
+ functions->GenerateMipmap = st_generate_mipmap;
+
+ functions->GetTexImage = st_GetTexImage;
+
+ /* compressed texture functions */
+ functions->CompressedTexImage2D = st_CompressedTexImage2D;
+ functions->GetCompressedTexImage = st_GetCompressedTexImage;
+
+ functions->NewTextureObject = st_NewTextureObject;
+ functions->NewTextureImage = st_NewTextureImage;
+ functions->DeleteTexture = st_DeleteTextureObject;
+ functions->FreeTexImageData = st_FreeTextureImageData;
+
+ functions->TextureMemCpy = do_memcpy;
+
+ /* XXX Temporary until we can query pipe's texture sizes */
+ functions->TestProxyTexImage = _mesa_test_proxy_teximage;
+}
diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c
index d7ed7ea3a..a81cbe85d 100644
--- a/mesalib/src/mesa/state_tracker/st_extensions.c
+++ b/mesalib/src/mesa/state_tracker/st_extensions.c
@@ -420,6 +420,12 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.MESA_ycbcr_texture = GL_TRUE;
}
+ /* GL_EXT_texture_array */
+ if (screen->get_param(screen, PIPE_CAP_ARRAY_TEXTURES)) {
+ ctx->Extensions.EXT_texture_array = GL_TRUE;
+ ctx->Extensions.MESA_texture_array = GL_TRUE;
+ }
+
/* GL_ARB_framebuffer_object */
if (ctx->Extensions.EXT_packed_depth_stencil) {
/* we support always support GL_EXT_framebuffer_blit */
diff --git a/mesalib/src/mesa/state_tracker/st_mesa_to_tgsi.c b/mesalib/src/mesa/state_tracker/st_mesa_to_tgsi.c
index 87c69e4dd..5c68fd78c 100644
--- a/mesalib/src/mesa/state_tracker/st_mesa_to_tgsi.c
+++ b/mesalib/src/mesa/state_tracker/st_mesa_to_tgsi.c
@@ -1,1247 +1,1249 @@
-/**************************************************************************
- *
- * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/*
- * \author
- * Michal Krol,
- * Keith Whitwell
- */
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_context.h"
-#include "pipe/p_screen.h"
-#include "pipe/p_shader_tokens.h"
-#include "pipe/p_state.h"
-#include "tgsi/tgsi_ureg.h"
-#include "st_mesa_to_tgsi.h"
-#include "st_context.h"
-#include "program/prog_instruction.h"
-#include "program/prog_parameter.h"
-#include "util/u_debug.h"
-#include "util/u_math.h"
-#include "util/u_memory.h"
-
-
-#define PROGRAM_ANY_CONST ((1 << PROGRAM_LOCAL_PARAM) | \
- (1 << PROGRAM_ENV_PARAM) | \
- (1 << PROGRAM_STATE_VAR) | \
- (1 << PROGRAM_NAMED_PARAM) | \
- (1 << PROGRAM_CONSTANT) | \
- (1 << PROGRAM_UNIFORM))
-
-
-struct label {
- unsigned branch_target;
- unsigned token;
-};
-
-
-/**
- * Intermediate state used during shader translation.
- */
-struct st_translate {
- struct ureg_program *ureg;
-
- struct ureg_dst temps[MAX_PROGRAM_TEMPS];
- struct ureg_src *constants;
- struct ureg_dst outputs[PIPE_MAX_SHADER_OUTPUTS];
- struct ureg_src inputs[PIPE_MAX_SHADER_INPUTS];
- struct ureg_dst address[1];
- struct ureg_src samplers[PIPE_MAX_SAMPLERS];
- struct ureg_src systemValues[SYSTEM_VALUE_MAX];
-
- /* Extra info for handling point size clamping in vertex shader */
- struct ureg_dst pointSizeResult; /**< Actual point size output register */
- struct ureg_src pointSizeConst; /**< Point size range constant register */
- GLint pointSizeOutIndex; /**< Temp point size output register */
- GLboolean prevInstWrotePointSize;
-
- const GLuint *inputMapping;
- const GLuint *outputMapping;
-
- /* For every instruction that contains a label (eg CALL), keep
- * details so that we can go back afterwards and emit the correct
- * tgsi instruction number for each label.
- */
- struct label *labels;
- unsigned labels_size;
- unsigned labels_count;
-
- /* Keep a record of the tgsi instruction number that each mesa
- * instruction starts at, will be used to fix up labels after
- * translation.
- */
- unsigned *insn;
- unsigned insn_size;
- unsigned insn_count;
-
- unsigned procType; /**< TGSI_PROCESSOR_VERTEX/FRAGMENT */
-
- boolean error;
-};
-
-
-/** Map Mesa's SYSTEM_VALUE_x to TGSI_SEMANTIC_x */
-static unsigned mesa_sysval_to_semantic[SYSTEM_VALUE_MAX] = {
- TGSI_SEMANTIC_FACE,
- TGSI_SEMANTIC_INSTANCEID
-};
-
-
-/**
- * Make note of a branch to a label in the TGSI code.
- * After we've emitted all instructions, we'll go over the list
- * of labels built here and patch the TGSI code with the actual
- * location of each label.
- */
-static unsigned *get_label( struct st_translate *t,
- unsigned branch_target )
-{
- unsigned i;
-
- if (t->labels_count + 1 >= t->labels_size) {
- unsigned old_size = t->labels_size;
- t->labels_size = 1 << (util_logbase2(t->labels_size) + 1);
- t->labels = REALLOC( t->labels,
- old_size * sizeof t->labels[0],
- t->labels_size * sizeof t->labels[0] );
- if (t->labels == NULL) {
- static unsigned dummy;
- t->error = TRUE;
- return &dummy;
- }
- }
-
- i = t->labels_count++;
- t->labels[i].branch_target = branch_target;
- return &t->labels[i].token;
-}
-
-
-/**
- * Called prior to emitting the TGSI code for each Mesa instruction.
- * Allocate additional space for instructions if needed.
- * Update the insn[] array so the next Mesa instruction points to
- * the next TGSI instruction.
- */
-static void set_insn_start( struct st_translate *t,
- unsigned start )
-{
- if (t->insn_count + 1 >= t->insn_size) {
- unsigned old_size = t->insn_size;
- t->insn_size = 1 << (util_logbase2(t->insn_size) + 1);
- t->insn = REALLOC( t->insn,
- old_size * sizeof t->insn[0],
- t->insn_size * sizeof t->insn[0] );
- if (t->insn == NULL) {
- t->error = TRUE;
- return;
- }
- }
-
- t->insn[t->insn_count++] = start;
-}
-
-
-/**
- * Map a Mesa dst register to a TGSI ureg_dst register.
- */
-static struct ureg_dst
-dst_register( struct st_translate *t,
- gl_register_file file,
- GLuint index )
-{
- switch( file ) {
- case PROGRAM_UNDEFINED:
- return ureg_dst_undef();
-
- case PROGRAM_TEMPORARY:
- if (ureg_dst_is_undef(t->temps[index]))
- t->temps[index] = ureg_DECL_temporary( t->ureg );
-
- return t->temps[index];
-
- case PROGRAM_OUTPUT:
- if (t->procType == TGSI_PROCESSOR_VERTEX && index == VERT_RESULT_PSIZ)
- t->prevInstWrotePointSize = GL_TRUE;
-
- if (t->procType == TGSI_PROCESSOR_VERTEX)
- assert(index < VERT_RESULT_MAX);
- else if (t->procType == TGSI_PROCESSOR_FRAGMENT)
- assert(index < FRAG_RESULT_MAX);
- else
- assert(index < GEOM_RESULT_MAX);
-
- assert(t->outputMapping[index] < Elements(t->outputs));
-
- return t->outputs[t->outputMapping[index]];
-
- case PROGRAM_ADDRESS:
- return t->address[index];
-
- default:
- debug_assert( 0 );
- return ureg_dst_undef();
- }
-}
-
-
-/**
- * Map a Mesa src register to a TGSI ureg_src register.
- */
-static struct ureg_src
-src_register( struct st_translate *t,
- gl_register_file file,
- GLint index )
-{
- switch( file ) {
- case PROGRAM_UNDEFINED:
- return ureg_src_undef();
-
- case PROGRAM_TEMPORARY:
- assert(index >= 0);
- if (ureg_dst_is_undef(t->temps[index]))
- t->temps[index] = ureg_DECL_temporary( t->ureg );
- assert(index < Elements(t->temps));
- return ureg_src(t->temps[index]);
-
- case PROGRAM_NAMED_PARAM:
- case PROGRAM_ENV_PARAM:
- case PROGRAM_LOCAL_PARAM:
- case PROGRAM_UNIFORM:
- assert(index >= 0);
- return t->constants[index];
- case PROGRAM_STATE_VAR:
- case PROGRAM_CONSTANT: /* ie, immediate */
- if (index < 0)
- return ureg_DECL_constant( t->ureg, 0 );
- else
- return t->constants[index];
-
- case PROGRAM_INPUT:
- assert(t->inputMapping[index] < Elements(t->inputs));
- return t->inputs[t->inputMapping[index]];
-
- case PROGRAM_OUTPUT:
- assert(t->outputMapping[index] < Elements(t->outputs));
- return ureg_src(t->outputs[t->outputMapping[index]]); /* not needed? */
-
- case PROGRAM_ADDRESS:
- return ureg_src(t->address[index]);
-
- case PROGRAM_SYSTEM_VALUE:
- assert(index < Elements(t->systemValues));
- return t->systemValues[index];
-
- default:
- debug_assert( 0 );
- return ureg_src_undef();
- }
-}
-
-
-/**
- * Map mesa texture target to TGSI texture target.
- */
-static unsigned
-translate_texture_target( GLuint textarget,
- GLboolean shadow )
-{
- if (shadow) {
- switch( textarget ) {
- case TEXTURE_1D_INDEX: return TGSI_TEXTURE_SHADOW1D;
- case TEXTURE_2D_INDEX: return TGSI_TEXTURE_SHADOW2D;
- case TEXTURE_RECT_INDEX: return TGSI_TEXTURE_SHADOWRECT;
- default: break;
- }
- }
-
- switch( textarget ) {
- case TEXTURE_1D_INDEX: return TGSI_TEXTURE_1D;
- case TEXTURE_2D_INDEX: return TGSI_TEXTURE_2D;
- case TEXTURE_3D_INDEX: return TGSI_TEXTURE_3D;
- case TEXTURE_CUBE_INDEX: return TGSI_TEXTURE_CUBE;
- case TEXTURE_RECT_INDEX: return TGSI_TEXTURE_RECT;
- default:
- debug_assert( 0 );
- return TGSI_TEXTURE_1D;
- }
-}
-
-
-/**
- * Create a TGSI ureg_dst register from a Mesa dest register.
- */
-static struct ureg_dst
-translate_dst( struct st_translate *t,
- const struct prog_dst_register *DstReg,
- boolean saturate )
-{
- struct ureg_dst dst = dst_register( t,
- DstReg->File,
- DstReg->Index );
-
- dst = ureg_writemask( dst,
- DstReg->WriteMask );
-
- if (saturate)
- dst = ureg_saturate( dst );
-
- if (DstReg->RelAddr)
- dst = ureg_dst_indirect( dst, ureg_src(t->address[0]) );
-
- return dst;
-}
-
-
-/**
- * Create a TGSI ureg_src register from a Mesa src register.
- */
-static struct ureg_src
-translate_src( struct st_translate *t,
- const struct prog_src_register *SrcReg )
-{
- struct ureg_src src = src_register( t, SrcReg->File, SrcReg->Index );
-
- if (t->procType == TGSI_PROCESSOR_GEOMETRY && SrcReg->HasIndex2) {
- src = src_register( t, SrcReg->File, SrcReg->Index2 );
- if (SrcReg->RelAddr2)
- src = ureg_src_dimension_indirect( src, ureg_src(t->address[0]),
- SrcReg->Index);
- else
- src = ureg_src_dimension( src, SrcReg->Index);
- }
-
- src = ureg_swizzle( src,
- GET_SWZ( SrcReg->Swizzle, 0 ) & 0x3,
- GET_SWZ( SrcReg->Swizzle, 1 ) & 0x3,
- GET_SWZ( SrcReg->Swizzle, 2 ) & 0x3,
- GET_SWZ( SrcReg->Swizzle, 3 ) & 0x3);
-
- if (SrcReg->Negate == NEGATE_XYZW)
- src = ureg_negate(src);
-
- if (SrcReg->Abs)
- src = ureg_abs(src);
-
- if (SrcReg->RelAddr) {
- src = ureg_src_indirect( src, ureg_src(t->address[0]));
- if (SrcReg->File != PROGRAM_INPUT &&
- SrcReg->File != PROGRAM_OUTPUT) {
- /* If SrcReg->Index was negative, it was set to zero in
- * src_register(). Reassign it now. But don't do this
- * for input/output regs since they get remapped while
- * const buffers don't.
- */
- src.Index = SrcReg->Index;
- }
- }
-
- return src;
-}
-
-
-static struct ureg_src swizzle_4v( struct ureg_src src,
- const unsigned *swz )
-{
- return ureg_swizzle( src, swz[0], swz[1], swz[2], swz[3] );
-}
-
-
-/**
- * Translate a SWZ instruction into a MOV, MUL or MAD instruction. EG:
- *
- * SWZ dst, src.x-y10
- *
- * becomes:
- *
- * MAD dst {1,-1,0,0}, src.xyxx, {0,0,1,0}
- */
-static void emit_swz( struct st_translate *t,
- struct ureg_dst dst,
- const struct prog_src_register *SrcReg )
-{
- struct ureg_program *ureg = t->ureg;
- struct ureg_src src = src_register( t, SrcReg->File, SrcReg->Index );
-
- unsigned negate_mask = SrcReg->Negate;
-
- unsigned one_mask = ((GET_SWZ(SrcReg->Swizzle, 0) == SWIZZLE_ONE) << 0 |
- (GET_SWZ(SrcReg->Swizzle, 1) == SWIZZLE_ONE) << 1 |
- (GET_SWZ(SrcReg->Swizzle, 2) == SWIZZLE_ONE) << 2 |
- (GET_SWZ(SrcReg->Swizzle, 3) == SWIZZLE_ONE) << 3);
-
- unsigned zero_mask = ((GET_SWZ(SrcReg->Swizzle, 0) == SWIZZLE_ZERO) << 0 |
- (GET_SWZ(SrcReg->Swizzle, 1) == SWIZZLE_ZERO) << 1 |
- (GET_SWZ(SrcReg->Swizzle, 2) == SWIZZLE_ZERO) << 2 |
- (GET_SWZ(SrcReg->Swizzle, 3) == SWIZZLE_ZERO) << 3);
-
- unsigned negative_one_mask = one_mask & negate_mask;
- unsigned positive_one_mask = one_mask & ~negate_mask;
-
- struct ureg_src imm;
- unsigned i;
- unsigned mul_swizzle[4] = {0,0,0,0};
- unsigned add_swizzle[4] = {0,0,0,0};
- unsigned src_swizzle[4] = {0,0,0,0};
- boolean need_add = FALSE;
- boolean need_mul = FALSE;
-
- if (dst.WriteMask == 0)
- return;
-
- /* Is this just a MOV?
- */
- if (zero_mask == 0 &&
- one_mask == 0 &&
- (negate_mask == 0 || negate_mask == TGSI_WRITEMASK_XYZW))
- {
- ureg_MOV( ureg, dst, translate_src( t, SrcReg ));
- return;
- }
-
-#define IMM_ZERO 0
-#define IMM_ONE 1
-#define IMM_NEG_ONE 2
-
- imm = ureg_imm3f( ureg, 0, 1, -1 );
-
- for (i = 0; i < 4; i++) {
- unsigned bit = 1 << i;
-
- if (dst.WriteMask & bit) {
- if (positive_one_mask & bit) {
- mul_swizzle[i] = IMM_ZERO;
- add_swizzle[i] = IMM_ONE;
- need_add = TRUE;
- }
- else if (negative_one_mask & bit) {
- mul_swizzle[i] = IMM_ZERO;
- add_swizzle[i] = IMM_NEG_ONE;
- need_add = TRUE;
- }
- else if (zero_mask & bit) {
- mul_swizzle[i] = IMM_ZERO;
- add_swizzle[i] = IMM_ZERO;
- need_add = TRUE;
- }
- else {
- add_swizzle[i] = IMM_ZERO;
- src_swizzle[i] = GET_SWZ(SrcReg->Swizzle, i);
- need_mul = TRUE;
- if (negate_mask & bit) {
- mul_swizzle[i] = IMM_NEG_ONE;
- }
- else {
- mul_swizzle[i] = IMM_ONE;
- }
- }
- }
- }
-
- if (need_mul && need_add) {
- ureg_MAD( ureg,
- dst,
- swizzle_4v( src, src_swizzle ),
- swizzle_4v( imm, mul_swizzle ),
- swizzle_4v( imm, add_swizzle ) );
- }
- else if (need_mul) {
- ureg_MUL( ureg,
- dst,
- swizzle_4v( src, src_swizzle ),
- swizzle_4v( imm, mul_swizzle ) );
- }
- else if (need_add) {
- ureg_MOV( ureg,
- dst,
- swizzle_4v( imm, add_swizzle ) );
- }
- else {
- debug_assert(0);
- }
-
-#undef IMM_ZERO
-#undef IMM_ONE
-#undef IMM_NEG_ONE
-}
-
-
-/**
- * Negate the value of DDY to match GL semantics where (0,0) is the
- * lower-left corner of the window.
- * Note that the GL_ARB_fragment_coord_conventions extension will
- * effect this someday.
- */
-static void emit_ddy( struct st_translate *t,
- struct ureg_dst dst,
- const struct prog_src_register *SrcReg )
-{
- struct ureg_program *ureg = t->ureg;
- struct ureg_src src = translate_src( t, SrcReg );
- src = ureg_negate( src );
- ureg_DDY( ureg, dst, src );
-}
-
-
-
-static unsigned
-translate_opcode( unsigned op )
-{
- switch( op ) {
- case OPCODE_ARL:
- return TGSI_OPCODE_ARL;
- case OPCODE_ABS:
- return TGSI_OPCODE_ABS;
- case OPCODE_ADD:
- return TGSI_OPCODE_ADD;
- case OPCODE_BGNLOOP:
- return TGSI_OPCODE_BGNLOOP;
- case OPCODE_BGNSUB:
- return TGSI_OPCODE_BGNSUB;
- case OPCODE_BRA:
- return TGSI_OPCODE_BRA;
- case OPCODE_BRK:
- return TGSI_OPCODE_BRK;
- case OPCODE_CAL:
- return TGSI_OPCODE_CAL;
- case OPCODE_CMP:
- return TGSI_OPCODE_CMP;
- case OPCODE_CONT:
- return TGSI_OPCODE_CONT;
- case OPCODE_COS:
- return TGSI_OPCODE_COS;
- case OPCODE_DDX:
- return TGSI_OPCODE_DDX;
- case OPCODE_DDY:
- return TGSI_OPCODE_DDY;
- case OPCODE_DP2:
- return TGSI_OPCODE_DP2;
- case OPCODE_DP2A:
- return TGSI_OPCODE_DP2A;
- case OPCODE_DP3:
- return TGSI_OPCODE_DP3;
- case OPCODE_DP4:
- return TGSI_OPCODE_DP4;
- case OPCODE_DPH:
- return TGSI_OPCODE_DPH;
- case OPCODE_DST:
- return TGSI_OPCODE_DST;
- case OPCODE_ELSE:
- return TGSI_OPCODE_ELSE;
- case OPCODE_EMIT_VERTEX:
- return TGSI_OPCODE_EMIT;
- case OPCODE_END_PRIMITIVE:
- return TGSI_OPCODE_ENDPRIM;
- case OPCODE_ENDIF:
- return TGSI_OPCODE_ENDIF;
- case OPCODE_ENDLOOP:
- return TGSI_OPCODE_ENDLOOP;
- case OPCODE_ENDSUB:
- return TGSI_OPCODE_ENDSUB;
- case OPCODE_EX2:
- return TGSI_OPCODE_EX2;
- case OPCODE_EXP:
- return TGSI_OPCODE_EXP;
- case OPCODE_FLR:
- return TGSI_OPCODE_FLR;
- case OPCODE_FRC:
- return TGSI_OPCODE_FRC;
- case OPCODE_IF:
- return TGSI_OPCODE_IF;
- case OPCODE_TRUNC:
- return TGSI_OPCODE_TRUNC;
- case OPCODE_KIL:
- return TGSI_OPCODE_KIL;
- case OPCODE_KIL_NV:
- return TGSI_OPCODE_KILP;
- case OPCODE_LG2:
- return TGSI_OPCODE_LG2;
- case OPCODE_LOG:
- return TGSI_OPCODE_LOG;
- case OPCODE_LIT:
- return TGSI_OPCODE_LIT;
- case OPCODE_LRP:
- return TGSI_OPCODE_LRP;
- case OPCODE_MAD:
- return TGSI_OPCODE_MAD;
- case OPCODE_MAX:
- return TGSI_OPCODE_MAX;
- case OPCODE_MIN:
- return TGSI_OPCODE_MIN;
- case OPCODE_MOV:
- return TGSI_OPCODE_MOV;
- case OPCODE_MUL:
- return TGSI_OPCODE_MUL;
- case OPCODE_NOP:
- return TGSI_OPCODE_NOP;
- case OPCODE_NRM3:
- return TGSI_OPCODE_NRM;
- case OPCODE_NRM4:
- return TGSI_OPCODE_NRM4;
- case OPCODE_POW:
- return TGSI_OPCODE_POW;
- case OPCODE_RCP:
- return TGSI_OPCODE_RCP;
- case OPCODE_RET:
- return TGSI_OPCODE_RET;
- case OPCODE_RSQ:
- return TGSI_OPCODE_RSQ;
- case OPCODE_SCS:
- return TGSI_OPCODE_SCS;
- case OPCODE_SEQ:
- return TGSI_OPCODE_SEQ;
- case OPCODE_SGE:
- return TGSI_OPCODE_SGE;
- case OPCODE_SGT:
- return TGSI_OPCODE_SGT;
- case OPCODE_SIN:
- return TGSI_OPCODE_SIN;
- case OPCODE_SLE:
- return TGSI_OPCODE_SLE;
- case OPCODE_SLT:
- return TGSI_OPCODE_SLT;
- case OPCODE_SNE:
- return TGSI_OPCODE_SNE;
- case OPCODE_SSG:
- return TGSI_OPCODE_SSG;
- case OPCODE_SUB:
- return TGSI_OPCODE_SUB;
- case OPCODE_TEX:
- return TGSI_OPCODE_TEX;
- case OPCODE_TXB:
- return TGSI_OPCODE_TXB;
- case OPCODE_TXD:
- return TGSI_OPCODE_TXD;
- case OPCODE_TXL:
- return TGSI_OPCODE_TXL;
- case OPCODE_TXP:
- return TGSI_OPCODE_TXP;
- case OPCODE_XPD:
- return TGSI_OPCODE_XPD;
- case OPCODE_END:
- return TGSI_OPCODE_END;
- default:
- debug_assert( 0 );
- return TGSI_OPCODE_NOP;
- }
-}
-
-
-static void
-compile_instruction(
- struct st_translate *t,
- const struct prog_instruction *inst )
-{
- struct ureg_program *ureg = t->ureg;
- GLuint i;
- struct ureg_dst dst[1];
- struct ureg_src src[4];
- unsigned num_dst;
- unsigned num_src;
-
- num_dst = _mesa_num_inst_dst_regs( inst->Opcode );
- num_src = _mesa_num_inst_src_regs( inst->Opcode );
-
- if (num_dst)
- dst[0] = translate_dst( t,
- &inst->DstReg,
- inst->SaturateMode );
-
- for (i = 0; i < num_src; i++)
- src[i] = translate_src( t, &inst->SrcReg[i] );
-
- switch( inst->Opcode ) {
- case OPCODE_SWZ:
- emit_swz( t, dst[0], &inst->SrcReg[0] );
- return;
-
- case OPCODE_BGNLOOP:
- case OPCODE_CAL:
- case OPCODE_ELSE:
- case OPCODE_ENDLOOP:
- case OPCODE_IF:
- debug_assert(num_dst == 0);
- ureg_label_insn( ureg,
- translate_opcode( inst->Opcode ),
- src, num_src,
- get_label( t, inst->BranchTarget ));
- return;
-
- case OPCODE_TEX:
- case OPCODE_TXB:
- case OPCODE_TXD:
- case OPCODE_TXL:
- case OPCODE_TXP:
- src[num_src++] = t->samplers[inst->TexSrcUnit];
- ureg_tex_insn( ureg,
- translate_opcode( inst->Opcode ),
- dst, num_dst,
- translate_texture_target( inst->TexSrcTarget,
- inst->TexShadow ),
- src, num_src );
- return;
-
- case OPCODE_SCS:
- dst[0] = ureg_writemask(dst[0], TGSI_WRITEMASK_XY );
- ureg_insn( ureg,
- translate_opcode( inst->Opcode ),
- dst, num_dst,
- src, num_src );
- break;
-
- case OPCODE_XPD:
- dst[0] = ureg_writemask(dst[0], TGSI_WRITEMASK_XYZ );
- ureg_insn( ureg,
- translate_opcode( inst->Opcode ),
- dst, num_dst,
- src, num_src );
- break;
-
- case OPCODE_NOISE1:
- case OPCODE_NOISE2:
- case OPCODE_NOISE3:
- case OPCODE_NOISE4:
- /* At some point, a motivated person could add a better
- * implementation of noise. Currently not even the nvidia
- * binary drivers do anything more than this. In any case, the
- * place to do this is in the GL state tracker, not the poor
- * driver.
- */
- ureg_MOV( ureg, dst[0], ureg_imm1f(ureg, 0.5) );
- break;
-
- case OPCODE_DDY:
- emit_ddy( t, dst[0], &inst->SrcReg[0] );
- break;
-
- default:
- ureg_insn( ureg,
- translate_opcode( inst->Opcode ),
- dst, num_dst,
- src, num_src );
- break;
- }
-}
-
-
-/**
- * Emit the TGSI instructions to adjust the WPOS pixel center convention
- * Basically, add (adjX, adjY) to the fragment position.
- */
-static void
-emit_adjusted_wpos( struct st_translate *t,
- const struct gl_program *program,
- GLfloat adjX, GLfloat adjY)
-{
- struct ureg_program *ureg = t->ureg;
- struct ureg_dst wpos_temp = ureg_DECL_temporary(ureg);
- struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]];
-
- /* Note that we bias X and Y and pass Z and W through unchanged.
- * The shader might also use gl_FragCoord.w and .z.
- */
- ureg_ADD(ureg, wpos_temp, wpos_input,
- ureg_imm4f(ureg, adjX, adjY, 0.0f, 0.0f));
-
- t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp);
-}
-
-
-/**
- * Emit the TGSI instructions for inverting the WPOS y coordinate.
- * This code is unavoidable because it also depends on whether
- * a FBO is bound (STATE_FB_WPOS_Y_TRANSFORM).
- */
-static void
-emit_wpos_inversion( struct st_translate *t,
- const struct gl_program *program,
- boolean invert)
-{
- struct ureg_program *ureg = t->ureg;
-
- /* Fragment program uses fragment position input.
- * Need to replace instances of INPUT[WPOS] with temp T
- * where T = INPUT[WPOS] by y is inverted.
- */
- static const gl_state_index wposTransformState[STATE_LENGTH]
- = { STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM, 0, 0, 0 };
-
- /* XXX: note we are modifying the incoming shader here! Need to
- * do this before emitting the constant decls below, or this
- * will be missed:
- */
- unsigned wposTransConst = _mesa_add_state_reference(program->Parameters,
- wposTransformState);
-
- struct ureg_src wpostrans = ureg_DECL_constant( ureg, wposTransConst );
- struct ureg_dst wpos_temp;
- struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]];
-
- /* MOV wpos_temp, input[wpos]
- */
- if (wpos_input.File == TGSI_FILE_TEMPORARY)
- wpos_temp = ureg_dst(wpos_input);
- else {
- wpos_temp = ureg_DECL_temporary( ureg );
- ureg_MOV( ureg, wpos_temp, wpos_input );
- }
-
- if (invert) {
- /* MAD wpos_temp.y, wpos_input, wpostrans.xxxx, wpostrans.yyyy
- */
- ureg_MAD( ureg,
- ureg_writemask(wpos_temp, TGSI_WRITEMASK_Y ),
- wpos_input,
- ureg_scalar(wpostrans, 0),
- ureg_scalar(wpostrans, 1));
- } else {
- /* MAD wpos_temp.y, wpos_input, wpostrans.zzzz, wpostrans.wwww
- */
- ureg_MAD( ureg,
- ureg_writemask(wpos_temp, TGSI_WRITEMASK_Y ),
- wpos_input,
- ureg_scalar(wpostrans, 2),
- ureg_scalar(wpostrans, 3));
- }
-
- /* Use wpos_temp as position input from here on:
- */
- t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp);
-}
-
-
-/**
- * Emit fragment position/ooordinate code.
- */
-static void
-emit_wpos(struct st_context *st,
- struct st_translate *t,
- const struct gl_program *program,
- struct ureg_program *ureg)
-{
- const struct gl_fragment_program *fp =
- (const struct gl_fragment_program *) program;
- struct pipe_screen *pscreen = st->pipe->screen;
- boolean invert = FALSE;
-
- if (fp->OriginUpperLeft) {
- /* Fragment shader wants origin in upper-left */
- if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT)) {
- /* the driver supports upper-left origin */
- }
- else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT)) {
- /* the driver supports lower-left origin, need to invert Y */
- ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
- invert = TRUE;
- }
- else
- assert(0);
- }
- else {
- /* Fragment shader wants origin in lower-left */
- if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT))
- /* the driver supports lower-left origin */
- ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
- else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT))
- /* the driver supports upper-left origin, need to invert Y */
- invert = TRUE;
- else
- assert(0);
- }
-
- if (fp->PixelCenterInteger) {
- /* Fragment shader wants pixel center integer */
- if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER))
- /* the driver supports pixel center integer */
- ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
- else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER))
- /* the driver supports pixel center half integer, need to bias X,Y */
- emit_adjusted_wpos(t, program, 0.5f, invert ? 0.5f : -0.5f);
- else
- assert(0);
- }
- else {
- /* Fragment shader wants pixel center half integer */
- if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) {
- /* the driver supports pixel center half integer */
- }
- else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
- /* the driver supports pixel center integer, need to bias X,Y */
- ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
- emit_adjusted_wpos(t, program, 0.5f, invert ? -0.5f : 0.5f);
- }
- else
- assert(0);
- }
-
- /* we invert after adjustment so that we avoid the MOV to temporary,
- * and reuse the adjustment ADD instead */
- emit_wpos_inversion(t, program, invert);
-}
-
-
-/**
- * OpenGL's fragment gl_FrontFace input is 1 for front-facing, 0 for back.
- * TGSI uses +1 for front, -1 for back.
- * This function converts the TGSI value to the GL value. Simply clamping/
- * saturating the value to [0,1] does the job.
- */
-static void
-emit_face_var( struct st_translate *t,
- const struct gl_program *program )
-{
- struct ureg_program *ureg = t->ureg;
- struct ureg_dst face_temp = ureg_DECL_temporary( ureg );
- struct ureg_src face_input = t->inputs[t->inputMapping[FRAG_ATTRIB_FACE]];
-
- /* MOV_SAT face_temp, input[face]
- */
- face_temp = ureg_saturate( face_temp );
- ureg_MOV( ureg, face_temp, face_input );
-
- /* Use face_temp as face input from here on:
- */
- t->inputs[t->inputMapping[FRAG_ATTRIB_FACE]] = ureg_src(face_temp);
-}
-
-
-static void
-emit_edgeflags( struct st_translate *t,
- const struct gl_program *program )
-{
- struct ureg_program *ureg = t->ureg;
- struct ureg_dst edge_dst = t->outputs[t->outputMapping[VERT_RESULT_EDGE]];
- struct ureg_src edge_src = t->inputs[t->inputMapping[VERT_ATTRIB_EDGEFLAG]];
-
- ureg_MOV( ureg, edge_dst, edge_src );
-}
-
-
-/**
- * Translate Mesa program to TGSI format.
- * \param program the program to translate
- * \param numInputs number of input registers used
- * \param inputMapping maps Mesa fragment program inputs to TGSI generic
- * input indexes
- * \param inputSemanticName the TGSI_SEMANTIC flag for each input
- * \param inputSemanticIndex the semantic index (ex: which texcoord) for
- * each input
- * \param interpMode the TGSI_INTERPOLATE_LINEAR/PERSP mode for each input
- * \param numOutputs number of output registers used
- * \param outputMapping maps Mesa fragment program outputs to TGSI
- * generic outputs
- * \param outputSemanticName the TGSI_SEMANTIC flag for each output
- * \param outputSemanticIndex the semantic index (ex: which texcoord) for
- * each output
- *
- * \return PIPE_OK or PIPE_ERROR_OUT_OF_MEMORY
- */
-enum pipe_error
-st_translate_mesa_program(
- struct gl_context *ctx,
- uint procType,
- struct ureg_program *ureg,
- const struct gl_program *program,
- GLuint numInputs,
- const GLuint inputMapping[],
- const ubyte inputSemanticName[],
- const ubyte inputSemanticIndex[],
- const GLuint interpMode[],
- GLuint numOutputs,
- const GLuint outputMapping[],
- const ubyte outputSemanticName[],
- const ubyte outputSemanticIndex[],
- boolean passthrough_edgeflags )
-{
- struct st_translate translate, *t;
- unsigned i;
- enum pipe_error ret = PIPE_OK;
-
- assert(numInputs <= Elements(t->inputs));
- assert(numOutputs <= Elements(t->outputs));
-
- t = &translate;
- memset(t, 0, sizeof *t);
-
- t->procType = procType;
- t->inputMapping = inputMapping;
- t->outputMapping = outputMapping;
- t->ureg = ureg;
- t->pointSizeOutIndex = -1;
- t->prevInstWrotePointSize = GL_FALSE;
-
- /*_mesa_print_program(program);*/
-
- /*
- * Declare input attributes.
- */
- if (procType == TGSI_PROCESSOR_FRAGMENT) {
- for (i = 0; i < numInputs; i++) {
- if (program->InputFlags[0] & PROG_PARAM_BIT_CYL_WRAP) {
- t->inputs[i] = ureg_DECL_fs_input_cyl(ureg,
- inputSemanticName[i],
- inputSemanticIndex[i],
- interpMode[i],
- TGSI_CYLINDRICAL_WRAP_X);
- }
- else {
- t->inputs[i] = ureg_DECL_fs_input(ureg,
- inputSemanticName[i],
- inputSemanticIndex[i],
- interpMode[i]);
- }
- }
-
- if (program->InputsRead & FRAG_BIT_WPOS) {
- /* Must do this after setting up t->inputs, and before
- * emitting constant references, below:
- */
- emit_wpos(st_context(ctx), t, program, ureg);
- }
-
- if (program->InputsRead & FRAG_BIT_FACE) {
- emit_face_var( t, program );
- }
-
- /*
- * Declare output attributes.
- */
- for (i = 0; i < numOutputs; i++) {
- switch (outputSemanticName[i]) {
- case TGSI_SEMANTIC_POSITION:
- t->outputs[i] = ureg_DECL_output( ureg,
- TGSI_SEMANTIC_POSITION, /* Z / Depth */
- outputSemanticIndex[i] );
-
- t->outputs[i] = ureg_writemask( t->outputs[i],
- TGSI_WRITEMASK_Z );
- break;
- case TGSI_SEMANTIC_STENCIL:
- t->outputs[i] = ureg_DECL_output( ureg,
- TGSI_SEMANTIC_STENCIL, /* Stencil */
- outputSemanticIndex[i] );
- t->outputs[i] = ureg_writemask( t->outputs[i],
- TGSI_WRITEMASK_Y );
- break;
- case TGSI_SEMANTIC_COLOR:
- t->outputs[i] = ureg_DECL_output( ureg,
- TGSI_SEMANTIC_COLOR,
- outputSemanticIndex[i] );
- break;
- default:
- debug_assert(0);
- return 0;
- }
- }
- }
- else if (procType == TGSI_PROCESSOR_GEOMETRY) {
- for (i = 0; i < numInputs; i++) {
- t->inputs[i] = ureg_DECL_gs_input(ureg,
- i,
- inputSemanticName[i],
- inputSemanticIndex[i]);
- }
-
- for (i = 0; i < numOutputs; i++) {
- t->outputs[i] = ureg_DECL_output( ureg,
- outputSemanticName[i],
- outputSemanticIndex[i] );
- }
- }
- else {
- assert(procType == TGSI_PROCESSOR_VERTEX);
-
- for (i = 0; i < numInputs; i++) {
- t->inputs[i] = ureg_DECL_vs_input(ureg, i);
- }
-
- for (i = 0; i < numOutputs; i++) {
- t->outputs[i] = ureg_DECL_output( ureg,
- outputSemanticName[i],
- outputSemanticIndex[i] );
- if ((outputSemanticName[i] == TGSI_SEMANTIC_PSIZE) && program->Id) {
- /* Writing to the point size result register requires special
- * handling to implement clamping.
- */
- static const gl_state_index pointSizeClampState[STATE_LENGTH]
- = { STATE_INTERNAL, STATE_POINT_SIZE_IMPL_CLAMP, 0, 0, 0 };
- /* XXX: note we are modifying the incoming shader here! Need to
- * do this before emitting the constant decls below, or this
- * will be missed:
- */
- unsigned pointSizeClampConst =
- _mesa_add_state_reference(program->Parameters,
- pointSizeClampState);
- struct ureg_dst psizregtemp = ureg_DECL_temporary( ureg );
- t->pointSizeConst = ureg_DECL_constant( ureg, pointSizeClampConst );
- t->pointSizeResult = t->outputs[i];
- t->pointSizeOutIndex = i;
- t->outputs[i] = psizregtemp;
- }
- }
- if (passthrough_edgeflags)
- emit_edgeflags( t, program );
- }
-
- /* Declare address register.
- */
- if (program->NumAddressRegs > 0) {
- debug_assert( program->NumAddressRegs == 1 );
- t->address[0] = ureg_DECL_address( ureg );
- }
-
- /* Declare misc input registers
- */
- {
- GLbitfield sysInputs = program->SystemValuesRead;
- unsigned numSys = 0;
- for (i = 0; sysInputs; i++) {
- if (sysInputs & (1 << i)) {
- unsigned semName = mesa_sysval_to_semantic[i];
- t->systemValues[i] = ureg_DECL_system_value(ureg, numSys, semName, 0);
- numSys++;
- sysInputs &= ~(1 << i);
- }
- }
- }
-
- if (program->IndirectRegisterFiles & (1 << PROGRAM_TEMPORARY)) {
- /* If temps are accessed with indirect addressing, declare temporaries
- * in sequential order. Else, we declare them on demand elsewhere.
- */
- for (i = 0; i < program->NumTemporaries; i++) {
- /* XXX use TGSI_FILE_TEMPORARY_ARRAY when it's supported by ureg */
- t->temps[i] = ureg_DECL_temporary( t->ureg );
- }
- }
-
- /* Emit constants and immediates. Mesa uses a single index space
- * for these, so we put all the translated regs in t->constants.
- */
- if (program->Parameters) {
- t->constants = CALLOC( program->Parameters->NumParameters,
- sizeof t->constants[0] );
- if (t->constants == NULL) {
- ret = PIPE_ERROR_OUT_OF_MEMORY;
- goto out;
- }
-
- for (i = 0; i < program->Parameters->NumParameters; i++) {
- switch (program->Parameters->Parameters[i].Type) {
- case PROGRAM_ENV_PARAM:
- case PROGRAM_LOCAL_PARAM:
- case PROGRAM_STATE_VAR:
- case PROGRAM_NAMED_PARAM:
- case PROGRAM_UNIFORM:
- t->constants[i] = ureg_DECL_constant( ureg, i );
- break;
-
- /* Emit immediates only when there's no indirect addressing of
- * the const buffer.
- * FIXME: Be smarter and recognize param arrays:
- * indirect addressing is only valid within the referenced
- * array.
- */
- case PROGRAM_CONSTANT:
- if (program->IndirectRegisterFiles & PROGRAM_ANY_CONST)
- t->constants[i] = ureg_DECL_constant( ureg, i );
- else
- t->constants[i] =
- ureg_DECL_immediate( ureg,
- program->Parameters->ParameterValues[i],
- 4 );
- break;
- default:
- break;
- }
- }
- }
-
- /* texture samplers */
- for (i = 0; i < ctx->Const.MaxTextureImageUnits; i++) {
- if (program->SamplersUsed & (1 << i)) {
- t->samplers[i] = ureg_DECL_sampler( ureg, i );
- }
- }
-
- /* Emit each instruction in turn:
- */
- for (i = 0; i < program->NumInstructions; i++) {
- set_insn_start( t, ureg_get_instruction_number( ureg ));
- compile_instruction( t, &program->Instructions[i] );
-
- if (t->prevInstWrotePointSize && program->Id) {
- /* The previous instruction wrote to the (fake) vertex point size
- * result register. Now we need to clamp that value to the min/max
- * point size range, putting the result into the real point size
- * register.
- * Note that we can't do this easily at the end of program due to
- * possible early return.
- */
- set_insn_start( t, ureg_get_instruction_number( ureg ));
- ureg_MAX( t->ureg,
- ureg_writemask(t->outputs[t->pointSizeOutIndex], WRITEMASK_X),
- ureg_src(t->outputs[t->pointSizeOutIndex]),
- ureg_swizzle(t->pointSizeConst, 1,1,1,1));
- ureg_MIN( t->ureg, ureg_writemask(t->pointSizeResult, WRITEMASK_X),
- ureg_src(t->outputs[t->pointSizeOutIndex]),
- ureg_swizzle(t->pointSizeConst, 2,2,2,2));
- }
- t->prevInstWrotePointSize = GL_FALSE;
- }
-
- /* Fix up all emitted labels:
- */
- for (i = 0; i < t->labels_count; i++) {
- ureg_fixup_label( ureg,
- t->labels[i].token,
- t->insn[t->labels[i].branch_target] );
- }
-
-out:
- FREE(t->insn);
- FREE(t->labels);
- FREE(t->constants);
-
- if (t->error) {
- debug_printf("%s: translate error flag set\n", __FUNCTION__);
- }
-
- return ret;
-}
-
-
-/**
- * Tokens cannot be free with free otherwise the builtin gallium
- * malloc debugging will get confused.
- */
-void
-st_free_tokens(const struct tgsi_token *tokens)
-{
- FREE((void *)tokens);
-}
+/**************************************************************************
+ *
+ * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/*
+ * \author
+ * Michal Krol,
+ * Keith Whitwell
+ */
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_context.h"
+#include "pipe/p_screen.h"
+#include "pipe/p_shader_tokens.h"
+#include "pipe/p_state.h"
+#include "tgsi/tgsi_ureg.h"
+#include "st_mesa_to_tgsi.h"
+#include "st_context.h"
+#include "program/prog_instruction.h"
+#include "program/prog_parameter.h"
+#include "util/u_debug.h"
+#include "util/u_math.h"
+#include "util/u_memory.h"
+
+
+#define PROGRAM_ANY_CONST ((1 << PROGRAM_LOCAL_PARAM) | \
+ (1 << PROGRAM_ENV_PARAM) | \
+ (1 << PROGRAM_STATE_VAR) | \
+ (1 << PROGRAM_NAMED_PARAM) | \
+ (1 << PROGRAM_CONSTANT) | \
+ (1 << PROGRAM_UNIFORM))
+
+
+struct label {
+ unsigned branch_target;
+ unsigned token;
+};
+
+
+/**
+ * Intermediate state used during shader translation.
+ */
+struct st_translate {
+ struct ureg_program *ureg;
+
+ struct ureg_dst temps[MAX_PROGRAM_TEMPS];
+ struct ureg_src *constants;
+ struct ureg_dst outputs[PIPE_MAX_SHADER_OUTPUTS];
+ struct ureg_src inputs[PIPE_MAX_SHADER_INPUTS];
+ struct ureg_dst address[1];
+ struct ureg_src samplers[PIPE_MAX_SAMPLERS];
+ struct ureg_src systemValues[SYSTEM_VALUE_MAX];
+
+ /* Extra info for handling point size clamping in vertex shader */
+ struct ureg_dst pointSizeResult; /**< Actual point size output register */
+ struct ureg_src pointSizeConst; /**< Point size range constant register */
+ GLint pointSizeOutIndex; /**< Temp point size output register */
+ GLboolean prevInstWrotePointSize;
+
+ const GLuint *inputMapping;
+ const GLuint *outputMapping;
+
+ /* For every instruction that contains a label (eg CALL), keep
+ * details so that we can go back afterwards and emit the correct
+ * tgsi instruction number for each label.
+ */
+ struct label *labels;
+ unsigned labels_size;
+ unsigned labels_count;
+
+ /* Keep a record of the tgsi instruction number that each mesa
+ * instruction starts at, will be used to fix up labels after
+ * translation.
+ */
+ unsigned *insn;
+ unsigned insn_size;
+ unsigned insn_count;
+
+ unsigned procType; /**< TGSI_PROCESSOR_VERTEX/FRAGMENT */
+
+ boolean error;
+};
+
+
+/** Map Mesa's SYSTEM_VALUE_x to TGSI_SEMANTIC_x */
+static unsigned mesa_sysval_to_semantic[SYSTEM_VALUE_MAX] = {
+ TGSI_SEMANTIC_FACE,
+ TGSI_SEMANTIC_INSTANCEID
+};
+
+
+/**
+ * Make note of a branch to a label in the TGSI code.
+ * After we've emitted all instructions, we'll go over the list
+ * of labels built here and patch the TGSI code with the actual
+ * location of each label.
+ */
+static unsigned *get_label( struct st_translate *t,
+ unsigned branch_target )
+{
+ unsigned i;
+
+ if (t->labels_count + 1 >= t->labels_size) {
+ unsigned old_size = t->labels_size;
+ t->labels_size = 1 << (util_logbase2(t->labels_size) + 1);
+ t->labels = REALLOC( t->labels,
+ old_size * sizeof t->labels[0],
+ t->labels_size * sizeof t->labels[0] );
+ if (t->labels == NULL) {
+ static unsigned dummy;
+ t->error = TRUE;
+ return &dummy;
+ }
+ }
+
+ i = t->labels_count++;
+ t->labels[i].branch_target = branch_target;
+ return &t->labels[i].token;
+}
+
+
+/**
+ * Called prior to emitting the TGSI code for each Mesa instruction.
+ * Allocate additional space for instructions if needed.
+ * Update the insn[] array so the next Mesa instruction points to
+ * the next TGSI instruction.
+ */
+static void set_insn_start( struct st_translate *t,
+ unsigned start )
+{
+ if (t->insn_count + 1 >= t->insn_size) {
+ unsigned old_size = t->insn_size;
+ t->insn_size = 1 << (util_logbase2(t->insn_size) + 1);
+ t->insn = REALLOC( t->insn,
+ old_size * sizeof t->insn[0],
+ t->insn_size * sizeof t->insn[0] );
+ if (t->insn == NULL) {
+ t->error = TRUE;
+ return;
+ }
+ }
+
+ t->insn[t->insn_count++] = start;
+}
+
+
+/**
+ * Map a Mesa dst register to a TGSI ureg_dst register.
+ */
+static struct ureg_dst
+dst_register( struct st_translate *t,
+ gl_register_file file,
+ GLuint index )
+{
+ switch( file ) {
+ case PROGRAM_UNDEFINED:
+ return ureg_dst_undef();
+
+ case PROGRAM_TEMPORARY:
+ if (ureg_dst_is_undef(t->temps[index]))
+ t->temps[index] = ureg_DECL_temporary( t->ureg );
+
+ return t->temps[index];
+
+ case PROGRAM_OUTPUT:
+ if (t->procType == TGSI_PROCESSOR_VERTEX && index == VERT_RESULT_PSIZ)
+ t->prevInstWrotePointSize = GL_TRUE;
+
+ if (t->procType == TGSI_PROCESSOR_VERTEX)
+ assert(index < VERT_RESULT_MAX);
+ else if (t->procType == TGSI_PROCESSOR_FRAGMENT)
+ assert(index < FRAG_RESULT_MAX);
+ else
+ assert(index < GEOM_RESULT_MAX);
+
+ assert(t->outputMapping[index] < Elements(t->outputs));
+
+ return t->outputs[t->outputMapping[index]];
+
+ case PROGRAM_ADDRESS:
+ return t->address[index];
+
+ default:
+ debug_assert( 0 );
+ return ureg_dst_undef();
+ }
+}
+
+
+/**
+ * Map a Mesa src register to a TGSI ureg_src register.
+ */
+static struct ureg_src
+src_register( struct st_translate *t,
+ gl_register_file file,
+ GLint index )
+{
+ switch( file ) {
+ case PROGRAM_UNDEFINED:
+ return ureg_src_undef();
+
+ case PROGRAM_TEMPORARY:
+ assert(index >= 0);
+ if (ureg_dst_is_undef(t->temps[index]))
+ t->temps[index] = ureg_DECL_temporary( t->ureg );
+ assert(index < Elements(t->temps));
+ return ureg_src(t->temps[index]);
+
+ case PROGRAM_NAMED_PARAM:
+ case PROGRAM_ENV_PARAM:
+ case PROGRAM_LOCAL_PARAM:
+ case PROGRAM_UNIFORM:
+ assert(index >= 0);
+ return t->constants[index];
+ case PROGRAM_STATE_VAR:
+ case PROGRAM_CONSTANT: /* ie, immediate */
+ if (index < 0)
+ return ureg_DECL_constant( t->ureg, 0 );
+ else
+ return t->constants[index];
+
+ case PROGRAM_INPUT:
+ assert(t->inputMapping[index] < Elements(t->inputs));
+ return t->inputs[t->inputMapping[index]];
+
+ case PROGRAM_OUTPUT:
+ assert(t->outputMapping[index] < Elements(t->outputs));
+ return ureg_src(t->outputs[t->outputMapping[index]]); /* not needed? */
+
+ case PROGRAM_ADDRESS:
+ return ureg_src(t->address[index]);
+
+ case PROGRAM_SYSTEM_VALUE:
+ assert(index < Elements(t->systemValues));
+ return t->systemValues[index];
+
+ default:
+ debug_assert( 0 );
+ return ureg_src_undef();
+ }
+}
+
+
+/**
+ * Map mesa texture target to TGSI texture target.
+ */
+static unsigned
+translate_texture_target( GLuint textarget,
+ GLboolean shadow )
+{
+ if (shadow) {
+ switch( textarget ) {
+ case TEXTURE_1D_INDEX: return TGSI_TEXTURE_SHADOW1D;
+ case TEXTURE_2D_INDEX: return TGSI_TEXTURE_SHADOW2D;
+ case TEXTURE_RECT_INDEX: return TGSI_TEXTURE_SHADOWRECT;
+ default: break;
+ }
+ }
+
+ switch( textarget ) {
+ case TEXTURE_1D_INDEX: return TGSI_TEXTURE_1D;
+ case TEXTURE_2D_INDEX: return TGSI_TEXTURE_2D;
+ case TEXTURE_3D_INDEX: return TGSI_TEXTURE_3D;
+ case TEXTURE_CUBE_INDEX: return TGSI_TEXTURE_CUBE;
+ case TEXTURE_RECT_INDEX: return TGSI_TEXTURE_RECT;
+ case TEXTURE_1D_ARRAY_INDEX: return TGSI_TEXTURE_1D_ARRAY;
+ case TEXTURE_2D_ARRAY_INDEX: return TGSI_TEXTURE_2D_ARRAY;
+ default:
+ debug_assert( 0 );
+ return TGSI_TEXTURE_1D;
+ }
+}
+
+
+/**
+ * Create a TGSI ureg_dst register from a Mesa dest register.
+ */
+static struct ureg_dst
+translate_dst( struct st_translate *t,
+ const struct prog_dst_register *DstReg,
+ boolean saturate )
+{
+ struct ureg_dst dst = dst_register( t,
+ DstReg->File,
+ DstReg->Index );
+
+ dst = ureg_writemask( dst,
+ DstReg->WriteMask );
+
+ if (saturate)
+ dst = ureg_saturate( dst );
+
+ if (DstReg->RelAddr)
+ dst = ureg_dst_indirect( dst, ureg_src(t->address[0]) );
+
+ return dst;
+}
+
+
+/**
+ * Create a TGSI ureg_src register from a Mesa src register.
+ */
+static struct ureg_src
+translate_src( struct st_translate *t,
+ const struct prog_src_register *SrcReg )
+{
+ struct ureg_src src = src_register( t, SrcReg->File, SrcReg->Index );
+
+ if (t->procType == TGSI_PROCESSOR_GEOMETRY && SrcReg->HasIndex2) {
+ src = src_register( t, SrcReg->File, SrcReg->Index2 );
+ if (SrcReg->RelAddr2)
+ src = ureg_src_dimension_indirect( src, ureg_src(t->address[0]),
+ SrcReg->Index);
+ else
+ src = ureg_src_dimension( src, SrcReg->Index);
+ }
+
+ src = ureg_swizzle( src,
+ GET_SWZ( SrcReg->Swizzle, 0 ) & 0x3,
+ GET_SWZ( SrcReg->Swizzle, 1 ) & 0x3,
+ GET_SWZ( SrcReg->Swizzle, 2 ) & 0x3,
+ GET_SWZ( SrcReg->Swizzle, 3 ) & 0x3);
+
+ if (SrcReg->Negate == NEGATE_XYZW)
+ src = ureg_negate(src);
+
+ if (SrcReg->Abs)
+ src = ureg_abs(src);
+
+ if (SrcReg->RelAddr) {
+ src = ureg_src_indirect( src, ureg_src(t->address[0]));
+ if (SrcReg->File != PROGRAM_INPUT &&
+ SrcReg->File != PROGRAM_OUTPUT) {
+ /* If SrcReg->Index was negative, it was set to zero in
+ * src_register(). Reassign it now. But don't do this
+ * for input/output regs since they get remapped while
+ * const buffers don't.
+ */
+ src.Index = SrcReg->Index;
+ }
+ }
+
+ return src;
+}
+
+
+static struct ureg_src swizzle_4v( struct ureg_src src,
+ const unsigned *swz )
+{
+ return ureg_swizzle( src, swz[0], swz[1], swz[2], swz[3] );
+}
+
+
+/**
+ * Translate a SWZ instruction into a MOV, MUL or MAD instruction. EG:
+ *
+ * SWZ dst, src.x-y10
+ *
+ * becomes:
+ *
+ * MAD dst {1,-1,0,0}, src.xyxx, {0,0,1,0}
+ */
+static void emit_swz( struct st_translate *t,
+ struct ureg_dst dst,
+ const struct prog_src_register *SrcReg )
+{
+ struct ureg_program *ureg = t->ureg;
+ struct ureg_src src = src_register( t, SrcReg->File, SrcReg->Index );
+
+ unsigned negate_mask = SrcReg->Negate;
+
+ unsigned one_mask = ((GET_SWZ(SrcReg->Swizzle, 0) == SWIZZLE_ONE) << 0 |
+ (GET_SWZ(SrcReg->Swizzle, 1) == SWIZZLE_ONE) << 1 |
+ (GET_SWZ(SrcReg->Swizzle, 2) == SWIZZLE_ONE) << 2 |
+ (GET_SWZ(SrcReg->Swizzle, 3) == SWIZZLE_ONE) << 3);
+
+ unsigned zero_mask = ((GET_SWZ(SrcReg->Swizzle, 0) == SWIZZLE_ZERO) << 0 |
+ (GET_SWZ(SrcReg->Swizzle, 1) == SWIZZLE_ZERO) << 1 |
+ (GET_SWZ(SrcReg->Swizzle, 2) == SWIZZLE_ZERO) << 2 |
+ (GET_SWZ(SrcReg->Swizzle, 3) == SWIZZLE_ZERO) << 3);
+
+ unsigned negative_one_mask = one_mask & negate_mask;
+ unsigned positive_one_mask = one_mask & ~negate_mask;
+
+ struct ureg_src imm;
+ unsigned i;
+ unsigned mul_swizzle[4] = {0,0,0,0};
+ unsigned add_swizzle[4] = {0,0,0,0};
+ unsigned src_swizzle[4] = {0,0,0,0};
+ boolean need_add = FALSE;
+ boolean need_mul = FALSE;
+
+ if (dst.WriteMask == 0)
+ return;
+
+ /* Is this just a MOV?
+ */
+ if (zero_mask == 0 &&
+ one_mask == 0 &&
+ (negate_mask == 0 || negate_mask == TGSI_WRITEMASK_XYZW))
+ {
+ ureg_MOV( ureg, dst, translate_src( t, SrcReg ));
+ return;
+ }
+
+#define IMM_ZERO 0
+#define IMM_ONE 1
+#define IMM_NEG_ONE 2
+
+ imm = ureg_imm3f( ureg, 0, 1, -1 );
+
+ for (i = 0; i < 4; i++) {
+ unsigned bit = 1 << i;
+
+ if (dst.WriteMask & bit) {
+ if (positive_one_mask & bit) {
+ mul_swizzle[i] = IMM_ZERO;
+ add_swizzle[i] = IMM_ONE;
+ need_add = TRUE;
+ }
+ else if (negative_one_mask & bit) {
+ mul_swizzle[i] = IMM_ZERO;
+ add_swizzle[i] = IMM_NEG_ONE;
+ need_add = TRUE;
+ }
+ else if (zero_mask & bit) {
+ mul_swizzle[i] = IMM_ZERO;
+ add_swizzle[i] = IMM_ZERO;
+ need_add = TRUE;
+ }
+ else {
+ add_swizzle[i] = IMM_ZERO;
+ src_swizzle[i] = GET_SWZ(SrcReg->Swizzle, i);
+ need_mul = TRUE;
+ if (negate_mask & bit) {
+ mul_swizzle[i] = IMM_NEG_ONE;
+ }
+ else {
+ mul_swizzle[i] = IMM_ONE;
+ }
+ }
+ }
+ }
+
+ if (need_mul && need_add) {
+ ureg_MAD( ureg,
+ dst,
+ swizzle_4v( src, src_swizzle ),
+ swizzle_4v( imm, mul_swizzle ),
+ swizzle_4v( imm, add_swizzle ) );
+ }
+ else if (need_mul) {
+ ureg_MUL( ureg,
+ dst,
+ swizzle_4v( src, src_swizzle ),
+ swizzle_4v( imm, mul_swizzle ) );
+ }
+ else if (need_add) {
+ ureg_MOV( ureg,
+ dst,
+ swizzle_4v( imm, add_swizzle ) );
+ }
+ else {
+ debug_assert(0);
+ }
+
+#undef IMM_ZERO
+#undef IMM_ONE
+#undef IMM_NEG_ONE
+}
+
+
+/**
+ * Negate the value of DDY to match GL semantics where (0,0) is the
+ * lower-left corner of the window.
+ * Note that the GL_ARB_fragment_coord_conventions extension will
+ * effect this someday.
+ */
+static void emit_ddy( struct st_translate *t,
+ struct ureg_dst dst,
+ const struct prog_src_register *SrcReg )
+{
+ struct ureg_program *ureg = t->ureg;
+ struct ureg_src src = translate_src( t, SrcReg );
+ src = ureg_negate( src );
+ ureg_DDY( ureg, dst, src );
+}
+
+
+
+static unsigned
+translate_opcode( unsigned op )
+{
+ switch( op ) {
+ case OPCODE_ARL:
+ return TGSI_OPCODE_ARL;
+ case OPCODE_ABS:
+ return TGSI_OPCODE_ABS;
+ case OPCODE_ADD:
+ return TGSI_OPCODE_ADD;
+ case OPCODE_BGNLOOP:
+ return TGSI_OPCODE_BGNLOOP;
+ case OPCODE_BGNSUB:
+ return TGSI_OPCODE_BGNSUB;
+ case OPCODE_BRA:
+ return TGSI_OPCODE_BRA;
+ case OPCODE_BRK:
+ return TGSI_OPCODE_BRK;
+ case OPCODE_CAL:
+ return TGSI_OPCODE_CAL;
+ case OPCODE_CMP:
+ return TGSI_OPCODE_CMP;
+ case OPCODE_CONT:
+ return TGSI_OPCODE_CONT;
+ case OPCODE_COS:
+ return TGSI_OPCODE_COS;
+ case OPCODE_DDX:
+ return TGSI_OPCODE_DDX;
+ case OPCODE_DDY:
+ return TGSI_OPCODE_DDY;
+ case OPCODE_DP2:
+ return TGSI_OPCODE_DP2;
+ case OPCODE_DP2A:
+ return TGSI_OPCODE_DP2A;
+ case OPCODE_DP3:
+ return TGSI_OPCODE_DP3;
+ case OPCODE_DP4:
+ return TGSI_OPCODE_DP4;
+ case OPCODE_DPH:
+ return TGSI_OPCODE_DPH;
+ case OPCODE_DST:
+ return TGSI_OPCODE_DST;
+ case OPCODE_ELSE:
+ return TGSI_OPCODE_ELSE;
+ case OPCODE_EMIT_VERTEX:
+ return TGSI_OPCODE_EMIT;
+ case OPCODE_END_PRIMITIVE:
+ return TGSI_OPCODE_ENDPRIM;
+ case OPCODE_ENDIF:
+ return TGSI_OPCODE_ENDIF;
+ case OPCODE_ENDLOOP:
+ return TGSI_OPCODE_ENDLOOP;
+ case OPCODE_ENDSUB:
+ return TGSI_OPCODE_ENDSUB;
+ case OPCODE_EX2:
+ return TGSI_OPCODE_EX2;
+ case OPCODE_EXP:
+ return TGSI_OPCODE_EXP;
+ case OPCODE_FLR:
+ return TGSI_OPCODE_FLR;
+ case OPCODE_FRC:
+ return TGSI_OPCODE_FRC;
+ case OPCODE_IF:
+ return TGSI_OPCODE_IF;
+ case OPCODE_TRUNC:
+ return TGSI_OPCODE_TRUNC;
+ case OPCODE_KIL:
+ return TGSI_OPCODE_KIL;
+ case OPCODE_KIL_NV:
+ return TGSI_OPCODE_KILP;
+ case OPCODE_LG2:
+ return TGSI_OPCODE_LG2;
+ case OPCODE_LOG:
+ return TGSI_OPCODE_LOG;
+ case OPCODE_LIT:
+ return TGSI_OPCODE_LIT;
+ case OPCODE_LRP:
+ return TGSI_OPCODE_LRP;
+ case OPCODE_MAD:
+ return TGSI_OPCODE_MAD;
+ case OPCODE_MAX:
+ return TGSI_OPCODE_MAX;
+ case OPCODE_MIN:
+ return TGSI_OPCODE_MIN;
+ case OPCODE_MOV:
+ return TGSI_OPCODE_MOV;
+ case OPCODE_MUL:
+ return TGSI_OPCODE_MUL;
+ case OPCODE_NOP:
+ return TGSI_OPCODE_NOP;
+ case OPCODE_NRM3:
+ return TGSI_OPCODE_NRM;
+ case OPCODE_NRM4:
+ return TGSI_OPCODE_NRM4;
+ case OPCODE_POW:
+ return TGSI_OPCODE_POW;
+ case OPCODE_RCP:
+ return TGSI_OPCODE_RCP;
+ case OPCODE_RET:
+ return TGSI_OPCODE_RET;
+ case OPCODE_RSQ:
+ return TGSI_OPCODE_RSQ;
+ case OPCODE_SCS:
+ return TGSI_OPCODE_SCS;
+ case OPCODE_SEQ:
+ return TGSI_OPCODE_SEQ;
+ case OPCODE_SGE:
+ return TGSI_OPCODE_SGE;
+ case OPCODE_SGT:
+ return TGSI_OPCODE_SGT;
+ case OPCODE_SIN:
+ return TGSI_OPCODE_SIN;
+ case OPCODE_SLE:
+ return TGSI_OPCODE_SLE;
+ case OPCODE_SLT:
+ return TGSI_OPCODE_SLT;
+ case OPCODE_SNE:
+ return TGSI_OPCODE_SNE;
+ case OPCODE_SSG:
+ return TGSI_OPCODE_SSG;
+ case OPCODE_SUB:
+ return TGSI_OPCODE_SUB;
+ case OPCODE_TEX:
+ return TGSI_OPCODE_TEX;
+ case OPCODE_TXB:
+ return TGSI_OPCODE_TXB;
+ case OPCODE_TXD:
+ return TGSI_OPCODE_TXD;
+ case OPCODE_TXL:
+ return TGSI_OPCODE_TXL;
+ case OPCODE_TXP:
+ return TGSI_OPCODE_TXP;
+ case OPCODE_XPD:
+ return TGSI_OPCODE_XPD;
+ case OPCODE_END:
+ return TGSI_OPCODE_END;
+ default:
+ debug_assert( 0 );
+ return TGSI_OPCODE_NOP;
+ }
+}
+
+
+static void
+compile_instruction(
+ struct st_translate *t,
+ const struct prog_instruction *inst )
+{
+ struct ureg_program *ureg = t->ureg;
+ GLuint i;
+ struct ureg_dst dst[1];
+ struct ureg_src src[4];
+ unsigned num_dst;
+ unsigned num_src;
+
+ num_dst = _mesa_num_inst_dst_regs( inst->Opcode );
+ num_src = _mesa_num_inst_src_regs( inst->Opcode );
+
+ if (num_dst)
+ dst[0] = translate_dst( t,
+ &inst->DstReg,
+ inst->SaturateMode );
+
+ for (i = 0; i < num_src; i++)
+ src[i] = translate_src( t, &inst->SrcReg[i] );
+
+ switch( inst->Opcode ) {
+ case OPCODE_SWZ:
+ emit_swz( t, dst[0], &inst->SrcReg[0] );
+ return;
+
+ case OPCODE_BGNLOOP:
+ case OPCODE_CAL:
+ case OPCODE_ELSE:
+ case OPCODE_ENDLOOP:
+ case OPCODE_IF:
+ debug_assert(num_dst == 0);
+ ureg_label_insn( ureg,
+ translate_opcode( inst->Opcode ),
+ src, num_src,
+ get_label( t, inst->BranchTarget ));
+ return;
+
+ case OPCODE_TEX:
+ case OPCODE_TXB:
+ case OPCODE_TXD:
+ case OPCODE_TXL:
+ case OPCODE_TXP:
+ src[num_src++] = t->samplers[inst->TexSrcUnit];
+ ureg_tex_insn( ureg,
+ translate_opcode( inst->Opcode ),
+ dst, num_dst,
+ translate_texture_target( inst->TexSrcTarget,
+ inst->TexShadow ),
+ src, num_src );
+ return;
+
+ case OPCODE_SCS:
+ dst[0] = ureg_writemask(dst[0], TGSI_WRITEMASK_XY );
+ ureg_insn( ureg,
+ translate_opcode( inst->Opcode ),
+ dst, num_dst,
+ src, num_src );
+ break;
+
+ case OPCODE_XPD:
+ dst[0] = ureg_writemask(dst[0], TGSI_WRITEMASK_XYZ );
+ ureg_insn( ureg,
+ translate_opcode( inst->Opcode ),
+ dst, num_dst,
+ src, num_src );
+ break;
+
+ case OPCODE_NOISE1:
+ case OPCODE_NOISE2:
+ case OPCODE_NOISE3:
+ case OPCODE_NOISE4:
+ /* At some point, a motivated person could add a better
+ * implementation of noise. Currently not even the nvidia
+ * binary drivers do anything more than this. In any case, the
+ * place to do this is in the GL state tracker, not the poor
+ * driver.
+ */
+ ureg_MOV( ureg, dst[0], ureg_imm1f(ureg, 0.5) );
+ break;
+
+ case OPCODE_DDY:
+ emit_ddy( t, dst[0], &inst->SrcReg[0] );
+ break;
+
+ default:
+ ureg_insn( ureg,
+ translate_opcode( inst->Opcode ),
+ dst, num_dst,
+ src, num_src );
+ break;
+ }
+}
+
+
+/**
+ * Emit the TGSI instructions to adjust the WPOS pixel center convention
+ * Basically, add (adjX, adjY) to the fragment position.
+ */
+static void
+emit_adjusted_wpos( struct st_translate *t,
+ const struct gl_program *program,
+ GLfloat adjX, GLfloat adjY)
+{
+ struct ureg_program *ureg = t->ureg;
+ struct ureg_dst wpos_temp = ureg_DECL_temporary(ureg);
+ struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]];
+
+ /* Note that we bias X and Y and pass Z and W through unchanged.
+ * The shader might also use gl_FragCoord.w and .z.
+ */
+ ureg_ADD(ureg, wpos_temp, wpos_input,
+ ureg_imm4f(ureg, adjX, adjY, 0.0f, 0.0f));
+
+ t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp);
+}
+
+
+/**
+ * Emit the TGSI instructions for inverting the WPOS y coordinate.
+ * This code is unavoidable because it also depends on whether
+ * a FBO is bound (STATE_FB_WPOS_Y_TRANSFORM).
+ */
+static void
+emit_wpos_inversion( struct st_translate *t,
+ const struct gl_program *program,
+ boolean invert)
+{
+ struct ureg_program *ureg = t->ureg;
+
+ /* Fragment program uses fragment position input.
+ * Need to replace instances of INPUT[WPOS] with temp T
+ * where T = INPUT[WPOS] by y is inverted.
+ */
+ static const gl_state_index wposTransformState[STATE_LENGTH]
+ = { STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM, 0, 0, 0 };
+
+ /* XXX: note we are modifying the incoming shader here! Need to
+ * do this before emitting the constant decls below, or this
+ * will be missed:
+ */
+ unsigned wposTransConst = _mesa_add_state_reference(program->Parameters,
+ wposTransformState);
+
+ struct ureg_src wpostrans = ureg_DECL_constant( ureg, wposTransConst );
+ struct ureg_dst wpos_temp;
+ struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]];
+
+ /* MOV wpos_temp, input[wpos]
+ */
+ if (wpos_input.File == TGSI_FILE_TEMPORARY)
+ wpos_temp = ureg_dst(wpos_input);
+ else {
+ wpos_temp = ureg_DECL_temporary( ureg );
+ ureg_MOV( ureg, wpos_temp, wpos_input );
+ }
+
+ if (invert) {
+ /* MAD wpos_temp.y, wpos_input, wpostrans.xxxx, wpostrans.yyyy
+ */
+ ureg_MAD( ureg,
+ ureg_writemask(wpos_temp, TGSI_WRITEMASK_Y ),
+ wpos_input,
+ ureg_scalar(wpostrans, 0),
+ ureg_scalar(wpostrans, 1));
+ } else {
+ /* MAD wpos_temp.y, wpos_input, wpostrans.zzzz, wpostrans.wwww
+ */
+ ureg_MAD( ureg,
+ ureg_writemask(wpos_temp, TGSI_WRITEMASK_Y ),
+ wpos_input,
+ ureg_scalar(wpostrans, 2),
+ ureg_scalar(wpostrans, 3));
+ }
+
+ /* Use wpos_temp as position input from here on:
+ */
+ t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp);
+}
+
+
+/**
+ * Emit fragment position/ooordinate code.
+ */
+static void
+emit_wpos(struct st_context *st,
+ struct st_translate *t,
+ const struct gl_program *program,
+ struct ureg_program *ureg)
+{
+ const struct gl_fragment_program *fp =
+ (const struct gl_fragment_program *) program;
+ struct pipe_screen *pscreen = st->pipe->screen;
+ boolean invert = FALSE;
+
+ if (fp->OriginUpperLeft) {
+ /* Fragment shader wants origin in upper-left */
+ if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT)) {
+ /* the driver supports upper-left origin */
+ }
+ else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT)) {
+ /* the driver supports lower-left origin, need to invert Y */
+ ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
+ invert = TRUE;
+ }
+ else
+ assert(0);
+ }
+ else {
+ /* Fragment shader wants origin in lower-left */
+ if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT))
+ /* the driver supports lower-left origin */
+ ureg_property_fs_coord_origin(ureg, TGSI_FS_COORD_ORIGIN_LOWER_LEFT);
+ else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT))
+ /* the driver supports upper-left origin, need to invert Y */
+ invert = TRUE;
+ else
+ assert(0);
+ }
+
+ if (fp->PixelCenterInteger) {
+ /* Fragment shader wants pixel center integer */
+ if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER))
+ /* the driver supports pixel center integer */
+ ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
+ else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER))
+ /* the driver supports pixel center half integer, need to bias X,Y */
+ emit_adjusted_wpos(t, program, 0.5f, invert ? 0.5f : -0.5f);
+ else
+ assert(0);
+ }
+ else {
+ /* Fragment shader wants pixel center half integer */
+ if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) {
+ /* the driver supports pixel center half integer */
+ }
+ else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) {
+ /* the driver supports pixel center integer, need to bias X,Y */
+ ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER);
+ emit_adjusted_wpos(t, program, 0.5f, invert ? -0.5f : 0.5f);
+ }
+ else
+ assert(0);
+ }
+
+ /* we invert after adjustment so that we avoid the MOV to temporary,
+ * and reuse the adjustment ADD instead */
+ emit_wpos_inversion(t, program, invert);
+}
+
+
+/**
+ * OpenGL's fragment gl_FrontFace input is 1 for front-facing, 0 for back.
+ * TGSI uses +1 for front, -1 for back.
+ * This function converts the TGSI value to the GL value. Simply clamping/
+ * saturating the value to [0,1] does the job.
+ */
+static void
+emit_face_var( struct st_translate *t,
+ const struct gl_program *program )
+{
+ struct ureg_program *ureg = t->ureg;
+ struct ureg_dst face_temp = ureg_DECL_temporary( ureg );
+ struct ureg_src face_input = t->inputs[t->inputMapping[FRAG_ATTRIB_FACE]];
+
+ /* MOV_SAT face_temp, input[face]
+ */
+ face_temp = ureg_saturate( face_temp );
+ ureg_MOV( ureg, face_temp, face_input );
+
+ /* Use face_temp as face input from here on:
+ */
+ t->inputs[t->inputMapping[FRAG_ATTRIB_FACE]] = ureg_src(face_temp);
+}
+
+
+static void
+emit_edgeflags( struct st_translate *t,
+ const struct gl_program *program )
+{
+ struct ureg_program *ureg = t->ureg;
+ struct ureg_dst edge_dst = t->outputs[t->outputMapping[VERT_RESULT_EDGE]];
+ struct ureg_src edge_src = t->inputs[t->inputMapping[VERT_ATTRIB_EDGEFLAG]];
+
+ ureg_MOV( ureg, edge_dst, edge_src );
+}
+
+
+/**
+ * Translate Mesa program to TGSI format.
+ * \param program the program to translate
+ * \param numInputs number of input registers used
+ * \param inputMapping maps Mesa fragment program inputs to TGSI generic
+ * input indexes
+ * \param inputSemanticName the TGSI_SEMANTIC flag for each input
+ * \param inputSemanticIndex the semantic index (ex: which texcoord) for
+ * each input
+ * \param interpMode the TGSI_INTERPOLATE_LINEAR/PERSP mode for each input
+ * \param numOutputs number of output registers used
+ * \param outputMapping maps Mesa fragment program outputs to TGSI
+ * generic outputs
+ * \param outputSemanticName the TGSI_SEMANTIC flag for each output
+ * \param outputSemanticIndex the semantic index (ex: which texcoord) for
+ * each output
+ *
+ * \return PIPE_OK or PIPE_ERROR_OUT_OF_MEMORY
+ */
+enum pipe_error
+st_translate_mesa_program(
+ struct gl_context *ctx,
+ uint procType,
+ struct ureg_program *ureg,
+ const struct gl_program *program,
+ GLuint numInputs,
+ const GLuint inputMapping[],
+ const ubyte inputSemanticName[],
+ const ubyte inputSemanticIndex[],
+ const GLuint interpMode[],
+ GLuint numOutputs,
+ const GLuint outputMapping[],
+ const ubyte outputSemanticName[],
+ const ubyte outputSemanticIndex[],
+ boolean passthrough_edgeflags )
+{
+ struct st_translate translate, *t;
+ unsigned i;
+ enum pipe_error ret = PIPE_OK;
+
+ assert(numInputs <= Elements(t->inputs));
+ assert(numOutputs <= Elements(t->outputs));
+
+ t = &translate;
+ memset(t, 0, sizeof *t);
+
+ t->procType = procType;
+ t->inputMapping = inputMapping;
+ t->outputMapping = outputMapping;
+ t->ureg = ureg;
+ t->pointSizeOutIndex = -1;
+ t->prevInstWrotePointSize = GL_FALSE;
+
+ /*_mesa_print_program(program);*/
+
+ /*
+ * Declare input attributes.
+ */
+ if (procType == TGSI_PROCESSOR_FRAGMENT) {
+ for (i = 0; i < numInputs; i++) {
+ if (program->InputFlags[0] & PROG_PARAM_BIT_CYL_WRAP) {
+ t->inputs[i] = ureg_DECL_fs_input_cyl(ureg,
+ inputSemanticName[i],
+ inputSemanticIndex[i],
+ interpMode[i],
+ TGSI_CYLINDRICAL_WRAP_X);
+ }
+ else {
+ t->inputs[i] = ureg_DECL_fs_input(ureg,
+ inputSemanticName[i],
+ inputSemanticIndex[i],
+ interpMode[i]);
+ }
+ }
+
+ if (program->InputsRead & FRAG_BIT_WPOS) {
+ /* Must do this after setting up t->inputs, and before
+ * emitting constant references, below:
+ */
+ emit_wpos(st_context(ctx), t, program, ureg);
+ }
+
+ if (program->InputsRead & FRAG_BIT_FACE) {
+ emit_face_var( t, program );
+ }
+
+ /*
+ * Declare output attributes.
+ */
+ for (i = 0; i < numOutputs; i++) {
+ switch (outputSemanticName[i]) {
+ case TGSI_SEMANTIC_POSITION:
+ t->outputs[i] = ureg_DECL_output( ureg,
+ TGSI_SEMANTIC_POSITION, /* Z / Depth */
+ outputSemanticIndex[i] );
+
+ t->outputs[i] = ureg_writemask( t->outputs[i],
+ TGSI_WRITEMASK_Z );
+ break;
+ case TGSI_SEMANTIC_STENCIL:
+ t->outputs[i] = ureg_DECL_output( ureg,
+ TGSI_SEMANTIC_STENCIL, /* Stencil */
+ outputSemanticIndex[i] );
+ t->outputs[i] = ureg_writemask( t->outputs[i],
+ TGSI_WRITEMASK_Y );
+ break;
+ case TGSI_SEMANTIC_COLOR:
+ t->outputs[i] = ureg_DECL_output( ureg,
+ TGSI_SEMANTIC_COLOR,
+ outputSemanticIndex[i] );
+ break;
+ default:
+ debug_assert(0);
+ return 0;
+ }
+ }
+ }
+ else if (procType == TGSI_PROCESSOR_GEOMETRY) {
+ for (i = 0; i < numInputs; i++) {
+ t->inputs[i] = ureg_DECL_gs_input(ureg,
+ i,
+ inputSemanticName[i],
+ inputSemanticIndex[i]);
+ }
+
+ for (i = 0; i < numOutputs; i++) {
+ t->outputs[i] = ureg_DECL_output( ureg,
+ outputSemanticName[i],
+ outputSemanticIndex[i] );
+ }
+ }
+ else {
+ assert(procType == TGSI_PROCESSOR_VERTEX);
+
+ for (i = 0; i < numInputs; i++) {
+ t->inputs[i] = ureg_DECL_vs_input(ureg, i);
+ }
+
+ for (i = 0; i < numOutputs; i++) {
+ t->outputs[i] = ureg_DECL_output( ureg,
+ outputSemanticName[i],
+ outputSemanticIndex[i] );
+ if ((outputSemanticName[i] == TGSI_SEMANTIC_PSIZE) && program->Id) {
+ /* Writing to the point size result register requires special
+ * handling to implement clamping.
+ */
+ static const gl_state_index pointSizeClampState[STATE_LENGTH]
+ = { STATE_INTERNAL, STATE_POINT_SIZE_IMPL_CLAMP, 0, 0, 0 };
+ /* XXX: note we are modifying the incoming shader here! Need to
+ * do this before emitting the constant decls below, or this
+ * will be missed:
+ */
+ unsigned pointSizeClampConst =
+ _mesa_add_state_reference(program->Parameters,
+ pointSizeClampState);
+ struct ureg_dst psizregtemp = ureg_DECL_temporary( ureg );
+ t->pointSizeConst = ureg_DECL_constant( ureg, pointSizeClampConst );
+ t->pointSizeResult = t->outputs[i];
+ t->pointSizeOutIndex = i;
+ t->outputs[i] = psizregtemp;
+ }
+ }
+ if (passthrough_edgeflags)
+ emit_edgeflags( t, program );
+ }
+
+ /* Declare address register.
+ */
+ if (program->NumAddressRegs > 0) {
+ debug_assert( program->NumAddressRegs == 1 );
+ t->address[0] = ureg_DECL_address( ureg );
+ }
+
+ /* Declare misc input registers
+ */
+ {
+ GLbitfield sysInputs = program->SystemValuesRead;
+ unsigned numSys = 0;
+ for (i = 0; sysInputs; i++) {
+ if (sysInputs & (1 << i)) {
+ unsigned semName = mesa_sysval_to_semantic[i];
+ t->systemValues[i] = ureg_DECL_system_value(ureg, numSys, semName, 0);
+ numSys++;
+ sysInputs &= ~(1 << i);
+ }
+ }
+ }
+
+ if (program->IndirectRegisterFiles & (1 << PROGRAM_TEMPORARY)) {
+ /* If temps are accessed with indirect addressing, declare temporaries
+ * in sequential order. Else, we declare them on demand elsewhere.
+ */
+ for (i = 0; i < program->NumTemporaries; i++) {
+ /* XXX use TGSI_FILE_TEMPORARY_ARRAY when it's supported by ureg */
+ t->temps[i] = ureg_DECL_temporary( t->ureg );
+ }
+ }
+
+ /* Emit constants and immediates. Mesa uses a single index space
+ * for these, so we put all the translated regs in t->constants.
+ */
+ if (program->Parameters) {
+ t->constants = CALLOC( program->Parameters->NumParameters,
+ sizeof t->constants[0] );
+ if (t->constants == NULL) {
+ ret = PIPE_ERROR_OUT_OF_MEMORY;
+ goto out;
+ }
+
+ for (i = 0; i < program->Parameters->NumParameters; i++) {
+ switch (program->Parameters->Parameters[i].Type) {
+ case PROGRAM_ENV_PARAM:
+ case PROGRAM_LOCAL_PARAM:
+ case PROGRAM_STATE_VAR:
+ case PROGRAM_NAMED_PARAM:
+ case PROGRAM_UNIFORM:
+ t->constants[i] = ureg_DECL_constant( ureg, i );
+ break;
+
+ /* Emit immediates only when there's no indirect addressing of
+ * the const buffer.
+ * FIXME: Be smarter and recognize param arrays:
+ * indirect addressing is only valid within the referenced
+ * array.
+ */
+ case PROGRAM_CONSTANT:
+ if (program->IndirectRegisterFiles & PROGRAM_ANY_CONST)
+ t->constants[i] = ureg_DECL_constant( ureg, i );
+ else
+ t->constants[i] =
+ ureg_DECL_immediate( ureg,
+ program->Parameters->ParameterValues[i],
+ 4 );
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ /* texture samplers */
+ for (i = 0; i < ctx->Const.MaxTextureImageUnits; i++) {
+ if (program->SamplersUsed & (1 << i)) {
+ t->samplers[i] = ureg_DECL_sampler( ureg, i );
+ }
+ }
+
+ /* Emit each instruction in turn:
+ */
+ for (i = 0; i < program->NumInstructions; i++) {
+ set_insn_start( t, ureg_get_instruction_number( ureg ));
+ compile_instruction( t, &program->Instructions[i] );
+
+ if (t->prevInstWrotePointSize && program->Id) {
+ /* The previous instruction wrote to the (fake) vertex point size
+ * result register. Now we need to clamp that value to the min/max
+ * point size range, putting the result into the real point size
+ * register.
+ * Note that we can't do this easily at the end of program due to
+ * possible early return.
+ */
+ set_insn_start( t, ureg_get_instruction_number( ureg ));
+ ureg_MAX( t->ureg,
+ ureg_writemask(t->outputs[t->pointSizeOutIndex], WRITEMASK_X),
+ ureg_src(t->outputs[t->pointSizeOutIndex]),
+ ureg_swizzle(t->pointSizeConst, 1,1,1,1));
+ ureg_MIN( t->ureg, ureg_writemask(t->pointSizeResult, WRITEMASK_X),
+ ureg_src(t->outputs[t->pointSizeOutIndex]),
+ ureg_swizzle(t->pointSizeConst, 2,2,2,2));
+ }
+ t->prevInstWrotePointSize = GL_FALSE;
+ }
+
+ /* Fix up all emitted labels:
+ */
+ for (i = 0; i < t->labels_count; i++) {
+ ureg_fixup_label( ureg,
+ t->labels[i].token,
+ t->insn[t->labels[i].branch_target] );
+ }
+
+out:
+ FREE(t->insn);
+ FREE(t->labels);
+ FREE(t->constants);
+
+ if (t->error) {
+ debug_printf("%s: translate error flag set\n", __FUNCTION__);
+ }
+
+ return ret;
+}
+
+
+/**
+ * Tokens cannot be free with free otherwise the builtin gallium
+ * malloc debugging will get confused.
+ */
+void
+st_free_tokens(const struct tgsi_token *tokens)
+{
+ FREE((void *)tokens);
+}
diff --git a/xorg-server/xkeyboard-config/NEWS b/xorg-server/xkeyboard-config/NEWS
index 11df54427..c6411f6f0 100644
--- a/xorg-server/xkeyboard-config/NEWS
+++ b/xorg-server/xkeyboard-config/NEWS
@@ -1,44 +1,45 @@
-2.0 Bugfixes (17). Updated/new translations. Some new layouts and models.
-1.9 Bugfixes (27). Updated/new translations. Some new layouts and models.
- The evdev model is gone, use pc105 instead.
- Some fixes for the build process
-1.8 Bugfixes (10). Updated/new translations. Some new layouts and models.
-1.7 Bugfixes (30). Updated/new translations. Some new layouts and models.
-1.6 Bugfixes (36). Updated/new translations. Some new layouts and models.
- Added terminate:* group
- Dropped locale-specific models
- Improved compat rules
-1.5 Bugfixes (45). Updated/new translations. Some new layouts and models. Serious cleanup in symbols/inet.
-1.4 Bugfixes (31). Updated/new translations. Some new layouts and models. Added evdev ruleset.
-1.3 Bugfixes (35). Updated/new translations. Some new layouts and models. A lot of country and language-related information put into base.xml. Dropped unsupported rulesets sgi and sun.
-1.2 Bugfixes (36). Updated/new translations, renewed relations with TP. Some new layouts and models. A lot of changes from OLPC project. Changed base.xml merging schema (.gmo files are installed and used explicitly)
-1.1 First time-based release. Bugfixes (27). Updated/new translations, renewed relations with TP. Renamed (for clarity) types. Some new layouts and models.
-1.0 Maintenance release. Bugfixes (72). Updated/new translations. Updated/new layouts and models.
-0.9 Maintenance release. Bugfixes (76). Updated/new translations. Updated/new layouts.
-0.8 Maintenance release. Bugfixes. Updated/new translations. Updated/new layouts.
- Massive patch from Sun Microsystems incorporated.
-0.7 New layouts and keyboard models (mostly media keyboards)
- Massive reorganization of the symbols/inet file (huge credits to Frederic Boiteux)
- Improved RAlt handling (for grp:alts_toggle and lvl3:ralt_switch)
- A lot of bugs fixed (from fd.o bugzilla)
- Added more translations.
-0.5 More bugs from freedesktop.org bugzilla fixed.
- The group names now are matching the descriptions - and the validating
- scripts are implemented.
- Some layouts, variants, models are added/fixed.
- Some translations are updated (though the overall translation activity
- is disappointinly low).
-0.4 A lot of fixes and polishing (introduced own CVS keyword).
- Highlights:
- More universal EURO-related options added.
- Improved reorganized indicator handling.
- More logical level3 handling
-0.3 HEAVILY restructured layout names
- Compatibility rules are introduced
- intltool problem resolved (sorry, with warnings)
-0.2 Now automatically create symlink for xkbcomp (XFree/XOrg servers need it).
- Added HOWTO.transition.
- Added Maori layout.
- Fixed bug 515.
-0.1 First public release.
- XKB configuration only. Restructured layouts tree. Only additive layouts are included. No compatibility rules.
+2.1 Bugfixes (13). Updated/new translations. Some new layouts and models.
+2.0 Bugfixes (17). Updated/new translations. Some new layouts and models.
+1.9 Bugfixes (27). Updated/new translations. Some new layouts and models.
+ The evdev model is gone, use pc105 instead.
+ Some fixes for the build process
+1.8 Bugfixes (10). Updated/new translations. Some new layouts and models.
+1.7 Bugfixes (30). Updated/new translations. Some new layouts and models.
+1.6 Bugfixes (36). Updated/new translations. Some new layouts and models.
+ Added terminate:* group
+ Dropped locale-specific models
+ Improved compat rules
+1.5 Bugfixes (45). Updated/new translations. Some new layouts and models. Serious cleanup in symbols/inet.
+1.4 Bugfixes (31). Updated/new translations. Some new layouts and models. Added evdev ruleset.
+1.3 Bugfixes (35). Updated/new translations. Some new layouts and models. A lot of country and language-related information put into base.xml. Dropped unsupported rulesets sgi and sun.
+1.2 Bugfixes (36). Updated/new translations, renewed relations with TP. Some new layouts and models. A lot of changes from OLPC project. Changed base.xml merging schema (.gmo files are installed and used explicitly)
+1.1 First time-based release. Bugfixes (27). Updated/new translations, renewed relations with TP. Renamed (for clarity) types. Some new layouts and models.
+1.0 Maintenance release. Bugfixes (72). Updated/new translations. Updated/new layouts and models.
+0.9 Maintenance release. Bugfixes (76). Updated/new translations. Updated/new layouts.
+0.8 Maintenance release. Bugfixes. Updated/new translations. Updated/new layouts.
+ Massive patch from Sun Microsystems incorporated.
+0.7 New layouts and keyboard models (mostly media keyboards)
+ Massive reorganization of the symbols/inet file (huge credits to Frederic Boiteux)
+ Improved RAlt handling (for grp:alts_toggle and lvl3:ralt_switch)
+ A lot of bugs fixed (from fd.o bugzilla)
+ Added more translations.
+0.5 More bugs from freedesktop.org bugzilla fixed.
+ The group names now are matching the descriptions - and the validating
+ scripts are implemented.
+ Some layouts, variants, models are added/fixed.
+ Some translations are updated (though the overall translation activity
+ is disappointinly low).
+0.4 A lot of fixes and polishing (introduced own CVS keyword).
+ Highlights:
+ More universal EURO-related options added.
+ Improved reorganized indicator handling.
+ More logical level3 handling
+0.3 HEAVILY restructured layout names
+ Compatibility rules are introduced
+ intltool problem resolved (sorry, with warnings)
+0.2 Now automatically create symlink for xkbcomp (XFree/XOrg servers need it).
+ Added HOWTO.transition.
+ Added Maori layout.
+ Fixed bug 515.
+0.1 First public release.
+ XKB configuration only. Restructured layouts tree. Only additive layouts are included. No compatibility rules.
diff --git a/xorg-server/xkeyboard-config/configure.in b/xorg-server/xkeyboard-config/configure.in
index 9278a7854..6da549740 100644
--- a/xorg-server/xkeyboard-config/configure.in
+++ b/xorg-server/xkeyboard-config/configure.in
@@ -1,98 +1,98 @@
-AC_INIT(xkeyboard-config, 2.0)
-AC_CONFIG_SRCDIR(rules/base.xml.in)
-AM_INIT_AUTOMAKE([foreign dist-bzip2])
-AM_MAINTAINER_MODE
-
-AC_SUBST(VERSION)
-
-AC_PATH_PROG([XKBCOMP], [xkbcomp], [not_found])
-if test x$XKBCOMP = xnot_found ; then
- AC_ERROR([xkbcomp is required to install the xkb data files])
-fi
-
-AC_ARG_WITH( xkb_base,
- [AS_HELP_STRING([--with-xkb-base=DIR],[XKB base path @<:@DATADIR/X11/xkb@:>@])],
- xkb_base="$withval",
- xkb_base="${datadir}/X11/xkb" )
-
-AC_ARG_WITH( xkb_rules_symlink,
- [ --with-xkb-rules-symlink=NAME1(,NAME2)* create symlink(s) to "old style" rules files (xfree86 and/or xorg)],
- xkb_rules_symlink="$withval" )
-
-AC_ARG_ENABLE( compat_rules,
- [ --enable-compat-rules create compatibility rules],
- enable_compat_rules="$enableval",
- enable_compat_rules="yes" )
-
-AM_CONDITIONAL(CREATE_RULES_SYMLINK, test "x$xkb_rules_symlink" != "x")
-
-AM_CONDITIONAL(USE_COMPAT_RULES, test "x$enable_compat_rules" = "xyes")
-
-# ****
-# i18n
-# ****
-AC_PROG_INTLTOOL(0.30)
-
-GETTEXT_PACKAGE=xkeyboard-config
-AC_SUBST(GETTEXT_PACKAGE)
-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
-
-AM_GLIB_GNU_GETTEXT
-
-ALL_LINGUAS="af az bg ca crh cs da de el en_GB eo es fi fr gl hu id it ka ko ky lt nb nl pl ro ru rw sk sl sq sr sv tr uk vi zh_CN zh_TW"
-
-AC_SUBST(xkb_base)
-AC_SUBST(xkb_rules_symlink)
-
-AC_OUTPUT([ po/Makefile.in
-Makefile
-compat/Makefile
-geometry/Makefile
-geometry/digital_vndr/Makefile
-geometry/sgi_vndr/Makefile
-keycodes/Makefile
-keycodes/digital_vndr/Makefile
-keycodes/sgi_vndr/Makefile
-keymap/Makefile
-keymap/digital_vndr/Makefile
-keymap/sgi_vndr/Makefile
-keymap/sun_vndr/Makefile
-semantics/Makefile
-rules/Makefile
-rules/bin/Makefile
-rules/compat/Makefile
-rules/extras/Makefile
-symbols/Makefile
-symbols/digital_vndr/Makefile
-symbols/fujitsu_vndr/Makefile
-symbols/hp_vndr/Makefile
-symbols/macintosh_vndr/Makefile
-symbols/nec_vndr/Makefile
-symbols/nokia_vndr/Makefile
-symbols/sgi_vndr/Makefile
-symbols/sony_vndr/Makefile
-symbols/sun_vndr/Makefile
-symbols/xfree68_vndr/Makefile
-symbols/extras/Makefile
-types/Makefile
-xkeyboard-config.pc
-xkeyboard-config.spec
-docs/Makefile
-])
-
-echo '***********************************************************'
-echo " $PACKAGE_NAME is configured with the following parameters:"
-echo " XKB base directory: $xkb_base"
-if test -z "$xkb_rules_symlink" ; then
- echo " Symbolic link(s) to legacy rules are not created"
-else
- echo " Symbolic link(s) to legacy rules: $xkb_rules_symlink"
-fi
-
-if test "$enable_compat_rules" = "yes" ; then
- echo " Compatibility rules are included"
-else
- echo " Compatibility rules are not included"
-fi
-echo '***********************************************************'
-
+AC_INIT(xkeyboard-config, 2.1)
+AC_CONFIG_SRCDIR(rules/base.xml.in)
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+AM_MAINTAINER_MODE
+
+AC_SUBST(VERSION)
+
+AC_PATH_PROG([XKBCOMP], [xkbcomp], [not_found])
+if test x$XKBCOMP = xnot_found ; then
+ AC_ERROR([xkbcomp is required to install the xkb data files])
+fi
+
+AC_ARG_WITH( xkb_base,
+ [AS_HELP_STRING([--with-xkb-base=DIR],[XKB base path @<:@DATADIR/X11/xkb@:>@])],
+ xkb_base="$withval",
+ xkb_base="${datadir}/X11/xkb" )
+
+AC_ARG_WITH( xkb_rules_symlink,
+ [ --with-xkb-rules-symlink=NAME1(,NAME2)* create symlink(s) to "old style" rules files (xfree86 and/or xorg)],
+ xkb_rules_symlink="$withval" )
+
+AC_ARG_ENABLE( compat_rules,
+ [ --enable-compat-rules create compatibility rules],
+ enable_compat_rules="$enableval",
+ enable_compat_rules="yes" )
+
+AM_CONDITIONAL(CREATE_RULES_SYMLINK, test "x$xkb_rules_symlink" != "x")
+
+AM_CONDITIONAL(USE_COMPAT_RULES, test "x$enable_compat_rules" = "xyes")
+
+# ****
+# i18n
+# ****
+AC_PROG_INTLTOOL(0.30)
+
+GETTEXT_PACKAGE=xkeyboard-config
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
+
+AM_GLIB_GNU_GETTEXT
+
+ALL_LINGUAS="af az bg ca crh cs da de el en_GB eo es fi fr gl hu id it ka ko ky lt nb nl pl ro ru rw sk sl sq sr sv tr uk vi zh_CN zh_TW"
+
+AC_SUBST(xkb_base)
+AC_SUBST(xkb_rules_symlink)
+
+AC_OUTPUT([ po/Makefile.in
+Makefile
+compat/Makefile
+geometry/Makefile
+geometry/digital_vndr/Makefile
+geometry/sgi_vndr/Makefile
+keycodes/Makefile
+keycodes/digital_vndr/Makefile
+keycodes/sgi_vndr/Makefile
+keymap/Makefile
+keymap/digital_vndr/Makefile
+keymap/sgi_vndr/Makefile
+keymap/sun_vndr/Makefile
+semantics/Makefile
+rules/Makefile
+rules/bin/Makefile
+rules/compat/Makefile
+rules/extras/Makefile
+symbols/Makefile
+symbols/digital_vndr/Makefile
+symbols/fujitsu_vndr/Makefile
+symbols/hp_vndr/Makefile
+symbols/macintosh_vndr/Makefile
+symbols/nec_vndr/Makefile
+symbols/nokia_vndr/Makefile
+symbols/sgi_vndr/Makefile
+symbols/sony_vndr/Makefile
+symbols/sun_vndr/Makefile
+symbols/xfree68_vndr/Makefile
+symbols/extras/Makefile
+types/Makefile
+xkeyboard-config.pc
+xkeyboard-config.spec
+docs/Makefile
+])
+
+echo '***********************************************************'
+echo " $PACKAGE_NAME is configured with the following parameters:"
+echo " XKB base directory: $xkb_base"
+if test -z "$xkb_rules_symlink" ; then
+ echo " Symbolic link(s) to legacy rules are not created"
+else
+ echo " Symbolic link(s) to legacy rules: $xkb_rules_symlink"
+fi
+
+if test "$enable_compat_rules" = "yes" ; then
+ echo " Compatibility rules are included"
+else
+ echo " Compatibility rules are not included"
+fi
+echo '***********************************************************'
+
diff --git a/xorg-server/xkeyboard-config/po/bg.po b/xorg-server/xkeyboard-config/po/bg.po
index 9e149e6ac..04c813a90 100644
--- a/xorg-server/xkeyboard-config/po/bg.po
+++ b/xorg-server/xkeyboard-config/po/bg.po
@@ -3,116 +3,118 @@
# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the xkeyboard-config package.
# Alexander Shopov <ash@kambanaria.org>, 2002, 2005, 2006, 2007, 2008, 2009, 2010.
+# Damyan Ivanov <dam+gnome@ktnx.net>, 2010.
#
msgid ""
msgstr ""
-"Project-Id-Version: xkeyboard-config-1.8\n"
+"Project-Id-Version: xkeyboard-config-2.1-pre1\n"
"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-01-16 18:08+0000\n"
-"PO-Revision-Date: 2010-01-17 16:03+0200\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-15 16:09+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: bg\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;По-малко/по-голямо&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;По-малко/по-голямо&gt; избира петото ниво и го заключва заедно с друг клавиш за пето ниво"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;По-малко/по-голямо&gt; избира петото ниво, заключва го заедно с друг клавиш за пето ниво и го отключва при единично натискане"
+
+#: ../rules/base.xml.in.h:4
msgid "(F)"
msgstr "(F)"
-#: ../rules/base.xml.in.h:2
+#: ../rules/base.xml.in.h:5
msgid "(Legacy) Alternative"
msgstr "(остаряла) алтернативна"
-#: ../rules/base.xml.in.h:3
+#: ../rules/base.xml.in.h:6
msgid "(Legacy) Alternative, Sun dead keys"
msgstr "(остаряла) алтернативна, с „мъртви“ клавиши на Sun"
-#: ../rules/base.xml.in.h:4
+#: ../rules/base.xml.in.h:7
msgid "(Legacy) Alternative, eliminate dead keys"
msgstr "(остаряла) алтернативна, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:5
+#: ../rules/base.xml.in.h:8
msgid "101/104 key Compatible"
msgstr "Съвместима със 101/104 клавиша"
-#: ../rules/base.xml.in.h:6
+#: ../rules/base.xml.in.h:9
msgid "101/qwerty/comma/Dead keys"
msgstr "101/qwerty/запетая/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:7
+#: ../rules/base.xml.in.h:10
msgid "101/qwerty/comma/Eliminate dead keys"
msgstr "101/qwerty/запетая/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:8
+#: ../rules/base.xml.in.h:11
msgid "101/qwerty/dot/Dead keys"
msgstr "101/qwerty/точка/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:9
+#: ../rules/base.xml.in.h:12
msgid "101/qwerty/dot/Eliminate dead keys"
msgstr "101/qwerty/точка/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:10
+#: ../rules/base.xml.in.h:13
msgid "101/qwertz/comma/Dead keys"
msgstr "101/qwertz/запетая/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:11
+#: ../rules/base.xml.in.h:14
msgid "101/qwertz/comma/Eliminate dead keys"
msgstr "101/qwertz/запетая/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:12
+#: ../rules/base.xml.in.h:15
msgid "101/qwertz/dot/Dead keys"
msgstr "101/qwertz/точка/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:13
+#: ../rules/base.xml.in.h:16
msgid "101/qwertz/dot/Eliminate dead keys"
msgstr "101/qwertz/точка/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:14
+#: ../rules/base.xml.in.h:17
msgid "102/qwerty/comma/Dead keys"
msgstr "102/qwerty/запетая/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:15
+#: ../rules/base.xml.in.h:18
msgid "102/qwerty/comma/Eliminate dead keys"
msgstr "102/qwerty/запетая/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:16
+#: ../rules/base.xml.in.h:19
msgid "102/qwerty/dot/Dead keys"
msgstr "102/qwerty/точка/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:17
+#: ../rules/base.xml.in.h:20
msgid "102/qwerty/dot/Eliminate dead keys"
msgstr "102/qwerty/точка/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:18
+#: ../rules/base.xml.in.h:21
msgid "102/qwertz/comma/Dead keys"
msgstr "102/qwertz/запетая/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:19
+#: ../rules/base.xml.in.h:22
msgid "102/qwertz/comma/Eliminate dead keys"
msgstr "102/qwertz/запетая/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:20
+#: ../rules/base.xml.in.h:23
msgid "102/qwertz/dot/Dead keys"
msgstr "102/qwertz/точка/с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:21
+#: ../rules/base.xml.in.h:24
msgid "102/qwertz/dot/Eliminate dead keys"
msgstr "102/qwertz/точка/без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:22
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:23
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:24
-msgid "5"
-msgstr "5"
-
#: ../rules/base.xml.in.h:25
msgid "A4Tech KB-21"
msgstr "A4Tech KB-21"
@@ -126,2651 +128,2947 @@ msgid "A4Tech Wireless Desktop RFKB-23"
msgstr "A4Tech Wireless Desktop RFKB-23 (безжична)"
#: ../rules/base.xml.in.h:28
-msgid "ACPI Standard"
-msgstr "Стандартна ACPI"
-
-#: ../rules/base.xml.in.h:29
msgid "ATM/phone-style"
msgstr "Като банкомат/телефон"
-#: ../rules/base.xml.in.h:30
+#: ../rules/base.xml.in.h:29
msgid "Acer AirKey V"
msgstr "Acer AirKey V"
-#: ../rules/base.xml.in.h:31
+#: ../rules/base.xml.in.h:30
msgid "Acer C300"
msgstr "Acer C300"
-#: ../rules/base.xml.in.h:32
+#: ../rules/base.xml.in.h:31
msgid "Acer Ferrari 4000"
msgstr "Acer Ferrari 4000"
-#: ../rules/base.xml.in.h:33
+#: ../rules/base.xml.in.h:32
msgid "Acer Laptop"
msgstr "Acer, за мобилен компютър"
-#: ../rules/base.xml.in.h:34
+#: ../rules/base.xml.in.h:33
msgid "Add the standard behavior to Menu key"
msgstr "Добавяне на стандартното поведение на Menu"
-#: ../rules/base.xml.in.h:35
+#: ../rules/base.xml.in.h:34
msgid "Adding Esperanto circumflexes (supersigno)"
msgstr "Добавяне на двойните ударения на Esperanto"
-#: ../rules/base.xml.in.h:36
-msgid "Adding EuroSign to certain keys"
-msgstr "Добавяне на знака „€“ към някои клавиши"
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Добавяне на знак за валута към някои клавиши"
-#: ../rules/base.xml.in.h:37
+#: ../rules/base.xml.in.h:36
msgid "Advance Scorpius KI"
msgstr "Advance Scorpius KI"
-#: ../rules/base.xml.in.h:38
+#: ../rules/base.xml.in.h:37
msgid "Afg"
msgstr "Афг"
-#: ../rules/base.xml.in.h:39
+#: ../rules/base.xml.in.h:38
msgid "Afghanistan"
msgstr "афганистанска"
-#: ../rules/base.xml.in.h:40
+#: ../rules/base.xml.in.h:39
msgid "Akan"
msgstr "акан"
-#: ../rules/base.xml.in.h:41
+#: ../rules/base.xml.in.h:40
msgid "Alb"
msgstr "Алб"
-#: ../rules/base.xml.in.h:42
+#: ../rules/base.xml.in.h:41
msgid "Albania"
msgstr "албанска"
-#: ../rules/base.xml.in.h:43
+#: ../rules/base.xml.in.h:42
msgid "Alt and Meta are on Alt keys"
msgstr "Alt-овете отговарят на Meta и на Alt"
-#: ../rules/base.xml.in.h:44
+#: ../rules/base.xml.in.h:43
msgid "Alt is mapped to Right Win, Super to Menu"
msgstr "Десният Win е Alt, а Menu — Super"
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Caps Lock"
-#: ../rules/base.xml.in.h:46
+#: ../rules/base.xml.in.h:45
msgid "Alt+Ctrl"
msgstr "Alt+Ctrl"
-#: ../rules/base.xml.in.h:47
+#: ../rules/base.xml.in.h:46
msgid "Alt+Shift"
msgstr "Alt+Shift"
-#: ../rules/base.xml.in.h:48
+#: ../rules/base.xml.in.h:47
msgid "Alt+Space"
msgstr "Alt+Space"
-#: ../rules/base.xml.in.h:49
+#: ../rules/base.xml.in.h:48
msgid "Alt-Q"
msgstr "Alt-Q"
-#: ../rules/base.xml.in.h:50
+#: ../rules/base.xml.in.h:49
msgid "Alt/Win key behavior"
msgstr "Поведение на Alt/Win"
-#: ../rules/base.xml.in.h:51
+#: ../rules/base.xml.in.h:50
msgid "Alternative"
msgstr "алтернативна"
-#: ../rules/base.xml.in.h:52
+#: ../rules/base.xml.in.h:51
msgid "Alternative Eastern"
msgstr "алтернативна източна"
-#: ../rules/base.xml.in.h:53
+#: ../rules/base.xml.in.h:52
msgid "Alternative Phonetic"
msgstr "фонетична, алтернативна"
-#: ../rules/base.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr "алтернативна, международна (бившата us_intl)"
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "алтернативна, международна"
-#: ../rules/base.xml.in.h:55
+#: ../rules/base.xml.in.h:54
msgid "Alternative, Sun dead keys"
msgstr "алтернативна, с „мъртви“ клавиши на Sun"
-#: ../rules/base.xml.in.h:56
+#: ../rules/base.xml.in.h:55
msgid "Alternative, eliminate dead keys"
msgstr "алтернативна, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:57
+#: ../rules/base.xml.in.h:56
msgid "Alternative, latin-9 only"
msgstr "алтернативна, само латиница-9"
-#: ../rules/base.xml.in.h:58
+#: ../rules/base.xml.in.h:57
msgid "And"
msgstr "Анд"
-#: ../rules/base.xml.in.h:59
+#: ../rules/base.xml.in.h:58
msgid "Andorra"
msgstr "андорска"
-#: ../rules/base.xml.in.h:60
+#: ../rules/base.xml.in.h:59
msgid "Any Alt key"
msgstr "Всеки Alt"
-#: ../rules/base.xml.in.h:61
+#: ../rules/base.xml.in.h:60
msgid "Any Win key"
msgstr "Всеки Win"
-#: ../rules/base.xml.in.h:62
+#: ../rules/base.xml.in.h:61
msgid "Any Win key (while pressed)"
msgstr "Всеки Win (докато е натиснат)"
-#: ../rules/base.xml.in.h:63
+#: ../rules/base.xml.in.h:62
msgid "Apostrophe (') variant"
msgstr "вариант с апостроф (')"
-#: ../rules/base.xml.in.h:64
+#: ../rules/base.xml.in.h:63
msgid "Apple"
msgstr "Apple"
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apple Aluminium Keyboard (стандарт ANSI)"
+
#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apple Aluminium Keyboard (стандарт ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apple Aluminium Keyboard (стандарт JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apple Aluminium Keyboard — симулиране на клавиши за PC (Print, Scroll Lock, Pause, Num Lock)"
+
+#: ../rules/base.xml.in.h:68
msgid "Apple Laptop"
msgstr "Apple, за мобилен компютър"
-#: ../rules/base.xml.in.h:66
+#: ../rules/base.xml.in.h:69
msgid "Ara"
msgstr "Ара"
-#: ../rules/base.xml.in.h:67
+#: ../rules/base.xml.in.h:70
msgid "Arabic"
msgstr "арабска"
-#: ../rules/base.xml.in.h:68
+#: ../rules/base.xml.in.h:71
msgid "Arm"
msgstr "Арм"
-#: ../rules/base.xml.in.h:69
+#: ../rules/base.xml.in.h:72
msgid "Armenia"
msgstr "арменска"
-#: ../rules/base.xml.in.h:70
+#: ../rules/base.xml.in.h:73
msgid "Asturian variant with bottom-dot H and bottom-dot L"
msgstr "астурски вариант с Ḥ и Ḷ (с точки отдолу)"
-#: ../rules/base.xml.in.h:71
+#: ../rules/base.xml.in.h:74
msgid "Asus Laptop"
msgstr "Asus, за мобилен компютър"
-#: ../rules/base.xml.in.h:72
+#: ../rules/base.xml.in.h:75
msgid "At bottom left"
msgstr "Долу вляво"
-#: ../rules/base.xml.in.h:73
+#: ../rules/base.xml.in.h:76
msgid "At left of 'A'"
msgstr "Вляво от „A“"
-#: ../rules/base.xml.in.h:74
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "австрийска"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Авс"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "аватимска"
+
+#: ../rules/base.xml.in.h:80
msgid "Aze"
msgstr "Азъ"
-#: ../rules/base.xml.in.h:75
+#: ../rules/base.xml.in.h:81
msgid "Azerbaijan"
msgstr "азърбейджанска"
-#: ../rules/base.xml.in.h:76
+#: ../rules/base.xml.in.h:82
msgid "Azona RF2300 wireless Internet Keyboard"
msgstr "Azona RF2300 wireless Internet Keyboard (безжична, за Интернет)"
-#: ../rules/base.xml.in.h:77
+#: ../rules/base.xml.in.h:83
msgid "BTC 5090"
msgstr "BTC 5090"
-#: ../rules/base.xml.in.h:78
+#: ../rules/base.xml.in.h:84
msgid "BTC 5113RF Multimedia"
msgstr "BTC 5113RF Multimedia (за мултимедия)"
-#: ../rules/base.xml.in.h:79
+#: ../rules/base.xml.in.h:85
msgid "BTC 5126T"
msgstr "BTC 5126T"
-#: ../rules/base.xml.in.h:80
+#: ../rules/base.xml.in.h:86
msgid "BTC 6301URF"
msgstr "BTC 6301URF"
-#: ../rules/base.xml.in.h:81
+#: ../rules/base.xml.in.h:87
msgid "BTC 9000"
msgstr "BTC 9000"
-#: ../rules/base.xml.in.h:82
+#: ../rules/base.xml.in.h:88
msgid "BTC 9000A"
msgstr "BTC 9000A"
-#: ../rules/base.xml.in.h:83
+#: ../rules/base.xml.in.h:89
msgid "BTC 9001AH"
msgstr "BTC 9001AH"
-#: ../rules/base.xml.in.h:84
+#: ../rules/base.xml.in.h:90
msgid "BTC 9019U"
msgstr "BTC 9019U"
-#: ../rules/base.xml.in.h:85
+#: ../rules/base.xml.in.h:91
msgid "BTC 9116U Mini Wireless Internet and Gaming"
msgstr "BTC 9116U Mini Wireless Internet and Gaming (безжична, за Интернет и игри)"
-#: ../rules/base.xml.in.h:86
-msgid "Ban"
-msgstr "Бан"
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Обратно наклонена черта"
-#: ../rules/base.xml.in.h:87
+#: ../rules/base.xml.in.h:93
msgid "Bangladesh"
msgstr "бангладешска"
-#: ../rules/base.xml.in.h:88
+#: ../rules/base.xml.in.h:94
msgid "Bashkirian"
msgstr "башкирска"
-#: ../rules/base.xml.in.h:89
+#: ../rules/base.xml.in.h:95
msgid "Bel"
msgstr "Бел"
-#: ../rules/base.xml.in.h:90
+#: ../rules/base.xml.in.h:96
msgid "Belarus"
msgstr "беларуска"
-#: ../rules/base.xml.in.h:91
+#: ../rules/base.xml.in.h:97
msgid "Belgium"
msgstr "белгийска"
-#: ../rules/base.xml.in.h:92
+#: ../rules/base.xml.in.h:98
msgid "BenQ X-Touch"
msgstr "BenQ X-Touch"
-#: ../rules/base.xml.in.h:93
+#: ../rules/base.xml.in.h:99
msgid "BenQ X-Touch 730"
msgstr "BenQ X-Touch 730"
-#: ../rules/base.xml.in.h:94
+#: ../rules/base.xml.in.h:100
msgid "BenQ X-Touch 800"
msgstr "BenQ X-Touch 800"
-#: ../rules/base.xml.in.h:95
+#: ../rules/base.xml.in.h:101
msgid "Bengali"
msgstr "бенгалска"
-#: ../rules/base.xml.in.h:96
+#: ../rules/base.xml.in.h:102
msgid "Bengali Probhat"
msgstr "бенгалска — пробхат"
-#: ../rules/base.xml.in.h:97
+#: ../rules/base.xml.in.h:103
msgid "Bepo, ergonomic, Dvorak way"
msgstr "Bepo, ергономична, по Дворак"
-#: ../rules/base.xml.in.h:98
+#: ../rules/base.xml.in.h:104
msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
msgstr "Bepo, ергономична, по Дворак, само латиница-9"
-#: ../rules/base.xml.in.h:99
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "Бан"
+
+#: ../rules/base.xml.in.h:106
msgid "Bgr"
msgstr "Бъл"
-#: ../rules/base.xml.in.h:100
-msgid "Bhu"
-msgstr "Бут"
-
-#: ../rules/base.xml.in.h:101
+#: ../rules/base.xml.in.h:107
msgid "Bhutan"
msgstr "бутанска"
-#: ../rules/base.xml.in.h:102
+#: ../rules/base.xml.in.h:108
msgid "Biblical Hebrew (Tiro)"
msgstr "библейски иврит (Тиро)"
-#: ../rules/base.xml.in.h:103
+#: ../rules/base.xml.in.h:109
msgid "Bih"
msgstr "БиХ"
-#: ../rules/base.xml.in.h:104
+#: ../rules/base.xml.in.h:110
msgid "Blr"
msgstr "Бел"
-#: ../rules/base.xml.in.h:105
+#: ../rules/base.xml.in.h:111
msgid "Bosnia and Herzegovina"
msgstr "босненска"
-#: ../rules/base.xml.in.h:106
+#: ../rules/base.xml.in.h:112
msgid "Both Alt keys together"
msgstr "Двата Alt-а заедно"
-#: ../rules/base.xml.in.h:107
+#: ../rules/base.xml.in.h:113
msgid "Both Ctrl keys together"
msgstr "Двата Ctrl-а заедно"
-#: ../rules/base.xml.in.h:108
+#: ../rules/base.xml.in.h:114
msgid "Both Shift keys together"
msgstr "Двата Shift-а заедно"
-#: ../rules/base.xml.in.h:109
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Двата Shift-а заедно превключват Caps Lock"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "ботсуанска"
+
+#: ../rules/base.xml.in.h:117
msgid "Bra"
msgstr "Бра"
-#: ../rules/base.xml.in.h:110
+#: ../rules/base.xml.in.h:118
msgid "Braille"
msgstr "брайл"
-#: ../rules/base.xml.in.h:111
+#: ../rules/base.xml.in.h:119
msgid "Brazil"
msgstr "бразилска"
-#: ../rules/base.xml.in.h:112
+#: ../rules/base.xml.in.h:120
msgid "Breton"
msgstr "бретонска"
-#: ../rules/base.xml.in.h:113
+#: ../rules/base.xml.in.h:121
msgid "Brl"
msgstr "Брй"
-#: ../rules/base.xml.in.h:114
+#: ../rules/base.xml.in.h:122
msgid "Brother Internet Keyboard"
msgstr "Brother Internet Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:115
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "Бтн"
+
+#: ../rules/base.xml.in.h:124
msgid "Buckwalter"
msgstr "Buckwalter"
-#: ../rules/base.xml.in.h:116
+#: ../rules/base.xml.in.h:125
msgid "Bulgaria"
msgstr "българска"
-#: ../rules/base.xml.in.h:117
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "Бот"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "Кнг"
+
+#: ../rules/base.xml.in.h:128
msgid "CRULP"
msgstr "CRULP (урду)"
-#: ../rules/base.xml.in.h:118
+#: ../rules/base.xml.in.h:129
msgid "Cambodia"
msgstr "камбоджанска"
-#: ../rules/base.xml.in.h:119
+#: ../rules/base.xml.in.h:130
msgid "Can"
msgstr "Кан"
-#: ../rules/base.xml.in.h:120
+#: ../rules/base.xml.in.h:131
msgid "Canada"
msgstr "канадска"
-#: ../rules/base.xml.in.h:121
-msgid "Caps Lock"
-msgstr "CapsLock"
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Дворак на Кейпуел (байбаин)"
-#: ../rules/base.xml.in.h:122
-msgid "CapsLock"
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Дворак на Кейпуел (латиница)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "QWERF 2006 на Кейпуел (байбаин)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "QWERF 2006 на Кейпуел (латиница)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
msgstr "CapsLock"
-#: ../rules/base.xml.in.h:123
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr "CapsLock (към първата подредба), Shift+CapsLock (към последната)"
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (към първата подредба), Shift+Caps Lock (към последната)"
-#: ../rules/base.xml.in.h:124
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr "CapsLock (докато е натиснат), Alt+CapsLock замества CapsLock"
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (докато е натиснат), Alt+Caps Lock замества Caps Lock"
-#: ../rules/base.xml.in.h:125
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr "CapsLock работи като Shift със заключване. Shift временно отменя CapsLock"
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock работи като Shift със заключване. Shift временно отменя Caps Lock"
-#: ../rules/base.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "CapsLock работи като Shift със заключване. Shift не влияе на CapsLock"
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock работи като Shift със заключване. Shift не влияе на Caps Lock"
-#: ../rules/base.xml.in.h:127
-msgid "CapsLock is disabled"
-msgstr "CapsLock е изключен"
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "Caps Lock е изключен"
-#: ../rules/base.xml.in.h:128
-msgid "CapsLock key behavior"
-msgstr "Поведение на CapsLock"
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Поведение на Caps Lock"
-#: ../rules/base.xml.in.h:129
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr "CapsLock сменя състоянието Shift за всички клавиши"
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Caps Lock сменя състоянието Shift за всички клавиши"
-#: ../rules/base.xml.in.h:130
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr "CapsLock сменя състоянието Shift само на буквените клавиши"
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Caps Lock сменя състоянието Shift само на буквените клавиши"
-#: ../rules/base.xml.in.h:131
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "CapsLock използва вътрешна промяна на регистъра. Shift временно отменя CapsLock"
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock използва вътрешна промяна на регистъра. Shift временно отменя Caps Lock"
-#: ../rules/base.xml.in.h:132
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "CapsLock използва вътрешна промяна на регистъра. Shift не влияе на CapsLock"
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock използва вътрешна промяна на регистъра. Shift не влияе на Caps Lock"
-#: ../rules/base.xml.in.h:133
+#: ../rules/base.xml.in.h:147
msgid "Catalan variant with middle-dot L"
msgstr "каталунски вариант с Ŀ (с точка в средата)"
-#: ../rules/base.xml.in.h:134
+#: ../rules/base.xml.in.h:148
msgid "Cedilla"
msgstr "седий"
-#: ../rules/base.xml.in.h:135
+#: ../rules/base.xml.in.h:149
msgid "Che"
msgstr "Чех"
-#: ../rules/base.xml.in.h:136
+#: ../rules/base.xml.in.h:150
msgid "Cherokee"
msgstr "черокска"
-#: ../rules/base.xml.in.h:137
+#: ../rules/base.xml.in.h:151
msgid "Cherry B.UNLIMITED"
msgstr "Cherry B.UNLIMITED"
-#: ../rules/base.xml.in.h:138
+#: ../rules/base.xml.in.h:152
msgid "Cherry Blue Line CyBo@rd"
msgstr "Cherry Blue Line CyBo@rd"
-#: ../rules/base.xml.in.h:139
+#: ../rules/base.xml.in.h:153
msgid "Cherry Blue Line CyBo@rd (alternate option)"
msgstr "Cherry Blue Line CyBo@rd (алтернативен вариант)"
-#: ../rules/base.xml.in.h:140
+#: ../rules/base.xml.in.h:154
msgid "Cherry CyBo@rd USB-Hub"
msgstr "Cherry CyBo@rd USB-Hub"
-#: ../rules/base.xml.in.h:141
+#: ../rules/base.xml.in.h:155
msgid "Cherry CyMotion Expert"
msgstr "Cherry CyMotion Expert"
-#: ../rules/base.xml.in.h:142
+#: ../rules/base.xml.in.h:156
msgid "Cherry CyMotion Master Linux"
msgstr "Cherry CyMotion Master Linux"
-#: ../rules/base.xml.in.h:143
+#: ../rules/base.xml.in.h:157
msgid "Cherry CyMotion Master XPress"
msgstr "Cherry CyMotion Master XPress"
-#: ../rules/base.xml.in.h:144
+#: ../rules/base.xml.in.h:158
msgid "Chicony Internet Keyboard"
msgstr "Chicony Internet Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:145
+#: ../rules/base.xml.in.h:159
msgid "Chicony KB-9885"
msgstr "Chicony KB-9885"
-#: ../rules/base.xml.in.h:146
+#: ../rules/base.xml.in.h:160
msgid "Chicony KU-0108"
msgstr "Chicony KU-0108"
-#: ../rules/base.xml.in.h:147
+#: ../rules/base.xml.in.h:161
msgid "Chicony KU-0420"
msgstr "Chicony KU-0420"
-#: ../rules/base.xml.in.h:148
+#: ../rules/base.xml.in.h:162
msgid "China"
+msgstr "Китай"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
msgstr "Кит"
-#: ../rules/base.xml.in.h:149
+#: ../rules/base.xml.in.h:164
msgid "Chuvash"
msgstr "чувашка"
-#: ../rules/base.xml.in.h:150
+#: ../rules/base.xml.in.h:165
msgid "Chuvash Latin"
msgstr "чувашка, латиница"
-#: ../rules/base.xml.in.h:151
+#: ../rules/base.xml.in.h:166
msgid "Classic"
msgstr "класическа"
-#: ../rules/base.xml.in.h:152
+#: ../rules/base.xml.in.h:167
msgid "Classic Dvorak"
msgstr "класическа, Дворак"
-#: ../rules/base.xml.in.h:153
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "класическа, без „мъртви“ клавиши"
+
+#: ../rules/base.xml.in.h:169
msgid "Classmate PC"
msgstr "Classmate PC"
-#: ../rules/base.xml.in.h:154
+#: ../rules/base.xml.in.h:170
msgid "CloGaelach"
msgstr "CloGaelach"
-#: ../rules/base.xml.in.h:155
+#: ../rules/base.xml.in.h:171
msgid "Colemak"
msgstr "коулмак"
-#: ../rules/base.xml.in.h:156
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "коулмак (байбаин)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "коулмак (латиница)"
+
+#: ../rules/base.xml.in.h:174
msgid "Compaq Easy Access Keyboard"
msgstr "Compaq Easy Access Keyboard (за лесен достъп)"
-#: ../rules/base.xml.in.h:157
+#: ../rules/base.xml.in.h:175
msgid "Compaq Internet Keyboard (13 keys)"
msgstr "Compaq Internet Keyboard (за Интернет, 13 допълнителни клавиша)"
-#: ../rules/base.xml.in.h:158
+#: ../rules/base.xml.in.h:176
msgid "Compaq Internet Keyboard (18 keys)"
msgstr "Compaq Internet Keyboard (за Интернет, 18 допълнителни клавиша)"
-#: ../rules/base.xml.in.h:159
+#: ../rules/base.xml.in.h:177
msgid "Compaq Internet Keyboard (7 keys)"
msgstr "Compaq Internet Keyboard (за Интернет, 7 допълнителни клавиша)"
-#: ../rules/base.xml.in.h:160
+#: ../rules/base.xml.in.h:178
msgid "Compaq iPaq Keyboard"
msgstr "Compaq iPaq Keyboard"
-#: ../rules/base.xml.in.h:161
+#: ../rules/base.xml.in.h:179
msgid "Compose key position"
msgstr "Положение на Compose"
-#: ../rules/base.xml.in.h:162
+#: ../rules/base.xml.in.h:180
msgid "Congo, Democratic Republic of the"
msgstr "конгоанска (ДРК)"
-#: ../rules/base.xml.in.h:163
+#: ../rules/base.xml.in.h:181
msgid "Control + Alt + Backspace"
msgstr "Control+Alt+Backspace"
-#: ../rules/base.xml.in.h:164
+#: ../rules/base.xml.in.h:182
msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
msgstr "И двата Alt-а са Control, Win е Alt"
-#: ../rules/base.xml.in.h:165
+#: ../rules/base.xml.in.h:183
msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
msgstr "И двата Win-а са Control (както и клавишите Ctrl)"
-#: ../rules/base.xml.in.h:166
+#: ../rules/base.xml.in.h:184
msgid "Creative Desktop Wireless 7000"
msgstr "Creative Desktop Wireless 7000 (безжична)"
-#: ../rules/base.xml.in.h:167
+#: ../rules/base.xml.in.h:185
msgid "Crimean Tatar (Dobruca-1 Q)"
msgstr "татарска (Крим) (Dobruca-1 Q)"
-#: ../rules/base.xml.in.h:168
+#: ../rules/base.xml.in.h:186
msgid "Crimean Tatar (Dobruca-2 Q)"
msgstr "татарска (Крим) (Dobruca-2 Q)"
-#: ../rules/base.xml.in.h:169
+#: ../rules/base.xml.in.h:187
msgid "Crimean Tatar (Turkish Alt-Q)"
msgstr "татарска (Крим) (турско Alt-Q)"
-#: ../rules/base.xml.in.h:170
+#: ../rules/base.xml.in.h:188
msgid "Crimean Tatar (Turkish F)"
msgstr "татарска (Крим) (турско F)"
-#: ../rules/base.xml.in.h:171
+#: ../rules/base.xml.in.h:189
msgid "Crimean Tatar (Turkish Q)"
msgstr "татарска (Крим) (турско Q)"
-#: ../rules/base.xml.in.h:172
+#: ../rules/base.xml.in.h:190
msgid "Croatia"
msgstr "хърватска"
-#: ../rules/base.xml.in.h:173
+#: ../rules/base.xml.in.h:191
msgid "Ctrl key position"
msgstr "Положение на Ctrl"
-#: ../rules/base.xml.in.h:174
+#: ../rules/base.xml.in.h:192
msgid "Ctrl+Shift"
msgstr "Ctrl+Shift"
-#: ../rules/base.xml.in.h:175
+#: ../rules/base.xml.in.h:193
msgid "Cyrillic"
msgstr "кирилска"
-#: ../rules/base.xml.in.h:176
+#: ../rules/base.xml.in.h:194
msgid "Cyrillic with guillemets"
msgstr "кирилска с френски кавички"
-#: ../rules/base.xml.in.h:177
+#: ../rules/base.xml.in.h:195
msgid "Cyrillic, Z and ZHE swapped"
msgstr "кирилска с разменени „З“ и „Ж“"
-#: ../rules/base.xml.in.h:178
+#: ../rules/base.xml.in.h:196
msgid "Cze"
msgstr "Чеч"
-#: ../rules/base.xml.in.h:179
+#: ../rules/base.xml.in.h:197
msgid "Czechia"
msgstr "чеченска"
-#: ../rules/base.xml.in.h:180
+#: ../rules/base.xml.in.h:198
msgid "DOS"
msgstr "DOS"
-#: ../rules/base.xml.in.h:181
-msgid "DRC"
-msgstr "Кнг"
-
-#: ../rules/base.xml.in.h:182
+#: ../rules/base.xml.in.h:199
msgid "DTK2000"
msgstr "DTK2000"
-#: ../rules/base.xml.in.h:183
-msgid "Dan"
-msgstr "Дат"
-
-#: ../rules/base.xml.in.h:184
+#: ../rules/base.xml.in.h:200
msgid "Dead acute"
msgstr "„мъртво“ ударение"
-#: ../rules/base.xml.in.h:185
+#: ../rules/base.xml.in.h:201
msgid "Dead grave acute"
msgstr "„мъртво“ тежко ударение"
-#: ../rules/base.xml.in.h:186
+#: ../rules/base.xml.in.h:202
msgid "Default numeric keypad keys"
msgstr "Стандартни клавиши на цифровата клавиатура"
-#: ../rules/base.xml.in.h:187
+#: ../rules/base.xml.in.h:203
msgid "Dell"
msgstr "Dell"
-#: ../rules/base.xml.in.h:188
+#: ../rules/base.xml.in.h:204
msgid "Dell 101-key PC"
msgstr "Клавиатура на Dell със 101 клавиша за PC"
-#: ../rules/base.xml.in.h:189
+#: ../rules/base.xml.in.h:205
msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx (за мобилен компютър)"
-#: ../rules/base.xml.in.h:190
+#: ../rules/base.xml.in.h:206
msgid "Dell Laptop/notebook Precision M series"
msgstr "Dell Laptop/notebook Precision M series (за мобилен компютър)"
-#: ../rules/base.xml.in.h:191
+#: ../rules/base.xml.in.h:207
msgid "Dell Latitude series laptop"
msgstr "За преносим компютър Dell Latitude"
-#: ../rules/base.xml.in.h:192
+#: ../rules/base.xml.in.h:208
msgid "Dell Precision M65"
msgstr "Dell Precision M65"
-#: ../rules/base.xml.in.h:193
+#: ../rules/base.xml.in.h:209
msgid "Dell SK-8125"
msgstr "Dell SK-8125"
-#: ../rules/base.xml.in.h:194
+#: ../rules/base.xml.in.h:210
msgid "Dell SK-8135"
msgstr "Dell SK-8135"
-#: ../rules/base.xml.in.h:195
+#: ../rules/base.xml.in.h:211
msgid "Dell USB Multimedia Keyboard"
msgstr "Dell USB Multimedia Keybard (за мултимедия)"
-#: ../rules/base.xml.in.h:196
+#: ../rules/base.xml.in.h:212
msgid "Denmark"
msgstr "датска"
-#: ../rules/base.xml.in.h:197
+#: ../rules/base.xml.in.h:213
msgid "Deu"
msgstr "Нем"
-#: ../rules/base.xml.in.h:198
+#: ../rules/base.xml.in.h:214
msgid "Dexxa Wireless Desktop Keyboard"
msgstr "Dexxa Wireless Desktop Keyboard (безжична)"
-#: ../rules/base.xml.in.h:199
+#: ../rules/base.xml.in.h:215
msgid "Diamond 9801 / 9802 series"
msgstr "Diamond 9801/9802 series"
-#: ../rules/base.xml.in.h:200
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "Дат"
+
+#: ../rules/base.xml.in.h:217
msgid "Dvorak"
msgstr "Дворак"
-#: ../rules/base.xml.in.h:201
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Дворак (байбаин)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Дворак (латиница)"
+
+#: ../rules/base.xml.in.h:220
msgid "Dvorak (UK Punctuation)"
-msgstr "Дворак, (пунктуация на Обединеното кралство)"
+msgstr "Дворак (пунктуация на Обединеното кралство)"
-#: ../rules/base.xml.in.h:202
-msgid "Dvorak international"
-msgstr "Дворак, международна"
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Дворак, алтернативна, международна (без „мъртви“ клавиши)"
-#: ../rules/base.xml.in.h:203
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Дворак, международна (с „мъртви“ клавиши)"
+
+#: ../rules/base.xml.in.h:223
msgid "Dvorak, Polish quotes on key 1"
msgstr "Дворак, полски кавички на клавиша „1“"
-#: ../rules/base.xml.in.h:204
+#: ../rules/base.xml.in.h:224
msgid "Dvorak, Polish quotes on quotemark key"
msgstr "Дворак, полски кавички на клавиша за кавички"
-#: ../rules/base.xml.in.h:205
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:206
+#: ../rules/base.xml.in.h:225
msgid "Eastern"
msgstr "източна"
-#: ../rules/base.xml.in.h:207
+#: ../rules/base.xml.in.h:226
msgid "Eliminate dead keys"
msgstr "без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:208
+#: ../rules/base.xml.in.h:227
msgid "Enable extra typographic characters"
msgstr "Допълнителни типографски знаци"
-#: ../rules/base.xml.in.h:209
+#: ../rules/base.xml.in.h:228
msgid "English"
msgstr "английска"
-#: ../rules/base.xml.in.h:210
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "английска (САЩ, международна)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "английска (САЩ, за Macintosh)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "английска със знак на рупия (₨)"
+
+#: ../rules/base.xml.in.h:232
msgid "Ennyah DKB-1008"
msgstr "Ennyah DKB-1008"
-#: ../rules/base.xml.in.h:211
+#: ../rules/base.xml.in.h:233
msgid "Enter on keypad"
msgstr "Enter на цифровата клавиатура"
-#: ../rules/base.xml.in.h:212
+#: ../rules/base.xml.in.h:234
msgid "Epo"
msgstr "Есп"
-#: ../rules/base.xml.in.h:213
+#: ../rules/base.xml.in.h:235
msgid "Ergonomic"
msgstr "ергономична"
-#: ../rules/base.xml.in.h:214
+#: ../rules/base.xml.in.h:236
msgid "Esp"
msgstr "Исп"
-#: ../rules/base.xml.in.h:215
+#: ../rules/base.xml.in.h:237
msgid "Esperanto"
msgstr "есперантска"
-#: ../rules/base.xml.in.h:216
+#: ../rules/base.xml.in.h:238
msgid "Est"
msgstr "Ест"
-#: ../rules/base.xml.in.h:217
+#: ../rules/base.xml.in.h:239
msgid "Estonia"
msgstr "естонска"
-#: ../rules/base.xml.in.h:218
+#: ../rules/base.xml.in.h:240
msgid "Eth"
msgstr "Ети"
-#: ../rules/base.xml.in.h:219
+#: ../rules/base.xml.in.h:241
msgid "Ethiopia"
msgstr "етиопска"
-#: ../rules/base.xml.in.h:220
-msgid "Evdev-managed keyboard"
-msgstr "Клавиатура управлявана от Evdev"
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Евро (€) при „2“"
-#: ../rules/base.xml.in.h:221
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Евро (€) при „4“"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Евро (€) при „5“"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Евро (€) при „E“"
+
+#: ../rules/base.xml.in.h:246
msgid "Everex STEPnote"
msgstr "Everex STEPnote"
-#: ../rules/base.xml.in.h:222
+#: ../rules/base.xml.in.h:247
msgid "Ewe"
msgstr "еве"
-#: ../rules/base.xml.in.h:223
+#: ../rules/base.xml.in.h:248
msgid "Extended"
msgstr "разширена"
-#: ../rules/base.xml.in.h:224
+#: ../rules/base.xml.in.h:249
msgid "Extended - Winkeys"
msgstr "разширена — Winkeys"
-#: ../rules/base.xml.in.h:225
+#: ../rules/base.xml.in.h:250
msgid "Extended Backslash"
msgstr "удължен Backslash"
-#: ../rules/base.xml.in.h:226
+#: ../rules/base.xml.in.h:251
msgid "F-letter (F) variant"
msgstr "вариант с буква F (F)"
-#: ../rules/base.xml.in.h:227
+#: ../rules/base.xml.in.h:252
msgid "FL90"
msgstr "FL90"
-#: ../rules/base.xml.in.h:228
-msgid "Fao"
-msgstr "Фар"
-
-#: ../rules/base.xml.in.h:229
+#: ../rules/base.xml.in.h:253
msgid "Faroe Islands"
msgstr "фарьорска"
-#: ../rules/base.xml.in.h:230
+#: ../rules/base.xml.in.h:254
msgid "Fin"
msgstr "Фин"
-#: ../rules/base.xml.in.h:231
+#: ../rules/base.xml.in.h:255
msgid "Finland"
msgstr "финландска"
#. This assumes the KP_ abstract symbols are actually useful for some apps
#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:234
+#: ../rules/base.xml.in.h:258
msgid "Four-level key with abstract separators"
msgstr "Клавиш на четири нива с абстрактни разделители"
-#: ../rules/base.xml.in.h:235
+#: ../rules/base.xml.in.h:259
msgid "Four-level key with comma"
msgstr "Клавиш на четири нива с десетична запетая"
-#: ../rules/base.xml.in.h:236
+#: ../rules/base.xml.in.h:260
msgid "Four-level key with dot"
msgstr "Клавиш на четири нива с десетична точка"
-#: ../rules/base.xml.in.h:237
+#: ../rules/base.xml.in.h:261
msgid "Four-level key with dot, latin-9 restriction"
msgstr "Клавиш на четири нива с десетична точка, само латиница-9"
-#: ../rules/base.xml.in.h:238
+#: ../rules/base.xml.in.h:262
msgid "Four-level key with momayyez"
msgstr "Клавиш на четири нива с арабска десетична запетая"
-#: ../rules/base.xml.in.h:239
+#: ../rules/base.xml.in.h:263
msgid "Fra"
msgstr "Фре"
-#: ../rules/base.xml.in.h:240
+#: ../rules/base.xml.in.h:264
msgid "France"
msgstr "френска"
-#: ../rules/base.xml.in.h:241
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "френска (алтернативна)"
+
+#: ../rules/base.xml.in.h:266
msgid "French"
msgstr "френска"
-#: ../rules/base.xml.in.h:242
+#: ../rules/base.xml.in.h:267
msgid "French (Macintosh)"
msgstr "френска (за Macintosh)"
-#: ../rules/base.xml.in.h:243
+#: ../rules/base.xml.in.h:268
msgid "French (legacy)"
msgstr "френска (остаряла)"
-#: ../rules/base.xml.in.h:244
+#: ../rules/base.xml.in.h:269
msgid "French Dvorak"
msgstr "френска Дворак"
-#: ../rules/base.xml.in.h:245
+#: ../rules/base.xml.in.h:270
msgid "French, Sun dead keys"
msgstr "френска, с „мъртвите“ клавиши на Sun"
-#: ../rules/base.xml.in.h:246
+#: ../rules/base.xml.in.h:271
msgid "French, eliminate dead keys"
msgstr "френска, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:247
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "Фро"
+
+#: ../rules/base.xml.in.h:273
msgid "Fujitsu-Siemens Computers AMILO laptop"
msgstr "Fujitsu-Siemens Computers AMILO laptop (за мобилен компютър)"
-#: ../rules/base.xml.in.h:248
+#: ../rules/base.xml.in.h:274
msgid "Fula"
msgstr "фула"
-#: ../rules/base.xml.in.h:249
+#: ../rules/base.xml.in.h:275
msgid "GBr"
msgstr "ВБр"
-#: ../rules/base.xml.in.h:250
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT (Ганийски институт по лингвистика, грамотност и превод на Библията)"
+
+#: ../rules/base.xml.in.h:277
msgid "Ga"
msgstr "га"
-#: ../rules/base.xml.in.h:251
+#: ../rules/base.xml.in.h:278
msgid "Generic 101-key PC"
msgstr "Стандартна клавиатура за PC със 101 клавиша"
-#: ../rules/base.xml.in.h:252
+#: ../rules/base.xml.in.h:279
msgid "Generic 102-key (Intl) PC"
msgstr "Стандартна клавиатура за PC със 102 клавиша (международна)"
-#: ../rules/base.xml.in.h:253
+#: ../rules/base.xml.in.h:280
msgid "Generic 104-key PC"
msgstr "Стандартна клавиатура за PC със 104 клавиша"
-#: ../rules/base.xml.in.h:254
+#: ../rules/base.xml.in.h:281
msgid "Generic 105-key (Intl) PC"
msgstr "Стандартна клавиатура за PC със 105 клавиша (международна)"
-#: ../rules/base.xml.in.h:255
+#: ../rules/base.xml.in.h:282
msgid "Genius Comfy KB-12e"
msgstr "Genius Comfy KB-12e"
-#: ../rules/base.xml.in.h:256
+#: ../rules/base.xml.in.h:283
msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
msgstr "Genius Comfy KB-16M/Genius MM Keyboard KWD-910"
-#: ../rules/base.xml.in.h:257
+#: ../rules/base.xml.in.h:284
msgid "Genius Comfy KB-21e-Scroll"
msgstr "Genius Comfy KB-21e-Scroll"
-#: ../rules/base.xml.in.h:258
+#: ../rules/base.xml.in.h:285
msgid "Genius KB-19e NB"
msgstr "Genius KB-19e NB"
-#: ../rules/base.xml.in.h:259
+#: ../rules/base.xml.in.h:286
msgid "Genius KKB-2050HS"
msgstr "Genius KKB-2050HS"
-#: ../rules/base.xml.in.h:260
+#: ../rules/base.xml.in.h:287
msgid "Geo"
msgstr "Гру"
-#: ../rules/base.xml.in.h:261
+#: ../rules/base.xml.in.h:288
msgid "Georgia"
msgstr "грузинска"
-#: ../rules/base.xml.in.h:262
+#: ../rules/base.xml.in.h:289
msgid "Georgian"
msgstr "грузинска"
-#: ../rules/base.xml.in.h:263
+#: ../rules/base.xml.in.h:290
msgid "Georgian AZERTY Tskapo"
msgstr "грузинска, цкапо azerty"
-#: ../rules/base.xml.in.h:264
+#: ../rules/base.xml.in.h:291
msgid "German (Macintosh)"
msgstr "немска (за Macintosh)"
-#: ../rules/base.xml.in.h:265
+#: ../rules/base.xml.in.h:292
msgid "German, Sun dead keys"
msgstr "немска, с „мъртви“ клавиши на Sun"
-#: ../rules/base.xml.in.h:266
+#: ../rules/base.xml.in.h:293
msgid "German, eliminate dead keys"
msgstr "немска, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:267
+#: ../rules/base.xml.in.h:294
msgid "Germany"
msgstr "немска"
-#: ../rules/base.xml.in.h:268
+#: ../rules/base.xml.in.h:295
msgid "Gha"
msgstr "Ган"
-#: ../rules/base.xml.in.h:269
+#: ../rules/base.xml.in.h:296
msgid "Ghana"
msgstr "ганийска"
-#: ../rules/base.xml.in.h:270
-msgid "Gre"
-msgstr "Гръ"
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "Гви"
-#: ../rules/base.xml.in.h:271
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "Грц"
+
+#: ../rules/base.xml.in.h:299
msgid "Greece"
msgstr "гръцка"
-#: ../rules/base.xml.in.h:272
-msgid "Group toggle on multiply/divide key"
-msgstr "сменяне на състоянието при натискането на умножение/деление"
-
-#: ../rules/base.xml.in.h:273
-msgid "Gui"
-msgstr "гвй"
-
-#: ../rules/base.xml.in.h:274
+#: ../rules/base.xml.in.h:300
msgid "Guinea"
msgstr "гвинейска"
-#: ../rules/base.xml.in.h:275
+#: ../rules/base.xml.in.h:301
msgid "Gujarati"
msgstr "гуджарати"
-#: ../rules/base.xml.in.h:276
+#: ../rules/base.xml.in.h:302
msgid "Gurmukhi"
msgstr "гурмуки"
-#: ../rules/base.xml.in.h:277
+#: ../rules/base.xml.in.h:303
msgid "Gurmukhi Jhelum"
msgstr "гурмуки джелум"
-#: ../rules/base.xml.in.h:278
+#: ../rules/base.xml.in.h:304
msgid "Gyration"
msgstr "Gyration"
-#: ../rules/base.xml.in.h:279
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
msgid "Happy Hacking Keyboard"
msgstr "Happy Hacking Keyboard (за весело хакерстване)"
-#: ../rules/base.xml.in.h:280
+#: ../rules/base.xml.in.h:307
msgid "Happy Hacking Keyboard for Mac"
msgstr "Happy Hacking Keyboard for Mac (за весело хакерстване)"
-#: ../rules/base.xml.in.h:281
+#: ../rules/base.xml.in.h:308
msgid "Hausa"
msgstr "хауска"
-#: ../rules/base.xml.in.h:282
+#: ../rules/base.xml.in.h:309
msgid "Hewlett-Packard Internet Keyboard"
msgstr "Hewlett-Packard Internet Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:283
+#: ../rules/base.xml.in.h:310
msgid "Hewlett-Packard Mini 110 Notebook"
msgstr "Hewlett-Packard Mini 110 Notebook (за мобилен компютър)"
-#: ../rules/base.xml.in.h:284
+#: ../rules/base.xml.in.h:311
msgid "Hewlett-Packard Omnibook 500 FA"
msgstr "Hewlett-Packard Omnibook 500 FA"
-#: ../rules/base.xml.in.h:285
+#: ../rules/base.xml.in.h:312
msgid "Hewlett-Packard Omnibook 5xx"
msgstr "Hewlett-Packard Omnibook 5xx"
-#: ../rules/base.xml.in.h:286
+#: ../rules/base.xml.in.h:313
msgid "Hewlett-Packard Omnibook 6000/6100"
msgstr "Hewlett-Packard Omnibook 6000/6100"
-#: ../rules/base.xml.in.h:287
+#: ../rules/base.xml.in.h:314
msgid "Hewlett-Packard Omnibook XE3 GC"
msgstr "Hewlett-Packard Omnibook XE3 GC"
-#: ../rules/base.xml.in.h:288
+#: ../rules/base.xml.in.h:315
msgid "Hewlett-Packard Omnibook XE3 GF"
msgstr "Hewlett-Packard Omnibook XE3 GF"
-#: ../rules/base.xml.in.h:289
+#: ../rules/base.xml.in.h:316
msgid "Hewlett-Packard Omnibook XT1000"
msgstr "Hewlett-Packard Omnibook XT1000"
-#: ../rules/base.xml.in.h:290
+#: ../rules/base.xml.in.h:317
msgid "Hewlett-Packard Pavilion ZT11xx"
msgstr "Hewlett-Packard Pavilion ZT11xx"
-#: ../rules/base.xml.in.h:291
+#: ../rules/base.xml.in.h:318
msgid "Hewlett-Packard Pavilion dv5"
msgstr "Hewlett-Packard Pavilion dv5"
-#: ../rules/base.xml.in.h:292
+#: ../rules/base.xml.in.h:319
msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
msgstr "Hewlett-Packard SK-250x Multimedia Keyboard (за мултимедия)"
-#: ../rules/base.xml.in.h:293
+#: ../rules/base.xml.in.h:320
msgid "Hewlett-Packard nx9020"
msgstr "Hewlett-Packard nx9020"
-#: ../rules/base.xml.in.h:294
+#: ../rules/base.xml.in.h:321
msgid "Hexadecimal"
msgstr "шестнадесетична"
-#: ../rules/base.xml.in.h:295
+#: ../rules/base.xml.in.h:322
msgid "Hindi Bolnagri"
msgstr "фонетична Болнагри за хинди"
-#: ../rules/base.xml.in.h:296
+#: ../rules/base.xml.in.h:323
msgid "Hindi Wx"
msgstr "хинди Wx"
-#: ../rules/base.xml.in.h:297
+#: ../rules/base.xml.in.h:324
msgid "Homophonic"
msgstr "фонетична"
-#: ../rules/base.xml.in.h:298
+#: ../rules/base.xml.in.h:325
msgid "Honeywell Euroboard"
msgstr "Honeywell Euroboard"
-#: ../rules/base.xml.in.h:299
+#: ../rules/base.xml.in.h:326
msgid "Hrv"
msgstr "Хър"
-#: ../rules/base.xml.in.h:300
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "Телефон HTC Dream"
+
+#: ../rules/base.xml.in.h:328
msgid "Hun"
msgstr "Унг"
-#: ../rules/base.xml.in.h:301
+#: ../rules/base.xml.in.h:329
msgid "Hungary"
msgstr "унгарска"
-#: ../rules/base.xml.in.h:302
+#: ../rules/base.xml.in.h:330
msgid "Hyper is mapped to Win-keys"
msgstr "И двата Win-а са Hyper"
-#: ../rules/base.xml.in.h:303
+#: ../rules/base.xml.in.h:331
msgid "IBM (LST 1205-92)"
msgstr "IBM (LST 1205-92)"
-#: ../rules/base.xml.in.h:304
+#: ../rules/base.xml.in.h:332
msgid "IBM Rapid Access"
msgstr "IBM Rapid Access"
-#: ../rules/base.xml.in.h:305
+#: ../rules/base.xml.in.h:333
msgid "IBM Rapid Access II"
msgstr "IBM Rapid Access II"
-#: ../rules/base.xml.in.h:306
+#: ../rules/base.xml.in.h:334
msgid "IBM Space Saver"
msgstr "IBM Space Saver"
-#: ../rules/base.xml.in.h:307
+#: ../rules/base.xml.in.h:335
msgid "IBM ThinkPad 560Z/600/600E/A22E"
msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-#: ../rules/base.xml.in.h:308
+#: ../rules/base.xml.in.h:336
msgid "IBM ThinkPad R60/T60/R61/T61"
msgstr "IBM ThinkPad R60/T60/R61/T61"
-#: ../rules/base.xml.in.h:309
+#: ../rules/base.xml.in.h:337
msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-#: ../rules/base.xml.in.h:310
+#: ../rules/base.xml.in.h:338
msgid "ISO Alternate"
msgstr "ISO (алтернативна)"
-#: ../rules/base.xml.in.h:311
+#: ../rules/base.xml.in.h:339
msgid "Iceland"
msgstr "исландска"
-#: ../rules/base.xml.in.h:312
+#: ../rules/base.xml.in.h:340
msgid "Igbo"
msgstr "игбо"
-#: ../rules/base.xml.in.h:313
+#: ../rules/base.xml.in.h:341
msgid "Include dead tilde"
msgstr "включване на „мъртва“ тилда"
-#: ../rules/base.xml.in.h:314
+#: ../rules/base.xml.in.h:342
msgid "Ind"
msgstr "Инд"
-#: ../rules/base.xml.in.h:315
+#: ../rules/base.xml.in.h:343
msgid "India"
msgstr "индийска"
-#: ../rules/base.xml.in.h:316
+#: ../rules/base.xml.in.h:344
msgid "International (AltGr dead keys)"
msgstr "международна, с „мъртви“ клавиши чрез AltGr"
-#: ../rules/base.xml.in.h:317
+#: ../rules/base.xml.in.h:345
msgid "International (with dead keys)"
msgstr "международна, с „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:318
+#: ../rules/base.xml.in.h:346
msgid "Inuktitut"
msgstr "ескимоска"
-#: ../rules/base.xml.in.h:319
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
msgid "Iran"
msgstr "иранска"
-#: ../rules/base.xml.in.h:320
+#: ../rules/base.xml.in.h:348
msgid "Iraq"
msgstr "иракска"
-#: ../rules/base.xml.in.h:321
+#: ../rules/base.xml.in.h:349
msgid "Ireland"
msgstr "ирландска"
-#: ../rules/base.xml.in.h:322
+#: ../rules/base.xml.in.h:350
msgid "Irl"
msgstr "Ирл"
-#: ../rules/base.xml.in.h:323
+#: ../rules/base.xml.in.h:351
msgid "Irn"
msgstr "Ирн"
-#: ../rules/base.xml.in.h:324
+#: ../rules/base.xml.in.h:352
msgid "Irq"
msgstr "Ирк"
-#: ../rules/base.xml.in.h:325
+#: ../rules/base.xml.in.h:353
msgid "Isl"
msgstr "Исл"
-#: ../rules/base.xml.in.h:326
+#: ../rules/base.xml.in.h:354
msgid "Isr"
msgstr "Изр"
-#: ../rules/base.xml.in.h:327
+#: ../rules/base.xml.in.h:355
msgid "Israel"
msgstr "израелска"
-#: ../rules/base.xml.in.h:328
+#: ../rules/base.xml.in.h:356
msgid "Ita"
msgstr "Ита"
-#: ../rules/base.xml.in.h:329
+#: ../rules/base.xml.in.h:357
msgid "Italy"
msgstr "италианска"
-#: ../rules/base.xml.in.h:330
+#: ../rules/base.xml.in.h:358
msgid "Japan"
msgstr "японска"
-#: ../rules/base.xml.in.h:331
+#: ../rules/base.xml.in.h:359
msgid "Japan (PC-98xx Series)"
msgstr "японска, серии PC-98xx"
-#: ../rules/base.xml.in.h:332
+#: ../rules/base.xml.in.h:360
msgid "Japanese keyboard options"
msgstr "Настройки за японска клавиатура"
-#: ../rules/base.xml.in.h:333
+#: ../rules/base.xml.in.h:361
msgid "Jpn"
msgstr "Япо"
-#: ../rules/base.xml.in.h:334
+#: ../rules/base.xml.in.h:362
msgid "Kalmyk"
msgstr "калмишка"
-#: ../rules/base.xml.in.h:335
+#: ../rules/base.xml.in.h:363
msgid "Kana"
msgstr "японска сричкова (кана)"
-#: ../rules/base.xml.in.h:336
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "японска сричкова (кана) 86"
+
+#: ../rules/base.xml.in.h:365
msgid "Kana Lock key is locking"
msgstr "Клавишът Lock на кана заключва"
-#: ../rules/base.xml.in.h:337
+#: ../rules/base.xml.in.h:366
msgid "Kannada"
msgstr "канареска"
-#: ../rules/base.xml.in.h:338
+#: ../rules/base.xml.in.h:367
msgid "Kashubian"
msgstr "кашубска"
-#: ../rules/base.xml.in.h:339
+#: ../rules/base.xml.in.h:368
msgid "Kaz"
msgstr "Каз"
-#: ../rules/base.xml.in.h:340
+#: ../rules/base.xml.in.h:369
msgid "Kazakh with Russian"
msgstr "казахска с руски букви"
-#: ../rules/base.xml.in.h:341
+#: ../rules/base.xml.in.h:370
msgid "Kazakhstan"
msgstr "казахска"
-#: ../rules/base.xml.in.h:342
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "Кен"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "кенийска"
+
+#: ../rules/base.xml.in.h:373
msgid "Key sequence to kill the X server"
msgstr "Клавишна комбинация за убиването на X сървъра"
-#: ../rules/base.xml.in.h:343
+#: ../rules/base.xml.in.h:374
msgid "Key to choose 3rd level"
msgstr "Клавиш за избор третото ниво"
-#: ../rules/base.xml.in.h:344
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Клавиш за избор петото ниво"
+
+#: ../rules/base.xml.in.h:376
msgid "Key(s) to change layout"
msgstr "Клавиш(и) за смяна на подредбата"
-#: ../rules/base.xml.in.h:345
+#: ../rules/base.xml.in.h:377
msgid "Keytronic FlexPro"
msgstr "Keytronic FlexPro"
-#: ../rules/base.xml.in.h:346
+#: ../rules/base.xml.in.h:378
msgid "Kgz"
msgstr "Крг"
-#: ../rules/base.xml.in.h:347
+#: ../rules/base.xml.in.h:379
msgid "Khm"
msgstr "Кам"
-#: ../rules/base.xml.in.h:348
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "кикуйска"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Кинезис"
+
+#: ../rules/base.xml.in.h:382
msgid "Komi"
msgstr "комска"
-#: ../rules/base.xml.in.h:349
+#: ../rules/base.xml.in.h:383
msgid "Kor"
msgstr "Кор"
-#: ../rules/base.xml.in.h:350
+#: ../rules/base.xml.in.h:384
msgid "Korea, Republic of"
msgstr "корейска (Република Корея)"
-#: ../rules/base.xml.in.h:351
+#: ../rules/base.xml.in.h:385
msgid "Ktunaxa"
msgstr "ктунакса"
-#: ../rules/base.xml.in.h:352
+#: ../rules/base.xml.in.h:386
msgid "Kurdish, (F)"
-msgstr "кюрдска, (Ф)"
+msgstr "кюрдска (F)"
-#: ../rules/base.xml.in.h:353
+#: ../rules/base.xml.in.h:387
msgid "Kurdish, Arabic-Latin"
msgstr "кюрдска, арабски и латински букви"
-#: ../rules/base.xml.in.h:354
+#: ../rules/base.xml.in.h:388
msgid "Kurdish, Latin Alt-Q"
msgstr "кюрдска, латинско Alt-Q"
-#: ../rules/base.xml.in.h:355
+#: ../rules/base.xml.in.h:389
msgid "Kurdish, Latin Q"
msgstr "кюрдска, латинско Q"
-#: ../rules/base.xml.in.h:356
+#: ../rules/base.xml.in.h:390
msgid "Kyrgyzstan"
msgstr "киргистанска"
-#: ../rules/base.xml.in.h:357
-msgid "LAm"
-msgstr "ЛАм"
-
-#: ../rules/base.xml.in.h:358
+#: ../rules/base.xml.in.h:391
msgid "LEKP"
msgstr "LEKP"
-#: ../rules/base.xml.in.h:359
+#: ../rules/base.xml.in.h:392
msgid "LEKPa"
msgstr "LEKPa"
-#: ../rules/base.xml.in.h:360
+#: ../rules/base.xml.in.h:393
msgid "Lao"
msgstr "Лао"
-#: ../rules/base.xml.in.h:361
+#: ../rules/base.xml.in.h:394
msgid "Laos"
msgstr "лаоска"
-#: ../rules/base.xml.in.h:362
+#: ../rules/base.xml.in.h:395
msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
msgstr "Laptop/notebook Compaq Laptop Keyboard (за мобилен компютър, напр. Armada)"
-#: ../rules/base.xml.in.h:363
+#: ../rules/base.xml.in.h:396
msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
msgstr "Laptop/notebook Compaq Internet Keyboard (за мобилен компютър, напр. Presario, и Интернет)"
-#: ../rules/base.xml.in.h:364
+#: ../rules/base.xml.in.h:397
msgid "Laptop/notebook eMachines m68xx"
msgstr "Laptop/notebook eMachines m68xx (за мобилен компютър)"
-#: ../rules/base.xml.in.h:365
+#: ../rules/base.xml.in.h:398
msgid "Latin"
msgstr "латинска"
-#: ../rules/base.xml.in.h:366
+#: ../rules/base.xml.in.h:399
msgid "Latin American"
msgstr "латиноамериканска"
-#: ../rules/base.xml.in.h:367
+#: ../rules/base.xml.in.h:400
msgid "Latin Unicode"
msgstr "латинска за Уникод"
-#: ../rules/base.xml.in.h:368
+#: ../rules/base.xml.in.h:401
msgid "Latin Unicode qwerty"
msgstr "латинска за Уникод (qwerty)"
-#: ../rules/base.xml.in.h:369
+#: ../rules/base.xml.in.h:402
msgid "Latin qwerty"
msgstr "латинска (qwerty)"
-#: ../rules/base.xml.in.h:370
+#: ../rules/base.xml.in.h:403
msgid "Latin unicode"
msgstr "латинска за Уникод"
-#: ../rules/base.xml.in.h:371
+#: ../rules/base.xml.in.h:404
msgid "Latin unicode qwerty"
msgstr "латинска за Уникод, qwerty"
-#: ../rules/base.xml.in.h:372
+#: ../rules/base.xml.in.h:405
msgid "Latin with guillemets"
msgstr "латинска с френски кавички"
-#: ../rules/base.xml.in.h:373
+#: ../rules/base.xml.in.h:406
msgid "Latvia"
msgstr "латвийска"
-#: ../rules/base.xml.in.h:374
-msgid "Lav"
-msgstr "Лат"
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Смяна на подредбата при натискане на умножение/деление"
-#: ../rules/base.xml.in.h:375
+#: ../rules/base.xml.in.h:408
msgid "Left Alt"
msgstr "Левият Alt"
-#: ../rules/base.xml.in.h:376
+#: ../rules/base.xml.in.h:409
msgid "Left Alt (while pressed)"
msgstr "Левият Alt (докато е натиснат)"
-#: ../rules/base.xml.in.h:377
+#: ../rules/base.xml.in.h:410
msgid "Left Alt is swapped with Left Win"
msgstr "Левият Alt е разменен с левия Win"
-#: ../rules/base.xml.in.h:378
+#: ../rules/base.xml.in.h:411
msgid "Left Ctrl"
msgstr "Левият Ctrl"
-#: ../rules/base.xml.in.h:379
+#: ../rules/base.xml.in.h:412
msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
msgstr "Левият Ctrl (към първата подредба), десният Ctrl (към последната)"
-#: ../rules/base.xml.in.h:380
+#: ../rules/base.xml.in.h:413
msgid "Left Ctrl+Left Shift"
msgstr "Левият Ctrl+левият Shift"
-#: ../rules/base.xml.in.h:381
+#: ../rules/base.xml.in.h:414
msgid "Left Shift"
msgstr "Левият Shift"
-#: ../rules/base.xml.in.h:382
+#: ../rules/base.xml.in.h:415
msgid "Left Win"
msgstr "Левият Win"
-#: ../rules/base.xml.in.h:383
+#: ../rules/base.xml.in.h:416
msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
msgstr "CapsLock (към първата подредба), десният Win/Menu (към последната)"
-#: ../rules/base.xml.in.h:384
+#: ../rules/base.xml.in.h:417
msgid "Left Win (while pressed)"
msgstr "Левият Win (докато е натиснат)"
-#: ../rules/base.xml.in.h:385
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Левият Win избира петото ниво и го заключва заедно с друг клавиш за пето ниво"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Левият Win избира петото ниво, заключва го заедно с друг клавиш за пето ниво и го отключва при единично натискане"
+
+#: ../rules/base.xml.in.h:420
msgid "Left hand"
msgstr "за левичари"
-#: ../rules/base.xml.in.h:386
+#: ../rules/base.xml.in.h:421
msgid "Left handed Dvorak"
msgstr "Дворак за левичари"
-#: ../rules/base.xml.in.h:387
+#: ../rules/base.xml.in.h:422
msgid "Legacy"
msgstr "остаряла"
-#: ../rules/base.xml.in.h:388
+#: ../rules/base.xml.in.h:423
msgid "Legacy Wang 724"
msgstr "Остаряла Wang 724"
#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:390
+#: ../rules/base.xml.in.h:425
msgid "Legacy key with comma"
msgstr "Остарял клавиш с десетична запетая"
-#: ../rules/base.xml.in.h:391
+#: ../rules/base.xml.in.h:426
msgid "Legacy key with dot"
msgstr "Остарял клавиш с десетична точка"
-#: ../rules/base.xml.in.h:392
-msgid "Less-than/Greater-than"
-msgstr "По-малко/по-голямо"
-
-#: ../rules/base.xml.in.h:393
+#: ../rules/base.xml.in.h:427
msgid "Lithuania"
msgstr "литовска"
-#: ../rules/base.xml.in.h:394
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "ШрЛ"
+
+#: ../rules/base.xml.in.h:429
msgid "Logitech Access Keyboard"
msgstr "Logitech Access Keyboard"
-#: ../rules/base.xml.in.h:395
+#: ../rules/base.xml.in.h:430
msgid "Logitech Cordless Desktop"
msgstr "Logitech Cordless Desktop (безжична)"
-#: ../rules/base.xml.in.h:396
+#: ../rules/base.xml.in.h:431
msgid "Logitech Cordless Desktop (alternate option)"
msgstr "Logitech Cordless Desktop (алтернативен вариант)"
-#: ../rules/base.xml.in.h:397
+#: ../rules/base.xml.in.h:432
msgid "Logitech Cordless Desktop EX110"
msgstr "Logitech Cordless Desktop EX110"
-#: ../rules/base.xml.in.h:398
+#: ../rules/base.xml.in.h:433
msgid "Logitech Cordless Desktop LX-300"
msgstr "Logitech Cordless Desktop LX-300 (безжична)"
-#: ../rules/base.xml.in.h:399
+#: ../rules/base.xml.in.h:434
msgid "Logitech Cordless Desktop Navigator"
msgstr "Logitech Cordless Desktop Navigator (безжична)"
-#: ../rules/base.xml.in.h:400
+#: ../rules/base.xml.in.h:435
msgid "Logitech Cordless Desktop Optical"
msgstr "Logitech Cordless Desktop Optical (оптична)"
-#: ../rules/base.xml.in.h:401
+#: ../rules/base.xml.in.h:436
msgid "Logitech Cordless Desktop Pro (alternate option 2)"
msgstr "Logitech Cordless Desktop Pro (алтернативен вариант 2)"
-#: ../rules/base.xml.in.h:402
+#: ../rules/base.xml.in.h:437
msgid "Logitech Cordless Desktop iTouch"
msgstr "Logitech Cordless Desktop iTouch (безжична)"
-#: ../rules/base.xml.in.h:403
+#: ../rules/base.xml.in.h:438
msgid "Logitech Cordless Freedom/Desktop Navigator"
msgstr "Logitech Cordless Freedom/Desktop Navigator (безжична)"
-#: ../rules/base.xml.in.h:404
+#: ../rules/base.xml.in.h:439
msgid "Logitech G15 extra keys via G15daemon"
msgstr "Logitech G15, допълнителни клавиши чрез G15daemon"
-#: ../rules/base.xml.in.h:405
+#: ../rules/base.xml.in.h:440
msgid "Logitech Generic Keyboard"
msgstr "Logitech Generic Keyboard (стандартна)"
-#: ../rules/base.xml.in.h:406
+#: ../rules/base.xml.in.h:441
msgid "Logitech Internet 350 Keyboard"
msgstr "Logitech Internet 350 Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:407
+#: ../rules/base.xml.in.h:442
msgid "Logitech Internet Keyboard"
msgstr "Logitech Internet Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:408
+#: ../rules/base.xml.in.h:443
msgid "Logitech Internet Navigator Keyboard"
msgstr "Logitech Internet Navigator Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:409
+#: ../rules/base.xml.in.h:444
msgid "Logitech Media Elite Keyboard"
msgstr "Logitech Media Elite Keyboard"
-#: ../rules/base.xml.in.h:410
+#: ../rules/base.xml.in.h:445
msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard (безжична, за мултимедия)"
-#: ../rules/base.xml.in.h:411
+#: ../rules/base.xml.in.h:446
msgid "Logitech Ultra-X Keyboard"
msgstr "Logitech Ultra-X Keyboard"
-#: ../rules/base.xml.in.h:412
+#: ../rules/base.xml.in.h:447
msgid "Logitech diNovo Edge Keyboard"
msgstr "Logitech diNovo Edge Keyboard"
-#: ../rules/base.xml.in.h:413
+#: ../rules/base.xml.in.h:448
msgid "Logitech diNovo Keyboard"
msgstr "Logitech diNovo Keyboard"
-#: ../rules/base.xml.in.h:414
+#: ../rules/base.xml.in.h:449
msgid "Logitech iTouch"
msgstr "Logitech iTouch"
-#: ../rules/base.xml.in.h:415
+#: ../rules/base.xml.in.h:450
msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6) (безжична)"
-#: ../rules/base.xml.in.h:416
+#: ../rules/base.xml.in.h:451
msgid "Logitech iTouch Internet Navigator Keyboard SE"
msgstr "Logitech iTouch Internet Navigator Keyboard SE (за Интернет)"
-#: ../rules/base.xml.in.h:417
+#: ../rules/base.xml.in.h:452
msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB) (за Интернет)"
-#: ../rules/base.xml.in.h:418
+#: ../rules/base.xml.in.h:453
msgid "Lower Sorbian"
msgstr "долно сорбска"
-#: ../rules/base.xml.in.h:419
+#: ../rules/base.xml.in.h:454
msgid "Lower Sorbian (qwertz)"
msgstr "долно сорбска (qwertz)"
-#: ../rules/base.xml.in.h:420
+#: ../rules/base.xml.in.h:455
msgid "Ltu"
msgstr "Лит"
-#: ../rules/base.xml.in.h:421
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "Лат"
+
+#: ../rules/base.xml.in.h:457
msgid "MESS"
msgstr "MESS"
-#: ../rules/base.xml.in.h:422
+#: ../rules/base.xml.in.h:458
msgid "MNE"
msgstr "Чгр"
-#: ../rules/base.xml.in.h:423
+#: ../rules/base.xml.in.h:459
msgid "MacBook/MacBook Pro"
msgstr "MacBook/MacBook Pro"
-#: ../rules/base.xml.in.h:424
+#: ../rules/base.xml.in.h:460
msgid "MacBook/MacBook Pro (Intl)"
msgstr "MacBook/MacBook Pro (международна)"
-#: ../rules/base.xml.in.h:425
+#: ../rules/base.xml.in.h:461
msgid "Macedonia"
msgstr "македонска"
-#: ../rules/base.xml.in.h:426
+#: ../rules/base.xml.in.h:462
msgid "Macintosh"
msgstr "Macintosh"
-#: ../rules/base.xml.in.h:427
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (международна)"
+
+#: ../rules/base.xml.in.h:464
msgid "Macintosh Old"
msgstr "Macintosh Old (стар вариант)"
-#: ../rules/base.xml.in.h:428
+#: ../rules/base.xml.in.h:465
msgid "Macintosh, Sun dead keys"
msgstr "Macintosh, с „мъртви“ клавиши на Sun"
-#: ../rules/base.xml.in.h:429
+#: ../rules/base.xml.in.h:466
msgid "Macintosh, eliminate dead keys"
msgstr "Macintosh, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:430
-msgid "Make CapsLock an additional Backspace"
-msgstr "CapsLock е допълнителен Backspace"
-
-#: ../rules/base.xml.in.h:431
-msgid "Make CapsLock an additional Ctrl"
-msgstr "CapsLock е допълнителен Ctrl"
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Caps Lock е допълнителен Backspace"
-#: ../rules/base.xml.in.h:432
-msgid "Make CapsLock an additional ESC"
-msgstr "CapsLock е допълнителен Esc"
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Caps Lock е допълнителен Ctrl"
-#: ../rules/base.xml.in.h:433
-msgid "Make CapsLock an additional Hyper"
-msgstr "CapsLock е допълнителен Hyper"
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "Caps Lock е допълнителен Esc"
-#: ../rules/base.xml.in.h:434
-msgid "Make CapsLock an additional NumLock"
-msgstr "CapsLock е допълнителен NumLock"
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Caps Lock е допълнителен Hyper"
-#: ../rules/base.xml.in.h:435
-msgid "Make CapsLock an additional Super"
-msgstr "CapsLock е допълнителен Super"
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Caps Lock е допълнителен Num Lock"
-#: ../rules/base.xml.in.h:436
-msgid "Mal"
-msgstr "Млд"
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "Caps Lock е допълнителен Super"
-#: ../rules/base.xml.in.h:437
+#: ../rules/base.xml.in.h:473
msgid "Malayalam"
msgstr "малаяламска"
-#: ../rules/base.xml.in.h:438
+#: ../rules/base.xml.in.h:474
msgid "Malayalam Lalitha"
msgstr "малаяламска лалита"
-#: ../rules/base.xml.in.h:439
+#: ../rules/base.xml.in.h:475
msgid "Maldives"
msgstr "малдивска"
-#: ../rules/base.xml.in.h:440
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "малийска"
+
+#: ../rules/base.xml.in.h:477
msgid "Malta"
msgstr "малтийска"
-#: ../rules/base.xml.in.h:441
+#: ../rules/base.xml.in.h:478
msgid "Maltese keyboard with US layout"
msgstr "малтийска с американска подредба"
-#: ../rules/base.xml.in.h:442
+#: ../rules/base.xml.in.h:479
msgid "Mao"
msgstr "Мао"
-#: ../rules/base.xml.in.h:443
+#: ../rules/base.xml.in.h:480
msgid "Maori"
msgstr "маорска"
-#: ../rules/base.xml.in.h:444
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "марийска"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "Мдв"
+
+#: ../rules/base.xml.in.h:483
msgid "Memorex MX1998"
msgstr "Memorex MX1998"
-#: ../rules/base.xml.in.h:445
+#: ../rules/base.xml.in.h:484
msgid "Memorex MX2500 EZ-Access Keyboard"
msgstr "Memorex MX2500 EZ-Access Keyboard (за лесен достъп)"
-#: ../rules/base.xml.in.h:446
+#: ../rules/base.xml.in.h:485
msgid "Memorex MX2750"
msgstr "Memorex MX2750"
-#: ../rules/base.xml.in.h:447
+#: ../rules/base.xml.in.h:486
msgid "Menu"
msgstr "Menu"
-#: ../rules/base.xml.in.h:448
+#: ../rules/base.xml.in.h:487
msgid "Meta is mapped to Left Win"
msgstr "Левият Win е Meta"
-#: ../rules/base.xml.in.h:449
+#: ../rules/base.xml.in.h:488
msgid "Meta is mapped to Win keys"
msgstr "И двата Win-а са Meta"
-#: ../rules/base.xml.in.h:450
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Левият Ctrl отговаря на Meta"
+
+#: ../rules/base.xml.in.h:490
msgid "Microsoft Comfort Curve Keyboard 2000"
msgstr "Microsoft Comfort Curve Keyboard 2000"
-#: ../rules/base.xml.in.h:451
+#: ../rules/base.xml.in.h:491
msgid "Microsoft Internet Keyboard"
msgstr "Microsoft Internet Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:452
+#: ../rules/base.xml.in.h:492
msgid "Microsoft Internet Keyboard Pro, Swedish"
msgstr "Microsoft Internet Keyboard Pro, Swedish (за Интернет, шведска)"
-#: ../rules/base.xml.in.h:453
+#: ../rules/base.xml.in.h:493
msgid "Microsoft Natural"
msgstr "Microsoft Natural"
-#: ../rules/base.xml.in.h:454
+#: ../rules/base.xml.in.h:494
msgid "Microsoft Natural Keyboard Elite"
msgstr "Microsoft Natural Keyboard Elite"
-#: ../rules/base.xml.in.h:455
+#: ../rules/base.xml.in.h:495
msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
msgstr "Microsoft Natural Keyboard Pro/Microsoft Internet Keyboard Pro (за Интернет)"
-#: ../rules/base.xml.in.h:456
+#: ../rules/base.xml.in.h:496
msgid "Microsoft Natural Keyboard Pro OEM"
msgstr "Microsoft Natural Keyboard Pro OEM"
-#: ../rules/base.xml.in.h:457
+#: ../rules/base.xml.in.h:497
msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
msgstr "Microsoft Natural Keyboard Pro USB/Microsoft Internet Keyboard Pro (за Интернет)"
-#: ../rules/base.xml.in.h:458
+#: ../rules/base.xml.in.h:498
msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000 (безжична, ергономична)"
-#: ../rules/base.xml.in.h:459
+#: ../rules/base.xml.in.h:499
msgid "Microsoft Office Keyboard"
msgstr "Microsoft Office Keyboard (за офиса)"
-#: ../rules/base.xml.in.h:460
+#: ../rules/base.xml.in.h:500
msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
msgstr "Microsoft Wireless Multimedia Keyboard 1.0A (безжична, за мултимедия)"
-#: ../rules/base.xml.in.h:461
+#: ../rules/base.xml.in.h:501
msgid "Miscellaneous compatibility options"
msgstr "Разни настройки за съвместимост"
-#: ../rules/base.xml.in.h:462
+#: ../rules/base.xml.in.h:502
msgid "Mkd"
msgstr "Мак"
-#: ../rules/base.xml.in.h:463
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "Мли"
+
+#: ../rules/base.xml.in.h:504
msgid "Mlt"
msgstr "Мал"
-#: ../rules/base.xml.in.h:464
+#: ../rules/base.xml.in.h:505
msgid "Mmr"
msgstr "Миа"
-#: ../rules/base.xml.in.h:465
+#: ../rules/base.xml.in.h:506
msgid "Mng"
msgstr "Мон"
-#: ../rules/base.xml.in.h:466
+#: ../rules/base.xml.in.h:507
msgid "Mongolia"
msgstr "монголска"
-#: ../rules/base.xml.in.h:467
+#: ../rules/base.xml.in.h:508
msgid "Montenegro"
msgstr "черногорска"
-#: ../rules/base.xml.in.h:468
+#: ../rules/base.xml.in.h:509
msgid "Morocco"
msgstr "мароканска"
-#: ../rules/base.xml.in.h:469
+#: ../rules/base.xml.in.h:510
msgid "Multilingual"
msgstr "многоезична"
-#: ../rules/base.xml.in.h:470
+#: ../rules/base.xml.in.h:511
msgid "Multilingual, first part"
msgstr "многоезична, първа част"
-#: ../rules/base.xml.in.h:471
+#: ../rules/base.xml.in.h:512
msgid "Multilingual, second part"
msgstr "многоезична, втора част"
-#: ../rules/base.xml.in.h:472
+#: ../rules/base.xml.in.h:513
msgid "Myanmar"
msgstr "мианмарска"
-#: ../rules/base.xml.in.h:473
+#: ../rules/base.xml.in.h:514
msgid "NICOLA-F style Backspace"
msgstr "Backspace на мястото определено от подредбата NICOLA-F"
-#: ../rules/base.xml.in.h:474
+#: ../rules/base.xml.in.h:515
msgid "NLA"
msgstr "NLA"
-#: ../rules/base.xml.in.h:475
+#: ../rules/base.xml.in.h:516
msgid "Nativo"
msgstr "нативна"
-#: ../rules/base.xml.in.h:476
+#: ../rules/base.xml.in.h:517
msgid "Nativo for Esperanto"
msgstr "нативна за есперанто"
-#: ../rules/base.xml.in.h:477
+#: ../rules/base.xml.in.h:518
msgid "Nativo for USA keyboards"
msgstr "нативна за САЩ"
-#: ../rules/base.xml.in.h:478
+#: ../rules/base.xml.in.h:519
msgid "Neo 2"
msgstr "Neo 2"
-#: ../rules/base.xml.in.h:479
-msgid "Nep"
-msgstr "Неп"
-
-#: ../rules/base.xml.in.h:480
+#: ../rules/base.xml.in.h:520
msgid "Nepal"
msgstr "непалска"
-#: ../rules/base.xml.in.h:481
+#: ../rules/base.xml.in.h:521
msgid "Netherlands"
msgstr "холандска"
-#: ../rules/base.xml.in.h:482
+#: ../rules/base.xml.in.h:522
msgid "New phonetic"
msgstr "фонетична, нова"
-#: ../rules/base.xml.in.h:483
-msgid "Nig"
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
msgstr "Ниг"
-#: ../rules/base.xml.in.h:484
+#: ../rules/base.xml.in.h:524
msgid "Nigeria"
msgstr "нигерийска"
-#: ../rules/base.xml.in.h:485
+#: ../rules/base.xml.in.h:525
msgid "Nld"
msgstr "Хол"
-#: ../rules/base.xml.in.h:486
+#: ../rules/base.xml.in.h:526
msgid "Non-breakable space character at fourth level"
msgstr "Интервал без разделяне на четвърто ниво"
-#: ../rules/base.xml.in.h:487
+#: ../rules/base.xml.in.h:527
msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
msgstr "Интервал без разделяне на четвърто ниво и тесен интервал без разделяне на шесто ниво"
-#: ../rules/base.xml.in.h:488
+#: ../rules/base.xml.in.h:528
msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
msgstr "Интервал без разделяне на четвърто ниво и тесен интервал без разделяне на шесто ниво (с Ctrl+Shift)"
-#: ../rules/base.xml.in.h:489
+#: ../rules/base.xml.in.h:529
msgid "Non-breakable space character at second level"
msgstr "Интервал без разделяне на второ ниво"
-#: ../rules/base.xml.in.h:490
+#: ../rules/base.xml.in.h:530
msgid "Non-breakable space character at third level"
msgstr "Интервал без разделяне на трето ниво"
-#: ../rules/base.xml.in.h:491
+#: ../rules/base.xml.in.h:531
msgid "Non-breakable space character at third level, nothing at fourth level"
msgstr "Интервал без разделяне на трето ниво и нищо на четвърто ниво"
-#: ../rules/base.xml.in.h:492
+#: ../rules/base.xml.in.h:532
msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
msgstr "Интервал без разделяне на трето ниво и тесен интервал без разделяне на четвърто ниво"
-#: ../rules/base.xml.in.h:493
+#: ../rules/base.xml.in.h:533
msgid "Nor"
msgstr "Нор"
-#: ../rules/base.xml.in.h:494
+#: ../rules/base.xml.in.h:534
msgid "Northern Saami"
msgstr "северносамска (Норвегия)"
-#: ../rules/base.xml.in.h:495
+#: ../rules/base.xml.in.h:535
msgid "Northern Saami, eliminate dead keys"
msgstr "северносамска, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:496
+#: ../rules/base.xml.in.h:536
msgid "Northgate OmniKey 101"
msgstr "Northgate OmniKey 101"
-#: ../rules/base.xml.in.h:497
+#: ../rules/base.xml.in.h:537
msgid "Norway"
msgstr "норвежка"
-#: ../rules/base.xml.in.h:498
-msgid "NumLock"
-msgstr "NumLock"
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "Нпл"
-#: ../rules/base.xml.in.h:499
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:540
msgid "Numeric keypad delete key behaviour"
msgstr "Поведение на клавиша за триене на цифровата клавиатура"
-#: ../rules/base.xml.in.h:500
+#: ../rules/base.xml.in.h:541
msgid "Numeric keypad keys work as with Mac"
msgstr "Цифровата клавиатура функционира като в Macintosh"
-#: ../rules/base.xml.in.h:501
+#: ../rules/base.xml.in.h:542
msgid "Numeric keypad layout selection"
msgstr "Избор на подредбата на цифровата клавиатура"
-#: ../rules/base.xml.in.h:502
+#: ../rules/base.xml.in.h:543
msgid "OADG 109A"
msgstr "OADG 109A"
-#: ../rules/base.xml.in.h:503
+#: ../rules/base.xml.in.h:544
msgid "OLPC"
msgstr "OLPC"
-#: ../rules/base.xml.in.h:504
+#: ../rules/base.xml.in.h:545
msgid "OLPC Dari"
msgstr "дарийска за OLPC (фарси)"
-#: ../rules/base.xml.in.h:505
+#: ../rules/base.xml.in.h:546
msgid "OLPC Pashto"
msgstr "пащунска за OLPC"
-#: ../rules/base.xml.in.h:506
+#: ../rules/base.xml.in.h:547
msgid "OLPC Southern Uzbek"
msgstr "южно узбекска за OLPC"
-#: ../rules/base.xml.in.h:507
+#: ../rules/base.xml.in.h:548
msgid "Occitan"
msgstr "провансалска"
-#: ../rules/base.xml.in.h:508
+#: ../rules/base.xml.in.h:549
msgid "Ogham"
msgstr "огамска"
-#: ../rules/base.xml.in.h:509
+#: ../rules/base.xml.in.h:550
msgid "Ogham IS434"
msgstr "огамска IS434"
-#: ../rules/base.xml.in.h:510
+#: ../rules/base.xml.in.h:551
msgid "Oriya"
msgstr "орийска"
-#: ../rules/base.xml.in.h:511
+#: ../rules/base.xml.in.h:552
msgid "Ortek MCK-800 MM/Internet keyboard"
msgstr "Ortek MCK-800 MM/Internet keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:512
+#: ../rules/base.xml.in.h:553
msgid "Ossetian"
msgstr "осетинска"
-#: ../rules/base.xml.in.h:513
+#: ../rules/base.xml.in.h:554
msgid "Ossetian, Winkeys"
msgstr "осетинска, клавиши Win"
-#: ../rules/base.xml.in.h:514
+#: ../rules/base.xml.in.h:555
msgid "Ossetian, legacy"
msgstr "осетинска, остаряла"
-#: ../rules/base.xml.in.h:515
+#: ../rules/base.xml.in.h:556
msgid "PC-98xx Series"
msgstr "Серии PC-98xx"
-#: ../rules/base.xml.in.h:516
+#: ../rules/base.xml.in.h:557
msgid "Pak"
msgstr "Пак"
-#: ../rules/base.xml.in.h:517
+#: ../rules/base.xml.in.h:558
msgid "Pakistan"
msgstr "пакистанска"
-#: ../rules/base.xml.in.h:518
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "русинска, фонетична"
+
+#: ../rules/base.xml.in.h:560
msgid "Pashto"
msgstr "пащунска"
-#: ../rules/base.xml.in.h:519
+#: ../rules/base.xml.in.h:561
msgid "Pattachote"
msgstr "патачотска"
-#: ../rules/base.xml.in.h:520
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pause"
+
+#: ../rules/base.xml.in.h:563
msgid "Persian, with Persian Keypad"
msgstr "персийска, с персийска цифрова клавиатура"
-#: ../rules/base.xml.in.h:521
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "Фил"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "филипинска"
+
+#: ../rules/base.xml.in.h:566
msgid "Phonetic"
msgstr "фонетична"
-#: ../rules/base.xml.in.h:522
+#: ../rules/base.xml.in.h:567
msgid "Phonetic Winkeys"
msgstr "фонетична, клавиши Win"
-#: ../rules/base.xml.in.h:523
+#: ../rules/base.xml.in.h:568
msgid "Pol"
msgstr "Пол"
-#: ../rules/base.xml.in.h:524
+#: ../rules/base.xml.in.h:569
msgid "Poland"
msgstr "полска"
-#: ../rules/base.xml.in.h:525
+#: ../rules/base.xml.in.h:570
msgid "Polytonic"
msgstr "политонална"
-#: ../rules/base.xml.in.h:526
+#: ../rules/base.xml.in.h:571
msgid "Portugal"
msgstr "португалска"
-#: ../rules/base.xml.in.h:527
+#: ../rules/base.xml.in.h:572
msgid "Probhat"
msgstr "пробхатска"
-#: ../rules/base.xml.in.h:528
+#: ../rules/base.xml.in.h:573
msgid "Programmer Dvorak"
msgstr "Дворак за програмисти"
-#: ../rules/base.xml.in.h:529
+#: ../rules/base.xml.in.h:574
msgid "Propeller Voyager (KTEZ-1000)"
msgstr "Propeller Voyager (KTEZ-1000)"
-#: ../rules/base.xml.in.h:530
+#: ../rules/base.xml.in.h:575
msgid "Prt"
msgstr "Пор"
-#: ../rules/base.xml.in.h:531
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:577
msgid "QTronix Scorpius 98N+"
msgstr "QTronix Scorpius 98N+"
-#: ../rules/base.xml.in.h:532
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (байбаин)"
+
+#: ../rules/base.xml.in.h:579
msgid "Right Alt"
msgstr "Десният Alt"
-#: ../rules/base.xml.in.h:533
+#: ../rules/base.xml.in.h:580
msgid "Right Alt (while pressed)"
msgstr "Десният Alt (докато е натиснат)"
-#: ../rules/base.xml.in.h:534
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Десният Alt избира петото ниво и го заключва заедно с друг клавиш за пето ниво"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Десният Alt избира петото ниво, заключва го заедно с друг клавиш за пето ниво и го отключва при единично натискане"
+
+#: ../rules/base.xml.in.h:583
msgid "Right Alt key never chooses 3rd level"
msgstr "Десният Alt никога не избира третото ниво"
-#: ../rules/base.xml.in.h:535
+#: ../rules/base.xml.in.h:584
msgid "Right Alt, Shift+Right Alt key is Multi_Key"
msgstr "Десният Alt, Shift+десният Alt са Multi"
-#: ../rules/base.xml.in.h:536
+#: ../rules/base.xml.in.h:585
msgid "Right Ctrl"
msgstr "Десният Ctrl"
-#: ../rules/base.xml.in.h:537
+#: ../rules/base.xml.in.h:586
msgid "Right Ctrl (while pressed)"
msgstr "Десният Ctrl (докато е натиснат)"
-#: ../rules/base.xml.in.h:538
+#: ../rules/base.xml.in.h:587
msgid "Right Ctrl as Right Alt"
msgstr "Десният Ctrl е десен Alt"
-#: ../rules/base.xml.in.h:539
+#: ../rules/base.xml.in.h:588
msgid "Right Ctrl+Right Shift"
msgstr "Десният Ctrl+десният Shift"
-#: ../rules/base.xml.in.h:540
+#: ../rules/base.xml.in.h:589
msgid "Right Shift"
msgstr "Десният Shift"
-#: ../rules/base.xml.in.h:541
+#: ../rules/base.xml.in.h:590
msgid "Right Win"
msgstr "Десният Win"
-#: ../rules/base.xml.in.h:542
+#: ../rules/base.xml.in.h:591
msgid "Right Win (while pressed)"
msgstr "Десният Win (докато е натиснат)"
-#: ../rules/base.xml.in.h:543
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Десният Win избира петото ниво и го заключва заедно с друг клавиш за пето ниво"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Десният Win избира петото ниво, заключва го заедно с друг клавиш за пето ниво и го отключва при единично натискане"
+
+#: ../rules/base.xml.in.h:594
msgid "Right hand"
msgstr "за десничари"
-#: ../rules/base.xml.in.h:544
+#: ../rules/base.xml.in.h:595
msgid "Right handed Dvorak"
msgstr "Дворак за десничари"
-#: ../rules/base.xml.in.h:545
+#: ../rules/base.xml.in.h:596
msgid "Romania"
msgstr "румънска"
-#: ../rules/base.xml.in.h:546
+#: ../rules/base.xml.in.h:597
msgid "Romanian keyboard with German letters"
msgstr "румънска клавиатура с немски букви"
-#: ../rules/base.xml.in.h:547
+#: ../rules/base.xml.in.h:598
msgid "Romanian keyboard with German letters, eliminate dead keys"
msgstr "румънска клавиатура с немски букви, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:548
+#: ../rules/base.xml.in.h:599
msgid "Rou"
msgstr "Рум"
-#: ../rules/base.xml.in.h:549
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Рупия (₨) при „4“"
+
+#: ../rules/base.xml.in.h:601
msgid "Rus"
msgstr "Рус"
-#: ../rules/base.xml.in.h:550
+#: ../rules/base.xml.in.h:602
msgid "Russia"
msgstr "руска"
-#: ../rules/base.xml.in.h:551
+#: ../rules/base.xml.in.h:603
msgid "Russian"
msgstr "руска"
-#: ../rules/base.xml.in.h:552
+#: ../rules/base.xml.in.h:604
msgid "Russian phonetic"
msgstr "руска фонетична"
-#: ../rules/base.xml.in.h:553
+#: ../rules/base.xml.in.h:605
msgid "Russian phonetic Dvorak"
msgstr "руска фонетична, Дворак"
-#: ../rules/base.xml.in.h:554
+#: ../rules/base.xml.in.h:606
msgid "Russian phonetic, eliminate dead keys"
msgstr "руска фонетична, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:555
+#: ../rules/base.xml.in.h:607
msgid "Russian with Kazakh"
msgstr "руска с казахски букви"
-#: ../rules/base.xml.in.h:556
+#: ../rules/base.xml.in.h:608
msgid "SILVERCREST Multimedia Wireless Keyboard"
msgstr "SILVERCREST Multimedia Wireless Keyboard (безжична, за мултимедия)"
-#: ../rules/base.xml.in.h:557
+#: ../rules/base.xml.in.h:609
msgid "SK-1300"
msgstr "SK-1300"
-#: ../rules/base.xml.in.h:558
+#: ../rules/base.xml.in.h:610
msgid "SK-2500"
msgstr "SK-2500"
-#: ../rules/base.xml.in.h:559
+#: ../rules/base.xml.in.h:611
msgid "SK-6200"
msgstr "SK-6200"
-#: ../rules/base.xml.in.h:560
+#: ../rules/base.xml.in.h:612
msgid "SK-7100"
msgstr "SK-7100"
-#: ../rules/base.xml.in.h:561 ../rules/base.extras.xml.in.h:7
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
msgid "SRB"
msgstr "Срб"
-#: ../rules/base.xml.in.h:562
+#: ../rules/base.xml.in.h:614
msgid "SVEN Ergonomic 2500"
msgstr "SVEN Ergonomic 2500 (ергономична)"
-#: ../rules/base.xml.in.h:563
+#: ../rules/base.xml.in.h:615
msgid "SVEN Slim 303"
msgstr "SVEN Slim 303"
-#: ../rules/base.xml.in.h:564
+#: ../rules/base.xml.in.h:616
msgid "Samsung SDM 4500P"
msgstr "Samsung SDM 4500P"
-#: ../rules/base.xml.in.h:565
+#: ../rules/base.xml.in.h:617
msgid "Samsung SDM 4510P"
msgstr "Samsung SDM 4510P"
-#: ../rules/base.xml.in.h:566
+#: ../rules/base.xml.in.h:618
msgid "Scroll Lock"
msgstr "ScrollLock"
-#: ../rules/base.xml.in.h:567
-msgid "ScrollLock"
-msgstr "ScrollLock"
-
-#: ../rules/base.xml.in.h:568
+#: ../rules/base.xml.in.h:619
msgid "Secwepemctsin"
msgstr "шъкуъпмъктчин"
-#: ../rules/base.xml.in.h:569
+#: ../rules/base.xml.in.h:620
msgid "Semi-colon on third level"
msgstr "Точка и запетая на третото ниво"
-#: ../rules/base.xml.in.h:570 ../rules/base.extras.xml.in.h:8
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "Сен"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "сенегалска"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
msgid "Serbia"
msgstr "сръбска"
-#: ../rules/base.xml.in.h:571
-msgid "Shift cancels CapsLock"
-msgstr "Shift отменя CapsLock"
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "сръбска"
-#: ../rules/base.xml.in.h:572
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr "Shift не отменя CapsLock, а избира третото ниво"
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "сърбохърватска"
-#: ../rules/base.xml.in.h:573
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Shift отменя Caps Lock"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift не отменя Caps Lock, а избира третото ниво"
+
+#: ../rules/base.xml.in.h:628
msgid "Shift with numeric keypad keys works as in MS Windows"
msgstr "Shift за цифровата клавиатура както в MS Windows"
-#: ../rules/base.xml.in.h:574
-msgid "Shift+CapsLock"
-msgstr "Shift+CapsLock"
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Shift+Caps Lock"
-#: ../rules/base.xml.in.h:575
+#: ../rules/base.xml.in.h:630
msgid "Simple"
msgstr "Обикновена"
-#: ../rules/base.xml.in.h:576
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "синдхи"
+
+#: ../rules/base.xml.in.h:632
msgid "Slovakia"
msgstr "словашка"
-#: ../rules/base.xml.in.h:577
+#: ../rules/base.xml.in.h:633
msgid "Slovenia"
msgstr "словенска"
-#: ../rules/base.xml.in.h:578
+#: ../rules/base.xml.in.h:634
msgid "South Africa"
msgstr "южноафриканска"
-#: ../rules/base.xml.in.h:579
+#: ../rules/base.xml.in.h:635
msgid "Southern Uzbek"
msgstr "южно узбекска"
-#: ../rules/base.xml.in.h:580
+#: ../rules/base.xml.in.h:636
msgid "Spain"
msgstr "испанска"
-#: ../rules/base.xml.in.h:581
+#: ../rules/base.xml.in.h:637
msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
msgstr "Специалните комбинации (Ctrl+Alt+&lt;клавиш&gt;) се обработват от сървъра"
-#: ../rules/base.xml.in.h:582
-msgid "SrL"
-msgstr "Шри"
-
-#: ../rules/base.xml.in.h:583
+#: ../rules/base.xml.in.h:638
msgid "Sri Lanka"
msgstr "шриланкска"
-#: ../rules/base.xml.in.h:584
+#: ../rules/base.xml.in.h:639
msgid "Standard"
msgstr "стандартна"
-#: ../rules/base.xml.in.h:585
+#: ../rules/base.xml.in.h:640
msgid "Standard (Cedilla)"
msgstr "стандартна (седий)"
#. RSTU 2019-91
-#: ../rules/base.xml.in.h:587
+#: ../rules/base.xml.in.h:642
msgid "Standard RSTU"
msgstr "стандартна украинска"
#. RSTU 2019-91
-#: ../rules/base.xml.in.h:589
+#: ../rules/base.xml.in.h:644
msgid "Standard RSTU on Russian layout"
msgstr "стандартна украинска, руска подредба"
-#: ../rules/base.xml.in.h:590
+#: ../rules/base.xml.in.h:645
msgid "Sun Type 5/6"
msgstr "На Sun, вид 5/6"
-#: ../rules/base.xml.in.h:591
+#: ../rules/base.xml.in.h:646
msgid "Sun dead keys"
msgstr "Sun, без „мъртви“ клавиши"
-#: ../rules/base.xml.in.h:592
+#: ../rules/base.xml.in.h:647
msgid "Super Power Multimedia Keyboard"
msgstr "Super Power Multimedia Keyboard (за мултимедия)"
-#: ../rules/base.xml.in.h:593
+#: ../rules/base.xml.in.h:648
msgid "Svdvorak"
msgstr "Свдворак"
-#: ../rules/base.xml.in.h:594
+#: ../rules/base.xml.in.h:649
msgid "Svk"
msgstr "Свш"
-#: ../rules/base.xml.in.h:595
+#: ../rules/base.xml.in.h:650
msgid "Svn"
msgstr "Свн"
-#: ../rules/base.xml.in.h:596
-msgid "Swap Ctrl and CapsLock"
-msgstr "Размяна на Ctrl и CapsLock"
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Размяна на Ctrl и Caps Lock"
-#: ../rules/base.xml.in.h:597
-msgid "Swap ESC and CapsLock"
-msgstr "Размяна на Esc и CapsLock"
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Размяна на Esc и Caps Lock"
-#: ../rules/base.xml.in.h:598
+#: ../rules/base.xml.in.h:653
msgid "Swe"
msgstr "Шве"
-#: ../rules/base.xml.in.h:599
+#: ../rules/base.xml.in.h:654
msgid "Sweden"
msgstr "шведска"
-#: ../rules/base.xml.in.h:600
+#: ../rules/base.xml.in.h:655
msgid "Switzerland"
msgstr "швейцарска"
-#: ../rules/base.xml.in.h:601
+#: ../rules/base.xml.in.h:656
msgid "Symplon PaceBook (tablet PC)"
msgstr "Symplon PaceBook (за таблет)"
-#: ../rules/base.xml.in.h:602
+#: ../rules/base.xml.in.h:657
msgid "Syr"
msgstr "Сир"
-#: ../rules/base.xml.in.h:603
+#: ../rules/base.xml.in.h:658
msgid "Syria"
msgstr "сирийска"
-#: ../rules/base.xml.in.h:604
+#: ../rules/base.xml.in.h:659
msgid "Syriac"
msgstr "сириакска (арамейска)"
-#: ../rules/base.xml.in.h:605
+#: ../rules/base.xml.in.h:660
msgid "Syriac phonetic"
msgstr "сириакска фонетична (арамейска)"
-#: ../rules/base.xml.in.h:606
+#: ../rules/base.xml.in.h:661
msgid "TIS-820.2538"
msgstr "TIS-820.2538"
-#: ../rules/base.xml.in.h:607
+#: ../rules/base.xml.in.h:662
msgid "Tajikistan"
msgstr "таджикска"
-#: ../rules/base.xml.in.h:608
+#: ../rules/base.xml.in.h:663
msgid "Tamil"
msgstr "тамилска"
-#: ../rules/base.xml.in.h:609
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Тамилска клавиатура с цифри"
+
+#: ../rules/base.xml.in.h:665
msgid "Tamil TAB Typewriter"
msgstr "тамилска машинописна с табулация"
-#: ../rules/base.xml.in.h:610
+#: ../rules/base.xml.in.h:666
msgid "Tamil TSCII Typewriter"
msgstr "тамилска машинописна — TSCII"
-#: ../rules/base.xml.in.h:611
+#: ../rules/base.xml.in.h:667
msgid "Tamil Unicode"
msgstr "тамилска за Уникод"
-#: ../rules/base.xml.in.h:612
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "танзанийска"
+
+#: ../rules/base.xml.in.h:669
msgid "Targa Visionary 811"
msgstr "Targa Visionary 811"
-#: ../rules/base.xml.in.h:613
+#: ../rules/base.xml.in.h:670
msgid "Tatar"
msgstr "татарска"
-#: ../rules/base.xml.in.h:614
+#: ../rules/base.xml.in.h:671
msgid "Telugu"
msgstr "телугу"
-#: ../rules/base.xml.in.h:615
+#: ../rules/base.xml.in.h:672
msgid "Tha"
msgstr "Тай"
-#: ../rules/base.xml.in.h:616
+#: ../rules/base.xml.in.h:673
msgid "Thailand"
msgstr "тайландска"
-#: ../rules/base.xml.in.h:617
+#: ../rules/base.xml.in.h:674
msgid "Tibetan"
msgstr "тибетска"
-#: ../rules/base.xml.in.h:618
+#: ../rules/base.xml.in.h:675
msgid "Tibetan (with ASCII numerals)"
msgstr "тибетска (с цифри от ASCII)"
-#: ../rules/base.xml.in.h:619
+#: ../rules/base.xml.in.h:676
msgid "Tifinagh"
msgstr "тифинах"
-#: ../rules/base.xml.in.h:620
-msgid "Tifinagh Alternative"
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
msgstr "алтернативна за тифинах"
-#: ../rules/base.xml.in.h:621
-msgid "Tifinagh Alternative Phonetic"
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
msgstr "алтернативна, фонетична за тифинах"
-#: ../rules/base.xml.in.h:622
-msgid "Tifinagh Extended"
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
msgstr "разширена за тифинах"
-#: ../rules/base.xml.in.h:623
-msgid "Tifinagh Extended Phonetic"
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
msgstr "разширена фонетична за тифинах"
-#: ../rules/base.xml.in.h:624
-msgid "Tifinagh Phonetic"
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
msgstr "фонетична за тифинах"
-#: ../rules/base.xml.in.h:625
+#: ../rules/base.xml.in.h:682
msgid "Tilde (~) variant"
msgstr "вариант с тилда (~)"
-#: ../rules/base.xml.in.h:626
+#: ../rules/base.xml.in.h:683
msgid "Tjk"
msgstr "Тдж"
-#: ../rules/base.xml.in.h:627
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "Ткм"
+
+#: ../rules/base.xml.in.h:685
msgid "To the corresponding key in a Dvorak keyboard."
msgstr "към съответния клавиш в Dvorak"
-#: ../rules/base.xml.in.h:628
+#: ../rules/base.xml.in.h:686
msgid "To the corresponding key in a Qwerty keyboard."
msgstr "към съответния клавиш Qwerty"
-#: ../rules/base.xml.in.h:629
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Включване на клавиши за придвижване чрез Shift+NumLock"
+
+#: ../rules/base.xml.in.h:688
msgid "Toshiba Satellite S3000"
msgstr "Toshiba Satellite S3000"
-#: ../rules/base.xml.in.h:630
+#: ../rules/base.xml.in.h:689
msgid "Traditional phonetic"
msgstr "фонетична, традиционна"
-#: ../rules/base.xml.in.h:631
+#: ../rules/base.xml.in.h:690
msgid "Trust Direct Access Keyboard"
msgstr "Trust Direct Access Keyboard"
-#: ../rules/base.xml.in.h:632
+#: ../rules/base.xml.in.h:691
msgid "Trust Slimline"
msgstr "Trust Slimline"
-#: ../rules/base.xml.in.h:633
+#: ../rules/base.xml.in.h:692
msgid "Trust Wireless Keyboard Classic"
msgstr "Trust Wireless Keyboard Classic (безжична)"
-#: ../rules/base.xml.in.h:634
+#: ../rules/base.xml.in.h:693
msgid "Tur"
msgstr "Тур"
-#: ../rules/base.xml.in.h:635
+#: ../rules/base.xml.in.h:694
msgid "Turkey"
msgstr "турска"
-#: ../rules/base.xml.in.h:636
+#: ../rules/base.xml.in.h:695
msgid "Turkmenistan"
msgstr "туркменистанска"
-#: ../rules/base.xml.in.h:637
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (режим 102/105:EU)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (режим 106:JP)"
+
+#: ../rules/base.xml.in.h:701
msgid "Typewriter"
msgstr "машинописна"
-#: ../rules/base.xml.in.h:638
+#: ../rules/base.xml.in.h:702
msgid "Typewriter, legacy"
msgstr "машинописна (остаряла)"
-#: ../rules/base.xml.in.h:639
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "Тнз"
+
+#: ../rules/base.xml.in.h:704
msgid "UCW layout (accented letters only)"
msgstr "Подредба UCW (само ударени букви)"
-#: ../rules/base.xml.in.h:640
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "US Dvorak с поддръжка на CZ UCW"
+
+#: ../rules/base.xml.in.h:706
msgid "US keyboard with Bosnian digraphs"
msgstr "американска с босненски диграфи"
-#: ../rules/base.xml.in.h:641
+#: ../rules/base.xml.in.h:707
msgid "US keyboard with Bosnian letters"
msgstr "американска с босненски букви"
-#: ../rules/base.xml.in.h:642
+#: ../rules/base.xml.in.h:708
msgid "US keyboard with Croatian digraphs"
msgstr "американска с хърватски диграфи"
-#: ../rules/base.xml.in.h:643
+#: ../rules/base.xml.in.h:709
msgid "US keyboard with Croatian letters"
msgstr "американска с хърватски букви"
-#: ../rules/base.xml.in.h:644
+#: ../rules/base.xml.in.h:710
msgid "US keyboard with Estonian letters"
msgstr "американска с естонски букви"
-#: ../rules/base.xml.in.h:645
+#: ../rules/base.xml.in.h:711
msgid "US keyboard with Italian letters"
msgstr "американска с италиански букви"
-#: ../rules/base.xml.in.h:646
+#: ../rules/base.xml.in.h:712
msgid "US keyboard with Lithuanian letters"
msgstr "американска с литовски букви"
-#: ../rules/base.xml.in.h:647
+#: ../rules/base.xml.in.h:713
msgid "US keyboard with Slovenian letters"
msgstr "американска със словенски букви"
-#: ../rules/base.xml.in.h:648 ../rules/base.extras.xml.in.h:9
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
msgid "USA"
msgstr "Аме"
-#: ../rules/base.xml.in.h:649
+#: ../rules/base.xml.in.h:715
msgid "Udmurt"
msgstr "удмурт"
-#: ../rules/base.xml.in.h:650
+#: ../rules/base.xml.in.h:716
msgid "Ukr"
msgstr "Укр"
-#: ../rules/base.xml.in.h:651
+#: ../rules/base.xml.in.h:717
msgid "Ukraine"
msgstr "украинска"
-#: ../rules/base.xml.in.h:652
+#: ../rules/base.xml.in.h:718
msgid "Unicode additions (arrows and math operators)"
msgstr "Допълненията от Уникод (стрелки и математически операции)"
-#: ../rules/base.xml.in.h:653
+#: ../rules/base.xml.in.h:719
msgid "Unicode additions (arrows and math operators). Math operators on default level"
msgstr "Допълненията от Уникод (стрелки и математически операции). Операциите са на стандартното ниво"
-#: ../rules/base.xml.in.h:654
+#: ../rules/base.xml.in.h:720
msgid "UnicodeExpert"
msgstr "експертна за Уникод"
-#: ../rules/base.xml.in.h:655
+#: ../rules/base.xml.in.h:721
msgid "United Kingdom"
msgstr "британска"
-#: ../rules/base.xml.in.h:656
+#: ../rules/base.xml.in.h:722
msgid "Unitek KB-1925"
msgstr "Unitek KB-1925"
-#: ../rules/base.xml.in.h:657
+#: ../rules/base.xml.in.h:723
msgid "Urdu, Alternative phonetic"
msgstr "урду, фонетична, алтернативна"
-#: ../rules/base.xml.in.h:658
+#: ../rules/base.xml.in.h:724
msgid "Urdu, Phonetic"
msgstr "урду, фонетична"
-#: ../rules/base.xml.in.h:659
+#: ../rules/base.xml.in.h:725
msgid "Urdu, Winkeys"
msgstr "урду, клавиши Win"
-#: ../rules/base.xml.in.h:660
+#: ../rules/base.xml.in.h:726
msgid "Use Bosnian digraphs"
msgstr "с босненски диграфи"
-#: ../rules/base.xml.in.h:661
+#: ../rules/base.xml.in.h:727
msgid "Use Croatian digraphs"
msgstr "с хърватски диграфи"
-#: ../rules/base.xml.in.h:662
+#: ../rules/base.xml.in.h:728
msgid "Use guillemets for quotes"
msgstr "със френски кавички"
-#: ../rules/base.xml.in.h:663
+#: ../rules/base.xml.in.h:729
msgid "Use keyboard LED to show alternative layout"
msgstr "Индикация чрез клавиатурен светодиод за смяна на подредбата"
-#: ../rules/base.xml.in.h:664
+#: ../rules/base.xml.in.h:730
msgid "Using space key to input non-breakable space character"
msgstr "Генериране на интервал без разделяне с клавишa за интервал"
-#: ../rules/base.xml.in.h:665
+#: ../rules/base.xml.in.h:731
msgid "Usual space at any level"
msgstr "Нормален интервал на всички нива"
-#: ../rules/base.xml.in.h:666
+#: ../rules/base.xml.in.h:732
msgid "Uzb"
msgstr "Узб"
-#: ../rules/base.xml.in.h:667
+#: ../rules/base.xml.in.h:733
msgid "Uzbekistan"
msgstr "узбекистанска"
-#: ../rules/base.xml.in.h:668
+#: ../rules/base.xml.in.h:734
msgid "Vietnam"
msgstr "виетнамска"
-#: ../rules/base.xml.in.h:669
+#: ../rules/base.xml.in.h:735
msgid "ViewSonic KU-306 Internet Keyboard"
msgstr "ViewSonic KU-306 Internet Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:670
+#: ../rules/base.xml.in.h:736
msgid "Vnm"
msgstr "Вие"
-#: ../rules/base.xml.in.h:671
+#: ../rules/base.xml.in.h:737
msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
msgstr "Цифрова клавиатура — Wang 724, с допълненията от Уникод (стрелки и математически операции)"
-#: ../rules/base.xml.in.h:672
+#: ../rules/base.xml.in.h:738
msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
msgstr "Цифрова клавиатура Wang 724, с допълненията от Уникод (стрелки и математически операции). Операциите са на стандартното ниво"
-#: ../rules/base.xml.in.h:673
+#: ../rules/base.xml.in.h:739
msgid "Wang model 724 azerty"
msgstr "Wang model 724 azerty"
-#: ../rules/base.xml.in.h:674
+#: ../rules/base.xml.in.h:740
msgid "Western"
msgstr "западна"
-#: ../rules/base.xml.in.h:675
+#: ../rules/base.xml.in.h:741
msgid "Winbook Model XP5"
msgstr "Winbook Model XP5"
-#: ../rules/base.xml.in.h:676
+#: ../rules/base.xml.in.h:742
msgid "Winkeys"
msgstr "клавиши Win"
-#: ../rules/base.xml.in.h:677
+#: ../rules/base.xml.in.h:743
msgid "With &lt;\\|&gt; key"
msgstr "клавиш &lt;\\|&gt;"
-#: ../rules/base.xml.in.h:678
+#: ../rules/base.xml.in.h:744
msgid "With EuroSign on 5"
-msgstr "€ е при „5“"
+msgstr "Евро (€) при „5“"
-#: ../rules/base.xml.in.h:679
+#: ../rules/base.xml.in.h:745
msgid "With guillemets"
msgstr "френски кавички"
-#: ../rules/base.xml.in.h:680
+#: ../rules/base.xml.in.h:746
msgid "Yahoo! Internet Keyboard"
msgstr "Yahoo! Internet Keyboard (за Интернет)"
-#: ../rules/base.xml.in.h:681
+#: ../rules/base.xml.in.h:747
msgid "Yakut"
msgstr "якутска"
-#: ../rules/base.xml.in.h:682
+#: ../rules/base.xml.in.h:748
msgid "Yoruba"
msgstr "йоруба"
-#: ../rules/base.xml.in.h:683
+#: ../rules/base.xml.in.h:749
msgid "Z and ZHE swapped"
msgstr "разменени „З“ и „Ж“"
-#: ../rules/base.xml.in.h:684
-msgid "Zar"
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
msgstr "ЮАф"
-#: ../rules/base.xml.in.h:685
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Разделител с нулева широчина на второ ниво"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Разделител с нулева широчина на второ ниво и интервал без разделяне на трето ниво"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Разделител с нулева широчина на второ ниво, интервал без разделяне на трето ниво и нищо на четвърто ниво"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Разделител с нулева широчина на второ ниво, интервал без разделяне на трето ниво и тесен интервал без разделяне на четвърто ниво"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Разделител с нулева широчина на второ ниво, интервал без разделяне на трето ниво и съединител с нулева широчина на четвърто ниво"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Разделител с нулева широчина на второ ниво и съединител с нулева широчина на трето ниво"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Разделител с нулева широчина на второ ниво, съединител с нулева широчина на трето ниво и интервал без разделяне на четвърто ниво"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Разделител с нулева широчина на трето ниво и съединител с нулева широчина на четвърто ниво"
+
+#: ../rules/base.xml.in.h:759
msgid "azerty"
msgstr "azerty"
-#: ../rules/base.xml.in.h:686
+#: ../rules/base.xml.in.h:760
msgid "azerty/digits"
msgstr "azerty/цифри"
-#: ../rules/base.xml.in.h:687
+#: ../rules/base.xml.in.h:761
msgid "digits"
msgstr "цифри"
-#: ../rules/base.xml.in.h:688
+#: ../rules/base.xml.in.h:762
msgid "displaced semicolon and quote (obsolete)"
msgstr "разменени точка и запетая и кавички (остаряла)"
-#: ../rules/base.xml.in.h:689
+#: ../rules/base.xml.in.h:763
msgid "lyx"
msgstr "lyx"
-#: ../rules/base.xml.in.h:690
+#: ../rules/base.xml.in.h:764
msgid "qwerty"
msgstr "qwerty"
-#: ../rules/base.xml.in.h:691
+#: ../rules/base.xml.in.h:765
msgid "qwerty, extended Backslash"
msgstr "qwerty с удължен Backslash"
-#: ../rules/base.xml.in.h:692
+#: ../rules/base.xml.in.h:766
msgid "qwerty/digits"
msgstr "qwerty/цифри"
-#: ../rules/base.xml.in.h:693
+#: ../rules/base.xml.in.h:767
msgid "qwertz"
msgstr "qwertz"
@@ -2783,17 +3081,21 @@ msgid "Atsina"
msgstr "ацинска"
#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "авестийска"
+
+#: ../rules/base.extras.xml.in.h:4
msgid "Combining accents instead of dead keys"
msgstr "комбиниращи ударения вместо „мъртви“ клавиши"
-#: ../rules/base.extras.xml.in.h:4
+#: ../rules/base.extras.xml.in.h:5
msgid "Couer D'alene Salish"
msgstr "селиш на кор дален"
-#: ../rules/base.extras.xml.in.h:5
+#: ../rules/base.extras.xml.in.h:6
msgid "International (AltGr Unicode combining)"
msgstr "международна, с комбинации по Уникод чрез AltGr"
-#: ../rules/base.extras.xml.in.h:6
+#: ../rules/base.extras.xml.in.h:7
msgid "International (AltGr Unicode combining, alternative)"
msgstr "международна, с алтернативни комбинации по Уникод чрез AltGr"
diff --git a/xorg-server/xkeyboard-config/po/ca.po b/xorg-server/xkeyboard-config/po/ca.po
index 5ad9419ec..c1eaef7ad 100644
--- a/xorg-server/xkeyboard-config/po/ca.po
+++ b/xorg-server/xkeyboard-config/po/ca.po
@@ -1,3066 +1,3157 @@
-# Translation of xkeyboard-config to Catalan
-# Copyright © 2007 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-#
-# Josep Ma. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config-2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-16 20:09+0200\n"
-"Last-Translator: Josep Ma. Ferrer <txemaq@gmail.com>\n"
-"Language-Team: Catalan <ca@dodds.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.0\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Més petit/Més gran&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Més petit/Més gran&gt; selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Més petit/Més gran&gt; selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Llegat) Alternativa"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Llegat) Alternativa, tecles mortes de Sun"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Llegat) Alternativa, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "Compatible de 101/104 tecles"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/coma/tecles mortes"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/coma/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/punt/tecles mortes"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/punt/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/coma/tecles mortes"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/coma/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/punt/tecles mortes"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/punt/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/coma/tecles mortes"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/coma/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/punt/tecles mortes"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/punt/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/coma/tecles mortes"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/coma/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/punt/tecles mortes"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/punt/sense tecles mortes"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "Estil ATM/telèfon"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Portàtil Acer"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Afegeix el comportament estàndard a la tecla Menú"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "S'afegeix el circumflex de l'esperanto (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "S'afegeix el signe de l'euro a certes tecles"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albània"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt i Meta són a les tecles Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt s'assigna a la tecla Win dreta i Super a Menú"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+Bloq Maj"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Maj"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Espai"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Comportament de la tecla Alt/Win"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternativa"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Oriental alternativa"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Fonètic alternativa"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Internacional alternativa"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternativa, Sun tecles mortes"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativa, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternativa, només latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Qualsevol tecla Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Qualsevol tecla Win"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Qualsevol tecla Win (mentre estan premudes)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Variant amb apòstrof (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Teclat Apple Aluminium (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Teclat Apple Aluminium (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Teclat Apple Aluminium (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Teclat Apple Aluminium: emula les tecles del PC (Impr, Bloq Despl, Pausa, Bloq Núm)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Portàtil Apple"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Àrab"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armènia"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Variant asturiana amb H punt baix i L amb punt volat"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Portàtil Asus"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "A baix esquerra"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "A l'esquerra d'«A»"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Àustria"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Azerbaitjan"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Teclat Azona RF2300 wireless Internet"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Barra inversa"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Baixkir"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Bielorússia"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Bèlgica"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Bengalí"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Bengalí Probhat"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonòmic, tipus Dvorak"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonòmic, tipus Dvorak, només latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Hebreu bíblic (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bòsnia i Hercegovina"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Les dues tecles Alt juntes"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Les dues tecles Ctrl juntes"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Les dues tecles Maj juntes"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Les dues tecles Maj juntes commuten Bloq Maj"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Brasil"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Bretó"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Teclat Brother Internet"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bulgària"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Cambodja"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Canadà"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "Bloq Majús"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "Bloq Maj (a la primera disposició), Maj+Bloq Maj (a la darrera disposició)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "Bloq Maj (mentre està premuda), Alt+Bloq Maj efectua l'acció de Bloq Maj original"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "Bloq Maj actua com a Maj amb bloqueig. Maj «pausa» Bloq Maj"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "Bloq Maj actua com a Maj amb bloqueig. Maj no afecta a Bloq Maj"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "Bloq Maj està deshabilitat"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Comportament de la tecla Bloq Maj"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "Bloq Maj commuta Maj, de manera que afecta a totes les tecles"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "Bloq Maj commuta les majúscules normals dels caràcters alfabètics"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "Bloq Maj usa internament les majúscules. Maj «pausa» Bloq Maj"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "Bloq Maj usa internament les majúscules. Maj no afecta a Bloq Maj"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Variant catalana amb L amb punt volat"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Trencat"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (opció alternativa)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Teclat Chicony Internet"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "Xina"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Chuvash"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Chuvash llatí"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Clàssic"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Dvorak clàssic"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Clàssic, elimina les tecles mortes"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Teclat Compaq Easy Access"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Teclat Compaq Internet (13 tecles)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Teclat Compaq Internet (18 tecles)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Teclat Compaq Internet (7 tecles)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Teclat Compaq iPaq"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Posició de la tecla Compose"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, República Democràtica del"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Retrocés"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control s'assigna a les tecles Alt, Alt s'assigna a les tecles Win"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control s'assigna a les tecles Win (i a les tecles Ctrl habituals)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Tàtar de Crimea (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Tàtar de Crimea (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Tàtar de Crimea (Turc Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Tàtar de Crimea (Turc F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Tàtar de Crimea (Turc Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Croàcia"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Posició de la tecla Ctrl"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Maj"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Ciríl·lic"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Ciríl·lic amb cometes angulars"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Ciríl·lic, Z i ZHE intercanviades"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Txèquia"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Accent mort"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Accent greu mort"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Tecles predeterminades del teclat numèric"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell PC 101 tecles"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Portàtil Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Portàtil Dell sèrie Precision M"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Portàtil Dell sèrie Latitude"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Teclat Dell USB Multimedia"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Teclat Dexxa Wireless Desktop"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond sèries 9801 / 9802"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (Puntuació UK)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvorak internacional alternatiu (sense tecles mortes)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak internacional (amb tecles mortes)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, cometes poloneses a la tecla 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, cometes poloneses a la tecla cometes"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Oriental"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Elimina les tecles mortes"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Habilita els caràcters tipogràfics extres"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Anglès"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Anglès (Internacional EUA)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Anglès (Macintosh EUA)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Retorn en el teclat numèric"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Ergonòmic"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Estònia"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Etiòpia"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Ampliat"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Ampliat - Tecles Win"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Barra inversa estesa"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "Variant de lletra F (F)"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Illes Faroe"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Finlàndia"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Tecla de quatre nivells amb separadors abstractes"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Tecla de quatre nivells amb coma"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Tecla de quatre nivells amb punt"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Tecla de quatre nivells amb punt, restricció de latin-9"
-
-# Què collons és momayyez? jm
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Tecla de quatre nivells amb momayyez"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "França"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Francès (Alternatiu França)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Francès"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Francès (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Francès (llegat)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Francès Dvorak"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Francès, tecles mortes de Sun"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Francès, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO portàtil"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "PC genèric de 101 tecles"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "PC genèric de 102 tecles (intl)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "PC genèric de 104 tecles"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "PC genèric de 105 tecles (intl)"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Teclat Genius MM KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Geòrgia"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Georgià"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Georgià AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Alemany (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Alemany, tecles mortes de Sun"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Alemany, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Alemanya"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Grècia"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Teclat Happy Hacking"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Teclat Happy Hacking per a Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Haussa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Teclat Hewlett-Packard Internet"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Teclat Hewlett-Packard SK-250x Multimedia"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Hexadecimal"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Homofònic"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Hongria"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper s'assigna a les tecles Win"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "Alternativa ISO"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Islàndia"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Inclou la titlla morta"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Índia"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "Internacional (tecles mortes AltGr)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "Internacional (amb tecles mortes)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Iraq"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Irlanda"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Itàlia"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Japó"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Japó (sèries PC-98xx)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Opcions del teclat japonès"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Calmuc"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "La tecla de bloqueig Kana està blocant"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Caixubi"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kazakh amb rus"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Kenya"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Seqüència de tecles per a matar el servidor X"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Tecla per a seleccionar el 3r nivell"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Tecla per a seleccionar el 5è nivell"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Tecla(es) per a canviar la disposició"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Kikuyu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Corea, República de"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Kutenai (Ktunaxa)"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kurd, (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurd, aràbic-llatí"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurd, llatí Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kurd, llatí Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kirguizistan"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Laosià"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Teclat de portàtil Compaq (p.ex. Armada)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Teclat Internet de portàtil Compaq (p.ex. Presario)"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Portàtil eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Llatí"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Llatinoamericà"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Llatí Unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Llatí Unicode qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Llatí qwerty"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Llatí unicode"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Llatí unicode qwerty"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Llatí amb cometes angulars"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Letònia"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Commutació de disposició en la tecla de multiplicació/divisió"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Alt esquerra"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Alt esquerra (mentre està premuda)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Alt esquerra està intercanviada amb la tecla Win esquerra"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Ctrl esquerra"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Ctrl esquerra (a la primera disposició), Ctrl dreta (a la darrera disposició)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Ctrl esquerra + Maj esquerra"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Maj esquerra"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Win esquerra"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Win esquerra (a la primera disposició), Win/Menú dreta (a la darrera disposició)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Win esquerra (mentre està premuda)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win esquerra selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win esquerra selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Esquerrà"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Dvorak esquerrà"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Llegat"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Wang 724 llegat"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Tecla llegada amb coma"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Tecla llegada amb punt"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Lituània"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Teclat Logitech Access"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (opció alternativa)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (opció alternativa 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 amb tecles extres via G15daemon"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Teclat Logitech genèric"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Teclat Logitech Internet 350"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Teclat Logitech Internet"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Teclat Logitech Internet Navigator"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Teclat Logitech Media Elite"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Teclat Logitech Ultra-X Cordless Media Desktop"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Teclat Logitech Ultra-X"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Teclat Logitech diNovo Edge"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Teclat Logitech diNovo"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Teclat Logitech iTouch Cordless (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Teclat Logitech iTouch Internet Navigator SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Teclat Logitech iTouch Internet Navigator SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Baix sòrab"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "Baix sòrab (qwertz)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Macedònia"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (Internacional)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh antic"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, tecles mortes de Sun"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "Converteix Bloq Maj en un Retrocés addicional"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "Converteix Bloq Maj en un Ctrl addicional"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "Converteix Bloq Maj en un Esc addicional"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "Converteix Bloq Maj en un Hyper addicional"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "Converteix Bloq Maj en un Bloq Núm addicional"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "Converteix Bloq Maj en un Super addicional"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malaiàlam"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malaiàlam Lalitha"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Maldives"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Teclat maltès amb disposició US"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Teclat Memorex MX2500 EZ-Access"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Menú"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta s'assigna a la tecla Win esquerra"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta s'assigna a les tecles Win"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Teclat Microsoft Internet"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Suec"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Teclat Microsoft Natural Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Teclat Microsoft Natural Pro / Teclat Microsoft Internet Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Teclat Microsoft Natural Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Teclat Microsoft Natural Pro USB / Teclat Microsoft Internet Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Teclat Microsoft Office"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Teclat Microsoft Wireless Multimedia 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Opcions de compatibilitat diverses"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Mongòlia"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Marroc"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Multilingüe"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Multilingüe, primera part"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Multilingüe, segona part"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "Retrocés estil NICOLA-F"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo per a l'Esperanto"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo per als teclats EUA"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Països Baixos"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Fonètic nou"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Nigèria"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Caràcter d'espai sense salt al nivell quart"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Caràcter d'espai sense salt al nivell quart, i un caràcter d'espai fi sense salt al nivell sisè"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Caràcter d'espai sense salt al nivell quart, un caràcter d'espai fi sense salt al nivell sisè (via Ctrl+Maj)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell segon"
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell tercer"
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell tercer, i res al nivell quart"
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell tercer, i un caràcter d'espai fi sense salt al nivell quart"
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Saami del nord"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Saami del nord, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Noruega"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "Bloq Núm"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Comportament de la tecla de supressió del teclat numèric"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Les tecles del teclat numèric funcionen com al Mac"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Selecció de la disposició del teclat numèric"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC Paixtu"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC Uzbek del sud"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "Occità"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Teclat Ortek MCK-800 MM/Internet"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "Osset"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "Osset, tecles Win"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "Osset, llegat"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "Sèries PC-98xx"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Rutè Pannònic homofònic"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Paixtu"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Pausa"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Farsi, amb teclat farsi"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Fonètic"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Tecles Win fonètiques"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Polònia"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Politònic"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Dvorak de programador"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "ImprPant"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Alt dreta"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Alt dreta (mentre està premuda)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Alt dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Alt dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "La tecla Alt dreta mai selecciona el 3r nivell"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Alt dreta, Maj+Alt dreta és la Multi_Key"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Ctrl dreta"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Ctrl dreta (mentre està premuda)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Ctrl dreta com a Alt dreta"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Ctrl dreta+Maj dreta"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Maj dreta"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Win dreta"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Win dreta (mentre està premuda)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Dretà"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Dvorak dretà"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Romania"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Teclat romanès amb lletres alemanyes"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Teclat romanès amb lletres alemanyes, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Rússia"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Rus fonètic"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Rus fonètic Dvorak"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Rus fonètic, sense tecles mortes"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Rus amb Kazakh"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "Teclat SILVERCREST Multimedia Wireless"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "Bloq Despl"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Punt i coma al tercer nivell"
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Sèrbia"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Serbi"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Maj cancel·la Bloq Maj"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Maj no cancel·la Bloq Núm, en el seu lloc selecciona el 3r nivell"
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Maj amb el teclat numèric funciona com al MS Windows"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Maj+Bloq Maj"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "Senzill"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Sindhi"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Eslovàquia"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Eslovènia"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Sud-àfrica"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Uzbek del sud"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Espanya"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Tecles especials (Ctrl+Alt+&lt;tecla&gt;) gestionades en un servidor"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Estàndard"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Estàndard (ce trencada)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "Estàndard RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "Estàndard RSTU en una disposició russa"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Tecles mortes de Sun"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Teclat Super Power Multimedia"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Intercanvia Ctrl i Bloq Maj"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Intercanvia Esc i Bloq Maj"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Suècia"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Suïssa"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Síria"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Siri"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Siri fonètic"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Tadjikistan"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Tàmil"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Teclat Tàmil amb numerals"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Tàmil TAB Typewriter"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Tàmil TSCII Typewriter"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Tàmil Unicode"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Tanzània"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Tàtar"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Tailàndia"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Tibetà"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetà (amb nombres ASCII)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Tifinagh alternativa"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Tifinagh fonètic alternativa"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Tifinagh ampliada"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Tifinagh fonètic ampliada"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Tifinagh fonètica"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Variant titlla (~)"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "A la tecla corresponent en un teclat Dvorak."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "A la tecla corresponent en un teclat Qwerty."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Fonètic tradicional"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Teclat Trust Direct Access"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Teclat Trust Wireless Classic"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Turquia"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (mode 102/105:EU)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (mode 106:JP)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Màquina d'escriure"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Màquina d'escriure, llegat"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "Disposició UCW (només lletres accentuades)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "Dvorak EUA que permet CZ UCW"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Teclat US amb dígrafs bosnians"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "Teclat US amb lletres bosnianes"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "Teclat US amb dígrafs croats"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "Teclat US amb lletres croates"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "Teclat US amb lletres estonianes"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "Teclat US amb lletres italianes"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "Teclat US amb dígrafs lituans"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "Teclat US amb lletres eslovenes"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "EUA"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "Ucraïna"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Addicions Unicode (fletxes i operadors matemàtics)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Addicions Unicode (fletxes i operadors matemàtics). Els operadors matemàtics al nivell predeterminat"
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "Regne Unit"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdú, fonètic alternatiu"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Urdú, fonètic"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Urdú, tecles Win"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Usa dígrafs bosnians"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Usa dígrafs croats"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Usa cometes angulars per les cometes"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Usa el LED del teclat per a mostrar la disposició alternativa"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Usa la tecla d'espai per a introduir un caràcter d'espai sense salt"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Espai normal en qualsevol nivell"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "Teclat ViewSonic KU-306 Internet"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Teclat numèric Wang 724 amb addicions Unicode (fletxes i operadors matemàtics)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Teclat numèric Wang 724 amb addicions Unicode (fletxes i operadors matemàtics). Els operadors matemàtics en el nivell per defecte"
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Occidental"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Tecles Win"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "Amb la tecla &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "Amb el signe de l'euro al 5"
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "Amb cometes angulars"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Teclat Yahoo! Internet"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Iacut"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Ioruba"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "Z i ZHE intercanviades"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Caràcter separador d'amplada zero al nivell segon"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Caràcter separador d'amplada zero al nivell segon, i un caràcter d'espai sense salt al nivell tercer"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'espai sense salt al nivell tercer, i res al nivell quart"
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'espai sense salt al nivell tercer, i un caràcter d'espai fi sense salt al nivell quart"
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'espai sense salt al nivell tercer, i un enllaç d'amplada zero al nivell quart"
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'enllaç d'amplada zero al nivell tercer"
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'enllaç d'amplada zero al nivell tercer, i un caràcter d'espai sense salt al nivell quart"
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Caràcter separador d'amplada zero al nivell tercer, un enllaç d'amplada zero al nivell quart"
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "azerty/dígits"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "dígits"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "punt i coma i cometa desplaçats (obsolet)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, barra inversa ampliada"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "qwerty/dígits"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "Avestan"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Combinació d'accents en lloc de tecles mortes"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "Internacional (combinació Unicode AltGr)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Internacional (combinació Unicode AltGr, alternativa)"
-
-#~ msgid "CapsLock"
-#~ msgstr "BloqMaj"
-
-#~ msgid "ScrollLock"
-#~ msgstr "BloqDespl"
-
-#~ msgid "ACPI Standard"
-#~ msgstr "ACPI estàndard"
-
-#~ msgid "Bhu"
-#~ msgstr "Bhu"
-
-#~ msgid "DRC"
-#~ msgstr "DRC"
-
-#~ msgid "Dvorak international"
-#~ msgstr "Dvorak internacional"
-
-#~ msgid "Evdev-managed keyboard"
-#~ msgstr "Teclat gestionat per «evdev»"
-
-#~ msgid "Gre"
-#~ msgstr "Gre"
-
-#~ msgid "Gui"
-#~ msgstr "Gui"
-
-#~ msgid "Lav"
-#~ msgstr "Lav"
-
-#~ msgid "Nep"
-#~ msgstr "Nep"
-
-#~ msgid "SrL"
-#~ msgstr "SrL"
-
-#~ msgid "Baltic+"
-#~ msgstr "Baltic+"
-
-#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+# Translation of xkeyboard-config to Catalan
+# Copyright © 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+#
+# Josep Ma. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config-2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-13 00:20+0100\n"
+"Last-Translator: Josep Ma. Ferrer <txemaq@gmail.com>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Més petit/Més gran&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Més petit/Més gran&gt; selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Més petit/Més gran&gt; selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Llegat) Alternativa"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Llegat) Alternativa, tecles mortes de Sun"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Llegat) Alternativa, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "Compatible de 101/104 tecles"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/coma/tecles mortes"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/coma/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/punt/tecles mortes"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/punt/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/coma/tecles mortes"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/coma/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/punt/tecles mortes"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/punt/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/coma/tecles mortes"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/coma/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/punt/tecles mortes"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/punt/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/coma/tecles mortes"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/coma/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/punt/tecles mortes"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/punt/sense tecles mortes"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "Estil ATM/telèfon"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Portàtil Acer"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "Afegeix el comportament estàndard a la tecla Menú"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "S'afegeix el circumflex de l'esperanto (supersigno)"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "S'afegeix el signe de moneda a certes tecles"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Albània"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt i Meta són a les tecles Alt"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt s'assigna a la tecla Win dreta i Super a Menú"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Bloq Maj"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Maj"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Espai"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Comportament de la tecla Alt/Win"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Alternativa"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Oriental alternativa"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Fonètic alternativa"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Internacional alternativa"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Alternativa, Sun tecles mortes"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativa, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Alternativa, només latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Qualsevol tecla Alt"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Qualsevol tecla Win"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Qualsevol tecla Win (mentre estan premudes)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Variant amb apòstrof (')"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Teclat Apple Aluminium (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Teclat Apple Aluminium (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Teclat Apple Aluminium (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Teclat Apple Aluminium: emula les tecles del PC (Impr, Bloq Despl, Pausa, Bloq Núm)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Portàtil Apple"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Àrab"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Armènia"
+
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Variant asturiana amb H punt baix i L amb punt volat"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Portàtil Asus"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "A baix esquerra"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "A l'esquerra d'«A»"
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Àustria"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Azerbaitjan"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Teclat Azona RF2300 wireless Internet"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Barra inversa"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Baixkir"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Bielorússia"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Bèlgica"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Bengalí"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Bengalí Probhat"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonòmic, tipus Dvorak"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonòmic, tipus Dvorak, només latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Hebreu bíblic (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Bòsnia i Hercegovina"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "Les dues tecles Alt juntes"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "Les dues tecles Ctrl juntes"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "Les dues tecles Maj juntes"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Les dues tecles Maj juntes commuten Bloq Maj"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Brasil"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Bretó"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Teclat Brother Internet"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Bulgària"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Cambodja"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Canadà"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Capewell-Dvorak (Baybayin)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Capewell-Dvorak (Llatí)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Capewell-QWERF 2006 (Baybayin)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Capewell-QWERF 2006 (Llatí)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "Bloq Majús"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Bloq Maj (a la primera disposició), Maj+Bloq Maj (a la darrera disposició)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Bloq Maj (mentre està premuda), Alt+Bloq Maj efectua l'acció de Bloq Maj original"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Bloq Maj actua com a Maj amb bloqueig. Maj «pausa» Bloq Maj"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Bloq Maj actua com a Maj amb bloqueig. Maj no afecta a Bloq Maj"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "Bloq Maj està deshabilitat"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Comportament de la tecla Bloq Maj"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Bloq Maj commuta Maj, de manera que afecta a totes les tecles"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Bloq Maj commuta les majúscules normals dels caràcters alfabètics"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Bloq Maj usa internament les majúscules. Maj «pausa» Bloq Maj"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Bloq Maj usa internament les majúscules. Maj no afecta a Bloq Maj"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Variant catalana amb L amb punt volat"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Trencat"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (opció alternativa)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Teclat Chicony Internet"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "Xina"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Chuvash"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Chuvash llatí"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Clàssic"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Dvorak clàssic"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Clàssic, elimina les tecles mortes"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Colemak (Baybayin)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Colemak (Llatí)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Teclat Compaq Easy Access"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Teclat Compaq Internet (13 tecles)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Teclat Compaq Internet (18 tecles)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Teclat Compaq Internet (7 tecles)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Teclat Compaq iPaq"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "Posició de la tecla Compose"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Congo, República Democràtica del"
+
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Retrocés"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control s'assigna a les tecles Alt, Alt s'assigna a les tecles Win"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control s'assigna a les tecles Win (i a les tecles Ctrl habituals)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Tàtar de Crimea (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Tàtar de Crimea (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Tàtar de Crimea (Turc Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Tàtar de Crimea (Turc F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Tàtar de Crimea (Turc Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Croàcia"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Posició de la tecla Ctrl"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Maj"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Ciríl·lic"
+
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Ciríl·lic amb cometes angulars"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Ciríl·lic, Z i ZHE intercanviades"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Txèquia"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Accent mort"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Accent greu mort"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Tecles predeterminades del teclat numèric"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell PC 101 tecles"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Portàtil Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Portàtil Dell sèrie Precision M"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Portàtil Dell sèrie Latitude"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Teclat Dell USB Multimedia"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Teclat Dexxa Wireless Desktop"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond sèries 9801 / 9802"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Dvorak (Baybayin)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Dvorak (Llatí)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (Puntuació UK)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak internacional alternatiu (sense tecles mortes)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak internacional (amb tecles mortes)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, cometes poloneses a la tecla 1"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, cometes poloneses a la tecla cometes"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Oriental"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Elimina les tecles mortes"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Habilita els caràcters tipogràfics extres"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Anglès"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Anglès (Internacional EUA)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Anglès (Macintosh EUA)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Anglès amb signe de rupia"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Retorn en el teclat numèric"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonòmic"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Estònia"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Etiòpia"
+
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Euro en el 2"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Euro en el 4"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Euro en el 5"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Euro en la E "
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Ampliat"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Ampliat - Tecles Win"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Barra inversa estesa"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "Variant de lletra F (F)"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Illes Faroe"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Finlàndia"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Tecla de quatre nivells amb separadors abstractes"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Tecla de quatre nivells amb coma"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Tecla de quatre nivells amb punt"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Tecla de quatre nivells amb punt, restricció de latin-9"
+
+# Què collons és momayyez? jm
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Tecla de quatre nivells amb momayyez"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "França"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Francès (Alternatiu França)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Francès"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Francès (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Francès (llegat)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Francès Dvorak"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Francès, tecles mortes de Sun"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Francès, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO portàtil"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "PC genèric de 101 tecles"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "PC genèric de 102 tecles (intl)"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "PC genèric de 104 tecles"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "PC genèric de 105 tecles (intl)"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Teclat Genius MM KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Geòrgia"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Georgià"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Georgià AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Alemany (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Alemany, tecles mortes de Sun"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Alemany, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Alemanya"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Grècia"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Teclat Happy Hacking"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Teclat Happy Hacking per a Mac"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "Haussa"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Teclat Hewlett-Packard Internet"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Teclat Hewlett-Packard SK-250x Multimedia"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Hexadecimal"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Homofònic"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "Telèfon HTC Dream"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Hongria"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper s'assigna a les tecles Win"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "Alternativa ISO"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Islàndia"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Inclou la titlla morta"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "Índia"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "Internacional (tecles mortes AltGr)"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "Internacional (amb tecles mortes)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Iraq"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Itàlia"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Japó"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Japó (sèries PC-98xx)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Opcions del teclat japonès"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Calmuc"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kana 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "La tecla de bloqueig Kana està blocant"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Caixubi"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "Kazakh amb rus"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Kenya"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Seqüència de tecles per a matar el servidor X"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Tecla per a seleccionar el 3r nivell"
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Tecla per a seleccionar el 5è nivell"
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "Tecla(es) per a canviar la disposició"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Kikuyu"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Corea, República de"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Kutenai (Ktunaxa)"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Kurd, (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurd, aràbic-llatí"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurd, llatí Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Kurd, llatí Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Kirguizistan"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "Laosià"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Teclat de portàtil Compaq (p.ex. Armada)"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Teclat Internet de portàtil Compaq (p.ex. Presario)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Portàtil eMachines m68xx"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Llatí"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Llatinoamericà"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Llatí Unicode"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Llatí Unicode qwerty"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Llatí qwerty"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Llatí unicode"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Llatí unicode qwerty"
+
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Llatí amb cometes angulars"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Letònia"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Commutació de disposició en la tecla de multiplicació/divisió"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Alt esquerra"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Alt esquerra (mentre està premuda)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "Alt esquerra està intercanviada amb la tecla Win esquerra"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Ctrl esquerra"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Ctrl esquerra (a la primera disposició), Ctrl dreta (a la darrera disposició)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Ctrl esquerra + Maj esquerra"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Maj esquerra"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Win esquerra"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Win esquerra (a la primera disposició), Win/Menú dreta (a la darrera disposició)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Win esquerra (mentre està premuda)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win esquerra selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win esquerra selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Esquerrà"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Dvorak esquerrà"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Llegat"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Wang 724 llegat"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Tecla llegada amb coma"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Tecla llegada amb punt"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Lituània"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Teclat Logitech Access"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (opció alternativa)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (opció alternativa 2)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 amb tecles extres via G15daemon"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Teclat Logitech genèric"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Teclat Logitech Internet 350"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Teclat Logitech Internet"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Teclat Logitech Internet Navigator"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Teclat Logitech Media Elite"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Teclat Logitech Ultra-X Cordless Media Desktop"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Teclat Logitech Ultra-X"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Teclat Logitech diNovo Edge"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Teclat Logitech diNovo"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Teclat Logitech iTouch Cordless (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Teclat Logitech iTouch Internet Navigator SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Teclat Logitech iTouch Internet Navigator SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Baix sòrab"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Baix sòrab (qwertz)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Macedònia"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (Internacional)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Macintosh antic"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, tecles mortes de Sun"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Converteix Bloq Maj en un Retrocés addicional"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Converteix Bloq Maj en un Ctrl addicional"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "Converteix Bloq Maj en un Esc addicional"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Converteix Bloq Maj en un Hyper addicional"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Converteix Bloq Maj en un Bloq Núm addicional"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "Converteix Bloq Maj en un Super addicional"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Malaiàlam"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Malaiàlam Lalitha"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Maldives"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Teclat maltès amb disposició US"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Mari"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Teclat Memorex MX2500 EZ-Access"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menú"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "Meta s'assigna a la tecla Win esquerra"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "Meta s'assigna a les tecles Win"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta en el Ctrl esquerre"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Teclat Microsoft Internet"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Suec"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Teclat Microsoft Natural Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Teclat Microsoft Natural Pro / Teclat Microsoft Internet Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Teclat Microsoft Natural Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Teclat Microsoft Natural Pro USB / Teclat Microsoft Internet Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Teclat Microsoft Office"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Teclat Microsoft Wireless Multimedia 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Opcions de compatibilitat diverses"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Mongòlia"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Marroc"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Multilingüe"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Multilingüe, primera part"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Multilingüe, segona part"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "Retrocés estil NICOLA-F"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Nativo per a l'Esperanto"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Nativo per als teclats EUA"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Països Baixos"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Fonètic nou"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Nigèria"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Caràcter d'espai sense salt al nivell quart"
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Caràcter d'espai sense salt al nivell quart, i un caràcter d'espai fi sense salt al nivell sisè"
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Caràcter d'espai sense salt al nivell quart, un caràcter d'espai fi sense salt al nivell sisè (via Ctrl+Maj)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell segon"
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell tercer"
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell tercer, i res al nivell quart"
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "La tecla d'espai produeix un caràcter d'espai sense salt al nivell tercer, i un caràcter d'espai fi sense salt al nivell quart"
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Saami del nord"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Saami del nord, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Noruega"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "Bloq Núm"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Comportament de la tecla de supressió del teclat numèric"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Les tecles del teclat numèric funcionen com al Mac"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Selecció de la disposició del teclat numèric"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC Paixtu"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC Uzbek del sud"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Occità"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Teclat Ortek MCK-800 MM/Internet"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Osset"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Osset, tecles Win"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Osset, llegat"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "Sèries PC-98xx"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Rutè Pannònic homofònic"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Paixtu"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pausa"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Farsi, amb teclat farsi"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "Phi"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Filipines"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Fonètic"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Tecles Win fonètiques"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Polònia"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Politònic"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Dvorak de programador"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "ImprPant"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (Baybayin)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Alt dreta"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Alt dreta (mentre està premuda)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Alt dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Alt dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "La tecla Alt dreta mai selecciona el 3r nivell"
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Alt dreta, Maj+Alt dreta és la Multi_Key"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Ctrl dreta"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Ctrl dreta (mentre està premuda)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Ctrl dreta com a Alt dreta"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Ctrl dreta+Maj dreta"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Maj dreta"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Win dreta"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Win dreta (mentre està premuda)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win dreta selecciona el nivell 5è, bloqueja en prémer conjuntament amb un altre selector de nivell 5è, una pulsació allibera el bloqueig"
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Dretà"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Dvorak dretà"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Romania"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Teclat romanès amb lletres alemanyes"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Teclat romanès amb lletres alemanyes, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Rupia en el 2"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Rússia"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Rus fonètic"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Rus fonètic Dvorak"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Rus fonètic, sense tecles mortes"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "Rus amb Kazakh"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "Teclat SILVERCREST Multimedia Wireless"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "Bloq Despl"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Punt i coma al tercer nivell"
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Sèrbia"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Serbi"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Serbocroat"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Maj cancel·la Bloq Maj"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Maj no cancel·la Bloq Núm, en el seu lloc selecciona el 3r nivell"
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Maj amb el teclat numèric funciona com al MS Windows"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Maj+Bloq Maj"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Senzill"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Eslovàquia"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Eslovènia"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Sud-àfrica"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "Uzbek del sud"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Espanya"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Tecles especials (Ctrl+Alt+&lt;tecla&gt;) gestionades en un servidor"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Estàndard"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Estàndard (ce trencada)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Estàndard RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Estàndard RSTU en una disposició russa"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Tecles mortes de Sun"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Teclat Super Power Multimedia"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Intercanvia Ctrl i Bloq Maj"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Intercanvia Esc i Bloq Maj"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Suècia"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Suïssa"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Síria"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Siri"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Siri fonètic"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Tadjikistan"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Tàmil"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Teclat Tàmil amb numerals"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Tàmil TAB Typewriter"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Tàmil TSCII Typewriter"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Tàmil Unicode"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Tanzània"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "Tàtar"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Tailàndia"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Tibetà"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetà (amb nombres ASCII)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Tifinagh alternativa"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Tifinagh fonètic alternativa"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Tifinagh ampliada"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh fonètic ampliada"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh fonètica"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Variant titlla (~)"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "A la tecla corresponent en un teclat Dvorak."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "A la tecla corresponent en un teclat Qwerty."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Commuta les tecles de cursor amb Maj + BloqNum."
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Fonètic tradicional"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Teclat Trust Direct Access"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Teclat Trust Wireless Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Turquia"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (mode 102/105:EU)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (mode 106:JP)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Màquina d'escriure"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Màquina d'escriure, llegat"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "Disposició UCW (només lletres accentuades)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "Dvorak EUA que permet CZ UCW"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Teclat US amb dígrafs bosnians"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "Teclat US amb lletres bosnianes"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "Teclat US amb dígrafs croats"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "Teclat US amb lletres croates"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "Teclat US amb lletres estonianes"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "Teclat US amb lletres italianes"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "Teclat US amb dígrafs lituans"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "Teclat US amb lletres eslovenes"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "EUA"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Udmurt"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Ucraïna"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Addicions Unicode (fletxes i operadors matemàtics)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Addicions Unicode (fletxes i operadors matemàtics). Els operadors matemàtics al nivell predeterminat"
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "Regne Unit"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdú, fonètic alternatiu"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Urdú, fonètic"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Urdú, tecles Win"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Usa dígrafs bosnians"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Usa dígrafs croats"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "Usa cometes angulars per les cometes"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Usa el LED del teclat per a mostrar la disposició alternativa"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "Usa la tecla d'espai per a introduir un caràcter d'espai sense salt"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Espai normal en qualsevol nivell"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "Teclat ViewSonic KU-306 Internet"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Teclat numèric Wang 724 amb addicions Unicode (fletxes i operadors matemàtics)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Teclat numèric Wang 724 amb addicions Unicode (fletxes i operadors matemàtics). Els operadors matemàtics en el nivell per defecte"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Occidental"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Tecles Win"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "Amb la tecla &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "Amb el signe de l'euro al 5"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "Amb cometes angulars"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Teclat Yahoo! Internet"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "Iacut"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Ioruba"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "Z i ZHE intercanviades"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Caràcter separador d'amplada zero al nivell segon"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Caràcter separador d'amplada zero al nivell segon, i un caràcter d'espai sense salt al nivell tercer"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'espai sense salt al nivell tercer, i res al nivell quart"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'espai sense salt al nivell tercer, i un caràcter d'espai fi sense salt al nivell quart"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'espai sense salt al nivell tercer, i un enllaç d'amplada zero al nivell quart"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'enllaç d'amplada zero al nivell tercer"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Caràcter separador d'amplada zero al nivell segon, un caràcter d'enllaç d'amplada zero al nivell tercer, i un caràcter d'espai sense salt al nivell quart"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Caràcter separador d'amplada zero al nivell tercer, un enllaç d'amplada zero al nivell quart"
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "azerty/dígits"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "dígits"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "punt i coma i cometa desplaçats (obsolet)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, barra inversa ampliada"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "qwerty/dígits"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avestan"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Combinació d'accents en lloc de tecles mortes"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Internacional (combinació Unicode AltGr)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Internacional (combinació Unicode AltGr, alternativa)"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "5"
+#~ msgstr "5"
+
+#~ msgid "E"
+#~ msgstr "E"
+
+#~ msgid "LAm"
+#~ msgstr "LAm"
+
+#~ msgid "CapsLock"
+#~ msgstr "BloqMaj"
+
+#~ msgid "ScrollLock"
+#~ msgstr "BloqDespl"
+
+#~ msgid "ACPI Standard"
+#~ msgstr "ACPI estàndard"
+
+#~ msgid "Bhu"
+#~ msgstr "Bhu"
+
+#~ msgid "DRC"
+#~ msgstr "DRC"
+
+#~ msgid "Dvorak international"
+#~ msgstr "Dvorak internacional"
+
+#~ msgid "Evdev-managed keyboard"
+#~ msgstr "Teclat gestionat per «evdev»"
+
+#~ msgid "Gre"
+#~ msgstr "Gre"
+
+#~ msgid "Gui"
+#~ msgstr "Gui"
+
+#~ msgid "Lav"
+#~ msgstr "Lav"
+
+#~ msgid "Nep"
+#~ msgstr "Nep"
+
+#~ msgid "SrL"
+#~ msgstr "SrL"
+
+#~ msgid "Baltic+"
+#~ msgstr "Baltic+"
+
+#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
diff --git a/xorg-server/xkeyboard-config/po/cs.po b/xorg-server/xkeyboard-config/po/cs.po
index c3b666abc..4d9769b87 100644
--- a/xorg-server/xkeyboard-config/po/cs.po
+++ b/xorg-server/xkeyboard-config/po/cs.po
@@ -1,2998 +1,3099 @@
-# Translation of xkeyboard-config to Czech.
-# Copyright (C) 2007, 2008, 2009, 2010 the author(s) of xkeyboard-config.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Michal Bukovjan <bukm@centrum.cz>, 2003.
-# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config-1.9\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-05-11 21:34+0100\n"
-"PO-Revision-Date: 2010-07-11 19:44+0200\n"
-"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
-"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Menší než/větší než&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Menší než/Větší než&gt; vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Menší než/Větší než&gt; vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Zděděné) alternativní"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Zděděné) alternativní, mrtvé klávesy Sun"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Zděděné) alternativní, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "101/104klávesové, kompatibilní"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/čárka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/čárka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/tečka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/tečka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/čárka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/čárka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/tečka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/tečka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/čárka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/čárka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/tečka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/tečka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/čárka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/čárka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/tečka/mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/tečka/vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "ATM/telefonní typ"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Acer Laptop"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Přidá standardní chování ke klávese Menu"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Přidává průtažný přízvuk v esperantu (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Přidává znak eura k určitým klávesám"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "AFG"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afghánistán"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "ALB"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albánie"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt a Meta na klávesách Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt je přiřazena k pravé klávese Win a Super k Menu"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+CapsLock"
-msgstr "Alt+Caps Lock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Mezerník"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Chování klávesy Alt/Win"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternativní"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternativní východní"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternativní fonetické"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternativní mezinárodní"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternativní, mrtvé klávesy Sun"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativní, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternativní, pouze Latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "AND"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Libovolná klávesa Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Libovolná klávesa Win"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Libovolná klávesa Win (při stisknutí)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Varianta s apostrofem (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Apple Aluminium Keyboard (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Apple Aluminium Keyboard (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Apple Aluminium Keyboard (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll_Lock, Pause, NumLock)"
-msgstr "Apple Aluminium Keyboard: emulovat klávesy PC (Print, Scroll_Lock, Pause, NumLock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Apple Laptop"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "ARA"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Arabské"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "ARM"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Arménie"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Asturská varianta s H s tečkou pod a L s tečkou pod"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Asus Laptop"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Vlevo dole"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Nalevo od \"A\""
-
-#: ../rules/base.xml.in.h:80
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aze"
-msgstr "AZE"
-
-#: ../rules/base.xml.in.h:82
-msgid "Azerbaijan"
-msgstr "Ázerbájdžán"
-
-#: ../rules/base.xml.in.h:83
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 Internet Keyboard, bezdrátová"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:93
-msgid "Backslash"
-msgstr "Zpětné lomítko"
-
-#: ../rules/base.xml.in.h:94
-msgid "Bangladesh"
-msgstr "Bangladéš"
-
-#: ../rules/base.xml.in.h:95
-msgid "Bashkirian"
-msgstr "Baškirské"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bel"
-msgstr "BEL"
-
-#: ../rules/base.xml.in.h:97
-msgid "Belarus"
-msgstr "Bělorusko"
-
-#: ../rules/base.xml.in.h:98
-msgid "Belgium"
-msgstr "Belgie"
-
-#: ../rules/base.xml.in.h:99
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:100
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:102
-msgid "Bengali"
-msgstr "Bengálské"
-
-#: ../rules/base.xml.in.h:103
-msgid "Bengali Probhat"
-msgstr "Bengálské Probhat"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomické, typ Dvorak"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomické, typ Dvorak, pouze Latin-9"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bgd"
-msgstr "BGD"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bgr"
-msgstr "BGR"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bhutan"
-msgstr "Bhútán"
-
-#: ../rules/base.xml.in.h:109
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Biblická hebrejština (Tiro)"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bih"
-msgstr "BIH"
-
-#: ../rules/base.xml.in.h:111
-msgid "Blr"
-msgstr "BLR"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna a Hercegovina"
-
-#: ../rules/base.xml.in.h:113
-msgid "Both Alt keys together"
-msgstr "Obě klávesy Alt dohromady"
-
-#: ../rules/base.xml.in.h:114
-msgid "Both Ctrl keys together"
-msgstr "Obě klávesy Ctrl dohromady"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Shift keys together"
-msgstr "Obě klávesy Shift dohromady"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Shift-Keys together toggle CapsLock"
-msgstr "Obě klávesy Shift dohromady přepnou Caps Lock"
-
-#: ../rules/base.xml.in.h:117
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:118
-msgid "Bra"
-msgstr "BRA"
-
-#: ../rules/base.xml.in.h:119
-msgid "Braille"
-msgstr "Braillovo písmo"
-
-#: ../rules/base.xml.in.h:120
-msgid "Brazil"
-msgstr "Brazílie"
-
-#: ../rules/base.xml.in.h:121
-msgid "Breton"
-msgstr "Bretonské"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brl"
-msgstr "BRL"
-
-#: ../rules/base.xml.in.h:123
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:124
-msgid "Btn"
-msgstr "BTN"
-
-#: ../rules/base.xml.in.h:125
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:126
-msgid "Bulgaria"
-msgstr "Bulharsko"
-
-#: ../rules/base.xml.in.h:127
-msgid "Bwa"
-msgstr "BWA"
-
-#: ../rules/base.xml.in.h:128
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:129
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:130
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#: ../rules/base.xml.in.h:131
-msgid "Can"
-msgstr "CAN"
-
-#: ../rules/base.xml.in.h:132
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:133
-msgid "CapsLock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:134
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr "Caps Lock (na první rozložení), Shift+Caps Lock (na poslední rozložení)"
-
-#: ../rules/base.xml.in.h:135
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr "Caps Lock (při stisknutí), Alt+Caps Lock provádí původní akci Caps Lock"
-
-#: ../rules/base.xml.in.h:136
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr "Caps Lock funguje jako Shift s uzamčením. Shift přerušuje Caps Lock."
-
-#: ../rules/base.xml.in.h:137
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "Caps Lock funguje jako Shift s uzamčením. Shift neovlivňuje Caps Lock."
-
-#: ../rules/base.xml.in.h:138
-msgid "CapsLock is disabled"
-msgstr "Klávesa Caps Lock je vypnuta"
-
-#: ../rules/base.xml.in.h:139
-msgid "CapsLock key behavior"
-msgstr "Chování klávesy Caps Lock"
-
-#: ../rules/base.xml.in.h:140
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr "Caps Lock přepne Shift, takže budou dotčeny všechny klávesy"
-
-#: ../rules/base.xml.in.h:141
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr "Caps Lock přepne běžný převod abecedních znaků na verzálky"
-
-#: ../rules/base.xml.in.h:142
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "Caps Lock používá vnitřní převod na verzálky. Shift přerušuje Caps Lock."
-
-#: ../rules/base.xml.in.h:143
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "Caps Lock používá vnitřní převod na verzálky. Shift neovlivňuje Caps Lock."
-
-#: ../rules/base.xml.in.h:144
-msgid "Catalan variant with middle-dot L"
-msgstr "Katalánská varianta s ela geminada"
-
-#: ../rules/base.xml.in.h:145
-msgid "Cedilla"
-msgstr "Cédille"
-
-#: ../rules/base.xml.in.h:146
-msgid "Che"
-msgstr "CHE"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cherokee"
-msgstr "Čerokí"
-
-#: ../rules/base.xml.in.h:148
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternativní volba)"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:155
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:156
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:159
-msgid "China"
-msgstr "Čína"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chn"
-msgstr "CHN"
-
-#: ../rules/base.xml.in.h:161
-msgid "Chuvash"
-msgstr "Čuvašské"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chuvash Latin"
-msgstr "Čuvašské latinské"
-
-#: ../rules/base.xml.in.h:163
-msgid "Classic"
-msgstr "Klasické"
-
-#: ../rules/base.xml.in.h:164
-msgid "Classic Dvorak"
-msgstr "Klasické Dvorak"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic, eliminate dead keys"
-msgstr "Klasické, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:167
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:168
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:169
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:170
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 kláves)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 kláves)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 kláves)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compose key position"
-msgstr "Umístění klávesy Compose"
-
-#: ../rules/base.xml.in.h:175
-msgid "Congo, Democratic Republic of the"
-msgstr "Konžská demokratická republika"
-
-#: ../rules/base.xml.in.h:176
-msgid "Control + Alt + Backspace"
-msgstr "Ctrl + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:177
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Ctrl je přiřazena ke klávesám Alt, Alt je přiřazena ke klávesám Win"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Ctrl je přiřazena ke klávesám Win (a obvyklým klávesám Ctrl)"
-
-#: ../rules/base.xml.in.h:179
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:180
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Krymskotatarské (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Krymskotatarské (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Krymskotatarské (turecké Alt-Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Krymskotatarské (turecké F)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Krymskotatarské (turecké Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Croatia"
-msgstr "Chorvatsko"
-
-#: ../rules/base.xml.in.h:186
-msgid "Ctrl key position"
-msgstr "Umístění klávesy Ctrl"
-
-#: ../rules/base.xml.in.h:187
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:188
-msgid "Cyrillic"
-msgstr "Cyrilice"
-
-#: ../rules/base.xml.in.h:189
-msgid "Cyrillic with guillemets"
-msgstr "Cyrilice s francouzskými uvozovkami"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Cyrilice, prohozené Z a Ž"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cze"
-msgstr "CZE"
-
-#: ../rules/base.xml.in.h:192
-msgid "Czechia"
-msgstr "Česko"
-
-#: ../rules/base.xml.in.h:193
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:194
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dead acute"
-msgstr "Mrtvá čárka"
-
-#: ../rules/base.xml.in.h:196
-msgid "Dead grave acute"
-msgstr "Mrtvá opačná čárka (gravis)"
-
-#: ../rules/base.xml.in.h:197
-msgid "Default numeric keypad keys"
-msgstr "Výchozí numerická klávesnice"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:199
-msgid "Dell 101-key PC"
-msgstr "Dell PC 101klávesové"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Notebook Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Notebook Dell řady Precision M"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Latitude series laptop"
-msgstr "Notebook řady Dell Latitude"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:207
-msgid "Denmark"
-msgstr "Dánsko"
-
-#: ../rules/base.xml.in.h:208
-msgid "Deu"
-msgstr "DEU"
-
-#: ../rules/base.xml.in.h:209
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:210
-msgid "Diamond 9801 / 9802 series"
-msgstr "Řada Diamond 9801 / 9802"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dnk"
-msgstr "DNK"
-
-#: ../rules/base.xml.in.h:212
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (britská interpunkce)"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Alternativní mezinárodní Dvorak (bez mrtvých kláves)"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak international (with dead keys)"
-msgstr "Mezinárodní Dvorak (s mrtvými klávesami)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, polské uvozovky na klávese 1"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, polské uvozovky na klávese uvozovky"
-
-#: ../rules/base.xml.in.h:218
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:219
-msgid "Eastern"
-msgstr "Východní"
-
-#: ../rules/base.xml.in.h:220
-msgid "Eliminate dead keys"
-msgstr "Vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:221
-msgid "Enable extra typographic characters"
-msgstr "Povolit přídavné znaky hladké sazby"
-
-#: ../rules/base.xml.in.h:222
-msgid "English"
-msgstr "Anglické"
-
-#: ../rules/base.xml.in.h:223
-msgid "English (USA International)"
-msgstr "Anglické (americké mezinárodní)"
-
-#: ../rules/base.xml.in.h:224
-msgid "English (USA Macintosh)"
-msgstr "Anglické (americké Macintosh)"
-
-#: ../rules/base.xml.in.h:225
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:226
-msgid "Enter on keypad"
-msgstr "Enter na numerické klávesnici"
-
-#: ../rules/base.xml.in.h:227
-msgid "Epo"
-msgstr "EPO"
-
-#: ../rules/base.xml.in.h:228
-msgid "Ergonomic"
-msgstr "Ergonomické"
-
-#: ../rules/base.xml.in.h:229
-msgid "Esp"
-msgstr "ESP"
-
-#: ../rules/base.xml.in.h:230
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:231
-msgid "Est"
-msgstr "EST"
-
-#: ../rules/base.xml.in.h:232
-msgid "Estonia"
-msgstr "Estonsko"
-
-#: ../rules/base.xml.in.h:233
-msgid "Eth"
-msgstr "ETH"
-
-#: ../rules/base.xml.in.h:234
-msgid "Ethiopia"
-msgstr "Etiopie"
-
-#: ../rules/base.xml.in.h:235
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:237
-msgid "Extended"
-msgstr "Rozšířené"
-
-#: ../rules/base.xml.in.h:238
-msgid "Extended - Winkeys"
-msgstr "Rozšířené - klávesy Win"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended Backslash"
-msgstr "Rozšířená klávesa zpětného lomítka"
-
-#: ../rules/base.xml.in.h:240
-msgid "F-letter (F) variant"
-msgstr "Varianta se znakem F"
-
-#: ../rules/base.xml.in.h:241
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:242
-msgid "Faroe Islands"
-msgstr "Faerské ostrovy"
-
-#: ../rules/base.xml.in.h:243
-msgid "Fin"
-msgstr "FIN"
-
-#: ../rules/base.xml.in.h:244
-msgid "Finland"
-msgstr "Finsko"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:247
-msgid "Four-level key with abstract separators"
-msgstr "Klávesa čtvrté úrovně s abstraktními oddělovači"
-
-#: ../rules/base.xml.in.h:248
-msgid "Four-level key with comma"
-msgstr "Klávesa čtvrté úrovně s čárkou"
-
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with dot"
-msgstr "Klávesa čtvrté úrovně s tečkou"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Klávesa čtvrté úrovně s tečkou, omezení Latin-9"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with momayyez"
-msgstr "Klávesa čtvrté úrovně se znakem momajjez"
-
-#: ../rules/base.xml.in.h:252
-msgid "Fra"
-msgstr "FRA"
-
-#: ../rules/base.xml.in.h:253
-msgid "France"
-msgstr "Francie"
-
-#: ../rules/base.xml.in.h:254
-msgid "Français (France Alternative)"
-msgstr "Français (francouzské alternativní)"
-
-#: ../rules/base.xml.in.h:255
-msgid "French"
-msgstr "Francouzské"
-
-#: ../rules/base.xml.in.h:256
-msgid "French (Macintosh)"
-msgstr "Francouzské (Macintosh)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French (legacy)"
-msgstr "Francouzské (zděděné)"
-
-#: ../rules/base.xml.in.h:258
-msgid "French Dvorak"
-msgstr "Francouzské Dvorak"
-
-#: ../rules/base.xml.in.h:259
-msgid "French, Sun dead keys"
-msgstr "Francouzské, mrtvé klávesy Sun"
-
-#: ../rules/base.xml.in.h:260
-msgid "French, eliminate dead keys"
-msgstr "Francouzské, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:261
-msgid "Fro"
-msgstr "FRO"
-
-#: ../rules/base.xml.in.h:262
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Notebook Fujitsu-Siemens Computers AMILO"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:264
-msgid "GBr"
-msgstr "GBR"
-
-#: ../rules/base.xml.in.h:265
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:266
-msgid "Ga"
-msgstr "GA"
-
-#: ../rules/base.xml.in.h:267
-msgid "Generic 101-key PC"
-msgstr "Obecné PC 101klávesové"
-
-#: ../rules/base.xml.in.h:268
-msgid "Generic 102-key (Intl) PC"
-msgstr "Obecné PC 102klávesové (mez.)"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 104-key PC"
-msgstr "Obecné PC 104klávesové"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 105-key (Intl) PC"
-msgstr "Obecné PC 105klávesové (mez.)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:272
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:276
-msgid "Geo"
-msgstr "GEO"
-
-#: ../rules/base.xml.in.h:277
-msgid "Georgia"
-msgstr "Gruzie"
-
-#: ../rules/base.xml.in.h:278
-msgid "Georgian"
-msgstr "Gruzínské"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgian AZERTY Tskapo"
-msgstr "Gruzínské AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:280
-msgid "German (Macintosh)"
-msgstr "Německé (Macintosh)"
-
-#: ../rules/base.xml.in.h:281
-msgid "German, Sun dead keys"
-msgstr "Německé, mrtvé klávesy Sun"
-
-#: ../rules/base.xml.in.h:282
-msgid "German, eliminate dead keys"
-msgstr "Německé, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:283
-msgid "Germany"
-msgstr "Německo"
-
-#: ../rules/base.xml.in.h:284
-msgid "Gha"
-msgstr "GHA"
-
-#: ../rules/base.xml.in.h:285
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gin"
-msgstr "GIN"
-
-#: ../rules/base.xml.in.h:287
-msgid "Grc"
-msgstr "GRC"
-
-#: ../rules/base.xml.in.h:288
-msgid "Greece"
-msgstr "Řecko"
-
-#: ../rules/base.xml.in.h:289
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:290
-msgid "Gujarati"
-msgstr "Gudžarátské"
-
-#: ../rules/base.xml.in.h:291
-msgid "Gurmukhi"
-msgstr "Gurmuchské"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmuchské (Jhelum)"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:294
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Keyboard"
-
-#: ../rules/base.xml.in.h:295
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking Keyboard for Mac"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hausa"
-msgstr "Hausa"
-
-#: ../rules/base.xml.in.h:297
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hexadecimal"
-msgstr "Hexadecimální"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hindi Bolnagri"
-msgstr "Hindské bolnagri"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hindi Wx"
-msgstr "Hindské Wx"
-
-#: ../rules/base.xml.in.h:312
-msgid "Homophonic"
-msgstr "Stejně znějící"
-
-#: ../rules/base.xml.in.h:313
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:314
-msgid "Hrv"
-msgstr "HRV"
-
-#: ../rules/base.xml.in.h:315
-msgid "Hun"
-msgstr "HUN"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hungary"
-msgstr "Maďarsko"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper je přiřazena ke klávesám Win"
-
-#: ../rules/base.xml.in.h:318
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:319
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:325
-msgid "ISO Alternate"
-msgstr "ISO alternativní"
-
-#: ../rules/base.xml.in.h:326
-msgid "Iceland"
-msgstr "Island"
-
-#: ../rules/base.xml.in.h:327
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:328
-msgid "Include dead tilde"
-msgstr "Zahrnout mrtvou klávesu vlnovky"
-
-#: ../rules/base.xml.in.h:329
-msgid "Ind"
-msgstr "IND"
-
-#: ../rules/base.xml.in.h:330
-msgid "India"
-msgstr "Indie"
-
-#: ../rules/base.xml.in.h:331
-msgid "International (AltGr dead keys)"
-msgstr "Mezinárodní (mrtvé klávesy AltGr)"
-
-#: ../rules/base.xml.in.h:332
-msgid "International (with dead keys)"
-msgstr "Mezinárodní (s mrtvými klávesami)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:334
-msgid "Iran"
-msgstr "Írán"
-
-#: ../rules/base.xml.in.h:335
-msgid "Iraq"
-msgstr "Irák"
-
-#: ../rules/base.xml.in.h:336
-msgid "Ireland"
-msgstr "Irsko"
-
-#: ../rules/base.xml.in.h:337
-msgid "Irl"
-msgstr "IRL"
-
-#: ../rules/base.xml.in.h:338
-msgid "Irn"
-msgstr "IRN"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irq"
-msgstr "IRQ"
-
-#: ../rules/base.xml.in.h:340
-msgid "Isl"
-msgstr "ISL"
-
-#: ../rules/base.xml.in.h:341
-msgid "Isr"
-msgstr "ISR"
-
-#: ../rules/base.xml.in.h:342
-msgid "Israel"
-msgstr "Izrael"
-
-#: ../rules/base.xml.in.h:343
-msgid "Ita"
-msgstr "ITA"
-
-#: ../rules/base.xml.in.h:344
-msgid "Italy"
-msgstr "Itálie"
-
-#: ../rules/base.xml.in.h:345
-msgid "Japan"
-msgstr "Japonsko"
-
-#: ../rules/base.xml.in.h:346
-msgid "Japan (PC-98xx Series)"
-msgstr "Japonsko (řada PC-98xx)"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japanese keyboard options"
-msgstr "Volby japonské klávesnice"
-
-#: ../rules/base.xml.in.h:348
-msgid "Jpn"
-msgstr "JPN"
-
-#: ../rules/base.xml.in.h:349
-msgid "Kalmyk"
-msgstr "Kalmycké"
-
-#: ../rules/base.xml.in.h:350
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kana Lock key is locking"
-msgstr "Klávesa Kana Lock uzamyká"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kannada"
-msgstr "Kannadské"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kashubian"
-msgstr "Kašubské"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kaz"
-msgstr "KAZ"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kazakh with Russian"
-msgstr "Kazašská s ruštinou"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kazakhstan"
-msgstr "Kazachstán"
-
-#: ../rules/base.xml.in.h:357
-msgid "Ken"
-msgstr "KEN"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kenya"
-msgstr "Keňa"
-
-#: ../rules/base.xml.in.h:359
-msgid "Key sequence to kill the X server"
-msgstr "Pořadí kláves zabíjející server X"
-
-#: ../rules/base.xml.in.h:360
-msgid "Key to choose 3rd level"
-msgstr "Klávesa umožňující výběr 3. úrovně"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key to choose 5th level"
-msgstr "Klávesa umožňující výběr 5. úrovně"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key(s) to change layout"
-msgstr "Klávesa měnící rozložení"
-
-#: ../rules/base.xml.in.h:363
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Kgz"
-msgstr "KGZ"
-
-#: ../rules/base.xml.in.h:365
-msgid "Khm"
-msgstr "KHM"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kikuyu"
-msgstr "Kukujské"
-
-#: ../rules/base.xml.in.h:367
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kor"
-msgstr "KOR"
-
-#: ../rules/base.xml.in.h:369
-msgid "Korea, Republic of"
-msgstr "Korejská republika"
-
-#: ../rules/base.xml.in.h:370
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kurdish, (F)"
-msgstr "Kurdské, (F)"
-
-#: ../rules/base.xml.in.h:372
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdské, arabsko-latinské"
-
-#: ../rules/base.xml.in.h:373
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdské, latinské Alt-Q"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, Latin Q"
-msgstr "Kurdské, latinské Q"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstán"
-
-#: ../rules/base.xml.in.h:376
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:377
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:378
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:379
-msgid "Lao"
-msgstr "LAO"
-
-#: ../rules/base.xml.in.h:380
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:381
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop Keyboard pro notebook Compaq (např. Armada)"
-
-#: ../rules/base.xml.in.h:382
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Internet Keyboard pro notebook Compaq (např. Presario)"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:384
-msgid "Latin"
-msgstr "Latinské"
-
-#: ../rules/base.xml.in.h:385
-msgid "Latin American"
-msgstr "Latinskoamerické"
-
-#: ../rules/base.xml.in.h:386
-msgid "Latin Unicode"
-msgstr "Latinské Unicode"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin Unicode qwerty"
-msgstr "Latinské Unicode qwerty"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin qwerty"
-msgstr "Latinské qwerty"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin unicode"
-msgstr "Latinské Unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin unicode qwerty"
-msgstr "Latinské Unicode qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin with guillemets"
-msgstr "Latinské s francouzskými uvozovkami"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latvia"
-msgstr "Lotyšsko"
-
-#: ../rules/base.xml.in.h:393
-msgid "Layout toggle on multiply/divide key"
-msgstr "Přepínání rozložení klávesou násobení/dělení"
-
-#: ../rules/base.xml.in.h:394
-msgid "Left Alt"
-msgstr "Levá klávesa Alt"
-
-#: ../rules/base.xml.in.h:395
-msgid "Left Alt (while pressed)"
-msgstr "Levá klávesa Alt (při stisknutí)"
-
-#: ../rules/base.xml.in.h:396
-msgid "Left Alt is swapped with Left Win"
-msgstr "Levá klávesa Alt je prohozena s levou klávesou Win"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Ctrl"
-msgstr "Levá klávesa Ctrl"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Levá klávesa Ctrl (na první rozložení), pravá klávesa Ctrl (na poslední rozložení)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Ctrl+Left Shift"
-msgstr "Levá klávesa Ctrl + levá klávesa Shift"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Shift"
-msgstr "Levá klávesa Shift"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Win"
-msgstr "Levá klávesa Win"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Levá klávesa Win (na první rozložení), pravá klávesa Win/Menu (na poslední rozložení)"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Win (while pressed)"
-msgstr "Levá klávesa Win (při stisknutí)"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Levá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Levá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left hand"
-msgstr "Levoruké"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left handed Dvorak"
-msgstr "Levoruké Dvorak"
-
-#: ../rules/base.xml.in.h:408
-msgid "Legacy"
-msgstr "Zděděné"
-
-#: ../rules/base.xml.in.h:409
-msgid "Legacy Wang 724"
-msgstr "Zděděná Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:411
-msgid "Legacy key with comma"
-msgstr "Zděděná klávesa s čárkou"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy key with dot"
-msgstr "Zděděná klávesa s tečkou"
-
-#: ../rules/base.xml.in.h:413
-msgid "Lithuania"
-msgstr "Litva"
-
-#: ../rules/base.xml.in.h:414
-msgid "Lka"
-msgstr "LKA"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (alternativní volba)"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (alternativní volba 2)"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Přídavné klávesy Logitech G15 pomocí G15daemon"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Generic Keyboard"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:439
-msgid "Lower Sorbian"
-msgstr "Dolnolužické"
-
-#: ../rules/base.xml.in.h:440
-msgid "Lower Sorbian (qwertz)"
-msgstr "Dolnolužické (qwertz)"
-
-#: ../rules/base.xml.in.h:441
-msgid "Ltu"
-msgstr "LTU"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lva"
-msgstr "LVA"
-
-#: ../rules/base.xml.in.h:443
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:444
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:445
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:446
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (mez.)"
-
-#: ../rules/base.xml.in.h:447
-msgid "Macedonia"
-msgstr "Makedonie"
-
-#: ../rules/base.xml.in.h:448
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:449
-msgid "Macintosh Old"
-msgstr "Macintosh staré"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, mrtvé klávesy Sun"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:452
-msgid "Make CapsLock an additional Backspace"
-msgstr "Vytvořit z klávesy Caps Lock další Backspace"
-
-#: ../rules/base.xml.in.h:453
-msgid "Make CapsLock an additional Ctrl"
-msgstr "Vytvořit z klávesy Caps Lock další Ctrl"
-
-#: ../rules/base.xml.in.h:454
-msgid "Make CapsLock an additional ESC"
-msgstr "Vytvořit z klávesy Caps Lock další Esc"
-
-#: ../rules/base.xml.in.h:455
-msgid "Make CapsLock an additional Hyper"
-msgstr "Vytvořit z klávesy Caps Lock další Hyper"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make CapsLock an additional NumLock"
-msgstr "Vytvořit z klávesy Caps Lock další Num Lock"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make CapsLock an additional Super"
-msgstr "Vytvořit z klávesy Caps Lock další Super"
-
-#: ../rules/base.xml.in.h:458
-msgid "Malayalam"
-msgstr "Malajálamské"
-
-#: ../rules/base.xml.in.h:459
-msgid "Malayalam Lalitha"
-msgstr "Malajálamské lalitha"
-
-#: ../rules/base.xml.in.h:460
-msgid "Maldives"
-msgstr "Maledivy"
-
-#: ../rules/base.xml.in.h:461
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:463
-msgid "Maltese keyboard with US layout"
-msgstr "Maltézská klávesnice s americkým rozložením"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mao"
-msgstr "MAO"
-
-#: ../rules/base.xml.in.h:465
-msgid "Maori"
-msgstr "Maorské"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mdv"
-msgstr "MDV"
-
-#: ../rules/base.xml.in.h:467
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:468
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:469
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:470
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:471
-msgid "Meta is mapped to Left Win"
-msgstr "Meta je přiřazena k levé klávese Win"
-
-#: ../rules/base.xml.in.h:472
-msgid "Meta is mapped to Win keys"
-msgstr "Meta je přiřazena ke klávesám Win"
-
-#: ../rules/base.xml.in.h:473
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:474
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:475
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, švédská"
-
-#: ../rules/base.xml.in.h:476
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:484
-msgid "Miscellaneous compatibility options"
-msgstr "Dodatečné volby kompatibility"
-
-#: ../rules/base.xml.in.h:485
-msgid "Mkd"
-msgstr "MKD"
-
-#: ../rules/base.xml.in.h:486
-msgid "Mli"
-msgstr "MLI"
-
-#: ../rules/base.xml.in.h:487
-msgid "Mlt"
-msgstr "MLT"
-
-#: ../rules/base.xml.in.h:488
-msgid "Mmr"
-msgstr "MMR"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mng"
-msgstr "MNG"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mongolia"
-msgstr "Mongolsko"
-
-#: ../rules/base.xml.in.h:491
-msgid "Montenegro"
-msgstr "Černá Hora"
-
-#: ../rules/base.xml.in.h:492
-msgid "Morocco"
-msgstr "Maroko"
-
-#: ../rules/base.xml.in.h:493
-msgid "Multilingual"
-msgstr "Vícejazyčné"
-
-#: ../rules/base.xml.in.h:494
-msgid "Multilingual, first part"
-msgstr "Vícejazyčné, první část"
-
-#: ../rules/base.xml.in.h:495
-msgid "Multilingual, second part"
-msgstr "Vícejazyčné, druhá část"
-
-#: ../rules/base.xml.in.h:496
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:497
-msgid "NICOLA-F style Backspace"
-msgstr "Backspace typu NICOLA-F"
-
-#: ../rules/base.xml.in.h:498
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:499
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:500
-msgid "Nativo for Esperanto"
-msgstr "Nativo pro esperanto"
-
-#: ../rules/base.xml.in.h:501
-msgid "Nativo for USA keyboards"
-msgstr "Nativo pro americké klávesnice"
-
-#: ../rules/base.xml.in.h:502
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nepal"
-msgstr "Nepál"
-
-#: ../rules/base.xml.in.h:504
-msgid "Netherlands"
-msgstr "Nizozemsko"
-
-#: ../rules/base.xml.in.h:505
-msgid "New phonetic"
-msgstr "Nové fonetické"
-
-#: ../rules/base.xml.in.h:506
-msgid "Nga"
-msgstr "NGA"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nigeria"
-msgstr "Nigérie"
-
-#: ../rules/base.xml.in.h:508
-msgid "Nld"
-msgstr "NLD"
-
-#: ../rules/base.xml.in.h:509
-msgid "Non-breakable space character at fourth level"
-msgstr "Na čtvrté úrovni znak nedělitelné mezery"
-
-#: ../rules/base.xml.in.h:510
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Na čtvrté úrovni znak nedělitelné mezery, tenká nedělitelná mezera na šesté úrovni"
-
-#: ../rules/base.xml.in.h:511
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Na čtvrté úrovni znak nedělitelné mezery, tenká nedělitelná mezera na šesté úrovni (přes Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:512
-msgid "Non-breakable space character at second level"
-msgstr "Na druhé úrovni znak nedělitelné mezery"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at third level"
-msgstr "Na třetí úrovni znak nedělitelné mezery"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Na třetí úrovni znak nedělitelné mezery, nic na úrovni čtvrté"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Na třetí úrovni znak nedělitelné mezery, tenká nedělitelná mezera na čtvrté úrovni"
-
-#: ../rules/base.xml.in.h:516
-msgid "Nor"
-msgstr "NOR"
-
-#: ../rules/base.xml.in.h:517
-msgid "Northern Saami"
-msgstr "Severolaponské"
-
-#: ../rules/base.xml.in.h:518
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Severolaponské, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:519
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:520
-msgid "Norway"
-msgstr "Norsko"
-
-#: ../rules/base.xml.in.h:521
-msgid "Npl"
-msgstr "NPL"
-
-#: ../rules/base.xml.in.h:522
-msgid "NumLock"
-msgstr "Num Lock"
-
-#: ../rules/base.xml.in.h:523
-msgid "Numeric keypad delete key behaviour"
-msgstr "Chování klávesy Delete na numerické klávesnici"
-
-#: ../rules/base.xml.in.h:524
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Klávesy numerické klávesnice fungují stejně jako u počítače Mac"
-
-#: ../rules/base.xml.in.h:525
-msgid "Numeric keypad layout selection"
-msgstr "Výběr rozložení numerické klávesnice"
-
-#: ../rules/base.xml.in.h:526
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:527
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:528
-msgid "OLPC Dari"
-msgstr "OLPC, darí"
-
-#: ../rules/base.xml.in.h:529
-msgid "OLPC Pashto"
-msgstr "OLPC, paštó"
-
-#: ../rules/base.xml.in.h:530
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC, jihouzbecké"
-
-#: ../rules/base.xml.in.h:531
-msgid "Occitan"
-msgstr "Okcitánské"
-
-#: ../rules/base.xml.in.h:532
-msgid "Ogham"
-msgstr "Ogam"
-
-#: ../rules/base.xml.in.h:533
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:534
-msgid "Oriya"
-msgstr "Urijské"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Internet keyboard pro Ortek MCK-800 MM"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ossetian"
-msgstr "Osetinské"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ossetian, Winkeys"
-msgstr "Osetinské, klávesy Win"
-
-#: ../rules/base.xml.in.h:538
-msgid "Ossetian, legacy"
-msgstr "Osetinské, zděděné"
-
-#: ../rules/base.xml.in.h:539
-msgid "PC-98xx Series"
-msgstr "Řada PC-98xx"
-
-#: ../rules/base.xml.in.h:540
-msgid "Pak"
-msgstr "PAK"
-
-#: ../rules/base.xml.in.h:541
-msgid "Pakistan"
-msgstr "Pákistán"
-
-#: ../rules/base.xml.in.h:542
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Panonsko-rusínské stejně znějící"
-
-#: ../rules/base.xml.in.h:543
-msgid "Pashto"
-msgstr "Paštské"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pause"
-msgstr "Pause (Pauza)"
-
-#: ../rules/base.xml.in.h:546
-msgid "Persian, with Persian Keypad"
-msgstr "Perské, s perskou numerickou klávesnicí"
-
-#: ../rules/base.xml.in.h:547
-msgid "Phonetic"
-msgstr "Fonetické"
-
-#: ../rules/base.xml.in.h:548
-msgid "Phonetic Winkeys"
-msgstr "Fonetické klávesy Win"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pol"
-msgstr "POL"
-
-#: ../rules/base.xml.in.h:550
-msgid "Poland"
-msgstr "Polsko"
-
-#: ../rules/base.xml.in.h:551
-msgid "Polytonic"
-msgstr "Polytonické"
-
-#: ../rules/base.xml.in.h:552
-msgid "Portugal"
-msgstr "Portugalsko"
-
-#: ../rules/base.xml.in.h:553
-msgid "Probhat"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:554
-msgid "Programmer Dvorak"
-msgstr "Programátorské Dvorak"
-
-#: ../rules/base.xml.in.h:555
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:556
-msgid "Prt"
-msgstr "PRT"
-
-#: ../rules/base.xml.in.h:557
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:558
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:559
-msgid "Right Alt"
-msgstr "Pravá klávesa Alt"
-
-#: ../rules/base.xml.in.h:560
-msgid "Right Alt (while pressed)"
-msgstr "Pravá klávesa Alt (při stisknutí)"
-
-#: ../rules/base.xml.in.h:561
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Pravá klávesa Alt vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
-
-#: ../rules/base.xml.in.h:562
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Pravá klávesa Alt vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Pravá klávesa Alt nikdy neumožní výběr 3. úrovně"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Pravá klávesa Alt, Shift a pravá klávesa Alt je Multi_Key"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Ctrl"
-msgstr "Pravá klávesa Ctrl"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Ctrl (while pressed)"
-msgstr "Pravá klávesa Ctrl (při stisknutí)"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Ctrl as Right Alt"
-msgstr "Pravá klávesa Ctrl funguje jako pravá klávesa Alt"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Ctrl+Right Shift"
-msgstr "Pravá klávesa Ctrl + pravá klávesa Shift"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Shift"
-msgstr "Pravá klávesa Shift"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Win"
-msgstr "Pravá klávesa Win"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Win (while pressed)"
-msgstr "Pravá klávesa Win (při stisknutí)"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Pravá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Pravá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right hand"
-msgstr "Pravoruké"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right handed Dvorak"
-msgstr "Pravoruké Dvorak"
-
-#: ../rules/base.xml.in.h:576
-msgid "Romania"
-msgstr "Rumunsko"
-
-#: ../rules/base.xml.in.h:577
-msgid "Romanian keyboard with German letters"
-msgstr "Rumunská klávesnice s německými znaky"
-
-#: ../rules/base.xml.in.h:578
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Rumunská klávesnice s německými znaky, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:579
-msgid "Rou"
-msgstr "ROU"
-
-#: ../rules/base.xml.in.h:580
-msgid "Rus"
-msgstr "RUS"
-
-#: ../rules/base.xml.in.h:581
-msgid "Russia"
-msgstr "Rusko"
-
-#: ../rules/base.xml.in.h:582
-msgid "Russian"
-msgstr "Ruské"
-
-#: ../rules/base.xml.in.h:583
-msgid "Russian phonetic"
-msgstr "Ruské fonetické"
-
-#: ../rules/base.xml.in.h:584
-msgid "Russian phonetic Dvorak"
-msgstr "Ruské fonetické Dvorak"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Ruské fonetické, vyloučit mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian with Kazakh"
-msgstr "Ruská s kazaštinou"
-
-#: ../rules/base.xml.in.h:587
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:588
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:589
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:590
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:591
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:592 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:593
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:595
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:596
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:597
-msgid "ScrollLock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:598
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:599
-msgid "Semi-colon on third level"
-msgstr "Středník na třetí úrovni"
-
-#: ../rules/base.xml.in.h:600
-msgid "Sen"
-msgstr "SEN"
-
-#: ../rules/base.xml.in.h:601
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:602 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "Srbsko"
-
-#: ../rules/base.xml.in.h:603
-msgid "Serbian"
-msgstr "Srbské"
-
-#: ../rules/base.xml.in.h:604
-msgid "Shift cancels CapsLock"
-msgstr "Shift ruší Caps Lock"
-
-#: ../rules/base.xml.in.h:605
-msgid "Shift does not cancel NumLock, chooses 3rd level instead"
-msgstr "Shift does not cancel NumLock, chooses 3rd level instead"
-
-#: ../rules/base.xml.in.h:606
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift s numerickými klávesami funguje jako v MS Windows"
-
-#: ../rules/base.xml.in.h:607
-msgid "Shift+CapsLock"
-msgstr "Shift+Caps Lock"
-
-#: ../rules/base.xml.in.h:608
-msgid "Simple"
-msgstr "Jednoduché"
-
-#: ../rules/base.xml.in.h:609
-msgid "Slovakia"
-msgstr "Slovensko"
-
-#: ../rules/base.xml.in.h:610
-msgid "Slovenia"
-msgstr "Slovinsko"
-
-#: ../rules/base.xml.in.h:611
-msgid "South Africa"
-msgstr "Jihoafrická republika"
-
-#: ../rules/base.xml.in.h:612
-msgid "Southern Uzbek"
-msgstr "Jihouzbecké"
-
-#: ../rules/base.xml.in.h:613
-msgid "Spain"
-msgstr "Španělsko"
-
-#: ../rules/base.xml.in.h:614
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Speciální klávesy (Ctrl+Alt+&lt;klávesa&gt;) zpracovány v serveru"
-
-#: ../rules/base.xml.in.h:615
-msgid "Sri Lanka"
-msgstr "Srí Lanka"
-
-#: ../rules/base.xml.in.h:616
-msgid "Standard"
-msgstr "Standardní"
-
-#: ../rules/base.xml.in.h:617
-msgid "Standard (Cedilla)"
-msgstr "Standardní (cédille)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:619
-msgid "Standard RSTU"
-msgstr "Standardní RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:621
-msgid "Standard RSTU on Russian layout"
-msgstr "Standardní RSTU s ruským rozložením"
-
-#: ../rules/base.xml.in.h:622
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:623
-msgid "Sun dead keys"
-msgstr "Mrtvé klávesy Sun"
-
-#: ../rules/base.xml.in.h:624
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:625
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:626
-msgid "Svk"
-msgstr "SVK"
-
-#: ../rules/base.xml.in.h:627
-msgid "Svn"
-msgstr "SVN"
-
-#: ../rules/base.xml.in.h:628
-msgid "Swap Ctrl and CapsLock"
-msgstr "Zaměnit Ctrl a Caps Lock"
-
-#: ../rules/base.xml.in.h:629
-msgid "Swap ESC and CapsLock"
-msgstr "Zaměnit Esc a Caps Lock"
-
-#: ../rules/base.xml.in.h:630
-msgid "Swe"
-msgstr "SWE"
-
-#: ../rules/base.xml.in.h:631
-msgid "Sweden"
-msgstr "Švédsko"
-
-#: ../rules/base.xml.in.h:632
-msgid "Switzerland"
-msgstr "Švýcarsko"
-
-#: ../rules/base.xml.in.h:633
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:634
-msgid "Syr"
-msgstr "SYR"
-
-#: ../rules/base.xml.in.h:635
-msgid "Syria"
-msgstr "Sýrie"
-
-#: ../rules/base.xml.in.h:636
-msgid "Syriac"
-msgstr "Syrské"
-
-#: ../rules/base.xml.in.h:637
-msgid "Syriac phonetic"
-msgstr "Syrské fonetické"
-
-#: ../rules/base.xml.in.h:638
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:639
-msgid "Tajikistan"
-msgstr "Tádžikistán"
-
-#: ../rules/base.xml.in.h:640
-msgid "Tamil"
-msgstr "Tamilské"
-
-#: ../rules/base.xml.in.h:641
-msgid "Tamil Keyboard with Numerals"
-msgstr "Tamilská klávesnice s číselnými znaky"
-
-#: ../rules/base.xml.in.h:642
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB Typewriter"
-
-#: ../rules/base.xml.in.h:643
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII Typewriter"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tamil Unicode"
-msgstr "Tamilské Unicode"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tanzania"
-msgstr "Tanzanie"
-
-#: ../rules/base.xml.in.h:646
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tatar"
-msgstr "Tatarské"
-
-#: ../rules/base.xml.in.h:648
-msgid "Telugu"
-msgstr "Tegulské"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tha"
-msgstr "THA"
-
-#: ../rules/base.xml.in.h:650
-msgid "Thailand"
-msgstr "Thajsko"
-
-#: ../rules/base.xml.in.h:651
-msgid "Tibetan"
-msgstr "Tibetské"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetské (s číslicemi ASCII)"
-
-#: ../rules/base.xml.in.h:653
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh, alternativní"
-
-#: ../rules/base.xml.in.h:655
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh, alternativní fonetické"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tifinagh Extended"
-msgstr "Tifinagh, rozšířené"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh, rozšířené fonetické"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh, fonetické"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tilde (~) variant"
-msgstr "Varianta s vlnovkou (~)"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tjk"
-msgstr "TJK"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tkm"
-msgstr "TKM"
-
-#: ../rules/base.xml.in.h:662
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "K odpovídající klávese na klávesnici Dvorak."
-
-#: ../rules/base.xml.in.h:663
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "K odpovídající klávese na klávesnici Qwerty."
-
-#: ../rules/base.xml.in.h:664
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:665
-msgid "Traditional phonetic"
-msgstr "Tradiční fonetické"
-
-#: ../rules/base.xml.in.h:666
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:667
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:668
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:669
-msgid "Tur"
-msgstr "TUR"
-
-#: ../rules/base.xml.in.h:670
-msgid "Turkey"
-msgstr "Turecko"
-
-#: ../rules/base.xml.in.h:671
-msgid "Turkmenistan"
-msgstr "Turkmenistán"
-
-#: ../rules/base.xml.in.h:672
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:673
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:674
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:675
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (režim 102/105:EU)"
-
-#: ../rules/base.xml.in.h:676
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (režim 106:JP)"
-
-#: ../rules/base.xml.in.h:677
-msgid "Typewriter"
-msgstr "Psací stroj"
-
-#: ../rules/base.xml.in.h:678
-msgid "Typewriter, legacy"
-msgstr "Psací stroj, zděděné"
-
-#: ../rules/base.xml.in.h:679
-msgid "Tza"
-msgstr "TZA"
-
-#: ../rules/base.xml.in.h:680
-msgid "UCW layout (accented letters only)"
-msgstr "Rozložení UCW (pouze znaky s diakritikou)"
-
-#: ../rules/base.xml.in.h:681
-msgid "US Dvorak with CZ UCW support"
-msgstr "Americké Dvorak s podporou CZ UCW"
-
-#: ../rules/base.xml.in.h:682
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Americká klávesnice s bosenskými spřežkami"
-
-#: ../rules/base.xml.in.h:683
-msgid "US keyboard with Bosnian letters"
-msgstr "Americká klávesnice s bosenskými znaky"
-
-#: ../rules/base.xml.in.h:684
-msgid "US keyboard with Croatian digraphs"
-msgstr "Americká klávesnice s chorvatskými spřežkami"
-
-#: ../rules/base.xml.in.h:685
-msgid "US keyboard with Croatian letters"
-msgstr "Americká klávesnice s chorvatskými znaky"
-
-#: ../rules/base.xml.in.h:686
-msgid "US keyboard with Estonian letters"
-msgstr "Americká klávesnice s estonskými znaky"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Italian letters"
-msgstr "Americká klávesnice s italskými znaky"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Lithuanian letters"
-msgstr "Americká klávesnice s litevskými znaky"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Slovenian letters"
-msgstr "Americká klávesnice se slovinskými znaky"
-
-#: ../rules/base.xml.in.h:690 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:691
-msgid "Udmurt"
-msgstr "Udmurtské"
-
-#: ../rules/base.xml.in.h:692
-msgid "Ukr"
-msgstr "UKR"
-
-#: ../rules/base.xml.in.h:693
-msgid "Ukraine"
-msgstr "Ukrajina"
-
-#: ../rules/base.xml.in.h:694
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Doplňky Unicode (šipky a matematické operátory)"
-
-#: ../rules/base.xml.in.h:695
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Doplňky Unicode (šipky a matematické operátory). Matematické operátory na výchozí úrovni."
-
-#: ../rules/base.xml.in.h:696
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:697
-msgid "United Kingdom"
-msgstr "Spojené království"
-
-#: ../rules/base.xml.in.h:698
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:699
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdské, alternativní fonetické"
-
-#: ../rules/base.xml.in.h:700
-msgid "Urdu, Phonetic"
-msgstr "Urdské, fonetické"
-
-#: ../rules/base.xml.in.h:701
-msgid "Urdu, Winkeys"
-msgstr "Urdské, klávesy Win"
-
-#: ../rules/base.xml.in.h:702
-msgid "Use Bosnian digraphs"
-msgstr "Používat bosenské spřežky"
-
-#: ../rules/base.xml.in.h:703
-msgid "Use Croatian digraphs"
-msgstr "Používat chorvatské spřežky"
-
-#: ../rules/base.xml.in.h:704
-msgid "Use guillemets for quotes"
-msgstr "Používat francouzské uvozovky"
-
-#: ../rules/base.xml.in.h:705
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Použít LED klávesnice k zobrazení alternativního rozložení"
-
-#: ../rules/base.xml.in.h:706
-msgid "Using space key to input non-breakable space character"
-msgstr "Používání mezerníku k zadávání znaku nedělitelné mezery"
-
-#: ../rules/base.xml.in.h:707
-msgid "Usual space at any level"
-msgstr "Na jakékoliv úrovni znak běžné mezery"
-
-#: ../rules/base.xml.in.h:708
-msgid "Uzb"
-msgstr "UZB"
-
-#: ../rules/base.xml.in.h:709
-msgid "Uzbekistan"
-msgstr "Uzbekistán"
-
-#: ../rules/base.xml.in.h:710
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:711
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:712
-msgid "Vnm"
-msgstr "VNM"
-
-#: ../rules/base.xml.in.h:713
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Numerická klávesnice Wang 724 s doplňky Unicode (šipky a matematické operátory)"
-
-#: ../rules/base.xml.in.h:714
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Numerická klávesnice Wang 724 s doplňky Unicode (šipky a matematické operátory). Matematické operátory na výchozí úrovni."
-
-#: ../rules/base.xml.in.h:715
-msgid "Wang model 724 azerty"
-msgstr "Wang, model 724 azerty"
-
-#: ../rules/base.xml.in.h:716
-msgid "Western"
-msgstr "Západní"
-
-#: ../rules/base.xml.in.h:717
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:718
-msgid "Winkeys"
-msgstr "Klávesy Win"
-
-#: ../rules/base.xml.in.h:719
-msgid "With &lt;\\|&gt; key"
-msgstr "S klávesou &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:720
-msgid "With EuroSign on 5"
-msgstr "Se znakem eura na klávese 5"
-
-#: ../rules/base.xml.in.h:721
-msgid "With guillemets"
-msgstr "S francouzskými uvozovkami"
-
-#: ../rules/base.xml.in.h:722
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:723
-msgid "Yakut"
-msgstr "jakutské"
-
-#: ../rules/base.xml.in.h:724
-msgid "Yoruba"
-msgstr "Jorubské"
-
-#: ../rules/base.xml.in.h:725
-msgid "Z and ZHE swapped"
-msgstr "Prohozené Z a Ž"
-
-#: ../rules/base.xml.in.h:726
-msgid "Zaf"
-msgstr "ZAF"
-
-#: ../rules/base.xml.in.h:727
-msgid "Zero-width non-joiner character at second level"
-msgstr "Na druhé úrovni znak nespojovače nulové šířky"
-
-#: ../rules/base.xml.in.h:728
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Na druhé úrovni znak nespojovače nulové šířky, nedělitelná mezera na třetí úrovni"
-
-#: ../rules/base.xml.in.h:729
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Na druhé úrovni znak nespojovače nulové šířky, na třetí úrovni nedělitelná mezera, nic na úrovni čtvrté"
-
-#: ../rules/base.xml.in.h:730
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Na druhé úrovni znak nespojovače nulové šířky, nedělitelná mezera na třetí úrovni, tenká nedělitelná mezera na čtvrté úrovni"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Na druhé úrovni znak nespojovače nulové šířky, nedělitelná mezera na třetí úrovni, spojovač nulové šířky na úrovni čtvrté"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Na druhé úrovni znak nespojovače nulové šířky, znak spojovače nulové šířky na třetí úrovni"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Na druhé úrovni znak nespojovače nulové šířky, znak spojovače nulové šířky na třetí úrovni, nedělitelná mezera na čtvrté úrovni"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Na třetí úrovni znak nespojovače nulové šířky, znak spojovače nulové šířky na úrovni čtvrté"
-
-#: ../rules/base.xml.in.h:735
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:736
-msgid "azerty/digits"
-msgstr "azerty/číslice"
-
-#: ../rules/base.xml.in.h:737
-msgid "digits"
-msgstr "číslice"
-
-#: ../rules/base.xml.in.h:738
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "posunutý středník a uvozovka (zastaralé)"
-
-#: ../rules/base.xml.in.h:739
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:740
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, rozšířená klávesa zpětného lomítka"
-
-#: ../rules/base.xml.in.h:742
-msgid "qwerty/digits"
-msgstr "qwerty/číslice"
-
-#: ../rules/base.xml.in.h:743
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr "Místo mrtvých kláves kombinovaná diakritika"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Salishské (Coeur d'Alene)"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr "Mezinárodní (AltGr kombinované Unicode)"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Mezinárodní (AltGr kombinované Unicode, alternativní)"
+# Translation of xkeyboard-config to Czech.
+# Copyright (C) 2007, 2008, 2009, 2010, 2011 the author(s) of xkeyboard-config.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Michal Bukovjan <bukm@centrum.cz>, 2003.
+# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config-2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-12 23:23+0100\n"
+"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Lokalize 1.1\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Menší než/větší než&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Menší než/Větší než&gt; vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Menší než/Větší než&gt; vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Zděděné) alternativní"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Zděděné) alternativní, mrtvé klávesy Sun"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Zděděné) alternativní, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104klávesové, kompatibilní"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/čárka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/čárka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/tečka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/tečka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/čárka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/čárka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/tečka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/tečka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/čárka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/čárka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/tečka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/tečka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/čárka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/čárka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/tečka/mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/tečka/vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "ATM/telefonní typ"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Acer Laptop"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "Přidá standardní chování ke klávese Menu"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Přidává průtažný přízvuk v esperantu (supersigno)"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Přidává znaky měny k určitým klávesám"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "AFG"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Afghánistán"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "ALB"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Albánie"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt a Meta na klávesách Alt"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt je přiřazena k pravé klávese Win a Super k Menu"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Caps Lock"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Mezerník"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Chování klávesy Alt/Win"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Alternativní"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Alternativní východní"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Alternativní fonetické"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Alternativní mezinárodní"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Alternativní, mrtvé klávesy Sun"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativní, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Alternativní, pouze Latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "AND"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Libovolná klávesa Alt"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Libovolná klávesa Win"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Libovolná klávesa Win (při stisknutí)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Varianta s apostrofem (')"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apple Aluminium Keyboard (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apple Aluminium Keyboard (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apple Aluminium Keyboard (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apple Aluminium Keyboard: emulovat klávesy PC (Print, Scroll Lock, Pause, Num Lock)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Apple Laptop"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "ARA"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Arabské"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "ARM"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Arménie"
+
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Asturská varianta s H s tečkou pod a L s tečkou pod"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Asus Laptop"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "Vlevo dole"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "Nalevo od \"A\""
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Rakousko"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "AUT"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "AZE"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Ázerbájdžán"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 Internet Keyboard, bezdrátová"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Zpětné lomítko"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Bangladéš"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Baškirské"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "BEL"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Bělorusko"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Belgie"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Bengálské"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Bengálské Probhat"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomické, typ Dvorak"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomické, typ Dvorak, pouze Latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "BGD"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "BGR"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Bhútán"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Biblická hebrejština (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "BIH"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "BLR"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna a Hercegovina"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "Obě klávesy Alt dohromady"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "Obě klávesy Ctrl dohromady"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "Obě klávesy Shift dohromady"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Obě klávesy Shift dohromady přepnou Caps Lock"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "BRA"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Braillovo písmo"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Brazílie"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Bretonské"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "BRL"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "BTN"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Bulharsko"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "BWA"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "CAN"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Capewell-Dvorak (baybayin)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Capewell-Dvorak (latinka)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Capewell-QWERF 2006 (baybayin)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Capewell-QWERF 2006 (latinka)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (na první rozložení), Shift+Caps Lock (na poslední rozložení)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (při stisknutí), Alt+Caps Lock provádí původní akci Caps Lock"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock funguje jako Shift s uzamčením. Shift přerušuje Caps Lock"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock funguje jako Shift s uzamčením. Shift neovlivňuje Caps Lock"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "Klávesa Caps Lock je vypnuta"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Chování klávesy Caps Lock"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Caps Lock přepne Shift, takže budou dotčeny všechny klávesy"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Caps Lock přepne běžný převod abecedních znaků na verzálky"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock používá vnitřní převod na verzálky. Shift přerušuje Caps Lock"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock používá vnitřní převod na verzálky. Shift neovlivňuje Caps Lock"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Katalánská varianta s ela geminada"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Cédille"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "CHE"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Čerokí"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternativní volba)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "Čína"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "CHN"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Čuvašské"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Čuvašské latinské"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Klasické"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Klasické Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Klasické, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Colemak (baybayin)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Colemak (latinka)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 kláves)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 kláves)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 kláves)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "Umístění klávesy Compose"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Konžská demokratická republika"
+
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Ctrl + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Ctrl je přiřazena ke klávesám Alt, Alt je přiřazena ke klávesám Win"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Ctrl je přiřazena ke klávesám Win (a obvyklým klávesám Ctrl)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Krymskotatarské (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Krymskotatarské (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Krymskotatarské (turecké Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Krymskotatarské (turecké F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Krymskotatarské (turecké Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Chorvatsko"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Umístění klávesy Ctrl"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Cyrilice"
+
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Cyrilice s francouzskými uvozovkami"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Cyrilice, prohozené Z a Ž"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "CZE"
+
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Česko"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Mrtvá čárka"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Mrtvá opačná čárka (gravis)"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Výchozí numerická klávesnice"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell PC 101klávesové"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Notebook Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Notebook Dell řady Precision M"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Notebook řady Dell Latitude"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Dánsko"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "DEU"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Řada Diamond 9801 / 9802"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "DNK"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Dvorak (baybayin)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Dvorak (latinka)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (britská interpunkce)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Alternativní mezinárodní Dvorak (bez mrtvých kláves)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Mezinárodní Dvorak (s mrtvými klávesami)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, polské uvozovky na klávese 1"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, polské uvozovky na klávese uvozovky"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Východní"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Povolit přídavné znaky hladké sazby"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Anglické"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Anglické (americké mezinárodní)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Anglické (americké Macintosh)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Anglické s RupeeSign"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Enter na numerické klávesnici"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "EPO"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonomické"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "ESP"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "EST"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Estonsko"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "ETH"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Etiopie"
+
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Euro na 2"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Euro na 4"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Euro na 5"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Euro na E"
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Rozšířené"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Rozšířené - klávesy Win"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Rozšířená klávesa zpětného lomítka"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "Varianta se znakem F"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Faerské ostrovy"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "FIN"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Finsko"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Klávesa čtvrté úrovně s abstraktními oddělovači"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Klávesa čtvrté úrovně s čárkou"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Klávesa čtvrté úrovně s tečkou"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Klávesa čtvrté úrovně s tečkou, omezení Latin-9"
+
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Klávesa čtvrté úrovně se znakem momajjez"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "FRA"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "Francie"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Français (francouzské alternativní)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Francouzské"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Francouzské (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Francouzské (zděděné)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Francouzské Dvorak"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Francouzské, mrtvé klávesy Sun"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Francouzské, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "FRO"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Notebook Fujitsu-Siemens Computers AMILO"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBR"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "GA"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "Obecné PC 101klávesové"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "Obecné PC 102klávesové (mez.)"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "Obecné PC 104klávesové"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "Obecné PC 105klávesové (mez.)"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "GEO"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Gruzie"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Gruzínské"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Gruzínské AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Německé (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Německé, mrtvé klávesy Sun"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Německé, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Německo"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "GHA"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "GIN"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "GRC"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Řecko"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Gudžarátské"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Gurmuchské"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmuchské (Jhelum)"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Keyboard"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking Keyboard for Mac"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "Hausa"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Hexadecimální"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Hindské bolnagri"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Hindské Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Stejně znějící"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "HRV"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "Telefon HTC Dream"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "HUN"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Maďarsko"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper je přiřazena ke klávesám Win"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "ISO alternativní"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Island"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Zahrnout mrtvou klávesu vlnovky"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "IND"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "Indie"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "Mezinárodní (mrtvé klávesy AltGr)"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "Mezinárodní (s mrtvými klávesami)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Írán"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Irák"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Irsko"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "IRL"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "IRN"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "IRQ"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "ISL"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "ISR"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Izrael"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "ITA"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Itálie"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Japonsko"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Japonsko (řada PC-98xx)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Volby japonské klávesnice"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "JPN"
+
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Kalmycké"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kana 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "Klávesa Kana Lock uzamyká"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Kannadské"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Kašubské"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "KAZ"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "Kazašská s ruštinou"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Kazachstán"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "KEN"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Keňa"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Pořadí kláves zabíjející server X"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Klávesa umožňující výběr 3. úrovně"
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Klávesa umožňující výběr 5. úrovně"
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "Klávesa měnící rozložení"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "KGZ"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "KHM"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Kukujské"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "KOR"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Korejská republika"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Kurdské, (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdské, arabsko-latinské"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdské, latinské Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Kurdské, latinské Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstán"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "LAO"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop Keyboard pro notebook Compaq (např. Armada)"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Internet Keyboard pro notebook Compaq (např. Presario)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Latinské"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Latinskoamerické"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Latinské Unicode"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Latinské Unicode qwerty"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Latinské qwerty"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Latinské Unicode"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Latinské Unicode qwerty"
+
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Latinské s francouzskými uvozovkami"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Lotyšsko"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Přepínání rozložení klávesou násobení/dělení"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Levá klávesa Alt"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Levá klávesa Alt (při stisknutí)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "Levá klávesa Alt je prohozena s levou klávesou Win"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Levá klávesa Ctrl"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Levá klávesa Ctrl (na první rozložení), pravá klávesa Ctrl (na poslední rozložení)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Levá klávesa Ctrl + levá klávesa Shift"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Levá klávesa Shift"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Levá klávesa Win"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Levá klávesa Win (na první rozložení), pravá klávesa Win/Menu (na poslední rozložení)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Levá klávesa Win (při stisknutí)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Levá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Levá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Levoruké"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Levoruké Dvorak"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Zděděné"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Zděděná Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Zděděná klávesa s čárkou"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Zděděná klávesa s tečkou"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Litva"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "LKA"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (alternativní volba)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (alternativní volba 2)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Přídavné klávesy Logitech G15 pomocí G15daemon"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Generic Keyboard"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Dolnolužické"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Dolnolužické (qwertz)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "LTU"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "LVA"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (mez.)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Makedonie"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (mezinárodní)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Macintosh staré"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, mrtvé klávesy Sun"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Vytvořit z klávesy Caps Lock další Backspace"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Vytvořit z klávesy Caps Lock další Ctrl"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "Vytvořit z klávesy Caps Lock další Esc"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Vytvořit z klávesy Caps Lock další Hyper"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Vytvořit z klávesy Caps Lock další Num Lock"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "Vytvořit z klávesy Caps Lock další Super"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Malajálamské"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Malajálamské lalitha"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Maledivy"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Maltézská klávesnice s americkým rozložením"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "MAO"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Maorské"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Marijské"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "MDV"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "Meta je přiřazena k levé klávese Win"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "Meta je přiřazena ke klávesám Win"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta na levé klávese Ctrl"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, švédská"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Dodatečné volby kompatibility"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "MKD"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "MLI"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "MLT"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "MMR"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "MNG"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Mongolsko"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Černá Hora"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Maroko"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Vícejazyčné"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Vícejazyčné, první část"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Vícejazyčné, druhá část"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "Backspace typu NICOLA-F"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Nativo pro esperanto"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Nativo pro americké klávesnice"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Nepál"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Nizozemsko"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Nové fonetické"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "NGA"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Nigérie"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "NLD"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Na čtvrté úrovni znak nedělitelné mezery"
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Na čtvrté úrovni znak nedělitelné mezery, tenká nedělitelná mezera na šesté úrovni"
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Na čtvrté úrovni znak nedělitelné mezery, tenká nedělitelná mezera na šesté úrovni (přes Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "Na druhé úrovni znak nedělitelné mezery"
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "Na třetí úrovni znak nedělitelné mezery"
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Na třetí úrovni znak nedělitelné mezery, nic na úrovni čtvrté"
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Na třetí úrovni znak nedělitelné mezery, tenká nedělitelná mezera na čtvrté úrovni"
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "NOR"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Severolaponské"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Severolaponské, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Norsko"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "NPL"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Chování klávesy Delete na numerické klávesnici"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Klávesy numerické klávesnice fungují stejně jako u počítače Mac"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Výběr rozložení numerické klávesnice"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC, darí"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC, paštó"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC, jihouzbecké"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Okcitánské"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Ogam"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Urijské"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Internet keyboard pro Ortek MCK-800 MM"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Osetinské"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Osetinské, klávesy Win"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Osetinské, zděděné"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "Řada PC-98xx"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "PAK"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Pákistán"
+
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Panonsko-rusínské stejně znějící"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Paštské"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pause (Pauza)"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Perské, s perskou numerickou klávesnicí"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "PHI"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Filipíny"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Fonetické"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Fonetické klávesy Win"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "POL"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Polsko"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Polytonické"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Portugalsko"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Programátorské Dvorak"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "PRT"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (baybayin)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Pravá klávesa Alt"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Pravá klávesa Alt (při stisknutí)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Pravá klávesa Alt vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Pravá klávesa Alt vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Pravá klávesa Alt nikdy neumožní výběr 3. úrovně"
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Pravá klávesa Alt, Shift a pravá klávesa Alt je Multi_Key"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Pravá klávesa Ctrl"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Pravá klávesa Ctrl (při stisknutí)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Pravá klávesa Ctrl funguje jako pravá klávesa Alt"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Pravá klávesa Ctrl + pravá klávesa Shift"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Pravá klávesa Shift"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Pravá klávesa Win"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Pravá klávesa Win (při stisknutí)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Pravá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Pravá klávesa Win vybírá 5. úroveň, uzamyká při stisknutí společně s jinou výběrovou klávesou 5. úrovně, jedno stisknutí ruší uzamčení"
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Pravoruké"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Pravoruké Dvorak"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Rumunsko"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Rumunská klávesnice s německými znaky"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Rumunská klávesnice s německými znaky, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "ROU"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Rupie na 4"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "RUS"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Rusko"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Ruské"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Ruské fonetické"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Ruské fonetické Dvorak"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Ruské fonetické, vyloučit mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "Ruská s kazaštinou"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Středník na třetí úrovni"
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "SEN"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Srbsko"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Srbské"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Srbochorvatské"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Shift ruší Caps Lock"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift neruší Num Lock, namísto toho vybírá 3. úroveň"
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift s numerickými klávesami funguje jako v MS Windows"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Shift+Caps Lock"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Jednoduché"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Sindhské"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Slovensko"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Slovinsko"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Jihoafrická republika"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "Jihouzbecké"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Španělsko"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Speciální klávesy (Ctrl+Alt+&lt;klávesa&gt;) zpracovány v serveru"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Srí Lanka"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Standardní"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Standardní (cédille)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Standardní RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Standardní RSTU s ruským rozložením"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Mrtvé klávesy Sun"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "SVK"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "SVN"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Zaměnit Ctrl a Caps Lock"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Zaměnit Esc a Caps Lock"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "SWE"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Švédsko"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Švýcarsko"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "SYR"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Sýrie"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Syrské"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Syrské fonetické"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Tádžikistán"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Tamilské"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Tamilská klávesnice s číselnými znaky"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB Typewriter"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII Typewriter"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Tamilské Unicode"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Tanzanie"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "Tatarské"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Tegulské"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "THA"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Thajsko"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Tibetské"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetské (s číslicemi ASCII)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Tifinagh alternativní"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Tifinagh alternativní fonetické"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Tifinagh rozšířené"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh rozšířené fonetické"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh fonetické"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Varianta s vlnovkou (~)"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "TJK"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "TKM"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "K odpovídající klávese na klávesnici Dvorak."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "K odpovídající klávese na klávesnici Qwerty."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Přepnout PointerKeys klávesou Shift + Num Lock."
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Tradiční fonetické"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "TUR"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Turecko"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Turkmenistán"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (režim 102/105:EU)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (režim 106:JP)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Psací stroj"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Psací stroj, zděděné"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "TZA"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "Rozložení UCW (pouze znaky s diakritikou)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "Americké Dvorak s podporou CZ UCW"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Americká klávesnice s bosenskými spřežkami"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "Americká klávesnice s bosenskými znaky"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "Americká klávesnice s chorvatskými spřežkami"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "Americká klávesnice s chorvatskými znaky"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "Americká klávesnice s estonskými znaky"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "Americká klávesnice s italskými znaky"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "Americká klávesnice s litevskými znaky"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "Americká klávesnice se slovinskými znaky"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Udmurtské"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "UKR"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Ukrajina"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Doplňky Unicode (šipky a matematické operátory)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Doplňky Unicode (šipky a matematické operátory). Matematické operátory na výchozí úrovni"
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "Spojené království"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdské, alternativní fonetické"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Urdské, fonetické"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Urdské, klávesy Win"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Používat bosenské spřežky"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Používat chorvatské spřežky"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "Používat francouzské uvozovky"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Použít LED klávesnice k zobrazení alternativního rozložení"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "Používání mezerníku k zadávání znaku nedělitelné mezery"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Na jakékoliv úrovni znak běžné mezery"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "UZB"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Uzbekistán"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "VNM"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Numerická klávesnice Wang 724 s doplňky Unicode (šipky a matematické operátory)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Numerická klávesnice Wang 724 s doplňky Unicode (šipky a matematické operátory). Matematické operátory na výchozí úrovni"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang, model 724 azerty"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Západní"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Klávesy Win"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "S klávesou &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "Se znakem eura na klávese 5"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "S francouzskými uvozovkami"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "jakutské"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Jorubské"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "Prohozené Z a Ž"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "ZAF"
+
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Na druhé úrovni znak nespojovače nulové šířky"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Na druhé úrovni znak nespojovače nulové šířky, nedělitelná mezera na třetí úrovni"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Na druhé úrovni znak nespojovače nulové šířky, na třetí úrovni nedělitelná mezera, nic na úrovni čtvrté"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Na druhé úrovni znak nespojovače nulové šířky, nedělitelná mezera na třetí úrovni, tenká nedělitelná mezera na čtvrté úrovni"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Na druhé úrovni znak nespojovače nulové šířky, nedělitelná mezera na třetí úrovni, spojovač nulové šířky na úrovni čtvrté"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Na druhé úrovni znak nespojovače nulové šířky, znak spojovače nulové šířky na třetí úrovni"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Na druhé úrovni znak nespojovače nulové šířky, znak spojovače nulové šířky na třetí úrovni, nedělitelná mezera na čtvrté úrovni"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Na třetí úrovni znak nespojovače nulové šířky, znak spojovače nulové šířky na úrovni čtvrté"
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "azerty/číslice"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "číslice"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "posunutý středník a uvozovka (zastaralé)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, rozšířená klávesa zpětného lomítka"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "qwerty/číslice"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avestské"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Místo mrtvých kláves kombinovaná diakritika"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Salishské (Coeur d'Alene)"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Mezinárodní (AltGr kombinované Unicode)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Mezinárodní (AltGr kombinované Unicode, alternativní)"
diff --git a/xorg-server/xkeyboard-config/po/da.po b/xorg-server/xkeyboard-config/po/da.po
index 81a7faa99..b555b23ee 100644
--- a/xorg-server/xkeyboard-config/po/da.po
+++ b/xorg-server/xkeyboard-config/po/da.po
@@ -1,3070 +1,3157 @@
-# Danish translation of xkeyboard-config.
-# Copyright (C) 2010 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Ole Laursen <olau@hardworking.dk>, 2003.
-# Joe Hansen <joedalton2@yahoo.dk>, 2008, 2009, 2010.
-# Korrekturlæsning "Lars Christian Jensen" <larschrjensen@gmail.com>, 2010.
-#
-# Backspace = rettelsestast
-# caps lock = caps lock (kunne nok også være lås skift)
-# compose = compose (uafklaret, en streng er tilbage med den)
-#
-# Jeg tror at når der står "compose" i forbindelse med tastaturer er der
-# en specialtast til at skrive en email med "Compose email", derfor
-# synes jeg at det vil være det bedste at kalde det en "Skriv e-mail
-# tast" og så skrive "compose" bagefter i parentes. (kenneths besked, se også Kelds)
-#
-# delete key = slettetast
-# digraph = digraf (En digraf er to bogstaver, der repræsenterer én lyd.
-# En digraf er ikke det samme som en ligatur.) Eksempler: "hj" og "hv"
-# i "hjælp", "hvis" og "hvordan", eller "ph" i engelsk "phone". Kilde
-# dansk wikipedia
-# keypad = numerisk tastatur
-# legacy = forældet
-# pressed = trykket ned (ikke nedtrykket)
-# tilde = tilde
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config-2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-25 23:06+0100\n"
-"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
-"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Mindre end/Større end&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Mindre end/Større end&gt; vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Mindre end/Større end&gt; vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Forældet) Alternativ"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Forældet) Alternativ, Sun døde taster"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Forældet) Alternativ, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "101/104 tastkompatibel"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/komma/Døde taster"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/komma/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/punktum/Døde taster"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/punktum/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/komma/Døde taster"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/komma/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/punktum/Døde taster"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/punktum/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/komma/Døde taster"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/komma/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/punktum/Døde taster"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/punktum/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/komma/Døde taster"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/komma/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/punktum/Døde taster"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/punktum/Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-# ATM = hæveautomat, måske skal det oversættes.
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "ATM/telefonstil"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Acer bærbar"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Tilføj standardopførslen til menutasten"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Tilføjelse af esperanto accent circonflexe (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Tilføjelse af eurotegnet til bestemte taster"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albanien"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt og Meta er på Alt-tasterne"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt ligger på den højre Win-tast og Super på Menu"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+Caps Lock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Skift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Mellemrum"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win-tasteopførsel"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternative"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternativ østlig"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternativ fonetisk"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternativ international"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternativ, Sun døde taster"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativ, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternativ, kun latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Enhver Alt-tast"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Enhver Win-tast"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Enhver Win-tast (mens trykket ned)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Apostrof (') variant"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Apples aluminiumstastatur (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Apples aluminiumstastatur (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Apples aluminiumstastatur (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Apples aluminiumstastatur: Emuler PC-taster (Udskriv, Scroll Lock, Pause, NumLock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Apple bærbar"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Arabisk"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenien"
-
-# Asturian (Asturian: Asturianu or Bable) is a Romance
-# language of the West Iberian group, Astur-Leonese
-# Subgroup, spoken in the Spanish province of Asturias
-# by the Asturian people.
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Asturisk variant med bundpunktum H og bundpunktum L"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Asus bærbar"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Nederst til venstre"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Til venstre for 'A'"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Østrig"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Øst"
-
-# The Avatime are an Akan people who live in Volta region of Ghana. History has it
-# that they are Ahanta people who migrated to the Volta region.
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Ase"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Aserbajdsjan"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF-multimedie"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U minitrådløst internet og spil"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Omvendt skråstreg"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Bashkirian"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Hviderusland"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Belgien"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Bengali"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Bengali probhat"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomisk, Dvorakmåde"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomisk, Dvorakmåde, kun latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Bibelsk hebraisk (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnien-herzegovina"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Begge Alt-taster sammen"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Begge Ctrl-taster sammen"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Begge skiftetaster sammen"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Begge skiftetaster sammen skifter Caps Lock"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Blindskrift"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Brasilien"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Breton"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bulgarien"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Cambodia"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Canada"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "Caps Lock (skifter til første layout), Skift+Caps Lock (skifter til sidste layout)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "Caps Lock (mens presset ned), Alt+Caps Lock udfører den oprindleige capslockhandling"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock agerer som skiftetasten med lås. Skift »pauser« Caps Lock"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock agerer som skiftetasten med lås. Skift påvirker ikke Caps Lock"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "Caps Lock er slået fra"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Opførsel for Caps Lock-tast"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "Caps Lock ændrer Skift så alle taster bliver påvirket"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "Caps Lock slår små/store bogstaver til/fra"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock bruger intern forstørrelse af bogstaver. Skift sætter Caps Lock »på hold«"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock bruger intern forstørrelse af bogstaver. Skift påvirker ikke Caps Lock"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Katalansk variant med midterpunktum L"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Cedille"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UBEGRÆNSET"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternativ)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "Kina"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Chusvash"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Chuvash latin"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Klassisk"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Klassisk Dvorak"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Klassisk, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 taster)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 taster)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 taster)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Placering af Composetast"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Den Demokratiske Republik"
-
-# Backspace kunne også være Slet tilbage
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Rettelsestast"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Kontrol ligger på Alt-tasterne, Alt ligger på Win-tasterne"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Kontrol ligger på Win-tasterne (og de normale Ctrl-taster)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Krimsk tatar (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Krimsk tatar (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Krimsk tatar (Tyrkisk Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Krimsk tatar (Tyrkisk F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Krimsk tatar (Tyrkisk Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Kroatien"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Ctrl-tast placering"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Skift"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Kyrillisk"
-
-# guillemets er dem her: »«
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Kyrillisk med guillemeter"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Kyrillisk, Z og ZHE ombyttet"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Tje"
-
-# engelsk fejl her? Hedder det ikke Czech Republic
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Tjekkiet"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Død accent"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Død accent grave"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Standard numerisk tastatur taster"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell 101-taster PC"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell bærbar/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell bærbar/notebook Precision M series"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude series bærbar"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell Sk-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia tastatur"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Danmark"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Tys"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802-serien"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (UK tegnsætning)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvorak alternativ international (ingen døde taster)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak international (med døde taster)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, polske anførelsestegn på tast 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, polske anførelsestegn på anførelsestast"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "Ø"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Østlig"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Slå døde taster fra"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Slå ekstra typografiske karakterer til"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Engelsk"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Engelsk (USA international)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Engelsk (USA Macintosh)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Retur på numerisk tastatur"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Ergonomisk"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Estland"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eti"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Etiopien"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Udvidet"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Udvidet - Wintaster"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Udvidet omvendt skråstreg"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "F-bogstav (F) variant"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Færøerne"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Finland"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Niveau fire tast med abstrakt adskillelser"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Niveau fire tast med komma"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Niveau fire tast med punktum"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Niveau fire tast med punktum, latin-9 begrænsning"
-
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Niveau fire tast med momayyez"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Frankrig"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Français (Fransk alternativ)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Fransk"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Fransk (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Fransk (forældet)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Fransk dvorak"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Fransk, Sun døde taster"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Fransk, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO bærbar"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "Generisk 101-taster PC"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generisk 102-taster (Intl) PC"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "Generisk 104-taster PC"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generisk 105-taster (Intl) PC"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Georgien"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Georgisk"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Georgisk AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Tysk (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Tysk, Sun døde taster"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Tysk, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Tyskland"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Grækenland"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Roteren"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Glædelig hacking tastatur"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Glædelig hacking tastatur til Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Hausa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia tastatur"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Sekstentals"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hindi bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Homofonisk"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Ung"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Ungarn"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper ligger på Win-tasterne"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "ISO-alternativ"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Island"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Inkludere død tilde"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Indien"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "International (AltGr døde taster)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "International (med døde taster)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Irland"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irk"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Italien"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Japan"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx serier)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Japanske tastaturvalg"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Jpn"
-
-# The Kalmyk language (Хальмг келн; also known as Kalmuck,
-# Calmouk, Qalmaq, Kalmytskii Jazyk, Khal:mag, Volga Oirat,
-# Weilate, Western Mongol) is the language spoken by the
-# Kalmyks, that is, the Oirats of Kalmykia (Russian Federation).
-# Kalmyk belongs to the Oirat subgroup of the Mongolic language family.
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Kalmyk"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "Kana låsetast låser"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Kashubian"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kazakh med russisk"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kazakstan"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Kenya"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Tastsekvens for at slå X-serveren ned"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Tast for at vælge tredje niveau"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Tast for at vælge femte niveau"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Tast(er) for at skifte layout"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Kikuyu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Republikken Korea"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kurdisk, (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdisk, arabisk-latin"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdisk, latin Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kurdisk, latin Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Bærbar Compaq (fx Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Bærbar/notebook Compaq (fx Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Bærbar/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Latinamerika"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Latin unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Latin unicode qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Latin unicode"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Latin unicode qwerty"
-
-# guillemets er dem her: »«
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Latin med gullemeter"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Letland"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Layout ændring på gange-/divideretast"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Venstre Alt"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Venstre Alt (mens trykket ned)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Venstre Alt ombyttes med venstre Win-tast"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Venstre Ctrl"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Venstre Ctrl (skifter til første layout), Højre Ctrl (skifter til sidste layout)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Venstre Ctrl+Venstre Skift"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Venstre Skift"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Venstre Win"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Venstre Win (skifter til første layout), Højre Win/Menu (skifter til sidste layout)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Venstre Win-tast (mens trykket ned)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Venstre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Venstre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Venstre hånd"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Venstrehåndet dvorak"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Forældet"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Forældet Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Forældet tast med komma"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Forældet tast med punktum"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Litauen"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (alternativ valg)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (alternativ tilvalg 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 ekstra taster via G15daemon"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Generic Keyboard"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Nedre Sorbian"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "Nedre Sorbian (qwertz)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Lit"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Makedonien"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (internationalt)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh gammel"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, sun døde taster"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "Gør Caps Lock til en ekstra rettelsestast"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "Gør Caps Lock til en ekstra Ctrl"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "Gør Caps Lock til en ekstra Esc"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "Gør Caps Lock til en ekstra Hyper"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "Gør Caps Lock til en ekstra NumLock"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "Gør Caps Lock til en ekstra Super"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Maldiverne"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Maltesisk tastatur med US-layout"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta ligger på venstre Win-tast"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta ligger på Win-tasterne"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, svensk"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Diverse kompatibilitetsvalg"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Mongoliet"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Marokko"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Flersproget"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Flersproget, første del"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Flersproget, anden del"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Burma"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "NICOLA-F-stil rettelsestast"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo for esperanto"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo for USA-tastaturer"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Holland"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Ny fonetisk"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "Hollandsk"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Ubrydelig mellemrumskarakter på fjerde niveau"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Ubrydelig mellemrumskarakter på fjerde niveau, tynd ubrydelige mellemrumskarakter på sjette niveau"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Ubrydelig mellemrumskarakter på fjerde niveau, tynd ubrydelige mellemrumskarakter på sjette niveau (via Ctrl+Skift)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "Ubrydelig mellemrumskarakter på andet niveau"
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "Ubrydelig mellemrumskarakter på tredje niveau"
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Ubrydelig mellemrumskarakter på tredje niveau, intet på fjerde niveau"
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Ubrydelig mellemrumskarakter på tredje niveau, tynd ubrydelig mellemrumskarakter på fjerde niveau"
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Nordligt saami"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Nordligt saami, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Norge"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "Num Lock"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Numerisk tastatur slettetast opførsel"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Numerisk tastatur taster fungerer som med Mac"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Numerisk tastatur layout udvælgelse"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC Pashto"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC sydlig uzbek"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "Occitansk"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "Ossetisk"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "Ossetisk, Winkeys"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "Ossetisk, forældet"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "PC-98xx-serien"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Pakistan"
-
-# Pannonian Rusyn or simply Rusyn (Ruthenian) is a Slavic language or dialect spoken
-# in north-western Serbia and eastern Croatia
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Pannonian Rusyn homofoni"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Pashto"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Pause"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Persisk, med persisk numerisk tastatur"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Fonetisk"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Fonetiske Wintaster"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Polen"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Polytonisk"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Programmørdvorak"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "Prtsc"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Højre Alt"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Højre Alt (mens trykket ned)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Højre Alt vælge femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Højre Alt vælge femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Højre Alt-tast vælger aldrig tredje niveau"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Højre Alt-tast, Skift+højre Alt-tast er fler_tast"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Højre Ctrl"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Højre Ctrl-tast (mens trykket ned)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Højre Ctrl-tast virker som højre Alt"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Højre Ctrl+Højre Skift"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Højre Skift"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Højre Win"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Højre Win-tast (mens trykket ned)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Højre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Højre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Højre hånd"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Højre hånd dvorak"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Rumænien"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Rumænsk tastatur med tyske bogstaver"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Rumænsk tastatur med tyske bogstaver, eliminer døde taster"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "Rum"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Rusland"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Russisk"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Russisk fonetisk"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Russisk fonetisk dvorak"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Russisk fonetisk, slå døde taster fra"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Russisk med kazakh"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Semikolon på tredje niveau"
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Serbien"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Serbisk"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Skift afbryder Caps Lock"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Skift afbryder ikke Num Lock, vælger tredje niveau i steden for"
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Skift med numeriske taster virker som i MS Windows"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Skift+Caps Lock"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "Simpel"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Sindhi"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Slovakiet"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Slovenien"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Sydafrika"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Sydlig uzbek"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Spanien"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Specialtaster (Ctrl+Alt+&lt;key&gt;) håndteret i en server"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Standard"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Standard (Cedilla)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "Standard RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "Standard-RSTU på russisk layout"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun type 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Sun døde taster"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Ombyt Ctrl og Caps Lock"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Ombyt ESC og Caps Lock"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "Sve"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Sverige"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Schweiz"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet-pc)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Syrien"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Syrisk"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Syrisk fonetisk"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Tadjikistan"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Tamil"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Tamilsk tastatur med numre"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB-skrivemaskine"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII-skrivemaskine"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Tamil unicode"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Tanzania"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Tatar"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Thailand"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Tibetansk"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetansk (med ASCII-numre)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Tifinagh alternativ"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Tifinagh alternativ fonetisk"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Tifinagh udvidet"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Tifinagh udvidet fonetisk"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Tifinagh fonetisk"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Tilde (~) variant"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Til den tilsvarende tast i et Dvoraktastatur."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Til den tilsvarende tast på et Qwertytastatur."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Traditionel fonetisk"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "Tyr"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Tyrkiet"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:EU-tilstand)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (106:JP-tilstand)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Skrivemaskine"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Skrivemaskine, forældet"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "UCW-layout (kun bogstaver med accent)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "US Dvorak med CZ UCW-understøttelse"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "US-tastatur med bosniske digrafer"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "US-tastatur med bosniske bogstaver"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "US-tastatur med kroatiske digrafer"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "US-tastatur med kroatiske bogstaver"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "US-tastatur med esttiske bogstaver"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "US-tastatur med italienske bogstaver"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "US-tastatur med litauiske bogstaver"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "US-tastatur med slovenske bogstaver"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Unicode tilføjelser (pile og matematiske tegn)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Unicode tilføjelser (pile og matematiske tegn). Matematiske tegn på standardniveau"
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "United Kingdom"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, alternativ fonetisk"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Urdu, fonetisk"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Win-taster"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Anvend bosniske digrafer"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Anvend kroatiske digrafer"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Anvend guillemeter som anførelsestegn"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Brug tastatur-LED til at vise alternativ layout"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Brug mellemrum for at indtaste ubrydelig mellemrumskarakter"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Normal mellemrum på alle niveauer"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Wang 724 numerisk tastatur med unicode tilføjelser (pile og matematiske tegn)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Wang 724 numerisk tastatur med unicode tilføjelser (pile og matematiske tegn). Matematiske tegn på standardniveau"
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Vestlig"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Win-taster"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "Med &lt;\\|&gt; tast"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "Med eurotegn på 5"
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "Med guillemeter"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Yakut"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Yoruba"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "Z og ZHE ombyttet"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "Zaf"
-
-# The zero-width non-joiner (ZWNJ) is a non-printing character used in the computerized
-# typesetting of some cursive scripts, or other scripts which make use of ligatures,
-# such as Devanagari. When placed between two characters that would otherwise be
-# connected, a ZWNJ causes them to be printed in their final and initial forms,
-# respectively. This is also an effect of a space character, but a ZWNJ is used when it
-# is desirable to keep the words closer together. The ZWNJ is represented in Unicode
-# is U+200C, and can be represented in HTML as &#x200C;, &#8204; or &zwnj;. Kilde eng.
-# wikipedia 12. maj 2010
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt mellemrumstegn på tredje niveau"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt på mellemrum på tredje niveau"
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt mellemrumstegn på tredje niveau"
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt mellemrumstegn på tredje niveau, ubrydeligt mellemrumstegn (ZWNJ) på fjerde niveau"
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ombrydeligt mellemrumstegn på tredje niveau"
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ombrydeligt mellemrumstegn på tredje niveau, ubrydeligt mellemrumsteng på fjerde niveau"
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på tredje niveau, ombrydeligt mellemrumstegn på fjerde niveau"
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "azerty/cifre"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "cifre"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "forkert placeret semikolon og anførelsestegn (forældet)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, udvidet omvendt skråstreg"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "qwerty/cifre"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-# Avestisk er et uddødt iransk sprog
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "Avestisk"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Sammensætte accenter fremfor døde taster"
-
-# http://en.wikipedia.org/wiki/Interior_Salish_languages
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "International (AltGr Unicode sammensætning)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "International (AltGr Unicode sammensætning, alternativ)"
+# Danish translation of xkeyboard-config.
+# Copyright (C) 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Ole Laursen <olau@hardworking.dk>, 2003.
+# Joe Hansen <joedalton2@yahoo.dk>, 2008, 2009, 2010, 2011.
+# Korrekturlæsning "Lars Christian Jensen" <larschrjensen@gmail.com>, 2010.
+#
+# Backspace = rettelsestast
+# caps lock = caps lock (kunne nok også være lås skift)
+# compose = compose (uafklaret, en streng er tilbage med den)
+#
+# Jeg tror at når der står "compose" i forbindelse med tastaturer er der
+# en specialtast til at skrive en email med "Compose email", derfor
+# synes jeg at det vil være det bedste at kalde det en "Skriv e-mail
+# tast" og så skrive "compose" bagefter i parentes. (kenneths besked, se også Kelds)
+# Torben: Jeg mener, det er en særlig tast til at sammensætte specialtegn med fx.
+# <compose> 'e -> é
+# For at afprøve det satte jeg højre windowstast op til at være
+# compose-tast og det virker!
+#
+# delete key = slettetast
+# digraph = digraf (En digraf er to bogstaver, der repræsenterer én lyd.
+# En digraf er ikke det samme som en ligatur.) Eksempler: "hj" og "hv"
+# i "hjælp", "hvis" og "hvordan", eller "ph" i engelsk "phone". Kilde
+# dansk wikipedia
+# keypad = numerisk tastatur
+# legacy = forældet
+# pressed = trykket ned (ikke nedtrykket)
+# tilde = tilde
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config-2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-23 23:06+0100\n"
+"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Mindre end/Større end&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Mindre end/Større end&gt; vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Mindre end/Større end&gt; vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Forældet) Alternativ"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Forældet) Alternativ, Sun døde taster"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Forældet) Alternativ, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104 tastkompatibel"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/komma/Døde taster"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/komma/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/punktum/Døde taster"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/punktum/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/komma/Døde taster"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/komma/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/punktum/Døde taster"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/punktum/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/komma/Døde taster"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/komma/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/punktum/Døde taster"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/punktum/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/komma/Døde taster"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/komma/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/punktum/Døde taster"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/punktum/Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+# ATM = hæveautomat, måske skal det oversættes.
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "ATM/telefonstil"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Acer bærbar"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "Tilføj standardopførslen til menutasten"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Tilføjelse af esperanto accent circonflexe (supersigno)"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Tilføjelse af valutategn til bestemte taster"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Albanien"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt og Meta er på Alt-tasterne"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt ligger på den højre Win-tast og Super på Menu"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Caps Lock"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Skift"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Mellemrum"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win-tasteopførsel"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Alternative"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Alternativ østlig"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Alternativ fonetisk"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Alternativ international"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Alternativ, Sun døde taster"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativ, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Alternativ, kun latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Enhver Alt-tast"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Enhver Win-tast"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Enhver Win-tast (mens trykket ned)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Apostrof (') variant"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apples aluminiumstastatur (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apples aluminiumstastatur (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apples aluminiumstastatur (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apples aluminiumstastatur: Emuler PC-taster (Udskriv, Scroll Lock, Pause, NumLock)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Apple bærbar"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Armenien"
+
+# Asturian (Asturian: Asturianu or Bable) is a Romance
+# language of the West Iberian group, Astur-Leonese
+# Subgroup, spoken in the Spanish province of Asturias
+# by the Asturian people.
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Asturisk variant med bundpunktum H og bundpunktum L"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Asus bærbar"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "Nederst til venstre"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "Til venstre for 'A'"
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Østrig"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Øst"
+
+# The Avatime are an Akan people who live in Volta region of Ghana. History has it
+# that they are Ahanta people who migrated to the Volta region.
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "Ase"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Aserbajdsjan"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF-multimedie"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U minitrådløst internet og spil"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Omvendt skråstreg"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Bashkirian"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Hviderusland"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Belgien"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Bengali"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Bengali probhat"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomisk, Dvorakmåde"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomisk, Dvorakmåde, kun latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Bibelsk hebraisk (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnien-herzegovina"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "Begge Alt-taster sammen"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "Begge Ctrl-taster sammen"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "Begge skiftetaster sammen"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Begge skiftetaster sammen skifter Caps Lock"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Blindskrift"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Brasilien"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Breton"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Bulgarien"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Cambodia"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Canada"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Capewell-dvorak (baybayin)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Capewell-dvorak (latin)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Capewell-QWERF 2006 (baybayin)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Capewell-QWERF 2006 (latin)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (skifter til første layout), Skift+Caps Lock (skifter til sidste layout)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (mens presset ned), Alt+Caps Lock udfører den oprindleige capslockhandling"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock agerer som skiftetasten med lås. Skift »pauser« Caps Lock"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock agerer som skiftetasten med lås. Skift påvirker ikke Caps Lock"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "Caps Lock er slået fra"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Opførsel for Caps Lock-tast"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Caps Lock ændrer Skift så alle taster bliver påvirket"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Caps Lock slår små/store bogstaver til/fra"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock bruger intern forstørrelse af bogstaver. Skift sætter Caps Lock »på hold«"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock bruger intern forstørrelse af bogstaver. Skift påvirker ikke Caps Lock"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Katalansk variant med midterpunktum L"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Cedille"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UBEGRÆNSET"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternativ)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "Kina"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Chusvash"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Chuvash latin"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Klassisk"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Klassisk Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Klassisk, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+# http://en.wikipedia.org/wiki/Baybayin
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Colemak (baybayin)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Colemak (latin)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 taster)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 taster)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 taster)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "Placering af Composetast"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Congo, Den Demokratiske Republik"
+
+# Backspace kunne også være Slet tilbage
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Rettelsestast"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Kontrol ligger på Alt-tasterne, Alt ligger på Win-tasterne"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Kontrol ligger på Win-tasterne (og de normale Ctrl-taster)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Krimsk tatar (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Krimsk tatar (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Krimsk tatar (Tyrkisk Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Krimsk tatar (Tyrkisk F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Krimsk tatar (Tyrkisk Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Kroatien"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Ctrl-tast placering"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Skift"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Kyrillisk"
+
+# guillemets er dem her: »«
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Kyrillisk med guillemeter"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Kyrillisk, Z og ZHE ombyttet"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "Tje"
+
+# engelsk fejl her? Hedder det ikke Czech Republic
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Tjekkiet"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Død accent"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Død accent grave"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Standard numerisk tastatur taster"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell 101-taster PC"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell bærbar/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell bærbar/notebook Precision M series"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude series bærbar"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell Sk-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia tastatur"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Danmark"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "Tys"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802-serien"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Dvorak (baybarin)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Dvorak (latin)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (UK tegnsætning)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak alternativ international (ingen døde taster)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak international (med døde taster)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, polske anførelsestegn på tast 1"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, polske anførelsestegn på anførelsestast"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Østlig"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Slå døde taster fra"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Slå ekstra typografiske karakterer til"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Engelsk"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Engelsk (USA international)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Engelsk (USA Macintosh)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Engelsk med rupeetegn"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Retur på numerisk tastatur"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonomisk"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Estland"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "Eti"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Etiopien"
+
+# Euro på 2, 2 euro, Euro på tasten 2
+# Det handler om en tildeling af eurotegnet til tasten 2, og der er "Euro
+# på to" mere beskrivende, selv om strengen isoleret set stadig kan være
+# forvirrende. Når teksten står i en sammenhæng, er det nok ikke så
+# vigtigt om det er det ene eller det andet.
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Euro på 2"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Euro på 4"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Euro på 5"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Euro på E"
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Udvidet"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Udvidet - Wintaster"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Udvidet omvendt skråstreg"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "F-bogstav (F) variant"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Færøerne"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Finland"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Niveau fire tast med abstrakt adskillelser"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Niveau fire tast med komma"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Niveau fire tast med punktum"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Niveau fire tast med punktum, latin-9 begrænsning"
+
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Niveau fire tast med momayyez"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "Frankrig"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Français (Fransk alternativ)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Fransk"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Fransk (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Fransk (forældet)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Fransk dvorak"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Fransk, Sun døde taster"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Fransk, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO bærbar"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "Generisk 101-taster PC"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generisk 102-taster (Intl) PC"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "Generisk 104-taster PC"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generisk 105-taster (Intl) PC"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Georgien"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Georgisk"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Georgisk AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Tysk (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Tysk, Sun døde taster"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Tysk, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Tyskland"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Grækenland"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Roteren"
+
+# http://en.wikipedia.org/wiki/HTC_Dream
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC-Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Glædelig hacking tastatur"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Glædelig hacking tastatur til Mac"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "Hausa"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia tastatur"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Sekstentals"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Hindi bolnagri"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Homofonisk"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "Htc Dream-telefon"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "Ung"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper ligger på Win-tasterne"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "ISO-alternativ"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Island"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Inkludere død tilde"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "Indien"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "International (AltGr døde taster)"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "International (med døde taster)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Irland"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "Irk"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Italien"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Japan"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx serier)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Japanske tastaturvalg"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "Jpn"
+
+# The Kalmyk language (Хальмг келн; also known as Kalmuck,
+# Calmouk, Qalmaq, Kalmytskii Jazyk, Khal:mag, Volga Oirat,
+# Weilate, Western Mongol) is the language spoken by the
+# Kalmyks, that is, the Oirats of Kalmykia (Russian Federation).
+# Kalmyk belongs to the Oirat subgroup of the Mongolic language family.
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Kalmyk"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kana 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "Kana låsetast låser"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Kashubian"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "Kazakh med russisk"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Kazakstan"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Kenya"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Tastsekvens for at slå X-serveren ned"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Tast for at vælge tredje niveau"
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Tast for at vælge femte niveau"
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "Tast(er) for at skifte layout"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Kikuyu"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Republikken Korea"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Kurdisk, (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdisk, arabisk-latin"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdisk, latin Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Kurdisk, latin Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Bærbar Compaq (fx Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Bærbar/notebook Compaq (fx Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Bærbar/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Latinamerika"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Latin unicode"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Latin unicode qwerty"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Latin unicode"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Latin unicode qwerty"
+
+# guillemets er dem her: »«
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Latin med gullemeter"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Letland"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Layout ændring på gange-/divideretast"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Venstre Alt"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Venstre Alt (mens trykket ned)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "Venstre Alt ombyttes med venstre Win-tast"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Venstre Ctrl"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Venstre Ctrl (skifter til første layout), Højre Ctrl (skifter til sidste layout)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Venstre Ctrl+Venstre Skift"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Venstre Skift"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Venstre Win"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Venstre Win (skifter til første layout), Højre Win/Menu (skifter til sidste layout)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Venstre Win-tast (mens trykket ned)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Venstre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Venstre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Venstre hånd"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Venstrehåndet dvorak"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Forældet"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Forældet Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Forældet tast med komma"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Forældet tast med punktum"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (alternativ valg)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (alternativ tilvalg 2)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 ekstra taster via G15daemon"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Generic Keyboard"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Nedre Sorbian"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Nedre Sorbian (qwertz)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "Lit"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Makedonien"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (internationalt)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Macintosh gammel"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, sun døde taster"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Gør Caps Lock til en ekstra rettelsestast"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Gør Caps Lock til en ekstra Ctrl"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "Gør Caps Lock til en ekstra Esc"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Gør Caps Lock til en ekstra Hyper"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Gør Caps Lock til en ekstra NumLock"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "Gør Caps Lock til en ekstra Super"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Maldiverne"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Maltesisk tastatur med US-layout"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Mari"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "Meta ligger på venstre Win-tast"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "Meta ligger på Win-tasterne"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta på venstre Ctrl"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, svensk"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Diverse kompatibilitetsvalg"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Mongoliet"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Marokko"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Flersproget"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Flersproget, første del"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Flersproget, anden del"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Burma"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "NICOLA-F-stil rettelsestast"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Nativo for esperanto"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Nativo for USA-tastaturer"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Holland"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Ny fonetisk"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "Hollandsk"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Ubrydelig mellemrumskarakter på fjerde niveau"
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Ubrydelig mellemrumskarakter på fjerde niveau, tynd ubrydelige mellemrumskarakter på sjette niveau"
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Ubrydelig mellemrumskarakter på fjerde niveau, tynd ubrydelige mellemrumskarakter på sjette niveau (via Ctrl+Skift)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "Ubrydelig mellemrumskarakter på andet niveau"
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "Ubrydelig mellemrumskarakter på tredje niveau"
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Ubrydelig mellemrumskarakter på tredje niveau, intet på fjerde niveau"
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Ubrydelig mellemrumskarakter på tredje niveau, tynd ubrydelig mellemrumskarakter på fjerde niveau"
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Nordligt saami"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Nordligt saami, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Norge"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Numerisk tastatur slettetast opførsel"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Numerisk tastatur taster fungerer som med Mac"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Numerisk tastatur layout udvælgelse"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC Pashto"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC sydlig uzbek"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Occitansk"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Ossetisk"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Ossetisk, Winkeys"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Ossetisk, forældet"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "PC-98xx-serien"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Pakistan"
+
+# Pannonian Rusyn or simply Rusyn (Ruthenian) is a Slavic language or dialect spoken
+# in north-western Serbia and eastern Croatia
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Pannonian Rusyn homofoni"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Pashto"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pause"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Persisk, med persisk numerisk tastatur"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "Fil"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Filippinerne"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Fonetisk"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Fonetiske Wintaster"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Polen"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Polytonisk"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Programmørdvorak"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "Prtsc"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (baybayin)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Højre Alt"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Højre Alt (mens trykket ned)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Højre Alt vælge femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Højre Alt vælge femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Højre Alt-tast vælger aldrig tredje niveau"
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Højre Alt-tast, Skift+højre Alt-tast er fler_tast"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Højre Ctrl"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Højre Ctrl-tast (mens trykket ned)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Højre Ctrl-tast virker som højre Alt"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Højre Ctrl+Højre Skift"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Højre Skift"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Højre Win"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Højre Win-tast (mens trykket ned)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Højre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Højre Win-tast vælger femte niveau, låser når trykket ned sammen med en anden femte niveauvælger, et tryk frigiver låsen"
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Højre hånd"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Højre hånd dvorak"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Rumænien"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Rumænsk tastatur med tyske bogstaver"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Rumænsk tastatur med tyske bogstaver, eliminer døde taster"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "Rum"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "4 rupee"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Rusland"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Russisk"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Russisk fonetisk"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Russisk fonetisk dvorak"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Russisk fonetisk, slå døde taster fra"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "Russisk med kazakh"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Semikolon på tredje niveau"
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbien"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Serbisk"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Serbisk-kroatisk"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Skift afbryder Caps Lock"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Skift afbryder ikke Num Lock, vælger tredje niveau i steden for"
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Skift med numeriske taster virker som i MS Windows"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Skift+Caps Lock"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Simpel"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Slovakiet"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Slovenien"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Sydafrika"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "Sydlig uzbek"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Spanien"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Specialtaster (Ctrl+Alt+&lt;key&gt;) håndteret i en server"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Standard"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Standard (Cedilla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Standard RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Standard-RSTU på russisk layout"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun type 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Sun døde taster"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Ombyt Ctrl og Caps Lock"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Ombyt ESC og Caps Lock"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "Sve"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Sverige"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Schweiz"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet-pc)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Syrien"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Syrisk"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Syrisk fonetisk"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Tadjikistan"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Tamilsk tastatur med numre"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB-skrivemaskine"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII-skrivemaskine"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Tamil unicode"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Tanzania"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "Tatar"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Thailand"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Tibetansk"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetansk (med ASCII-numre)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Tifinagh alternativ"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Tifinagh alternativ fonetisk"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Tifinagh udvidet"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh udvidet fonetisk"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh fonetisk"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Tilde (~) variant"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Til den tilsvarende tast i et Dvoraktastatur."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Til den tilsvarende tast på et Qwertytastatur."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Skift pegetaster med Skift + NumLock."
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Traditionel fonetisk"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "Tyr"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Tyrkiet"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:EU-tilstand)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (106:JP-tilstand)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Skrivemaskine"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Skrivemaskine, forældet"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "UCW-layout (kun bogstaver med accent)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "US Dvorak med CZ UCW-understøttelse"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "US-tastatur med bosniske digrafer"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "US-tastatur med bosniske bogstaver"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "US-tastatur med kroatiske digrafer"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "US-tastatur med kroatiske bogstaver"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "US-tastatur med esttiske bogstaver"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "US-tastatur med italienske bogstaver"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "US-tastatur med litauiske bogstaver"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "US-tastatur med slovenske bogstaver"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Udmurt"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Unicode tilføjelser (pile og matematiske tegn)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Unicode tilføjelser (pile og matematiske tegn). Matematiske tegn på standardniveau"
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "United Kingdom"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, alternativ fonetisk"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Urdu, fonetisk"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Win-taster"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Anvend bosniske digrafer"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Anvend kroatiske digrafer"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "Anvend guillemeter som anførelsestegn"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Brug tastatur-LED til at vise alternativ layout"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "Brug mellemrum for at indtaste ubrydelig mellemrumskarakter"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Normal mellemrum på alle niveauer"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Usbekistan"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Wang 724 numerisk tastatur med unicode tilføjelser (pile og matematiske tegn)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Wang 724 numerisk tastatur med unicode tilføjelser (pile og matematiske tegn). Matematiske tegn på standardniveau"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Vestlig"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Win-taster"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "Med &lt;\\|&gt; tast"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "Med eurotegn på 5"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "Med guillemeter"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "Yakut"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "Z og ZHE ombyttet"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "Zaf"
+
+# The zero-width non-joiner (ZWNJ) is a non-printing character used in the computerized
+# typesetting of some cursive scripts, or other scripts which make use of ligatures,
+# such as Devanagari. When placed between two characters that would otherwise be
+# connected, a ZWNJ causes them to be printed in their final and initial forms,
+# respectively. This is also an effect of a space character, but a ZWNJ is used when it
+# is desirable to keep the words closer together. The ZWNJ is represented in Unicode
+# is U+200C, and can be represented in HTML as &#x200C;, &#8204; or &zwnj;. Kilde eng.
+# wikipedia 12. maj 2010
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt mellemrumstegn på tredje niveau"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt på mellemrum på tredje niveau"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt mellemrumstegn på tredje niveau"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ubrydeligt mellemrumstegn på tredje niveau, ubrydeligt mellemrumstegn (ZWNJ) på fjerde niveau"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ombrydeligt mellemrumstegn på tredje niveau"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på andet niveau, ombrydeligt mellemrumstegn på tredje niveau, ubrydeligt mellemrumsteng på fjerde niveau"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Ubrydeligt mellemrumstegn (ZWNJ) på tredje niveau, ombrydeligt mellemrumstegn på fjerde niveau"
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "azerty/cifre"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "cifre"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "forkert placeret semikolon og anførelsestegn (forældet)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, udvidet omvendt skråstreg"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "qwerty/cifre"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+# Avestisk er et uddødt iransk sprog
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avestisk"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Sammensætte accenter fremfor døde taster"
+
+# http://en.wikipedia.org/wiki/Interior_Salish_languages
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "International (AltGr Unicode sammensætning)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "International (AltGr Unicode sammensætning, alternativ)"
diff --git a/xorg-server/xkeyboard-config/po/de.po b/xorg-server/xkeyboard-config/po/de.po
index 472b1cbc2..50a43f3cd 100644
--- a/xorg-server/xkeyboard-config/po/de.po
+++ b/xorg-server/xkeyboard-config/po/de.po
@@ -1,3231 +1,3322 @@
-# German translation of xkeyboard-config.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009.
-# Mario Blättermann <mariobl@gnome.org>, 2009, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config-2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-16 11:56+0100\n"
-"Last-Translator: Mario Blättermann <mariobl@gnome.org>\n"
-"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: German\n"
-"X-Poedit-Country: GERMANY\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Kleiner als/größer als&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Kleiner als/Größer als&gt; wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Kleiner als/Größer als&gt; wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "Alternative (veraltet)"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "Alternative (veraltet), Sun-Akzenttasten"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "Alternative (veraltet), ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "101/104-Tasten kompatibel"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/Komma/Akzenttasten"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/Komma/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/Punkt/Akzenttasten"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/Punkt/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/Komma/Akzenttasten"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/Komma/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/Punkt/Akzenttasten"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/Punkt/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/Komma/Akzenttasten"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/Komma/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/Punkt/Akzenttasten"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/Punkt/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/Komma/Akzenttasten"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/Komma/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/Punkt/Akzenttasten"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/Punkt/ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "ATM/Telefonstil"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Acer Laptop"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Standardverhalten zur Menütaste hinzufügen"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Esperanto-Circumflex (^) hinzufügen (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Euro-Symbol zu verschiedenen Tasten hinzufügen"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albanien"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt und Meta befinden sich auf den Alt-Tasten."
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt ist der rechten Win-Taste zugeordnet und Super der Menü-Taste."
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+Feststelltaste"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Strg"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Umschalttaste"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Leertaste"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Verhalten der Alt/Windows-Tasten"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternative"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternative, östlich"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternative, phonetisch"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternative international"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternative, Sun-Akzenttasten"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternative, ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternative, nur latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Beliebige Alt-Taste"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Beliebige Windows-Taste"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Beliebige Windows-Taste (gedrückt halten)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Apostroph-Variante (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Apple Aluminium Keyboard (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Apple Aluminium Keyboard (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Apple Aluminium Keyboard (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Apple Aluminium Keyboard: PC-Tasten emulieren (Druck, Scroll_Lock, Pause, NumLock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Apple-Laptop"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Arabisch"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenien"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Asturische Variante mit unterpunktetem L und H"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Asus-Laptop"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Unten links"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Links von »A«"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Österreich"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Aserbaidschan"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Backslash"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Bangladesch"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Baschkirisch"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Weißrussland"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Belgien"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Bengalisch"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Bengali Probhat"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomisch, Dvorak-ähnlich"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomisch, Dvorak-ähnlich, nur latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Althebräisch (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnien-Herzegowina"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Beide Alt-Tasten gleichzeitig"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Beide Steuerungstasten gleichzeitig"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Beide Umschalttasten gleichzeitig"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Beide Umschalttasten gleichzeitig schalten CapsLock ein und aus"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Brasilien"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Bretonisch"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bulgarien"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Kambodscha"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "Feststelltaste"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "Feststelltaste (zur ersten Belegung), Umschalttaste+Feststelltaste (zur letzten Belegung)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "Feststelltaste (gedrückt halten), Alt+Feststelltaste führen die normale Feststelltasten-Aktion aus"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "Feststelltaste arbeitet als Umschalttaste mit Sperrung. Umschalttaste »unterbricht« Feststelltaste"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "Feststelltaste arbeitet als Umschalttaste mit Sperrung. Umschalttaste beeinflusst Feststelltaste nicht"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "Feststelltaste ist deaktiviert"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Verhalten der Feststelltaste"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "Feststelltaste kehrt Umschalttaste um, so dass alle Tasten beeinflusst werden"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "Feststelltaste kehrt die normale Großschreibung alphabetischer Zeichen um"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "Feststelltaste verwendet interne Großschreibung. Umschalttaste »unterbricht« Feststelltaste"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "Feststelltaste verwendet interne Großschreibung. Umschalttaste beeinflusst Feststelltaste nicht"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Katalanische Variante mit mittelpunktiertem L"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Cedilla"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternative Option)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "China"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Tschuwaschisch"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Tschuwaschisch (lateinische Schrift)"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Klassisch"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Dvorak (klassisch)"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Klassisch, ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 Tasten)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 Tasten)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 Tasten)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Position der Compose-Taste"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Demokratische Republik Kongo"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Strg + Alt + Löschtaste"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Strg ist den Alt-Tasten zugeordnet, Alt ist den Windows-Tasten zugeordnet"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Strg ist den Win-Tasten zugeordnet (und den üblichen Strg-Tasten)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Krimtatarisch (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Krimtatarisch (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Krimtatarisch (Türkisch Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Krimtatarisch (Türkisch F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Krimtatarisch (Türkisch Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Kroatien"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Position der Strg-Taste"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Strg+Umschalttaste"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Kyrillisch"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Kyrillisch mit Anführungszeichen"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Kyrillisch, »З« und »Ж« vertauscht"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Tschechien"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Ohne Acute-(')Akzentzeichen"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Ohne Grave-(`) und Acute-(')Akzentzeichen"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Vorgegebene Nummernblocktasten"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell PC-Tastatur mit 101 Tasten"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/Notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Laptop/Notebook Precision-M-Serie"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude-Laptop"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keybard"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Dänemark"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802-Serie"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (britische Punktierung)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvorak Alternative international (ohne Akzenttasten)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak International (mit Akzenttasten)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, polnische Anführungszeichen auf Taste 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, polnische Anführungszeichen auf Taste mit Zitatzeichen"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Östlich"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Akzenttasten deaktivieren"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Typographische Sonderzeichen aktivieren"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Englisch"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Englisch (USA International)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Englisch (USA Macintosh)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Eingabetaste im Nummernblock"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Ergonomic"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Estland"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Äthiopien"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Erweitert"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Erweitert - Windows-Tasten"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Erweiterter Backslash"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "F-Variante"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Färöer-Inseln"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Finnland"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Taste der vierten Ebene mit abstrakten Trennern"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Taste der vierten Ebene mit Komma"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Taste der vierten Ebene mit Punkt"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Taste der vierten Ebene mit Punkt, latin-9-Einschränkung"
-
-# momayyez? Was ist das?
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Taste der vierten Ebene mit »momayyez«"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Frankreich"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Französisch (Französisch Alternative)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Französisch"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Französisch (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Französisch (veraltet)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Französisch (Dvorak)"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Französisch, Sun-Akzenttasten"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Französisch, ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO Laptop"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "Generische PC-Tastatur mit 101 Tasten"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generische PC-Tastatur mit 102 Tasten (Intl)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "Generische PC-Tastatur mit 104 Tasten"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generische PC-Tastatur mit 105 Tasten (Intl)"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Georgien"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Georgisch"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Georgisch, AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Deutsch (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Deutsch, Sun-Akzenttasten"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Deutsch, ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Deutschland"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Griechenland"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Keyboard"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "»Happy Hacking Keyboard« für Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Haussa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Hexadezimal"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Homophonic"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Ungarn"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper ist den Win-Tasten zugeordnet"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "ISO-Alternative"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Island"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Akzent-Tilde einschließen"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Indien"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "International (AltGr-Akzenttasten)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "International (mit Akzenttasten)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Irland"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Italien"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Japan"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx-Serie)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Japanische Tastaturoptionen"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Kalmückisch"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "Kana-Sperrtaste ist gesperrt"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Kaschubisch"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kasachisch mit russischer Belegung"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kasachstan"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Kenia"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Tastenkombination zum erzwungenen Beenden des X-Servers"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Taste zum Wechsel in die dritte Tastaturebene"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Taste zum Wechsel in die fünfte Tastaturebene"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Taste(n) zum Wechseln der Belegung"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Kikuyu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Korea, Republik"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kurdisch, (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdisch, Arabisch-Lateinisch"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdisch, Lateinisches Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kurdisch, Lateinisches Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kirgisistan"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Compaq Laptop/Notebook-Tastatur (z.B. Armada) Laptop-Tastatur"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Compaq Laptop/Notebook-Tastatur (z.B. Presario) Laptop-Tastatur"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Latein"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Lateinamerikanisch"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Latein (Unicode)"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Lateinische qwerty-Tastatur (Unicode)"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Lateinische qwerty-Tastatur"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Latein (Unicode)"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Lateinische qwerty-Tastatur (Unicode)"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Lateinisch mit Anführungszeichen"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Lettland"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Belegungsumschalter auf der Multiplikations-/Divisionstaste"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Linke Alt-Taste"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Linke Alt-Taste (gedrückt halten)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Linke Alt-Taste ist gegen linke Windows-Taste vertauscht"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Linke Strg-Taste"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Linke Strg-Taste (zur ersten Belegung), rechte Strg-Taste (zur letzten Belegung)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Linke Strg-Taste+Linke Umschalttaste"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Linke Umschalttaste"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Linke Windows-Taste"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Linke Windows-Taste (zur ersten Belegung), rechte Windows/Menütaste (zur letzten Belegung)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Linke Windows-Taste (gedrückt halten)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Linke Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Linke Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Linkshändig"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Dvorak (linkshändig)"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Veraltet"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Wang 724 (veraltet)"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Veraltete Taste mit Komma"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Veraltete Taste mit Punkt"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Litauen"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (alternative Option)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (alternative Option 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15-Sondertasten über den G1-Daemon"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Generische Logitech-Tastatur"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (Modell Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Niedersorbisch"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "Niedersorbisch (qwertz)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Mazedonien"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (International)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh (Alt)"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, Sun-Akzenttasten"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh (ohne Akzenttasten)"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "Feststelltaste als zusätzliche Löschtaste verwenden"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "Feststelltaste als zusätzliche Strg-Taste verwenden"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "Feststelltaste als zusätzliche Esc-Taste verwenden"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "Feststelltaste als zusätzliche Hyper-Taste verwenden"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "Feststelltaste als zusätzliche NumLock-Taste verwenden"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "Feststelltaste als zusätzliche Super-Taste verwenden"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Malediven"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Maltesische Tastatur mit US-Belegung"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Menü"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta ist der linken Windows-Taste zugeordnet"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta ist den Windows-Tasten zugeordnet"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Schwedisch"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Verschiedene Optionen zur Kompatibilität"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Mongolei"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Marokko"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Mehrsprachig"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Mehrsprachig, erster Teil"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Mehrsprachig, zweiter Teil"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "Löschtaste wie NICOLA-F"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo für Esperanto"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo für US-Tastaturen"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Niederlande"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Phonetisch, neu"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Nicht umbrechbares Leerzeichen in der vierten Tastaturebene"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Nicht umbrechbares Leerzeichen in der vierten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der sechsten Ebene"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Nicht umbrechbares Leerzeichen in der vierten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der sechsten Ebene (mit Strg + Umschalttaste)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "Nicht umbrechbares Leerzeichen in der zweiten Tastaturebene"
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "Nicht umbrechbares Leerzeichen in der dritten Tastaturebene"
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Nicht umbrechbares Leerzeichen in der dritten Tastaturebene, nichts in der vierten Ebene"
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Nicht umbrechbares Leerzeichen in der dritten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der vierten Ebene"
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Nördliches Saami"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Nördliches Saami, ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Norwegen"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Verhalten der Löschtaste des Nummernblocks"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Tasten des Nummernblocks arbeiten wie bei Mac"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Belegungsauswahl des Nummernblocks"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC Paschtunisch"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC Süd-Usbekisch"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "Okzitanisch"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internettastatur"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "Ossetisch"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "Ossetisch, Windows-Tasten"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "Ossetisch, veraltet"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "PC-98xx-Serie"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Pannonian Rusyn Homophonic"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Paschtunisch"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Pause"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Persisch. mit persischem Nummernblock"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Phonetisch"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Phonetisch, Windows-Tasten"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Polen"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Dvorak für Programmierer"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "Druck"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Rechte Alt-Taste"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Rechte Alt-Taste (gedrückt halten)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Rechte Alt-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Rechte Alt-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Rechte Alt-Taste wählt niemals die dritte Tastaturebene."
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Rechte Alt-Taste, Umschalttaste+rechte Alt-Taste ist Multi-Taste"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Rechte Strg-Taste"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Rechte Strg-Taste (gedrückt halten)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Rechte Strg-Taste wie rechte Alt-Taste"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Rechte Strg-Taste und rechte Umschalttaste"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Rechte Umschalttaste"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Rechte Windows-Taste"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Rechte Windows-Taste (gedrückt halten)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Rechte Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Rechte Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Rechtshändig"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Dvorak (rechtshändig)"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Rumänien"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Rumänische Tastatur mit deutschen Buchstaben"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Rumänische Tastatur mit deutschen Buchstaben, ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Russland"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Russisch"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Russisch (phonetisch)"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Russisch (phonetisch, Dvorak)"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Russisch (phonetisch), ohne Akzenttasten"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Russisch mit kasachischer Belegung"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "Rollen"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Semikolon in der dritten Tastaturebene"
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Serbien"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Serbisch"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Umschalttaste deaktiviert Feststelltaste"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Umschalttaste deaktiviert NumLock nicht, wechselt stattdessen in die dritte Tastaturebene"
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Umschalttaste funktioniert mit den Tasten des Nummernblocks wie in MS Windows"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Umschalt-+Feststelltaste"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "Einfach"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Sindhi"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Slowakei"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Slowenien"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Südafrika"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Süd-Usbekisch"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Spanien"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Spezialtasten für Server (Strg+Alt+&lt;Taste&gt;)"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Standard"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Standard (Cedilla)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "Standard RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "Standard-RSTU mit russischer Belegung"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun Typ 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Sun-Akzenttasten"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Strg-Taste und Feststelltaste vertauschen"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Esc und Feststelltaste vertauschen"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Schweden"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Schweiz"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Syrien"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Syrisch"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Syrisch (phonetisch)"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "Thai (TIS-620)"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Tadschikistan"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Tamilisch"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Tamilische Tastatur mit Ziffern"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Tamilisch (TAB Schreibmaschine)"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamilisch (TSCII Schreibmaschine)"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Tamilisch (Unicode)"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Tansania"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Tatarisch"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Thailand"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Tibetisch"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetanisch (mit ASCII-Ziffern)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Tifinagh (alternativ)"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Tifinagh (alternativ, phonetisch)"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Tifinagh (erweitert)"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Tifinagh (erweitert, phonetisch)"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Tifinagh (phonetisch)"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Tilde-Variante (~)"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Zur entsprechenden Taste einer Dvorak-Tastatur."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Zur entsprechenden Taste einer Qwerty-Tastatur."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Traditionell (phonetisch)"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Türkei"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Turkmenien"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:EU-Modus)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (106:JP-Modus)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Schreibmaschine"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Schreibmaschine, veraltet"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "UCW-Belegung (nur akzentuierte Buchstaben)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "US Dvorak mit CZ-UCW-Unterstützung"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "US-Tastatur mit bosnischen Digraphen"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "US-Tastatur mit bosnischen Buchstaben"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "US-Tastatur mit kroatischen Digraphen"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "US-Tastatur mit kroatischen Buchstaben"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "US-Tastatur mit estnischen Buchstaben"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "US-Tastatur mit italienischen Buchstaben"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "US-Tastatur mit litauischen Buchstaben"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "US-Tastatur mit slowenischen Buchstaben"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "Udmurtisch"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Unicode-Ergänzungen (Pfeile und mathematische Operatoren)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Unicode-Ergänzungen (Pfeile und mathematische Operatoren). Mathematische Operatoren befinden sich in der Standardebene."
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "Vereinigtes Königreich"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, Alternative (phonetisch)"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Urdu, phonetisch"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Windows-Tasten"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Bosnische Digraphen verwenden"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Kroatische Digraphen verwenden"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Anführungszeichen für Zitate verwenden"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Tastatur-LED zur Anzeige der alternativen Belegung verwenden"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Leertaste zur Eingabe nicht umbrechbarer Zeichen verwenden"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Leertaste gibt in jeder Ebene stets Leerzeichen aus"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Wang 724 mit Unicode-Ergänzungen (Pfeile und mathematische Operatoren)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Wang 724 mit Unicode-Ergänzungen (Pfeile und mathematische Operatoren). Mathematische Operatoren in der Standardebene"
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang Modell 724 (azerty)"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Westlich"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook Modell XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Win-Tasten"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "Mit &lt;\\|&gt;-Taste"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "mit Euro-Symbol auf »5«"
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "Mit Anführungszeichen"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Jakutisch"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Joruba"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "»З« und »Ж« sind vertauscht"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Ebene"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Tastaturebene, nichts in der vierten Ebene"
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der vierten Ebene"
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Tastaturebene, verbindendes Zeichen der Breite Null in der vierten Ebene"
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, verbindendes Zeichen der Breite Null in der dritten Ebene"
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, verbindendes Zeichen der Breite Null in der dritten Ebene, nicht umbrechbares Leerzeichen in der vierten Tastaturebene"
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Nicht verbindendes Zeichen der Breite Null in der dritten Ebene, verbindendes Zeichen der Breite Null in der vierten Ebene"
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "azerty/Ziffern"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "Ziffern"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "Falsch platziertes Semikolon und Anführungszeichen (veraltet)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "LyX"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, erweiterter Backslash"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "qwerty/Ziffern"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "Avestisch"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Akzente kombinieren, anstelle von Akzenttasten"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "International (AltGr-Unicode-Kombination)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "International (AltGr-Unicode-Kombination, alternativ)"
-
-#~ msgid "CapsLock"
-#~ msgstr "Feststelltaste"
-
-#~ msgid "ScrollLock"
-#~ msgstr "Rollen"
-
-#~ msgid "ACPI Standard"
-#~ msgstr "ACPI-Standard"
-
-#~ msgid "Bhu"
-#~ msgstr "Bhu"
-
-#~ msgid "DRC"
-#~ msgstr "DRC"
-
-#~ msgid "Dvorak international"
-#~ msgstr "Dvorak international"
-
-#~ msgid "Evdev-managed keyboard"
-#~ msgstr "Evdev-verwaltete Tastatur"
-
-#~ msgid "Gre"
-#~ msgstr "Gre"
-
-#~ msgid "Gui"
-#~ msgstr "Gui"
-
-#~ msgid "Lav"
-#~ msgstr "Lav"
-
-#~ msgid "Nep"
-#~ msgstr "Nep"
-
-#~ msgid "SrL"
-#~ msgstr "SrL"
-
-#~ msgid "Baltic+"
-#~ msgstr "Baltisch+"
-
-#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "Pro Keypad"
-#~ msgstr "Pro Keypad"
-
-#~ msgid "Standard Phonetic"
-#~ msgstr "Standard, phonetisch"
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "ABNT2 (Brasilianisch)"
-
-#~ msgid "Japanese 106-key"
-#~ msgstr "Japanisch (106 Tasten)"
-
-#~ msgid "Kir"
-#~ msgstr "Kir"
-
-#~ msgid "Korean 106-key"
-#~ msgstr "Koreanisch (106 Tasten)"
-
-#~ msgid "Super is mapped to Win keys"
-#~ msgstr "Super ist den Win-Tasten zugeordnet"
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "US-Tastatur mit slowenischen Digraphen"
-
-#~ msgid "Unicode"
-#~ msgstr "Unicode"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Slowenische Digraphen verwenden"
-
-#~ msgid "Add the EuroSign to the 2 key."
-#~ msgstr "Euro-Symbol zur Taste »2« hinzufügen."
-
-#~ msgid "Add the EuroSign to the 4 key."
-#~ msgstr "Euro-Symbol zur Taste »4« hinzufügen."
-
-#~ msgid "Add the EuroSign to the 5 key."
-#~ msgstr "Euro-Symbol zur Taste »5« hinzufügen."
-
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "Euro-Symbol zur Taste »E« hinzufügen."
-
-#~ msgid "Alt+Ctrl change layout."
-#~ msgstr "Alt+Strg ändern die Belegung."
-
-#~ msgid "Alt+Shift change layout."
-#~ msgstr "Alt-+Umschalttaste wechselt die Belegung."
-
-#~ msgid "CapsLock LED shows alternative layout."
-#~ msgstr "Feststelltasten-LED zeigt alternative Belegung an."
-
-#~ msgid "CapsLock key changes layout."
-#~ msgstr "Die Feststelltaste ändert die Belegung."
-
-#~ msgid "Ctrl+Shift change layout."
-#~ msgstr "Strg+Umschalttaste ändert die Belegung."
-
-#~ msgid "Hewlett-Packard Internet Keyboard 5181"
-#~ msgstr "Hewlett-Packard Internet Keyboard 5181"
-
-#~ msgid "Hewlett-Packard Internet Keyboard 5185"
-#~ msgstr "Hewlett-Packard Internet Keyboard 5185"
-
-#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#~ msgid "IBM Rapid Access II (alternate option)"
-#~ msgstr "IBM Rapid Access II (alternative Option)"
-
-#, fuzzy
-#~ msgid "LCtrl+LShift change layout."
-#~ msgstr "Beide Alt-Tasten gleichzeitig ändern die Belegung."
-
-#~ msgid "Layout switching"
-#~ msgstr "Umschalten der Belegung"
-
-#~ msgid "Left Alt key changes layout."
-#~ msgstr "Linke Alt-Taste wechselt die Belegung."
-
-#~ msgid "Left Ctrl key changes layout."
-#~ msgstr "Linke Strg-Taste wechselt die Belegung."
-
-#~ msgid "Left Shift key changes layout."
-#~ msgstr "Linke Umschalt-Taste wechselt die Belegung."
-
-#~ msgid "Left Win-key changes layout."
-#~ msgstr "Linke Windows-Taste wechselt die Belegung."
-
-#, fuzzy
-#~ msgid "Left Win-key is Compose."
-#~ msgstr "Linke Windows-Taste wechselt die Belegung."
-
-#, fuzzy
-#~ msgid "Legacy keypad"
-#~ msgstr "Altes Multi-Threading unterstützen"
-
-#, fuzzy
-#~ msgid "Menu is Compose."
-#~ msgstr "Der Menübaum ist leer"
-
-#~ msgid "Neostyle"
-#~ msgstr "Neostyle"
-
-#~ msgid "NumLock LED shows alternative layout."
-#~ msgstr "NumLock-LED zeigt alternative Belegung an."
-
-#~ msgid "Press Left Alt key to choose 3rd level."
-#~ msgstr "Linke Alt-Taste drücken, um in die dritte Tastaturebene zu gelangen."
-
-#~ msgid "Press Left Win-key to choose 3rd level."
-#~ msgstr "Linke Win-Taste drücken, um in die dritte Tastaturebene zu gelangen."
-
-#~ msgid "Press Right Alt key to choose 3rd level."
-#~ msgstr "Rechte Alt-Taste drücken, um in die dritte Tastaturebene zu gelangen."
-
-#~ msgid "Press Right Ctrl to choose 3rd level."
-#~ msgstr "Rechte Strg-Taste drücken, um in die dritte Tastaturebene zu gelangen."
-
-#~ msgid "Press Right Win-key to choose 3rd level."
-#~ msgstr "Rechte Win-Taste drücken, um in die dritte Tastaturebene zu gelangen."
-
-#~ msgid "Press any of Alt keys to choose 3rd level."
-#~ msgstr "Eine beliebige Alt-Taste drücken, um in die dritte Tastaturebene zu gelangen."
-
-#~ msgid "Press any of Win-keys to choose 3rd level."
-#~ msgstr "Eine beliebige Win-Taste drücken, um in die dritte Tastaturebene zu gelangen."
-
-#, fuzzy
-#~ msgid "Right Alt is Compose."
-#~ msgstr "rechter Rotationszähler ist negativ"
-
-#~ msgid "Right Alt key changes layout."
-#~ msgstr "Rechte Alt-Taste wechselt die Belegung."
-
-#~ msgid "Right Ctrl key changes layout."
-#~ msgstr "Rechte Ctrl-Taste wechselt die Belegung."
-
-#~ msgid "Right Shift key changes layout."
-#~ msgstr "Rechte Umschalt-Taste wechselt die Belegung."
-
-#~ msgid "Right Win-key changes layout."
-#~ msgstr "Rechte Windows-Taste wechselt die Belegung."
-
-#, fuzzy
-#~ msgid "Right Win-key is Compose."
-#~ msgstr "Rechte Windows-Taste wechselt die Belegung."
-
-#~ msgid "ScrollLock LED shows alternative layout."
-#~ msgstr "ScrollLock-LED zeigt alternative Belegung an."
-
-#~ msgid "Shift+CapsLock changes layout."
-#~ msgstr "Umschalt-+Feststelltaste wechselt die Belegung."
-
-#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-#~ msgstr "Tastencodes zweier Tasten vertauschen, wenn Mac-Tastaturen nicht korrekt vom Kernel erkannt werden."
-
-#~ msgid "Third level choosers"
-#~ msgstr "Auswahltasten der dritten Ebene"
-
-#~ msgid "Urdu"
-#~ msgstr "Urdu"
+# German translation of xkeyboard-config.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009.
+# Mario Blättermann <mariobl@gnome.org>, 2009, 2010, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config-2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-12 19:11+0100\n"
+"Last-Translator: Mario Blättermann <mariobl@gnome.org>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Kleiner als/größer als&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Kleiner als/Größer als&gt; wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Kleiner als/Größer als&gt; wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "Alternative (veraltet)"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "Alternative (veraltet), Sun-Akzenttasten"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "Alternative (veraltet), ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104-Tasten kompatibel"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/Komma/Akzenttasten"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/Komma/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/Punkt/Akzenttasten"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/Punkt/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/Komma/Akzenttasten"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/Komma/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/Punkt/Akzenttasten"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/Punkt/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/Komma/Akzenttasten"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/Komma/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/Punkt/Akzenttasten"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/Punkt/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/Komma/Akzenttasten"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/Komma/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/Punkt/Akzenttasten"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/Punkt/ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "ATM/Telefonstil"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Acer Laptop"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "Standardverhalten zur Menütaste hinzufügen"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Esperanto-Circumflex (^) hinzufügen (supersigno)"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Währungssymbole zu verschiedenen Tasten hinzufügen"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Albanien"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt und Meta befinden sich auf den Alt-Tasten."
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt ist der rechten Win-Taste zugeordnet und Super der Menü-Taste."
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Feststelltaste"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Strg"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Umschalttaste"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Leertaste"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Verhalten der Alt/Windows-Tasten"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Alternative"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Alternative, östlich"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Alternative, phonetisch"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Alternative international"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Alternative, Sun-Akzenttasten"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternative, ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Alternative, nur latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Beliebige Alt-Taste"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Beliebige Windows-Taste"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Beliebige Windows-Taste (gedrückt halten)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Apostroph-Variante (')"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apple Aluminium Keyboard (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apple Aluminium Keyboard (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apple Aluminium Keyboard (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apple Aluminium Keyboard: PC-Tasten emulieren (Druck, Scroll_Lock, Pause, NumLock)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Apple-Laptop"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Arabisch"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Armenien"
+
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Asturische Variante mit unterpunktetem L und H"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Asus-Laptop"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "Unten links"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "Links von »A«"
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Österreich"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Aserbaidschan"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Backslash"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Bangladesch"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Baschkirisch"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Weißrussland"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Belgien"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Bengalisch"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Bengali Probhat"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomisch, Dvorak-ähnlich"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomisch, Dvorak-ähnlich, nur latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Althebräisch (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnien-Herzegowina"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "Beide Alt-Tasten gleichzeitig"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "Beide Steuerungstasten gleichzeitig"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "Beide Umschalttasten gleichzeitig"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Beide Umschalttasten gleichzeitig schalten CapsLock ein und aus"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Brasilien"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Bretonisch"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Bulgarien"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Kambodscha"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Capewell-Dvorak (Baybayin)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Capewell-Dvorak (Lateinisch)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Capewell-QWERF 2006 (Baybayin)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Capewell-QWERF 2006 (Lateinisch)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "Feststelltaste"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Feststelltaste (zur ersten Belegung), Umschalttaste+Feststelltaste (zur letzten Belegung)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Feststelltaste (gedrückt halten), Alt+Feststelltaste führen die normale Feststelltasten-Aktion aus"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Feststelltaste arbeitet als Umschalttaste mit Sperrung. Umschalttaste »unterbricht« Feststelltaste"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Feststelltaste arbeitet als Umschalttaste mit Sperrung. Umschalttaste beeinflusst Feststelltaste nicht"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "Feststelltaste ist deaktiviert"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Verhalten der Feststelltaste"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Feststelltaste kehrt Umschalttaste um, so dass alle Tasten beeinflusst werden"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Feststelltaste kehrt die normale Großschreibung alphabetischer Zeichen um"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Feststelltaste verwendet interne Großschreibung. Umschalttaste »unterbricht« Feststelltaste"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Feststelltaste verwendet interne Großschreibung. Umschalttaste beeinflusst Feststelltaste nicht"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Katalanische Variante mit mittelpunktiertem L"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Cedilla"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternative Option)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "China"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Tschuwaschisch"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Tschuwaschisch (lateinische Schrift)"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Klassisch"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Dvorak (klassisch)"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Klassisch, ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Colemak (Baybayin)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Colemak (Lateinisch)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 Tasten)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 Tasten)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 Tasten)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "Position der Compose-Taste"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Demokratische Republik Kongo"
+
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Strg + Alt + Löschtaste"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Strg ist den Alt-Tasten zugeordnet, Alt ist den Windows-Tasten zugeordnet"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Strg ist den Win-Tasten zugeordnet (und den üblichen Strg-Tasten)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Krimtatarisch (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Krimtatarisch (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Krimtatarisch (Türkisch Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Krimtatarisch (Türkisch F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Krimtatarisch (Türkisch Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Kroatien"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Position der Strg-Taste"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Strg+Umschalttaste"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Kyrillisch"
+
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Kyrillisch mit Anführungszeichen"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Kyrillisch, »З« und »Ж« vertauscht"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Tschechien"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Ohne Acute-(')Akzentzeichen"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Ohne Grave-(`) und Acute-(')Akzentzeichen"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Vorgegebene Nummernblocktasten"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell PC-Tastatur mit 101 Tasten"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/Notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Laptop/Notebook Precision-M-Serie"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude-Laptop"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keybard"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Dänemark"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802-Serie"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Dvorak (Baybayin)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Dvorak (Lateinisch)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (britische Punktierung)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak Alternative international (ohne Akzenttasten)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak International (mit Akzenttasten)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, polnische Anführungszeichen auf Taste 1"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, polnische Anführungszeichen auf Taste mit Zitatzeichen"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Östlich"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Akzenttasten deaktivieren"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Typographische Sonderzeichen aktivieren"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Englisch"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Englisch (USA International)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Englisch (USA Macintosh)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Englisch mit Rupie-Symbol"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Eingabetaste im Nummernblock"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonomic"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Estland"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Äthiopien"
+
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Euro auf 2"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Euro auf 4"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Euro auf 5"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Euro auf E"
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Erweitert"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Erweitert - Windows-Tasten"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Erweiterter Backslash"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "F-Variante"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Färöer-Inseln"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Finnland"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Taste der vierten Ebene mit abstrakten Trennern"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Taste der vierten Ebene mit Komma"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Taste der vierten Ebene mit Punkt"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Taste der vierten Ebene mit Punkt, latin-9-Einschränkung"
+
+# momayyez? Was ist das?
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Taste der vierten Ebene mit »momayyez«"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "Frankreich"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Französisch (Französisch Alternative)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Französisch"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Französisch (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Französisch (veraltet)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Französisch (Dvorak)"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Französisch, Sun-Akzenttasten"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Französisch, ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO Laptop"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "Generische PC-Tastatur mit 101 Tasten"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generische PC-Tastatur mit 102 Tasten (Intl)"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "Generische PC-Tastatur mit 104 Tasten"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generische PC-Tastatur mit 105 Tasten (Intl)"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Georgien"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Georgisch"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Georgisch, AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Deutsch (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Deutsch, Sun-Akzenttasten"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Deutsch, ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Deutschland"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Griechenland"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Keyboard"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "»Happy Hacking Keyboard« für Mac"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "Haussa"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Hexadezimal"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Homophonic"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "HTC Dream Mobiltelefon"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper ist den Win-Tasten zugeordnet"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "ISO-Alternative"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Island"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Akzent-Tilde einschließen"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "Indien"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "International (AltGr-Akzenttasten)"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "International (mit Akzenttasten)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Irland"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Italien"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Japan"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx-Serie)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Japanische Tastaturoptionen"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Kalmückisch"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kana 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "Kana-Sperrtaste ist gesperrt"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Kaschubisch"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "Kasachisch mit russischer Belegung"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Kasachstan"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Kenia"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Tastenkombination zum erzwungenen Beenden des X-Servers"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Taste zum Wechsel in die dritte Tastaturebene"
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Taste zum Wechsel in die fünfte Tastaturebene"
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "Taste(n) zum Wechseln der Belegung"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Kikuyu"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Korea, Republik"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Kurdisch, (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdisch, Arabisch-Lateinisch"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdisch, Lateinisches Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Kurdisch, Lateinisches Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Kirgisistan"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Compaq Laptop/Notebook-Tastatur (z.B. Armada) Laptop-Tastatur"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Compaq Laptop/Notebook-Tastatur (z.B. Presario) Laptop-Tastatur"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Latein"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Lateinamerikanisch"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Latein (Unicode)"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Lateinische qwerty-Tastatur (Unicode)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Lateinische qwerty-Tastatur"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Latein (Unicode)"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Lateinische qwerty-Tastatur (Unicode)"
+
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Lateinisch mit Anführungszeichen"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Lettland"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Belegungsumschalter auf der Multiplikations-/Divisionstaste"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Linke Alt-Taste"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Linke Alt-Taste (gedrückt halten)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "Linke Alt-Taste ist gegen linke Windows-Taste vertauscht"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Linke Strg-Taste"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Linke Strg-Taste (zur ersten Belegung), rechte Strg-Taste (zur letzten Belegung)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Linke Strg-Taste+Linke Umschalttaste"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Linke Umschalttaste"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Linke Windows-Taste"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Linke Windows-Taste (zur ersten Belegung), rechte Windows/Menütaste (zur letzten Belegung)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Linke Windows-Taste (gedrückt halten)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Linke Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Linke Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Linkshändig"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Dvorak (linkshändig)"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Veraltet"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Wang 724 (veraltet)"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Veraltete Taste mit Komma"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Veraltete Taste mit Punkt"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (alternative Option)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (alternative Option 2)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15-Sondertasten über den G1-Daemon"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Generische Logitech-Tastatur"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (Modell Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Niedersorbisch"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Niedersorbisch (qwertz)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Mazedonien"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (International)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Macintosh (Alt)"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, Sun-Akzenttasten"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh (ohne Akzenttasten)"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Feststelltaste als zusätzliche Löschtaste verwenden"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Feststelltaste als zusätzliche Strg-Taste verwenden"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "Feststelltaste als zusätzliche Esc-Taste verwenden"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Feststelltaste als zusätzliche Hyper-Taste verwenden"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Feststelltaste als zusätzliche NumLock-Taste verwenden"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "Feststelltaste als zusätzliche Super-Taste verwenden"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Malediven"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Maltesische Tastatur mit US-Belegung"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Mari"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menü"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "Meta ist der linken Windows-Taste zugeordnet"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "Meta ist den Windows-Tasten zugeordnet"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta auf linker Strg-Taste"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Schwedisch"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Verschiedene Optionen zur Kompatibilität"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Mongolei"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Marokko"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Mehrsprachig"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Mehrsprachig, erster Teil"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Mehrsprachig, zweiter Teil"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "Löschtaste wie NICOLA-F"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Nativo für Esperanto"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Nativo für US-Tastaturen"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Niederlande"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Phonetisch, neu"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Nicht umbrechbares Leerzeichen in der vierten Tastaturebene"
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Nicht umbrechbares Leerzeichen in der vierten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der sechsten Ebene"
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Nicht umbrechbares Leerzeichen in der vierten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der sechsten Ebene (mit Strg + Umschalttaste)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "Nicht umbrechbares Leerzeichen in der zweiten Tastaturebene"
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "Nicht umbrechbares Leerzeichen in der dritten Tastaturebene"
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Nicht umbrechbares Leerzeichen in der dritten Tastaturebene, nichts in der vierten Ebene"
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Nicht umbrechbares Leerzeichen in der dritten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der vierten Ebene"
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Nördliches Saami"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Nördliches Saami, ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Norwegen"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "NumLock"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Verhalten der Löschtaste des Nummernblocks"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Tasten des Nummernblocks arbeiten wie bei Mac"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Belegungsauswahl des Nummernblocks"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC Paschtunisch"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC Süd-Usbekisch"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Okzitanisch"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internettastatur"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Ossetisch"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Ossetisch, Windows-Tasten"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Ossetisch, veraltet"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "PC-98xx-Serie"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Pannonian Rusyn Homophonic"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Paschtunisch"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pause"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Persisch. mit persischem Nummernblock"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "Phi"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Philippinen"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Phonetisch"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Phonetisch, Windows-Tasten"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Polen"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Dvorak für Programmierer"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "Druck"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (Baybayin)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Rechte Alt-Taste"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Rechte Alt-Taste (gedrückt halten)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Rechte Alt-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Rechte Alt-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Rechte Alt-Taste wählt niemals die dritte Tastaturebene."
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Rechte Alt-Taste, Umschalttaste+rechte Alt-Taste ist Multi-Taste"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Rechte Strg-Taste"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Rechte Strg-Taste (gedrückt halten)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Rechte Strg-Taste wie rechte Alt-Taste"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Rechte Strg-Taste und rechte Umschalttaste"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Rechte Umschalttaste"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Rechte Windows-Taste"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Rechte Windows-Taste (gedrückt halten)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Rechte Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Rechte Win-Taste wählt die fünfte Ebene, sperrt wenn gedrückt, zusammen mit einer anderen Taste zum Wählen der fünften Ebene. Einmaliges Drücken löst die Sperrung."
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Rechtshändig"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Dvorak (rechtshändig)"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Rumänien"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Rumänische Tastatur mit deutschen Buchstaben"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Rumänische Tastatur mit deutschen Buchstaben, ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Rupie-Symbol auf 4"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Russland"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Russisch"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Russisch (phonetisch)"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Russisch (phonetisch, Dvorak)"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Russisch (phonetisch), ohne Akzenttasten"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "Russisch mit kasachischer Belegung"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "Rollen"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Semikolon in der dritten Tastaturebene"
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbien"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Serbisch"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Serbokroatisch"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Umschalttaste deaktiviert Feststelltaste"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Umschalttaste deaktiviert NumLock nicht, wechselt stattdessen in die dritte Tastaturebene"
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Umschalttaste funktioniert mit den Tasten des Nummernblocks wie in MS Windows"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Umschalt-+Feststelltaste"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Einfach"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Slowakei"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Slowenien"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Südafrika"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "Süd-Usbekisch"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Spanien"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Spezialtasten für Server (Strg+Alt+&lt;Taste&gt;)"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Standard"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Standard (Cedilla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Standard RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Standard-RSTU mit russischer Belegung"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun Typ 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Sun-Akzenttasten"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Strg-Taste und Feststelltaste vertauschen"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Esc und Feststelltaste vertauschen"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Schweden"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Schweiz"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Syrien"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Syrisch"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Syrisch (phonetisch)"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "Thai (TIS-620)"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Tadschikistan"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Tamilisch"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Tamilische Tastatur mit Ziffern"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Tamilisch (TAB Schreibmaschine)"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamilisch (TSCII Schreibmaschine)"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Tamilisch (Unicode)"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Tansania"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "Tatarisch"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Thailand"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Tibetisch"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetanisch (mit ASCII-Ziffern)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Tifinagh (alternativ)"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Tifinagh (alternativ, phonetisch)"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Tifinagh (erweitert)"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh (erweitert, phonetisch)"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh (phonetisch)"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Tilde-Variante (~)"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Zur entsprechenden Taste einer Dvorak-Tastatur."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Zur entsprechenden Taste einer Qwerty-Tastatur."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Zeigertasten mit Umschalttaste + NumLock umschalten"
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Traditionell (phonetisch)"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Türkei"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Turkmenien"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:EU-Modus)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (106:JP-Modus)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Schreibmaschine"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Schreibmaschine, veraltet"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "UCW-Belegung (nur akzentuierte Buchstaben)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "US Dvorak mit CZ-UCW-Unterstützung"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "US-Tastatur mit bosnischen Digraphen"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "US-Tastatur mit bosnischen Buchstaben"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "US-Tastatur mit kroatischen Digraphen"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "US-Tastatur mit kroatischen Buchstaben"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "US-Tastatur mit estnischen Buchstaben"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "US-Tastatur mit italienischen Buchstaben"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "US-Tastatur mit litauischen Buchstaben"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "US-Tastatur mit slowenischen Buchstaben"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Udmurtisch"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Unicode-Ergänzungen (Pfeile und mathematische Operatoren)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Unicode-Ergänzungen (Pfeile und mathematische Operatoren). Mathematische Operatoren befinden sich in der Standardebene."
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "Vereinigtes Königreich"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, Alternative (phonetisch)"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Urdu, phonetisch"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Windows-Tasten"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Bosnische Digraphen verwenden"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Kroatische Digraphen verwenden"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "Anführungszeichen für Zitate verwenden"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Tastatur-LED zur Anzeige der alternativen Belegung verwenden"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "Leertaste zur Eingabe nicht umbrechbarer Zeichen verwenden"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Leertaste gibt in jeder Ebene stets Leerzeichen aus"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Usbekistan"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Wang 724 mit Unicode-Ergänzungen (Pfeile und mathematische Operatoren)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Wang 724 mit Unicode-Ergänzungen (Pfeile und mathematische Operatoren). Mathematische Operatoren in der Standardebene"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang Modell 724 (azerty)"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Westlich"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Modell XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Win-Tasten"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "Mit &lt;\\|&gt;-Taste"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "mit Euro-Symbol auf »5«"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "Mit Anführungszeichen"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "Jakutisch"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Joruba"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "»З« und »Ж« sind vertauscht"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Ebene"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Tastaturebene, nichts in der vierten Ebene"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Tastaturebene, schmales nicht umbrechbares Leerzeichen in der vierten Ebene"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, nicht umbrechbares Leerzeichen in der dritten Tastaturebene, verbindendes Zeichen der Breite Null in der vierten Ebene"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, verbindendes Zeichen der Breite Null in der dritten Ebene"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der zweiten Ebene, verbindendes Zeichen der Breite Null in der dritten Ebene, nicht umbrechbares Leerzeichen in der vierten Tastaturebene"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Nicht verbindendes Zeichen der Breite Null in der dritten Ebene, verbindendes Zeichen der Breite Null in der vierten Ebene"
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "azerty/Ziffern"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "Ziffern"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "Falsch platziertes Semikolon und Anführungszeichen (veraltet)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "LyX"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, erweiterter Backslash"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "qwerty/Ziffern"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avestisch"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Akzente kombinieren, anstelle von Akzenttasten"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "International (AltGr-Unicode-Kombination)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "International (AltGr-Unicode-Kombination, alternativ)"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "5"
+#~ msgstr "5"
+
+#~ msgid "E"
+#~ msgstr "E"
+
+#~ msgid "LAm"
+#~ msgstr "LAm"
+
+#~ msgid "CapsLock"
+#~ msgstr "Feststelltaste"
+
+#~ msgid "ScrollLock"
+#~ msgstr "Rollen"
+
+#~ msgid "ACPI Standard"
+#~ msgstr "ACPI-Standard"
+
+#~ msgid "Bhu"
+#~ msgstr "Bhu"
+
+#~ msgid "DRC"
+#~ msgstr "DRC"
+
+#~ msgid "Dvorak international"
+#~ msgstr "Dvorak international"
+
+#~ msgid "Evdev-managed keyboard"
+#~ msgstr "Evdev-verwaltete Tastatur"
+
+#~ msgid "Gre"
+#~ msgstr "Gre"
+
+#~ msgid "Gui"
+#~ msgstr "Gui"
+
+#~ msgid "Lav"
+#~ msgstr "Lav"
+
+#~ msgid "Nep"
+#~ msgstr "Nep"
+
+#~ msgid "SrL"
+#~ msgstr "SrL"
+
+#~ msgid "Baltic+"
+#~ msgstr "Baltisch+"
+
+#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "Pro Keypad"
+#~ msgstr "Pro Keypad"
+
+#~ msgid "Standard Phonetic"
+#~ msgstr "Standard, phonetisch"
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "ABNT2 (Brasilianisch)"
+
+#~ msgid "Japanese 106-key"
+#~ msgstr "Japanisch (106 Tasten)"
+
+#~ msgid "Kir"
+#~ msgstr "Kir"
+
+#~ msgid "Korean 106-key"
+#~ msgstr "Koreanisch (106 Tasten)"
+
+#~ msgid "Super is mapped to Win keys"
+#~ msgstr "Super ist den Win-Tasten zugeordnet"
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "US-Tastatur mit slowenischen Digraphen"
+
+#~ msgid "Unicode"
+#~ msgstr "Unicode"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Slowenische Digraphen verwenden"
+
+#~ msgid "Add the EuroSign to the 2 key."
+#~ msgstr "Euro-Symbol zur Taste »2« hinzufügen."
+
+#~ msgid "Add the EuroSign to the 4 key."
+#~ msgstr "Euro-Symbol zur Taste »4« hinzufügen."
+
+#~ msgid "Add the EuroSign to the 5 key."
+#~ msgstr "Euro-Symbol zur Taste »5« hinzufügen."
+
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "Euro-Symbol zur Taste »E« hinzufügen."
+
+#~ msgid "Alt+Ctrl change layout."
+#~ msgstr "Alt+Strg ändern die Belegung."
+
+#~ msgid "Alt+Shift change layout."
+#~ msgstr "Alt-+Umschalttaste wechselt die Belegung."
+
+#~ msgid "CapsLock LED shows alternative layout."
+#~ msgstr "Feststelltasten-LED zeigt alternative Belegung an."
+
+#~ msgid "CapsLock key changes layout."
+#~ msgstr "Die Feststelltaste ändert die Belegung."
+
+#~ msgid "Ctrl+Shift change layout."
+#~ msgstr "Strg+Umschalttaste ändert die Belegung."
+
+#~ msgid "Hewlett-Packard Internet Keyboard 5181"
+#~ msgstr "Hewlett-Packard Internet Keyboard 5181"
+
+#~ msgid "Hewlett-Packard Internet Keyboard 5185"
+#~ msgstr "Hewlett-Packard Internet Keyboard 5185"
+
+#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#~ msgid "IBM Rapid Access II (alternate option)"
+#~ msgstr "IBM Rapid Access II (alternative Option)"
+
+#, fuzzy
+#~ msgid "LCtrl+LShift change layout."
+#~ msgstr "Beide Alt-Tasten gleichzeitig ändern die Belegung."
+
+#~ msgid "Layout switching"
+#~ msgstr "Umschalten der Belegung"
+
+#~ msgid "Left Alt key changes layout."
+#~ msgstr "Linke Alt-Taste wechselt die Belegung."
+
+#~ msgid "Left Ctrl key changes layout."
+#~ msgstr "Linke Strg-Taste wechselt die Belegung."
+
+#~ msgid "Left Shift key changes layout."
+#~ msgstr "Linke Umschalt-Taste wechselt die Belegung."
+
+#~ msgid "Left Win-key changes layout."
+#~ msgstr "Linke Windows-Taste wechselt die Belegung."
+
+#, fuzzy
+#~ msgid "Left Win-key is Compose."
+#~ msgstr "Linke Windows-Taste wechselt die Belegung."
+
+#, fuzzy
+#~ msgid "Legacy keypad"
+#~ msgstr "Altes Multi-Threading unterstützen"
+
+#, fuzzy
+#~ msgid "Menu is Compose."
+#~ msgstr "Der Menübaum ist leer"
+
+#~ msgid "Neostyle"
+#~ msgstr "Neostyle"
+
+#~ msgid "NumLock LED shows alternative layout."
+#~ msgstr "NumLock-LED zeigt alternative Belegung an."
+
+#~ msgid "Press Left Alt key to choose 3rd level."
+#~ msgstr "Linke Alt-Taste drücken, um in die dritte Tastaturebene zu gelangen."
+
+#~ msgid "Press Left Win-key to choose 3rd level."
+#~ msgstr "Linke Win-Taste drücken, um in die dritte Tastaturebene zu gelangen."
+
+#~ msgid "Press Right Alt key to choose 3rd level."
+#~ msgstr "Rechte Alt-Taste drücken, um in die dritte Tastaturebene zu gelangen."
+
+#~ msgid "Press Right Ctrl to choose 3rd level."
+#~ msgstr "Rechte Strg-Taste drücken, um in die dritte Tastaturebene zu gelangen."
+
+#~ msgid "Press Right Win-key to choose 3rd level."
+#~ msgstr "Rechte Win-Taste drücken, um in die dritte Tastaturebene zu gelangen."
+
+#~ msgid "Press any of Alt keys to choose 3rd level."
+#~ msgstr "Eine beliebige Alt-Taste drücken, um in die dritte Tastaturebene zu gelangen."
+
+#~ msgid "Press any of Win-keys to choose 3rd level."
+#~ msgstr "Eine beliebige Win-Taste drücken, um in die dritte Tastaturebene zu gelangen."
+
+#, fuzzy
+#~ msgid "Right Alt is Compose."
+#~ msgstr "rechter Rotationszähler ist negativ"
+
+#~ msgid "Right Alt key changes layout."
+#~ msgstr "Rechte Alt-Taste wechselt die Belegung."
+
+#~ msgid "Right Ctrl key changes layout."
+#~ msgstr "Rechte Ctrl-Taste wechselt die Belegung."
+
+#~ msgid "Right Shift key changes layout."
+#~ msgstr "Rechte Umschalt-Taste wechselt die Belegung."
+
+#~ msgid "Right Win-key changes layout."
+#~ msgstr "Rechte Windows-Taste wechselt die Belegung."
+
+#, fuzzy
+#~ msgid "Right Win-key is Compose."
+#~ msgstr "Rechte Windows-Taste wechselt die Belegung."
+
+#~ msgid "ScrollLock LED shows alternative layout."
+#~ msgstr "ScrollLock-LED zeigt alternative Belegung an."
+
+#~ msgid "Shift+CapsLock changes layout."
+#~ msgstr "Umschalt-+Feststelltaste wechselt die Belegung."
+
+#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+#~ msgstr "Tastencodes zweier Tasten vertauschen, wenn Mac-Tastaturen nicht korrekt vom Kernel erkannt werden."
+
+#~ msgid "Third level choosers"
+#~ msgstr "Auswahltasten der dritten Ebene"
+
+#~ msgid "Urdu"
+#~ msgstr "Urdu"
diff --git a/xorg-server/xkeyboard-config/po/eo.po b/xorg-server/xkeyboard-config/po/eo.po
index 92e929d7b..45ca56f00 100644
--- a/xorg-server/xkeyboard-config/po/eo.po
+++ b/xorg-server/xkeyboard-config/po/eo.po
@@ -1,3225 +1,3316 @@
-# Esperanta traduko por 'xkeyboard-config'
-# Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Felipe Castro <fefcas@gmail.com>, 2008, 2009, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-16 21:05-0300\n"
-"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
-"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Pli-signo/Malpli-signo&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Pli-signo/Malpli-signo&gt; elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Pli-signo/Malpli-signo&gt; elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Malmoderna) Alternativa"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Malmoderna) Alternativa, senpaŝaj klavoj de 'Sun'"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Malmoderna) Alternativa, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "Kongrua al 101/104 klavoj"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/komo/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/komo/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/punkto/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/punkto/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/komo/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/komo/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/punkto/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/punkto/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/komo/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/komo/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/punkto/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/punkto/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/komo/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/komo/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/punkto/Senpaŝaj klavoj"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/punkto/Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "ATM/telefon-stilo"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Acer Laptop"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Aldoni laŭnorman funkciadon al la klavo Menu"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Aldonado de Esperantaj supersignoj"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Aldonado de EŭroSigno al iuj klavoj"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afganujo"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albanujo"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt kaj Meta estas ĉe la klavoj Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt estas mapita al la dekstra klavo Win kaj Super al Menu"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+Caps Lock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Space"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win, klava funkciado"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternativa"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternativa Orienta"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternativa Fonetika"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternativa internacia"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternava, senpaŝaj klavoj de 'Sun'"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativa, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternativa, nur latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andoro"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Iu ajn klavo Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Iu ajn klavo Win"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Iu ajn klavo Win (dum premata)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Variaĵo de citilo (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Apple Aluminium Keyboard (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Apple Aluminium Keyboard (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Apple Aluminium Keyboard (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Apple Aluminium Keyboard: ŝajnigi klavojn de PC (Print, Scroll Lock, Pause, Num Lock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Apple Laptop"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Araba"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenujo"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Asturia variaĵo kun subpunktita H kaj subpunktita L"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Asus Laptop"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Malsupre maldekstre"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Maldekstre de 'A'"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Aŭstrujo"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Azerbajĝano"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 sendrata Internet Keyboard"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Retroklino"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Bangladeŝo"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Baŝkira"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Belorusujo"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Belgujo"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Bengala"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Bengala Probhat"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, komforteca, Dvorake"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, komforteca, Dvorake, nur latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhutano"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Biblia Hebrea (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnujo kaj Hercegovino"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Ambaŭ klavoj Alt kune"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Ambaŭ klavoj Ctrl kune"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Ambaŭ klavoj Shift kune"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Ambaŭ klavoj Shift kune alternigas Caps Lock"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Bocvano"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Brajla"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Brazilo"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Bretona"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bulgarujo"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Kamboĝo"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Kanado"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "Caps Lock (al la unua aranĝo), Shift+Caps Lock (al la lasta aranĝo)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "Caps Lock (dum premata), Alt+Caps Lock restarigas la originalan uskligon"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock funkcias kiel Shift kun ŝlosado. Shift \"paŭzigas\" Caps Lock"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock funkcias kiel Shift kun ŝlosado. Shift ne influas Caps Lock"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "Caps Lock estas malebligita"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Funkciado de la klavo Caps Lock"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "Caps Lock alternigas Shift, influante ĉiujn klavojn"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "Caps Lock alternigas la ordinaran uskligon de alfabetaj signoj"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock uzas internan uskligon. Shift \"paŭzigas\" Caps Lock"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock uzas internan uskligon. Shift ne influas Cap sLock"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Kataluna variaĵo kun centro-punktita L"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Subhoketo"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Ĉeroka"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternativa opcio)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "Ĉinujo"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Ĉuvaŝa"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Ĉuvaŝa Latine"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Klasike"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Klasika Dvorako"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Klasika, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 klavoj)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 klavoj)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 klavoj)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Pozicio de la klavo 'Compose'"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Demokratia Respubliko de"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "'Control' estas mapita al klavoj 'Alt', 'Alt' estas mapita al klavoj 'Win'"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "'Control' estas mapita al klavoj 'Win' (kaj al la kutimaj klavoj 'Ctrl')"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Krime-tatara (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Krime-tatara (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Krime-tatara (Turka Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Krime-tatara (Turka F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Krime-tatara (Turka Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Kroata"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Pozicio de la klavo 'Ctrl'"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Cirila"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Cirila kun angul-citiloj"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Cirila, Z kaj ZHE interŝanĝita"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Ĉeĥa"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Senpaŝa dekstra korno"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Senpaŝa maldekstra korno"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Implicitaj ciferoj en cifer-klavaro"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell 101-klava PC"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Laptop/notebook Precision M series"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude series laptop"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Danujo"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 serio"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvorako"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorako (Interpunkcio de UK)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvoraka alternativa internacia (neniu senpaŝa klavo)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak internacia (kun senpaŝaj klavoj)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorako, Polaj citiloj ĉe klavo 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorako, Polaj citiloj ĉe citila klavo"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Orienta"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Ebligi kromajn tipografiajn signojn"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Angla"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Angla (Usona internacia)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Angla (Usona Macintosh)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Enen-klavo en ciferklavaro"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Ergonomia"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Estonujo"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Etiopujo"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Etendite"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Etendite - Win-klavoj"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Etendita Retroklino"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "F-litero (F) variaĵo"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Ferooj"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Finlando"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Kvar-nivela klavo kun abstraktaj apartigiloj"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Kvar-nivela klavo kun komo"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Kvar-nivela klavo kun punkto"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Kvar-nivela klavo kun punkto, limigite al latin-9"
-
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Kvar-nivela klavo kun 'momayyez'"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Francujo"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Français (Franca Alternativa)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Franca"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Franca (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Franca (malmoderna)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Franca Dvorako"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Franca, senpaŝaj klavoj de 'Sun'"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Franca, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Tekokomputilo Fujitsu-Siemens Computers AMILO"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "Ĝenerala 101-klava PC"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "Ĝenerala 102-klava (Intl) PC"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "Ĝenerala 104-klava PC"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "Ĝenerala 105-klava (Intl) PC"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Kartvelujo"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Kartvela"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Kartvela AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Germana (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Germana, senpaŝaj klavoj de 'Sun'"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Germana, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Germanujo"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Ganao"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Grekujo"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Gvineo"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Guĝarata"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gurmukia"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukia de Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Keyboard"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking Keyboard por Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Haŭsa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Deksesume"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hinda per Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hinda Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Homofonia"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Hungarujo"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "'Hyper' estas mapita al la klavoj 'Win'"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "Alternativa ISO"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Islando"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Inkluzivi senpaŝan tildon"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Bharato"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "Internacia (senpaŝaj klavoj per 'AltGr')"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "Internacia (senpaŝaj klavoj)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Inuita"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Irano"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Irako"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Irlando"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Israelo"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Italujo"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Nipono"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Nipono (Serio PC-98xx)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Opcioj de nipona klavaro"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Kalmyk"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kanao"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "Kanaa klavo 'Lock' ŝlosigas"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kanara"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Kaŝuba"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kazaĥa kaj Rusa"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kazaĥujo"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Kenjo"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Klav-sekvo por formortigi la X-servilon"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Klavo por elekti 3-an nivelon"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Klavo por elekti 5-an nivelon"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Klavo(j) por ŝanĝi la aranĝon"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Kikuyu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komia"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Koreujo, Respubliko de"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kurda, (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurda, Araba-Latina"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurda, Latina Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kurda, Lania Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kirgizujo"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Laoso"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Latineca"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Latin-amerika"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Latineca Unikoda"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Latineca Unikoda qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Latineca qwerty"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Latineca unikoda"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Latineca unikoda qwerty"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Latineca kun angul-citiloj"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Latvujo"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Aranĝ-alternado en la klavo multipliko/divido"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Maldekstra Alt"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Maldekstra 'Alt' (dum premata)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "La maldekstra 'Alt' estas permutita kun la maldekstra klavo 'Win'"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Maldekstra Ctrl"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Maldekstra Ctrl (por la unua aranĝo), Dekstra Ctrl (por la lasta aranĝo)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Maldekstra Ctrl+Maldekstra Shift"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Maldekstra Shift"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Maldekstra Win"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Maldekstra Win (al la unua aranĝo), Dekstra Win/Menu (al la lasta aranĝo)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Maldekstra Win (dum premata)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Maldekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Maldekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Maldekstra mano"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Maldekstreca Dvorako"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Malmoderna"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Malmoderna Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Malmoderna klavo kun komo"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Malmoderna klavo kun punkto"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Litovujo"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (alternativa opcio)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (alternativa opcio 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra keys via G15daemon"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech - Ĝenerala Klavaro"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Malsupra Soraba"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "Malsupra Soraba (qwertz)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Makedonujo"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (Internacia)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh 'Malnova'"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, senpaŝaj klavoj de 'Sun'"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "Igi Caps Lock kroman Retroklavon"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "Igi Caps Lock kroman Ctrl"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "Igi Caps Lock kroman ESC"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "Igi Caps Lock kroman Hyper"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "Igi Caps Lock kroman Num Lock"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "Igi Caps Lock kroman Super"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malajala"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malajala 'Lalitha'"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Maldivoj"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Malio"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Maltolando"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Malta klavaro kun usona aranĝo"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Maoria"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta estas mapita al la Maldekstra Win"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta estas mapita al la klavoj Win"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Sveda"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Ceteraj kongruaj opcioj"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Mongolujo"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Maroko"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Plurlingva"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Plurlingva, unua parto"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Plurlingva, dua parto"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Birmo"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "Retropaŝo laŭ estilo NICOLA-F"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo por Esperanto"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo por usonaj klavaroj"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Nepalo"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Nederlando"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Nova fonetika"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Niĝerujo"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Ne-rompebla spaco-signo ĉe la 4-a nivelo"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Ne-rompebla spaco-signo ĉe la 4-a nivelo, maldika ne-rompebla spaco-signo ĉe la 6-a nivelo"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Ne-rompebla spaco-signo ĉe la 4-a nivelo, maldika ne-rompebla spaco-signo ĉe la 6-a nivelo (per Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "Ne-rompebla spaco-signo ĉe la 2-a nivelo"
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "Ne-rompebla spaco-signo ĉe la 3-a nivelo"
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Ne-rompebla spaco-signo ĉe la 3-a nivelo, nenio ĉe la 4-a nivelo"
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Ne-rompebla spaco-signo ĉe la 3-a nivelo, maldika ne-rompebla spaco-signo ĉe la 4-a nivelo"
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Norda Samea"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Norda Samea, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Norvegujo"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "Num Lock"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Funkciado de la forig-klavo de la ciferklavaro"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "La klavoj de la ciferklavaro funkcias same kiel en Mac"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Elektado de aranĝo por la ciferklavaro"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC Daria"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC Paŝtoa"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC Suda Uzbekujo"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "Okcitana"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Ogamo"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Ogamo IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Orija"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "Oseta"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "Oseta, klavoj 'Win'"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "Oseta, malmoderna"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Pakistano"
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Panona Rusina Homofonia"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Paŝtoa"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Paŭso"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Persa, kun Persa Ciferklavaro"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Fonetika"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Fonetikaj Win-klavoj"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Polujo"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Plurtona"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Portugalujo"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Dvorako por programistoj"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Dekstra Alt"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Dekstra Alt (dum premata)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Dekstra Alt elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Dekstra Alt elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Dekstra Alt neniam elektas la 3-an nivelon"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Dekstra Alt, Shift+Dekstra Alt estas Multi_Key"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Dekstra Ctrl"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Dekstra Ctrl (dum premata)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Dekstra Ctrl kiel Dekstran Alt"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Dekstra Ctrl+Dekstra Shift"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Dekstra Shift"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Dekstra Win"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Dekstra Win (dum premata)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Dekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Dekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Dekstra mano"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Dekstreca Dvorako"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Rumanujo"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Rumana klavaro kun germanaj literoj"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Rumana klavaro kun germanaj literoj, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Rusujo"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Rusa"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Rusa fonetika"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Rusa fonetika Dvorako"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Rusa fonetika, forigi senpaŝajn klavojn"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Rusa kun Kazaĥa"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "Ruluma Baskulo"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Punkto-komo ĉe la 3-a nivelo"
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Senegalo"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Serbujo"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Serba"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Shift nuligas Caps Lock"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Shift ne nuligas Num Lock, elektas 3-an nivelon anstataŭe"
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift kun la ciferklavaro funkcias same kiel en MS Windows"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Shift+Caps Lock"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "Simpla"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Sinda"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Slovakujo"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Slovenujo"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Sud-Afriko"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Suda Uzbekujo"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Hispanio"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Specialaj klavoj (Ctrl+Alt+&lt;klavo&gt;) traktotaj en servilo"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Sri-Lanko"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Laŭnorma"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Laŭnorma (Subhoko)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "Laŭnorma RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "Laŭnorma RSTU en Rusa aranĝo"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Senpaŝaj klavoj de 'Sun'"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Permuti Ctrl kaj Caps Lock"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Permuti ESC kaj Caps Lock"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Svedujo"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Svislando"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tabuleta PC)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Sirio"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Siria"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Siria fonetika"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Taĝikujo"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Tamila"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Tamila Klavaro kun Ciferoj"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Tamila TAB Typewriter"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamila TSCII Typewriter"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Tamila Unikodo"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Tanzanio"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Tatara"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Telugua"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Tajlando"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Tibeta"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibeta (kun ASCII ciferoj)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Tifinagh alternativa"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Tifinagh alternativa fonetika"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Tifinagh etendita"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Tifinagh etendita fonetika"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Tifinagh fonetika"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Tilda (~) variaĵo"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Al la ekvivalenta klavo en Dvoraka klavaro."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Al la ekvivalenta klavo en klavaro Qwerty."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Tradicia fonetika"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Turkujo"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Turkmenujo"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (reĝimo 102/105:EU)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (reĝimo 106:JP)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Skribmaŝino"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Skribmaŝino, malmoderna"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "Aranĝo UCW (nur diakritaĵoj)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "Usona Dvorak kun subteno al CZ UCW"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Usona klavaro kun bosnaj duliteraĵoj"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "Usona klavaro kun bosnaj literoj"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "Usona klavaro kun kroataj duliteraĵoj"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "Usona klavaro kun kroataj literoj"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "Usona klavaro kun estonaj literoj"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "Usona klavaro kun italaj literoj"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "Usona klavaro kun litovaj literoj"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "Usona klavaro kun slovenaj literoj"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "Usono"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "Udmurta"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "Ukrajnujo"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Unikodaj aldonoj (sagoj kaj operaci-simboloj)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Unikodaj aldonoj (sagoj kaj operaci-simboloj). Operaci-simboloj en la implicita nivelo."
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "Unuiĝinta Reĝlando"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, Alternativa fonetika"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Urdu, Fonetike"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Win-klavoj"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Uzi bosnajn duliteraĵojn"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Uzi kroatajn duliteraĵojn"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Uzi angul-citilojn por citiloj"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Uzi la LED de klavaro por indiki alternativan aranĝon"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Uzado de spac-klavo por enmeti ne-rompeblan spaco-signon"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Kutima spaco-signo ĉe iu ajn nivelo"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Uzbekujo"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Vjetnamujo"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Wang 724 ciferklavaro kun unikodaj aldonoj (sagoj kaj operaci-simboloj)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Wang 724 ciferklavaro kun unikodaj aldonoj (sagoj kaj operaci-simboloj). Operaci-simboloj en la implicita nivelo"
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang modelo 724 azerty"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Okcidenta"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Win-klavoj"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "Kun klavo &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "Kun EŭroSigno ĉe 5"
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "Kun angul-citiloj"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Yakut"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Joruba"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "Z kaj ZHE permutitaj"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe dua nivelo"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo, nenio ĉe la kvara nivelo"
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo, maldika ne-rompebla spaco-signo ĉe la kvara nivelo"
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo, nul-larĝa kuniga signo ĉe la kvara nivelo"
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, nul-larĝa kuniga signo ĉe la tria nivelo"
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, nul-larĝa kuniga signo ĉe la tria nivelo, ne-rompebla spaco-signo ĉe la kvara nivelo"
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Nul-larĝa ne-kuniga signo ĉe la tria nivelo, nul-larĝa kuniga signo ĉe la kvara nivelo"
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "azerty/ciferoj"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "ciferoj"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "translokitaj punktokomo kaj citilo (malaktuale)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, etendita Retroklino"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "qwerty/ciferoj"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "Avesta"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Kunmiksado de diakritaĵoj anstataŭ senpaŝaj klavoj"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "Internacia (AltGr-Unikodo kunmiksado)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Internacia (AltGr-Unikodo kunmiksado, alternativa)"
-
-#~ msgid "CapsLock"
-#~ msgstr "CapsLock"
-
-#~ msgid "ScrollLock"
-#~ msgstr "ScrollLock"
-
-#~ msgid "ACPI Standard"
-#~ msgstr "ACPI Laŭnorma"
-
-#~ msgid "Bhu"
-#~ msgstr "Bhu"
-
-#~ msgid "DRC"
-#~ msgstr "DRC"
-
-#~ msgid "Dvorak international"
-#~ msgstr "Internacia Dvorako"
-
-#~ msgid "Evdev-managed keyboard"
-#~ msgstr "Klavaro traktita per 'Evdev'"
-
-#~ msgid "Gre"
-#~ msgstr "Gre"
-
-#~ msgid "Gui"
-#~ msgstr "Gui"
-
-#~ msgid "Lav"
-#~ msgstr "Lav"
-
-#~ msgid "Nep"
-#~ msgstr "Nep"
-
-#~ msgid "SrL"
-#~ msgstr "SrL"
-
-#~ msgid "Baltic+"
-#~ msgstr "Balta+"
-
-#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "Pro Keypad"
-#~ msgstr "Pro Keypad"
-
-#~ msgid "Standard Phonetic"
-#~ msgstr "Laŭnorma Fonetika"
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "Brazila ABNT2"
-
-#~ msgid "Japanese 106-key"
-#~ msgstr "Nipono 106-klava"
-
-#~ msgid "Kir"
-#~ msgstr "Kir"
-
-#~ msgid "Korean 106-key"
-#~ msgstr "Korea 106-klava"
-
-#~ msgid "Super is mapped to Win keys"
-#~ msgstr "'Super' estas mapita al la klavoj Win"
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "Usona klavaro kun slovenaj duliteraĵoj"
-
-#~ msgid "Unicode"
-#~ msgstr "Unikodo"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Uzi slovenajn duliteraĵojn"
-
-#~ msgid "Add the EuroSign to the 2 key."
-#~ msgstr "Aldoni la EŭroSignon al la klavo 2."
-
-#~ msgid "Add the EuroSign to the 4 key."
-#~ msgstr "Aldoni la EŭroSignon al la klavo 4."
-
-#~ msgid "Add the EuroSign to the 5 key."
-#~ msgstr "Aldoni la EŭroSignon al la klavo 5."
-
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "Aldoni la EŭroSignon al la klavo E."
-
-#~ msgid "Alt+Ctrl change layout."
-#~ msgstr "Alt+Ctrl ŝanĝas la aranĝon."
-
-#~ msgid "Alt+Shift change layout."
-#~ msgstr "Alt+Shift ŝanĝas la aranĝon."
-
-#~ msgid "CapsLock LED shows alternative layout."
-#~ msgstr "LED de CapsLock indikas alternativan aranĝon."
-
-#~ msgid "CapsLock just locks the Shift modifier."
-#~ msgstr "CapsLock simple ŝlosas la modifilon Shift."
-
-#~ msgid "CapsLock key changes layout."
-#~ msgstr "La klavo CapsLock ŝanĝas la aranĝon."
-
-#~ msgid "Ctrl+Shift change layout."
-#~ msgstr "'Ctrl+Shift' ŝanĝas la aranĝon."
-
-#~ msgid "Hewlett-Packard Internet Keyboard 5181"
-#~ msgstr "Hewlett-Packard Internet Keyboard 5181"
-
-#~ msgid "Hewlett-Packard Internet Keyboard 5185"
-#~ msgstr "Hewlett-Packard Internet Keyboard 5185"
-
-#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#~ msgid "IBM Rapid Access II (alternate option)"
-#~ msgstr "IBM Rapid Access II (alternativa opcio)"
-
-#~ msgid "LCtrl+LShift change layout."
-#~ msgstr "LCtrl+LShift ŝanĝas la aranĝon."
-
-#~ msgid "Layout switching"
-#~ msgstr "Ŝaltado de aranĝo"
-
-#~ msgid "Left Alt key changes layout."
-#~ msgstr "La maldekstra klavo 'Alt' ŝanĝas la aranĝon."
-
-#~ msgid "Left Ctrl key changes layout."
-#~ msgstr "La maldekstra klavo 'Ctrl' ŝanĝas la aranĝon."
-
-#~ msgid "Left Shift key changes layout."
-#~ msgstr "La maldekstra klavo 'Shift' ŝanĝas la aranĝon."
-
-#~ msgid "Left Win-key changes layout."
-#~ msgstr "La maldekstra klavo 'Win' ŝanĝas la aranĝon."
-
-#~ msgid "Left Win-key is Compose."
-#~ msgstr "La maldekstra klavo 'Win' estas 'Compose'."
-
-#~ msgid "Legacy keypad"
-#~ msgstr "Malmoderna numerklavaro"
-
-#~ msgid "Menu is Compose."
-#~ msgstr "'Menuo' estas 'Compose'."
-
-#~ msgid "Neostyle"
-#~ msgstr "Neostyle"
-
-#~ msgid "NumLock LED shows alternative layout."
-#~ msgstr "LED de 'NumLock' indikas alternativan aranĝon."
-
-#~ msgid "Press Left Alt key to choose 3rd level."
-#~ msgstr "Premi la maldekstran klavon 'Alt' por elekti 3-an nivelon."
-
-#~ msgid "Press Left Win-key to choose 3rd level."
-#~ msgstr "Premi la maldekstran klavon 'Win' por elekti 3-an nivelon."
-
-#~ msgid "Press Right Alt key to choose 3rd level."
-#~ msgstr "Premi la dekstran klavon 'Alt' por elekti 3-an nivelon."
-
-#~ msgid "Press Right Ctrl to choose 3rd level."
-#~ msgstr "Premi la dekstran klavon 'Ctrl' por elekti 3-an nivelon."
-
-#~ msgid "Press Right Win-key to choose 3rd level."
-#~ msgstr "Premi la dekstran klavon 'Win' por elekti 3-an nivelon."
-
-#~ msgid "Press any of Alt keys to choose 3rd level."
-#~ msgstr "Premi iu ajn el la klavoj 'Alt' por elekti 3-an nivelon."
-
-#~ msgid "Press any of Win-keys to choose 3rd level."
-#~ msgstr "Premi iu ajn el la klavoj 'Win' por elekti 3-an nivelon."
-
-#~ msgid "Right Alt is Compose."
-#~ msgstr "Dekstra 'Alt' estas 'Compose'."
-
-#~ msgid "Right Alt key changes layout."
-#~ msgstr "Dekstra 'Alt' ŝanĝas la aranĝon."
-
-#~ msgid "Right Ctrl key changes layout."
-#~ msgstr "Dekstra 'Ctrl' ŝanĝas la aranĝon."
-
-#~ msgid "Right Shift key changes layout."
-#~ msgstr "Dekstra 'Shift' ŝanĝas la aranĝon."
-
-#~ msgid "Right Win-key changes layout."
-#~ msgstr "Dekstra 'Win' ŝanĝas la aranĝon."
-
-#~ msgid "Right Win-key is Compose."
-#~ msgstr "Dekstra 'Win' estas 'Compose'."
-
-#~ msgid "ScrollLock LED shows alternative layout."
-#~ msgstr "LED de 'ScrollLock' indikas alternativan aranĝon."
-
-#~ msgid "Shift+CapsLock changes layout."
-#~ msgstr "'Shift'+CapsLock ŝanĝas la aranĝon."
-
-#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-#~ msgstr "Permuti klavkodojn de du klavoj kiam klavaroj Mac estas misdetektitaj de la sistem-kerno."
-
-#~ msgid "Third level choosers"
-#~ msgstr "Elektiloj por 3-a nivelo"
-
-#~ msgid "Urdu"
-#~ msgstr "Urdua"
+# Esperanta traduko por 'xkeyboard-config'
+# Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Felipe Castro <fefcas@gmail.com>, 2008, 2009, 2010, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-23 19:04-0300\n"
+"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Pli-signo/Malpli-signo&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Pli-signo/Malpli-signo&gt; elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Pli-signo/Malpli-signo&gt; elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Malmoderna) Alternativa"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Malmoderna) Alternativa, senpaŝaj klavoj de 'Sun'"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Malmoderna) Alternativa, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "Kongrua al 101/104 klavoj"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/komo/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/komo/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/punkto/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/punkto/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/komo/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/komo/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/punkto/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/punkto/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/komo/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/komo/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/punkto/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/punkto/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/komo/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/komo/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/punkto/Senpaŝaj klavoj"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/punkto/Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "ATM/telefon-stilo"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Acer Laptop"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "Aldoni laŭnorman funkciadon al la klavo Menu"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Aldonado de Esperantaj supersignoj"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Aldonado de valut-signoj al iuj klavoj"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Afganujo"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Albanujo"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt kaj Meta estas ĉe la klavoj Alt"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt estas mapita al la dekstra klavo Win kaj Super al Menu"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Caps Lock"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Space"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win, klava funkciado"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Alternativa"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Alternativa Orienta"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Alternativa Fonetika"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Alternativa internacia"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Alternava, senpaŝaj klavoj de 'Sun'"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativa, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Alternativa, nur latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andoro"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Iu ajn klavo Alt"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Iu ajn klavo Win"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Iu ajn klavo Win (dum premata)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Variaĵo de citilo (')"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apple Aluminium Keyboard (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apple Aluminium Keyboard (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apple Aluminium Keyboard (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apple Aluminium Keyboard: ŝajnigi klavojn de PC (Print, Scroll Lock, Pause, Num Lock)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Apple Laptop"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Araba"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Armenujo"
+
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Asturia variaĵo kun subpunktita H kaj subpunktita L"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Asus Laptop"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "Malsupre maldekstre"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "Maldekstre de 'A'"
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Aŭstrujo"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Azerbajĝano"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 sendrata Internet Keyboard"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Retroklino"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Bangladeŝo"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Baŝkira"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Belorusujo"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Belgujo"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Bengala"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Bengala Probhat"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, komforteca, Dvorake"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, komforteca, Dvorake, nur latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Bhutano"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Biblia Hebrea (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnujo kaj Hercegovino"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "Ambaŭ klavoj Alt kune"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "Ambaŭ klavoj Ctrl kune"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "Ambaŭ klavoj Shift kune"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Ambaŭ klavoj Shift kune alternigas Caps Lock"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Bocvano"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Brajla"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Brazilo"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Bretona"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Bulgarujo"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Kamboĝo"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Kanado"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Capewell-Dvorako (Baybayin)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Capewell-Dvorako (Latina)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Capewell-QWERF 2006 (Baybayin)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Capewell-QWERF 2006 (Latina)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (al la unua aranĝo), Shift+Caps Lock (al la lasta aranĝo)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (dum premata), Alt+Caps Lock restarigas la originalan uskligon"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock funkcias kiel Shift kun ŝlosado. Shift \"paŭzigas\" Caps Lock"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock funkcias kiel Shift kun ŝlosado. Shift ne influas Caps Lock"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "Caps Lock estas malebligita"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Funkciado de la klavo Caps Lock"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Caps Lock alternigas Shift, influante ĉiujn klavojn"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Caps Lock alternigas la ordinaran uskligon de alfabetaj signoj"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock uzas internan uskligon. Shift \"paŭzigas\" Caps Lock"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock uzas internan uskligon. Shift ne influas Cap sLock"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Kataluna variaĵo kun centro-punktita L"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Subhoketo"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Ĉeroka"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternativa opcio)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "Ĉinujo"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Ĉuvaŝa"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Ĉuvaŝa Latine"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Klasike"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Klasika Dvorako"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Klasika, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Colemak (Baybayin)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Colemak (Latina)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 klavoj)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 klavoj)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 klavoj)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "Pozicio de la klavo 'Compose'"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongo, Demokratia Respubliko de"
+
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "'Control' estas mapita al klavoj 'Alt', 'Alt' estas mapita al klavoj 'Win'"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "'Control' estas mapita al klavoj 'Win' (kaj al la kutimaj klavoj 'Ctrl')"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Krime-tatara (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Krime-tatara (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Krime-tatara (Turka Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Krime-tatara (Turka F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Krime-tatara (Turka Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Kroata"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Pozicio de la klavo 'Ctrl'"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Cirila"
+
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Cirila kun angul-citiloj"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Cirila, Z kaj ZHE interŝanĝita"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Ĉeĥa"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Senpaŝa dekstra korno"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Senpaŝa maldekstra korno"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Implicitaj ciferoj en cifer-klavaro"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell 101-klava PC"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Laptop/notebook Precision M series"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude series laptop"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Danujo"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 serio"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Dvorako"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Dvorako (Baybayin)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Dvorako (Latina)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorako (Interpunkcio de UK)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvoraka alternativa internacia (neniu senpaŝa klavo)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak internacia (kun senpaŝaj klavoj)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorako, Polaj citiloj ĉe klavo 1"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorako, Polaj citiloj ĉe citila klavo"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Orienta"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Ebligi kromajn tipografiajn signojn"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Angla"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Angla (Usona internacia)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Angla (Usona Macintosh)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Angla kun RupiSigno"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Enen-klavo en ciferklavaro"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonomia"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Estonujo"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Etiopujo"
+
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "EŭroSigno ĉe 2"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "EŭroSigno ĉe 4"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "EŭroSigno ĉe 5"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "EŭroSigno ĉe E"
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Etendite"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Etendite - Win-klavoj"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Etendita Retroklino"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "F-litero (F) variaĵo"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Ferooj"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Finlando"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Kvar-nivela klavo kun abstraktaj apartigiloj"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Kvar-nivela klavo kun komo"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Kvar-nivela klavo kun punkto"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Kvar-nivela klavo kun punkto, limigite al latin-9"
+
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Kvar-nivela klavo kun 'momayyez'"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "Francujo"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Français (Franca Alternativa)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Franca"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Franca (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Franca (malmoderna)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Franca Dvorako"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Franca, senpaŝaj klavoj de 'Sun'"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Franca, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Tekokomputilo Fujitsu-Siemens Computers AMILO"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "Ĝenerala 101-klava PC"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "Ĝenerala 102-klava (Intl) PC"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "Ĝenerala 104-klava PC"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "Ĝenerala 105-klava (Intl) PC"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Kartvelujo"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Kartvela"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Kartvela AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Germana (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Germana, senpaŝaj klavoj de 'Sun'"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Germana, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Germanujo"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Ganao"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Grekujo"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Gvineo"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Guĝarata"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Gurmukia"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukia de Jhelum"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Keyboard"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking Keyboard por Mac"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "Haŭsa"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Deksesume"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Hinda per Bolnagri"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Hinda Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Homofonia"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "Htc Dream - telefono"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Hungarujo"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "'Hyper' estas mapita al la klavoj 'Win'"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "Alternativa ISO"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Islando"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Inkluzivi senpaŝan tildon"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "Bharato"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "Internacia (senpaŝaj klavoj per 'AltGr')"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "Internacia (senpaŝaj klavoj)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Inuita"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Irano"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Irako"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Irlando"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Israelo"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Italujo"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Nipono"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Nipono (Serio PC-98xx)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Opcioj de nipona klavaro"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Kalmyk"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Kanao"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kanao 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "Kanaa klavo 'Lock' ŝlosigas"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Kanara"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Kaŝuba"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "Kazaĥa kaj Rusa"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Kazaĥujo"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Kenjo"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Klav-sekvo por formortigi la X-servilon"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Klavo por elekti 3-an nivelon"
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Klavo por elekti 5-an nivelon"
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "Klavo(j) por ŝanĝi la aranĝon"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Kikuyu"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Komia"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Koreujo, Respubliko de"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Kurda, (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurda, Araba-Latina"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurda, Latina Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Kurda, Lania Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Kirgizujo"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Laoso"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Latineca"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Latin-amerika"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Latineca Unikoda"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Latineca Unikoda qwerty"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Latineca qwerty"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Latineca unikoda"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Latineca unikoda qwerty"
+
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Latineca kun angul-citiloj"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Latvujo"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Aranĝ-alternado en la klavo multipliko/divido"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Maldekstra Alt"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Maldekstra 'Alt' (dum premata)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "La maldekstra 'Alt' estas permutita kun la maldekstra klavo 'Win'"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Maldekstra Ctrl"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Maldekstra Ctrl (por la unua aranĝo), Dekstra Ctrl (por la lasta aranĝo)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Maldekstra Ctrl+Maldekstra Shift"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Maldekstra Shift"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Maldekstra Win"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Maldekstra Win (al la unua aranĝo), Dekstra Win/Menu (al la lasta aranĝo)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Maldekstra Win (dum premata)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Maldekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Maldekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Maldekstra mano"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Maldekstreca Dvorako"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Malmoderna"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Malmoderna Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Malmoderna klavo kun komo"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Malmoderna klavo kun punkto"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Litovujo"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (alternativa opcio)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (alternativa opcio 2)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra keys via G15daemon"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech - Ĝenerala Klavaro"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Malsupra Soraba"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Malsupra Soraba (qwertz)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Makedonujo"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (Internacia)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Macintosh 'Malnova'"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, senpaŝaj klavoj de 'Sun'"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Igi Caps Lock kroman Retroklavon"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Igi Caps Lock kroman Ctrl"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "Igi Caps Lock kroman ESC"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Igi Caps Lock kroman Hyper"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Igi Caps Lock kroman Num Lock"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "Igi Caps Lock kroman Super"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Malajala"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Malajala 'Lalitha'"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Maldivoj"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Malio"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Maltolando"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Malta klavaro kun usona aranĝo"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Maoria"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Maria"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "Meta estas mapita al la Maldekstra Win"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "Meta estas mapita al la klavoj Win"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta ĉe Maldekstra Ctrl"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Sveda"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Ceteraj kongruaj opcioj"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Mongolujo"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Maroko"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Plurlingva"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Plurlingva, unua parto"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Plurlingva, dua parto"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Birmo"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "Retropaŝo laŭ estilo NICOLA-F"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Nativo por Esperanto"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Nativo por usonaj klavaroj"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Nepalo"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Nederlando"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Nova fonetika"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Niĝerujo"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Ne-rompebla spaco-signo ĉe la 4-a nivelo"
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Ne-rompebla spaco-signo ĉe la 4-a nivelo, maldika ne-rompebla spaco-signo ĉe la 6-a nivelo"
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Ne-rompebla spaco-signo ĉe la 4-a nivelo, maldika ne-rompebla spaco-signo ĉe la 6-a nivelo (per Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "Ne-rompebla spaco-signo ĉe la 2-a nivelo"
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "Ne-rompebla spaco-signo ĉe la 3-a nivelo"
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Ne-rompebla spaco-signo ĉe la 3-a nivelo, nenio ĉe la 4-a nivelo"
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Ne-rompebla spaco-signo ĉe la 3-a nivelo, maldika ne-rompebla spaco-signo ĉe la 4-a nivelo"
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Norda Samea"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Norda Samea, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Norvegujo"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Funkciado de la forig-klavo de la ciferklavaro"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "La klavoj de la ciferklavaro funkcias same kiel en Mac"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Elektado de aranĝo por la ciferklavaro"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC Daria"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC Paŝtoa"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC Suda Uzbekujo"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Okcitana"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Ogamo"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Ogamo IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Orija"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Oseta"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Oseta, klavoj 'Win'"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Oseta, malmoderna"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Pakistano"
+
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Panona Rusina Homofonia"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Paŝtoa"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Paŭso"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Persa, kun Persa Ciferklavaro"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "Phi"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Filipinoj"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Fonetika"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Fonetikaj Win-klavoj"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Polujo"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Plurtona"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Portugalujo"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Dvorako por programistoj"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (Baybayin)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Dekstra Alt"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Dekstra Alt (dum premata)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Dekstra Alt elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Dekstra Alt elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Dekstra Alt neniam elektas la 3-an nivelon"
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Dekstra Alt, Shift+Dekstra Alt estas Multi_Key"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Dekstra Ctrl"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Dekstra Ctrl (dum premata)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Dekstra Ctrl kiel Dekstran Alt"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Dekstra Ctrl+Dekstra Shift"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Dekstra Shift"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Dekstra Win"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Dekstra Win (dum premata)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Dekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Dekstra Win elektas 5-an nivelon, ŝlosas kiam premite kun alia 5-nivela elektilo, unu premo malfaras la ŝloson"
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Dekstra mano"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Dekstreca Dvorako"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Rumanujo"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Rumana klavaro kun germanaj literoj"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Rumana klavaro kun germanaj literoj, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Rupio ĉe 4"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Rusujo"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Rusa"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Rusa fonetika"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Rusa fonetika Dvorako"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Rusa fonetika, forigi senpaŝajn klavojn"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "Rusa kun Kazaĥa"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "Ruluma Baskulo"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Punkto-komo ĉe la 3-a nivelo"
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Senegalo"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbujo"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Serba"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Serb-Kroata"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Shift nuligas Caps Lock"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift ne nuligas Num Lock, elektas 3-an nivelon anstataŭe"
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift kun la ciferklavaro funkcias same kiel en MS Windows"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Shift+Caps Lock"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Simpla"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Sinda"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Slovakujo"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Slovenujo"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Sud-Afriko"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "Suda Uzbekujo"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Hispanio"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Specialaj klavoj (Ctrl+Alt+&lt;klavo&gt;) traktotaj en servilo"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Sri-Lanko"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Laŭnorma"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Laŭnorma (Subhoko)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Laŭnorma RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Laŭnorma RSTU en Rusa aranĝo"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Senpaŝaj klavoj de 'Sun'"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Permuti Ctrl kaj Caps Lock"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Permuti ESC kaj Caps Lock"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Svedujo"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Svislando"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tabuleta PC)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Sirio"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Siria"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Siria fonetika"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Taĝikujo"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Tamila"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Tamila Klavaro kun Ciferoj"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Tamila TAB Typewriter"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamila TSCII Typewriter"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Tamila Unikodo"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Tanzanio"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "Tatara"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Telugua"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Tajlando"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Tibeta"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibeta (kun ASCII ciferoj)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Tifinagh alternativa"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Tifinagh alternativa fonetika"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Tifinagh etendita"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh etendita fonetika"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh fonetika"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Tilda (~) variaĵo"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Al la ekvivalenta klavo en Dvoraka klavaro."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Al la ekvivalenta klavo en klavaro Qwerty."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Alterni Mus-Klavojn per Shift + NumLock."
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Tradicia fonetika"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Turkujo"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Turkmenujo"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (reĝimo 102/105:EU)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (reĝimo 106:JP)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Skribmaŝino"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Skribmaŝino, malmoderna"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "Aranĝo UCW (nur diakritaĵoj)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "Usona Dvorak kun subteno al CZ UCW"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Usona klavaro kun bosnaj duliteraĵoj"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "Usona klavaro kun bosnaj literoj"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "Usona klavaro kun kroataj duliteraĵoj"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "Usona klavaro kun kroataj literoj"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "Usona klavaro kun estonaj literoj"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "Usona klavaro kun italaj literoj"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "Usona klavaro kun litovaj literoj"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "Usona klavaro kun slovenaj literoj"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "Usono"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Udmurta"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Ukrajnujo"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Unikodaj aldonoj (sagoj kaj operaci-simboloj)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Unikodaj aldonoj (sagoj kaj operaci-simboloj). Operaci-simboloj en la implicita nivelo."
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "Unuiĝinta Reĝlando"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, Alternativa fonetika"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Urdu, Fonetike"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Win-klavoj"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Uzi bosnajn duliteraĵojn"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Uzi kroatajn duliteraĵojn"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "Uzi angul-citilojn por citiloj"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Uzi la LED de klavaro por indiki alternativan aranĝon"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "Uzado de spac-klavo por enmeti ne-rompeblan spaco-signon"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Kutima spaco-signo ĉe iu ajn nivelo"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Uzbekujo"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Vjetnamujo"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Wang 724 ciferklavaro kun unikodaj aldonoj (sagoj kaj operaci-simboloj)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Wang 724 ciferklavaro kun unikodaj aldonoj (sagoj kaj operaci-simboloj). Operaci-simboloj en la implicita nivelo"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang modelo 724 azerty"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Okcidenta"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Win-klavoj"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "Kun klavo &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "Kun EŭroSigno ĉe 5"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "Kun angul-citiloj"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "Yakut"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Joruba"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "Z kaj ZHE permutitaj"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe dua nivelo"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo, nenio ĉe la kvara nivelo"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo, maldika ne-rompebla spaco-signo ĉe la kvara nivelo"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, ne-rompebla spaco-signo ĉe la tria nivelo, nul-larĝa kuniga signo ĉe la kvara nivelo"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, nul-larĝa kuniga signo ĉe la tria nivelo"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe la dua nivelo, nul-larĝa kuniga signo ĉe la tria nivelo, ne-rompebla spaco-signo ĉe la kvara nivelo"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Nul-larĝa ne-kuniga signo ĉe la tria nivelo, nul-larĝa kuniga signo ĉe la kvara nivelo"
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "azerty/ciferoj"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "ciferoj"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "translokitaj punktokomo kaj citilo (malaktuale)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, etendita Retroklino"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "qwerty/ciferoj"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avesta"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Kunmiksado de diakritaĵoj anstataŭ senpaŝaj klavoj"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Internacia (AltGr-Unikodo kunmiksado)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Internacia (AltGr-Unikodo kunmiksado, alternativa)"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "5"
+#~ msgstr "5"
+
+#~ msgid "E"
+#~ msgstr "E"
+
+#~ msgid "LAm"
+#~ msgstr "LAm"
+
+#~ msgid "CapsLock"
+#~ msgstr "CapsLock"
+
+#~ msgid "ScrollLock"
+#~ msgstr "ScrollLock"
+
+#~ msgid "ACPI Standard"
+#~ msgstr "ACPI Laŭnorma"
+
+#~ msgid "Bhu"
+#~ msgstr "Bhu"
+
+#~ msgid "DRC"
+#~ msgstr "DRC"
+
+#~ msgid "Dvorak international"
+#~ msgstr "Internacia Dvorako"
+
+#~ msgid "Evdev-managed keyboard"
+#~ msgstr "Klavaro traktita per 'Evdev'"
+
+#~ msgid "Gre"
+#~ msgstr "Gre"
+
+#~ msgid "Gui"
+#~ msgstr "Gui"
+
+#~ msgid "Lav"
+#~ msgstr "Lav"
+
+#~ msgid "Nep"
+#~ msgstr "Nep"
+
+#~ msgid "SrL"
+#~ msgstr "SrL"
+
+#~ msgid "Baltic+"
+#~ msgstr "Balta+"
+
+#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "Pro Keypad"
+#~ msgstr "Pro Keypad"
+
+#~ msgid "Standard Phonetic"
+#~ msgstr "Laŭnorma Fonetika"
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "Brazila ABNT2"
+
+#~ msgid "Japanese 106-key"
+#~ msgstr "Nipono 106-klava"
+
+#~ msgid "Kir"
+#~ msgstr "Kir"
+
+#~ msgid "Korean 106-key"
+#~ msgstr "Korea 106-klava"
+
+#~ msgid "Super is mapped to Win keys"
+#~ msgstr "'Super' estas mapita al la klavoj Win"
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "Usona klavaro kun slovenaj duliteraĵoj"
+
+#~ msgid "Unicode"
+#~ msgstr "Unikodo"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Uzi slovenajn duliteraĵojn"
+
+#~ msgid "Add the EuroSign to the 2 key."
+#~ msgstr "Aldoni la EŭroSignon al la klavo 2."
+
+#~ msgid "Add the EuroSign to the 4 key."
+#~ msgstr "Aldoni la EŭroSignon al la klavo 4."
+
+#~ msgid "Add the EuroSign to the 5 key."
+#~ msgstr "Aldoni la EŭroSignon al la klavo 5."
+
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "Aldoni la EŭroSignon al la klavo E."
+
+#~ msgid "Alt+Ctrl change layout."
+#~ msgstr "Alt+Ctrl ŝanĝas la aranĝon."
+
+#~ msgid "Alt+Shift change layout."
+#~ msgstr "Alt+Shift ŝanĝas la aranĝon."
+
+#~ msgid "CapsLock LED shows alternative layout."
+#~ msgstr "LED de CapsLock indikas alternativan aranĝon."
+
+#~ msgid "CapsLock just locks the Shift modifier."
+#~ msgstr "CapsLock simple ŝlosas la modifilon Shift."
+
+#~ msgid "CapsLock key changes layout."
+#~ msgstr "La klavo CapsLock ŝanĝas la aranĝon."
+
+#~ msgid "Ctrl+Shift change layout."
+#~ msgstr "'Ctrl+Shift' ŝanĝas la aranĝon."
+
+#~ msgid "Hewlett-Packard Internet Keyboard 5181"
+#~ msgstr "Hewlett-Packard Internet Keyboard 5181"
+
+#~ msgid "Hewlett-Packard Internet Keyboard 5185"
+#~ msgstr "Hewlett-Packard Internet Keyboard 5185"
+
+#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#~ msgid "IBM Rapid Access II (alternate option)"
+#~ msgstr "IBM Rapid Access II (alternativa opcio)"
+
+#~ msgid "LCtrl+LShift change layout."
+#~ msgstr "LCtrl+LShift ŝanĝas la aranĝon."
+
+#~ msgid "Layout switching"
+#~ msgstr "Ŝaltado de aranĝo"
+
+#~ msgid "Left Alt key changes layout."
+#~ msgstr "La maldekstra klavo 'Alt' ŝanĝas la aranĝon."
+
+#~ msgid "Left Ctrl key changes layout."
+#~ msgstr "La maldekstra klavo 'Ctrl' ŝanĝas la aranĝon."
+
+#~ msgid "Left Shift key changes layout."
+#~ msgstr "La maldekstra klavo 'Shift' ŝanĝas la aranĝon."
+
+#~ msgid "Left Win-key changes layout."
+#~ msgstr "La maldekstra klavo 'Win' ŝanĝas la aranĝon."
+
+#~ msgid "Left Win-key is Compose."
+#~ msgstr "La maldekstra klavo 'Win' estas 'Compose'."
+
+#~ msgid "Legacy keypad"
+#~ msgstr "Malmoderna numerklavaro"
+
+#~ msgid "Menu is Compose."
+#~ msgstr "'Menuo' estas 'Compose'."
+
+#~ msgid "Neostyle"
+#~ msgstr "Neostyle"
+
+#~ msgid "NumLock LED shows alternative layout."
+#~ msgstr "LED de 'NumLock' indikas alternativan aranĝon."
+
+#~ msgid "Press Left Alt key to choose 3rd level."
+#~ msgstr "Premi la maldekstran klavon 'Alt' por elekti 3-an nivelon."
+
+#~ msgid "Press Left Win-key to choose 3rd level."
+#~ msgstr "Premi la maldekstran klavon 'Win' por elekti 3-an nivelon."
+
+#~ msgid "Press Right Alt key to choose 3rd level."
+#~ msgstr "Premi la dekstran klavon 'Alt' por elekti 3-an nivelon."
+
+#~ msgid "Press Right Ctrl to choose 3rd level."
+#~ msgstr "Premi la dekstran klavon 'Ctrl' por elekti 3-an nivelon."
+
+#~ msgid "Press Right Win-key to choose 3rd level."
+#~ msgstr "Premi la dekstran klavon 'Win' por elekti 3-an nivelon."
+
+#~ msgid "Press any of Alt keys to choose 3rd level."
+#~ msgstr "Premi iu ajn el la klavoj 'Alt' por elekti 3-an nivelon."
+
+#~ msgid "Press any of Win-keys to choose 3rd level."
+#~ msgstr "Premi iu ajn el la klavoj 'Win' por elekti 3-an nivelon."
+
+#~ msgid "Right Alt is Compose."
+#~ msgstr "Dekstra 'Alt' estas 'Compose'."
+
+#~ msgid "Right Alt key changes layout."
+#~ msgstr "Dekstra 'Alt' ŝanĝas la aranĝon."
+
+#~ msgid "Right Ctrl key changes layout."
+#~ msgstr "Dekstra 'Ctrl' ŝanĝas la aranĝon."
+
+#~ msgid "Right Shift key changes layout."
+#~ msgstr "Dekstra 'Shift' ŝanĝas la aranĝon."
+
+#~ msgid "Right Win-key changes layout."
+#~ msgstr "Dekstra 'Win' ŝanĝas la aranĝon."
+
+#~ msgid "Right Win-key is Compose."
+#~ msgstr "Dekstra 'Win' estas 'Compose'."
+
+#~ msgid "ScrollLock LED shows alternative layout."
+#~ msgstr "LED de 'ScrollLock' indikas alternativan aranĝon."
+
+#~ msgid "Shift+CapsLock changes layout."
+#~ msgstr "'Shift'+CapsLock ŝanĝas la aranĝon."
+
+#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+#~ msgstr "Permuti klavkodojn de du klavoj kiam klavaroj Mac estas misdetektitaj de la sistem-kerno."
+
+#~ msgid "Third level choosers"
+#~ msgstr "Elektiloj por 3-a nivelo"
+
+#~ msgid "Urdu"
+#~ msgstr "Urdua"
diff --git a/xorg-server/xkeyboard-config/po/es.po b/xorg-server/xkeyboard-config/po/es.po
index 1b12fba51..44bcfc252 100644
--- a/xorg-server/xkeyboard-config/po/es.po
+++ b/xorg-server/xkeyboard-config/po/es.po
@@ -1,3175 +1,3199 @@
-# translation of xkeyboard-config-1.9.po to Spanish
-# This file is distributed under the same license as the xkeyboard-config package.
-# Copyright (C) 2006 The free software foundation
-# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2006.
-# Jorge González González <aloriel@gmail.com>, 2009, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config-1.9\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-05-11 21:34+0100\n"
-"PO-Revision-Date: 2010-08-24 21:36+0200\n"
-"Last-Translator: Jorge González González <aloriel@gmail.com>\n"
-"Language-Team: Spanish <es@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Menor que/Mayor que&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Menor que/Mayor que&gt; elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Menor que/Mayor que&gt; elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Heredado) Alternativa"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Heredado) Alternativa, teclas muertas de Sun"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Heredado) Alternativa, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "101/104 teclas compatible"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/coma/Teclas muertas"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/coma/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/punto/Teclas muertas"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/punto/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/coma/Teclas muertas"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/coma/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/punto/Teclas muertas"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/punto/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/coma/Teclas muertas"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/coma/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/punto/Teclas muertas"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/punto/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/coma/Teclas muertas"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/coma/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/punto/Teclas muertas"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/punto/Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "Cajero automático/estilo teléfono"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Portátil Acer"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Añadir el comportamiento estándar a la tecla Menú."
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Añadir las tildes circunflejas del esperanto (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Añadir el símbolo del Euro a ciertas teclas"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afganistán"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt y Meta están en las teclas Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt está mapeada a la tecla Windows derecha y Super a la tecla Menú"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+CapsLock"
-msgstr "Alt+Bloq Mayús"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Mayús"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Espacio"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Comportamiento de la tecla Alt/Windows"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternativa"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternativa oriental"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternativa fonética"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternativa internacional"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternativa, teclas muertas de Sun"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativa, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternativa, sólo latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Cualquier tecla Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Cualquier tecla Windows"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Cualquier tecla Windows (al pulsarla)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Variante apóstrofo (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Teclado de aluminio de Apple (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Teclado de aluminio de Apple (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Teclado de aluminio de Apple (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll_Lock, Pause, NumLock)"
-msgstr "Teclado de aluminio de Apple: emular teclas PC (Imprimir, Bloq Despl, Pausa, Bloq Núm)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Portátil Apple"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Árabe"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Variante asturiana con H de medio punto y L de medio punto"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Portátil Asus"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "En la parte inferior izquierda"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "A la izquierda de la «A»"
-
-#: ../rules/base.xml.in.h:80
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:82
-msgid "Azerbaijan"
-msgstr "Azerbaiján"
-
-#: ../rules/base.xml.in.h:83
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:93
-msgid "Backslash"
-msgstr "Contrabarra"
-
-#: ../rules/base.xml.in.h:94
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#: ../rules/base.xml.in.h:95
-msgid "Bashkirian"
-msgstr "Bashkiriano"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:97
-msgid "Belarus"
-msgstr "Bielorusia"
-
-#: ../rules/base.xml.in.h:98
-msgid "Belgium"
-msgstr "Bélgica"
-
-#: ../rules/base.xml.in.h:99
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:100
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:102
-msgid "Bengali"
-msgstr "Bengalí"
-
-#: ../rules/base.xml.in.h:103
-msgid "Bengali Probhat"
-msgstr "Probhat Bengalí"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonómico, forma Dvorak"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonómico, forma Dvorak, sólo latin-9"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bhutan"
-msgstr "Bhután"
-
-#: ../rules/base.xml.in.h:109
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Hebreo bíblico (Tiro)"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:111
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia y Herzegovina"
-
-#: ../rules/base.xml.in.h:113
-msgid "Both Alt keys together"
-msgstr "Ambas teclas Alt juntas"
-
-#: ../rules/base.xml.in.h:114
-msgid "Both Ctrl keys together"
-msgstr "Ambas teclas Ctrl juntas"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Shift keys together"
-msgstr "Ambas teclas Mayús juntas"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Shift-Keys together toggle CapsLock"
-msgstr "Ambas teclas Mayús juntas conmutan Bloq Mayús"
-
-#: ../rules/base.xml.in.h:117
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:118
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:119
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:120
-msgid "Brazil"
-msgstr "Brasil"
-
-#: ../rules/base.xml.in.h:121
-msgid "Breton"
-msgstr "Bretón"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:123
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:124
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:125
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:126
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:127
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:128
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:129
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:130
-msgid "Cambodia"
-msgstr "Camboya"
-
-#: ../rules/base.xml.in.h:131
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:132
-msgid "Canada"
-msgstr "Canadá"
-
-#: ../rules/base.xml.in.h:133
-msgid "CapsLock"
-msgstr "Bloq Mayús"
-
-#: ../rules/base.xml.in.h:134
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr "Bloq Mayús (a la primera distribución), Mayús+Bloq Mayús (a la última distribución)"
-
-#: ../rules/base.xml.in.h:135
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr "Bloq Mayús (al pulsarse), Alt+Bloq Mayús realiza la acción original de bloqueo de mayúsculas"
-
-#: ../rules/base.xml.in.h:136
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr "Bloq Mayús actúa como Mayús con bloqueo; Mayús «pausa» Bloq Mayús"
-
-#: ../rules/base.xml.in.h:137
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "Bloq Mayús actúa como Mayús con bloqueo; Mayús no afecta a Bloq Mayús"
-
-#: ../rules/base.xml.in.h:138
-msgid "CapsLock is disabled"
-msgstr "Bloq Mayús está desactivado"
-
-#: ../rules/base.xml.in.h:139
-msgid "CapsLock key behavior"
-msgstr "Comportamiento de Bloq Mayús"
-
-#: ../rules/base.xml.in.h:140
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr "Bloq Mayús cambia Mayús de forma que todas las teclas están afectadas"
-
-#: ../rules/base.xml.in.h:141
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr "Bloq Mayús cambia la capitalización normal de los caracteres alfabéticos"
-
-#: ../rules/base.xml.in.h:142
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "Bloq Mayús usa la capitalización interna; Mayús «pausa» el Bloq Mayús"
-
-#: ../rules/base.xml.in.h:143
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "Bloq Mayús usa la capitalización interna; Mayús no afecta a Bloq Mayús"
-
-#: ../rules/base.xml.in.h:144
-msgid "Catalan variant with middle-dot L"
-msgstr "Variante catalana con L de medio punto"
-
-#: ../rules/base.xml.in.h:145
-msgid "Cedilla"
-msgstr "Cedilla"
-
-#: ../rules/base.xml.in.h:146
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:148
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (opción alternativa)"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:155
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:156
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:159
-msgid "China"
-msgstr "China"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:161
-msgid "Chuvash"
-msgstr "Chuvash"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chuvash Latin"
-msgstr "Chuvash latino"
-
-#: ../rules/base.xml.in.h:163
-msgid "Classic"
-msgstr "Clásico"
-
-#: ../rules/base.xml.in.h:164
-msgid "Classic Dvorak"
-msgstr "Dvorak clásico"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic, eliminate dead keys"
-msgstr "Clásico, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:167
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:168
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:169
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:170
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 teclas)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 teclas)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 teclas)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compose key position"
-msgstr "Posición de la tecla Componer"
-
-#: ../rules/base.xml.in.h:175
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, República Democrática del"
-
-#: ../rules/base.xml.in.h:176
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Retroceso"
-
-#: ../rules/base.xml.in.h:177
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control está mapeada a las teclas Alt, Alt está mapeado a las teclas Windows"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control está mapeada a las teclas Windows (y las teclas Ctrl usuales)"
-
-#: ../rules/base.xml.in.h:179
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:180
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Tártaro de Crimea (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Tártaro de Crimea (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Tártaro de Crimea (turco Alt-Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Tártaro de Crimea (turco F)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Tártaro de Crimea (turco Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Croatia"
-msgstr "Croacia"
-
-#: ../rules/base.xml.in.h:186
-msgid "Ctrl key position"
-msgstr "Posición de la tecla Ctrl"
-
-#: ../rules/base.xml.in.h:187
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Mayús"
-
-#: ../rules/base.xml.in.h:188
-msgid "Cyrillic"
-msgstr "Cirílico"
-
-#: ../rules/base.xml.in.h:189
-msgid "Cyrillic with guillemets"
-msgstr "Cirílico con guillemots"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Cirílico, Z y ZHE intercambiados"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cze"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:192
-msgid "Czechia"
-msgstr "Chequia"
-
-#: ../rules/base.xml.in.h:193
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:194
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dead acute"
-msgstr "Acento muerto"
-
-#: ../rules/base.xml.in.h:196
-msgid "Dead grave acute"
-msgstr "Acento grave muerto"
-
-#: ../rules/base.xml.in.h:197
-msgid "Default numeric keypad keys"
-msgstr "Teclas del teclado numérico predeterminado"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:199
-msgid "Dell 101-key PC"
-msgstr "Dell PC 101 teclas"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Laptop/notebook Precision M series"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Latitude series laptop"
-msgstr "Portátil Dell Latitude"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:207
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#: ../rules/base.xml.in.h:208
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:209
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:210
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:212
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (puntuación de RU)"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Alternativa dvorak internacional (sin teclas muertas)"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak internacional (con teclas muertas)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, comillas polacas en la tecla 1"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, comillas polacas en la tecla de comillas"
-
-#: ../rules/base.xml.in.h:218
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:219
-msgid "Eastern"
-msgstr "Oriental"
-
-#: ../rules/base.xml.in.h:220
-msgid "Eliminate dead keys"
-msgstr "Eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:221
-msgid "Enable extra typographic characters"
-msgstr "Activar caracteres tipográficos adicionales"
-
-#: ../rules/base.xml.in.h:222
-msgid "English"
-msgstr "Inglés"
-
-#: ../rules/base.xml.in.h:223
-msgid "English (USA International)"
-msgstr "Inglés (EE. UU. internacional)"
-
-#: ../rules/base.xml.in.h:224
-msgid "English (USA Macintosh)"
-msgstr "Inglés (EE. UU. Macintosh)"
-
-#: ../rules/base.xml.in.h:225
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:226
-msgid "Enter on keypad"
-msgstr "Intro en el teclado numérico"
-
-#: ../rules/base.xml.in.h:227
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:228
-msgid "Ergonomic"
-msgstr "Ergonómico"
-
-#: ../rules/base.xml.in.h:229
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:230
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:231
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:232
-msgid "Estonia"
-msgstr "Estonia"
-
-#: ../rules/base.xml.in.h:233
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:234
-msgid "Ethiopia"
-msgstr "Etiopía"
-
-#: ../rules/base.xml.in.h:235
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:237
-msgid "Extended"
-msgstr "Extendido"
-
-#: ../rules/base.xml.in.h:238
-msgid "Extended - Winkeys"
-msgstr "Extendido - teclas Windows"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended Backslash"
-msgstr "Contrabarra extendida"
-
-#: ../rules/base.xml.in.h:240
-msgid "F-letter (F) variant"
-msgstr "Variante de letra F (F)"
-
-#: ../rules/base.xml.in.h:241
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:242
-msgid "Faroe Islands"
-msgstr "Islas Feroe"
-
-#: ../rules/base.xml.in.h:243
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:244
-msgid "Finland"
-msgstr "Finlandia"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:247
-msgid "Four-level key with abstract separators"
-msgstr "Tecla de cuarto nivel con separadores abstractos"
-
-#: ../rules/base.xml.in.h:248
-msgid "Four-level key with comma"
-msgstr "Tecla de cuarto nivel con coma"
-
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with dot"
-msgstr "Tecla de cuarto nivel con punto"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Tecla de cuarto nivel con punto, restricción latin-9"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with momayyez"
-msgstr "Tecla de cuarto nivel con momayyez"
-
-#: ../rules/base.xml.in.h:252
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:253
-msgid "France"
-msgstr "Francia"
-
-#: ../rules/base.xml.in.h:254
-msgid "Français (France Alternative)"
-msgstr "Francés (alternativa francesa)"
-
-#: ../rules/base.xml.in.h:255
-msgid "French"
-msgstr "Francés"
-
-#: ../rules/base.xml.in.h:256
-msgid "French (Macintosh)"
-msgstr "Francés (Macintosh)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French (legacy)"
-msgstr "Francés (heredado)"
-
-#: ../rules/base.xml.in.h:258
-msgid "French Dvorak"
-msgstr "Francés Dvorak"
-
-#: ../rules/base.xml.in.h:259
-msgid "French, Sun dead keys"
-msgstr "Francés, teclas muertas Sun"
-
-#: ../rules/base.xml.in.h:260
-msgid "French, eliminate dead keys"
-msgstr "Francés, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:261
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:262
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Portátil Fujitsu-Siemens Computers AMILO"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:264
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:265
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:266
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:267
-msgid "Generic 101-key PC"
-msgstr "PC genérico 101 teclas"
-
-#: ../rules/base.xml.in.h:268
-msgid "Generic 102-key (Intl) PC"
-msgstr "PC genérico 102 teclas (intl)"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 104-key PC"
-msgstr "PC genérico 104 teclas"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 105-key (Intl) PC"
-msgstr "PC genérico 105 teclas (intl)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:272
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:276
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:277
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:278
-msgid "Georgian"
-msgstr "Georgiano"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgian AZERTY Tskapo"
-msgstr "AZERTY Tskapo georgiano"
-
-#: ../rules/base.xml.in.h:280
-msgid "German (Macintosh)"
-msgstr "Alemán (Macintosh)"
-
-#: ../rules/base.xml.in.h:281
-msgid "German, Sun dead keys"
-msgstr "Alemán, teclas muertas Sun"
-
-#: ../rules/base.xml.in.h:282
-msgid "German, eliminate dead keys"
-msgstr "Alemán, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:283
-msgid "Germany"
-msgstr "Alemania"
-
-#: ../rules/base.xml.in.h:284
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:285
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:287
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:288
-msgid "Greece"
-msgstr "Grecia"
-
-#: ../rules/base.xml.in.h:289
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:290
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:291
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:294
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Keyboard"
-
-#: ../rules/base.xml.in.h:295
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking Keyboard para Mac"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hausa"
-msgstr "Hausa"
-
-#: ../rules/base.xml.in.h:297
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hexadecimal"
-msgstr "Hexadecimal"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:312
-msgid "Homophonic"
-msgstr "Homofónico"
-
-#: ../rules/base.xml.in.h:313
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:314
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:315
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hungary"
-msgstr "Hungría"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper está mapeada a las teclas Windows"
-
-#: ../rules/base.xml.in.h:318
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:319
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:325
-msgid "ISO Alternate"
-msgstr "Alternativa ISO"
-
-#: ../rules/base.xml.in.h:326
-msgid "Iceland"
-msgstr "Islandia"
-
-#: ../rules/base.xml.in.h:327
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:328
-msgid "Include dead tilde"
-msgstr "Incluir tilde muerta"
-
-#: ../rules/base.xml.in.h:329
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:330
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:331
-msgid "International (AltGr dead keys)"
-msgstr "Internacional (con teclas muertas AltGr)"
-
-#: ../rules/base.xml.in.h:332
-msgid "International (with dead keys)"
-msgstr "Internacional (con teclas muertas)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:334
-msgid "Iran"
-msgstr "Irán"
-
-#: ../rules/base.xml.in.h:335
-msgid "Iraq"
-msgstr "Iraq"
-
-#: ../rules/base.xml.in.h:336
-msgid "Ireland"
-msgstr "Irlanda"
-
-#: ../rules/base.xml.in.h:337
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:338
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:340
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:341
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:342
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:343
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:344
-msgid "Italy"
-msgstr "Italia"
-
-#: ../rules/base.xml.in.h:345
-msgid "Japan"
-msgstr "Japón"
-
-#: ../rules/base.xml.in.h:346
-msgid "Japan (PC-98xx Series)"
-msgstr "Japón (Series PC-98xx)"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japanese keyboard options"
-msgstr "Opciones de teclado japonés"
-
-#: ../rules/base.xml.in.h:348
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:349
-msgid "Kalmyk"
-msgstr "Calmuco"
-
-#: ../rules/base.xml.in.h:350
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kana Lock key is locking"
-msgstr "La tecla Bloq Kana está bloqueando"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kashubian"
-msgstr "Casubio"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kazakh with Russian"
-msgstr "Kazajo con ruso"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kazakhstan"
-msgstr "Kazajstán"
-
-#: ../rules/base.xml.in.h:357
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kenya"
-msgstr "Kenia"
-
-#: ../rules/base.xml.in.h:359
-msgid "Key sequence to kill the X server"
-msgstr "Secuencia de teclas para matar el servidor X"
-
-#: ../rules/base.xml.in.h:360
-msgid "Key to choose 3rd level"
-msgstr "Tecla para seleccionar el 3er nivel"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key to choose 5th level"
-msgstr "Tecla para seleccionar el 5o nivel"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key(s) to change layout"
-msgstr "Tecla(s) para cambiar la distribución"
-
-#: ../rules/base.xml.in.h:363
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:365
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kikuyu"
-msgstr "kikuyu"
-
-#: ../rules/base.xml.in.h:367
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:369
-msgid "Korea, Republic of"
-msgstr "Corea, República de"
-
-#: ../rules/base.xml.in.h:370
-msgid "Ktunaxa"
-msgstr "Kutenai"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kurdish, (F)"
-msgstr "Kurdo, (F)"
-
-#: ../rules/base.xml.in.h:372
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdo, arábigolatino"
-
-#: ../rules/base.xml.in.h:373
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdo, Latino Alt-Q"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, Latin Q"
-msgstr "Kurdo, Latino Q"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kyrgyzstan"
-msgstr "Kirgizstán"
-
-#: ../rules/base.xml.in.h:376
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:377
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:378
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:379
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:380
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:381
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:382
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:384
-msgid "Latin"
-msgstr "Latino"
-
-#: ../rules/base.xml.in.h:385
-msgid "Latin American"
-msgstr "Latino américa"
-
-#: ../rules/base.xml.in.h:386
-msgid "Latin Unicode"
-msgstr "Latino Unicode"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin Unicode qwerty"
-msgstr "Latino Unicode qwerty"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin qwerty"
-msgstr "Latino qwerty"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin unicode"
-msgstr "Latino unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin unicode qwerty"
-msgstr "Latino unicode qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin with guillemets"
-msgstr "Latino con guillemots"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latvia"
-msgstr "Letonia"
-
-#: ../rules/base.xml.in.h:393
-msgid "Layout toggle on multiply/divide key"
-msgstr "Cambio de distribución en la tecla multiplicar/dividir"
-
-#: ../rules/base.xml.in.h:394
-msgid "Left Alt"
-msgstr "Alt izquierda"
-
-#: ../rules/base.xml.in.h:395
-msgid "Left Alt (while pressed)"
-msgstr "Alt izquierda (mientras está pulsado)"
-
-#: ../rules/base.xml.in.h:396
-msgid "Left Alt is swapped with Left Win"
-msgstr "Alt izquierda está cambiado con Windows izquierda"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Ctrl"
-msgstr "Ctrl izquierda"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Ctrl izquierda (a la primera distribución), Ctrl derecha (a la última distribución)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Ctrl+Left Shift"
-msgstr "Ctrl izquierda + Mayús izquierda"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Shift"
-msgstr "Mayús izquierda"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Win"
-msgstr "Win izquierda"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Win izquierda (a la primera distribución), Win/Menu derecha (a la última distribución)"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Win (while pressed)"
-msgstr "Tecla Windows izquierda (al pulsarla)"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win izquierda elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win izquierda elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left hand"
-msgstr "Zurdo"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left handed Dvorak"
-msgstr "Dvorak para zurdos"
-
-#: ../rules/base.xml.in.h:408
-msgid "Legacy"
-msgstr "Heredado"
-
-#: ../rules/base.xml.in.h:409
-msgid "Legacy Wang 724"
-msgstr "Wang 724 heredado"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:411
-msgid "Legacy key with comma"
-msgstr "Tecla heredada con coma"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy key with dot"
-msgstr "Tecla heredada con punto"
-
-#: ../rules/base.xml.in.h:413
-msgid "Lithuania"
-msgstr "Lituania"
-
-#: ../rules/base.xml.in.h:414
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (opción alternativa)"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (opción alternativa 2)"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra keys via G15daemon"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech, teclado genérico"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (modelo Y-RB6)"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:439
-msgid "Lower Sorbian"
-msgstr "Bajo sorbio"
-
-#: ../rules/base.xml.in.h:440
-msgid "Lower Sorbian (qwertz)"
-msgstr "Bajo sorbio (qwertz)"
-
-#: ../rules/base.xml.in.h:441
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:443
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:444
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:445
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:446
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:447
-msgid "Macedonia"
-msgstr "Macedonia"
-
-#: ../rules/base.xml.in.h:448
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:449
-msgid "Macintosh Old"
-msgstr "Macintosh antiguo"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, teclas muertas Sun"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:452
-msgid "Make CapsLock an additional Backspace"
-msgstr "Hacer de Bloq Mayús un Retroceso adicional"
-
-#: ../rules/base.xml.in.h:453
-msgid "Make CapsLock an additional Ctrl"
-msgstr "Hacer de Bloq Mayús un Ctrl adicional"
-
-#: ../rules/base.xml.in.h:454
-msgid "Make CapsLock an additional ESC"
-msgstr "Hacer de Bloq Mayús un Esc adicional"
-
-#: ../rules/base.xml.in.h:455
-msgid "Make CapsLock an additional Hyper"
-msgstr "Hacer de Bloq Mayús un Hyper adicional"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make CapsLock an additional NumLock"
-msgstr "Hacer de Bloq Mayús un Bloq Num adicional"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make CapsLock an additional Super"
-msgstr "Hacer de Bloq Mayús un Super adicional"
-
-#: ../rules/base.xml.in.h:458
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:459
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha"
-
-#: ../rules/base.xml.in.h:460
-msgid "Maldives"
-msgstr "Maldivas"
-
-#: ../rules/base.xml.in.h:461
-msgid "Mali"
-msgstr "Malí"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:463
-msgid "Maltese keyboard with US layout"
-msgstr "Teclado maltés con distribución EE. UU."
-
-#: ../rules/base.xml.in.h:464
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:465
-msgid "Maori"
-msgstr "Maorí"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:467
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:468
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:469
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:470
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:471
-msgid "Meta is mapped to Left Win"
-msgstr "Meta está mapeada a la tecla Windows izquierda"
-
-#: ../rules/base.xml.in.h:472
-msgid "Meta is mapped to Win keys"
-msgstr "Meta está mapeada a las teclas Windows"
-
-#: ../rules/base.xml.in.h:473
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:474
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:475
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, sueco"
-
-#: ../rules/base.xml.in.h:476
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:484
-msgid "Miscellaneous compatibility options"
-msgstr "Opciones misceláneas de compatiblidad"
-
-#: ../rules/base.xml.in.h:485
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:486
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:487
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:488
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#: ../rules/base.xml.in.h:491
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#: ../rules/base.xml.in.h:492
-msgid "Morocco"
-msgstr "Marruecos"
-
-#: ../rules/base.xml.in.h:493
-msgid "Multilingual"
-msgstr "Multilingüe"
-
-#: ../rules/base.xml.in.h:494
-msgid "Multilingual, first part"
-msgstr "Multilingüe, primera parte"
-
-#: ../rules/base.xml.in.h:495
-msgid "Multilingual, second part"
-msgstr "Multilingüe, segunda parte"
-
-#: ../rules/base.xml.in.h:496
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:497
-msgid "NICOLA-F style Backspace"
-msgstr "Retroceso estilo NICOLA-F"
-
-#: ../rules/base.xml.in.h:498
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:499
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:500
-msgid "Nativo for Esperanto"
-msgstr "Nativo para esperanto"
-
-#: ../rules/base.xml.in.h:501
-msgid "Nativo for USA keyboards"
-msgstr "Nativo para teclados de EE. UU."
-
-#: ../rules/base.xml.in.h:502
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:504
-msgid "Netherlands"
-msgstr "Holanda"
-
-#: ../rules/base.xml.in.h:505
-msgid "New phonetic"
-msgstr "Fonético nuevo"
-
-#: ../rules/base.xml.in.h:506
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#: ../rules/base.xml.in.h:508
-msgid "Nld"
-msgstr "Hol"
-
-#: ../rules/base.xml.in.h:509
-msgid "Non-breakable space character at fourth level"
-msgstr "Carácter de espacio no separable en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:510
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Carácter de espacio no separable en el cuarto nivel, carácter de espacio estrecho no separable en el sexto nivel"
-
-#: ../rules/base.xml.in.h:511
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Carácter de espacio no separable en el cuarto nivel, carácter de espacio estrecho no separable en el sexto nivel (a través de Ctrl+Mayús)"
-
-#: ../rules/base.xml.in.h:512
-msgid "Non-breakable space character at second level"
-msgstr "Carácter de espacio no separable en el segundo nivel"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at third level"
-msgstr "Carácter de espacio no separable en el tercer nivel"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Carácter de espacio no separable en el tercer nivel, nada en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Carácter de espacio no separable en el tercer nivel, carácter de espacio estrecho no separable en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:516
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:517
-msgid "Northern Saami"
-msgstr "Saami del norte"
-
-#: ../rules/base.xml.in.h:518
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Saami del norte, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:519
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:520
-msgid "Norway"
-msgstr "Noruega"
-
-#: ../rules/base.xml.in.h:521
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:522
-msgid "NumLock"
-msgstr "Bloq Num"
-
-#: ../rules/base.xml.in.h:523
-msgid "Numeric keypad delete key behaviour"
-msgstr "Comportamiento de la tecla Supr del teclado numérico"
-
-#: ../rules/base.xml.in.h:524
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Las teclas del teclado numérico funcionan como en un Mac"
-
-#: ../rules/base.xml.in.h:525
-msgid "Numeric keypad layout selection"
-msgstr "Selección de distribución de teclado numérico"
-
-#: ../rules/base.xml.in.h:526
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:527
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:528
-msgid "OLPC Dari"
-msgstr "OLPC dari"
-
-#: ../rules/base.xml.in.h:529
-msgid "OLPC Pashto"
-msgstr "OLPC pashto"
-
-#: ../rules/base.xml.in.h:530
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC uzbeco del sur"
-
-#: ../rules/base.xml.in.h:531
-msgid "Occitan"
-msgstr "Occitano"
-
-#: ../rules/base.xml.in.h:532
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:533
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:534
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Teclado Oretec MCK-800 MM/Internet"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ossetian"
-msgstr "Osetio"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ossetian, Winkeys"
-msgstr "Osetio, teclas Windows"
-
-#: ../rules/base.xml.in.h:538
-msgid "Ossetian, legacy"
-msgstr "Osetio, heredado"
-
-#: ../rules/base.xml.in.h:539
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:540
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:541
-msgid "Pakistan"
-msgstr "Pakistán"
-
-#: ../rules/base.xml.in.h:542
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Rusino de Panonia homofónico"
-
-#: ../rules/base.xml.in.h:543
-msgid "Pashto"
-msgstr "Pashto"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pause"
-msgstr "Pausa"
-
-#: ../rules/base.xml.in.h:546
-msgid "Persian, with Persian Keypad"
-msgstr "Persa con teclado numérico persa"
-
-#: ../rules/base.xml.in.h:547
-msgid "Phonetic"
-msgstr "Fonético"
-
-#: ../rules/base.xml.in.h:548
-msgid "Phonetic Winkeys"
-msgstr "Teclas Windows fonéticas"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:550
-msgid "Poland"
-msgstr "Polonia"
-
-#: ../rules/base.xml.in.h:551
-msgid "Polytonic"
-msgstr "Politónico"
-
-#: ../rules/base.xml.in.h:552
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:553
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:554
-msgid "Programmer Dvorak"
-msgstr "Dvorak de programador"
-
-#: ../rules/base.xml.in.h:555
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:556
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:557
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:558
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:559
-msgid "Right Alt"
-msgstr "Alt derecho"
-
-#: ../rules/base.xml.in.h:560
-msgid "Right Alt (while pressed)"
-msgstr "Alt derecho (mientras está pulsado)"
-
-#: ../rules/base.xml.in.h:561
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Alt derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
-
-#: ../rules/base.xml.in.h:562
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Alt derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt key never chooses 3rd level"
-msgstr "La tecla Alt derecha nunca elige el 3er nivel"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "La tecla Alt derecha, Mayús+Alt derecha es tecla Multi"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Ctrl"
-msgstr "Ctrl derecho"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Ctrl (while pressed)"
-msgstr "Ctrl derecho (mientras está pulsado)"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Ctrl as Right Alt"
-msgstr "Ctrl derecho como Alt derecho"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Ctrl+Right Shift"
-msgstr "Ctrl derecho + Mayús derecho"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Shift"
-msgstr "Mayús derecho"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Win"
-msgstr "Windows derecho"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Win (while pressed)"
-msgstr "La tecla Windows (mientras está pulsada)"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right hand"
-msgstr "Diestro"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right handed Dvorak"
-msgstr "Dvorak diestro"
-
-#: ../rules/base.xml.in.h:576
-msgid "Romania"
-msgstr "Rumanía"
-
-#: ../rules/base.xml.in.h:577
-msgid "Romanian keyboard with German letters"
-msgstr "Teclado rumano con letras alemanas"
-
-#: ../rules/base.xml.in.h:578
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Teclado rumano con teclas alemanas, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:579
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:580
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:581
-msgid "Russia"
-msgstr "Rusia"
-
-#: ../rules/base.xml.in.h:582
-msgid "Russian"
-msgstr "Ruso"
-
-#: ../rules/base.xml.in.h:583
-msgid "Russian phonetic"
-msgstr "Ruso fonético"
-
-#: ../rules/base.xml.in.h:584
-msgid "Russian phonetic Dvorak"
-msgstr "Dvorak ruso fonético "
-
-#: ../rules/base.xml.in.h:585
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Ruso fonético, eliminar teclas muertas"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian with Kazakh"
-msgstr "Ruso con kazajo"
-
-#: ../rules/base.xml.in.h:587
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:588
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:589
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:590
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:591
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:592 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:593
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:595
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:596
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:597
-msgid "ScrollLock"
-msgstr "Bloq Despl"
-
-#: ../rules/base.xml.in.h:598
-msgid "Secwepemctsin"
-msgstr "Shuswap"
-
-#: ../rules/base.xml.in.h:599
-msgid "Semi-colon on third level"
-msgstr "Punto y coma en tercer nivel"
-
-#: ../rules/base.xml.in.h:600
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:601
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:602 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "Serbia"
-
-#: ../rules/base.xml.in.h:603
-msgid "Serbian"
-msgstr "Serbio"
-
-#: ../rules/base.xml.in.h:604
-msgid "Shift cancels CapsLock"
-msgstr "Mayús cancela BloqMayús"
-
-#: ../rules/base.xml.in.h:605
-msgid "Shift does not cancel NumLock, chooses 3rd level instead"
-msgstr "Mayús no cancela Bloq Num, en su lugar elije el 3er nivel"
-
-#: ../rules/base.xml.in.h:606
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Mayús con las teclas del teclado numérico funcionan como en MS Windows"
-
-#: ../rules/base.xml.in.h:607
-msgid "Shift+CapsLock"
-msgstr "Mayús+BloqMayús"
-
-#: ../rules/base.xml.in.h:608
-msgid "Simple"
-msgstr "Simple"
-
-#: ../rules/base.xml.in.h:609
-msgid "Slovakia"
-msgstr "Eslovaquia"
-
-#: ../rules/base.xml.in.h:610
-msgid "Slovenia"
-msgstr "Eslovenia"
-
-#: ../rules/base.xml.in.h:611
-msgid "South Africa"
-msgstr "Sudáfrica"
-
-#: ../rules/base.xml.in.h:612
-msgid "Southern Uzbek"
-msgstr "Uzbequia del sur"
-
-#: ../rules/base.xml.in.h:613
-msgid "Spain"
-msgstr "España"
-
-#: ../rules/base.xml.in.h:614
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Teclas especiales (Ctrl+Alt+«tecla») manipuladas en un servidor"
-
-#: ../rules/base.xml.in.h:615
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:616
-msgid "Standard"
-msgstr "Estándar"
-
-#: ../rules/base.xml.in.h:617
-msgid "Standard (Cedilla)"
-msgstr "Estándar (cedilla)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:619
-msgid "Standard RSTU"
-msgstr "Standard RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:621
-msgid "Standard RSTU on Russian layout"
-msgstr "Standard RSTU con distribución rusa"
-
-#: ../rules/base.xml.in.h:622
-msgid "Sun Type 5/6"
-msgstr "Sun tipo 5/6"
-
-#: ../rules/base.xml.in.h:623
-msgid "Sun dead keys"
-msgstr "Teclas muertas de Sun"
-
-#: ../rules/base.xml.in.h:624
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:625
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:626
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:627
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:628
-msgid "Swap Ctrl and CapsLock"
-msgstr "Intercambiar Ctrl y BloqMayús"
-
-#: ../rules/base.xml.in.h:629
-msgid "Swap ESC and CapsLock"
-msgstr "Intercambiar ESC y BloqMayús"
-
-#: ../rules/base.xml.in.h:630
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:631
-msgid "Sweden"
-msgstr "Suecia"
-
-#: ../rules/base.xml.in.h:632
-msgid "Switzerland"
-msgstr "Suiza"
-
-#: ../rules/base.xml.in.h:633
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:634
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:635
-msgid "Syria"
-msgstr "Siria"
-
-#: ../rules/base.xml.in.h:636
-msgid "Syriac"
-msgstr "Sirio"
-
-#: ../rules/base.xml.in.h:637
-msgid "Syriac phonetic"
-msgstr "Sirio fonético"
-
-#: ../rules/base.xml.in.h:638
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:639
-msgid "Tajikistan"
-msgstr "Tajikistán"
-
-#: ../rules/base.xml.in.h:640
-msgid "Tamil"
-msgstr "Tamil"
-
-#: ../rules/base.xml.in.h:641
-msgid "Tamil Keyboard with Numerals"
-msgstr "Teclado tamil con letras números"
-
-#: ../rules/base.xml.in.h:642
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB Typewriter"
-
-#: ../rules/base.xml.in.h:643
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII Typewriter"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tamil Unicode"
-msgstr "Tamil Unicode"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tanzania"
-msgstr "Tanzania"
-
-#: ../rules/base.xml.in.h:646
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tatar"
-msgstr "Tatar"
-
-#: ../rules/base.xml.in.h:648
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:650
-msgid "Thailand"
-msgstr "Tailandia"
-
-#: ../rules/base.xml.in.h:651
-msgid "Tibetan"
-msgstr "Tibetano"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetano (con numerales ASCII)"
-
-#: ../rules/base.xml.in.h:653
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tifinagh Alternative"
-msgstr "Alternativa tifinagh"
-
-#: ../rules/base.xml.in.h:655
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Alternativa fonética tifinagh"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tifinagh Extended"
-msgstr "Extendido tifinagh"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh fonético extendido"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh fonético"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tilde (~) variant"
-msgstr "Variante virgulilla (~)"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:662
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "A la tecla correspondiente en un teclado Dvorak."
-
-#: ../rules/base.xml.in.h:663
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "A la tecla correspondiente en un teclado Qwerty."
-
-#: ../rules/base.xml.in.h:664
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:665
-msgid "Traditional phonetic"
-msgstr "Tradicional fonético"
-
-#: ../rules/base.xml.in.h:666
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:667
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:668
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:669
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:670
-msgid "Turkey"
-msgstr "Turquía"
-
-#: ../rules/base.xml.in.h:671
-msgid "Turkmenistan"
-msgstr "Turkmenistán"
-
-#: ../rules/base.xml.in.h:672
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:673
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:674
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:675
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:modo EU)"
-
-#: ../rules/base.xml.in.h:676
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (106:modo JP)"
-
-#: ../rules/base.xml.in.h:677
-msgid "Typewriter"
-msgstr "Máquina de escribir"
-
-#: ../rules/base.xml.in.h:678
-msgid "Typewriter, legacy"
-msgstr "Máquina de escribir, heredado"
-
-#: ../rules/base.xml.in.h:679
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:680
-msgid "UCW layout (accented letters only)"
-msgstr "Distribución UCW (sólo teclas con tilde)"
-
-#: ../rules/base.xml.in.h:681
-msgid "US Dvorak with CZ UCW support"
-msgstr "Teclado EE. UU. con soporte para UCW checo"
-
-#: ../rules/base.xml.in.h:682
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Teclado EE. UU. con digrafos bosnios"
-
-#: ../rules/base.xml.in.h:683
-msgid "US keyboard with Bosnian letters"
-msgstr "Teclado EE. UU. con letras bosnias"
-
-#: ../rules/base.xml.in.h:684
-msgid "US keyboard with Croatian digraphs"
-msgstr "Teclado EE. UU. con digrafos croatas"
-
-#: ../rules/base.xml.in.h:685
-msgid "US keyboard with Croatian letters"
-msgstr "Teclado EE. UU. con letras croatas"
-
-#: ../rules/base.xml.in.h:686
-msgid "US keyboard with Estonian letters"
-msgstr "Teclado EE. UU. con letras estonias"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Italian letters"
-msgstr "Teclado EE. UU. con letras italianas"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Lithuanian letters"
-msgstr "Teclado EE. UU. con letras lituanas"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Slovenian letters"
-msgstr "Teclado EE. UU. con letras eslovenas"
-
-#: ../rules/base.xml.in.h:690 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "EE. UU."
-
-#: ../rules/base.xml.in.h:691
-msgid "Udmurt"
-msgstr "Udmurto"
-
-#: ../rules/base.xml.in.h:692
-msgid "Ukr"
-msgstr "Ucr"
-
-#: ../rules/base.xml.in.h:693
-msgid "Ukraine"
-msgstr "Ucrania"
-
-#: ../rules/base.xml.in.h:694
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Adiciones unicode (flechas y operadores matemáticos)"
-
-#: ../rules/base.xml.in.h:695
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Adiciones unicode (flechas y operadores matemáticos); operadores matemáticos en el nivel predeterminado"
-
-#: ../rules/base.xml.in.h:696
-msgid "UnicodeExpert"
-msgstr "UnicodeExperto"
-
-#: ../rules/base.xml.in.h:697
-msgid "United Kingdom"
-msgstr "Reino Unido"
-
-#: ../rules/base.xml.in.h:698
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:699
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu fonético alternativo"
-
-#: ../rules/base.xml.in.h:700
-msgid "Urdu, Phonetic"
-msgstr "Urdu fonético"
-
-#: ../rules/base.xml.in.h:701
-msgid "Urdu, Winkeys"
-msgstr "Urdu, teclas Windows"
-
-#: ../rules/base.xml.in.h:702
-msgid "Use Bosnian digraphs"
-msgstr "Usar digrafos bosnios"
-
-#: ../rules/base.xml.in.h:703
-msgid "Use Croatian digraphs"
-msgstr "Usar digrafos croatas"
-
-#: ../rules/base.xml.in.h:704
-msgid "Use guillemets for quotes"
-msgstr "Usar guillemots para comillas"
-
-#: ../rules/base.xml.in.h:705
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Usar LED del teclado para mostrar la distribución alternativa"
-
-#: ../rules/base.xml.in.h:706
-msgid "Using space key to input non-breakable space character"
-msgstr "Usando la tecla espacio para introducir un carácter de espacio no separable"
-
-#: ../rules/base.xml.in.h:707
-msgid "Usual space at any level"
-msgstr "Espacio usual en cualquier nivel"
-
-#: ../rules/base.xml.in.h:708
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:709
-msgid "Uzbekistan"
-msgstr "Uzbekistán"
-
-#: ../rules/base.xml.in.h:710
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:711
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "Teclado para internet ViewSonic KU-306"
-
-#: ../rules/base.xml.in.h:712
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:713
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Teclado numérico Wang 724 con adiciones Unicode (flechas y operadores matemáticos)"
-
-#: ../rules/base.xml.in.h:714
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Teclado numérico Wang 724 con adiciones Unicode (flechas y operadores matemáticos); operadores matemáticos en el nivel predeterminado"
-
-#: ../rules/base.xml.in.h:715
-msgid "Wang model 724 azerty"
-msgstr "Wang modelo 724 azerty"
-
-#: ../rules/base.xml.in.h:716
-msgid "Western"
-msgstr "Occidental"
-
-#: ../rules/base.xml.in.h:717
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:718
-msgid "Winkeys"
-msgstr "Teclas Windows"
-
-#: ../rules/base.xml.in.h:719
-msgid "With &lt;\\|&gt; key"
-msgstr "With tecla «\\|»"
-
-#: ../rules/base.xml.in.h:720
-msgid "With EuroSign on 5"
-msgstr "Con símbolo del Euro a la tecla 5"
-
-#: ../rules/base.xml.in.h:721
-msgid "With guillemets"
-msgstr "Con guillemots"
-
-#: ../rules/base.xml.in.h:722
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:723
-msgid "Yakut"
-msgstr "Yakuto"
-
-#: ../rules/base.xml.in.h:724
-msgid "Yoruba"
-msgstr "Yoruba"
-
-#: ../rules/base.xml.in.h:725
-msgid "Z and ZHE swapped"
-msgstr "Z y ZHE intercambiados"
-
-#: ../rules/base.xml.in.h:726
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:727
-msgid "Zero-width non-joiner character at second level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel"
-
-#: ../rules/base.xml.in.h:728
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel"
-
-#: ../rules/base.xml.in.h:729
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel, nada en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:730
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel, espacio estrecho no separable en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel, espacio de anchura cero rompible («ZWJ») en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio de anchura cero rompible («ZWJ») en el tercer nivel"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio de anchura cero rompible («ZWJ») en el tercer nivel, caracter de espacio no separable en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el tercer nivel, carácter de anchura cero rompible («ZWJ») en el cuarto nivel"
-
-#: ../rules/base.xml.in.h:735
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:736
-msgid "azerty/digits"
-msgstr "azerty/dígitos"
-
-#: ../rules/base.xml.in.h:737
-msgid "digits"
-msgstr "dígitos"
-
-#: ../rules/base.xml.in.h:738
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "punto y coma y comilla desplazadas (obsoleto)"
-
-#: ../rules/base.xml.in.h:739
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:740
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, contrabarra extendida"
-
-#: ../rules/base.xml.in.h:742
-msgid "qwerty/digits"
-msgstr "qwerty/dígitos"
-
-#: ../rules/base.xml.in.h:743
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr "Combinar tildes en lugar de teclas muertas"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Coeur d’Alene salish"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr "Internacional (combinando AltGr Unicode)"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Internacional (combinando AltGr Unicode, alternativa)"
-
-#~ msgid "ACPI Standard"
-#~ msgstr "ACPI Estándard"
-
-#~ msgid "Bhu"
-#~ msgstr "Bhu"
-
-#~ msgid "Caps Lock"
-#~ msgstr "Bloqueo de mayúsculas"
-
-#~ msgid "DRC"
-#~ msgstr "DRC"
-
-#~ msgid "Dan"
-#~ msgstr "Dan"
-
-#~ msgid "Dvorak international"
-#~ msgstr "Dvorak internacional"
-
-#~ msgid "Gre"
-#~ msgstr "Gre"
-
-#~ msgid "Gui"
-#~ msgstr "Gui"
-
-#, fuzzy
-#~ msgid "Lav"
-#~ msgstr "Lao"
-
-#~ msgid "Nep"
-#~ msgstr "Nep"
-
-#~ msgid "SrL"
-#~ msgstr "SrL"
-
-#~ msgid "Acer TravelMate 800"
-#~ msgstr "Acer TravelMate 800"
-
-#~ msgid "Add the EuroSign to the 2 key."
-#~ msgstr "Añadir el símbolo del Euro a la tecla 2."
-
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "Añadir el símbolo del Euro a la tecla E."
-
-#~ msgid "Alt+Ctrl changes group."
-#~ msgstr "Alt+Ctrl cambia el grupo."
-
-#~ msgid "Alt+Shift changes group."
-#~ msgstr "Alt+Mayús cambia el grupo."
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "ABNT2 brasileño"
-
-#~ msgid "CapsLock LED shows alternative group."
-#~ msgstr "El LED de BloqMayús muestra el grupo alternativo."
-
-#~ msgid "CapsLock just locks the Shift modifier."
-#~ msgstr "BloqMayús tan sólo bloquea el modificador Mayús."
-
-#~ msgid "CapsLock key changes group."
-#~ msgstr "La tecla BloqMayús cambia el grupo."
-
-#~ msgid "Ctrl+Shift changes group."
-#~ msgstr "Ctrl+Mayús cambia el grupo."
-
-#~ msgid "Group Shift/Lock behavior"
-#~ msgstr "Comportamiento del grupo Mayús/Bloq"
-
-#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#~ msgid "IBM Rapid Access II (alternate option)"
-#~ msgstr "IBM Rapid Access II (opción alternativa)"
-
-#~ msgid "Japanese 106-key"
-#~ msgstr "Japonés 106 teclas"
-
-#~ msgid "Korean 106-key"
-#~ msgstr "Coreano 106 teclas"
-
-#~ msgid "Kotoistus"
-#~ msgstr "Kotoistus"
-
-#~ msgid "Kyr"
-#~ msgstr "Kyr"
-
-#~ msgid "Left Alt key changes group."
-#~ msgstr "La tecla Alt izquierda cambia el grupo."
-
-#~ msgid "Left Ctrl key changes group."
-#~ msgstr "La tecla Ctrl izquierda cambia el grupo."
-
-#~ msgid "Left Shift key changes group."
-#~ msgstr "La tecla Mayús izquierda cambia el grupo."
-
-#~ msgid "Left Win-key changes group."
-#~ msgstr "La tecla Windows izquierda cambia el grupo."
-
-#~ msgid "Left Win-key is Compose."
-#~ msgstr "La tecla Windows izquierda es Componer."
-
-#~ msgid "Macintosh layout"
-#~ msgstr "Distribución Macintosh"
-
-#~ msgid "Menu is Compose."
-#~ msgstr "Menú es Componer."
-
-#~ msgid "Menu key changes group."
-#~ msgstr "La tecla Menú cambia el grupo."
-
-#~ msgid "Neostyle"
-#~ msgstr "Neostyle"
-
-#~ msgid "NumLock LED shows alternative group."
-#~ msgstr "El LED de BloqNum muestra el grupo alternativo."
-
-#~ msgid "Power G5"
-#~ msgstr "Power G5"
-
-#~ msgid "PowerPC PS/2"
-#~ msgstr "PowerPC PS/2"
-
-#~ msgid "Press Left Alt key to choose 3rd level."
-#~ msgstr "Pulsar la tecla Alt izquierda para elegir el 3er nivel."
-
-#~ msgid "Press Left Win-key to choose 3rd level."
-#~ msgstr "Pulsar la tecla Windows izquierda para elegir el 3er nivel."
-
-#~ msgid "Press Right Ctrl to choose 3rd level."
-#~ msgstr "Pulsar la tecla Ctrl derecha para elegir el 3er nivel."
-
-#~ msgid "Press Right Win-key to choose 3rd level."
-#~ msgstr "Pulsar la tecla Windows derecha para elegir el 3er nivel."
-
-#~ msgid "Press any of Alt keys to choose 3rd level."
-#~ msgstr "Pulsar cualquiera de las teclas Alt para elegir el 3er nivel."
-
-#~ msgid "Press any of Win-keys to choose 3rd level."
-#~ msgstr "Pulsar cualquiera de las teclas Windows para elegir el 3er nivel."
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "R-Alt switches group while pressed."
-#~ msgstr "Alt derecho cambia el grupo al pulsarse."
-
-#~ msgid "Right Alt key changes group."
-#~ msgstr "La tecla Alt derecha cambia el grupo."
-
-#~ msgid "Right Ctrl key changes group."
-#~ msgstr "La tecla Ctrl derecha cambia el grupo."
-
-#~ msgid "Right Shift key changes group."
-#~ msgstr "La tecla Mayús derecha cambia el grupo."
-
-#~ msgid "Right Win-key changes group."
-#~ msgstr "La tecla Windows derecha cambia el grupo."
-
-#~ msgid "Right Win-key is Compose."
-#~ msgstr "La tecla Windows derecha es Componer."
-
-#~ msgid "SCG"
-#~ msgstr "SCG"
-
-#~ msgid "ScrollLock LED shows alternative group."
-#~ msgstr "El led de BloqDespl muestra el grupo alternativo."
-
-#~ msgid "Third level choosers"
-#~ msgstr "Selectores de tercer nivel"
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "Teclado EEUU con digrafos eslovenos"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Usar digrafos eslovenos"
+# translation of xkeyboard-config-2.0.po to Spanish
+# This file is distributed under the same license as the xkeyboard-config package.
+# Copyright (C) 2006 The free software foundation
+# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2006.
+# Jorge González González <aloriel@gmail.com>, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config-2.0\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-09-15 21:57+0100\n"
+"PO-Revision-Date: 2010-10-08 17:21+0200\n"
+"Last-Translator: Jorge González González <aloriel@gmail.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Menor que/Mayor que&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Menor que/Mayor que&gt; elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Menor que/Mayor que&gt; elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Heredado) Alternativa"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Heredado) Alternativa, teclas muertas de Sun"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Heredado) Alternativa, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104 teclas compatible"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/coma/Teclas muertas"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/coma/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/punto/Teclas muertas"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/punto/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/coma/Teclas muertas"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/coma/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/punto/Teclas muertas"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/punto/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/coma/Teclas muertas"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/coma/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/punto/Teclas muertas"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/punto/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/coma/Teclas muertas"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/coma/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/punto/Teclas muertas"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/punto/Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:25
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:26
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:27
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:28
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:29
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:30
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:31
+msgid "ATM/phone-style"
+msgstr "Cajero automático/estilo teléfono"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:34
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:35
+msgid "Acer Laptop"
+msgstr "Portátil Acer"
+
+#: ../rules/base.xml.in.h:36
+msgid "Add the standard behavior to Menu key"
+msgstr "Añadir el comportamiento estándar a la tecla Menú."
+
+#: ../rules/base.xml.in.h:37
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Añadir las tildes circunflejas del esperanto (supersigno)"
+
+#: ../rules/base.xml.in.h:38
+msgid "Adding EuroSign to certain keys"
+msgstr "Añadir el símbolo del Euro a ciertas teclas"
+
+#: ../rules/base.xml.in.h:39
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:40
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:41
+msgid "Afghanistan"
+msgstr "Afganistán"
+
+#: ../rules/base.xml.in.h:42
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:44
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt y Meta están en las teclas Alt"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt está mapeada a la tecla Windows derecha y Super a la tecla Menú"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Caps Lock"
+msgstr "Alt+Bloq Mayús"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt+Shift"
+msgstr "Alt+Mayús"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt+Space"
+msgstr "Alt+Espacio"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alt/Win key behavior"
+msgstr "Comportamiento de la tecla Alt/Windows"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative"
+msgstr "Alternativa"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative Eastern"
+msgstr "Alternativa oriental"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative Phonetic"
+msgstr "Alternativa fonética"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative international"
+msgstr "Alternativa internacional"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, Sun dead keys"
+msgstr "Alternativa, teclas muertas de Sun"
+
+#: ../rules/base.xml.in.h:58
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativa, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:59
+msgid "Alternative, latin-9 only"
+msgstr "Alternativa, sólo latin-9"
+
+#: ../rules/base.xml.in.h:60
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:61
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Alt key"
+msgstr "Cualquier tecla Alt"
+
+#: ../rules/base.xml.in.h:63
+msgid "Any Win key"
+msgstr "Cualquier tecla Windows"
+
+#: ../rules/base.xml.in.h:64
+msgid "Any Win key (while pressed)"
+msgstr "Cualquier tecla Windows (al pulsarla)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apostrophe (') variant"
+msgstr "Variante apóstrofo (')"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Teclado de aluminio de Apple (ANSI)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Teclado de aluminio de Apple (ISO)"
+
+#: ../rules/base.xml.in.h:69
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Teclado de aluminio de Apple (JIS)"
+
+#: ../rules/base.xml.in.h:70
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Teclado de aluminio de Apple: emular teclas PC (Imprimir, Bloq Despl, Pausa, Bloq Num)"
+
+#: ../rules/base.xml.in.h:71
+msgid "Apple Laptop"
+msgstr "Portátil Apple"
+
+#: ../rules/base.xml.in.h:72
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:73
+msgid "Arabic"
+msgstr "Árabe"
+
+#: ../rules/base.xml.in.h:74
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:75
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:76
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Variante asturiana con H de medio punto y L de medio punto"
+
+#: ../rules/base.xml.in.h:77
+msgid "Asus Laptop"
+msgstr "Portátil Asus"
+
+#: ../rules/base.xml.in.h:78
+msgid "At bottom left"
+msgstr "En la parte inferior izquierda"
+
+#: ../rules/base.xml.in.h:79
+msgid "At left of 'A'"
+msgstr "A la izquierda de la «A»"
+
+#: ../rules/base.xml.in.h:80
+msgid "Austria"
+msgstr "Austria"
+
+#: ../rules/base.xml.in.h:81
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:82
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:83
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:84
+msgid "Azerbaijan"
+msgstr "Azerbaiján"
+
+#: ../rules/base.xml.in.h:85
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:92
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:93
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:94
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:95
+msgid "Backslash"
+msgstr "Contrabarra"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bashkirian"
+msgstr "Bashkiriano"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:99
+msgid "Belarus"
+msgstr "Bielorusia"
+
+#: ../rules/base.xml.in.h:100
+msgid "Belgium"
+msgstr "Bélgica"
+
+#: ../rules/base.xml.in.h:101
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:102
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:103
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bengali"
+msgstr "Bengalí"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bengali Probhat"
+msgstr "Probhat Bengalí"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonómico, forma Dvorak"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonómico, forma Dvorak, sólo latin-9"
+
+#: ../rules/base.xml.in.h:108
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bhutan"
+msgstr "Bhután"
+
+#: ../rules/base.xml.in.h:111
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Hebreo bíblico (Tiro)"
+
+#: ../rules/base.xml.in.h:112
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:113
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:114
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia y Herzegovina"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Alt keys together"
+msgstr "Ambas teclas Alt juntas"
+
+#: ../rules/base.xml.in.h:116
+msgid "Both Ctrl keys together"
+msgstr "Ambas teclas Ctrl juntas"
+
+#: ../rules/base.xml.in.h:117
+msgid "Both Shift keys together"
+msgstr "Ambas teclas Mayús juntas"
+
+#: ../rules/base.xml.in.h:118
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Ambas teclas Mayús juntas conmutan Bloq Mayús"
+
+#: ../rules/base.xml.in.h:119
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:120
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:121
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brazil"
+msgstr "Brasil"
+
+#: ../rules/base.xml.in.h:123
+msgid "Breton"
+msgstr "Bretón"
+
+#: ../rules/base.xml.in.h:124
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:125
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:126
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:127
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:128
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:129
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:130
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:131
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:132
+msgid "Cambodia"
+msgstr "Camboya"
+
+#: ../rules/base.xml.in.h:133
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:134
+msgid "Canada"
+msgstr "Canadá"
+
+#: ../rules/base.xml.in.h:135
+msgid "Caps Lock"
+msgstr "Bloqueo de mayúsculas"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Bloq Mayús (a la primera distribución), Mayús+Bloq Mayús (a la última distribución)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Bloq Mayús (al pulsarse), Alt+Bloq Mayús realiza la acción original de bloqueo de mayúsculas"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Bloq Mayús actúa como Mayús con bloqueo; Mayús «pausa» Bloq Mayús"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Bloq Mayús actúa como Mayús con bloqueo; Mayús no afecta a Bloq Mayús"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock is disabled"
+msgstr "Bloq Mayús está desactivado"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock key behavior"
+msgstr "Comportamiento de Bloq Mayús"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Bloq Mayús cambia Mayús de forma que todas las teclas están afectadas"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Bloq Mayús cambia la capitalización normal de los caracteres alfabéticos"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Bloq Mayús usa la capitalización interna; Mayús «pausa» el Bloq Mayús"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Bloq Mayús usa la capitalización interna; Mayús no afecta a Bloq Mayús"
+
+#: ../rules/base.xml.in.h:146
+msgid "Catalan variant with middle-dot L"
+msgstr "Variante catalana con L de medio punto"
+
+#: ../rules/base.xml.in.h:147
+msgid "Cedilla"
+msgstr "Cedilla"
+
+#: ../rules/base.xml.in.h:148
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:149
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (opción alternativa)"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:157
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:161
+msgid "China"
+msgstr "China"
+
+#: ../rules/base.xml.in.h:162
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chuvash"
+msgstr "Chuvash"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash Latin"
+msgstr "Chuvash latino"
+
+#: ../rules/base.xml.in.h:165
+msgid "Classic"
+msgstr "Clásico"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic Dvorak"
+msgstr "Dvorak clásico"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic, eliminate dead keys"
+msgstr "Clásico, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:169
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:170
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:171
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:172
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 teclas)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 teclas)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 teclas)"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compose key position"
+msgstr "Posición de la tecla Componer"
+
+#: ../rules/base.xml.in.h:177
+msgid "Congo, Democratic Republic of the"
+msgstr "Congo, República Democrática del"
+
+#: ../rules/base.xml.in.h:178
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Retroceso"
+
+#: ../rules/base.xml.in.h:179
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control está mapeada a las teclas Alt, Alt está mapeado a las teclas Windows"
+
+#: ../rules/base.xml.in.h:180
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control está mapeada a las teclas Windows (y las teclas Ctrl usuales)"
+
+#: ../rules/base.xml.in.h:181
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:182
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Tártaro de Crimea (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:183
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Tártaro de Crimea (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Tártaro de Crimea (turco Alt-Q)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Tártaro de Crimea (turco F)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Tártaro de Crimea (turco Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Croatia"
+msgstr "Croacia"
+
+#: ../rules/base.xml.in.h:188
+msgid "Ctrl key position"
+msgstr "Posición de la tecla Ctrl"
+
+#: ../rules/base.xml.in.h:189
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Mayús"
+
+#: ../rules/base.xml.in.h:190
+msgid "Cyrillic"
+msgstr "Cirílico"
+
+#: ../rules/base.xml.in.h:191
+msgid "Cyrillic with guillemets"
+msgstr "Cirílico con guillemots"
+
+#: ../rules/base.xml.in.h:192
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Cirílico, Z y ZHE intercambiados"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cze"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:194
+msgid "Czechia"
+msgstr "Chequia"
+
+#: ../rules/base.xml.in.h:195
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:196
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:197
+msgid "Dead acute"
+msgstr "Acento muerto"
+
+#: ../rules/base.xml.in.h:198
+msgid "Dead grave acute"
+msgstr "Acento grave muerto"
+
+#: ../rules/base.xml.in.h:199
+msgid "Default numeric keypad keys"
+msgstr "Teclas del teclado numérico predeterminado"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dell 101-key PC"
+msgstr "Dell PC 101 teclas"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Laptop/notebook Precision M series"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell Latitude series laptop"
+msgstr "Portátil Dell Latitude"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:209
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: ../rules/base.xml.in.h:210
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:212
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:213
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:215
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (puntuación de RU)"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Alternativa dvorak internacional (sin teclas muertas)"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak internacional (con teclas muertas)"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, comillas polacas en la tecla 1"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, comillas polacas en la tecla de comillas"
+
+#: ../rules/base.xml.in.h:220
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:221
+msgid "Eastern"
+msgstr "Oriental"
+
+#: ../rules/base.xml.in.h:222
+msgid "Eliminate dead keys"
+msgstr "Eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:223
+msgid "Enable extra typographic characters"
+msgstr "Activar caracteres tipográficos adicionales"
+
+#: ../rules/base.xml.in.h:224
+msgid "English"
+msgstr "Inglés"
+
+#: ../rules/base.xml.in.h:225
+msgid "English (USA International)"
+msgstr "Inglés (EE. UU. internacional)"
+
+#: ../rules/base.xml.in.h:226
+msgid "English (USA Macintosh)"
+msgstr "Inglés (EE. UU. Macintosh)"
+
+#: ../rules/base.xml.in.h:227
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:228
+msgid "Enter on keypad"
+msgstr "Intro en el teclado numérico"
+
+#: ../rules/base.xml.in.h:229
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:230
+msgid "Ergonomic"
+msgstr "Ergonómico"
+
+#: ../rules/base.xml.in.h:231
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:232
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:233
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:234
+msgid "Estonia"
+msgstr "Estonia"
+
+#: ../rules/base.xml.in.h:235
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:236
+msgid "Ethiopia"
+msgstr "Etiopía"
+
+#: ../rules/base.xml.in.h:237
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:238
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:239
+msgid "Extended"
+msgstr "Extendido"
+
+#: ../rules/base.xml.in.h:240
+msgid "Extended - Winkeys"
+msgstr "Extendido - teclas Windows"
+
+#: ../rules/base.xml.in.h:241
+msgid "Extended Backslash"
+msgstr "Contrabarra extendida"
+
+#: ../rules/base.xml.in.h:242
+msgid "F-letter (F) variant"
+msgstr "Variante de letra F (F)"
+
+#: ../rules/base.xml.in.h:243
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:244
+msgid "Faroe Islands"
+msgstr "Islas Feroe"
+
+#: ../rules/base.xml.in.h:245
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:246
+msgid "Finland"
+msgstr "Finlandia"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:249
+msgid "Four-level key with abstract separators"
+msgstr "Tecla de cuarto nivel con separadores abstractos"
+
+#: ../rules/base.xml.in.h:250
+msgid "Four-level key with comma"
+msgstr "Tecla de cuarto nivel con coma"
+
+#: ../rules/base.xml.in.h:251
+msgid "Four-level key with dot"
+msgstr "Tecla de cuarto nivel con punto"
+
+#: ../rules/base.xml.in.h:252
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Tecla de cuarto nivel con punto, restricción latin-9"
+
+#: ../rules/base.xml.in.h:253
+msgid "Four-level key with momayyez"
+msgstr "Tecla de cuarto nivel con momayyez"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:255
+msgid "France"
+msgstr "Francia"
+
+#: ../rules/base.xml.in.h:256
+msgid "Français (France Alternative)"
+msgstr "Francés (alternativa francesa)"
+
+#: ../rules/base.xml.in.h:257
+msgid "French"
+msgstr "Francés"
+
+#: ../rules/base.xml.in.h:258
+msgid "French (Macintosh)"
+msgstr "Francés (Macintosh)"
+
+#: ../rules/base.xml.in.h:259
+msgid "French (legacy)"
+msgstr "Francés (heredado)"
+
+#: ../rules/base.xml.in.h:260
+msgid "French Dvorak"
+msgstr "Francés Dvorak"
+
+#: ../rules/base.xml.in.h:261
+msgid "French, Sun dead keys"
+msgstr "Francés, teclas muertas Sun"
+
+#: ../rules/base.xml.in.h:262
+msgid "French, eliminate dead keys"
+msgstr "Francés, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:264
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Portátil Fujitsu-Siemens Computers AMILO"
+
+#: ../rules/base.xml.in.h:265
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:266
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:267
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:268
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:269
+msgid "Generic 101-key PC"
+msgstr "PC genérico 101 teclas"
+
+#: ../rules/base.xml.in.h:270
+msgid "Generic 102-key (Intl) PC"
+msgstr "PC genérico 102 teclas (intl)"
+
+#: ../rules/base.xml.in.h:271
+msgid "Generic 104-key PC"
+msgstr "PC genérico 104 teclas"
+
+#: ../rules/base.xml.in.h:272
+msgid "Generic 105-key (Intl) PC"
+msgstr "PC genérico 105 teclas (intl)"
+
+#: ../rules/base.xml.in.h:273
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:274
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:275
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:276
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:277
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:278
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:279
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:280
+msgid "Georgian"
+msgstr "Georgiano"
+
+#: ../rules/base.xml.in.h:281
+msgid "Georgian AZERTY Tskapo"
+msgstr "AZERTY Tskapo georgiano"
+
+#: ../rules/base.xml.in.h:282
+msgid "German (Macintosh)"
+msgstr "Alemán (Macintosh)"
+
+#: ../rules/base.xml.in.h:283
+msgid "German, Sun dead keys"
+msgstr "Alemán, teclas muertas Sun"
+
+#: ../rules/base.xml.in.h:284
+msgid "German, eliminate dead keys"
+msgstr "Alemán, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:285
+msgid "Germany"
+msgstr "Alemania"
+
+#: ../rules/base.xml.in.h:286
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:287
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:288
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:289
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:290
+msgid "Greece"
+msgstr "Grecia"
+
+#: ../rules/base.xml.in.h:291
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:292
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:293
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:294
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:296
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Keyboard"
+
+#: ../rules/base.xml.in.h:297
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking Keyboard para Mac"
+
+#: ../rules/base.xml.in.h:298
+msgid "Hausa"
+msgstr "Hausa"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:303
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:304
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:305
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:306
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:307
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hexadecimal"
+msgstr "Hexadecimal"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:314
+msgid "Homophonic"
+msgstr "Homofónico"
+
+#: ../rules/base.xml.in.h:315
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hungary"
+msgstr "Hungría"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper está mapeada a las teclas Windows"
+
+#: ../rules/base.xml.in.h:320
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:321
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:322
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:323
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:324
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:325
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:326
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:327
+msgid "ISO Alternate"
+msgstr "Alternativa ISO"
+
+#: ../rules/base.xml.in.h:328
+msgid "Iceland"
+msgstr "Islandia"
+
+#: ../rules/base.xml.in.h:329
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:330
+msgid "Include dead tilde"
+msgstr "Incluir tilde muerta"
+
+#: ../rules/base.xml.in.h:331
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:332
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:333
+msgid "International (AltGr dead keys)"
+msgstr "Internacional (con teclas muertas AltGr)"
+
+#: ../rules/base.xml.in.h:334
+msgid "International (with dead keys)"
+msgstr "Internacional (con teclas muertas)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Irán"
+
+#: ../rules/base.xml.in.h:337
+msgid "Iraq"
+msgstr "Iraq"
+
+#: ../rules/base.xml.in.h:338
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: ../rules/base.xml.in.h:339
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:340
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:341
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:342
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:343
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:344
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:345
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:346
+msgid "Italy"
+msgstr "Italia"
+
+#: ../rules/base.xml.in.h:347
+msgid "Japan"
+msgstr "Japón"
+
+#: ../rules/base.xml.in.h:348
+msgid "Japan (PC-98xx Series)"
+msgstr "Japón (Series PC-98xx)"
+
+#: ../rules/base.xml.in.h:349
+msgid "Japanese keyboard options"
+msgstr "Opciones de teclado japonés"
+
+#: ../rules/base.xml.in.h:350
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:351
+msgid "Kalmyk"
+msgstr "Calmuco"
+
+#: ../rules/base.xml.in.h:352
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kana Lock key is locking"
+msgstr "La tecla Bloq Kana está bloqueando"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kashubian"
+msgstr "Casubio"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:357
+msgid "Kazakh with Russian"
+msgstr "Kazajo con ruso"
+
+#: ../rules/base.xml.in.h:358
+msgid "Kazakhstan"
+msgstr "Kazajstán"
+
+#: ../rules/base.xml.in.h:359
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:360
+msgid "Kenya"
+msgstr "Kenia"
+
+#: ../rules/base.xml.in.h:361
+msgid "Key sequence to kill the X server"
+msgstr "Secuencia de teclas para matar el servidor X"
+
+#: ../rules/base.xml.in.h:362
+msgid "Key to choose 3rd level"
+msgstr "Tecla para seleccionar el 3er nivel"
+
+#: ../rules/base.xml.in.h:363
+msgid "Key to choose 5th level"
+msgstr "Tecla para seleccionar el 5o nivel"
+
+#: ../rules/base.xml.in.h:364
+msgid "Key(s) to change layout"
+msgstr "Tecla(s) para cambiar la distribución"
+
+#: ../rules/base.xml.in.h:365
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:367
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kikuyu"
+msgstr "kikuyu"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:370
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:371
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:372
+msgid "Korea, Republic of"
+msgstr "Corea, República de"
+
+#: ../rules/base.xml.in.h:373
+msgid "Ktunaxa"
+msgstr "Kutenai"
+
+#: ../rules/base.xml.in.h:374
+msgid "Kurdish, (F)"
+msgstr "Kurdo, (F)"
+
+#: ../rules/base.xml.in.h:375
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdo, arábigolatino"
+
+#: ../rules/base.xml.in.h:376
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdo, Latino Alt-Q"
+
+#: ../rules/base.xml.in.h:377
+msgid "Kurdish, Latin Q"
+msgstr "Kurdo, Latino Q"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kyrgyzstan"
+msgstr "Kirgizstán"
+
+#: ../rules/base.xml.in.h:379
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:380
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:381
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:382
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:383
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:384
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:385
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:386
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:387
+msgid "Latin"
+msgstr "Latino"
+
+#: ../rules/base.xml.in.h:388
+msgid "Latin American"
+msgstr "Latino américa"
+
+#: ../rules/base.xml.in.h:389
+msgid "Latin Unicode"
+msgstr "Latino Unicode"
+
+#: ../rules/base.xml.in.h:390
+msgid "Latin Unicode qwerty"
+msgstr "Latino Unicode qwerty"
+
+#: ../rules/base.xml.in.h:391
+msgid "Latin qwerty"
+msgstr "Latino qwerty"
+
+#: ../rules/base.xml.in.h:392
+msgid "Latin unicode"
+msgstr "Latino unicode"
+
+#: ../rules/base.xml.in.h:393
+msgid "Latin unicode qwerty"
+msgstr "Latino unicode qwerty"
+
+#: ../rules/base.xml.in.h:394
+msgid "Latin with guillemets"
+msgstr "Latino con guillemots"
+
+#: ../rules/base.xml.in.h:395
+msgid "Latvia"
+msgstr "Letonia"
+
+#: ../rules/base.xml.in.h:396
+msgid "Layout toggle on multiply/divide key"
+msgstr "Cambio de distribución en la tecla multiplicar/dividir"
+
+#: ../rules/base.xml.in.h:397
+msgid "Left Alt"
+msgstr "Alt izquierda"
+
+#: ../rules/base.xml.in.h:398
+msgid "Left Alt (while pressed)"
+msgstr "Alt izquierda (mientras está pulsado)"
+
+#: ../rules/base.xml.in.h:399
+msgid "Left Alt is swapped with Left Win"
+msgstr "Alt izquierda está cambiado con Windows izquierda"
+
+#: ../rules/base.xml.in.h:400
+msgid "Left Ctrl"
+msgstr "Ctrl izquierda"
+
+#: ../rules/base.xml.in.h:401
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Ctrl izquierda (a la primera distribución), Ctrl derecha (a la última distribución)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Left Ctrl+Left Shift"
+msgstr "Ctrl izquierda + Mayús izquierda"
+
+#: ../rules/base.xml.in.h:403
+msgid "Left Shift"
+msgstr "Mayús izquierda"
+
+#: ../rules/base.xml.in.h:404
+msgid "Left Win"
+msgstr "Win izquierda"
+
+#: ../rules/base.xml.in.h:405
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Win izquierda (a la primera distribución), Win/Menu derecha (a la última distribución)"
+
+#: ../rules/base.xml.in.h:406
+msgid "Left Win (while pressed)"
+msgstr "Tecla Windows izquierda (al pulsarla)"
+
+#: ../rules/base.xml.in.h:407
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win izquierda elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win izquierda elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left hand"
+msgstr "Zurdo"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left handed Dvorak"
+msgstr "Dvorak para zurdos"
+
+#: ../rules/base.xml.in.h:411
+msgid "Legacy"
+msgstr "Heredado"
+
+#: ../rules/base.xml.in.h:412
+msgid "Legacy Wang 724"
+msgstr "Wang 724 heredado"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:414
+msgid "Legacy key with comma"
+msgstr "Tecla heredada con coma"
+
+#: ../rules/base.xml.in.h:415
+msgid "Legacy key with dot"
+msgstr "Tecla heredada con punto"
+
+#: ../rules/base.xml.in.h:416
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: ../rules/base.xml.in.h:417
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:418
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:419
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:420
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (opción alternativa)"
+
+#: ../rules/base.xml.in.h:421
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:422
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:423
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:424
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:425
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (opción alternativa 2)"
+
+#: ../rules/base.xml.in.h:426
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:427
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:428
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra keys via G15daemon"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech, teclado genérico"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (modelo Y-RB6)"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:442
+msgid "Lower Sorbian"
+msgstr "Bajo sorbio"
+
+#: ../rules/base.xml.in.h:443
+msgid "Lower Sorbian (qwertz)"
+msgstr "Bajo sorbio (qwertz)"
+
+#: ../rules/base.xml.in.h:444
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:445
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:446
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:447
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:448
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:449
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:450
+msgid "Macedonia"
+msgstr "Macedonia"
+
+#: ../rules/base.xml.in.h:451
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:452
+msgid "Macintosh (International)"
+msgstr "Macintosh (internacional)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Macintosh Old"
+msgstr "Macintosh antiguo"
+
+#: ../rules/base.xml.in.h:454
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, teclas muertas Sun"
+
+#: ../rules/base.xml.in.h:455
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:456
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Hacer de Bloq Mayús un Retroceso adicional"
+
+#: ../rules/base.xml.in.h:457
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Hacer de Bloq Mayús un Ctrl adicional"
+
+#: ../rules/base.xml.in.h:458
+msgid "Make Caps Lock an additional ESC"
+msgstr "Hacer de Bloq Mayús un Esc adicional"
+
+#: ../rules/base.xml.in.h:459
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Hacer de Bloq Mayús un Hyper adicional"
+
+#: ../rules/base.xml.in.h:460
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Hacer de Bloq Mayús un Bloq Num adicional"
+
+#: ../rules/base.xml.in.h:461
+msgid "Make Caps Lock an additional Super"
+msgstr "Hacer de Bloq Mayús un Super adicional"
+
+#: ../rules/base.xml.in.h:462
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:463
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha"
+
+#: ../rules/base.xml.in.h:464
+msgid "Maldives"
+msgstr "Maldivas"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mali"
+msgstr "Malí"
+
+#: ../rules/base.xml.in.h:466
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:467
+msgid "Maltese keyboard with US layout"
+msgstr "Teclado maltés con distribución EE. UU."
+
+#: ../rules/base.xml.in.h:468
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:469
+msgid "Maori"
+msgstr "Maorí"
+
+#: ../rules/base.xml.in.h:470
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:471
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:472
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:473
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:474
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:475
+msgid "Meta is mapped to Left Win"
+msgstr "Meta está mapeada a la tecla Windows izquierda"
+
+#: ../rules/base.xml.in.h:476
+msgid "Meta is mapped to Win keys"
+msgstr "Meta está mapeada a las teclas Windows"
+
+#: ../rules/base.xml.in.h:477
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:478
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:479
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, sueco"
+
+#: ../rules/base.xml.in.h:480
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:481
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:482
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:483
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:484
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:485
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:486
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:487
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:488
+msgid "Miscellaneous compatibility options"
+msgstr "Opciones misceláneas de compatiblidad"
+
+#: ../rules/base.xml.in.h:489
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:490
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:491
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:492
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:493
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:494
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: ../rules/base.xml.in.h:495
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Morocco"
+msgstr "Marruecos"
+
+#: ../rules/base.xml.in.h:497
+msgid "Multilingual"
+msgstr "Multilingüe"
+
+#: ../rules/base.xml.in.h:498
+msgid "Multilingual, first part"
+msgstr "Multilingüe, primera parte"
+
+#: ../rules/base.xml.in.h:499
+msgid "Multilingual, second part"
+msgstr "Multilingüe, segunda parte"
+
+#: ../rules/base.xml.in.h:500
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:501
+msgid "NICOLA-F style Backspace"
+msgstr "Retroceso estilo NICOLA-F"
+
+#: ../rules/base.xml.in.h:502
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:503
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:504
+msgid "Nativo for Esperanto"
+msgstr "Nativo para esperanto"
+
+#: ../rules/base.xml.in.h:505
+msgid "Nativo for USA keyboards"
+msgstr "Nativo para teclados de EE. UU."
+
+#: ../rules/base.xml.in.h:506
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:507
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:508
+msgid "Netherlands"
+msgstr "Holanda"
+
+#: ../rules/base.xml.in.h:509
+msgid "New phonetic"
+msgstr "Fonético nuevo"
+
+#: ../rules/base.xml.in.h:510
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:511
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:512
+msgid "Nld"
+msgstr "Hol"
+
+#: ../rules/base.xml.in.h:513
+msgid "Non-breakable space character at fourth level"
+msgstr "Carácter de espacio no separable en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:514
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Carácter de espacio no separable en el cuarto nivel, carácter de espacio estrecho no separable en el sexto nivel"
+
+#: ../rules/base.xml.in.h:515
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Carácter de espacio no separable en el cuarto nivel, carácter de espacio estrecho no separable en el sexto nivel (a través de Ctrl+Mayús)"
+
+#: ../rules/base.xml.in.h:516
+msgid "Non-breakable space character at second level"
+msgstr "Carácter de espacio no separable en el segundo nivel"
+
+#: ../rules/base.xml.in.h:517
+msgid "Non-breakable space character at third level"
+msgstr "Carácter de espacio no separable en el tercer nivel"
+
+#: ../rules/base.xml.in.h:518
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Carácter de espacio no separable en el tercer nivel, nada en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:519
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Carácter de espacio no separable en el tercer nivel, carácter de espacio estrecho no separable en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:521
+msgid "Northern Saami"
+msgstr "Saami del norte"
+
+#: ../rules/base.xml.in.h:522
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Saami del norte, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:523
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:524
+msgid "Norway"
+msgstr "Noruega"
+
+#: ../rules/base.xml.in.h:525
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:526
+msgid "Num Lock"
+msgstr "Bloq Num"
+
+#: ../rules/base.xml.in.h:527
+msgid "Numeric keypad delete key behaviour"
+msgstr "Comportamiento de la tecla Supr del teclado numérico"
+
+#: ../rules/base.xml.in.h:528
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Las teclas del teclado numérico funcionan como en un Mac"
+
+#: ../rules/base.xml.in.h:529
+msgid "Numeric keypad layout selection"
+msgstr "Selección de distribución de teclado numérico"
+
+#: ../rules/base.xml.in.h:530
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:531
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:532
+msgid "OLPC Dari"
+msgstr "OLPC dari"
+
+#: ../rules/base.xml.in.h:533
+msgid "OLPC Pashto"
+msgstr "OLPC pashto"
+
+#: ../rules/base.xml.in.h:534
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC uzbeco del sur"
+
+#: ../rules/base.xml.in.h:535
+msgid "Occitan"
+msgstr "Occitano"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:537
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:538
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:539
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Teclado Oretec MCK-800 MM/Internet"
+
+#: ../rules/base.xml.in.h:540
+msgid "Ossetian"
+msgstr "Osetio"
+
+#: ../rules/base.xml.in.h:541
+msgid "Ossetian, Winkeys"
+msgstr "Osetio, teclas Windows"
+
+#: ../rules/base.xml.in.h:542
+msgid "Ossetian, legacy"
+msgstr "Osetio, heredado"
+
+#: ../rules/base.xml.in.h:543
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:544
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:545
+msgid "Pakistan"
+msgstr "Pakistán"
+
+#: ../rules/base.xml.in.h:546
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Rusino de Panonia homofónico"
+
+#: ../rules/base.xml.in.h:547
+msgid "Pashto"
+msgstr "Pashto"
+
+#: ../rules/base.xml.in.h:548
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:549
+msgid "Pause"
+msgstr "Pausa"
+
+#: ../rules/base.xml.in.h:550
+msgid "Persian, with Persian Keypad"
+msgstr "Persa con teclado numérico persa"
+
+#: ../rules/base.xml.in.h:551
+msgid "Phonetic"
+msgstr "Fonético"
+
+#: ../rules/base.xml.in.h:552
+msgid "Phonetic Winkeys"
+msgstr "Teclas Windows fonéticas"
+
+#: ../rules/base.xml.in.h:553
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:554
+msgid "Poland"
+msgstr "Polonia"
+
+#: ../rules/base.xml.in.h:555
+msgid "Polytonic"
+msgstr "Politónico"
+
+#: ../rules/base.xml.in.h:556
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:557
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:558
+msgid "Programmer Dvorak"
+msgstr "Dvorak de programador"
+
+#: ../rules/base.xml.in.h:559
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:560
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:561
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:562
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:563
+msgid "Right Alt"
+msgstr "Alt derecho"
+
+#: ../rules/base.xml.in.h:564
+msgid "Right Alt (while pressed)"
+msgstr "Alt derecho (mientras está pulsado)"
+
+#: ../rules/base.xml.in.h:565
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Alt derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:566
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Alt derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
+
+#: ../rules/base.xml.in.h:567
+msgid "Right Alt key never chooses 3rd level"
+msgstr "La tecla Alt derecha nunca elige el 3er nivel"
+
+#: ../rules/base.xml.in.h:568
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "La tecla Alt derecha, Mayús+Alt derecha es tecla Multi"
+
+#: ../rules/base.xml.in.h:569
+msgid "Right Ctrl"
+msgstr "Ctrl derecho"
+
+#: ../rules/base.xml.in.h:570
+msgid "Right Ctrl (while pressed)"
+msgstr "Ctrl derecho (mientras está pulsado)"
+
+#: ../rules/base.xml.in.h:571
+msgid "Right Ctrl as Right Alt"
+msgstr "Ctrl derecho como Alt derecho"
+
+#: ../rules/base.xml.in.h:572
+msgid "Right Ctrl+Right Shift"
+msgstr "Ctrl derecho + Mayús derecho"
+
+#: ../rules/base.xml.in.h:573
+msgid "Right Shift"
+msgstr "Mayús derecho"
+
+#: ../rules/base.xml.in.h:574
+msgid "Right Win"
+msgstr "Windows derecho"
+
+#: ../rules/base.xml.in.h:575
+msgid "Right Win (while pressed)"
+msgstr "La tecla Windows (mientras está pulsada)"
+
+#: ../rules/base.xml.in.h:576
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:577
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win derecha elige el 5º nivel, bloquea al pulsarse junto con otro selector de 5º nivel, una pulsación libera el bloqueo"
+
+#: ../rules/base.xml.in.h:578
+msgid "Right hand"
+msgstr "Diestro"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right handed Dvorak"
+msgstr "Dvorak diestro"
+
+#: ../rules/base.xml.in.h:580
+msgid "Romania"
+msgstr "Rumanía"
+
+#: ../rules/base.xml.in.h:581
+msgid "Romanian keyboard with German letters"
+msgstr "Teclado rumano con letras alemanas"
+
+#: ../rules/base.xml.in.h:582
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Teclado rumano con teclas alemanas, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:583
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:584
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:585
+msgid "Russia"
+msgstr "Rusia"
+
+#: ../rules/base.xml.in.h:586
+msgid "Russian"
+msgstr "Ruso"
+
+#: ../rules/base.xml.in.h:587
+msgid "Russian phonetic"
+msgstr "Ruso fonético"
+
+#: ../rules/base.xml.in.h:588
+msgid "Russian phonetic Dvorak"
+msgstr "Dvorak ruso fonético "
+
+#: ../rules/base.xml.in.h:589
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Ruso fonético, eliminar teclas muertas"
+
+#: ../rules/base.xml.in.h:590
+msgid "Russian with Kazakh"
+msgstr "Ruso con kazajo"
+
+#: ../rules/base.xml.in.h:591
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:592
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:593
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:594
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:595
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:597
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:598
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:599
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:600
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:601
+msgid "Scroll Lock"
+msgstr "Bloq Despl"
+
+#: ../rules/base.xml.in.h:602
+msgid "Secwepemctsin"
+msgstr "Shuswap"
+
+#: ../rules/base.xml.in.h:603
+msgid "Semi-colon on third level"
+msgstr "Punto y coma en tercer nivel"
+
+#: ../rules/base.xml.in.h:604
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:605
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:607
+msgid "Serbian"
+msgstr "Serbio"
+
+#: ../rules/base.xml.in.h:608
+msgid "Shift cancels Caps Lock"
+msgstr "Mayús cancela Bloq Mayús"
+
+#: ../rules/base.xml.in.h:609
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Mayús no cancela Bloq Num, en su lugar elije el 3er nivel"
+
+#: ../rules/base.xml.in.h:610
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Mayús con las teclas del teclado numérico funcionan como en MS Windows"
+
+#: ../rules/base.xml.in.h:611
+msgid "Shift+Caps Lock"
+msgstr "Mayús+Bloq Mayús"
+
+#: ../rules/base.xml.in.h:612
+msgid "Simple"
+msgstr "Simple"
+
+#: ../rules/base.xml.in.h:613
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:614
+msgid "Slovakia"
+msgstr "Eslovaquia"
+
+#: ../rules/base.xml.in.h:615
+msgid "Slovenia"
+msgstr "Eslovenia"
+
+#: ../rules/base.xml.in.h:616
+msgid "South Africa"
+msgstr "Sudáfrica"
+
+#: ../rules/base.xml.in.h:617
+msgid "Southern Uzbek"
+msgstr "Uzbequia del sur"
+
+#: ../rules/base.xml.in.h:618
+msgid "Spain"
+msgstr "España"
+
+#: ../rules/base.xml.in.h:619
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Teclas especiales (Ctrl+Alt+«tecla») manipuladas en un servidor"
+
+#: ../rules/base.xml.in.h:620
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:621
+msgid "Standard"
+msgstr "Estándar"
+
+#: ../rules/base.xml.in.h:622
+msgid "Standard (Cedilla)"
+msgstr "Estándar (cedilla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:624
+msgid "Standard RSTU"
+msgstr "Standard RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:626
+msgid "Standard RSTU on Russian layout"
+msgstr "Standard RSTU con distribución rusa"
+
+#: ../rules/base.xml.in.h:627
+msgid "Sun Type 5/6"
+msgstr "Sun tipo 5/6"
+
+#: ../rules/base.xml.in.h:628
+msgid "Sun dead keys"
+msgstr "Teclas muertas de Sun"
+
+#: ../rules/base.xml.in.h:629
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:630
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:631
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:632
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:633
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Intercambiar Ctrl y Bloq Mayús"
+
+#: ../rules/base.xml.in.h:634
+msgid "Swap ESC and Caps Lock"
+msgstr "Intercambiar ESC y Bloq Mayús"
+
+#: ../rules/base.xml.in.h:635
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:636
+msgid "Sweden"
+msgstr "Suecia"
+
+#: ../rules/base.xml.in.h:637
+msgid "Switzerland"
+msgstr "Suiza"
+
+#: ../rules/base.xml.in.h:638
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:639
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:640
+msgid "Syria"
+msgstr "Siria"
+
+#: ../rules/base.xml.in.h:641
+msgid "Syriac"
+msgstr "Sirio"
+
+#: ../rules/base.xml.in.h:642
+msgid "Syriac phonetic"
+msgstr "Sirio fonético"
+
+#: ../rules/base.xml.in.h:643
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:644
+msgid "Tajikistan"
+msgstr "Tajikistán"
+
+#: ../rules/base.xml.in.h:645
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../rules/base.xml.in.h:646
+msgid "Tamil Keyboard with Numerals"
+msgstr "Teclado tamil con letras números"
+
+#: ../rules/base.xml.in.h:647
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB Typewriter"
+
+#: ../rules/base.xml.in.h:648
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII Typewriter"
+
+#: ../rules/base.xml.in.h:649
+msgid "Tamil Unicode"
+msgstr "Tamil Unicode"
+
+#: ../rules/base.xml.in.h:650
+msgid "Tanzania"
+msgstr "Tanzania"
+
+#: ../rules/base.xml.in.h:651
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:652
+msgid "Tatar"
+msgstr "Tatar"
+
+#: ../rules/base.xml.in.h:653
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:654
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:655
+msgid "Thailand"
+msgstr "Tailandia"
+
+#: ../rules/base.xml.in.h:656
+msgid "Tibetan"
+msgstr "Tibetano"
+
+#: ../rules/base.xml.in.h:657
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetano (con numerales ASCII)"
+
+#: ../rules/base.xml.in.h:658
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:659
+msgid "Tifinagh alternative"
+msgstr "Alternativa tifinagh"
+
+#: ../rules/base.xml.in.h:660
+msgid "Tifinagh alternative phonetic"
+msgstr "Alternativa fonética tifinagh"
+
+#: ../rules/base.xml.in.h:661
+msgid "Tifinagh extended"
+msgstr "Extendido tifinagh"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh fonético extendido"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh fonético"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tilde (~) variant"
+msgstr "Variante virgulilla (~)"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:667
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "A la tecla correspondiente en un teclado Dvorak."
+
+#: ../rules/base.xml.in.h:668
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "A la tecla correspondiente en un teclado Qwerty."
+
+#: ../rules/base.xml.in.h:669
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:670
+msgid "Traditional phonetic"
+msgstr "Tradicional fonético"
+
+#: ../rules/base.xml.in.h:671
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:672
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:673
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:675
+msgid "Turkey"
+msgstr "Turquía"
+
+#: ../rules/base.xml.in.h:676
+msgid "Turkmenistan"
+msgstr "Turkmenistán"
+
+#: ../rules/base.xml.in.h:677
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:678
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:679
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:680
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:modo EU)"
+
+#: ../rules/base.xml.in.h:681
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (106:modo JP)"
+
+#: ../rules/base.xml.in.h:682
+msgid "Typewriter"
+msgstr "Máquina de escribir"
+
+#: ../rules/base.xml.in.h:683
+msgid "Typewriter, legacy"
+msgstr "Máquina de escribir, heredado"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:685
+msgid "UCW layout (accented letters only)"
+msgstr "Distribución UCW (sólo teclas con tilde)"
+
+#: ../rules/base.xml.in.h:686
+msgid "US Dvorak with CZ UCW support"
+msgstr "Teclado EE. UU. con soporte para UCW checo"
+
+#: ../rules/base.xml.in.h:687
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Teclado EE. UU. con digrafos bosnios"
+
+#: ../rules/base.xml.in.h:688
+msgid "US keyboard with Bosnian letters"
+msgstr "Teclado EE. UU. con letras bosnias"
+
+#: ../rules/base.xml.in.h:689
+msgid "US keyboard with Croatian digraphs"
+msgstr "Teclado EE. UU. con digrafos croatas"
+
+#: ../rules/base.xml.in.h:690
+msgid "US keyboard with Croatian letters"
+msgstr "Teclado EE. UU. con letras croatas"
+
+#: ../rules/base.xml.in.h:691
+msgid "US keyboard with Estonian letters"
+msgstr "Teclado EE. UU. con letras estonias"
+
+#: ../rules/base.xml.in.h:692
+msgid "US keyboard with Italian letters"
+msgstr "Teclado EE. UU. con letras italianas"
+
+#: ../rules/base.xml.in.h:693
+msgid "US keyboard with Lithuanian letters"
+msgstr "Teclado EE. UU. con letras lituanas"
+
+#: ../rules/base.xml.in.h:694
+msgid "US keyboard with Slovenian letters"
+msgstr "Teclado EE. UU. con letras eslovenas"
+
+#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "EE. UU."
+
+#: ../rules/base.xml.in.h:696
+msgid "Udmurt"
+msgstr "Udmurto"
+
+#: ../rules/base.xml.in.h:697
+msgid "Ukr"
+msgstr "Ucr"
+
+#: ../rules/base.xml.in.h:698
+msgid "Ukraine"
+msgstr "Ucrania"
+
+#: ../rules/base.xml.in.h:699
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Adiciones unicode (flechas y operadores matemáticos)"
+
+#: ../rules/base.xml.in.h:700
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Adiciones unicode (flechas y operadores matemáticos); operadores matemáticos en el nivel predeterminado"
+
+#: ../rules/base.xml.in.h:701
+msgid "UnicodeExpert"
+msgstr "UnicodeExperto"
+
+#: ../rules/base.xml.in.h:702
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: ../rules/base.xml.in.h:703
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:704
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu fonético alternativo"
+
+#: ../rules/base.xml.in.h:705
+msgid "Urdu, Phonetic"
+msgstr "Urdu fonético"
+
+#: ../rules/base.xml.in.h:706
+msgid "Urdu, Winkeys"
+msgstr "Urdu, teclas Windows"
+
+#: ../rules/base.xml.in.h:707
+msgid "Use Bosnian digraphs"
+msgstr "Usar digrafos bosnios"
+
+#: ../rules/base.xml.in.h:708
+msgid "Use Croatian digraphs"
+msgstr "Usar digrafos croatas"
+
+#: ../rules/base.xml.in.h:709
+msgid "Use guillemets for quotes"
+msgstr "Usar guillemots para comillas"
+
+#: ../rules/base.xml.in.h:710
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Usar LED del teclado para mostrar la distribución alternativa"
+
+#: ../rules/base.xml.in.h:711
+msgid "Using space key to input non-breakable space character"
+msgstr "Usando la tecla espacio para introducir un carácter de espacio no separable"
+
+#: ../rules/base.xml.in.h:712
+msgid "Usual space at any level"
+msgstr "Espacio usual en cualquier nivel"
+
+#: ../rules/base.xml.in.h:713
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:714
+msgid "Uzbekistan"
+msgstr "Uzbekistán"
+
+#: ../rules/base.xml.in.h:715
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:716
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "Teclado para internet ViewSonic KU-306"
+
+#: ../rules/base.xml.in.h:717
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:718
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Teclado numérico Wang 724 con adiciones Unicode (flechas y operadores matemáticos)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Teclado numérico Wang 724 con adiciones Unicode (flechas y operadores matemáticos); operadores matemáticos en el nivel predeterminado"
+
+#: ../rules/base.xml.in.h:720
+msgid "Wang model 724 azerty"
+msgstr "Wang modelo 724 azerty"
+
+#: ../rules/base.xml.in.h:721
+msgid "Western"
+msgstr "Occidental"
+
+#: ../rules/base.xml.in.h:722
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:723
+msgid "Winkeys"
+msgstr "Teclas Windows"
+
+#: ../rules/base.xml.in.h:724
+msgid "With &lt;\\|&gt; key"
+msgstr "With tecla «\\|»"
+
+#: ../rules/base.xml.in.h:725
+msgid "With EuroSign on 5"
+msgstr "Con símbolo del Euro a la tecla 5"
+
+#: ../rules/base.xml.in.h:726
+msgid "With guillemets"
+msgstr "Con guillemots"
+
+#: ../rules/base.xml.in.h:727
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:728
+msgid "Yakut"
+msgstr "Yakuto"
+
+#: ../rules/base.xml.in.h:729
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:730
+msgid "Z and ZHE swapped"
+msgstr "Z y ZHE intercambiados"
+
+#: ../rules/base.xml.in.h:731
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:732
+msgid "Zero-width non-joiner character at second level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel"
+
+#: ../rules/base.xml.in.h:733
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel"
+
+#: ../rules/base.xml.in.h:734
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel, nada en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:735
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel, espacio estrecho no separable en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:736
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio no separable en el tercer nivel, espacio de anchura cero rompible («ZWJ») en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:737
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio de anchura cero rompible («ZWJ») en el tercer nivel"
+
+#: ../rules/base.xml.in.h:738
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el segundo nivel, carácter de espacio de anchura cero rompible («ZWJ») en el tercer nivel, caracter de espacio no separable en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:739
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Carácer de espacio irrompible de anchura cero («ZWNJ») en el tercer nivel, carácter de anchura cero rompible («ZWJ») en el cuarto nivel"
+
+#: ../rules/base.xml.in.h:740
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:741
+msgid "azerty/digits"
+msgstr "azerty/dígitos"
+
+#: ../rules/base.xml.in.h:742
+msgid "digits"
+msgstr "dígitos"
+
+#: ../rules/base.xml.in.h:743
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "punto y coma y comilla desplazadas (obsoleto)"
+
+#: ../rules/base.xml.in.h:744
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:745
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:746
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, contrabarra extendida"
+
+#: ../rules/base.xml.in.h:747
+msgid "qwerty/digits"
+msgstr "qwerty/dígitos"
+
+#: ../rules/base.xml.in.h:748
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avéstico"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Combinar tildes en lugar de teclas muertas"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Coeur d’Alene salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Internacional (combinando AltGr Unicode)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Internacional (combinando AltGr Unicode, alternativa)"
+
+#~ msgid "CapsLock"
+#~ msgstr "Bloq Mayús"
+
+#~ msgid "ACPI Standard"
+#~ msgstr "ACPI Estándard"
+
+#~ msgid "Bhu"
+#~ msgstr "Bhu"
+
+#~ msgid "DRC"
+#~ msgstr "DRC"
+
+#~ msgid "Dan"
+#~ msgstr "Dan"
+
+#~ msgid "Dvorak international"
+#~ msgstr "Dvorak internacional"
+
+#~ msgid "Gre"
+#~ msgstr "Gre"
+
+#~ msgid "Gui"
+#~ msgstr "Gui"
+
+#, fuzzy
+#~ msgid "Lav"
+#~ msgstr "Lao"
+
+#~ msgid "Nep"
+#~ msgstr "Nep"
+
+#~ msgid "SrL"
+#~ msgstr "SrL"
+
+#~ msgid "Acer TravelMate 800"
+#~ msgstr "Acer TravelMate 800"
+
+#~ msgid "Add the EuroSign to the 2 key."
+#~ msgstr "Añadir el símbolo del Euro a la tecla 2."
+
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "Añadir el símbolo del Euro a la tecla E."
+
+#~ msgid "Alt+Ctrl changes group."
+#~ msgstr "Alt+Ctrl cambia el grupo."
+
+#~ msgid "Alt+Shift changes group."
+#~ msgstr "Alt+Mayús cambia el grupo."
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "ABNT2 brasileño"
+
+#~ msgid "CapsLock LED shows alternative group."
+#~ msgstr "El LED de BloqMayús muestra el grupo alternativo."
+
+#~ msgid "CapsLock just locks the Shift modifier."
+#~ msgstr "BloqMayús tan sólo bloquea el modificador Mayús."
+
+#~ msgid "CapsLock key changes group."
+#~ msgstr "La tecla BloqMayús cambia el grupo."
+
+#~ msgid "Ctrl+Shift changes group."
+#~ msgstr "Ctrl+Mayús cambia el grupo."
+
+#~ msgid "Group Shift/Lock behavior"
+#~ msgstr "Comportamiento del grupo Mayús/Bloq"
+
+#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#~ msgid "IBM Rapid Access II (alternate option)"
+#~ msgstr "IBM Rapid Access II (opción alternativa)"
+
+#~ msgid "Japanese 106-key"
+#~ msgstr "Japonés 106 teclas"
+
+#~ msgid "Korean 106-key"
+#~ msgstr "Coreano 106 teclas"
+
+#~ msgid "Kotoistus"
+#~ msgstr "Kotoistus"
+
+#~ msgid "Kyr"
+#~ msgstr "Kyr"
+
+#~ msgid "Left Alt key changes group."
+#~ msgstr "La tecla Alt izquierda cambia el grupo."
+
+#~ msgid "Left Ctrl key changes group."
+#~ msgstr "La tecla Ctrl izquierda cambia el grupo."
+
+#~ msgid "Left Shift key changes group."
+#~ msgstr "La tecla Mayús izquierda cambia el grupo."
+
+#~ msgid "Left Win-key changes group."
+#~ msgstr "La tecla Windows izquierda cambia el grupo."
+
+#~ msgid "Left Win-key is Compose."
+#~ msgstr "La tecla Windows izquierda es Componer."
+
+#~ msgid "Macintosh layout"
+#~ msgstr "Distribución Macintosh"
+
+#~ msgid "Menu is Compose."
+#~ msgstr "Menú es Componer."
+
+#~ msgid "Menu key changes group."
+#~ msgstr "La tecla Menú cambia el grupo."
+
+#~ msgid "Neostyle"
+#~ msgstr "Neostyle"
+
+#~ msgid "NumLock LED shows alternative group."
+#~ msgstr "El LED de BloqNum muestra el grupo alternativo."
+
+#~ msgid "Power G5"
+#~ msgstr "Power G5"
+
+#~ msgid "PowerPC PS/2"
+#~ msgstr "PowerPC PS/2"
+
+#~ msgid "Press Left Alt key to choose 3rd level."
+#~ msgstr "Pulsar la tecla Alt izquierda para elegir el 3er nivel."
+
+#~ msgid "Press Left Win-key to choose 3rd level."
+#~ msgstr "Pulsar la tecla Windows izquierda para elegir el 3er nivel."
+
+#~ msgid "Press Right Ctrl to choose 3rd level."
+#~ msgstr "Pulsar la tecla Ctrl derecha para elegir el 3er nivel."
+
+#~ msgid "Press Right Win-key to choose 3rd level."
+#~ msgstr "Pulsar la tecla Windows derecha para elegir el 3er nivel."
+
+#~ msgid "Press any of Alt keys to choose 3rd level."
+#~ msgstr "Pulsar cualquiera de las teclas Alt para elegir el 3er nivel."
+
+#~ msgid "Press any of Win-keys to choose 3rd level."
+#~ msgstr "Pulsar cualquiera de las teclas Windows para elegir el 3er nivel."
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "R-Alt switches group while pressed."
+#~ msgstr "Alt derecho cambia el grupo al pulsarse."
+
+#~ msgid "Right Alt key changes group."
+#~ msgstr "La tecla Alt derecha cambia el grupo."
+
+#~ msgid "Right Ctrl key changes group."
+#~ msgstr "La tecla Ctrl derecha cambia el grupo."
+
+#~ msgid "Right Shift key changes group."
+#~ msgstr "La tecla Mayús derecha cambia el grupo."
+
+#~ msgid "Right Win-key changes group."
+#~ msgstr "La tecla Windows derecha cambia el grupo."
+
+#~ msgid "Right Win-key is Compose."
+#~ msgstr "La tecla Windows derecha es Componer."
+
+#~ msgid "SCG"
+#~ msgstr "SCG"
+
+#~ msgid "ScrollLock LED shows alternative group."
+#~ msgstr "El led de BloqDespl muestra el grupo alternativo."
+
+#~ msgid "Third level choosers"
+#~ msgstr "Selectores de tercer nivel"
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "Teclado EEUU con digrafos eslovenos"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Usar digrafos eslovenos"
diff --git a/xorg-server/xkeyboard-config/po/gl.po b/xorg-server/xkeyboard-config/po/gl.po
index bae75793c..1418c9033 100644
--- a/xorg-server/xkeyboard-config/po/gl.po
+++ b/xorg-server/xkeyboard-config/po/gl.po
@@ -1,3023 +1,3023 @@
-# Galician translations for xkeyboard-config package.
-# Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the xkeyboard-config package.
-# Fran Diéguez <frandieguez@ubuntu.com>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-27 15:53+0200\n"
-"Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
-"Language-Team: Galician <proxecto@trasno.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Menor que/Maior que&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr ""
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Herdado) Alternativa"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Herdado) Alternativa, teclas mortas de Sun"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Herdado) Alternativa, eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "101/104 teclas compatíbel"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/coma/Teclas mortas"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/coma/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/punto/Teclas mortas"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/punto/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/coma/Teclas mortas"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/coma/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/punto/Teclas mortas"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/punto/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/coma/Teclas mortas"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/coma/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/punto/Teclas mortas"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/punto/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/coma/Teclas mortas"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/coma/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/punto/Teclas mortas"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/punto/Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "Caixeiro automático/estilo teléfono"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Portátil Acer"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Añadir el comportamiento estándar a la tecla Menú."
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Engadir os tiles circunflexas do esperanto (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Engadir o símbolo do Euro a certas teclas"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afganistán"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt e Meta están nas teclas Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt está asignada á tecla Windows dereita e Super a tecla Menú"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+Bloq Maiús"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Maiús"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Espacio"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Comportamento da tecla Alt/Windows"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternativa"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternativa oriental"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternativa fonética"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternativa internacional"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternativa, teclas mortas de Sun"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativa, eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternativa, só latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Calquera tecla Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Calquera tecla Windows"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Calquera tecla Windows (ao pulsala)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Variante apóstrofo (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Teclado de aluminio de Apple (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Teclado de aluminio de Apple (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Teclado de aluminio de Apple (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Teclado de aluminio de Apple: emular teclas PC (Imprimir, Bloq Despl, Pausa, Bloq Núm)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Portátil Apple"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Árabe"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Variante asturiana con H de medio punto e L de medio punto"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Portátil Asus"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Na parte inferior esquerda"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Á esquerda do «A»"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Austria"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Azerbaixán"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Contrabarra"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Bashkiriano"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Bielorusia"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Bélxica"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Bengalí"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Probhat Bengalí"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonómico, forma Dvorak"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonómico, forma Dvorak, só latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhután"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Hebreo bíblico (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia e Herzegovina"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Ámbalas teclas Alt xuntas"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Ámbalas teclas Ctrl xuntas"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Ámbalas teclas «Maiús» xuntas"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Ámbalas teclas «Maiús» xuntas trocan o Bloqueo de maiúsculas"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Brasil"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Bretón"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Camboya"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Canadá"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "Bloqueo de maiúsculas"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "Bloqueo de maiúsculas (á primeira disposición), Maiús+Bloq Maiús (á última disposición)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "Bloqueo de maiúsculas (ao pulsarse), Alt+Bloq Maiús realiza a acción orixinal de bloqueo de maiúsculas"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "Bloq Maiús actúa como Maiús con bloqueo; May¡iús «pausa» Bloq Maiús"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "Bloq Maiús actúa como Maiús con bloqueo; Maiús non afecta a Bloq Maiús"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "Bloq Maiús está desactivado"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Comportameento de Bloq Maiús"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "Bloq Maiús cambia Maiús de forma que todas as teclas están afectadas"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "Bloq Maiús cambia a capitalización normal dos caracteres alfabéticos"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "Bloq Maiús usa a capitalización interna; Maiús «pausa» o Bloq Maiús"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "Bloq Maiús usa a capitalización interna; Maiús non afecta a Bloq Maiús"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Variante catalana con L de medio punto"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Cedilla"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (opción alternativa)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "China"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Chuvash"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Chuvash latino"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Clásico"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Dvorak clásico"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Clásico, eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 teclas)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 teclas)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 teclas)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Posición da tecla Compoñer"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, República Democrática do"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Retroceso"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control está asignada ás teclas Alt, Alt está mapeado ás teclas Windows"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control está asignada ás teclas Windows (e as teclas Ctrl usuais)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Tártaro de Crimea (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Tártaro de Crimea (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Tártaro de Crimea (turco Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Tártaro de Crimea (turco F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Tártaro de Crimea (turco Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Croacia"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Posición da tecla Ctrl"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Maiús"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Cirílico"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Cirílico con guillemots"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Cirílico, Z e ZHE intercambiados"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Chequia"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Acento morto"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Acento grave morto"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Teclas do teclado numérico por omisión"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell PC 101 teclas"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Portátil Dell/notebook Precision M series"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Portátil Dell Latitude"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (puntuación de RU)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Alternativa dvorak internacional (sin teclas muertas)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak internacional (con teclas muertas)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, comillas polacas en la tecla 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, comillas polacas en la tecla de comillas"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Oriental"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Activar caracteres tipográficos adicionais"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Inglés"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Inglés (EE. UU. internacional)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Inglés (EE. UU. Macintosh)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Intro en el teclado numérico"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Ergonómico"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Estonia"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Etiopía"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Extendido"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Estendido - teclas Windows"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Contrabarra estendida"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "Variante de letra F (F)"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Illas Feroe"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Tecla de cuarto nivel con separadores abstratos"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Tecla de cuarto nivel con coma"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Tecla de cuarto nivel con punto"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Tecla de cuarto nivel con punto, restrición latin-9"
-
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Tecla de cuarto nivel con momayyez"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Francia"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Francés (alternativa francesa)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Francés"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Francés (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Francés (heredado)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Francés Dvorak"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Francés, teclas mortas Sun"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Francés, eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Portátil Fujitsu-Siemens Computers AMILO"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "PC xenérico 101 teclas"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "PC xenérico 102 teclas (intl)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "PC xenérico 104 teclas"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "PC xenérico 105 teclas (intl)"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Xeorxia"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Xeorxiano"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "AZERTY Tskapo xeorxiano"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Alemán (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Alemán, teclas mortas Sun"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Alemán, eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Alemaña"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Grecia"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Guxarati"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Teclado Happy Hacking"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Teclado Happy Hacking para Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Hausa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Teclado Hewlett-Packard Internet"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Hexadecimal"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Homofónico"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Hungría"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper está asignada ás teclas Windows"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "Alternativa ISO"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Islandia"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Incluír tilde morta"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "Internacional (con teclas mortas AltGr)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "Internacional (con teclas mortas)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Irán"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Iraq"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Irlanda"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Italia"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Xapón"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Xapón (Series PC-98xx)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Opcións de teclado xaponés"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Xpn"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Calmuco"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "A tecla Bloq Kana está bloqueando"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Casubio"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kazaxo con ruso"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kazajstán"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Kenia"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Secuencia de teclas para matar o servidor X"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Tecla para seleccionar o 3º nivel"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Tecla para seleccionar o 5º nivel"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Tecla(s) para cambiar a distribución"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Kikuyu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Corea, República de"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Kutenai"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kurdo, (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdo, arábigolatino"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdo, Latino Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kurdo, Latino Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kirgizstán"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Latino"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Latino américa"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Latino Unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Latino Unicode qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Latino qwerty"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Latino unicode"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Latino unicode qwerty"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Latino con guillemots"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Letonia"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Cambio de distribución na tecla multiplicar/dividir"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Alt esquerda"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Alt esquerda (mentres está premida)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Alt esquerda está cambiada con Windows esquerda"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Ctrl esquerda"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Ctrl esquerda (á primeira disposición), Ctrl dereita (á última disposición)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Ctrl esquerda + Maiús esquerda"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Maiús esquerda"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Win esquerda"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Win esquerda (á primeira disposición), Win/Menu dereita (á última disposición)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Tecla Windows esquerda (ao premela)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win esquerda elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Zurdo"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Dvorak para zurdos"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Herdado"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Wang 724 herdado"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Tecla herdada con coma"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Tecla herdada con punto"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Lituania"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (alternate option)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (alternate option 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra keys via G15daemon"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Generic Keyboard"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Baixo sorbio"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Macedonia"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (Internacional)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh antigo"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, teclas mortas Sun"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, eliminar teclas mortas"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr ""
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr ""
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Maldivas"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Malí"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Maorí"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta está asignada á tecla Windows izquierda"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr ""
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr ""
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr ""
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr ""
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr ""
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr ""
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr ""
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr ""
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr ""
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr ""
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr ""
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr ""
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr ""
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr ""
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr ""
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr ""
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr ""
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr ""
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr ""
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr ""
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr ""
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr ""
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr ""
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr ""
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr ""
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr ""
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr ""
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr ""
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr ""
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr ""
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr ""
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr ""
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr ""
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr ""
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr ""
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr ""
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr ""
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr ""
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr ""
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr ""
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr ""
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr ""
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr ""
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr ""
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr ""
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr ""
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr ""
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr ""
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr ""
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr ""
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr ""
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr ""
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr ""
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr ""
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr ""
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr ""
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr ""
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr ""
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr ""
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr ""
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr ""
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr ""
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr ""
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr ""
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr ""
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr ""
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr ""
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr ""
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr ""
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr ""
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr ""
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr ""
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr ""
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr ""
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr ""
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr ""
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr ""
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr ""
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr ""
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr ""
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr ""
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr ""
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr ""
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr ""
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr ""
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr ""
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr ""
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr ""
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr ""
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr ""
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr ""
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr ""
+# Galician translations for xkeyboard-config package.
+# Copyright (C) 2010 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the xkeyboard-config package.
+# Fran Diéguez <frandieguez@ubuntu.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 2.0\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-09-15 21:57+0100\n"
+"PO-Revision-Date: 2010-09-28 23:42+0200\n"
+"Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n"
+"Language-Team: Galician <proxecto@trasno.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: gl\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Menor que/Maior que&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Menor que/Maior que&gt; elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Menor que/Maior que&gt; elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel, unha pulsación libera o bloqueo"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Herdado) Alternativa"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Herdado) Alternativa, teclas mortas de Sun"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Herdado) Alternativa, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104 teclas compatíbel"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/coma/Teclas mortas"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/coma/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/punto/Teclas mortas"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/punto/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/coma/Teclas mortas"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/coma/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/punto/Teclas mortas"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/punto/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/coma/Teclas mortas"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/coma/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/punto/Teclas mortas"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/punto/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/coma/Teclas mortas"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/coma/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/punto/Teclas mortas"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/punto/Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:25
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:26
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:27
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:28
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:29
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:30
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:31
+msgid "ATM/phone-style"
+msgstr "Caixeiro automático/estilo teléfono"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:34
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:35
+msgid "Acer Laptop"
+msgstr "Portátil Acer"
+
+#: ../rules/base.xml.in.h:36
+msgid "Add the standard behavior to Menu key"
+msgstr "Añadir el comportamiento estándar a la tecla Menú."
+
+#: ../rules/base.xml.in.h:37
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Engadir os tiles circunflexas do esperanto (supersigno)"
+
+#: ../rules/base.xml.in.h:38
+msgid "Adding EuroSign to certain keys"
+msgstr "Engadir o símbolo do Euro a certas teclas"
+
+#: ../rules/base.xml.in.h:39
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:40
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:41
+msgid "Afghanistan"
+msgstr "Afganistán"
+
+#: ../rules/base.xml.in.h:42
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:44
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt e Meta están nas teclas Alt"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt está asignada á tecla Windows dereita e Super a tecla Menú"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Caps Lock"
+msgstr "Alt+Bloq Maiús"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt+Shift"
+msgstr "Alt+Maiús"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt+Space"
+msgstr "Alt+Espacio"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alt/Win key behavior"
+msgstr "Comportamento da tecla Alt/Windows"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative"
+msgstr "Alternativa"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative Eastern"
+msgstr "Alternativa oriental"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative Phonetic"
+msgstr "Alternativa fonética"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative international"
+msgstr "Alternativa internacional"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, Sun dead keys"
+msgstr "Alternativa, teclas mortas de Sun"
+
+#: ../rules/base.xml.in.h:58
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativa, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:59
+msgid "Alternative, latin-9 only"
+msgstr "Alternativa, só latin-9"
+
+#: ../rules/base.xml.in.h:60
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:61
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Alt key"
+msgstr "Calquera tecla Alt"
+
+#: ../rules/base.xml.in.h:63
+msgid "Any Win key"
+msgstr "Calquera tecla Windows"
+
+#: ../rules/base.xml.in.h:64
+msgid "Any Win key (while pressed)"
+msgstr "Calquera tecla Windows (ao pulsala)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apostrophe (') variant"
+msgstr "Variante apóstrofo (')"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Teclado de aluminio de Apple (ANSI)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Teclado de aluminio de Apple (ISO)"
+
+#: ../rules/base.xml.in.h:69
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Teclado de aluminio de Apple (JIS)"
+
+#: ../rules/base.xml.in.h:70
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Teclado de aluminio de Apple: emular teclas PC (Imprimir, Bloq Despl, Pausa, Bloq Núm)"
+
+#: ../rules/base.xml.in.h:71
+msgid "Apple Laptop"
+msgstr "Portátil Apple"
+
+#: ../rules/base.xml.in.h:72
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:73
+msgid "Arabic"
+msgstr "Árabe"
+
+#: ../rules/base.xml.in.h:74
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:75
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:76
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Variante asturiana con H de medio punto e L de medio punto"
+
+#: ../rules/base.xml.in.h:77
+msgid "Asus Laptop"
+msgstr "Portátil Asus"
+
+#: ../rules/base.xml.in.h:78
+msgid "At bottom left"
+msgstr "Na parte inferior esquerda"
+
+#: ../rules/base.xml.in.h:79
+msgid "At left of 'A'"
+msgstr "Á esquerda do «A»"
+
+#: ../rules/base.xml.in.h:80
+msgid "Austria"
+msgstr "Austria"
+
+#: ../rules/base.xml.in.h:81
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:82
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:83
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:84
+msgid "Azerbaijan"
+msgstr "Azerbaixán"
+
+#: ../rules/base.xml.in.h:85
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:92
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:93
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:94
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:95
+msgid "Backslash"
+msgstr "Contrabarra"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bashkirian"
+msgstr "Bashkiriano"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:99
+msgid "Belarus"
+msgstr "Bielorusia"
+
+#: ../rules/base.xml.in.h:100
+msgid "Belgium"
+msgstr "Bélxica"
+
+#: ../rules/base.xml.in.h:101
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:102
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:103
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bengali"
+msgstr "Bengalí"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bengali Probhat"
+msgstr "Probhat Bengalí"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonómico, forma Dvorak"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonómico, forma Dvorak, só latin-9"
+
+#: ../rules/base.xml.in.h:108
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bhutan"
+msgstr "Bhután"
+
+#: ../rules/base.xml.in.h:111
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Hebreo bíblico (Tiro)"
+
+#: ../rules/base.xml.in.h:112
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:113
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:114
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia e Herzegovina"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Alt keys together"
+msgstr "Ámbalas teclas Alt xuntas"
+
+#: ../rules/base.xml.in.h:116
+msgid "Both Ctrl keys together"
+msgstr "Ámbalas teclas Ctrl xuntas"
+
+#: ../rules/base.xml.in.h:117
+msgid "Both Shift keys together"
+msgstr "Ámbalas teclas «Maiús» xuntas"
+
+#: ../rules/base.xml.in.h:118
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Ámbalas teclas «Maiús» xuntas trocan o Bloqueo de maiúsculas"
+
+#: ../rules/base.xml.in.h:119
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:120
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:121
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brazil"
+msgstr "Brasil"
+
+#: ../rules/base.xml.in.h:123
+msgid "Breton"
+msgstr "Bretón"
+
+#: ../rules/base.xml.in.h:124
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:125
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:126
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:127
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:128
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:129
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:130
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:131
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:132
+msgid "Cambodia"
+msgstr "Camboya"
+
+#: ../rules/base.xml.in.h:133
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:134
+msgid "Canada"
+msgstr "Canadá"
+
+#: ../rules/base.xml.in.h:135
+msgid "Caps Lock"
+msgstr "Bloqueo de maiúsculas"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Bloqueo de maiúsculas (á primeira disposición), Maiús+Bloq Maiús (á última disposición)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Bloqueo de maiúsculas (ao pulsarse), Alt+Bloq Maiús realiza a acción orixinal de bloqueo de maiúsculas"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Bloq Maiús actúa como Maiús con bloqueo; May¡iús «pausa» Bloq Maiús"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Bloq Maiús actúa como Maiús con bloqueo; Maiús non afecta a Bloq Maiús"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock is disabled"
+msgstr "Bloq Maiús está desactivado"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock key behavior"
+msgstr "Comportameento de Bloq Maiús"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Bloq Maiús cambia Maiús de forma que todas as teclas están afectadas"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Bloq Maiús cambia a capitalización normal dos caracteres alfabéticos"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Bloq Maiús usa a capitalización interna; Maiús «pausa» o Bloq Maiús"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Bloq Maiús usa a capitalización interna; Maiús non afecta a Bloq Maiús"
+
+#: ../rules/base.xml.in.h:146
+msgid "Catalan variant with middle-dot L"
+msgstr "Variante catalana con L de medio punto"
+
+#: ../rules/base.xml.in.h:147
+msgid "Cedilla"
+msgstr "Cedilla"
+
+#: ../rules/base.xml.in.h:148
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:149
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (opción alternativa)"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:157
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:161
+msgid "China"
+msgstr "China"
+
+#: ../rules/base.xml.in.h:162
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chuvash"
+msgstr "Chuvash"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash Latin"
+msgstr "Chuvash latino"
+
+#: ../rules/base.xml.in.h:165
+msgid "Classic"
+msgstr "Clásico"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic Dvorak"
+msgstr "Dvorak clásico"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic, eliminate dead keys"
+msgstr "Clásico, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:169
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:170
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:171
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:172
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 teclas)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 teclas)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 teclas)"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compose key position"
+msgstr "Posición da tecla Compoñer"
+
+#: ../rules/base.xml.in.h:177
+msgid "Congo, Democratic Republic of the"
+msgstr "Congo, República Democrática do"
+
+#: ../rules/base.xml.in.h:178
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Retroceso"
+
+#: ../rules/base.xml.in.h:179
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control está asignada ás teclas Alt, Alt está mapeado ás teclas Windows"
+
+#: ../rules/base.xml.in.h:180
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control está asignada ás teclas Windows (e as teclas Ctrl usuais)"
+
+#: ../rules/base.xml.in.h:181
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:182
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Tártaro de Crimea (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:183
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Tártaro de Crimea (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Tártaro de Crimea (turco Alt-Q)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Tártaro de Crimea (turco F)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Tártaro de Crimea (turco Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Croatia"
+msgstr "Croacia"
+
+#: ../rules/base.xml.in.h:188
+msgid "Ctrl key position"
+msgstr "Posición da tecla Ctrl"
+
+#: ../rules/base.xml.in.h:189
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Maiús"
+
+#: ../rules/base.xml.in.h:190
+msgid "Cyrillic"
+msgstr "Cirílico"
+
+#: ../rules/base.xml.in.h:191
+msgid "Cyrillic with guillemets"
+msgstr "Cirílico con guillemots"
+
+#: ../rules/base.xml.in.h:192
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Cirílico, Z e ZHE intercambiados"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cze"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:194
+msgid "Czechia"
+msgstr "Chequia"
+
+#: ../rules/base.xml.in.h:195
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:196
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:197
+msgid "Dead acute"
+msgstr "Acento morto"
+
+#: ../rules/base.xml.in.h:198
+msgid "Dead grave acute"
+msgstr "Acento grave morto"
+
+#: ../rules/base.xml.in.h:199
+msgid "Default numeric keypad keys"
+msgstr "Teclas do teclado numérico por omisión"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dell 101-key PC"
+msgstr "Dell PC 101 teclas"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Portátil Dell/notebook Precision M series"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell Latitude series laptop"
+msgstr "Portátil Dell Latitude"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:209
+msgid "Denmark"
+msgstr "Dinamarca"
+
+#: ../rules/base.xml.in.h:210
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:212
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:213
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:215
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (puntuación de RU)"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Alternativa dvorak internacional (sin teclas muertas)"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak internacional (con teclas muertas)"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, comillas polacas en la tecla 1"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, comillas polacas en la tecla de comillas"
+
+#: ../rules/base.xml.in.h:220
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:221
+msgid "Eastern"
+msgstr "Oriental"
+
+#: ../rules/base.xml.in.h:222
+msgid "Eliminate dead keys"
+msgstr "Eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:223
+msgid "Enable extra typographic characters"
+msgstr "Activar caracteres tipográficos adicionais"
+
+#: ../rules/base.xml.in.h:224
+msgid "English"
+msgstr "Inglés"
+
+#: ../rules/base.xml.in.h:225
+msgid "English (USA International)"
+msgstr "Inglés (EE. UU. internacional)"
+
+#: ../rules/base.xml.in.h:226
+msgid "English (USA Macintosh)"
+msgstr "Inglés (EE. UU. Macintosh)"
+
+#: ../rules/base.xml.in.h:227
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:228
+msgid "Enter on keypad"
+msgstr "Intro en el teclado numérico"
+
+#: ../rules/base.xml.in.h:229
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:230
+msgid "Ergonomic"
+msgstr "Ergonómico"
+
+#: ../rules/base.xml.in.h:231
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:232
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:233
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:234
+msgid "Estonia"
+msgstr "Estonia"
+
+#: ../rules/base.xml.in.h:235
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:236
+msgid "Ethiopia"
+msgstr "Etiopía"
+
+#: ../rules/base.xml.in.h:237
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:238
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:239
+msgid "Extended"
+msgstr "Extendido"
+
+#: ../rules/base.xml.in.h:240
+msgid "Extended - Winkeys"
+msgstr "Estendido - teclas Windows"
+
+#: ../rules/base.xml.in.h:241
+msgid "Extended Backslash"
+msgstr "Contrabarra estendida"
+
+#: ../rules/base.xml.in.h:242
+msgid "F-letter (F) variant"
+msgstr "Variante de letra F (F)"
+
+#: ../rules/base.xml.in.h:243
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:244
+msgid "Faroe Islands"
+msgstr "Illas Feroe"
+
+#: ../rules/base.xml.in.h:245
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:246
+msgid "Finland"
+msgstr "Finlandia"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:249
+msgid "Four-level key with abstract separators"
+msgstr "Tecla de cuarto nivel con separadores abstratos"
+
+#: ../rules/base.xml.in.h:250
+msgid "Four-level key with comma"
+msgstr "Tecla de cuarto nivel con coma"
+
+#: ../rules/base.xml.in.h:251
+msgid "Four-level key with dot"
+msgstr "Tecla de cuarto nivel con punto"
+
+#: ../rules/base.xml.in.h:252
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Tecla de cuarto nivel con punto, restrición latin-9"
+
+#: ../rules/base.xml.in.h:253
+msgid "Four-level key with momayyez"
+msgstr "Tecla de cuarto nivel con momayyez"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:255
+msgid "France"
+msgstr "Francia"
+
+#: ../rules/base.xml.in.h:256
+msgid "Français (France Alternative)"
+msgstr "Francés (alternativa francesa)"
+
+#: ../rules/base.xml.in.h:257
+msgid "French"
+msgstr "Francés"
+
+#: ../rules/base.xml.in.h:258
+msgid "French (Macintosh)"
+msgstr "Francés (Macintosh)"
+
+#: ../rules/base.xml.in.h:259
+msgid "French (legacy)"
+msgstr "Francés (heredado)"
+
+#: ../rules/base.xml.in.h:260
+msgid "French Dvorak"
+msgstr "Francés Dvorak"
+
+#: ../rules/base.xml.in.h:261
+msgid "French, Sun dead keys"
+msgstr "Francés, teclas mortas Sun"
+
+#: ../rules/base.xml.in.h:262
+msgid "French, eliminate dead keys"
+msgstr "Francés, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:264
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Portátil Fujitsu-Siemens Computers AMILO"
+
+#: ../rules/base.xml.in.h:265
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:266
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:267
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:268
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:269
+msgid "Generic 101-key PC"
+msgstr "PC xenérico 101 teclas"
+
+#: ../rules/base.xml.in.h:270
+msgid "Generic 102-key (Intl) PC"
+msgstr "PC xenérico 102 teclas (intl)"
+
+#: ../rules/base.xml.in.h:271
+msgid "Generic 104-key PC"
+msgstr "PC xenérico 104 teclas"
+
+#: ../rules/base.xml.in.h:272
+msgid "Generic 105-key (Intl) PC"
+msgstr "PC xenérico 105 teclas (intl)"
+
+#: ../rules/base.xml.in.h:273
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:274
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:275
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:276
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:277
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:278
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:279
+msgid "Georgia"
+msgstr "Xeorxia"
+
+#: ../rules/base.xml.in.h:280
+msgid "Georgian"
+msgstr "Xeorxiano"
+
+#: ../rules/base.xml.in.h:281
+msgid "Georgian AZERTY Tskapo"
+msgstr "AZERTY Tskapo xeorxiano"
+
+#: ../rules/base.xml.in.h:282
+msgid "German (Macintosh)"
+msgstr "Alemán (Macintosh)"
+
+#: ../rules/base.xml.in.h:283
+msgid "German, Sun dead keys"
+msgstr "Alemán, teclas mortas Sun"
+
+#: ../rules/base.xml.in.h:284
+msgid "German, eliminate dead keys"
+msgstr "Alemán, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:285
+msgid "Germany"
+msgstr "Alemaña"
+
+#: ../rules/base.xml.in.h:286
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:287
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:288
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:289
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:290
+msgid "Greece"
+msgstr "Grecia"
+
+#: ../rules/base.xml.in.h:291
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:292
+msgid "Gujarati"
+msgstr "Guxarati"
+
+#: ../rules/base.xml.in.h:293
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:294
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:296
+msgid "Happy Hacking Keyboard"
+msgstr "Teclado Happy Hacking"
+
+#: ../rules/base.xml.in.h:297
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Teclado Happy Hacking para Mac"
+
+#: ../rules/base.xml.in.h:298
+msgid "Hausa"
+msgstr "Hausa"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Teclado Hewlett-Packard Internet"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:303
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:304
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:305
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:306
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:307
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hexadecimal"
+msgstr "Hexadecimal"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:314
+msgid "Homophonic"
+msgstr "Homofónico"
+
+#: ../rules/base.xml.in.h:315
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hungary"
+msgstr "Hungría"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper está asignada ás teclas Windows"
+
+#: ../rules/base.xml.in.h:320
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:321
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:322
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:323
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:324
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:325
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:326
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:327
+msgid "ISO Alternate"
+msgstr "Alternativa ISO"
+
+#: ../rules/base.xml.in.h:328
+msgid "Iceland"
+msgstr "Islandia"
+
+#: ../rules/base.xml.in.h:329
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:330
+msgid "Include dead tilde"
+msgstr "Incluír tilde morta"
+
+#: ../rules/base.xml.in.h:331
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:332
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:333
+msgid "International (AltGr dead keys)"
+msgstr "Internacional (con teclas mortas AltGr)"
+
+#: ../rules/base.xml.in.h:334
+msgid "International (with dead keys)"
+msgstr "Internacional (con teclas mortas)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Irán"
+
+#: ../rules/base.xml.in.h:337
+msgid "Iraq"
+msgstr "Iraq"
+
+#: ../rules/base.xml.in.h:338
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: ../rules/base.xml.in.h:339
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:340
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:341
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:342
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:343
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:344
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:345
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:346
+msgid "Italy"
+msgstr "Italia"
+
+#: ../rules/base.xml.in.h:347
+msgid "Japan"
+msgstr "Xapón"
+
+#: ../rules/base.xml.in.h:348
+msgid "Japan (PC-98xx Series)"
+msgstr "Xapón (Series PC-98xx)"
+
+#: ../rules/base.xml.in.h:349
+msgid "Japanese keyboard options"
+msgstr "Opcións de teclado xaponés"
+
+#: ../rules/base.xml.in.h:350
+msgid "Jpn"
+msgstr "Xpn"
+
+#: ../rules/base.xml.in.h:351
+msgid "Kalmyk"
+msgstr "Calmuco"
+
+#: ../rules/base.xml.in.h:352
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kana Lock key is locking"
+msgstr "A tecla Bloq Kana está bloqueando"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kashubian"
+msgstr "Casubio"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:357
+msgid "Kazakh with Russian"
+msgstr "Kazaxo con ruso"
+
+#: ../rules/base.xml.in.h:358
+msgid "Kazakhstan"
+msgstr "Kazajstán"
+
+#: ../rules/base.xml.in.h:359
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:360
+msgid "Kenya"
+msgstr "Kenia"
+
+#: ../rules/base.xml.in.h:361
+msgid "Key sequence to kill the X server"
+msgstr "Secuencia de teclas para matar o servidor X"
+
+#: ../rules/base.xml.in.h:362
+msgid "Key to choose 3rd level"
+msgstr "Tecla para seleccionar o 3º nivel"
+
+#: ../rules/base.xml.in.h:363
+msgid "Key to choose 5th level"
+msgstr "Tecla para seleccionar o 5º nivel"
+
+#: ../rules/base.xml.in.h:364
+msgid "Key(s) to change layout"
+msgstr "Tecla(s) para cambiar a distribución"
+
+#: ../rules/base.xml.in.h:365
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:367
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kikuyu"
+msgstr "Kikuyu"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:370
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:371
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:372
+msgid "Korea, Republic of"
+msgstr "Corea, República de"
+
+#: ../rules/base.xml.in.h:373
+msgid "Ktunaxa"
+msgstr "Kutenai"
+
+#: ../rules/base.xml.in.h:374
+msgid "Kurdish, (F)"
+msgstr "Kurdo, (F)"
+
+#: ../rules/base.xml.in.h:375
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdo, arábigolatino"
+
+#: ../rules/base.xml.in.h:376
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdo, Latino Alt-Q"
+
+#: ../rules/base.xml.in.h:377
+msgid "Kurdish, Latin Q"
+msgstr "Kurdo, Latino Q"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kyrgyzstan"
+msgstr "Kirgizstán"
+
+#: ../rules/base.xml.in.h:379
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:380
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:381
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:382
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:383
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:384
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:385
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:386
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:387
+msgid "Latin"
+msgstr "Latino"
+
+#: ../rules/base.xml.in.h:388
+msgid "Latin American"
+msgstr "Latino américa"
+
+#: ../rules/base.xml.in.h:389
+msgid "Latin Unicode"
+msgstr "Latino Unicode"
+
+#: ../rules/base.xml.in.h:390
+msgid "Latin Unicode qwerty"
+msgstr "Latino Unicode qwerty"
+
+#: ../rules/base.xml.in.h:391
+msgid "Latin qwerty"
+msgstr "Latino qwerty"
+
+#: ../rules/base.xml.in.h:392
+msgid "Latin unicode"
+msgstr "Latino unicode"
+
+#: ../rules/base.xml.in.h:393
+msgid "Latin unicode qwerty"
+msgstr "Latino unicode qwerty"
+
+#: ../rules/base.xml.in.h:394
+msgid "Latin with guillemets"
+msgstr "Latino con guillemots"
+
+#: ../rules/base.xml.in.h:395
+msgid "Latvia"
+msgstr "Letonia"
+
+#: ../rules/base.xml.in.h:396
+msgid "Layout toggle on multiply/divide key"
+msgstr "Cambio de distribución na tecla multiplicar/dividir"
+
+#: ../rules/base.xml.in.h:397
+msgid "Left Alt"
+msgstr "Alt esquerda"
+
+#: ../rules/base.xml.in.h:398
+msgid "Left Alt (while pressed)"
+msgstr "Alt esquerda (mentres está premida)"
+
+#: ../rules/base.xml.in.h:399
+msgid "Left Alt is swapped with Left Win"
+msgstr "Alt esquerda está cambiada con Windows esquerda"
+
+#: ../rules/base.xml.in.h:400
+msgid "Left Ctrl"
+msgstr "Ctrl esquerda"
+
+#: ../rules/base.xml.in.h:401
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Ctrl esquerda (á primeira disposición), Ctrl dereita (á última disposición)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Left Ctrl+Left Shift"
+msgstr "Ctrl esquerda + Maiús esquerda"
+
+#: ../rules/base.xml.in.h:403
+msgid "Left Shift"
+msgstr "Maiús esquerda"
+
+#: ../rules/base.xml.in.h:404
+msgid "Left Win"
+msgstr "Win esquerda"
+
+#: ../rules/base.xml.in.h:405
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Win esquerda (á primeira disposición), Win/Menu dereita (á última disposición)"
+
+#: ../rules/base.xml.in.h:406
+msgid "Left Win (while pressed)"
+msgstr "Tecla Windows esquerda (ao premela)"
+
+#: ../rules/base.xml.in.h:407
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win esquerda elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win izquierda elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel, unha pulsación libera o bloqueo"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left hand"
+msgstr "Zurdo"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left handed Dvorak"
+msgstr "Dvorak para zurdos"
+
+#: ../rules/base.xml.in.h:411
+msgid "Legacy"
+msgstr "Herdado"
+
+#: ../rules/base.xml.in.h:412
+msgid "Legacy Wang 724"
+msgstr "Wang 724 herdado"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:414
+msgid "Legacy key with comma"
+msgstr "Tecla herdada con coma"
+
+#: ../rules/base.xml.in.h:415
+msgid "Legacy key with dot"
+msgstr "Tecla herdada con punto"
+
+#: ../rules/base.xml.in.h:416
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: ../rules/base.xml.in.h:417
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:418
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:419
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:420
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (alternate option)"
+
+#: ../rules/base.xml.in.h:421
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:422
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:423
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:424
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:425
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (alternate option 2)"
+
+#: ../rules/base.xml.in.h:426
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:427
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:428
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra keys via G15daemon"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Generic Keyboard"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:442
+msgid "Lower Sorbian"
+msgstr "Baixo sorbio"
+
+#: ../rules/base.xml.in.h:443
+msgid "Lower Sorbian (qwertz)"
+msgstr "Baixo sorbio (qwertz)"
+
+#: ../rules/base.xml.in.h:444
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:445
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:446
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:447
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:448
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:449
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:450
+msgid "Macedonia"
+msgstr "Macedonia"
+
+#: ../rules/base.xml.in.h:451
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:452
+msgid "Macintosh (International)"
+msgstr "Macintosh (Internacional)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Macintosh Old"
+msgstr "Macintosh antigo"
+
+#: ../rules/base.xml.in.h:454
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, teclas mortas Sun"
+
+#: ../rules/base.xml.in.h:455
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:456
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Facer de Bloq Maiús un Retroceso adicional"
+
+#: ../rules/base.xml.in.h:457
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Facer de Bloq Maiús un Ctrl adicional"
+
+#: ../rules/base.xml.in.h:458
+msgid "Make Caps Lock an additional ESC"
+msgstr "Facer de Bloq Maiús un Esc adicional"
+
+#: ../rules/base.xml.in.h:459
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Facer de Bloq Maiús un Hyper adicional"
+
+#: ../rules/base.xml.in.h:460
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Facer de Bloq Maiús un Bloq Num adicional"
+
+#: ../rules/base.xml.in.h:461
+msgid "Make Caps Lock an additional Super"
+msgstr "Facer de Bloq Maiús un Super adicional"
+
+#: ../rules/base.xml.in.h:462
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:463
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha"
+
+#: ../rules/base.xml.in.h:464
+msgid "Maldives"
+msgstr "Maldivas"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mali"
+msgstr "Malí"
+
+#: ../rules/base.xml.in.h:466
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:467
+msgid "Maltese keyboard with US layout"
+msgstr "Teclado maltés con disposición EE. UU."
+
+#: ../rules/base.xml.in.h:468
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:469
+msgid "Maori"
+msgstr "Maorí"
+
+#: ../rules/base.xml.in.h:470
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:471
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:472
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:473
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:474
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:475
+msgid "Meta is mapped to Left Win"
+msgstr "Meta está asignada á tecla Windows izquierda"
+
+#: ../rules/base.xml.in.h:476
+msgid "Meta is mapped to Win keys"
+msgstr "Meta está asignada ás teclas Windows"
+
+#: ../rules/base.xml.in.h:477
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:478
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:479
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Sueco"
+
+#: ../rules/base.xml.in.h:480
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:481
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:482
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:483
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:484
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:485
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:486
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:487
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:488
+msgid "Miscellaneous compatibility options"
+msgstr "Opciones misceláneas de compatiblidade"
+
+#: ../rules/base.xml.in.h:489
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:490
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:491
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:492
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:493
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:494
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: ../rules/base.xml.in.h:495
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Morocco"
+msgstr "Marruecos"
+
+#: ../rules/base.xml.in.h:497
+msgid "Multilingual"
+msgstr "Multilingüe"
+
+#: ../rules/base.xml.in.h:498
+msgid "Multilingual, first part"
+msgstr "Multilingüe, primeira parte"
+
+#: ../rules/base.xml.in.h:499
+msgid "Multilingual, second part"
+msgstr "Multilingüe, segunda parte"
+
+#: ../rules/base.xml.in.h:500
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:501
+msgid "NICOLA-F style Backspace"
+msgstr "Retroceso estilo NICOLA-F"
+
+#: ../rules/base.xml.in.h:502
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:503
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:504
+msgid "Nativo for Esperanto"
+msgstr "Nativo para Esperanto"
+
+#: ../rules/base.xml.in.h:505
+msgid "Nativo for USA keyboards"
+msgstr "Nativo para teclados de EE. UU."
+
+#: ../rules/base.xml.in.h:506
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:507
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:508
+msgid "Netherlands"
+msgstr "Holanda"
+
+#: ../rules/base.xml.in.h:509
+msgid "New phonetic"
+msgstr "Fonético novo"
+
+#: ../rules/base.xml.in.h:510
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:511
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:512
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:513
+msgid "Non-breakable space character at fourth level"
+msgstr "Carácter de espazo non separábel no cuarto nivel"
+
+#: ../rules/base.xml.in.h:514
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Carácter de espazo non separábel no cuarto nivel, carácter de espacio estreito non separábel no sexto nivel"
+
+#: ../rules/base.xml.in.h:515
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Carácter de espazo non separábel no cuarto nivel, carácter de espazo estreito non separábel o sexto nivel (a través de Ctrl+Maiús)"
+
+#: ../rules/base.xml.in.h:516
+msgid "Non-breakable space character at second level"
+msgstr "Carácter de espazo non separábel no segundo nivel"
+
+#: ../rules/base.xml.in.h:517
+msgid "Non-breakable space character at third level"
+msgstr "Carácter de espazo non separábel no terceiro nivel"
+
+#: ../rules/base.xml.in.h:518
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Carácter de espazo non separábel no terceiro nivel, nada no cuarto nivel"
+
+#: ../rules/base.xml.in.h:519
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Carácter de espazo non separábel no terceiro nivel, carácter de espazo estreito non separábel no cuarto nivel"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:521
+msgid "Northern Saami"
+msgstr "Saami do norte"
+
+#: ../rules/base.xml.in.h:522
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Saami do norte, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:523
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:524
+msgid "Norway"
+msgstr "Noruega"
+
+#: ../rules/base.xml.in.h:525
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:526
+msgid "Num Lock"
+msgstr "Bloq Num"
+
+#: ../rules/base.xml.in.h:527
+msgid "Numeric keypad delete key behaviour"
+msgstr "Comportamento da tecla Supr do teclado numérico"
+
+#: ../rules/base.xml.in.h:528
+msgid "Numeric keypad keys work as with Mac"
+msgstr "As teclas do teclado numérico funcionan como nun Mac"
+
+#: ../rules/base.xml.in.h:529
+msgid "Numeric keypad layout selection"
+msgstr "Selección de distribución de teclado numérico"
+
+#: ../rules/base.xml.in.h:530
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:531
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:532
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:533
+msgid "OLPC Pashto"
+msgstr "OLPC Pashto"
+
+#: ../rules/base.xml.in.h:534
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC uzbeco do sur"
+
+#: ../rules/base.xml.in.h:535
+msgid "Occitan"
+msgstr "Occitano"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:537
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:538
+msgid "Oriya"
+msgstr "Orixa"
+
+#: ../rules/base.xml.in.h:539
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Teclado Oretec MCK-800 MM/Internet"
+
+#: ../rules/base.xml.in.h:540
+msgid "Ossetian"
+msgstr "Osetio"
+
+#: ../rules/base.xml.in.h:541
+msgid "Ossetian, Winkeys"
+msgstr "Osetio, teclas Windows"
+
+#: ../rules/base.xml.in.h:542
+msgid "Ossetian, legacy"
+msgstr "Osetio, herdado"
+
+#: ../rules/base.xml.in.h:543
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:544
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:545
+msgid "Pakistan"
+msgstr "Pakistán"
+
+#: ../rules/base.xml.in.h:546
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Rusino de Panonia homofónico"
+
+#: ../rules/base.xml.in.h:547
+msgid "Pashto"
+msgstr "Pashto"
+
+#: ../rules/base.xml.in.h:548
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:549
+msgid "Pause"
+msgstr "Pausa"
+
+#: ../rules/base.xml.in.h:550
+msgid "Persian, with Persian Keypad"
+msgstr "Persa con teclado numérico persa"
+
+#: ../rules/base.xml.in.h:551
+msgid "Phonetic"
+msgstr "Fonético"
+
+#: ../rules/base.xml.in.h:552
+msgid "Phonetic Winkeys"
+msgstr "Teclas Windows fonéticas"
+
+#: ../rules/base.xml.in.h:553
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:554
+msgid "Poland"
+msgstr "Polonia"
+
+#: ../rules/base.xml.in.h:555
+msgid "Polytonic"
+msgstr "Politónico"
+
+#: ../rules/base.xml.in.h:556
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:557
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:558
+msgid "Programmer Dvorak"
+msgstr "Dvorak de programador"
+
+#: ../rules/base.xml.in.h:559
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:560
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:561
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:562
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:563
+msgid "Right Alt"
+msgstr "Alt dereito"
+
+#: ../rules/base.xml.in.h:564
+msgid "Right Alt (while pressed)"
+msgstr "Alt dereito (mentres está premido)"
+
+#: ../rules/base.xml.in.h:565
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Alt dereita elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:566
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Alt dereita elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel, unha pulsación libera o bloqueo"
+
+#: ../rules/base.xml.in.h:567
+msgid "Right Alt key never chooses 3rd level"
+msgstr "A tecla Alt dereita nunca elixe o 3º nivel"
+
+#: ../rules/base.xml.in.h:568
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "A tecla Alt dereita, Maiús+Alt dereita é tecla Multi"
+
+#: ../rules/base.xml.in.h:569
+msgid "Right Ctrl"
+msgstr "Ctrl dereito"
+
+#: ../rules/base.xml.in.h:570
+msgid "Right Ctrl (while pressed)"
+msgstr "Ctrl dereito (mentres está premido)"
+
+#: ../rules/base.xml.in.h:571
+msgid "Right Ctrl as Right Alt"
+msgstr "Ctrl dereito como Alt dereito"
+
+#: ../rules/base.xml.in.h:572
+msgid "Right Ctrl+Right Shift"
+msgstr "Ctrl dereito + Maiús dereito"
+
+#: ../rules/base.xml.in.h:573
+msgid "Right Shift"
+msgstr "Maiús dereito"
+
+#: ../rules/base.xml.in.h:574
+msgid "Right Win"
+msgstr "Windows dereito"
+
+#: ../rules/base.xml.in.h:575
+msgid "Right Win (while pressed)"
+msgstr "A tecla Windows (mentres está premida)"
+
+#: ../rules/base.xml.in.h:576
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win dereita elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel"
+
+#: ../rules/base.xml.in.h:577
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win dereita elixe o 5º nivel, bloquea ao premerse xunto con outro selector de 5º nivel, unha pulsación libera o bloqueo"
+
+#: ../rules/base.xml.in.h:578
+msgid "Right hand"
+msgstr "Diestro"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right handed Dvorak"
+msgstr "Dvorak diestro"
+
+#: ../rules/base.xml.in.h:580
+msgid "Romania"
+msgstr "Rumanía"
+
+#: ../rules/base.xml.in.h:581
+msgid "Romanian keyboard with German letters"
+msgstr "Teclado rumano con letras alemanas"
+
+#: ../rules/base.xml.in.h:582
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Teclado rumano con teclas alemanas, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:583
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:584
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:585
+msgid "Russia"
+msgstr "Rusia"
+
+#: ../rules/base.xml.in.h:586
+msgid "Russian"
+msgstr "Ruso"
+
+#: ../rules/base.xml.in.h:587
+msgid "Russian phonetic"
+msgstr "Ruso fonético"
+
+#: ../rules/base.xml.in.h:588
+msgid "Russian phonetic Dvorak"
+msgstr "Dvorak ruso fonético "
+
+#: ../rules/base.xml.in.h:589
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Ruso fonético, eliminar teclas mortas"
+
+#: ../rules/base.xml.in.h:590
+msgid "Russian with Kazakh"
+msgstr "Ruso con kazaxo"
+
+#: ../rules/base.xml.in.h:591
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:592
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:593
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:594
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:595
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:597
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:598
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:599
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:600
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:601
+msgid "Scroll Lock"
+msgstr "Bloq Despl"
+
+#: ../rules/base.xml.in.h:602
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:603
+msgid "Semi-colon on third level"
+msgstr "Punto e coma en terceiro nivel"
+
+#: ../rules/base.xml.in.h:604
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:605
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:607
+msgid "Serbian"
+msgstr "Serbio"
+
+#: ../rules/base.xml.in.h:608
+msgid "Shift cancels Caps Lock"
+msgstr "Maiús cancela BloqMaiús"
+
+#: ../rules/base.xml.in.h:609
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Maiús non cancela Bloq Num, no seu lugar elixe o 3er nivel"
+
+#: ../rules/base.xml.in.h:610
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Maiús coas teclas do teclado numérico funcionan como en MS Windows"
+
+#: ../rules/base.xml.in.h:611
+msgid "Shift+Caps Lock"
+msgstr "Maiús+BloqMaiús"
+
+#: ../rules/base.xml.in.h:612
+msgid "Simple"
+msgstr "Simple"
+
+#: ../rules/base.xml.in.h:613
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:614
+msgid "Slovakia"
+msgstr "Eslovaquia"
+
+#: ../rules/base.xml.in.h:615
+msgid "Slovenia"
+msgstr "Eslovenia"
+
+#: ../rules/base.xml.in.h:616
+msgid "South Africa"
+msgstr "Sudáfrica"
+
+#: ../rules/base.xml.in.h:617
+msgid "Southern Uzbek"
+msgstr "Uzbequia do sur"
+
+#: ../rules/base.xml.in.h:618
+msgid "Spain"
+msgstr "España"
+
+#: ../rules/base.xml.in.h:619
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Teclas especiais (Ctrl+Alt+«tecla») manipuladas nun servidor"
+
+#: ../rules/base.xml.in.h:620
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:621
+msgid "Standard"
+msgstr "Estándar"
+
+#: ../rules/base.xml.in.h:622
+msgid "Standard (Cedilla)"
+msgstr "Estándar (cedilla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:624
+msgid "Standard RSTU"
+msgstr "Standard RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:626
+msgid "Standard RSTU on Russian layout"
+msgstr "Standard RSTU con disposición rusa"
+
+#: ../rules/base.xml.in.h:627
+msgid "Sun Type 5/6"
+msgstr "Sun tipo 5/6"
+
+#: ../rules/base.xml.in.h:628
+msgid "Sun dead keys"
+msgstr "Teclas mortas de Sun"
+
+#: ../rules/base.xml.in.h:629
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:630
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:631
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:632
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:633
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Intercambiar Ctrl e Bloq Maiús"
+
+#: ../rules/base.xml.in.h:634
+msgid "Swap ESC and Caps Lock"
+msgstr "Intercambiar ESC e Bloq Maiús"
+
+#: ../rules/base.xml.in.h:635
+msgid "Swe"
+msgstr "Sue"
+
+#: ../rules/base.xml.in.h:636
+msgid "Sweden"
+msgstr "Suecia"
+
+#: ../rules/base.xml.in.h:637
+msgid "Switzerland"
+msgstr "Suiza"
+
+#: ../rules/base.xml.in.h:638
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:639
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:640
+msgid "Syria"
+msgstr "Siria"
+
+#: ../rules/base.xml.in.h:641
+msgid "Syriac"
+msgstr "Sirio"
+
+#: ../rules/base.xml.in.h:642
+msgid "Syriac phonetic"
+msgstr "Sirio fonético"
+
+#: ../rules/base.xml.in.h:643
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:644
+msgid "Tajikistan"
+msgstr "Taxikistán"
+
+#: ../rules/base.xml.in.h:645
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../rules/base.xml.in.h:646
+msgid "Tamil Keyboard with Numerals"
+msgstr "Teclado tamil con letras números"
+
+#: ../rules/base.xml.in.h:647
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB Typewriter"
+
+#: ../rules/base.xml.in.h:648
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII Typewriter"
+
+#: ../rules/base.xml.in.h:649
+msgid "Tamil Unicode"
+msgstr "Tamil Unicode"
+
+#: ../rules/base.xml.in.h:650
+msgid "Tanzania"
+msgstr "Tanzania"
+
+#: ../rules/base.xml.in.h:651
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:652
+msgid "Tatar"
+msgstr "Tatar"
+
+#: ../rules/base.xml.in.h:653
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:654
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:655
+msgid "Thailand"
+msgstr "Tailandia"
+
+#: ../rules/base.xml.in.h:656
+msgid "Tibetan"
+msgstr "Tibetano"
+
+#: ../rules/base.xml.in.h:657
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetano (con numerais ASCII)"
+
+#: ../rules/base.xml.in.h:658
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:659
+msgid "Tifinagh alternative"
+msgstr "Alternativa tifinagh"
+
+#: ../rules/base.xml.in.h:660
+msgid "Tifinagh alternative phonetic"
+msgstr "Alternativa fonética tifinagh"
+
+#: ../rules/base.xml.in.h:661
+msgid "Tifinagh extended"
+msgstr "Estendido tifinagh"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh fonético estendido"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh fonético"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tilde (~) variant"
+msgstr "Variante vírgula (~)"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:667
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Á tecla correspondente nun teclado Dvorak."
+
+#: ../rules/base.xml.in.h:668
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Á tecla correspondente nun teclado Qwerty."
+
+#: ../rules/base.xml.in.h:669
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:670
+msgid "Traditional phonetic"
+msgstr "Tradicional fonético"
+
+#: ../rules/base.xml.in.h:671
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:672
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:673
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:675
+msgid "Turkey"
+msgstr "Turquía"
+
+#: ../rules/base.xml.in.h:676
+msgid "Turkmenistan"
+msgstr "Turkmenistán"
+
+#: ../rules/base.xml.in.h:677
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:678
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:679
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:680
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:modo EU)"
+
+#: ../rules/base.xml.in.h:681
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (106:modo JP)"
+
+#: ../rules/base.xml.in.h:682
+msgid "Typewriter"
+msgstr "Máquina de escribir"
+
+#: ../rules/base.xml.in.h:683
+msgid "Typewriter, legacy"
+msgstr "Máquina de escribir, herdado"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:685
+msgid "UCW layout (accented letters only)"
+msgstr "Disposición UCW (só teclas con til)"
+
+#: ../rules/base.xml.in.h:686
+msgid "US Dvorak with CZ UCW support"
+msgstr "Teclado EE. UU. con soporte para UCW checo"
+
+#: ../rules/base.xml.in.h:687
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Teclado EE. UU. con digrafos bosnios"
+
+#: ../rules/base.xml.in.h:688
+msgid "US keyboard with Bosnian letters"
+msgstr "Teclado EE. UU. con letras bosnias"
+
+#: ../rules/base.xml.in.h:689
+msgid "US keyboard with Croatian digraphs"
+msgstr "Teclado EE. UU. con digrafos croatas"
+
+#: ../rules/base.xml.in.h:690
+msgid "US keyboard with Croatian letters"
+msgstr "Teclado EE. UU. con letras croatas"
+
+#: ../rules/base.xml.in.h:691
+msgid "US keyboard with Estonian letters"
+msgstr "Teclado EE. UU. con letras estonias"
+
+#: ../rules/base.xml.in.h:692
+msgid "US keyboard with Italian letters"
+msgstr "Teclado EE. UU. con letras italianas"
+
+#: ../rules/base.xml.in.h:693
+msgid "US keyboard with Lithuanian letters"
+msgstr "Teclado EE. UU. con letras lituanas"
+
+#: ../rules/base.xml.in.h:694
+msgid "US keyboard with Slovenian letters"
+msgstr "Teclado EE. UU. con letras eslovenas"
+
+#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:696
+msgid "Udmurt"
+msgstr "Udmurto"
+
+#: ../rules/base.xml.in.h:697
+msgid "Ukr"
+msgstr "Ucr"
+
+#: ../rules/base.xml.in.h:698
+msgid "Ukraine"
+msgstr "Ucrania"
+
+#: ../rules/base.xml.in.h:699
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Adicións unicode (frechas e operadores matemáticos)"
+
+#: ../rules/base.xml.in.h:700
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Adicións unicode (frechas e operadores matemáticos); operadores matemáticos no nivel predefinido"
+
+#: ../rules/base.xml.in.h:701
+msgid "UnicodeExpert"
+msgstr "UnicodeExperto"
+
+#: ../rules/base.xml.in.h:702
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: ../rules/base.xml.in.h:703
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:704
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu fonético alternativo"
+
+#: ../rules/base.xml.in.h:705
+msgid "Urdu, Phonetic"
+msgstr "Urdu fonético"
+
+#: ../rules/base.xml.in.h:706
+msgid "Urdu, Winkeys"
+msgstr "Urdu, teclas Windows"
+
+#: ../rules/base.xml.in.h:707
+msgid "Use Bosnian digraphs"
+msgstr "Usar digrafos bosnios"
+
+#: ../rules/base.xml.in.h:708
+msgid "Use Croatian digraphs"
+msgstr "Usar digrafos croatas"
+
+#: ../rules/base.xml.in.h:709
+msgid "Use guillemets for quotes"
+msgstr "Usar guillemots para comillas"
+
+#: ../rules/base.xml.in.h:710
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Usar LED del teclado para mostrar la distribución alternativa"
+
+#: ../rules/base.xml.in.h:711
+msgid "Using space key to input non-breakable space character"
+msgstr "Usando a tecla espazo para introducir un carácter de espazo non separábel"
+
+#: ../rules/base.xml.in.h:712
+msgid "Usual space at any level"
+msgstr "Espacio usual en calquera nivel"
+
+#: ../rules/base.xml.in.h:713
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:714
+msgid "Uzbekistan"
+msgstr "Uzbekistán"
+
+#: ../rules/base.xml.in.h:715
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:716
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "Teclado para internet ViewSonic KU-306"
+
+#: ../rules/base.xml.in.h:717
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:718
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Teclado numérico Wang 724 con engadidos Unicode (frechas e operadores matemáticos)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Teclado numérico Wang 724 con engadidos Unicode (frechas e operadores matemáticos); operadores matemáticos no nivel predefinido"
+
+#: ../rules/base.xml.in.h:720
+msgid "Wang model 724 azerty"
+msgstr "Wang modelo 724 azerty"
+
+#: ../rules/base.xml.in.h:721
+msgid "Western"
+msgstr "Occidental"
+
+#: ../rules/base.xml.in.h:722
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:723
+msgid "Winkeys"
+msgstr "Teclas Windows"
+
+#: ../rules/base.xml.in.h:724
+msgid "With &lt;\\|&gt; key"
+msgstr "Con tecla &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:725
+msgid "With EuroSign on 5"
+msgstr "Con símbolo Euro na tecla 5"
+
+#: ../rules/base.xml.in.h:726
+msgid "With guillemets"
+msgstr "Con guillemots"
+
+#: ../rules/base.xml.in.h:727
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:728
+msgid "Yakut"
+msgstr "Yakuto"
+
+#: ../rules/base.xml.in.h:729
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:730
+msgid "Z and ZHE swapped"
+msgstr "Z y ZHE intercambiados"
+
+#: ../rules/base.xml.in.h:731
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:732
+msgid "Zero-width non-joiner character at second level"
+msgstr "Carácer de espazo irrompíbel de anchura cero («ZWNJ») no segundo nivel"
+
+#: ../rules/base.xml.in.h:733
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Carácer de espazo irrompíbel de anchura cero («ZWNJ») no segundo nivel, carácter de espazo non separábel no terceiro nivel"
+
+#: ../rules/base.xml.in.h:734
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Carácer de espazo irrompíbel de anchura cero («ZWNJ») no segundo nivel, carácter de espazo non separábel no terceiro nivel, nada no cuarto nivel"
+
+#: ../rules/base.xml.in.h:735
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Carácer de espazo irrompíbel de anchura cero («ZWNJ») no segundo nivel, carácter de espazo non separábel no terceiro nivel, espazo estreito non separábel no cuarto nivel"
+
+#: ../rules/base.xml.in.h:736
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Carácter de espazo irrompíbel de anchura cero («ZWNJ») no segundo nivel, carácter de espazo non separábel no terceiro nivel, espazo de anchura cero rompíbel («ZWJ») no cuarto nivel"
+
+#: ../rules/base.xml.in.h:737
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Carácer de espazo irrompíbel de anchura cero («ZWNJ») no segundo nivel, carácter de espazo de anchura cero rompíbel («ZWJ») no terceiro nivel"
+
+#: ../rules/base.xml.in.h:738
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Carácer de espazo irrompíbel de anchura cero («ZWNJ») no segundo nivel, carácter de espazo de anchura cero rompíbel («ZWJ») no terceiro nivel, caracter de espazo non separábel no cuarto nivel"
+
+#: ../rules/base.xml.in.h:739
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Carácer de espazo irrompíbel de anchura cero («ZWNJ») no terceiro nivel, carácter de anchura cero rompíbel («ZWJ») no cuarto nivel"
+
+#: ../rules/base.xml.in.h:740
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:741
+msgid "azerty/digits"
+msgstr "azerty/díxitos"
+
+#: ../rules/base.xml.in.h:742
+msgid "digits"
+msgstr "díxitos"
+
+#: ../rules/base.xml.in.h:743
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "punto e coma e comilla desprazadas (obsoleto)"
+
+#: ../rules/base.xml.in.h:744
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:745
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:746
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, contrabarra estendida"
+
+#: ../rules/base.xml.in.h:747
+msgid "qwerty/digits"
+msgstr "qwerty/díxitos"
+
+#: ../rules/base.xml.in.h:748
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avestán"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Combinar tiles no lugar de teclas mortas"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Coeur d’Alene salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Internacional (combinando AltGr Unicode)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Internacional (combinando AltGr Unicode, alternativa)"
diff --git a/xorg-server/xkeyboard-config/po/hu.po b/xorg-server/xkeyboard-config/po/hu.po
index 5f3c35ce4..d57de715c 100644
--- a/xorg-server/xkeyboard-config/po/hu.po
+++ b/xorg-server/xkeyboard-config/po/hu.po
@@ -1,2801 +1,3100 @@
-# Hungarian translation of xkeyboard-config
-# Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-#
-# Andras Timar <timar@fsf.hu>, 2004.
-# Szilveszter Farkas <Szilveszter.Farkas@gmail.com>, 2006.
-# Gabor Kelemen <kelemeng@gnome.hu>, 2006, 2007, 2008, 2009, 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.8\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-01-16 18:08+0000\n"
-"PO-Revision-Date: 2010-03-03 12:35+0100\n"
-"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
-"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(Hagyományos) Alternatív"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Hagyományos) Alternatív, Sun halott billentyűk"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Hagyományos) Alternatív, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/104 key Compatible"
-msgstr "101/104 gomb kompatibilis"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/vessző/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/vessző/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/pont/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/pont/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/vessző/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/vessző/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/pont/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/pont/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/vessző/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/vessző/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/pont/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/pont/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/vessző/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/vessző/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/pont/Halott billentyűk"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/pont/Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:22
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:23
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:24
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:26
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:27
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:28
-msgid "ACPI Standard"
-msgstr "ACPI szabvány"
-
-#: ../rules/base.xml.in.h:29
-msgid "ATM/phone-style"
-msgstr "ATM/telefon stílusú"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer Laptop"
-msgstr "Acer noteszgép"
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the standard behavior to Menu key"
-msgstr "A standard funkcionalitás hozzáadása a Menü billentyűhöz"
-
-#: ../rules/base.xml.in.h:35
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Eszperantó circumflexek hozzáadása"
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding EuroSign to certain keys"
-msgstr "Az Euro jel hozzáadása bizonyos billentyűkhöz"
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Afganisztán"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "akan"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "Albánia"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on Alt keys"
-msgstr "Az Alt és Meta az Alt billentyűkön"
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Az Alt a jobb Win billentyűhöz van rendelve, a Super a Menühöz"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Space"
-msgstr "Alt+Szóköz"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt/Win key behavior"
-msgstr "Az Alt/Win billentyűk viselkedése"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative"
-msgstr "Alternatív"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Eastern"
-msgstr "Alternatív keleti"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative Phonetic"
-msgstr "Alternatív fonetikus"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr "Alternatív nemzetközi (korábban us_intl)"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, Sun dead keys"
-msgstr "Alternatív, Sun halott billentyűk"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternatív, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, latin-9 only"
-msgstr "Alternatív, csak latin-9"
-
-#: ../rules/base.xml.in.h:58
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:59
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:60
-msgid "Any Alt key"
-msgstr "Bármely Alt billentyű"
-
-#: ../rules/base.xml.in.h:61
-msgid "Any Win key"
-msgstr "Bármely Win billentyű"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Win key (while pressed)"
-msgstr "Bármely Win billentyű (lenyomva tartva)"
-
-#: ../rules/base.xml.in.h:63
-msgid "Apostrophe (') variant"
-msgstr "Aposztróf (') változat"
-
-#: ../rules/base.xml.in.h:64
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apple Laptop"
-msgstr "Apple noteszgép"
-
-#: ../rules/base.xml.in.h:66
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:67
-msgid "Arabic"
-msgstr "Arab"
-
-#: ../rules/base.xml.in.h:68
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:69
-msgid "Armenia"
-msgstr "Örményország"
-
-#: ../rules/base.xml.in.h:70
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Asztúri változat középső pontos H és L karakterrel"
-
-#: ../rules/base.xml.in.h:71
-msgid "Asus Laptop"
-msgstr "Asus noteszgép"
-
-#: ../rules/base.xml.in.h:72
-msgid "At bottom left"
-msgstr "Bal oldalt, alul"
-
-#: ../rules/base.xml.in.h:73
-msgid "At left of 'A'"
-msgstr "Az „A”-tól balra"
-
-#: ../rules/base.xml.in.h:74
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:75
-msgid "Azerbaijan"
-msgstr "Azerbajdzsán"
-
-#: ../rules/base.xml.in.h:76
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:77
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:78
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:79
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:80
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:81
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:82
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:83
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless internet és játék"
-
-#: ../rules/base.xml.in.h:86
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:87
-msgid "Bangladesh"
-msgstr "Banglades"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bashkirian"
-msgstr "Baskír"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:90
-msgid "Belarus"
-msgstr "Fehéroroszország"
-
-#: ../rules/base.xml.in.h:91
-msgid "Belgium"
-msgstr "Belgium"
-
-#: ../rules/base.xml.in.h:92
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:93
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:94
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:95
-msgid "Bengali"
-msgstr "Bengáli"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bengali Probhat"
-msgstr "Bengáli probhat"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomikus, Dvorak kiosztás"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomikus, Dvorak kiosztás, csak latin-9"
-
-#: ../rules/base.xml.in.h:99
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:100
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:101
-msgid "Bhutan"
-msgstr "Bhután"
-
-#: ../rules/base.xml.in.h:102
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Bibliai héber (Tiro)"
-
-#: ../rules/base.xml.in.h:103
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:104
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bosnia and Herzegovina"
-msgstr "Bosznia és Hercegovina"
-
-#: ../rules/base.xml.in.h:106
-msgid "Both Alt keys together"
-msgstr "A két Alt billentyű együtt"
-
-#: ../rules/base.xml.in.h:107
-msgid "Both Ctrl keys together"
-msgstr "A két Ctrl billentyű együtt"
-
-#: ../rules/base.xml.in.h:108
-msgid "Both Shift keys together"
-msgstr "A két Shift billentyű együtt"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:110
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:111
-msgid "Brazil"
-msgstr "Brazília"
-
-#: ../rules/base.xml.in.h:112
-msgid "Breton"
-msgstr "Breton"
-
-#: ../rules/base.xml.in.h:113
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:114
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:115
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:116
-msgid "Bulgaria"
-msgstr "Bulgária"
-
-#: ../rules/base.xml.in.h:117
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:118
-msgid "Cambodia"
-msgstr "Kambodzsa"
-
-#: ../rules/base.xml.in.h:119
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:120
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:121
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:122
-msgid "CapsLock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:123
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr "A CapsLock (az első kiosztásra), Shift+CapsLock (az utolsó kiosztásra)"
-
-#: ../rules/base.xml.in.h:124
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr "CapsLock (lenyomva tartva), Alt+CapsLock végzi az eredeti nagybetűsítési műveletet"
-
-#: ../rules/base.xml.in.h:125
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr "A CapsLock Shiftként működik zárolással. A Shift „szünetelteti” a nagybetűsítést"
-
-#: ../rules/base.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "A CapsLock Shiftként működik zárolással. A Shift nem befolyásolja a nagybetűsítést"
-
-#: ../rules/base.xml.in.h:127
-msgid "CapsLock is disabled"
-msgstr "A Caps Lock letiltva"
-
-#: ../rules/base.xml.in.h:128
-msgid "CapsLock key behavior"
-msgstr "A CapsLock billentyű használati módja"
-
-#: ../rules/base.xml.in.h:129
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr "A CapsLock átváltja a Shiftet, így minden billentyű érintett"
-
-#: ../rules/base.xml.in.h:130
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr "A CapsLock átváltja a betűkarakterek normál kis- és nagybetűit"
-
-#: ../rules/base.xml.in.h:131
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "A CapsLock belső nagybetűkre váltást használ. A Shift „szünetelteti” a nagybetűsítést"
-
-#: ../rules/base.xml.in.h:132
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "A CapsLock belső nagybetűkre váltást használ. A Shift nem befolyásolja a nagybetűsítést"
-
-#: ../rules/base.xml.in.h:133
-msgid "Catalan variant with middle-dot L"
-msgstr "Katalán változat középső pontos L karakterrel"
-
-#: ../rules/base.xml.in.h:134
-msgid "Cedilla"
-msgstr "Cedilla"
-
-#: ../rules/base.xml.in.h:135
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:136
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:137
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:138
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:139
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (másik lehetőség)"
-
-#: ../rules/base.xml.in.h:140
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:141
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:142
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:143
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:144
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:145
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:146
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:147
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:148
-msgid "China"
-msgstr "Kína"
-
-#: ../rules/base.xml.in.h:149
-msgid "Chuvash"
-msgstr "Csuvas"
-
-#: ../rules/base.xml.in.h:150
-msgid "Chuvash Latin"
-msgstr "Csuvas latin"
-
-#: ../rules/base.xml.in.h:151
-msgid "Classic"
-msgstr "Klasszikus"
-
-#: ../rules/base.xml.in.h:152
-msgid "Classic Dvorak"
-msgstr "Klasszikus Dvorak"
-
-#: ../rules/base.xml.in.h:153
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:154
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:155
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:156
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access billentyűzet"
-
-#: ../rules/base.xml.in.h:157
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet billentyűzet (13 gombos)"
-
-#: ../rules/base.xml.in.h:158
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet billentyűzet (18 gombos)"
-
-#: ../rules/base.xml.in.h:159
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet billentyűzet (7 gombos)"
-
-#: ../rules/base.xml.in.h:160
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq billentyűzet"
-
-#: ../rules/base.xml.in.h:161
-msgid "Compose key position"
-msgstr "A kombináló (Compose) billentyű helye"
-
-#: ../rules/base.xml.in.h:162
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongói Demokratikus Köztársaság"
-
-#: ../rules/base.xml.in.h:163
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:164
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "A Control az Alt billentyűkhöz, az Alt a Win billentyűkhöz van rendelve"
-
-#: ../rules/base.xml.in.h:165
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "A Control a Win billentyűkhöz van rendelve (és a szokásos Ctrl billentyűkhöz)"
-
-#: ../rules/base.xml.in.h:166
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:167
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Krími tatár (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:168
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Krími tatár (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:169
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Krími tatár (török Alt-Q)"
-
-#: ../rules/base.xml.in.h:170
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Krími tatár (török F)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Krími tatár (török Q)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Croatia"
-msgstr "Horvátország"
-
-#: ../rules/base.xml.in.h:173
-msgid "Ctrl key position"
-msgstr "Ctrl billentyű helyzete"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:175
-msgid "Cyrillic"
-msgstr "Cirill"
-
-#: ../rules/base.xml.in.h:176
-msgid "Cyrillic with guillemets"
-msgstr "Cirill, »csúcsos« idézőjelekkel"
-
-#: ../rules/base.xml.in.h:177
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Cirill, a Z és a ZHE felcserélve"
-
-#: ../rules/base.xml.in.h:178
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:179
-msgid "Czechia"
-msgstr "Csehország"
-
-#: ../rules/base.xml.in.h:180
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:181
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:182
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:183
-msgid "Dan"
-msgstr "Dan"
-
-#: ../rules/base.xml.in.h:184
-msgid "Dead acute"
-msgstr "Halott vessző (´) ékezet"
-
-#: ../rules/base.xml.in.h:185
-msgid "Dead grave acute"
-msgstr "Halott grave (`) ékezet"
-
-#: ../rules/base.xml.in.h:186
-msgid "Default numeric keypad keys"
-msgstr "Alapértelmezett számbillentyűk"
-
-#: ../rules/base.xml.in.h:187
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:188
-msgid "Dell 101-key PC"
-msgstr "Dell 101-gombos PC"
-
-#: ../rules/base.xml.in.h:189
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Inspiron 6xxx/8xxx noteszgép"
-
-#: ../rules/base.xml.in.h:190
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Precision M sorozatú noteszgép"
-
-#: ../rules/base.xml.in.h:191
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude sorozatú noteszgép"
-
-#: ../rules/base.xml.in.h:192
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:193
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:194
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB multimédia-billentyűzet"
-
-#: ../rules/base.xml.in.h:196
-msgid "Denmark"
-msgstr "Dánia"
-
-#: ../rules/base.xml.in.h:197
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop billentyűzet"
-
-#: ../rules/base.xml.in.h:199
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 sorozat"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dvorak"
-msgstr "Dvorak-féle"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (UK központozás)"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dvorak international"
-msgstr "Nemzetközi Dvorak"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, lengyel idézőjelek az 1 billentyűn"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, lengyel idézőjelek az idézőjel billentyűn"
-
-#: ../rules/base.xml.in.h:205
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:206
-msgid "Eastern"
-msgstr "Keleti"
-
-#: ../rules/base.xml.in.h:207
-msgid "Eliminate dead keys"
-msgstr "Halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:208
-msgid "Enable extra typographic characters"
-msgstr "Extra tipográfiai karakterek engedélyezése"
-
-#: ../rules/base.xml.in.h:209
-msgid "English"
-msgstr "Angol"
-
-#: ../rules/base.xml.in.h:210
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:211
-msgid "Enter on keypad"
-msgstr "Enter a számbillentyűzeten"
-
-#: ../rules/base.xml.in.h:212
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:213
-msgid "Ergonomic"
-msgstr "Ergonomikus"
-
-#: ../rules/base.xml.in.h:214
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:215
-msgid "Esperanto"
-msgstr "eszperantó"
-
-#: ../rules/base.xml.in.h:216
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:217
-msgid "Estonia"
-msgstr "Észtország"
-
-#: ../rules/base.xml.in.h:218
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:219
-msgid "Ethiopia"
-msgstr "Etiópia"
-
-#: ../rules/base.xml.in.h:220
-msgid "Evdev-managed keyboard"
-msgstr "Evdev által felügyelt billentyűzet"
-
-#: ../rules/base.xml.in.h:221
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:222
-msgid "Ewe"
-msgstr "ewe"
-
-#: ../rules/base.xml.in.h:223
-msgid "Extended"
-msgstr "Kibővített"
-
-#: ../rules/base.xml.in.h:224
-msgid "Extended - Winkeys"
-msgstr "Kibővített - Win billentyűk"
-
-#: ../rules/base.xml.in.h:225
-msgid "Extended Backslash"
-msgstr "Kibővített visszaper"
-
-#: ../rules/base.xml.in.h:226
-msgid "F-letter (F) variant"
-msgstr "F-betűs (F) változat"
-
-#: ../rules/base.xml.in.h:227
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:228
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:229
-msgid "Faroe Islands"
-msgstr "Feröer szigetek"
-
-#: ../rules/base.xml.in.h:230
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:231
-msgid "Finland"
-msgstr "Finnország"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:234
-msgid "Four-level key with abstract separators"
-msgstr "Negyedik szintű billentyű absztrakt elválasztókkal"
-
-#: ../rules/base.xml.in.h:235
-msgid "Four-level key with comma"
-msgstr "Negyedik szintű billentyű vesszővel"
-
-#: ../rules/base.xml.in.h:236
-msgid "Four-level key with dot"
-msgstr "Negyedik szintű billentyű ponttal"
-
-#: ../rules/base.xml.in.h:237
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Negyedik szintű billentyű ponttal, latin-9 korlátozás"
-
-#: ../rules/base.xml.in.h:238
-msgid "Four-level key with momayyez"
-msgstr "Negyedik szintű billentyű momayyez-val"
-
-#: ../rules/base.xml.in.h:239
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:240
-msgid "France"
-msgstr "Franciaország"
-
-#: ../rules/base.xml.in.h:241
-msgid "French"
-msgstr "Francia"
-
-#: ../rules/base.xml.in.h:242
-msgid "French (Macintosh)"
-msgstr "Francia (Macintosh)"
-
-#: ../rules/base.xml.in.h:243
-msgid "French (legacy)"
-msgstr "Francia (hagyományos)"
-
-#: ../rules/base.xml.in.h:244
-msgid "French Dvorak"
-msgstr "Francia Dvorak"
-
-#: ../rules/base.xml.in.h:245
-msgid "French, Sun dead keys"
-msgstr "Francia, Sun halott billentyűk"
-
-#: ../rules/base.xml.in.h:246
-msgid "French, eliminate dead keys"
-msgstr "Francia, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:247
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO noteszgép"
-
-#: ../rules/base.xml.in.h:248
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:249
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:250
-msgid "Ga"
-msgstr "ga"
-
-#: ../rules/base.xml.in.h:251
-msgid "Generic 101-key PC"
-msgstr "Általános 101 gombos PC"
-
-#: ../rules/base.xml.in.h:252
-msgid "Generic 102-key (Intl) PC"
-msgstr "Általános 102 gombos (nemzetközi) PC"
-
-#: ../rules/base.xml.in.h:253
-msgid "Generic 104-key PC"
-msgstr "Általános 104 gombos PC"
-
-#: ../rules/base.xml.in.h:254
-msgid "Generic 105-key (Intl) PC"
-msgstr "Általános 105 gombos (nemzetközi) PC"
-
-#: ../rules/base.xml.in.h:255
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:256
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:257
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:258
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:259
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:260
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:261
-msgid "Georgia"
-msgstr "Grúzia"
-
-#: ../rules/base.xml.in.h:262
-msgid "Georgian"
-msgstr "Grúz"
-
-#: ../rules/base.xml.in.h:263
-msgid "Georgian AZERTY Tskapo"
-msgstr "Grúz AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:264
-msgid "German (Macintosh)"
-msgstr "Német (Macintosh)"
-
-#: ../rules/base.xml.in.h:265
-msgid "German, Sun dead keys"
-msgstr "Német, Sun halott billentyűk"
-
-#: ../rules/base.xml.in.h:266
-msgid "German, eliminate dead keys"
-msgstr "Német, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:267
-msgid "Germany"
-msgstr "Németország"
-
-#: ../rules/base.xml.in.h:268
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:269
-msgid "Ghana"
-msgstr "Ghána"
-
-#: ../rules/base.xml.in.h:270
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:271
-msgid "Greece"
-msgstr "Görögország"
-
-#: ../rules/base.xml.in.h:272
-msgid "Group toggle on multiply/divide key"
-msgstr "Csoport átváltása a szorzás/osztás billentyűn"
-
-#: ../rules/base.xml.in.h:273
-msgid "Gui"
-msgstr "Gui"
-
-#: ../rules/base.xml.in.h:274
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:275
-msgid "Gujarati"
-msgstr "Gudzsarati"
-
-#: ../rules/base.xml.in.h:276
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:277
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:278
-msgid "Gyration"
-msgstr "Forgás"
-
-#: ../rules/base.xml.in.h:279
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking billentyűzet"
-
-#: ../rules/base.xml.in.h:280
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking billentyűzet Mac-hez"
-
-#: ../rules/base.xml.in.h:281
-msgid "Hausa"
-msgstr "hausza"
-
-#: ../rules/base.xml.in.h:282
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:283
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:284
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:285
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:286
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:287
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:288
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:289
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:290
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:291
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:292
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x multimédia billentyűzet"
-
-#: ../rules/base.xml.in.h:293
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:294
-msgid "Hexadecimal"
-msgstr "Hexadecimális"
-
-#: ../rules/base.xml.in.h:295
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Homophonic"
-msgstr "Homofon"
-
-#: ../rules/base.xml.in.h:298
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hungary"
-msgstr "Magyarország"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hyper is mapped to Win-keys"
-msgstr "A Hyper a Win billentyűkhöz van rendelve"
-
-#: ../rules/base.xml.in.h:303
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:304
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:305
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:306
-msgid "IBM Space Saver"
-msgstr "IBM helytakarékos"
-
-#: ../rules/base.xml.in.h:307
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:308
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:309
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:310
-msgid "ISO Alternate"
-msgstr "ISO Alternate"
-
-#: ../rules/base.xml.in.h:311
-msgid "Iceland"
-msgstr "Izland"
-
-#: ../rules/base.xml.in.h:312
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:313
-msgid "Include dead tilde"
-msgstr "Halott tilde felvétele"
-
-#: ../rules/base.xml.in.h:314
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:315
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:316
-msgid "International (AltGr dead keys)"
-msgstr "Nemzetközi (AltGr halott billentyűkkel)"
-
-#: ../rules/base.xml.in.h:317
-msgid "International (with dead keys)"
-msgstr "Nemzetközi (halott billentyűkkel)"
-
-#: ../rules/base.xml.in.h:318
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:319
-msgid "Iran"
-msgstr "Irán"
-
-#: ../rules/base.xml.in.h:320
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:321
-msgid "Ireland"
-msgstr "Írország"
-
-#: ../rules/base.xml.in.h:322
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:323
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:324
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:325
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:326
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:327
-msgid "Israel"
-msgstr "Izrael"
-
-#: ../rules/base.xml.in.h:328
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:329
-msgid "Italy"
-msgstr "Olaszország"
-
-#: ../rules/base.xml.in.h:330
-msgid "Japan"
-msgstr "Japán"
-
-#: ../rules/base.xml.in.h:331
-msgid "Japan (PC-98xx Series)"
-msgstr "Japán (PC-98xx sorozat)"
-
-#: ../rules/base.xml.in.h:332
-msgid "Japanese keyboard options"
-msgstr "Japán billentyűzet-beállítások"
-
-#: ../rules/base.xml.in.h:333
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:334
-msgid "Kalmyk"
-msgstr "Kalmük"
-
-#: ../rules/base.xml.in.h:335
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:336
-msgid "Kana Lock key is locking"
-msgstr "A Kana zárolásbillentyű zárol"
-
-#: ../rules/base.xml.in.h:337
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:338
-msgid "Kashubian"
-msgstr "Kasub"
-
-#: ../rules/base.xml.in.h:339
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:340
-msgid "Kazakh with Russian"
-msgstr "kazah orosszal"
-
-#: ../rules/base.xml.in.h:341
-msgid "Kazakhstan"
-msgstr "Kazahsztán"
-
-#: ../rules/base.xml.in.h:342
-msgid "Key sequence to kill the X server"
-msgstr "Billentyűsorozat az X kiszolgáló kilövéséhez"
-
-#: ../rules/base.xml.in.h:343
-msgid "Key to choose 3rd level"
-msgstr "Billentyű a harmadik szint választásához"
-
-#: ../rules/base.xml.in.h:344
-msgid "Key(s) to change layout"
-msgstr "A kiosztást megváltoztató billentyűk"
-
-#: ../rules/base.xml.in.h:345
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:346
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:347
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:348
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:349
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:350
-msgid "Korea, Republic of"
-msgstr "Koreai köztársaság"
-
-#: ../rules/base.xml.in.h:351
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kurdish, (F)"
-msgstr "Kurd, (F)"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurd, arab-latin"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurd, latin Alt-Q"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kurdish, Latin Q"
-msgstr "Kurd, latin Q"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kyrgyzstan"
-msgstr "Kirgizisztán"
-
-#: ../rules/base.xml.in.h:357
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:358
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:359
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:360
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:361
-msgid "Laos"
-msgstr "Laosz"
-
-#: ../rules/base.xml.in.h:362
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Compaq noteszgép (pl. Armada) noteszgép-billentyűzet"
-
-#: ../rules/base.xml.in.h:363
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Compaq noteszgép (pl. Presario) Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:364
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "eMachines m68xx noteszgép"
-
-#: ../rules/base.xml.in.h:365
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:366
-msgid "Latin American"
-msgstr "Latin-amerikai"
-
-#: ../rules/base.xml.in.h:367
-msgid "Latin Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:368
-msgid "Latin Unicode qwerty"
-msgstr "Latin Unicode qwerty"
-
-#: ../rules/base.xml.in.h:369
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:370
-msgid "Latin unicode"
-msgstr "Latin unicode"
-
-#: ../rules/base.xml.in.h:371
-msgid "Latin unicode qwerty"
-msgstr "Latin unicode qwerty"
-
-#: ../rules/base.xml.in.h:372
-msgid "Latin with guillemets"
-msgstr "Latin, »csúcsos« idézőjelekkel"
-
-#: ../rules/base.xml.in.h:373
-msgid "Latvia"
-msgstr "Lettország"
-
-#: ../rules/base.xml.in.h:374
-msgid "Lav"
-msgstr "Lav"
-
-#: ../rules/base.xml.in.h:375
-msgid "Left Alt"
-msgstr "Bal Alt"
-
-#: ../rules/base.xml.in.h:376
-msgid "Left Alt (while pressed)"
-msgstr "Bal Alt (lenyomva tartva)"
-
-#: ../rules/base.xml.in.h:377
-msgid "Left Alt is swapped with Left Win"
-msgstr "A bal Alt fel van cserélve a bal Win billentyűvel"
-
-#: ../rules/base.xml.in.h:378
-msgid "Left Ctrl"
-msgstr "Bal Ctrl"
-
-#: ../rules/base.xml.in.h:379
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Bal Ctrl (az első kiosztásra), jobb Ctrl (az utolsó kiosztásra)"
-
-#: ../rules/base.xml.in.h:380
-msgid "Left Ctrl+Left Shift"
-msgstr "Bal Ctrl+Bal Shift"
-
-#: ../rules/base.xml.in.h:381
-msgid "Left Shift"
-msgstr "Bal Shift"
-
-#: ../rules/base.xml.in.h:382
-msgid "Left Win"
-msgstr "Bal Win"
-
-#: ../rules/base.xml.in.h:383
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Bal Win (az első kiosztásra), jobb Win/Menü (az utolsó kiosztásra)"
-
-#: ../rules/base.xml.in.h:384
-msgid "Left Win (while pressed)"
-msgstr "Bal Win (lenyomva tartva)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Left hand"
-msgstr "Balkezes"
-
-#: ../rules/base.xml.in.h:386
-msgid "Left handed Dvorak"
-msgstr "Balkezes Dvorák"
-
-#: ../rules/base.xml.in.h:387
-msgid "Legacy"
-msgstr "Örökölt"
-
-#: ../rules/base.xml.in.h:388
-msgid "Legacy Wang 724"
-msgstr "Hagyományos Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:390
-msgid "Legacy key with comma"
-msgstr "Hagyományos számbillentyűzet vesszővel"
-
-#: ../rules/base.xml.in.h:391
-msgid "Legacy key with dot"
-msgstr "Hagyományos számbillentyűzet ponttal"
-
-#: ../rules/base.xml.in.h:392
-msgid "Less-than/Greater-than"
-msgstr "Kisebb mint/nagyobb mint"
-
-#: ../rules/base.xml.in.h:393
-msgid "Lithuania"
-msgstr "Litvánia"
-
-#: ../rules/base.xml.in.h:394
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access billentyűzet"
-
-#: ../rules/base.xml.in.h:395
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:396
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (másik lehetőség)"
-
-#: ../rules/base.xml.in.h:397
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:398
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:399
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:400
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:401
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (másik lehetőség)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:403
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:404
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15, extra billentyűk a G15daemon közvetítésével"
-
-#: ../rules/base.xml.in.h:405
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech általános billentyűzet"
-
-#: ../rules/base.xml.in.h:406
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 billentyűzet"
-
-#: ../rules/base.xml.in.h:407
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:408
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator billentyűzet"
-
-#: ../rules/base.xml.in.h:409
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite billentyűzet"
-
-#: ../rules/base.xml.in.h:410
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X vezeték nélküli asztali médiabillentyűzet"
-
-#: ../rules/base.xml.in.h:411
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X billentyűzet"
-
-#: ../rules/base.xml.in.h:412
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge billentyűzet"
-
-#: ../rules/base.xml.in.h:413
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo billentyűzet"
-
-#: ../rules/base.xml.in.h:414
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless billentyűzet (modell: Y-RB6)"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:418
-msgid "Lower Sorbian"
-msgstr "Alsó szorb"
-
-#: ../rules/base.xml.in.h:419
-msgid "Lower Sorbian (qwertz)"
-msgstr "Alsó szorb (qwertz)"
-
-#: ../rules/base.xml.in.h:420
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:421
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:422
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:423
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:424
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:425
-msgid "Macedonia"
-msgstr "Macedónia"
-
-#: ../rules/base.xml.in.h:426
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:427
-msgid "Macintosh Old"
-msgstr "Macintosh Old"
-
-#: ../rules/base.xml.in.h:428
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, Sun halott billentyűk"
-
-#: ../rules/base.xml.in.h:429
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:430
-msgid "Make CapsLock an additional Backspace"
-msgstr "A Caps Lock használata másik Backspace-ként"
-
-#: ../rules/base.xml.in.h:431
-msgid "Make CapsLock an additional Ctrl"
-msgstr "A Caps Lock használata másik Ctrl-ként"
-
-#: ../rules/base.xml.in.h:432
-msgid "Make CapsLock an additional ESC"
-msgstr "A Caps Lock használata másik Esc-ként"
-
-#: ../rules/base.xml.in.h:433
-msgid "Make CapsLock an additional Hyper"
-msgstr "A Caps Lock használata másik Hyper-ként"
-
-#: ../rules/base.xml.in.h:434
-msgid "Make CapsLock an additional NumLock"
-msgstr "A Caps Lock használata másik Num Lock-ként"
-
-#: ../rules/base.xml.in.h:435
-msgid "Make CapsLock an additional Super"
-msgstr "A Caps Lock használata másik Super-ként"
-
-#: ../rules/base.xml.in.h:436
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:437
-msgid "Malayalam"
-msgstr "Malajalam"
-
-#: ../rules/base.xml.in.h:438
-msgid "Malayalam Lalitha"
-msgstr "Malajalam lalitha"
-
-#: ../rules/base.xml.in.h:439
-msgid "Maldives"
-msgstr "Maldív-szigetek"
-
-#: ../rules/base.xml.in.h:440
-msgid "Malta"
-msgstr "Málta"
-
-#: ../rules/base.xml.in.h:441
-msgid "Maltese keyboard with US layout"
-msgstr "Máltai billentyűzet egyesült államokbeli kiosztással"
-
-#: ../rules/base.xml.in.h:442
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:443
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:444
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:445
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access billentyűzet"
-
-#: ../rules/base.xml.in.h:446
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:447
-msgid "Menu"
-msgstr "Menü"
-
-#: ../rules/base.xml.in.h:448
-msgid "Meta is mapped to Left Win"
-msgstr "A Meta a bal Win billentyűhöz van rendelve"
-
-#: ../rules/base.xml.in.h:449
-msgid "Meta is mapped to Win keys"
-msgstr "A Meta a Win billentyűkhöz van rendelve"
-
-#: ../rules/base.xml.in.h:450
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:451
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:452
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, svéd"
-
-#: ../rules/base.xml.in.h:453
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:454
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:455
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:456
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:457
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:458
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:459
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office billentyűzet"
-
-#: ../rules/base.xml.in.h:460
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft vezeték nélküli multimédia billentyűzet 1.0A"
-
-#: ../rules/base.xml.in.h:461
-msgid "Miscellaneous compatibility options"
-msgstr "Egyéb kompatibilitási beállítások"
-
-#: ../rules/base.xml.in.h:462
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:463
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mongolia"
-msgstr "Mongólia"
-
-#: ../rules/base.xml.in.h:467
-msgid "Montenegro"
-msgstr "Montenegró"
-
-#: ../rules/base.xml.in.h:468
-msgid "Morocco"
-msgstr "Marokkó"
-
-#: ../rules/base.xml.in.h:469
-msgid "Multilingual"
-msgstr "Többnyelvű"
-
-#: ../rules/base.xml.in.h:470
-msgid "Multilingual, first part"
-msgstr "Többnyelvű, első rész"
-
-#: ../rules/base.xml.in.h:471
-msgid "Multilingual, second part"
-msgstr "Többnyelvű, második rész"
-
-#: ../rules/base.xml.in.h:472
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:473
-msgid "NICOLA-F style Backspace"
-msgstr "NICOLA-F stílusú backspace"
-
-#: ../rules/base.xml.in.h:474
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:475
-msgid "Nativo"
-msgstr "Natív"
-
-#: ../rules/base.xml.in.h:476
-msgid "Nativo for Esperanto"
-msgstr "Natív az eszperantóhoz"
-
-#: ../rules/base.xml.in.h:477
-msgid "Nativo for USA keyboards"
-msgstr "Natív az USA billentyűzetekhez"
-
-#: ../rules/base.xml.in.h:478
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:479
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:480
-msgid "Nepal"
-msgstr "Nepál"
-
-#: ../rules/base.xml.in.h:481
-msgid "Netherlands"
-msgstr "Hollandia"
-
-#: ../rules/base.xml.in.h:482
-msgid "New phonetic"
-msgstr "Új fonetikus"
-
-#: ../rules/base.xml.in.h:483
-msgid "Nig"
-msgstr "Nig"
-
-#: ../rules/base.xml.in.h:484
-msgid "Nigeria"
-msgstr "Nigéria"
-
-#: ../rules/base.xml.in.h:485
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:486
-msgid "Non-breakable space character at fourth level"
-msgstr "Nem törhető szóköz karakter a negyedik szinten"
-
-#: ../rules/base.xml.in.h:487
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Nem törhető szóköz karakter a negyedik szinten, keskeny nem törhető szóköz karakter a hatodik szinten"
-
-#: ../rules/base.xml.in.h:488
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Nem törhető szóköz karakter a negyedik szinten, keskeny nem törhető szóköz karakter a hatodik szinten (a Ctrl+Shift segítségével)"
-
-#: ../rules/base.xml.in.h:489
-msgid "Non-breakable space character at second level"
-msgstr "Nem törhető szóköz karakter a második szinten"
-
-#: ../rules/base.xml.in.h:490
-msgid "Non-breakable space character at third level"
-msgstr "Nem törhető szóköz karakter a harmadik szinten"
-
-#: ../rules/base.xml.in.h:491
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Mem törhető szóköz karakter a harmadik szinten és semmi a negyediken"
-
-#: ../rules/base.xml.in.h:492
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Nem törhető szóköz karakter a harmadik szinten, keskeny nem törhető szóköz karakter a negyedik szinten"
-
-#: ../rules/base.xml.in.h:493
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:494
-msgid "Northern Saami"
-msgstr "Északi szami"
-
-#: ../rules/base.xml.in.h:495
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Északi szami, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:496
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:497
-msgid "Norway"
-msgstr "Norvégia"
-
-#: ../rules/base.xml.in.h:498
-msgid "NumLock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:499
-msgid "Numeric keypad delete key behaviour"
-msgstr "Számbillentyűzet Delete billentyűjének viselkedése"
-
-#: ../rules/base.xml.in.h:500
-msgid "Numeric keypad keys work as with Mac"
-msgstr "A számbillentyűk úgy működjenek, mint Macen"
-
-#: ../rules/base.xml.in.h:501
-msgid "Numeric keypad layout selection"
-msgstr "Számbillentyűzet kiosztásválasztása"
-
-#: ../rules/base.xml.in.h:502
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:503
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:504
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:505
-msgid "OLPC Pashto"
-msgstr "OLPC Pastu"
-
-#: ../rules/base.xml.in.h:506
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC déli üzbég"
-
-#: ../rules/base.xml.in.h:507
-msgid "Occitan"
-msgstr "Okcitán"
-
-#: ../rules/base.xml.in.h:508
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:509
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:510
-msgid "Oriya"
-msgstr "Orija"
-
-#: ../rules/base.xml.in.h:511
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:512
-msgid "Ossetian"
-msgstr "Oszét"
-
-#: ../rules/base.xml.in.h:513
-msgid "Ossetian, Winkeys"
-msgstr "Oszét, win gombok"
-
-#: ../rules/base.xml.in.h:514
-msgid "Ossetian, legacy"
-msgstr "Oszét, hagyományos"
-
-#: ../rules/base.xml.in.h:515
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:516
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:517
-msgid "Pakistan"
-msgstr "Pakisztán"
-
-#: ../rules/base.xml.in.h:518
-msgid "Pashto"
-msgstr "Pastu"
-
-#: ../rules/base.xml.in.h:519
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:520
-msgid "Persian, with Persian Keypad"
-msgstr "Perzsa, perzsa számbillentyűzettel"
-
-#: ../rules/base.xml.in.h:521
-msgid "Phonetic"
-msgstr "Fonetikus"
-
-#: ../rules/base.xml.in.h:522
-msgid "Phonetic Winkeys"
-msgstr "Fonetikus Win gombok"
-
-#: ../rules/base.xml.in.h:523
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:524
-msgid "Poland"
-msgstr "Lengyelország"
-
-#: ../rules/base.xml.in.h:525
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: ../rules/base.xml.in.h:526
-msgid "Portugal"
-msgstr "Portugália"
-
-#: ../rules/base.xml.in.h:527
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:528
-msgid "Programmer Dvorak"
-msgstr "Programozói Dvorak"
-
-#: ../rules/base.xml.in.h:529
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:530
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:531
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:532
-msgid "Right Alt"
-msgstr "Jobb Alt"
-
-#: ../rules/base.xml.in.h:533
-msgid "Right Alt (while pressed)"
-msgstr "Jobb Alt (lenyomva tartva)"
-
-#: ../rules/base.xml.in.h:534
-msgid "Right Alt key never chooses 3rd level"
-msgstr "A jobb Alt billentyű sohasem választ harmadik szintet"
-
-#: ../rules/base.xml.in.h:535
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Jobb Alt, a Shift+jobb Alt kombináció a Multi_Key"
-
-#: ../rules/base.xml.in.h:536
-msgid "Right Ctrl"
-msgstr "Jobb Ctrl"
-
-#: ../rules/base.xml.in.h:537
-msgid "Right Ctrl (while pressed)"
-msgstr "Jobb Ctrl (lenyomva tartva)"
-
-#: ../rules/base.xml.in.h:538
-msgid "Right Ctrl as Right Alt"
-msgstr "Jobb Ctrl használata jobb Alt-ként"
-
-#: ../rules/base.xml.in.h:539
-msgid "Right Ctrl+Right Shift"
-msgstr "Jobb Ctrl + jobb Shift"
-
-#: ../rules/base.xml.in.h:540
-msgid "Right Shift"
-msgstr "Jobb Shift"
-
-#: ../rules/base.xml.in.h:541
-msgid "Right Win"
-msgstr "Jobb Win"
-
-#: ../rules/base.xml.in.h:542
-msgid "Right Win (while pressed)"
-msgstr "Jobb Win (lenyomva tartva)"
-
-#: ../rules/base.xml.in.h:543
-msgid "Right hand"
-msgstr "Jobbkezes"
-
-#: ../rules/base.xml.in.h:544
-msgid "Right handed Dvorak"
-msgstr "Jobbkezes Dvorák"
-
-#: ../rules/base.xml.in.h:545
-msgid "Romania"
-msgstr "Románia"
-
-#: ../rules/base.xml.in.h:546
-msgid "Romanian keyboard with German letters"
-msgstr "Román billentyűzet német betűkkel"
-
-#: ../rules/base.xml.in.h:547
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Román billentyűzet német betűkkel, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:548
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:549
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:550
-msgid "Russia"
-msgstr "Oroszország"
-
-#: ../rules/base.xml.in.h:551
-msgid "Russian"
-msgstr "Orosz"
-
-#: ../rules/base.xml.in.h:552
-msgid "Russian phonetic"
-msgstr "Orosz fonetikus"
-
-#: ../rules/base.xml.in.h:553
-msgid "Russian phonetic Dvorak"
-msgstr "Orosz fonetikus Dvorak"
-
-#: ../rules/base.xml.in.h:554
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Orosz fonetikus, halott billentyűk tiltása"
-
-#: ../rules/base.xml.in.h:555
-msgid "Russian with Kazakh"
-msgstr "orosz kazahhal"
-
-#: ../rules/base.xml.in.h:556
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:557
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:558
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:559
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:560
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:561 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:562
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:563
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:564
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:565
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:566
-msgid "Scroll Lock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:567
-msgid "ScrollLock"
-msgstr "ScrollLock"
-
-#: ../rules/base.xml.in.h:568
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:569
-msgid "Semi-colon on third level"
-msgstr "Pontosvessző a harmadik szinten"
-
-#: ../rules/base.xml.in.h:570 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "Szerbia"
-
-#: ../rules/base.xml.in.h:571
-msgid "Shift cancels CapsLock"
-msgstr "A Shift megszakítja a Caps Lockot"
-
-#: ../rules/base.xml.in.h:572
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr "A Shift nem szakítja meg a Num Lockot, a harmadik szintet választja ki"
-
-#: ../rules/base.xml.in.h:573
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "A Shift+számbillentyűk úgy működjenek, mint az MS Windowsban"
-
-#: ../rules/base.xml.in.h:574
-msgid "Shift+CapsLock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:575
-msgid "Simple"
-msgstr "Egyszerű"
-
-#: ../rules/base.xml.in.h:576
-msgid "Slovakia"
-msgstr "Szlovákia"
-
-#: ../rules/base.xml.in.h:577
-msgid "Slovenia"
-msgstr "Szlovénia"
-
-#: ../rules/base.xml.in.h:578
-msgid "South Africa"
-msgstr "Dél-Afrika"
-
-#: ../rules/base.xml.in.h:579
-msgid "Southern Uzbek"
-msgstr "déli üzbég"
-
-#: ../rules/base.xml.in.h:580
-msgid "Spain"
-msgstr "Spanyolország"
-
-#: ../rules/base.xml.in.h:581
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "A speciális billentyűket (Ctrl+Alt+&lt;billentyű&gt;) a kiszolgáló kezeli"
-
-#: ../rules/base.xml.in.h:582
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:583
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:584
-msgid "Standard"
-msgstr "Szabványos"
-
-#: ../rules/base.xml.in.h:585
-msgid "Standard (Cedilla)"
-msgstr "Szabványos (cédille)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:587
-msgid "Standard RSTU"
-msgstr "Szabványos RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:589
-msgid "Standard RSTU on Russian layout"
-msgstr "Szabványos RSTU orosz kiosztáson"
-
-#: ../rules/base.xml.in.h:590
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:591
-msgid "Sun dead keys"
-msgstr "Sun halott billentyűk"
-
-#: ../rules/base.xml.in.h:592
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power multimédia billentyűzet"
-
-#: ../rules/base.xml.in.h:593
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:594
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:595
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:596
-msgid "Swap Ctrl and CapsLock"
-msgstr "Ctrl és Caps Lock felcserélése"
-
-#: ../rules/base.xml.in.h:597
-msgid "Swap ESC and CapsLock"
-msgstr "ESC és Caps Lock felcserélése"
-
-#: ../rules/base.xml.in.h:598
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:599
-msgid "Sweden"
-msgstr "Svédország"
-
-#: ../rules/base.xml.in.h:600
-msgid "Switzerland"
-msgstr "Svájc"
-
-#: ../rules/base.xml.in.h:601
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:602
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:603
-msgid "Syria"
-msgstr "Szíria"
-
-#: ../rules/base.xml.in.h:604
-msgid "Syriac"
-msgstr "Szír"
-
-#: ../rules/base.xml.in.h:605
-msgid "Syriac phonetic"
-msgstr "Szír fonetikus"
-
-#: ../rules/base.xml.in.h:606
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:607
-msgid "Tajikistan"
-msgstr "Tádzsikisztán"
-
-#: ../rules/base.xml.in.h:608
-msgid "Tamil"
-msgstr "Tamil"
-
-#: ../rules/base.xml.in.h:609
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB írógép"
-
-#: ../rules/base.xml.in.h:610
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII írógép"
-
-#: ../rules/base.xml.in.h:611
-msgid "Tamil Unicode"
-msgstr "Tamil Unicode"
-
-#: ../rules/base.xml.in.h:612
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:613
-msgid "Tatar"
-msgstr "tatár"
-
-#: ../rules/base.xml.in.h:614
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:615
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:616
-msgid "Thailand"
-msgstr "Thaiföld"
-
-#: ../rules/base.xml.in.h:617
-msgid "Tibetan"
-msgstr "Tibeti"
-
-#: ../rules/base.xml.in.h:618
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibeti (ASCII számjegyekkel)"
-
-#: ../rules/base.xml.in.h:619
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:620
-msgid "Tifinagh Alternative"
-msgstr "Alternatív Tifinagh"
-
-#: ../rules/base.xml.in.h:621
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Alternatív fonetikus Tifinagh"
-
-#: ../rules/base.xml.in.h:622
-msgid "Tifinagh Extended"
-msgstr "Kibővített Tifinagh"
-
-#: ../rules/base.xml.in.h:623
-msgid "Tifinagh Extended Phonetic"
-msgstr "Kibővített fonetikus Tifinagh"
-
-#: ../rules/base.xml.in.h:624
-msgid "Tifinagh Phonetic"
-msgstr "Fonetikus Tifinagh"
-
-#: ../rules/base.xml.in.h:625
-msgid "Tilde (~) variant"
-msgstr "Tilde (~) változat"
-
-#: ../rules/base.xml.in.h:626
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:627
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "A Dvorak billentyűzeten megfelelő billentyűre."
-
-#: ../rules/base.xml.in.h:628
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "A Qwerty billentyűzeten megfelelő billentyűre."
-
-#: ../rules/base.xml.in.h:629
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:630
-msgid "Traditional phonetic"
-msgstr "Hagyományos fonetikus"
-
-#: ../rules/base.xml.in.h:631
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access billentyűzet"
-
-#: ../rules/base.xml.in.h:632
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:633
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:634
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:635
-msgid "Turkey"
-msgstr "Törökország"
-
-#: ../rules/base.xml.in.h:636
-msgid "Turkmenistan"
-msgstr "Türkmenisztán"
-
-#: ../rules/base.xml.in.h:637
-msgid "Typewriter"
-msgstr "Írógép"
-
-#: ../rules/base.xml.in.h:638
-msgid "Typewriter, legacy"
-msgstr "Írógép, hagyományos"
-
-#: ../rules/base.xml.in.h:639
-msgid "UCW layout (accented letters only)"
-msgstr "UCW kiosztás (csak ékezetes betűk)"
-
-#: ../rules/base.xml.in.h:640
-msgid "US keyboard with Bosnian digraphs"
-msgstr "US billentyűzet bosnyák billentyűkombinációkkal"
-
-#: ../rules/base.xml.in.h:641
-msgid "US keyboard with Bosnian letters"
-msgstr "US billentyűzet bosnyák betűkkel"
-
-#: ../rules/base.xml.in.h:642
-msgid "US keyboard with Croatian digraphs"
-msgstr "US billentyűzet horvát billentyűkombinációkkal"
-
-#: ../rules/base.xml.in.h:643
-msgid "US keyboard with Croatian letters"
-msgstr "US billentyűzet horvát betűkkel"
-
-#: ../rules/base.xml.in.h:644
-msgid "US keyboard with Estonian letters"
-msgstr "US billentyűzet észt betűkkel"
-
-#: ../rules/base.xml.in.h:645
-msgid "US keyboard with Italian letters"
-msgstr "US billentyűzet olasz betűkkel"
-
-#: ../rules/base.xml.in.h:646
-msgid "US keyboard with Lithuanian letters"
-msgstr "US billentyűzet litván betűkkel"
-
-#: ../rules/base.xml.in.h:647
-msgid "US keyboard with Slovenian letters"
-msgstr "US billentyűzet szlovén betűkkel"
-
-#: ../rules/base.xml.in.h:648 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:649
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: ../rules/base.xml.in.h:650
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:651
-msgid "Ukraine"
-msgstr "Ukrajna"
-
-#: ../rules/base.xml.in.h:652
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Unicode kiegészítések (nyilak és műveleti jelek)"
-
-#: ../rules/base.xml.in.h:653
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Unicode kiegészítések (nyilak és műveleti jelek). A műveleti jelek az alapértelmezett szinten"
-
-#: ../rules/base.xml.in.h:654
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:655
-msgid "United Kingdom"
-msgstr "Egyesült Királyság"
-
-#: ../rules/base.xml.in.h:656
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:657
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, alternatív fonetikus"
-
-#: ../rules/base.xml.in.h:658
-msgid "Urdu, Phonetic"
-msgstr "Urdu, fonetikus"
-
-#: ../rules/base.xml.in.h:659
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Winkeys"
-
-#: ../rules/base.xml.in.h:660
-msgid "Use Bosnian digraphs"
-msgstr "Bosnyák billentyűkombinációk használata"
-
-#: ../rules/base.xml.in.h:661
-msgid "Use Croatian digraphs"
-msgstr "Horvát billentyűkombinációk használata"
-
-#: ../rules/base.xml.in.h:662
-msgid "Use guillemets for quotes"
-msgstr "»Csúcsos« idézőjelek használata idézetekhez"
-
-#: ../rules/base.xml.in.h:663
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Az alternatív kiosztás megjelenítése a billentyűzet LED-ek használatával"
-
-#: ../rules/base.xml.in.h:664
-msgid "Using space key to input non-breakable space character"
-msgstr "A szóköz billentyű használata nem törhető szóköz bevitelére"
-
-#: ../rules/base.xml.in.h:665
-msgid "Usual space at any level"
-msgstr "Hagyományos szóköz bármely szinten"
-
-#: ../rules/base.xml.in.h:666
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:667
-msgid "Uzbekistan"
-msgstr "Üzbegisztán"
-
-#: ../rules/base.xml.in.h:668
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:669
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:670
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:671
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Wang 724 numerikus billentyűzet unicode bővítésekkel (nyilak és műveleti jelek)"
-
-#: ../rules/base.xml.in.h:672
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Wang 724 numerikus billentyűzet Unicode bővítésekkel (nyilak és műveleti jelek). A műveleti jelek az alapértelmezett szinten"
-
-#: ../rules/base.xml.in.h:673
-msgid "Wang model 724 azerty"
-msgstr "Wang 724-es modell, azerty"
-
-#: ../rules/base.xml.in.h:674
-msgid "Western"
-msgstr "Nyugati"
-
-#: ../rules/base.xml.in.h:675
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:676
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: ../rules/base.xml.in.h:677
-msgid "With &lt;\\|&gt; key"
-msgstr "Az &lt;\\|&gt; billentyűvel"
-
-#: ../rules/base.xml.in.h:678
-msgid "With EuroSign on 5"
-msgstr "Euro jel az 5-ös billentyűn"
-
-#: ../rules/base.xml.in.h:679
-msgid "With guillemets"
-msgstr "»Csúcsos« idézőjelekkel"
-
-#: ../rules/base.xml.in.h:680
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet billentyűzet"
-
-#: ../rules/base.xml.in.h:681
-msgid "Yakut"
-msgstr "Jakut"
-
-#: ../rules/base.xml.in.h:682
-msgid "Yoruba"
-msgstr "Joruba"
-
-#: ../rules/base.xml.in.h:683
-msgid "Z and ZHE swapped"
-msgstr "A Z és a ZHE felcserélve"
-
-#: ../rules/base.xml.in.h:684
-msgid "Zar"
-msgstr "Zar"
-
-#: ../rules/base.xml.in.h:685
-msgid "azerty"
-msgstr "Azerty"
-
-#: ../rules/base.xml.in.h:686
-msgid "azerty/digits"
-msgstr "Azerty/számjegyek"
-
-#: ../rules/base.xml.in.h:687
-msgid "digits"
-msgstr "Számjegyek"
-
-#: ../rules/base.xml.in.h:688
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "elcsúszott pontosvessző és idézőjel (elavult)"
-
-#: ../rules/base.xml.in.h:689
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:690
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:691
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, kibővített visszaper"
-
-#: ../rules/base.xml.in.h:692
-msgid "qwerty/digits"
-msgstr "qwerty/számjegyek"
-
-#: ../rules/base.xml.in.h:693
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr "Ékezetek kombinálása a halott billentyűk helyett"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr "Nemzetközi (AltGr Unicode kombinálással)"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Nemzetközi (AltGr Unicode kombinálással, alternatív)"
+# Hungarian translation of xkeyboard-config
+# Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+#
+# Andras Timar <timar@fsf.hu>, 2004.
+# Szilveszter Farkas <Szilveszter.Farkas@gmail.com>, 2006.
+# Gabor Kelemen <kelemeng@gnome.hu>, 2006, 2007, 2008, 2009, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-12 22:57+0100\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Kisebb/nagyobb&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Kisebb/nagyobb&gt; választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Kisebb/nagyobb&gt; választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol, egy lenyomása feloldja a zárolást"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Hagyományos) Alternatív"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Hagyományos) Alternatív, Sun halott billentyűk"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Hagyományos) Alternatív, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104 gomb kompatibilis"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/vessző/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/vessző/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/pont/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/pont/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/vessző/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/vessző/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/pont/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/pont/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/vessző/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/vessző/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/pont/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/pont/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/vessző/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/vessző/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/pont/Halott billentyűk"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/pont/Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "ATM/telefon stílusú"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Acer noteszgép"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "A standard funkcionalitás hozzáadása a Menü billentyűhöz"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Eszperantó circumflexek hozzáadása"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Pénznem jelek hozzáadása bizonyos billentyűkhöz"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Afganisztán"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "akan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Albánia"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Az Alt és Meta az Alt billentyűkön"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Az Alt a jobb Win billentyűhöz van rendelve, a Super a Menühöz"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Caps Lock"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Szóköz"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Az Alt/Win billentyűk viselkedése"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Alternatív"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Alternatív keleti"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Alternatív fonetikus"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Alternatív nemzetközi"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Alternatív, Sun halott billentyűk"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternatív, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Alternatív, csak latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Bármely Alt billentyű"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Bármely Win billentyű"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Bármely Win billentyű (lenyomva tartva)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Aposztróf (') változat"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apple alumínium billentyűzet (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apple alumínium billentyűzet (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apple alumínium billentyűzet (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apple alumínium billentyűzet PC-billentyűk emulálása (Print, Scroll Lock, Pause, Num Lock)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Apple noteszgép"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Arab"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Örményország"
+
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Asztúri változat középső pontos H és L karakterrel"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Asus noteszgép"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "Bal oldalt, alul"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "Az „A”-tól balra"
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Ausztria"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Azerbajdzsán"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless internet és játék"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Fordított törtvonal"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Banglades"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Baskír"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Fehéroroszország"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Belgium"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Bengáli"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Bengáli probhat"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomikus, Dvorak kiosztás"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomikus, Dvorak kiosztás, csak latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Bhután"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Bibliai héber (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Bosznia és Hercegovina"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "A két Alt billentyű együtt"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "A két Ctrl billentyű együtt"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "A két Shift billentyű együtt"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "A két Shift billentyű együtt váltja a Caps Lockot"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Brazília"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Breton"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Bulgária"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Kambodzsa"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Capewell-Dvorak (Baybayin)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Capewell-Dvorak (Latin)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Capewell-QWERF 2006 (Baybayin)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Capewell-QWERF 2006 (Latin)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (az első kiosztásra), Shift+Caps Lock (az utolsó kiosztásra)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (lenyomva tartva), Alt+Caps Lock végzi az eredeti nagybetűsítési műveletet"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "A Caps Lock Shiftként működik zárolással. A Shift „szünetelteti” a nagybetűsítést"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "A Caps Lock Shiftként működik zárolással. A Shift nem befolyásolja a nagybetűsítést"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "A Caps Lock letiltva"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "A Caps Lock billentyű viselkedése"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "A Caps Lock átváltja a Shiftet, így minden billentyű érintett"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "A Caps Lock átváltja a betűkarakterek normál kis- és nagybetűit"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "A Caps Lock belső nagybetűkre váltást használ. A Shift „szünetelteti” a nagybetűsítést"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "A Caps Lock belső nagybetűkre váltást használ. A Shift nem befolyásolja a nagybetűsítést"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Katalán változat középső pontos L karakterrel"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Cedilla"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (másik lehetőség)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "Kína"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Csuvas"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Csuvas latin"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Klasszikus"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Klasszikus Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Klasszikus, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Colemak (Baybayin)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Colemak (Latin)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access billentyűzet"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet billentyűzet (13 gombos)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet billentyűzet (18 gombos)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet billentyűzet (7 gombos)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq billentyűzet"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "A kombináló (Compose) billentyű helye"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongói Demokratikus Köztársaság"
+
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "A Control az Alt billentyűkhöz, az Alt a Win billentyűkhöz van rendelve"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "A Control a Win billentyűkhöz van rendelve (és a szokásos Ctrl billentyűkhöz)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Krími tatár (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Krími tatár (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Krími tatár (török Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Krími tatár (török F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Krími tatár (török Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Horvátország"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Ctrl billentyű helyzete"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Cirill"
+
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Cirill, »csúcsos« idézőjelekkel"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Cirill, a Z és a ZHE felcserélve"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Csehország"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Halott vessző (´) ékezet"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Halott grave (`) ékezet"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Alapértelmezett számbillentyűk"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell 101-gombos PC"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Inspiron 6xxx/8xxx noteszgép"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Precision M sorozatú noteszgép"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude sorozatú noteszgép"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB multimédia-billentyűzet"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Dánia"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop billentyűzet"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 sorozat"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Dvorak-féle"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Dvorak (Baybayin)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Dvorak (Latin)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (UK központozás)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak alternatív nemzetközi (halott billentyűk nélkül)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak nemzetközi (halott billentyűkkel)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, lengyel idézőjelek az 1 billentyűn"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, lengyel idézőjelek az idézőjel billentyűn"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Keleti"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Extra tipográfiai karakterek engedélyezése"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Angol"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Angol (USA nemzetközi)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Angol (USA Macintosh)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Angol rúpiajellel"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Enter a számbillentyűzeten"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonomikus"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "eszperantó"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Észtország"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Etiópia"
+
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Euro jel a 2-es billentyűn"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Euro jel a 4-es billentyűn"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Euro jel az 5-ös billentyűn"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Euro jel az E billentyűn"
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Kibővített"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Kibővített - Win billentyűk"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Kibővített visszaper"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "F-betűs (F) változat"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Feröer szigetek"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Finnország"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Negyedik szintű billentyű absztrakt elválasztókkal"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Negyedik szintű billentyű vesszővel"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Negyedik szintű billentyű ponttal"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Negyedik szintű billentyű ponttal, latin-9 korlátozás"
+
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Negyedik szintű billentyű momayyez-val"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "Franciaország"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Francia (Francia alternatív)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Francia"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Francia (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Francia (hagyományos)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Francia Dvorak"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Francia, Sun halott billentyűk"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Francia, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO noteszgép"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "ga"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "Általános 101 gombos PC"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "Általános 102 gombos (nemzetközi) PC"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "Általános 104 gombos PC"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "Általános 105 gombos (nemzetközi) PC"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Grúzia"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Grúz"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Grúz AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Német (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Német, Sun halott billentyűk"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Német, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Németország"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Ghána"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Görögország"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Gudzsarati"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Forgás"
+
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking billentyűzet"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking billentyűzet Mac-hez"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "hausza"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x multimédia billentyűzet"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Hexadecimális"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Homofon"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "Htc Dream telefon"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Magyarország"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "A Hyper a Win billentyűkhöz van rendelve"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM helytakarékos"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "ISO Alternate"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Izland"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Halott tilde felvétele"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "Nemzetközi (AltGr halott billentyűkkel)"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "Nemzetközi (halott billentyűkkel)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Irán"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Írország"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Izrael"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Olaszország"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Japán"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Japán (PC-98xx sorozat)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Japán billentyűzet-beállítások"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Kalmük"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kana 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "A Kana zárolásbillentyű zárol"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Kasub"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "kazah orosszal"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Kazahsztán"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Kenya"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Billentyűsorozat az X kiszolgáló kilövéséhez"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Billentyű a harmadik szint választásához"
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Billentyű az ötödik szint választásához"
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "A kiosztást megváltoztató billentyűk"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Kikuju"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Koreai köztársaság"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Kurd, (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurd, arab-latin"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurd, latin Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Kurd, latin Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Kirgizisztán"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Laosz"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Compaq noteszgép (pl. Armada) noteszgép-billentyűzet"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Compaq noteszgép (pl. Presario) Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "eMachines m68xx noteszgép"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Latin-amerikai"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Latin Unicode qwerty"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Latin unicode"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Latin unicode qwerty"
+
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Latin, »csúcsos« idézőjelekkel"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Lettország"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Kiosztás átváltása a szorzás/osztás billentyűn"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Bal Alt"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Bal Alt (lenyomva tartva)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "A bal Alt fel van cserélve a bal Win billentyűvel"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Bal Ctrl"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Bal Ctrl (az első kiosztásra), jobb Ctrl (az utolsó kiosztásra)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Bal Ctrl+Bal Shift"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Bal Shift"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Bal Win"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Bal Win (az első kiosztásra), jobb Win/Menü (az utolsó kiosztásra)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Bal Win (lenyomva tartva)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Bal Win választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Bal Win választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol, egy lenyomása feloldja a zárolást"
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Balkezes"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Balkezes Dvorák"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Örökölt"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Hagyományos Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Hagyományos számbillentyűzet vesszővel"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Hagyományos számbillentyűzet ponttal"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Litvánia"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access billentyűzet"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (másik lehetőség)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (másik lehetőség)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15, extra billentyűk a G15daemon közvetítésével"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech általános billentyűzet"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 billentyűzet"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator billentyűzet"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite billentyűzet"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X vezeték nélküli asztali médiabillentyűzet"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X billentyűzet"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge billentyűzet"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo billentyűzet"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless billentyűzet (modell: Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Alsó szorb"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Alsó szorb (qwertz)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Macedónia"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (Nemzetközi)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Macintosh Old"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, Sun halott billentyűk"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "A Caps Lock használata másik Backspace-ként"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "A Caps Lock használata másik Ctrl-ként"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "A Caps Lock használata másik Esc-ként"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "A Caps Lock használata másik Hyper-ként"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "A Caps Lock használata másik Num Lock-ként"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "A Caps Lock használata másik Super-ként"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Malajalam"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Malajalam lalitha"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Maldív-szigetek"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Málta"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Máltai billentyűzet egyesült államokbeli kiosztással"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Mari"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access billentyűzet"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menü"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "A Meta a bal Win billentyűhöz van rendelve"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "A Meta a Win billentyűkhöz van rendelve"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta a bal Ctrl-en"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, svéd"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office billentyűzet"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft vezeték nélküli multimédia billentyűzet 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Egyéb kompatibilitási beállítások"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Mongólia"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Montenegró"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Marokkó"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Többnyelvű"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Többnyelvű, első rész"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Többnyelvű, második rész"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "NICOLA-F stílusú backspace"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Natív"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Natív az eszperantóhoz"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Natív az USA billentyűzetekhez"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Nepál"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Hollandia"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Új fonetikus"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Nigéria"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Nem törhető szóköz karakter a negyedik szinten"
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Nem törhető szóköz karakter a negyedik szinten, keskeny nem törhető szóköz karakter a hatodik szinten"
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Nem törhető szóköz karakter a negyedik szinten, keskeny nem törhető szóköz karakter a hatodik szinten (a Ctrl+Shift segítségével)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "Nem törhető szóköz karakter a második szinten"
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "Nem törhető szóköz karakter a harmadik szinten"
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Mem törhető szóköz karakter a harmadik szinten és semmi a negyediken"
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Nem törhető szóköz karakter a harmadik szinten, keskeny nem törhető szóköz karakter a negyedik szinten"
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Északi szami"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Északi szami, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Norvégia"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Számbillentyűzet Delete billentyűjének viselkedése"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "A számbillentyűk úgy működjenek, mint Macen"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Számbillentyűzet kiosztásválasztása"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC Pastu"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC déli üzbég"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Okcitán"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Orija"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Oszét"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Oszét, win gombok"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Oszét, hagyományos"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Pakisztán"
+
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Pannon ruszin homofon"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Pastu"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pause"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Perzsa, perzsa számbillentyűzettel"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "Phi"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Fülöp-szigetek"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Fonetikus"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Fonetikus Win gombok"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Lengyelország"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Portugália"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Programozói Dvorak"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (Baybayin)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Jobb Alt"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Jobb Alt (lenyomva tartva)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Jobb Alt választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Jobb Alt választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol, egy lenyomása feloldja a zárolást"
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "A jobb Alt billentyű sohasem választ harmadik szintet"
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Jobb Alt, a Shift+jobb Alt kombináció a Multi_Key"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Jobb Ctrl"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Jobb Ctrl (lenyomva tartva)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Jobb Ctrl használata jobb Alt-ként"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Jobb Ctrl + jobb Shift"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Jobb Shift"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Jobb Win"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Jobb Win (lenyomva tartva)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Jobb Win választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Jobb Win választja az 5. szintet, másik 5. szintet választóval együtt lenyomva zárol, egy lenyomása feloldja a zárolást"
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Jobbkezes"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Jobbkezes Dvorák"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Románia"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Román billentyűzet német betűkkel"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Román billentyűzet német betűkkel, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Rúpia jel a 4-es billentyűn"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Oroszország"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Orosz"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Orosz fonetikus"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Orosz fonetikus Dvorak"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Orosz fonetikus, halott billentyűk tiltása"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "orosz kazahhal"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Pontosvessző a harmadik szinten"
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Szenegál"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Szerbia"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Szerb"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Szerbhorvát"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "A Shift megszakítja a Caps Lockot"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "A Shift nem szakítja meg a Num Lockot, hanem a harmadik szintet választja"
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "A Shift+számbillentyűk úgy működjenek, mint az MS Windowsban"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Shift+Caps Lock"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Egyszerű"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Szindhi"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Szlovákia"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Szlovénia"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Dél-Afrika"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "déli üzbég"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Spanyolország"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "A speciális billentyűket (Ctrl+Alt+&lt;billentyű&gt;) a kiszolgáló kezeli"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Szabványos"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Szabványos (cédille)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Szabványos RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Szabványos RSTU orosz kiosztáson"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Sun halott billentyűk"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power multimédia billentyűzet"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Ctrl és Caps Lock felcserélése"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "ESC és Caps Lock felcserélése"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Svédország"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Svájc"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Szíria"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Szír"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Szír fonetikus"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Tádzsikisztán"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Tamil billentyűzet számjegyekkel"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB írógép"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII írógép"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Tamil Unicode"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Tanzánia"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "tatár"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Thaiföld"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Tibeti"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibeti (ASCII számjegyekkel)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Alternatív Tifinagh"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Alternatív fonetikus Tifinagh"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Kibővített Tifinagh"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Kibővített fonetikus Tifinagh"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Fonetikus Tifinagh"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Tilde (~) változat"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "A Dvorak billentyűzeten megfelelő billentyűre."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "A Qwerty billentyűzeten megfelelő billentyűre."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Mutatóbillentyűk átváltása a Shift + NumLock használatával."
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Hagyományos fonetikus"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access billentyűzet"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Törökország"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Türkmenisztán"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:EU mód)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (106:JP mód)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Írógép"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Írógép, hagyományos"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "UCW kiosztás (csak ékezetes betűk)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "US Dvorak CZ UCW támogatással"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "US billentyűzet bosnyák billentyűkombinációkkal"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "US billentyűzet bosnyák betűkkel"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "US billentyűzet horvát billentyűkombinációkkal"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "US billentyűzet horvát betűkkel"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "US billentyűzet észt betűkkel"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "US billentyűzet olasz betűkkel"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "US billentyűzet litván betűkkel"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "US billentyűzet szlovén betűkkel"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Udmurt"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Ukrajna"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Unicode kiegészítések (nyilak és műveleti jelek)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Unicode kiegészítések (nyilak és műveleti jelek). A műveleti jelek az alapértelmezett szinten"
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "Egyesült Királyság"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, alternatív fonetikus"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Urdu, fonetikus"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Winkeys"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Bosnyák billentyűkombinációk használata"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Horvát billentyűkombinációk használata"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "»Csúcsos« idézőjelek használata idézetekhez"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Az alternatív kiosztás megjelenítése a billentyűzet LED-ek használatával"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "A szóköz billentyű használata nem törhető szóköz bevitelére"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Hagyományos szóköz bármely szinten"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Üzbegisztán"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Wang 724 numerikus billentyűzet unicode bővítésekkel (nyilak és műveleti jelek)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Wang 724 numerikus billentyűzet Unicode bővítésekkel (nyilak és műveleti jelek). A műveleti jelek az alapértelmezett szinten"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang 724-es modell, azerty"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Nyugati"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "Az &lt;\\|&gt; billentyűvel"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "Euro jel az 5-ös billentyűn"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "»Csúcsos« idézőjelekkel"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet billentyűzet"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "Jakut"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Joruba"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "A Z és a ZHE felcserélve"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Nulla szélességű nem egyesítő karakter a második szinten"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Nulla szélességű nem egyesítő karakter a második szinten, nem törhető szóköz karakter a harmadik szinten"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Nulla szélességű nem egyesítő karakter a második szinten, nem törhető szóköz karakter a harmadik szinten, semmi a negyedik szinten"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Nulla szélességű nem egyesítő karakter a második szinten, nem törhető szóköz karakter a harmadik szinten, keskeny nem törhető szóköz karakter a negyedik szinten"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Nulla szélességű nem egyesítő karakter a második szinten, nem törhető szóköz karakter a harmadik szinten, nulla szélességű egyesítő karakter a negyedik szinten"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Nulla szélességű nem egyesítő karakter a második szinten, nulla szélességű egyesítő karakter a harmadik szinten"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Nulla szélességű nem egyesítő karakter a második szinten, nulla szélességű egyesítő karakter a harmadik szinten, nem törhető szóköz karakter a negyedik szinten"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Nulla szélességű nem egyesítő karakter a harmadik szinten, nulla szélességű egyesítő karakter a negyedik szinten"
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "Azerty"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "Azerty/számjegyek"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "Számjegyek"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "elcsúszott pontosvessző és idézőjel (elavult)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, kibővített visszaper"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "qwerty/számjegyek"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avesztán"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Ékezetek kombinálása a halott billentyűk helyett"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Nemzetközi (AltGr Unicode kombinálással)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Nemzetközi (AltGr Unicode kombinálással, alternatív)"
diff --git a/xorg-server/xkeyboard-config/po/id.po b/xorg-server/xkeyboard-config/po/id.po
index 651b0b2cb..f2dff26ec 100644
--- a/xorg-server/xkeyboard-config/po/id.po
+++ b/xorg-server/xkeyboard-config/po/id.po
@@ -1,3204 +1,3228 @@
-# Terjemahan pesan Bahasa Indonesia untuk xkeyboard-config.
-# Copyright (C) 2008 THE xkeyboard-config'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the xkeyboard-config package.
-# Erwid M Jadied <jadied@gmail.com>, 2008.
-# Andhika Padmawan <andhika.padmawan@gmail.com>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config-1.9\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-05-11 21:34+0100\n"
-"PO-Revision-Date: 2010-06-29 23:17+0700\n"
-"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
-"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Indonesian\n"
-"X-Poedit-Country: INDONESIA\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Lebih Kecil/Lebih Besar&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Lebih Kecil/Lebih Besar&gt; pilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Lebih Kecil/Lebih Besar&gt; pilih level kelima, terkunci jika ditekan dengan pemilih-level-kelima lainnya, satu penekanan melepas kunci"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Legacy) Alternative"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Legacy) Alternative, Tombol mati Matahari"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Legacy) Alternative, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "101/104 tombol Kompatibel"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/koma/Tombol mati"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/koma/ Hapuskan tombol mati"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/titik/Tombol mati"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/titik/Hapus tombol mati"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/koma/Tombol mati"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/koma/Hapus tombol mati"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/awertz/titik/Tombol mati"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/titik/hapus tombol mati"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/koma/Tombol mati"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/koma/Hapus tombol mati"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/titik/Tombol mati"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/titik/Hapus tombol mati"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/koma/Tombol mati"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/koma/Hapus tombol mati"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/titik/Tombol mati"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/titik/Hapus tombol mati"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "Gaya ATM/telepon"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Acer Laptop"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Tambah tindakan standar pada tombol Menu"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Menambah circumflex Esperanto (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Menambahkan tanda Euro ke tombol tertentu"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt dan Meta pada tombol Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt dipetakan ke Win Kanan, Super ke Menu"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Space"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Tindakan Tombol Alt/Win "
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternative"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternative Eastern"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternative Phonetik"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternatif internasional"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternative, tombol mati Matahari"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternative, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternative, hanya latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Tombol Alt apapun"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Tombol Win apapun"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Tombol Win apapun (ketika ditekan)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Varian apostrof (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Papan Ketik Aluminium Apple (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Papan Ketik Aluminium (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Papan Ketik Aluminium (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll_Lock, Pause, NumLock)"
-msgstr "Papan Ketik Aluminium Apple: mengemulasi tombol PC (Print, Scroll_Lock, Pause, NumLock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Apple Laptop"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Arab"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Varian Asturian dengan titik di bawah pada H dan L "
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Asus Laptop"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Di kiri bawah"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Di sebelah kiri 'A'"
-
-#: ../rules/base.xml.in.h:80
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:82
-msgid "Azerbaijan"
-msgstr "Ajarbaijan"
-
-#: ../rules/base.xml.in.h:83
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Papan Ketik Internet nirkabel Azona RF2300"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 91116U Internet dan Permainan Nirkabel Mini"
-
-#: ../rules/base.xml.in.h:93
-msgid "Backslash"
-msgstr "Backslash"
-
-#: ../rules/base.xml.in.h:94
-msgid "Bangladesh"
-msgstr "Banglades"
-
-#: ../rules/base.xml.in.h:95
-msgid "Bashkirian"
-msgstr "Bashkirian"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:97
-msgid "Belarus"
-msgstr "Belarus"
-
-#: ../rules/base.xml.in.h:98
-msgid "Belgium"
-msgstr "Belgia"
-
-#: ../rules/base.xml.in.h:99
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:100
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:102
-msgid "Bengali"
-msgstr "Bengali"
-
-#: ../rules/base.xml.in.h:103
-msgid "Bengali Probhat"
-msgstr "Bengali Probhat"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomic, Dvorak way"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomic, Dvorak way, latin-9 only"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#: ../rules/base.xml.in.h:109
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Biblical Hebrew (Tiro)"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:111
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia dan Herzegovina"
-
-#: ../rules/base.xml.in.h:113
-msgid "Both Alt keys together"
-msgstr "Kedua tombol Alt bersama"
-
-#: ../rules/base.xml.in.h:114
-msgid "Both Ctrl keys together"
-msgstr "Kedua tombol Ctrl bersama"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Shift keys together"
-msgstr "Kedua tombol Shift bersama"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Shift-Keys together toggle CapsLock"
-msgstr "Kedua tombol Shift bersama ubah CapsLock"
-
-#: ../rules/base.xml.in.h:117
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:118
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:119
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:120
-msgid "Brazil"
-msgstr "Brasil"
-
-#: ../rules/base.xml.in.h:121
-msgid "Breton"
-msgstr "Breton"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:123
-msgid "Brother Internet Keyboard"
-msgstr "Papan Ketik Internet Brother"
-
-#: ../rules/base.xml.in.h:124
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:125
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:126
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:127
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:128
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:129
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:130
-msgid "Cambodia"
-msgstr "Kamboja"
-
-#: ../rules/base.xml.in.h:131
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:132
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:133
-msgid "CapsLock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:134
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr "CapsLock (ke tata letak pertama), Shift+CapsLock (ke tata letak terakhir)"
-
-#: ../rules/base.xml.in.h:135
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr "CapsLock (ketika ditekan), Alt+CapsLock melakukan aksi capslock asli"
-
-#: ../rules/base.xml.in.h:136
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr "CapsLock bertindak sebagai Shift dengan mengunci. Shift \"jeda\" CapsLock."
-
-#: ../rules/base.xml.in.h:137
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "CapsLock bertindak sebagai Shift yang terkunci. Shift tidak mempengaruhi CapsLock"
-
-#: ../rules/base.xml.in.h:138
-msgid "CapsLock is disabled"
-msgstr "CapsLock dinonaktifkan"
-
-#: ../rules/base.xml.in.h:139
-msgid "CapsLock key behavior"
-msgstr "Tindakan tombol CapsLock"
-
-#: ../rules/base.xml.in.h:140
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr "CapsLock toggle Shift sehingga semua tombol terpengaruh"
-
-#: ../rules/base.xml.in.h:141
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr "CapsLock toggle huruf besar normal atau karakter secara alfabet"
-
-#: ../rules/base.xml.in.h:142
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "CapsLock menggunakan huruf besar internal. Shift \"pauses\" CapsLock"
-
-#: ../rules/base.xml.in.h:143
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "CapsLock menggunakan huruf besar internal. Shift tidak mempengaruhi CapsLock"
-
-#: ../rules/base.xml.in.h:144
-msgid "Catalan variant with middle-dot L"
-msgstr "Varian Katalan dengan titik-tengah pada L"
-
-#: ../rules/base.xml.in.h:145
-msgid "Cedilla"
-msgstr "Cedilla"
-
-#: ../rules/base.xml.in.h:146
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:148
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternate option)"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:155
-msgid "Chicony Internet Keyboard"
-msgstr "Papan Ketik Internet Chicony"
-
-#: ../rules/base.xml.in.h:156
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:159
-msgid "China"
-msgstr "China"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:161
-msgid "Chuvash"
-msgstr "Chuvash"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chuvash Latin"
-msgstr "Chuvash Latin"
-
-#: ../rules/base.xml.in.h:163
-msgid "Classic"
-msgstr "Classic"
-
-#: ../rules/base.xml.in.h:164
-msgid "Classic Dvorak"
-msgstr "Classic Dvorak"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic, eliminate dead keys"
-msgstr "Klasik, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:167
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:168
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:169
-msgid "Compaq Easy Access Keyboard"
-msgstr "Papan Ketik Akses Mudah Compaq"
-
-#: ../rules/base.xml.in.h:170
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Papan Ketik Internet Compaq (13 tombol)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Papan Ketik Internet Compaq (18 tombol)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Papan Ketik Internet Compaq (7 tombol)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq iPaq Keyboard"
-msgstr "Papan Ketik Compaq iPaq"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compose key position"
-msgstr "Posisi tombol Compose"
-
-#: ../rules/base.xml.in.h:175
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Republik Demokrat"
-
-#: ../rules/base.xml.in.h:176
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:177
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Kendali dipetakan ke tombol Alt, Alt dipetakan ke tombol Win"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Kendali dipetakan ke tombol Win ( dan tombol Ctrl biasa)"
-
-#: ../rules/base.xml.in.h:179
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:180
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Crimean Tatar (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Crimean Tatar (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Crimean Tatar (Turkish Alt-Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Crimean Tatar (Turkish F)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Crimean Tatar (Turkish Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Croatia"
-msgstr "Kroasia"
-
-#: ../rules/base.xml.in.h:186
-msgid "Ctrl key position"
-msgstr "Posisi tombol Ctrl"
-
-#: ../rules/base.xml.in.h:187
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:188
-msgid "Cyrillic"
-msgstr "Cyrillic"
-
-#: ../rules/base.xml.in.h:189
-msgid "Cyrillic with guillemets"
-msgstr "Cyrillic dengan guillemets"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Cyrillic, Z dan ZHE di-swap"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:192
-msgid "Czechia"
-msgstr "Czechia"
-
-#: ../rules/base.xml.in.h:193
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:194
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dead acute"
-msgstr "Dead acute"
-
-#: ../rules/base.xml.in.h:196
-msgid "Dead grave acute"
-msgstr "Dead grave acute"
-
-#: ../rules/base.xml.in.h:197
-msgid "Default numeric keypad keys"
-msgstr "Tombol angka keypad standar"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:199
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Laptop/notebook Precision M series"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude series laptop"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Papan Ketik Multimedia USB Dell"
-
-#: ../rules/base.xml.in.h:207
-msgid "Denmark"
-msgstr "Denmark"
-
-#: ../rules/base.xml.in.h:208
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:209
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Papan Ketik Desktop Nirkabel Dexxa"
-
-#: ../rules/base.xml.in.h:210
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:212
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (UK Punctuation)"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvorak alternatif Internasional (tanpa tombol mati)"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak internasional (dengan tombol mati)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, tanda kutip Polandia pada tombol 1"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, tanda kutip Polandia pada tombol quotemark"
-
-#: ../rules/base.xml.in.h:218
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:219
-msgid "Eastern"
-msgstr "Eastern"
-
-#: ../rules/base.xml.in.h:220
-msgid "Eliminate dead keys"
-msgstr "Hapus tombol mati"
-
-#: ../rules/base.xml.in.h:221
-msgid "Enable extra typographic characters"
-msgstr "Aktifkan karakter tipografi ekstra"
-
-#: ../rules/base.xml.in.h:222
-msgid "English"
-msgstr "Inggris"
-
-#: ../rules/base.xml.in.h:223
-msgid "English (USA International)"
-msgstr "Inggris (Internasional USA)"
-
-#: ../rules/base.xml.in.h:224
-msgid "English (USA Macintosh)"
-msgstr "Inggris (Macintosh USA)"
-
-#: ../rules/base.xml.in.h:225
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:226
-msgid "Enter on keypad"
-msgstr "Enter pada keypad"
-
-#: ../rules/base.xml.in.h:227
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:228
-msgid "Ergonomic"
-msgstr "Ergonomic"
-
-#: ../rules/base.xml.in.h:229
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:230
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:231
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:232
-msgid "Estonia"
-msgstr "Estonia"
-
-#: ../rules/base.xml.in.h:233
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:234
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#: ../rules/base.xml.in.h:235
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:237
-msgid "Extended"
-msgstr "Extended"
-
-#: ../rules/base.xml.in.h:238
-msgid "Extended - Winkeys"
-msgstr "Extended - Winkeys"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended Backslash"
-msgstr "Extended Backslash"
-
-#: ../rules/base.xml.in.h:240
-msgid "F-letter (F) variant"
-msgstr "varian huruf-F (F)"
-
-#: ../rules/base.xml.in.h:241
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:242
-msgid "Faroe Islands"
-msgstr "kepulauan Farao"
-
-#: ../rules/base.xml.in.h:243
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:244
-msgid "Finland"
-msgstr "Finlandia"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:247
-msgid "Four-level key with abstract separators"
-msgstr "Tombol empat-level dengan pemisah abstrak"
-
-#: ../rules/base.xml.in.h:248
-msgid "Four-level key with comma"
-msgstr "Tombol empat-level dengan koma"
-
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with dot"
-msgstr "Tombol empat-level dengan titik"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Tombol empat-level dengan titik, pembatasan latin-9"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with momayyez"
-msgstr "Tombol empat level dengan momayyez"
-
-#: ../rules/base.xml.in.h:252
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:253
-msgid "France"
-msgstr "Perancis"
-
-#: ../rules/base.xml.in.h:254
-msgid "Français (France Alternative)"
-msgstr "Perancis (Alternatif Perancis)"
-
-#: ../rules/base.xml.in.h:255
-msgid "French"
-msgstr "Perancis"
-
-#: ../rules/base.xml.in.h:256
-msgid "French (Macintosh)"
-msgstr "French (Macintosh)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French (legacy)"
-msgstr "French (legacy)"
-
-#: ../rules/base.xml.in.h:258
-msgid "French Dvorak"
-msgstr "French Dvorak"
-
-#: ../rules/base.xml.in.h:259
-msgid "French, Sun dead keys"
-msgstr "Frence, Tombol mati Matahari"
-
-#: ../rules/base.xml.in.h:260
-msgid "French, eliminate dead keys"
-msgstr "French, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:261
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:262
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO laptop"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:264
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:265
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:266
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:267
-msgid "Generic 101-key PC"
-msgstr "Generic 101-key PC"
-
-#: ../rules/base.xml.in.h:268
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generic 102-key (Intl) PC"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 104-key PC"
-msgstr "Generic 104-key PC"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generic 105-key (Intl) PC"
-
-#: ../rules/base.xml.in.h:271
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:272
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:276
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:277
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:278
-msgid "Georgian"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgian AZERTY Tskapo"
-msgstr "Georgian AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:280
-msgid "German (Macintosh)"
-msgstr "German (Macintosh)"
-
-#: ../rules/base.xml.in.h:281
-msgid "German, Sun dead keys"
-msgstr "German, Tombol mati Matahari"
-
-#: ../rules/base.xml.in.h:282
-msgid "German, eliminate dead keys"
-msgstr "German, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:283
-msgid "Germany"
-msgstr "Jerman"
-
-#: ../rules/base.xml.in.h:284
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:285
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:287
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:288
-msgid "Greece"
-msgstr "Yunani"
-
-#: ../rules/base.xml.in.h:289
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:290
-msgid "Gujarati"
-msgstr "Gujurati"
-
-#: ../rules/base.xml.in.h:291
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:294
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Keyboard"
-
-#: ../rules/base.xml.in.h:295
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking Keyboard untuk Mac"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hausa"
-msgstr "Hausa"
-
-#: ../rules/base.xml.in.h:297
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Papan Ketik Internet Hewlett-Packard"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Papan Ketik Multimedia Hewlett-Packard SK-2501"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hexadecimal"
-msgstr "Heksadesimal"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:312
-msgid "Homophonic"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:314
-msgid "Hrv"
-msgstr "Hvr"
-
-#: ../rules/base.xml.in.h:315
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hungary"
-msgstr "Hungaria"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hiper dipetakan ke tombol Win"
-
-#: ../rules/base.xml.in.h:318
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:319
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:325
-msgid "ISO Alternate"
-msgstr "ISO Alternate"
-
-#: ../rules/base.xml.in.h:326
-msgid "Iceland"
-msgstr "Islandia"
-
-#: ../rules/base.xml.in.h:327
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:328
-msgid "Include dead tilde"
-msgstr "Termasuk tilde mati"
-
-#: ../rules/base.xml.in.h:329
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:330
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:331
-msgid "International (AltGr dead keys)"
-msgstr "Internasional (AltGr tombol mati)"
-
-#: ../rules/base.xml.in.h:332
-msgid "International (with dead keys)"
-msgstr "Internasional (dengan tombol mati)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:334
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:335
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:336
-msgid "Ireland"
-msgstr "Irlandia"
-
-#: ../rules/base.xml.in.h:337
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:338
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:340
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:341
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:342
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:343
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:344
-msgid "Italy"
-msgstr "Italia"
-
-#: ../rules/base.xml.in.h:345
-msgid "Japan"
-msgstr "Jepang"
-
-#: ../rules/base.xml.in.h:346
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japanese keyboard options"
-msgstr "Pilihan papan ketik Jepang"
-
-#: ../rules/base.xml.in.h:348
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:349
-msgid "Kalmyk"
-msgstr "Kalmyk"
-
-#: ../rules/base.xml.in.h:350
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kana Lock key is locking"
-msgstr "Tombol Kana Lock terkunci"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kashubian"
-msgstr "Kashubian"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kazakh with Russian"
-msgstr "Kazakh dengan Rusia"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#: ../rules/base.xml.in.h:357
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kenya"
-msgstr "Kenya"
-
-#: ../rules/base.xml.in.h:359
-msgid "Key sequence to kill the X server"
-msgstr "Sekuensi kunci untuk mematikan server X"
-
-#: ../rules/base.xml.in.h:360
-msgid "Key to choose 3rd level"
-msgstr "Tekan Menu Kiri untuk memilih level 3"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key to choose 5th level"
-msgstr "Tombol untuk memilih level kelima"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key(s) to change layout"
-msgstr "Tombol untuk mengubah tata letak"
-
-#: ../rules/base.xml.in.h:363
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:365
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kikuyu"
-msgstr "Kikuyu"
-
-#: ../rules/base.xml.in.h:367
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:369
-msgid "Korea, Republic of"
-msgstr "Republik Korea"
-
-#: ../rules/base.xml.in.h:370
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kurdish, (F)"
-msgstr "Kurdish, (F)"
-
-#: ../rules/base.xml.in.h:372
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdish, Arabic-Latin"
-
-#: ../rules/base.xml.in.h:373
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdish, Latin Alt-Q"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, Latin Q"
-msgstr "Kurdish, Latin Q"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#: ../rules/base.xml.in.h:376
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:377
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:378
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:379
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:380
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:381
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:382
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:384
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:385
-msgid "Latin American"
-msgstr "Latin Amerika"
-
-#: ../rules/base.xml.in.h:386
-msgid "Latin Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin Unicode qwerty"
-msgstr "Latin Unicode qwerty"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin unicode"
-msgstr "Latin unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin unicode qwerty"
-msgstr "Latin unicode qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin with guillemets"
-msgstr "Latin dengan guillemets"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latvia"
-msgstr "Latvia"
-
-#: ../rules/base.xml.in.h:393
-msgid "Layout toggle on multiply/divide key"
-msgstr "Ubah tata letak pada tombol perkalian/pembagian"
-
-#: ../rules/base.xml.in.h:394
-msgid "Left Alt"
-msgstr "Alt Kiri"
-
-#: ../rules/base.xml.in.h:395
-msgid "Left Alt (while pressed)"
-msgstr "Alt Kiri (ketika ditekan)"
-
-#: ../rules/base.xml.in.h:396
-msgid "Left Alt is swapped with Left Win"
-msgstr "Alt Kiri ditukar dengan Win Kiri"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Ctrl"
-msgstr "Ctrl Kiri"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Ctrl Kiri (ke tata letak pertama), Ctrl Kanan (ke tata letak terakhir)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Ctrl+Left Shift"
-msgstr "Ctrl Kiri+Shift Kiri"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Shift"
-msgstr "Shift Kiri"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Win"
-msgstr "Win Kiri"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Win Kiri (ke tata letak pertama), Win/Menu Kanan (ke tata letak terakhir)"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Win (while pressed)"
-msgstr "Win Kiri (ketika ditekan)"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win kiri memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win kiri memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima, satu penekanan melepas kunci"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left hand"
-msgstr "Kidal"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left handed Dvorak"
-msgstr "Left handed Dvorak"
-
-#: ../rules/base.xml.in.h:408
-msgid "Legacy"
-msgstr "Legacy"
-
-#: ../rules/base.xml.in.h:409
-msgid "Legacy Wang 724"
-msgstr "Legacy Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:411
-msgid "Legacy key with comma"
-msgstr "Tombol Legacy dengan koma"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy key with dot"
-msgstr "Tombol Legacy dengan titik"
-
-#: ../rules/base.xml.in.h:413
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#: ../rules/base.xml.in.h:414
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (pilihan alternatif)"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (opsi alternatif 2)"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra keys via G15daemon"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Generic Keyboard"
-msgstr "Papan Ketik Generik Logitech"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Papan Ketik Logitech Internet 350"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech Internet Keyboard"
-msgstr "Papan Ketik Internet Logitech"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Papan Ketik Navigator Internet Logitech"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Media Elite Keyboard"
-msgstr "Papan Ketik Logitech Media Elite"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Papan Ketik Logitech Ultra-X Cordless Media Desktop"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Papan Ketik Logitech Ultra-X"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Papan Ketik Logitech diNovo Edge"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech diNovo Keyboard"
-msgstr "Papan Ketik Logitech diNovo"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:439
-msgid "Lower Sorbian"
-msgstr "Lower Sorbian"
-
-#: ../rules/base.xml.in.h:440
-msgid "Lower Sorbian (qwertz)"
-msgstr "Lower Sorbian (qwertz)"
-
-#: ../rules/base.xml.in.h:441
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:443
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:444
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:445
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:446
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:447
-msgid "Macedonia"
-msgstr "Masedonia"
-
-#: ../rules/base.xml.in.h:448
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:449
-msgid "Macintosh Old"
-msgstr "Macintosh Old"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macintosh, Sun dead keys"
-msgstr "Machintosh, tombol mati Matahari"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh, eliminate dead keys"
-msgstr "Machintosh, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:452
-msgid "Make CapsLock an additional Backspace"
-msgstr "Buat CapsLock sebagai tambahan Backspace"
-
-#: ../rules/base.xml.in.h:453
-msgid "Make CapsLock an additional Ctrl"
-msgstr "Buat CapsLock sebagai tambahan Ctrl"
-
-#: ../rules/base.xml.in.h:454
-msgid "Make CapsLock an additional ESC"
-msgstr "Buat CapsLock sebagai tambahan ESC"
-
-#: ../rules/base.xml.in.h:455
-msgid "Make CapsLock an additional Hyper"
-msgstr "Buat CapsLock sebagai tambahan Hiper"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make CapsLock an additional NumLock"
-msgstr "Buat CapsLock sebagai tambahan NumLock"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make CapsLock an additional Super"
-msgstr "Buat CapsLock sebagai tambahan Super"
-
-#: ../rules/base.xml.in.h:458
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:459
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha"
-
-#: ../rules/base.xml.in.h:460
-msgid "Maldives"
-msgstr "Maldives"
-
-#: ../rules/base.xml.in.h:461
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:463
-msgid "Maltese keyboard with US layout"
-msgstr "Papan ketik Maltase dengan Layout US"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:465
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:467
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:468
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Papan Ketik Memorex MX2500 EZ-Access"
-
-#: ../rules/base.xml.in.h:469
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:470
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:471
-msgid "Meta is mapped to Left Win"
-msgstr "Meta dipetakan ke tombol Win Kiri"
-
-#: ../rules/base.xml.in.h:472
-msgid "Meta is mapped to Win keys"
-msgstr "Meta dipetakan ke tombol Win"
-
-#: ../rules/base.xml.in.h:473
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:474
-msgid "Microsoft Internet Keyboard"
-msgstr "Papan Ketik Internet Microsoft"
-
-#: ../rules/base.xml.in.h:475
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Swedia"
-
-#: ../rules/base.xml.in.h:476
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Office Keyboard"
-msgstr "Papan Ketik Microsoft Office"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:484
-msgid "Miscellaneous compatibility options"
-msgstr "Pilihan kompabilitas lain-lain"
-
-#: ../rules/base.xml.in.h:485
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:486
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:487
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:488
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#: ../rules/base.xml.in.h:491
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#: ../rules/base.xml.in.h:492
-msgid "Morocco"
-msgstr "Maroko"
-
-#: ../rules/base.xml.in.h:493
-msgid "Multilingual"
-msgstr "Multilingual"
-
-#: ../rules/base.xml.in.h:494
-msgid "Multilingual, first part"
-msgstr "Multilingual, bagian pertama"
-
-#: ../rules/base.xml.in.h:495
-msgid "Multilingual, second part"
-msgstr "Multilingual, bagian kedua"
-
-#: ../rules/base.xml.in.h:496
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:497
-msgid "NICOLA-F style Backspace"
-msgstr "NICOLA-F style Backspace"
-
-#: ../rules/base.xml.in.h:498
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:499
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:500
-msgid "Nativo for Esperanto"
-msgstr "Nativo untuk Esperanto"
-
-#: ../rules/base.xml.in.h:501
-msgid "Nativo for USA keyboards"
-msgstr "Nativo untuk papan ketik USA"
-
-#: ../rules/base.xml.in.h:502
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:504
-msgid "Netherlands"
-msgstr "Belanda"
-
-#: ../rules/base.xml.in.h:505
-msgid "New phonetic"
-msgstr "Fonetik baru"
-
-#: ../rules/base.xml.in.h:506
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nigeria"
-msgstr "Negeria"
-
-#: ../rules/base.xml.in.h:508
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:509
-msgid "Non-breakable space character at fourth level"
-msgstr "Karakter spasi yang tidak pecah pada level 4"
-
-#: ../rules/base.xml.in.h:510
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Karakter spasi yang tidak pecah pada level 4, karakter spasi yang tidak pecah dan tipis pada level 6"
-
-#: ../rules/base.xml.in.h:511
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Karakter spasi yang tidak pecah pada level 4, karakter spasi yang tidak pecah dan tipis pada level 6 (via Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:512
-msgid "Non-breakable space character at second level"
-msgstr "Karakter spasi yang tidak pecah pada level 2"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at third level"
-msgstr "Karakter spasi yang tidak pecah pada level 3"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Karakter spasi yang tidak pecah pada level 3, tidak ada pada level 4"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Karakter spasi yang tidak pecah pada level 3, karakter spasi yang tidak pecah dan tipis pada level 4"
-
-#: ../rules/base.xml.in.h:516
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:517
-msgid "Northern Saami"
-msgstr "Northern Saami"
-
-#: ../rules/base.xml.in.h:518
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Northern Saami, hapus tombo mati"
-
-#: ../rules/base.xml.in.h:519
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:520
-msgid "Norway"
-msgstr "Norwegia"
-
-#: ../rules/base.xml.in.h:521
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:522
-msgid "NumLock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:523
-msgid "Numeric keypad delete key behaviour"
-msgstr "Keypad numerik menghapus perilaku tombol"
-
-#: ../rules/base.xml.in.h:524
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Keypad numerik bekerja seperti dengan Mac"
-
-#: ../rules/base.xml.in.h:525
-msgid "Numeric keypad layout selection"
-msgstr "Pilihan layout Keypad numerik "
-
-#: ../rules/base.xml.in.h:526
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:527
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:528
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:529
-msgid "OLPC Pashto"
-msgstr "OLPC Pashto"
-
-#: ../rules/base.xml.in.h:530
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC Southern Uzbek"
-
-#: ../rules/base.xml.in.h:531
-msgid "Occitan"
-msgstr "Occitan"
-
-#: ../rules/base.xml.in.h:532
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:533
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:534
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ossetian"
-msgstr "Ossetian"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ossetian, Winkeys"
-msgstr "Ossetian, Tombol Win"
-
-#: ../rules/base.xml.in.h:538
-msgid "Ossetian, legacy"
-msgstr "Ossetian, legacy"
-
-#: ../rules/base.xml.in.h:539
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:540
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:541
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:542
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Homofon Pannonian Rusyn"
-
-#: ../rules/base.xml.in.h:543
-msgid "Pashto"
-msgstr "Pashto"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pause"
-msgstr "Pause"
-
-#: ../rules/base.xml.in.h:546
-msgid "Persian, with Persian Keypad"
-msgstr "Persia, dengan papan ketik Persia"
-
-#: ../rules/base.xml.in.h:547
-msgid "Phonetic"
-msgstr "Phonetic"
-
-#: ../rules/base.xml.in.h:548
-msgid "Phonetic Winkeys"
-msgstr "Phonetic Winkeys"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:550
-msgid "Poland"
-msgstr "Polandia"
-
-#: ../rules/base.xml.in.h:551
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: ../rules/base.xml.in.h:552
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:553
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:554
-msgid "Programmer Dvorak"
-msgstr "Programmer Dvorak"
-
-#: ../rules/base.xml.in.h:555
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:556
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:557
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:558
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:559
-msgid "Right Alt"
-msgstr "Alt Kanan"
-
-#: ../rules/base.xml.in.h:560
-msgid "Right Alt (while pressed)"
-msgstr "Alt Kanan (ketika ditekan)"
-
-#: ../rules/base.xml.in.h:561
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Alt kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya"
-
-#: ../rules/base.xml.in.h:562
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Alt kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya, satu penekanan melepas kunci"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Alt Kanan tidak pernah memilih level 3"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Alt Kanan, Shift+Right Alt adalah Multi_Key"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Ctrl"
-msgstr "Ctrl Kanan"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Ctrl (while pressed)"
-msgstr "Ctrl Kanan (ketika ditekan)"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Ctrl as Right Alt"
-msgstr "Ctrl Kanan bertindak seperti Alt Kanan"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Ctrl+Right Shift"
-msgstr "Ctrl Kanan+Shift Kanan"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Shift"
-msgstr "Shift Kanan"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Win"
-msgstr "Win Kanan"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Win (while pressed)"
-msgstr "Win Kanan (ketika ditekan)"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima, satu penekanan melepas kunci"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right hand"
-msgstr "Tangan Kanan"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right handed Dvorak"
-msgstr "Right handed Dvorak"
-
-#: ../rules/base.xml.in.h:576
-msgid "Romania"
-msgstr "Rumania"
-
-#: ../rules/base.xml.in.h:577
-msgid "Romanian keyboard with German letters"
-msgstr "Papan ketik Rumania dengan huruf Jerman"
-
-#: ../rules/base.xml.in.h:578
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Papan ketik Rumania dengan huruf Jerman, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:579
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:580
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:581
-msgid "Russia"
-msgstr "Rusia"
-
-#: ../rules/base.xml.in.h:582
-msgid "Russian"
-msgstr "Rusia"
-
-#: ../rules/base.xml.in.h:583
-msgid "Russian phonetic"
-msgstr "Russian phonetic"
-
-#: ../rules/base.xml.in.h:584
-msgid "Russian phonetic Dvorak"
-msgstr "Russian phonetic Dvorak"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Russian phonetic, hapus tombol mati"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian with Kazakh"
-msgstr "Rusia dengan Kazakh"
-
-#: ../rules/base.xml.in.h:587
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "Papan Ketik SILVERCREST Multimedia Wireless"
-
-#: ../rules/base.xml.in.h:588
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:589
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:590
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:591
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:592 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:593
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:595
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:596
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:597
-msgid "ScrollLock"
-msgstr "ScrollLock"
-
-#: ../rules/base.xml.in.h:598
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:599
-msgid "Semi-colon on third level"
-msgstr "Semi-kolon pada level ketiga"
-
-#: ../rules/base.xml.in.h:600
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:601
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:602 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "Serbia"
-
-#: ../rules/base.xml.in.h:603
-msgid "Serbian"
-msgstr "Serbia"
-
-#: ../rules/base.xml.in.h:604
-msgid "Shift cancels CapsLock"
-msgstr "Shift membatalkan CapsLock"
-
-#: ../rules/base.xml.in.h:605
-msgid "Shift does not cancel NumLock, chooses 3rd level instead"
-msgstr "Shift tidak membatalkan NumLock, lebih memilih level ketiga"
-
-#: ../rules/base.xml.in.h:606
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shit dengan keypad numerik bekerja sesuai pada MS Windows"
-
-#: ../rules/base.xml.in.h:607
-msgid "Shift+CapsLock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:608
-msgid "Simple"
-msgstr "Sederhana"
-
-#: ../rules/base.xml.in.h:609
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#: ../rules/base.xml.in.h:610
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#: ../rules/base.xml.in.h:611
-msgid "South Africa"
-msgstr "Afrika Selatan"
-
-#: ../rules/base.xml.in.h:612
-msgid "Southern Uzbek"
-msgstr "Uzbek Selatan"
-
-#: ../rules/base.xml.in.h:613
-msgid "Spain"
-msgstr "Spanyol"
-
-#: ../rules/base.xml.in.h:614
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Tombol spesial (Ctrl+Alt+&lt;key&gt;) ditangani pada server"
-
-#: ../rules/base.xml.in.h:615
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:616
-msgid "Standard"
-msgstr "Standard"
-
-#: ../rules/base.xml.in.h:617
-msgid "Standard (Cedilla)"
-msgstr "Standard (Cedilla)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:619
-msgid "Standard RSTU"
-msgstr "Standard RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:621
-msgid "Standard RSTU on Russian layout"
-msgstr "Standard RSTU pada layout Rusia"
-
-#: ../rules/base.xml.in.h:622
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:623
-msgid "Sun dead keys"
-msgstr "Tombol mati Matahari"
-
-#: ../rules/base.xml.in.h:624
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:625
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:626
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:627
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:628
-msgid "Swap Ctrl and CapsLock"
-msgstr "Tukar Ctrl dan CapsLock"
-
-#: ../rules/base.xml.in.h:629
-msgid "Swap ESC and CapsLock"
-msgstr "Tujar ESC dan CapsLock"
-
-#: ../rules/base.xml.in.h:630
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:631
-msgid "Sweden"
-msgstr "Swedia"
-
-#: ../rules/base.xml.in.h:632
-msgid "Switzerland"
-msgstr "Switzerland"
-
-#: ../rules/base.xml.in.h:633
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:634
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:635
-msgid "Syria"
-msgstr "Syria"
-
-#: ../rules/base.xml.in.h:636
-msgid "Syriac"
-msgstr "Syriac"
-
-#: ../rules/base.xml.in.h:637
-msgid "Syriac phonetic"
-msgstr "Syriac phonetic"
-
-#: ../rules/base.xml.in.h:638
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:639
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#: ../rules/base.xml.in.h:640
-msgid "Tamil"
-msgstr "Tamil"
-
-#: ../rules/base.xml.in.h:641
-msgid "Tamil Keyboard with Numerals"
-msgstr "Papan ketik Tamil dengan Angka"
-
-#: ../rules/base.xml.in.h:642
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB Typewriter"
-
-#: ../rules/base.xml.in.h:643
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII Typewriter"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tamil Unicode"
-msgstr "Tamil Unicode"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tanzania"
-msgstr "Tanzania"
-
-#: ../rules/base.xml.in.h:646
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tatar"
-msgstr "Tatar"
-
-#: ../rules/base.xml.in.h:648
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:650
-msgid "Thailand"
-msgstr "Thailand"
-
-#: ../rules/base.xml.in.h:651
-msgid "Tibetan"
-msgstr "Tibetan"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetan (with ASCII numerals)"
-
-#: ../rules/base.xml.in.h:653
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh Alternative"
-
-#: ../rules/base.xml.in.h:655
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh Alternative Phonetic"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tifinagh Extended"
-msgstr "Tifinagh Extended"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh Alternative Phonetic"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh Phonetic"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tilde (~) variant"
-msgstr "Varian tilde (~)"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:662
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Ke tombol dalam papan ketik Dvorak."
-
-#: ../rules/base.xml.in.h:663
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Ke tombol dalam papan ketik Qwerty."
-
-#: ../rules/base.xml.in.h:664
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:665
-msgid "Traditional phonetic"
-msgstr "Traditional phonetic"
-
-#: ../rules/base.xml.in.h:666
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:667
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:668
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:669
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:670
-msgid "Turkey"
-msgstr "Turki"
-
-#: ../rules/base.xml.in.h:671
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#: ../rules/base.xml.in.h:672
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:673
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:674
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:675
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (mode 102/105:EU)"
-
-#: ../rules/base.xml.in.h:676
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (mode 106:JP)"
-
-#: ../rules/base.xml.in.h:677
-msgid "Typewriter"
-msgstr "Typewriter"
-
-#: ../rules/base.xml.in.h:678
-msgid "Typewriter, legacy"
-msgstr "Typewriter, warisan"
-
-#: ../rules/base.xml.in.h:679
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:680
-msgid "UCW layout (accented letters only)"
-msgstr "UCW layout (accented letters only)"
-
-#: ../rules/base.xml.in.h:681
-msgid "US Dvorak with CZ UCW support"
-msgstr "US Dvorak dengan dukungan CZ UCW"
-
-#: ../rules/base.xml.in.h:682
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Papan ketik Amerika dengan Bosnia digraphs"
-
-#: ../rules/base.xml.in.h:683
-msgid "US keyboard with Bosnian letters"
-msgstr "Papan ketik Amerika dengan huruf Bosnia"
-
-#: ../rules/base.xml.in.h:684
-msgid "US keyboard with Croatian digraphs"
-msgstr "Papan ketik Amerika dengan Kroasia digraphs"
-
-#: ../rules/base.xml.in.h:685
-msgid "US keyboard with Croatian letters"
-msgstr "Papan ketik Amerika dengan huruf Kroasia"
-
-#: ../rules/base.xml.in.h:686
-msgid "US keyboard with Estonian letters"
-msgstr "Papan ketik Amerika dengan huruf Estonia"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Italian letters"
-msgstr "Papan ketik Amerika dengan huruf Italia"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Lithuanian letters"
-msgstr "Papan ketik Amerika dengan huruf Lituania"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Slovenian letters"
-msgstr "Papan ketik Amerika dengan huruf Slovenia"
-
-#: ../rules/base.xml.in.h:690 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:691
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: ../rules/base.xml.in.h:692
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:693
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#: ../rules/base.xml.in.h:694
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Tambahan unicode (panah dan operator matematika)"
-
-#: ../rules/base.xml.in.h:695
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Tambahan unicode (panah dan operator matematika). Operator matematika pada level standar"
-
-#: ../rules/base.xml.in.h:696
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:697
-msgid "United Kingdom"
-msgstr "Inggris Raya"
-
-#: ../rules/base.xml.in.h:698
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:699
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, Fonetik alternatif"
-
-#: ../rules/base.xml.in.h:700
-msgid "Urdu, Phonetic"
-msgstr "Urdu, Fonetik"
-
-#: ../rules/base.xml.in.h:701
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Tombol Win"
-
-#: ../rules/base.xml.in.h:702
-msgid "Use Bosnian digraphs"
-msgstr "Gunakan diagraph Bosnia"
-
-#: ../rules/base.xml.in.h:703
-msgid "Use Croatian digraphs"
-msgstr "Gunakan diagraph Kroasia"
-
-#: ../rules/base.xml.in.h:704
-msgid "Use guillemets for quotes"
-msgstr "Gunakan guillemets untuk tanda petik"
-
-#: ../rules/base.xml.in.h:705
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Gunakan papan ketik LED untuk menunjukkan layout alternatif"
-
-#: ../rules/base.xml.in.h:706
-msgid "Using space key to input non-breakable space character"
-msgstr "Menggunakan spasi untuk input karakter spasi yang tidak pecah"
-
-#: ../rules/base.xml.in.h:707
-msgid "Usual space at any level"
-msgstr "Tombol spasi biasa pada semua level"
-
-#: ../rules/base.xml.in.h:708
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:709
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#: ../rules/base.xml.in.h:710
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:711
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "Papan Ketik Internet ViewSonic KU-306"
-
-#: ../rules/base.xml.in.h:712
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:713
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Wang 724 keypad dengan tambahan unicode (panah and operator matematika). "
-
-#: ../rules/base.xml.in.h:714
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Wang 724 keypad dengan tambahan unicode (panah and operator matematika). Operator matematika pada level standar"
-
-#: ../rules/base.xml.in.h:715
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:716
-msgid "Western"
-msgstr "Western"
-
-#: ../rules/base.xml.in.h:717
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:718
-msgid "Winkeys"
-msgstr "Tombol Win"
-
-#: ../rules/base.xml.in.h:719
-msgid "With &lt;\\|&gt; key"
-msgstr "Dengan &lt;\\|&gt; key;tombol"
-
-#: ../rules/base.xml.in.h:720
-msgid "With EuroSign on 5"
-msgstr "Dengan tanda Euro pada 5"
-
-#: ../rules/base.xml.in.h:721
-msgid "With guillemets"
-msgstr "Dengan guillemets"
-
-#: ../rules/base.xml.in.h:722
-msgid "Yahoo! Internet Keyboard"
-msgstr "Papan Ketik Internet Yahoo!"
-
-#: ../rules/base.xml.in.h:723
-msgid "Yakut"
-msgstr "Yakut"
-
-#: ../rules/base.xml.in.h:724
-msgid "Yoruba"
-msgstr "Yoruba"
-
-#: ../rules/base.xml.in.h:725
-msgid "Z and ZHE swapped"
-msgstr "menukar Z dan ZHE "
-
-#: ../rules/base.xml.in.h:726
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:727
-msgid "Zero-width non-joiner character at second level"
-msgstr "Karakter non-penggabung lebar-nol pada level kedua"
-
-#: ../rules/base.xml.in.h:728
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Karakter non-penggabung lebar-nol pada level kedua, karakter spasi non-dilepaskan pada level ketiga"
-
-#: ../rules/base.xml.in.h:729
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Karakter non-penggabung lebar-nol pada level kedua, karakter spasi non-dilepaskan pada level ketiga, tak ada di level keempat"
-
-#: ../rules/base.xml.in.h:730
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Karakter non-penggabung lebar-nol pada level ketiga, karakter spasi non-dilepaskan pada level ketiga, spasi non-dilepaskan tipis pada level keempat"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Karakter non-penggabung lebar-nol pada level kedua, karakter spasi non-dilepaskan pada level ketiga, penggabung lebar-nol pada level keempat"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Karakter non-penggabung lebar nol pada level kedua, karakter penggabung lebar-nol pada level ketiga"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Karakter non-penggabung pada level kedua, karakter penggabung lebar-nol pada level ketiga, karakter spasi non-dilepaskan pada level keempat"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Karakter non-penggabung lebar-nol pada level ketiga, penggabung lebar-nol pada level keempat"
-
-#: ../rules/base.xml.in.h:735
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:736
-msgid "azerty/digits"
-msgstr "azerty/angka"
-
-#: ../rules/base.xml.in.h:737
-msgid "digits"
-msgstr "digit"
-
-#: ../rules/base.xml.in.h:738
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "ganti titik koma dan tanda kutip (kuno)"
-
-#: ../rules/base.xml.in.h:739
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:740
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, ditambah Backslash"
-
-#: ../rules/base.xml.in.h:742
-msgid "qwerty/digits"
-msgstr "qwertz/angka"
-
-#: ../rules/base.xml.in.h:743
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr "Menggabungkan aksen ketimbang tombol mati"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr "Internasional (AltGr menggabungkan Unicode)"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Internasional (AltGr menggabungkan Unicode, alternatif)"
-
-#~ msgid "ACPI Standard"
-#~ msgstr "ACPI Standard"
-
-#~ msgid "Bhu"
-#~ msgstr "Bhu"
-
-#~ msgid "Caps Lock"
-#~ msgstr "Caps Lock"
-
-#~ msgid "DRC"
-#~ msgstr "DRC"
-
-#~ msgid "Dvorak international"
-#~ msgstr "Dvorak international"
-
-#~ msgid "Evdev-managed keyboard"
-#~ msgstr "Evdev-managed keyboard"
-
-#~ msgid "Gre"
-#~ msgstr "Gre"
-
-#~ msgid "Gui"
-#~ msgstr "Gui"
-
-#~ msgid "Lav"
-#~ msgstr "Lav"
-
-#~ msgid "Nep"
-#~ msgstr "Nep"
-
-#~ msgid "Scroll Lock"
-#~ msgstr "Scroll Lock"
-
-#~ msgid "SrL"
-#~ msgstr "Srl"
-
-#~ msgid "Baltic+"
-#~ msgstr "Baltic+"
-
-#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "Pro Keypad"
-#~ msgstr "Pro Keypad"
-
-#~ msgid "Standard Phonetic"
-#~ msgstr "Fonetik Standar"
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "Brazilian ABNT2"
-
-#~ msgid "Japanese 106-key"
-#~ msgstr "Japanese 106-key"
-
-#~ msgid "Kir"
-#~ msgstr "Kir"
-
-#~ msgid "Korean 106-key"
-#~ msgstr "Korean 106-key"
-
-#~ msgid "Super is mapped to Win keys"
-#~ msgstr "Super dipetakan ke tombol Win"
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "Keyboard Amerika dengan Slovenia digraph"
-
-#~ msgid "Unicode"
-#~ msgstr "Unicode"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Gunakan diagraph Slovenia "
-
-#~ msgid "Add the EuroSign to the 2 key."
-#~ msgstr "Tambah tanda Euro ke tombol 2"
-
-#~ msgid "Add the EuroSign to the 4 key."
-#~ msgstr "Tambah tanda Euro ke tombol 4"
-
-#~ msgid "Add the EuroSign to the 5 key."
-#~ msgstr "Tambah tanda Euro ke tombol 5"
-
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "Tambah tanda Euro ke tombol E"
-
-#~ msgid "Alt+Ctrl change layout."
-#~ msgstr "Alt+Ctrl mengubah layout."
-
-#~ msgid "Alt+Shift change layout."
-#~ msgstr "Alt+Shift mengubah layout."
-
-#~ msgid "CapsLock LED shows alternative layout."
-#~ msgstr "CapsLock LED menunjukkan layout alternatif."
-
-#~ msgid "CapsLock just locks the Shift modifier."
-#~ msgstr "CapsLock hanya mengunci modifier Shift."
-
-#~ msgid "CapsLock key changes layout."
-#~ msgstr "Tombol CapsLock mengubah layout."
-
-#~ msgid "Ctrl+Shift change layout."
-#~ msgstr "Ctrl+Shift mengubah layout."
-
-#~ msgid "Hewlett-Packard Internet Keyboard 5181"
-#~ msgstr "Hewlett-Packard Internet Keyboard 5181"
-
-#~ msgid "Hewlett-Packard Internet Keyboard 5185"
-#~ msgstr "Hewlett-Packard Internet Keyboard 5185"
-
-#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#~ msgid "IBM Rapid Access II (alternate option)"
-#~ msgstr "IBM Rapid Access II (pilihan alternatif)"
-
-#~ msgid "LCtrl+LShift change layout."
-#~ msgstr "LCtrl+LShift mengubah layout."
-
-#~ msgid "Layout switching"
-#~ msgstr "Layout switching"
-
-#~ msgid "Left Alt key changes layout."
-#~ msgstr "Alt Kiri mengubah layout."
-
-#~ msgid "Left Ctrl key changes layout."
-#~ msgstr "Ctrl Kiri mengubah layout."
-
-#~ msgid "Left Shift key changes layout."
-#~ msgstr "Shift Kiri mengubah layout."
-
-#~ msgid "Left Win-key changes layout."
-#~ msgstr "Tombol Win Kiri mengubah layout."
-
-#~ msgid "Left Win-key is Compose."
-#~ msgstr "Tombol Win Kiri adaalah Compose."
-
-#~ msgid "Legacy keypad"
-#~ msgstr "Legacy keypad"
-
-#~ msgid "Menu is Compose."
-#~ msgstr "Menu adalah Compose"
-
-#~ msgid "Neostyle"
-#~ msgstr "Neostyle"
-
-#~ msgid "NumLock LED shows alternative layout."
-#~ msgstr "NumLock LED menunjukkan layout alternatif."
-
-#~ msgid "Press Left Alt key to choose 3rd level."
-#~ msgstr "Tekan Alt Kiri untuk memilih level 3."
-
-#~ msgid "Press Left Win-key to choose 3rd level."
-#~ msgstr "Tekan tombol Win Kiri untuk memilih level 3."
-
-#~ msgid "Press Right Alt key to choose 3rd level."
-#~ msgstr "Tekan Alt Kanan untuk memilih level 3."
-
-#~ msgid "Press Right Ctrl to choose 3rd level."
-#~ msgstr "Tekan Ctrl Kanan untuk memilih level 3."
-
-#~ msgid "Press Right Win-key to choose 3rd level."
-#~ msgstr "Tekan tombol Win Kanan untuk memilih level 3."
-
-#~ msgid "Press any of Alt keys to choose 3rd level."
-#~ msgstr "Tekan tombol Alt manasaja untuk memilih level 3."
-
-#~ msgid "Press any of Win-keys to choose 3rd level."
-#~ msgstr "Tekan tombol Win manasaja untuk memilih level 3."
-
-#~ msgid "Right Alt is Compose."
-#~ msgstr "Alt Kanan adalah Compose"
-
-#~ msgid "Right Alt key changes layout."
-#~ msgstr "Alt Kanan mengubah layout."
-
-#~ msgid "Right Ctrl key changes layout."
-#~ msgstr "Ctrl Kanan mengubah layout."
-
-#~ msgid "Right Shift key changes layout."
-#~ msgstr "Shift Kanan mengubah layout."
-
-#~ msgid "Right Win-key changes layout."
-#~ msgstr "Tombol Win Kanan mengubah layout."
-
-#~ msgid "Right Win-key is Compose."
-#~ msgstr "Tombol Win Kanan adalah Compose."
-
-#~ msgid "ScrollLock LED shows alternative layout."
-#~ msgstr "ScrollLock LED menunjukkan layout alternatif."
-
-#~ msgid "Shift+CapsLock changes layout."
-#~ msgstr "Shift+CapsLock mengubah layout."
-
-#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-#~ msgstr "Tukar keycode dari 2 tombol ketika keyboard Mac salah terdeteksi oleh kernel."
-
-#~ msgid "Third level choosers"
-#~ msgstr "Pilihan level 3"
-
-#~ msgid "Urdu"
-#~ msgstr "Urdu"
+# Terjemahan pesan Bahasa Indonesia untuk xkeyboard-config.
+# Copyright (C) 2008 THE xkeyboard-config'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the xkeyboard-config package.
+# Erwid M Jadied <jadied@gmail.com>, 2008.
+# Andhika Padmawan <andhika.padmawan@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config-2.0\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-09-15 21:57+0100\n"
+"PO-Revision-Date: 2010-11-07 15:20+0700\n"
+"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Indonesian\n"
+"X-Poedit-Country: INDONESIA\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Lebih Kecil/Lebih Besar&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Lebih Kecil/Lebih Besar&gt; pilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Lebih Kecil/Lebih Besar&gt; pilih level kelima, terkunci jika ditekan dengan pemilih-level-kelima lainnya, satu penekanan melepas kunci"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Legacy) Alternative"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Legacy) Alternative, Tombol mati Matahari"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Legacy) Alternative, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104 tombol Kompatibel"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/koma/Tombol mati"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/koma/ Hapuskan tombol mati"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/titik/Tombol mati"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/titik/Hapus tombol mati"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/koma/Tombol mati"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/koma/Hapus tombol mati"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/awertz/titik/Tombol mati"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/titik/hapus tombol mati"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/koma/Tombol mati"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/koma/Hapus tombol mati"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/titik/Tombol mati"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/titik/Hapus tombol mati"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/koma/Tombol mati"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/koma/Hapus tombol mati"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/titik/Tombol mati"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/titik/Hapus tombol mati"
+
+#: ../rules/base.xml.in.h:25
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:26
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:27
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:28
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:29
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:30
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:31
+msgid "ATM/phone-style"
+msgstr "Gaya ATM/telepon"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:34
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:35
+msgid "Acer Laptop"
+msgstr "Acer Laptop"
+
+#: ../rules/base.xml.in.h:36
+msgid "Add the standard behavior to Menu key"
+msgstr "Tambah tindakan standar pada tombol Menu"
+
+#: ../rules/base.xml.in.h:37
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Menambah circumflex Esperanto (supersigno)"
+
+#: ../rules/base.xml.in.h:38
+msgid "Adding EuroSign to certain keys"
+msgstr "Menambahkan tanda Euro ke tombol tertentu"
+
+#: ../rules/base.xml.in.h:39
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:40
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:41
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:42
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:44
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt dan Meta pada tombol Alt"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt dipetakan ke Win Kanan, Super ke Menu"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Caps Lock"
+msgstr "Tombol Alt+Caps"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt+Space"
+msgstr "Alt+Space"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alt/Win key behavior"
+msgstr "Tindakan Tombol Alt/Win "
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative"
+msgstr "Alternative"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative Eastern"
+msgstr "Alternative Eastern"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative Phonetic"
+msgstr "Alternative Phonetik"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative international"
+msgstr "Alternatif internasional"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, Sun dead keys"
+msgstr "Alternative, tombol mati Matahari"
+
+#: ../rules/base.xml.in.h:58
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternative, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:59
+msgid "Alternative, latin-9 only"
+msgstr "Alternative, hanya latin-9"
+
+#: ../rules/base.xml.in.h:60
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:61
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Alt key"
+msgstr "Tombol Alt apapun"
+
+#: ../rules/base.xml.in.h:63
+msgid "Any Win key"
+msgstr "Tombol Win apapun"
+
+#: ../rules/base.xml.in.h:64
+msgid "Any Win key (while pressed)"
+msgstr "Tombol Win apapun (ketika ditekan)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apostrophe (') variant"
+msgstr "Varian apostrof (')"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Papan Ketik Aluminium Apple (ANSI)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Papan Ketik Aluminium (ISO)"
+
+#: ../rules/base.xml.in.h:69
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Papan Ketik Aluminium (JIS)"
+
+#: ../rules/base.xml.in.h:70
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Papan Ketik Aluminium Apple: mengemulasi tombol PC (Print, Scroll_Lock, Pause, Num Lock)"
+
+#: ../rules/base.xml.in.h:71
+msgid "Apple Laptop"
+msgstr "Apple Laptop"
+
+#: ../rules/base.xml.in.h:72
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:73
+msgid "Arabic"
+msgstr "Arab"
+
+#: ../rules/base.xml.in.h:74
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:75
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:76
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Varian Asturian dengan titik di bawah pada H dan L "
+
+#: ../rules/base.xml.in.h:77
+msgid "Asus Laptop"
+msgstr "Asus Laptop"
+
+#: ../rules/base.xml.in.h:78
+msgid "At bottom left"
+msgstr "Di kiri bawah"
+
+#: ../rules/base.xml.in.h:79
+msgid "At left of 'A'"
+msgstr "Di sebelah kiri 'A'"
+
+#: ../rules/base.xml.in.h:80
+msgid "Austria"
+msgstr "Austria"
+
+#: ../rules/base.xml.in.h:81
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:82
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:83
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:84
+msgid "Azerbaijan"
+msgstr "Ajarbaijan"
+
+#: ../rules/base.xml.in.h:85
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Papan Ketik Internet nirkabel Azona RF2300"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:92
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:93
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:94
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 91116U Internet dan Permainan Nirkabel Mini"
+
+#: ../rules/base.xml.in.h:95
+msgid "Backslash"
+msgstr "Backslash"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bangladesh"
+msgstr "Banglades"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bashkirian"
+msgstr "Bashkirian"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:99
+msgid "Belarus"
+msgstr "Belarus"
+
+#: ../rules/base.xml.in.h:100
+msgid "Belgium"
+msgstr "Belgia"
+
+#: ../rules/base.xml.in.h:101
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:102
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:103
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bengali"
+msgstr "Bengali"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bengali Probhat"
+msgstr "Bengali Probhat"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomic, Dvorak way"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomic, Dvorak way, latin-9 only"
+
+#: ../rules/base.xml.in.h:108
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: ../rules/base.xml.in.h:111
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Biblical Hebrew (Tiro)"
+
+#: ../rules/base.xml.in.h:112
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:113
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:114
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia dan Herzegovina"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Alt keys together"
+msgstr "Kedua tombol Alt bersama"
+
+#: ../rules/base.xml.in.h:116
+msgid "Both Ctrl keys together"
+msgstr "Kedua tombol Ctrl bersama"
+
+#: ../rules/base.xml.in.h:117
+msgid "Both Shift keys together"
+msgstr "Kedua tombol Shift bersama"
+
+#: ../rules/base.xml.in.h:118
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Kedua tombol Shift bersama ubah Caps Lock"
+
+#: ../rules/base.xml.in.h:119
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:120
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:121
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brazil"
+msgstr "Brasil"
+
+#: ../rules/base.xml.in.h:123
+msgid "Breton"
+msgstr "Breton"
+
+#: ../rules/base.xml.in.h:124
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:125
+msgid "Brother Internet Keyboard"
+msgstr "Papan Ketik Internet Brother"
+
+#: ../rules/base.xml.in.h:126
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:127
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:128
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:129
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:130
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:131
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:132
+msgid "Cambodia"
+msgstr "Kamboja"
+
+#: ../rules/base.xml.in.h:133
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:134
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:135
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (ke tata letak pertama), Shift+Caps Lock (ke tata letak terakhir)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (ketika ditekan), Alt+Caps Lock melakukan aksi capslock asli"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock bertindak sebagai Shift dengan mengunci. Shift \"jeda\" Caps Lock."
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock bertindak sebagai Shift yang terkunci. Shift tidak mempengaruhi Caps Lock"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock is disabled"
+msgstr "Caps Lock dinonaktifkan"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock key behavior"
+msgstr "Perilaku tombol Caps Lock"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Caps Lock mengubah Shift sehingga semua tombol terpengaruh"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Caps Lock mengubah huruf besar normal atau karakter secara alfabetis"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock menggunakan huruf besar internal. Shift \"pauses\" Caps Lock"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock menggunakan huruf besar internal. Shift tidak mempengaruhi Caps Lock"
+
+#: ../rules/base.xml.in.h:146
+msgid "Catalan variant with middle-dot L"
+msgstr "Varian Katalan dengan titik-tengah pada L"
+
+#: ../rules/base.xml.in.h:147
+msgid "Cedilla"
+msgstr "Cedilla"
+
+#: ../rules/base.xml.in.h:148
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:149
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternate option)"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:157
+msgid "Chicony Internet Keyboard"
+msgstr "Papan Ketik Internet Chicony"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:161
+msgid "China"
+msgstr "China"
+
+#: ../rules/base.xml.in.h:162
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chuvash"
+msgstr "Chuvash"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash Latin"
+msgstr "Chuvash Latin"
+
+#: ../rules/base.xml.in.h:165
+msgid "Classic"
+msgstr "Classic"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic Dvorak"
+msgstr "Classic Dvorak"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic, eliminate dead keys"
+msgstr "Klasik, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:169
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:170
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:171
+msgid "Compaq Easy Access Keyboard"
+msgstr "Papan Ketik Akses Mudah Compaq"
+
+#: ../rules/base.xml.in.h:172
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Papan Ketik Internet Compaq (13 tombol)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Papan Ketik Internet Compaq (18 tombol)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Papan Ketik Internet Compaq (7 tombol)"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq iPaq Keyboard"
+msgstr "Papan Ketik Compaq iPaq"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compose key position"
+msgstr "Posisi tombol Compose"
+
+#: ../rules/base.xml.in.h:177
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongo, Republik Demokrat"
+
+#: ../rules/base.xml.in.h:178
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:179
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Kendali dipetakan ke tombol Alt, Alt dipetakan ke tombol Win"
+
+#: ../rules/base.xml.in.h:180
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Kendali dipetakan ke tombol Win ( dan tombol Ctrl biasa)"
+
+#: ../rules/base.xml.in.h:181
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:182
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Crimean Tatar (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:183
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Crimean Tatar (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Crimean Tatar (Turkish Alt-Q)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Crimean Tatar (Turkish F)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Crimean Tatar (Turkish Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Croatia"
+msgstr "Kroasia"
+
+#: ../rules/base.xml.in.h:188
+msgid "Ctrl key position"
+msgstr "Posisi tombol Ctrl"
+
+#: ../rules/base.xml.in.h:189
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:190
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: ../rules/base.xml.in.h:191
+msgid "Cyrillic with guillemets"
+msgstr "Cyrillic dengan guillemets"
+
+#: ../rules/base.xml.in.h:192
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Cyrillic, Z dan ZHE di-swap"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:194
+msgid "Czechia"
+msgstr "Czechia"
+
+#: ../rules/base.xml.in.h:195
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:196
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:197
+msgid "Dead acute"
+msgstr "Dead acute"
+
+#: ../rules/base.xml.in.h:198
+msgid "Dead grave acute"
+msgstr "Dead grave acute"
+
+#: ../rules/base.xml.in.h:199
+msgid "Default numeric keypad keys"
+msgstr "Tombol angka keypad standar"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Laptop/notebook Precision M series"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude series laptop"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Papan Ketik Multimedia USB Dell"
+
+#: ../rules/base.xml.in.h:209
+msgid "Denmark"
+msgstr "Denmark"
+
+#: ../rules/base.xml.in.h:210
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Papan Ketik Desktop Nirkabel Dexxa"
+
+#: ../rules/base.xml.in.h:212
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:213
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:215
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (UK Punctuation)"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak alternatif Internasional (tanpa tombol mati)"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak internasional (dengan tombol mati)"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, tanda kutip Polandia pada tombol 1"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, tanda kutip Polandia pada tombol quotemark"
+
+#: ../rules/base.xml.in.h:220
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:221
+msgid "Eastern"
+msgstr "Eastern"
+
+#: ../rules/base.xml.in.h:222
+msgid "Eliminate dead keys"
+msgstr "Hapus tombol mati"
+
+#: ../rules/base.xml.in.h:223
+msgid "Enable extra typographic characters"
+msgstr "Aktifkan karakter tipografi ekstra"
+
+#: ../rules/base.xml.in.h:224
+msgid "English"
+msgstr "Inggris"
+
+#: ../rules/base.xml.in.h:225
+msgid "English (USA International)"
+msgstr "Inggris (Internasional USA)"
+
+#: ../rules/base.xml.in.h:226
+msgid "English (USA Macintosh)"
+msgstr "Inggris (Macintosh USA)"
+
+#: ../rules/base.xml.in.h:227
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:228
+msgid "Enter on keypad"
+msgstr "Enter pada keypad"
+
+#: ../rules/base.xml.in.h:229
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:230
+msgid "Ergonomic"
+msgstr "Ergonomic"
+
+#: ../rules/base.xml.in.h:231
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:232
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:233
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:234
+msgid "Estonia"
+msgstr "Estonia"
+
+#: ../rules/base.xml.in.h:235
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:236
+msgid "Ethiopia"
+msgstr "Ethiopia"
+
+#: ../rules/base.xml.in.h:237
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:238
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:239
+msgid "Extended"
+msgstr "Extended"
+
+#: ../rules/base.xml.in.h:240
+msgid "Extended - Winkeys"
+msgstr "Extended - Winkeys"
+
+#: ../rules/base.xml.in.h:241
+msgid "Extended Backslash"
+msgstr "Extended Backslash"
+
+#: ../rules/base.xml.in.h:242
+msgid "F-letter (F) variant"
+msgstr "varian huruf-F (F)"
+
+#: ../rules/base.xml.in.h:243
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:244
+msgid "Faroe Islands"
+msgstr "kepulauan Farao"
+
+#: ../rules/base.xml.in.h:245
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:246
+msgid "Finland"
+msgstr "Finlandia"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:249
+msgid "Four-level key with abstract separators"
+msgstr "Tombol empat-level dengan pemisah abstrak"
+
+#: ../rules/base.xml.in.h:250
+msgid "Four-level key with comma"
+msgstr "Tombol empat-level dengan koma"
+
+#: ../rules/base.xml.in.h:251
+msgid "Four-level key with dot"
+msgstr "Tombol empat-level dengan titik"
+
+#: ../rules/base.xml.in.h:252
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Tombol empat-level dengan titik, pembatasan latin-9"
+
+#: ../rules/base.xml.in.h:253
+msgid "Four-level key with momayyez"
+msgstr "Tombol empat level dengan momayyez"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:255
+msgid "France"
+msgstr "Perancis"
+
+#: ../rules/base.xml.in.h:256
+msgid "Français (France Alternative)"
+msgstr "Perancis (Alternatif Perancis)"
+
+#: ../rules/base.xml.in.h:257
+msgid "French"
+msgstr "Perancis"
+
+#: ../rules/base.xml.in.h:258
+msgid "French (Macintosh)"
+msgstr "French (Macintosh)"
+
+#: ../rules/base.xml.in.h:259
+msgid "French (legacy)"
+msgstr "French (legacy)"
+
+#: ../rules/base.xml.in.h:260
+msgid "French Dvorak"
+msgstr "French Dvorak"
+
+#: ../rules/base.xml.in.h:261
+msgid "French, Sun dead keys"
+msgstr "Frence, Tombol mati Matahari"
+
+#: ../rules/base.xml.in.h:262
+msgid "French, eliminate dead keys"
+msgstr "French, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:264
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO laptop"
+
+#: ../rules/base.xml.in.h:265
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:266
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:267
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:268
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:269
+msgid "Generic 101-key PC"
+msgstr "Generic 101-key PC"
+
+#: ../rules/base.xml.in.h:270
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generic 102-key (Intl) PC"
+
+#: ../rules/base.xml.in.h:271
+msgid "Generic 104-key PC"
+msgstr "Generic 104-key PC"
+
+#: ../rules/base.xml.in.h:272
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generic 105-key (Intl) PC"
+
+#: ../rules/base.xml.in.h:273
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:274
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:275
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:276
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:277
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:278
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:279
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:280
+msgid "Georgian"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:281
+msgid "Georgian AZERTY Tskapo"
+msgstr "Georgian AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:282
+msgid "German (Macintosh)"
+msgstr "German (Macintosh)"
+
+#: ../rules/base.xml.in.h:283
+msgid "German, Sun dead keys"
+msgstr "German, Tombol mati Matahari"
+
+#: ../rules/base.xml.in.h:284
+msgid "German, eliminate dead keys"
+msgstr "German, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:285
+msgid "Germany"
+msgstr "Jerman"
+
+#: ../rules/base.xml.in.h:286
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:287
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:288
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:289
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:290
+msgid "Greece"
+msgstr "Yunani"
+
+#: ../rules/base.xml.in.h:291
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:292
+msgid "Gujarati"
+msgstr "Gujurati"
+
+#: ../rules/base.xml.in.h:293
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:294
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:296
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Keyboard"
+
+#: ../rules/base.xml.in.h:297
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking Keyboard untuk Mac"
+
+#: ../rules/base.xml.in.h:298
+msgid "Hausa"
+msgstr "Hausa"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Papan Ketik Internet Hewlett-Packard"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:303
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:304
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:305
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:306
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:307
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Papan Ketik Multimedia Hewlett-Packard SK-2501"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hexadecimal"
+msgstr "Heksadesimal"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:314
+msgid "Homophonic"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:315
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hrv"
+msgstr "Hvr"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hungary"
+msgstr "Hungaria"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hiper dipetakan ke tombol Win"
+
+#: ../rules/base.xml.in.h:320
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:321
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:322
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:323
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:324
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:325
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:326
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:327
+msgid "ISO Alternate"
+msgstr "ISO Alternate"
+
+#: ../rules/base.xml.in.h:328
+msgid "Iceland"
+msgstr "Islandia"
+
+#: ../rules/base.xml.in.h:329
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:330
+msgid "Include dead tilde"
+msgstr "Termasuk tilde mati"
+
+#: ../rules/base.xml.in.h:331
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:332
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:333
+msgid "International (AltGr dead keys)"
+msgstr "Internasional (AltGr tombol mati)"
+
+#: ../rules/base.xml.in.h:334
+msgid "International (with dead keys)"
+msgstr "Internasional (dengan tombol mati)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:337
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:338
+msgid "Ireland"
+msgstr "Irlandia"
+
+#: ../rules/base.xml.in.h:339
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:340
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:341
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:342
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:343
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:344
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:345
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:346
+msgid "Italy"
+msgstr "Italia"
+
+#: ../rules/base.xml.in.h:347
+msgid "Japan"
+msgstr "Jepang"
+
+#: ../rules/base.xml.in.h:348
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:349
+msgid "Japanese keyboard options"
+msgstr "Pilihan papan ketik Jepang"
+
+#: ../rules/base.xml.in.h:350
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:351
+msgid "Kalmyk"
+msgstr "Kalmyk"
+
+#: ../rules/base.xml.in.h:352
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kana Lock key is locking"
+msgstr "Tombol Kana Lock terkunci"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kashubian"
+msgstr "Kashubian"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:357
+msgid "Kazakh with Russian"
+msgstr "Kazakh dengan Rusia"
+
+#: ../rules/base.xml.in.h:358
+msgid "Kazakhstan"
+msgstr "Kazakhstan"
+
+#: ../rules/base.xml.in.h:359
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:360
+msgid "Kenya"
+msgstr "Kenya"
+
+#: ../rules/base.xml.in.h:361
+msgid "Key sequence to kill the X server"
+msgstr "Sekuensi kunci untuk mematikan server X"
+
+#: ../rules/base.xml.in.h:362
+msgid "Key to choose 3rd level"
+msgstr "Tekan Menu Kiri untuk memilih level 3"
+
+#: ../rules/base.xml.in.h:363
+msgid "Key to choose 5th level"
+msgstr "Tombol untuk memilih level kelima"
+
+#: ../rules/base.xml.in.h:364
+msgid "Key(s) to change layout"
+msgstr "Tombol untuk mengubah tata letak"
+
+#: ../rules/base.xml.in.h:365
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:367
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kikuyu"
+msgstr "Kikuyu"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:370
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:371
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:372
+msgid "Korea, Republic of"
+msgstr "Republik Korea"
+
+#: ../rules/base.xml.in.h:373
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:374
+msgid "Kurdish, (F)"
+msgstr "Kurdish, (F)"
+
+#: ../rules/base.xml.in.h:375
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdish, Arabic-Latin"
+
+#: ../rules/base.xml.in.h:376
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdish, Latin Alt-Q"
+
+#: ../rules/base.xml.in.h:377
+msgid "Kurdish, Latin Q"
+msgstr "Kurdish, Latin Q"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: ../rules/base.xml.in.h:379
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:380
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:381
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:382
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:383
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:384
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:385
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:386
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:387
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:388
+msgid "Latin American"
+msgstr "Latin Amerika"
+
+#: ../rules/base.xml.in.h:389
+msgid "Latin Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:390
+msgid "Latin Unicode qwerty"
+msgstr "Latin Unicode qwerty"
+
+#: ../rules/base.xml.in.h:391
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:392
+msgid "Latin unicode"
+msgstr "Latin unicode"
+
+#: ../rules/base.xml.in.h:393
+msgid "Latin unicode qwerty"
+msgstr "Latin unicode qwerty"
+
+#: ../rules/base.xml.in.h:394
+msgid "Latin with guillemets"
+msgstr "Latin dengan guillemets"
+
+#: ../rules/base.xml.in.h:395
+msgid "Latvia"
+msgstr "Latvia"
+
+#: ../rules/base.xml.in.h:396
+msgid "Layout toggle on multiply/divide key"
+msgstr "Ubah tata letak pada tombol perkalian/pembagian"
+
+#: ../rules/base.xml.in.h:397
+msgid "Left Alt"
+msgstr "Alt Kiri"
+
+#: ../rules/base.xml.in.h:398
+msgid "Left Alt (while pressed)"
+msgstr "Alt Kiri (ketika ditekan)"
+
+#: ../rules/base.xml.in.h:399
+msgid "Left Alt is swapped with Left Win"
+msgstr "Alt Kiri ditukar dengan Win Kiri"
+
+#: ../rules/base.xml.in.h:400
+msgid "Left Ctrl"
+msgstr "Ctrl Kiri"
+
+#: ../rules/base.xml.in.h:401
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Ctrl Kiri (ke tata letak pertama), Ctrl Kanan (ke tata letak terakhir)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Left Ctrl+Left Shift"
+msgstr "Ctrl Kiri+Shift Kiri"
+
+#: ../rules/base.xml.in.h:403
+msgid "Left Shift"
+msgstr "Shift Kiri"
+
+#: ../rules/base.xml.in.h:404
+msgid "Left Win"
+msgstr "Win Kiri"
+
+#: ../rules/base.xml.in.h:405
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Win Kiri (ke tata letak pertama), Win/Menu Kanan (ke tata letak terakhir)"
+
+#: ../rules/base.xml.in.h:406
+msgid "Left Win (while pressed)"
+msgstr "Win Kiri (ketika ditekan)"
+
+#: ../rules/base.xml.in.h:407
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win kiri memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win kiri memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima, satu penekanan melepas kunci"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left hand"
+msgstr "Kidal"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left handed Dvorak"
+msgstr "Left handed Dvorak"
+
+#: ../rules/base.xml.in.h:411
+msgid "Legacy"
+msgstr "Legacy"
+
+#: ../rules/base.xml.in.h:412
+msgid "Legacy Wang 724"
+msgstr "Legacy Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:414
+msgid "Legacy key with comma"
+msgstr "Tombol Legacy dengan koma"
+
+#: ../rules/base.xml.in.h:415
+msgid "Legacy key with dot"
+msgstr "Tombol Legacy dengan titik"
+
+#: ../rules/base.xml.in.h:416
+msgid "Lithuania"
+msgstr "Lithuania"
+
+#: ../rules/base.xml.in.h:417
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:418
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:419
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:420
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (pilihan alternatif)"
+
+#: ../rules/base.xml.in.h:421
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:422
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:423
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:424
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:425
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (opsi alternatif 2)"
+
+#: ../rules/base.xml.in.h:426
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:427
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:428
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra keys via G15daemon"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Generic Keyboard"
+msgstr "Papan Ketik Generik Logitech"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Papan Ketik Logitech Internet 350"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Internet Keyboard"
+msgstr "Papan Ketik Internet Logitech"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Papan Ketik Navigator Internet Logitech"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Media Elite Keyboard"
+msgstr "Papan Ketik Logitech Media Elite"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Papan Ketik Logitech Ultra-X Cordless Media Desktop"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Papan Ketik Logitech Ultra-X"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Papan Ketik Logitech diNovo Edge"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech diNovo Keyboard"
+msgstr "Papan Ketik Logitech diNovo"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:442
+msgid "Lower Sorbian"
+msgstr "Lower Sorbian"
+
+#: ../rules/base.xml.in.h:443
+msgid "Lower Sorbian (qwertz)"
+msgstr "Lower Sorbian (qwertz)"
+
+#: ../rules/base.xml.in.h:444
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:445
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:446
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:447
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:448
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:449
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:450
+msgid "Macedonia"
+msgstr "Masedonia"
+
+#: ../rules/base.xml.in.h:451
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:452
+msgid "Macintosh (International)"
+msgstr "Machintosh (Internasional)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Macintosh Old"
+msgstr "Macintosh Old"
+
+#: ../rules/base.xml.in.h:454
+msgid "Macintosh, Sun dead keys"
+msgstr "Machintosh, tombol mati Matahari"
+
+#: ../rules/base.xml.in.h:455
+msgid "Macintosh, eliminate dead keys"
+msgstr "Machintosh, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:456
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Buat Caps Lock sebagai tambahan Backspace"
+
+#: ../rules/base.xml.in.h:457
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Buat Caps Lock sebagai tambahan Ctrl"
+
+#: ../rules/base.xml.in.h:458
+msgid "Make Caps Lock an additional ESC"
+msgstr "Buat Caps Lock sebagai tambahan ESC"
+
+#: ../rules/base.xml.in.h:459
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Buat Caps Lock sebagai tambahan Hiper"
+
+#: ../rules/base.xml.in.h:460
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Buat Caps Lock sebagai tambahan Num Lock"
+
+#: ../rules/base.xml.in.h:461
+msgid "Make Caps Lock an additional Super"
+msgstr "Buat Caps Lock sebagai tambahan Super"
+
+#: ../rules/base.xml.in.h:462
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:463
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha"
+
+#: ../rules/base.xml.in.h:464
+msgid "Maldives"
+msgstr "Maldives"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:466
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:467
+msgid "Maltese keyboard with US layout"
+msgstr "Papan ketik Maltase dengan Layout US"
+
+#: ../rules/base.xml.in.h:468
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:469
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:470
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:471
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:472
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Papan Ketik Memorex MX2500 EZ-Access"
+
+#: ../rules/base.xml.in.h:473
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:474
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:475
+msgid "Meta is mapped to Left Win"
+msgstr "Meta dipetakan ke tombol Win Kiri"
+
+#: ../rules/base.xml.in.h:476
+msgid "Meta is mapped to Win keys"
+msgstr "Meta dipetakan ke tombol Win"
+
+#: ../rules/base.xml.in.h:477
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:478
+msgid "Microsoft Internet Keyboard"
+msgstr "Papan Ketik Internet Microsoft"
+
+#: ../rules/base.xml.in.h:479
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Swedia"
+
+#: ../rules/base.xml.in.h:480
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:481
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:482
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:483
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:484
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:485
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:486
+msgid "Microsoft Office Keyboard"
+msgstr "Papan Ketik Microsoft Office"
+
+#: ../rules/base.xml.in.h:487
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:488
+msgid "Miscellaneous compatibility options"
+msgstr "Pilihan kompabilitas lain-lain"
+
+#: ../rules/base.xml.in.h:489
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:490
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:491
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:492
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:493
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:494
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: ../rules/base.xml.in.h:495
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Morocco"
+msgstr "Maroko"
+
+#: ../rules/base.xml.in.h:497
+msgid "Multilingual"
+msgstr "Multilingual"
+
+#: ../rules/base.xml.in.h:498
+msgid "Multilingual, first part"
+msgstr "Multilingual, bagian pertama"
+
+#: ../rules/base.xml.in.h:499
+msgid "Multilingual, second part"
+msgstr "Multilingual, bagian kedua"
+
+#: ../rules/base.xml.in.h:500
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:501
+msgid "NICOLA-F style Backspace"
+msgstr "NICOLA-F style Backspace"
+
+#: ../rules/base.xml.in.h:502
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:503
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:504
+msgid "Nativo for Esperanto"
+msgstr "Nativo untuk Esperanto"
+
+#: ../rules/base.xml.in.h:505
+msgid "Nativo for USA keyboards"
+msgstr "Nativo untuk papan ketik USA"
+
+#: ../rules/base.xml.in.h:506
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:507
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:508
+msgid "Netherlands"
+msgstr "Belanda"
+
+#: ../rules/base.xml.in.h:509
+msgid "New phonetic"
+msgstr "Fonetik baru"
+
+#: ../rules/base.xml.in.h:510
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:511
+msgid "Nigeria"
+msgstr "Negeria"
+
+#: ../rules/base.xml.in.h:512
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:513
+msgid "Non-breakable space character at fourth level"
+msgstr "Karakter spasi yang tidak pecah pada level 4"
+
+#: ../rules/base.xml.in.h:514
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Karakter spasi yang tidak pecah pada level 4, karakter spasi yang tidak pecah dan tipis pada level 6"
+
+#: ../rules/base.xml.in.h:515
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Karakter spasi yang tidak pecah pada level 4, karakter spasi yang tidak pecah dan tipis pada level 6 (via Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:516
+msgid "Non-breakable space character at second level"
+msgstr "Karakter spasi yang tidak pecah pada level 2"
+
+#: ../rules/base.xml.in.h:517
+msgid "Non-breakable space character at third level"
+msgstr "Karakter spasi yang tidak pecah pada level 3"
+
+#: ../rules/base.xml.in.h:518
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Karakter spasi yang tidak pecah pada level 3, tidak ada pada level 4"
+
+#: ../rules/base.xml.in.h:519
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Karakter spasi yang tidak pecah pada level 3, karakter spasi yang tidak pecah dan tipis pada level 4"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:521
+msgid "Northern Saami"
+msgstr "Northern Saami"
+
+#: ../rules/base.xml.in.h:522
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Northern Saami, hapus tombo mati"
+
+#: ../rules/base.xml.in.h:523
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:524
+msgid "Norway"
+msgstr "Norwegia"
+
+#: ../rules/base.xml.in.h:525
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:526
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:527
+msgid "Numeric keypad delete key behaviour"
+msgstr "Keypad numerik menghapus perilaku tombol"
+
+#: ../rules/base.xml.in.h:528
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Keypad numerik bekerja seperti dengan Mac"
+
+#: ../rules/base.xml.in.h:529
+msgid "Numeric keypad layout selection"
+msgstr "Pilihan layout Keypad numerik "
+
+#: ../rules/base.xml.in.h:530
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:531
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:532
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:533
+msgid "OLPC Pashto"
+msgstr "OLPC Pashto"
+
+#: ../rules/base.xml.in.h:534
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC Southern Uzbek"
+
+#: ../rules/base.xml.in.h:535
+msgid "Occitan"
+msgstr "Occitan"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:537
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:538
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:539
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:540
+msgid "Ossetian"
+msgstr "Ossetian"
+
+#: ../rules/base.xml.in.h:541
+msgid "Ossetian, Winkeys"
+msgstr "Ossetian, Tombol Win"
+
+#: ../rules/base.xml.in.h:542
+msgid "Ossetian, legacy"
+msgstr "Ossetian, legacy"
+
+#: ../rules/base.xml.in.h:543
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:544
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:545
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:546
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Homofon Pannonian Rusyn"
+
+#: ../rules/base.xml.in.h:547
+msgid "Pashto"
+msgstr "Pashto"
+
+#: ../rules/base.xml.in.h:548
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:549
+msgid "Pause"
+msgstr "Pause"
+
+#: ../rules/base.xml.in.h:550
+msgid "Persian, with Persian Keypad"
+msgstr "Persia, dengan papan ketik Persia"
+
+#: ../rules/base.xml.in.h:551
+msgid "Phonetic"
+msgstr "Phonetic"
+
+#: ../rules/base.xml.in.h:552
+msgid "Phonetic Winkeys"
+msgstr "Phonetic Winkeys"
+
+#: ../rules/base.xml.in.h:553
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:554
+msgid "Poland"
+msgstr "Polandia"
+
+#: ../rules/base.xml.in.h:555
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: ../rules/base.xml.in.h:556
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:557
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:558
+msgid "Programmer Dvorak"
+msgstr "Programmer Dvorak"
+
+#: ../rules/base.xml.in.h:559
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:560
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:561
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:562
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:563
+msgid "Right Alt"
+msgstr "Alt Kanan"
+
+#: ../rules/base.xml.in.h:564
+msgid "Right Alt (while pressed)"
+msgstr "Alt Kanan (ketika ditekan)"
+
+#: ../rules/base.xml.in.h:565
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Alt kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya"
+
+#: ../rules/base.xml.in.h:566
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Alt kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima lainnya, satu penekanan melepas kunci"
+
+#: ../rules/base.xml.in.h:567
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Alt Kanan tidak pernah memilih level 3"
+
+#: ../rules/base.xml.in.h:568
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Alt Kanan, Shift+Right Alt adalah Multi_Key"
+
+#: ../rules/base.xml.in.h:569
+msgid "Right Ctrl"
+msgstr "Ctrl Kanan"
+
+#: ../rules/base.xml.in.h:570
+msgid "Right Ctrl (while pressed)"
+msgstr "Ctrl Kanan (ketika ditekan)"
+
+#: ../rules/base.xml.in.h:571
+msgid "Right Ctrl as Right Alt"
+msgstr "Ctrl Kanan bertindak seperti Alt Kanan"
+
+#: ../rules/base.xml.in.h:572
+msgid "Right Ctrl+Right Shift"
+msgstr "Ctrl Kanan+Shift Kanan"
+
+#: ../rules/base.xml.in.h:573
+msgid "Right Shift"
+msgstr "Shift Kanan"
+
+#: ../rules/base.xml.in.h:574
+msgid "Right Win"
+msgstr "Win Kanan"
+
+#: ../rules/base.xml.in.h:575
+msgid "Right Win (while pressed)"
+msgstr "Win Kanan (ketika ditekan)"
+
+#: ../rules/base.xml.in.h:576
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima"
+
+#: ../rules/base.xml.in.h:577
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win kanan memilih level kelima, terkunci jika ditekan bersamaan dengan pemilih-level-kelima, satu penekanan melepas kunci"
+
+#: ../rules/base.xml.in.h:578
+msgid "Right hand"
+msgstr "Tangan Kanan"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right handed Dvorak"
+msgstr "Right handed Dvorak"
+
+#: ../rules/base.xml.in.h:580
+msgid "Romania"
+msgstr "Rumania"
+
+#: ../rules/base.xml.in.h:581
+msgid "Romanian keyboard with German letters"
+msgstr "Papan ketik Rumania dengan huruf Jerman"
+
+#: ../rules/base.xml.in.h:582
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Papan ketik Rumania dengan huruf Jerman, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:583
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:584
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:585
+msgid "Russia"
+msgstr "Rusia"
+
+#: ../rules/base.xml.in.h:586
+msgid "Russian"
+msgstr "Rusia"
+
+#: ../rules/base.xml.in.h:587
+msgid "Russian phonetic"
+msgstr "Russian phonetic"
+
+#: ../rules/base.xml.in.h:588
+msgid "Russian phonetic Dvorak"
+msgstr "Russian phonetic Dvorak"
+
+#: ../rules/base.xml.in.h:589
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Russian phonetic, hapus tombol mati"
+
+#: ../rules/base.xml.in.h:590
+msgid "Russian with Kazakh"
+msgstr "Rusia dengan Kazakh"
+
+#: ../rules/base.xml.in.h:591
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "Papan Ketik SILVERCREST Multimedia Wireless"
+
+#: ../rules/base.xml.in.h:592
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:593
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:594
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:595
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:597
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:598
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:599
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:600
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:601
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:602
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:603
+msgid "Semi-colon on third level"
+msgstr "Semi-kolon pada level ketiga"
+
+#: ../rules/base.xml.in.h:604
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:605
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:607
+msgid "Serbian"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:608
+msgid "Shift cancels Caps Lock"
+msgstr "Shift membatalkan Caps Lock"
+
+#: ../rules/base.xml.in.h:609
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift tidak membatalkan Num Lock, lebih memilih level ketiga"
+
+#: ../rules/base.xml.in.h:610
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shit dengan keypad numerik bekerja sesuai pada MS Windows"
+
+#: ../rules/base.xml.in.h:611
+msgid "Shift+Caps Lock"
+msgstr "Shift+Caps Lock"
+
+#: ../rules/base.xml.in.h:612
+msgid "Simple"
+msgstr "Sederhana"
+
+#: ../rules/base.xml.in.h:613
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:614
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: ../rules/base.xml.in.h:615
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: ../rules/base.xml.in.h:616
+msgid "South Africa"
+msgstr "Afrika Selatan"
+
+#: ../rules/base.xml.in.h:617
+msgid "Southern Uzbek"
+msgstr "Uzbek Selatan"
+
+#: ../rules/base.xml.in.h:618
+msgid "Spain"
+msgstr "Spanyol"
+
+#: ../rules/base.xml.in.h:619
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Tombol spesial (Ctrl+Alt+&lt;key&gt;) ditangani pada server"
+
+#: ../rules/base.xml.in.h:620
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:621
+msgid "Standard"
+msgstr "Standard"
+
+#: ../rules/base.xml.in.h:622
+msgid "Standard (Cedilla)"
+msgstr "Standard (Cedilla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:624
+msgid "Standard RSTU"
+msgstr "Standard RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:626
+msgid "Standard RSTU on Russian layout"
+msgstr "Standard RSTU pada layout Rusia"
+
+#: ../rules/base.xml.in.h:627
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:628
+msgid "Sun dead keys"
+msgstr "Tombol mati Matahari"
+
+#: ../rules/base.xml.in.h:629
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:630
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:631
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:632
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:633
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Tukar Ctrl dan Caps Lock"
+
+#: ../rules/base.xml.in.h:634
+msgid "Swap ESC and Caps Lock"
+msgstr "Tujar ESC dan Caps Lock"
+
+#: ../rules/base.xml.in.h:635
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:636
+msgid "Sweden"
+msgstr "Swedia"
+
+#: ../rules/base.xml.in.h:637
+msgid "Switzerland"
+msgstr "Switzerland"
+
+#: ../rules/base.xml.in.h:638
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:639
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:640
+msgid "Syria"
+msgstr "Syria"
+
+#: ../rules/base.xml.in.h:641
+msgid "Syriac"
+msgstr "Syriac"
+
+#: ../rules/base.xml.in.h:642
+msgid "Syriac phonetic"
+msgstr "Syriac phonetic"
+
+#: ../rules/base.xml.in.h:643
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:644
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: ../rules/base.xml.in.h:645
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../rules/base.xml.in.h:646
+msgid "Tamil Keyboard with Numerals"
+msgstr "Papan ketik Tamil dengan Angka"
+
+#: ../rules/base.xml.in.h:647
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB Typewriter"
+
+#: ../rules/base.xml.in.h:648
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII Typewriter"
+
+#: ../rules/base.xml.in.h:649
+msgid "Tamil Unicode"
+msgstr "Tamil Unicode"
+
+#: ../rules/base.xml.in.h:650
+msgid "Tanzania"
+msgstr "Tanzania"
+
+#: ../rules/base.xml.in.h:651
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:652
+msgid "Tatar"
+msgstr "Tatar"
+
+#: ../rules/base.xml.in.h:653
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:654
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:655
+msgid "Thailand"
+msgstr "Thailand"
+
+#: ../rules/base.xml.in.h:656
+msgid "Tibetan"
+msgstr "Tibetan"
+
+#: ../rules/base.xml.in.h:657
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetan (with ASCII numerals)"
+
+#: ../rules/base.xml.in.h:658
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:659
+msgid "Tifinagh alternative"
+msgstr "Tifinagh alternative"
+
+#: ../rules/base.xml.in.h:660
+msgid "Tifinagh alternative phonetic"
+msgstr "Tifinagh alternative phonetic"
+
+#: ../rules/base.xml.in.h:661
+msgid "Tifinagh extended"
+msgstr "Tifinagh extended"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh extended phonetic"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh phonetic"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tilde (~) variant"
+msgstr "Varian tilde (~)"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:667
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Ke tombol dalam papan ketik Dvorak."
+
+#: ../rules/base.xml.in.h:668
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Ke tombol dalam papan ketik Qwerty."
+
+#: ../rules/base.xml.in.h:669
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:670
+msgid "Traditional phonetic"
+msgstr "Traditional phonetic"
+
+#: ../rules/base.xml.in.h:671
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:672
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:673
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:675
+msgid "Turkey"
+msgstr "Turki"
+
+#: ../rules/base.xml.in.h:676
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: ../rules/base.xml.in.h:677
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:678
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:679
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:680
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (mode 102/105:EU)"
+
+#: ../rules/base.xml.in.h:681
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (mode 106:JP)"
+
+#: ../rules/base.xml.in.h:682
+msgid "Typewriter"
+msgstr "Typewriter"
+
+#: ../rules/base.xml.in.h:683
+msgid "Typewriter, legacy"
+msgstr "Typewriter, warisan"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:685
+msgid "UCW layout (accented letters only)"
+msgstr "UCW layout (accented letters only)"
+
+#: ../rules/base.xml.in.h:686
+msgid "US Dvorak with CZ UCW support"
+msgstr "US Dvorak dengan dukungan CZ UCW"
+
+#: ../rules/base.xml.in.h:687
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Papan ketik Amerika dengan Bosnia digraphs"
+
+#: ../rules/base.xml.in.h:688
+msgid "US keyboard with Bosnian letters"
+msgstr "Papan ketik Amerika dengan huruf Bosnia"
+
+#: ../rules/base.xml.in.h:689
+msgid "US keyboard with Croatian digraphs"
+msgstr "Papan ketik Amerika dengan Kroasia digraphs"
+
+#: ../rules/base.xml.in.h:690
+msgid "US keyboard with Croatian letters"
+msgstr "Papan ketik Amerika dengan huruf Kroasia"
+
+#: ../rules/base.xml.in.h:691
+msgid "US keyboard with Estonian letters"
+msgstr "Papan ketik Amerika dengan huruf Estonia"
+
+#: ../rules/base.xml.in.h:692
+msgid "US keyboard with Italian letters"
+msgstr "Papan ketik Amerika dengan huruf Italia"
+
+#: ../rules/base.xml.in.h:693
+msgid "US keyboard with Lithuanian letters"
+msgstr "Papan ketik Amerika dengan huruf Lituania"
+
+#: ../rules/base.xml.in.h:694
+msgid "US keyboard with Slovenian letters"
+msgstr "Papan ketik Amerika dengan huruf Slovenia"
+
+#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:696
+msgid "Udmurt"
+msgstr "Udmurt"
+
+#: ../rules/base.xml.in.h:697
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:698
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: ../rules/base.xml.in.h:699
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Tambahan unicode (panah dan operator matematika)"
+
+#: ../rules/base.xml.in.h:700
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Tambahan unicode (panah dan operator matematika). Operator matematika pada level standar"
+
+#: ../rules/base.xml.in.h:701
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:702
+msgid "United Kingdom"
+msgstr "Inggris Raya"
+
+#: ../rules/base.xml.in.h:703
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:704
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, Fonetik alternatif"
+
+#: ../rules/base.xml.in.h:705
+msgid "Urdu, Phonetic"
+msgstr "Urdu, Fonetik"
+
+#: ../rules/base.xml.in.h:706
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Tombol Win"
+
+#: ../rules/base.xml.in.h:707
+msgid "Use Bosnian digraphs"
+msgstr "Gunakan diagraph Bosnia"
+
+#: ../rules/base.xml.in.h:708
+msgid "Use Croatian digraphs"
+msgstr "Gunakan diagraph Kroasia"
+
+#: ../rules/base.xml.in.h:709
+msgid "Use guillemets for quotes"
+msgstr "Gunakan guillemets untuk tanda petik"
+
+#: ../rules/base.xml.in.h:710
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Gunakan papan ketik LED untuk menunjukkan layout alternatif"
+
+#: ../rules/base.xml.in.h:711
+msgid "Using space key to input non-breakable space character"
+msgstr "Menggunakan spasi untuk input karakter spasi yang tidak pecah"
+
+#: ../rules/base.xml.in.h:712
+msgid "Usual space at any level"
+msgstr "Tombol spasi biasa pada semua level"
+
+#: ../rules/base.xml.in.h:713
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:714
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: ../rules/base.xml.in.h:715
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:716
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "Papan Ketik Internet ViewSonic KU-306"
+
+#: ../rules/base.xml.in.h:717
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:718
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Wang 724 keypad dengan tambahan unicode (panah and operator matematika). "
+
+#: ../rules/base.xml.in.h:719
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Wang 724 keypad dengan tambahan unicode (panah and operator matematika). Operator matematika pada level standar"
+
+#: ../rules/base.xml.in.h:720
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:721
+msgid "Western"
+msgstr "Western"
+
+#: ../rules/base.xml.in.h:722
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:723
+msgid "Winkeys"
+msgstr "Tombol Win"
+
+#: ../rules/base.xml.in.h:724
+msgid "With &lt;\\|&gt; key"
+msgstr "Dengan &lt;\\|&gt; key;tombol"
+
+#: ../rules/base.xml.in.h:725
+msgid "With EuroSign on 5"
+msgstr "Dengan tanda Euro pada 5"
+
+#: ../rules/base.xml.in.h:726
+msgid "With guillemets"
+msgstr "Dengan guillemets"
+
+#: ../rules/base.xml.in.h:727
+msgid "Yahoo! Internet Keyboard"
+msgstr "Papan Ketik Internet Yahoo!"
+
+#: ../rules/base.xml.in.h:728
+msgid "Yakut"
+msgstr "Yakut"
+
+#: ../rules/base.xml.in.h:729
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:730
+msgid "Z and ZHE swapped"
+msgstr "menukar Z dan ZHE "
+
+#: ../rules/base.xml.in.h:731
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:732
+msgid "Zero-width non-joiner character at second level"
+msgstr "Karakter non-penggabung lebar-nol pada level kedua"
+
+#: ../rules/base.xml.in.h:733
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Karakter non-penggabung lebar-nol pada level kedua, karakter spasi non-dilepaskan pada level ketiga"
+
+#: ../rules/base.xml.in.h:734
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Karakter non-penggabung lebar-nol pada level kedua, karakter spasi non-dilepaskan pada level ketiga, tak ada di level keempat"
+
+#: ../rules/base.xml.in.h:735
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Karakter non-penggabung lebar-nol pada level ketiga, karakter spasi non-dilepaskan pada level ketiga, spasi non-dilepaskan tipis pada level keempat"
+
+#: ../rules/base.xml.in.h:736
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Karakter non-penggabung lebar-nol pada level kedua, karakter spasi non-dilepaskan pada level ketiga, penggabung lebar-nol pada level keempat"
+
+#: ../rules/base.xml.in.h:737
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Karakter non-penggabung lebar nol pada level kedua, karakter penggabung lebar-nol pada level ketiga"
+
+#: ../rules/base.xml.in.h:738
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Karakter non-penggabung pada level kedua, karakter penggabung lebar-nol pada level ketiga, karakter spasi non-dilepaskan pada level keempat"
+
+#: ../rules/base.xml.in.h:739
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Karakter non-penggabung lebar-nol pada level ketiga, penggabung lebar-nol pada level keempat"
+
+#: ../rules/base.xml.in.h:740
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:741
+msgid "azerty/digits"
+msgstr "azerty/angka"
+
+#: ../rules/base.xml.in.h:742
+msgid "digits"
+msgstr "digit"
+
+#: ../rules/base.xml.in.h:743
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "ganti titik koma dan tanda kutip (kuno)"
+
+#: ../rules/base.xml.in.h:744
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:745
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:746
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, ditambah Backslash"
+
+#: ../rules/base.xml.in.h:747
+msgid "qwerty/digits"
+msgstr "qwertz/angka"
+
+#: ../rules/base.xml.in.h:748
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avestan"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Menggabungkan aksen ketimbang tombol mati"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Internasional (AltGr menggabungkan Unicode)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Internasional (AltGr menggabungkan Unicode, alternatif)"
+
+#~ msgid "CapsLock"
+#~ msgstr "CapsLock"
+
+#~ msgid "ScrollLock"
+#~ msgstr "ScrollLock"
+
+#~ msgid "ACPI Standard"
+#~ msgstr "ACPI Standard"
+
+#~ msgid "Bhu"
+#~ msgstr "Bhu"
+
+#~ msgid "DRC"
+#~ msgstr "DRC"
+
+#~ msgid "Dvorak international"
+#~ msgstr "Dvorak international"
+
+#~ msgid "Evdev-managed keyboard"
+#~ msgstr "Evdev-managed keyboard"
+
+#~ msgid "Gre"
+#~ msgstr "Gre"
+
+#~ msgid "Gui"
+#~ msgstr "Gui"
+
+#~ msgid "Lav"
+#~ msgstr "Lav"
+
+#~ msgid "Nep"
+#~ msgstr "Nep"
+
+#~ msgid "SrL"
+#~ msgstr "Srl"
+
+#~ msgid "Baltic+"
+#~ msgstr "Baltic+"
+
+#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "Pro Keypad"
+#~ msgstr "Pro Keypad"
+
+#~ msgid "Standard Phonetic"
+#~ msgstr "Fonetik Standar"
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "Brazilian ABNT2"
+
+#~ msgid "Japanese 106-key"
+#~ msgstr "Japanese 106-key"
+
+#~ msgid "Kir"
+#~ msgstr "Kir"
+
+#~ msgid "Korean 106-key"
+#~ msgstr "Korean 106-key"
+
+#~ msgid "Super is mapped to Win keys"
+#~ msgstr "Super dipetakan ke tombol Win"
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "Keyboard Amerika dengan Slovenia digraph"
+
+#~ msgid "Unicode"
+#~ msgstr "Unicode"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Gunakan diagraph Slovenia "
+
+#~ msgid "Add the EuroSign to the 2 key."
+#~ msgstr "Tambah tanda Euro ke tombol 2"
+
+#~ msgid "Add the EuroSign to the 4 key."
+#~ msgstr "Tambah tanda Euro ke tombol 4"
+
+#~ msgid "Add the EuroSign to the 5 key."
+#~ msgstr "Tambah tanda Euro ke tombol 5"
+
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "Tambah tanda Euro ke tombol E"
+
+#~ msgid "Alt+Ctrl change layout."
+#~ msgstr "Alt+Ctrl mengubah layout."
+
+#~ msgid "Alt+Shift change layout."
+#~ msgstr "Alt+Shift mengubah layout."
+
+#~ msgid "CapsLock LED shows alternative layout."
+#~ msgstr "CapsLock LED menunjukkan layout alternatif."
+
+#~ msgid "CapsLock just locks the Shift modifier."
+#~ msgstr "CapsLock hanya mengunci modifier Shift."
+
+#~ msgid "CapsLock key changes layout."
+#~ msgstr "Tombol CapsLock mengubah layout."
+
+#~ msgid "Ctrl+Shift change layout."
+#~ msgstr "Ctrl+Shift mengubah layout."
+
+#~ msgid "Hewlett-Packard Internet Keyboard 5181"
+#~ msgstr "Hewlett-Packard Internet Keyboard 5181"
+
+#~ msgid "Hewlett-Packard Internet Keyboard 5185"
+#~ msgstr "Hewlett-Packard Internet Keyboard 5185"
+
+#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+#~ msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#~ msgid "IBM Rapid Access II (alternate option)"
+#~ msgstr "IBM Rapid Access II (pilihan alternatif)"
+
+#~ msgid "LCtrl+LShift change layout."
+#~ msgstr "LCtrl+LShift mengubah layout."
+
+#~ msgid "Layout switching"
+#~ msgstr "Layout switching"
+
+#~ msgid "Left Alt key changes layout."
+#~ msgstr "Alt Kiri mengubah layout."
+
+#~ msgid "Left Ctrl key changes layout."
+#~ msgstr "Ctrl Kiri mengubah layout."
+
+#~ msgid "Left Shift key changes layout."
+#~ msgstr "Shift Kiri mengubah layout."
+
+#~ msgid "Left Win-key changes layout."
+#~ msgstr "Tombol Win Kiri mengubah layout."
+
+#~ msgid "Left Win-key is Compose."
+#~ msgstr "Tombol Win Kiri adaalah Compose."
+
+#~ msgid "Legacy keypad"
+#~ msgstr "Legacy keypad"
+
+#~ msgid "Menu is Compose."
+#~ msgstr "Menu adalah Compose"
+
+#~ msgid "Neostyle"
+#~ msgstr "Neostyle"
+
+#~ msgid "NumLock LED shows alternative layout."
+#~ msgstr "NumLock LED menunjukkan layout alternatif."
+
+#~ msgid "Press Left Alt key to choose 3rd level."
+#~ msgstr "Tekan Alt Kiri untuk memilih level 3."
+
+#~ msgid "Press Left Win-key to choose 3rd level."
+#~ msgstr "Tekan tombol Win Kiri untuk memilih level 3."
+
+#~ msgid "Press Right Alt key to choose 3rd level."
+#~ msgstr "Tekan Alt Kanan untuk memilih level 3."
+
+#~ msgid "Press Right Ctrl to choose 3rd level."
+#~ msgstr "Tekan Ctrl Kanan untuk memilih level 3."
+
+#~ msgid "Press Right Win-key to choose 3rd level."
+#~ msgstr "Tekan tombol Win Kanan untuk memilih level 3."
+
+#~ msgid "Press any of Alt keys to choose 3rd level."
+#~ msgstr "Tekan tombol Alt manasaja untuk memilih level 3."
+
+#~ msgid "Press any of Win-keys to choose 3rd level."
+#~ msgstr "Tekan tombol Win manasaja untuk memilih level 3."
+
+#~ msgid "Right Alt is Compose."
+#~ msgstr "Alt Kanan adalah Compose"
+
+#~ msgid "Right Alt key changes layout."
+#~ msgstr "Alt Kanan mengubah layout."
+
+#~ msgid "Right Ctrl key changes layout."
+#~ msgstr "Ctrl Kanan mengubah layout."
+
+#~ msgid "Right Shift key changes layout."
+#~ msgstr "Shift Kanan mengubah layout."
+
+#~ msgid "Right Win-key changes layout."
+#~ msgstr "Tombol Win Kanan mengubah layout."
+
+#~ msgid "Right Win-key is Compose."
+#~ msgstr "Tombol Win Kanan adalah Compose."
+
+#~ msgid "ScrollLock LED shows alternative layout."
+#~ msgstr "ScrollLock LED menunjukkan layout alternatif."
+
+#~ msgid "Shift+CapsLock changes layout."
+#~ msgstr "Shift+CapsLock mengubah layout."
+
+#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+#~ msgstr "Tukar keycode dari 2 tombol ketika keyboard Mac salah terdeteksi oleh kernel."
+
+#~ msgid "Third level choosers"
+#~ msgstr "Pilihan level 3"
+
+#~ msgid "Urdu"
+#~ msgstr "Urdu"
diff --git a/xorg-server/xkeyboard-config/po/pl.po b/xorg-server/xkeyboard-config/po/pl.po
index 71a5e306b..917cc720c 100644
--- a/xorg-server/xkeyboard-config/po/pl.po
+++ b/xorg-server/xkeyboard-config/po/pl.po
@@ -1,3020 +1,3096 @@
-# Polish translation for xkeyboard-config.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2009-2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-16 21:41+0200\n"
-"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
-"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Mniejsze/Większe&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Mniejsze/Większe&gt; wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Mniejsze/Większe&gt; wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(stary) alternatywny"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(stary) alternatywny, klawisze akcentów Suna"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(stary) alternatywny, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "Kompatybilny ze 101/104 klawiszami"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/QWERTY/przecinek/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/QWERTY/przecinek/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/QWERTY/kropka/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/QWERTY/kropka/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/QWERTZ/przecinek/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/QWERTZ/przecinek/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/QWERTZ/kropka/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/QWERTZ/kropka/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/QWERTY/przecinek/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/QWERTY/przecinek/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/QWERTY/kropka/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/QWERTY/kropka/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/QWERTZ/przecinek/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/QWERTZ/przecinek/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/QWERTZ/kropka/Klawisze akcentów"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/QWERTZ/kropka/Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "ATM/telefoniczna"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Laptop Acer"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Dodanie standardowego działania klawisza Menu"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Dodanie akcentów przeciągłych Esperanto (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Dodanie znaku euro do pewnych klawiszy"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "AFG"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afgański"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "ALB"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albański"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt i Meta pod klawiszami Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt pod prawym Win, Super pod Menu"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Spacja"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Zachowanie klawiszy Alt/Win"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternatywny"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Anternatywny wschodni"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternatywny fonetyczny"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternatywny międzynarodowy"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternatywny, klawisze akcentów Suna"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternatywny, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternatywny, tylko latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "AND"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorski"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Dowolny klawisz Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Dowolny klawisz Win"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Dowolny klawisz Win (wciśnięty)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Wariant z apostrofem (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Apple Aluminium Keyboard (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Apple Aluminium Keyboard (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Apple Aluminium Keyboard (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Apple Aluminium Keyboard: emulacja klawiszy PC (Print, ScrollLock, Pause, NumLock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Laptop Apple"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "ARA"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Arabski"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "ARM"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armeński"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Wariant asturski z H i L z dolną kropką"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Laptop Asus"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "W lewym dolnym rogu"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Z lewej 'A'"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Austriacki"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "AZE"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Azerbejdżański"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Backslash"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Bangladeski"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Baszkirski"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "BEL"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Białoruski"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Belgijski"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Bengalski"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Bengalski Probhat"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomiczny, w stylu Dvoraka"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomiczny, w stylu Dvoraka, tylko latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "BGD"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "BGR"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhutański"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Hebrajski biblijny (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "BIH"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "BLR"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bośniacko-hercegowiński"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Oba klawisze Alt naraz"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Oba klawisze Ctrl naraz"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Oba klawisze Shift naraz"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Oba klawisze Shift naraz przełączają CapsLock"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Botswański"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "BRA"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Braille'a"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Brazylijski"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Bretoński"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "BRL"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "BTN"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bułgarski"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "BWA"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Kambodżański"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "CAN"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Kanadyjski"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "CapsLock (do pierwszego układu), Shift+CapsLock (do ostatniego układu)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "CapsLock (wciśnięty), Alt+CapsLock działa jak zwykły CapsLock"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "CapsLock działa jako Shift z blokadą. Shift wstrzymuje CapsLock"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "CapsLock działa jako Shift z blokadą. Shift nie wpływa na CapsLock"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "CapsLock wyłączony"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Zachowanie klawisza CapsLock"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "CapsLock przełącza Shift wpływając na wszystkie klawisze"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "CapsLock przełącza wielkość znaków alfabetycznych"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "CapsLock używa wewnętrznej zmiany rozmiaru liter. Shift wstrzymuje CapsLock"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "CapsLock używa wewnętrznej zmiany rozmiaru liter. Shift nie wpływa na CapsLock"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Wariant kataloński z L ze środkową kropką"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Cedilla"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "CHE"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Czerokeski"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (opcja zmiany)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "Chiński"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "CHN"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Czuwaski"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Czuwaski łaciński"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Klasyczny"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Klasyczny Dvoraka"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Klasyczny, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "Szkocki gaelicki"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 klawiszy)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 klawiszy)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 klawiszy)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Położenie klawisza Compose"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongijski"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control pod klawiszami Alt, Alt pod klawiszami Win"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control pod klawiszami Win (oraz zwykłymi klawiszami Ctrl)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Krymskotatarski (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Krymskotatarski (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Krymskotatarski (turecki Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Krymskotatarski (turecki F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Krymskotatarski (turecki Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Chorwacki"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Położenie klawisza Ctrl"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Cyrylicki"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Cyrylicki z cudzysłowami"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Cyrylicki, zamienione Z i Ż"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "CZE"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Czeski"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Akcent ostry"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Akcent gravis"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Domyślne klawisze klawiatury numerycznej"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Laptop/notebook Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Laptop/notebook z serii Dell Precision M"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Laptop z serii Dell Latitude"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Duński"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "DEU"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond z serii 9801 / 9802"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "DNK"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvoraka"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvoraka (znaki przestankowe UK)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Alternatywny międzynarodowy Dvoraka (bez klawiszy akcentów)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Międzynarodowy Dvoraka (z klawiszami akcentów)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvoraka, polskie cudzysłowy pod klawiszem 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvoraka, polskie cudzysłowy pod klawiszem cudzysłowu"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Wschodni"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Włączenie dodatkowych znaków typograficznych"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Angielski"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Angielski (USA - międzynarodowy)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Angielski (USA - Macintosh)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Enter na klawiaturze numerycznej"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "EPO"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Ergonomiczny"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "ESP"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Esperancki"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "EST"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Estoński"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "ETH"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Etiopski"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Rozszerzony"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Rozszerzony - klawisze Win"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Rozszerzony backslash"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "Wariant z literą F (F)"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Wysp Owczych"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "FIN"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Fiński"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Klawisz czterofunkcyjny z abstrakcyjnymi separatorami"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Klawisz czterofunkcyjny z przecinkiem"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Klawisz czterofunkcyjny z kropką"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Klawisz czterofunkcyjny z kropką, tylko latin-9"
-
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Klawisz czterofunkcyjny ze znakiem momayyez"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "FRA"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Francuski"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Francuski (Francja - alternatywny)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Francuski"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Francuski (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Francuski (stary)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Francuski Dvoraka"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Francuski, klawisze akcentów Suna"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Francuski, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "FRO"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Laptop Fujitsu-Siemens Computers AMILO"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fulani"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "Zwykła PC 101-klawiszowa"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "Zwykła PC 102-klawiszowa (Intl)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "Zwykła PC 104-klawiszowa"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "Zwykła PC 105-klawiszowa (Intl)"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "GEO"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Gruziński"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Gruziński"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Gruziński AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Niemiecki (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Niemiecki, klawisze akcentów Suna"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Niemiecki, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Niemiecki"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "GHA"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Ghański"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "GIN"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "GRC"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Grecki"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Gwinejski"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Gudźarati"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Keyboard"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking Keyboard for Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Hausa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Szesnastkowy"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Homofoniczny"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "HRV"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "HUN"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Węgierski"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper pod klawiszami Win"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "Zmienny ISO"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Islandzki"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Ibo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Dołączenie tyldy górnej"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "IND"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Indyjski"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "Międzynarodowy (klawisze akcentów pod AltGr)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "Międzynarodowy (z klawiszami akcentów)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Irański"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Iracki"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Irlandzki"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "IRL"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "IRN"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "IRQ"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "ISL"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "ISR"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Izraelski"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "ITA"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Włoski"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Japoński"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Japoński (serie PC-98xx)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Opcje klawiatury japońskiej"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "JPN"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Kałmucki"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "Blokujący klawisz Kana Lock"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Kaszubski"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "KAZ"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kazaski z rosyjskim"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kazachstański"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "KEN"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Kenijski"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Sekwencja klawiszy zabijająca serwer X"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Klawisz wybierający poziom 3."
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Klawisz wybierający poziom 5."
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Klawisze zmieniające układ"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "KGZ"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "KHM"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Kikiju"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "KOR"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Koreański"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Kutanejski"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kurdyjski (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdyjski, arabsko-łaciński"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdyjski, łaciński Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kurdyjski, łaciński Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kirgijski"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Laoski"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Klawiatura laptopowa Compaq (np. Armada)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Klawiatura internetowa laptopów/notebooków Compaq (np. Presario)"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Łaciński"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Ameryki Łacińskiej"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Łaciński Unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Łaciński QWERTY Unicode"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Łaciński QWERTY"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Łaciński"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Łaciński QWERTY Unicode"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Łaciński z cudzysłowami"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Łotewski"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Przełączanie układu klawiszem mnożenia/dzielenia"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Lewy Alt"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Lewy Alt (wciśnięty)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Lewy Alt zamieniony z lewym Win"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Lewy Ctrl"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Lewy Ctrl (do pierwszego układu), prawy Ctrl (do ostatniego układu)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Lewy Ctrl+lewy Shift"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Lewy Shift"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Lewy Win"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Lewy Win (do pierwszego układu), prawy Win/Menu (do ostatniego układu)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Lewy Win (wciśnięty)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Lewy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Lewy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Leworęczny"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Leworęczny Dvoraka"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Stary"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Legacy Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Klawisz tradycyjny z przecinkiem"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Klawisz tradycyjny z kropką"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Litewski"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "LKA"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (opcja zmiany)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (opcja zmiany 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 - dodatkowe glawisze poprzez G15daemon"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Generic Keyboard"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Dolnołużycki"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "Dolnołużycki (QWERTZ)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "LTU"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "LVA"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Macedoński"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (międzynarodowy)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh - stary"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, klawisze akcentów Suna"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "CapsLock jako dodatkowy Backspace"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "CapsLock jako dodatkowy Ctrl"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "CapsLock jako dodatkowy Esc"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "CapsLock jako dodatkowy Hyper"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "CapsLock jako dodatkowy NumLock"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "CapsLock jako dodatkowy Super"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malajalam"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malajalam Lalitha"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Malediwski"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Maltański"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Klawiatura maltańska z układem US"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "MAO"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Maoryski"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "MDV"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta pod lewym Win"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta pod klawiszami Win"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Swedish"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Różne opcje kompatybilności"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "MKD"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "MLI"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "MLT"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "MMR"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "MNG"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Mongolski"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Czarnogórski"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Marokański"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Wielojęzyczny"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Wielojęzyczny, część pierwsza"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Wielojęzyczny, część druga"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Myanmarski"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "Backspace w stylu NICOLA-F"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo dla esperanto"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo dla klawiatur USA"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Nepalski"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Holenderski"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Nowy fonetyczny"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "NGA"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Nigeryjski"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "NLD"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Znak niełamliwej spacji na poziomie 4."
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Znak niełamliwej spacji na poziomie 4., wąskiej niełamliwej spacji na poziomie 6."
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Znak niełamliwej spacji na poziomie 4., wąskiej niełamliwej spacji na poziomie 6. (z Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "Znak niełamliwej spacji na poziomie 2."
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "Znak niełamliwej spacji na poziomie 3."
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Znak niełamliwej spacji na poziomie 3., nic na poziomie 4."
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Znak niełamliwej spacji na poziomie 3., wąskiej niełamliwej spacji na poziomie 4."
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "NOR"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Północnolapoński"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Północnolapoński, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Norweski"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "NPL"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Zachowanie klawisza Delete na klawiaturze numerycznej"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Klawiatura numeryczna działająca jak w Macu"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Wybór układu klawiatury numerycznej"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC pasztuński"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC południowouzbecki"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "Okcytański"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Orija"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "Osetyjski"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "Osetyjski, klawisze Win"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "Osetyjski, stary"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "Serie PC-98xx"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "PAK"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Pakistański"
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Rusiński homofoniczny"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Pasztuński"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Pauza"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Perski, z perską klawiaturą numeryczną"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Fonetyczny"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Fonetyczny z klawiszami Win"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "POL"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Polski"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Politoniczny"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Portugalski"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Dvoraka programisty"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "PRT"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Prawy Alt"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Prawy Alt (wciśnięty)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Prawy Alt wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Prawy Alt wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Prawy Alt nigdy nie wybierający poziomu 3."
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Prawy Alt, Shift+prawy Alt jako Multi_Key"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Prawy Ctrl"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Prawy Ctrl (wciśnięty)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Prawy Ctrl jako prawy Alt"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Prawy Ctrl+prawy Shift"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Prawy Shift"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Prawy Win"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Prawy Win (wciśnięty)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Prawy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Prawy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Praworęczny"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Praworęczny Dvoraka"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Rumuński"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Klawiatura rumuńska z literami niemieckimi"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Klawiatura rumuńska z literami niemieckimi, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "ROU"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "RUS"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Rosyjski"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Rosyjski"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Rosyjski fonetyczny"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Rosyjski fonetyczny Dvoraka"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Rosyjski fonetyczny, bez klawiszy akcentów"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Rosyjski z kazaskim"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "ScrollLock"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Shuswap"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Średnik na poziomie 3."
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "SEN"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Senegalski"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Serbski"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Serbski"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Shift anuluje CapsLock"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Shift nie anuluje NumLocka, wybiera poziom 3."
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift z klawiaturą numeryczną działą jak pod MS Windows"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "Prosty"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Sindhi"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Słowacki"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Słoweński"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Południowoafrykański"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Południowouzbecki"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Hiszpański"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Klawisze specjalne (Ctrl+Alt+&lt;klawisz&gt;) obsługiwane przez serwer"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Sri Lanki"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Standardowy"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Standardowy (Cedilla)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "Standardowy RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "Standardowy RSTU przy rosyjskim układzie"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Klawisze akcentów Suna"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "SVK"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "SVN"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Zamiana Ctrl i CapsLocka"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Zamiana Esc i CapsLocka"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "SWE"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Szwedzki"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Szwajcarski"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "SYR"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Syryjski"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Syryjski"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Syryjski fonetyczny"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Tadżykistański"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Tamilski"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Klawiatura tamilska z cyframi"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Tamilski maszyny do pisania TAB"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamilski maszyny do pisania TSCII"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Tamilski Unicode"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Tanzański"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Tatarski"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "THA"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Tajlandzki"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Tybetański"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tybetański (z liczbami ASCII)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Alternatywny tifinagh"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Alternatywny fonetyczny tifinagh"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Rozszerzony tifinagh"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Rozszerzony fonetyczny tifinagh"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Tifinagh fonetyczny"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Wariant z tyldą (~)"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "TJK"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "TKM"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Pod odpowiednimi klawiszami wg układu Dvoraka."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Pod odpowiednimi klawiszami wg układu QWERTY."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Tradycyjny fonetyczny"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "TUR"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Turecki"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Turkmeński"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (tryb 102/105:EU)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (tryb 106:JP)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Maszynistki"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Maszynistki, stary"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "TZA"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "Układ UCW (tylko litery akcentowane)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "US Dvoraka z obsługą CZ UCW"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Klawiatura US z dwuznakami bośniackimi"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "Klawiatura US z literami bośniackimi"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "Klawiatura US z dwuznakami chorwacki"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "Klawiatura US z literami chorwackimi"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "Klawiatura US z literami estońskimi"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "Klawiatura US z literami włoskimi"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "Klawiatura US z literami litewskimi"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "Klawiatura US z literami słoweńskimi"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "Udmurcki"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "UKR"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "Ukraiński"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Dodatki Unicode (strzałki i symbole matematyczne)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Dodatki Unicode (strzałki i symbole matematyczne). Symbole matematyczne na poziomie domyślnym"
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "Brytyjski"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu - alternatywny fonetyczny"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Urdu - fonetyczny"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Urdu - klawisze Win"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Używanie dwuznaków bośniackich"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Używanie dwuznaków chorwackich"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Używanie cudzysłowów do cytowania"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Używanie diody na klawiaturze do sygnalizacji układu alternatywnego"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Używanie klawisza spacji do wprowadzania znaku niełamliwej spacji"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Zwykła spacja na dowolnym poziomie"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "UZB"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Uzbecki"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Wietnamski"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "VNM"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Klawiatura numeryczna Wang 724 z dodatkami Unicode (strzałki i symbole matematyczne)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Klawiatura numeryczna Wang 724 z dodatkami Unicode (strzałki i symbole matematyczne). Symbole matematyczne na poziomie domyślnym"
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 AZERTY"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Zachodni"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Klawisze Win"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "Z klawiszem &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "Ze znakiem euro na 5"
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "Z cudzysłowami"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Jakucki"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Joruba"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "Zamienione Z i Ż"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "ZAF"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 2."
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3."
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3., nic na poziomie 4."
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3., wąskiej niełamliwej spacji na poziomie 4."
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3., znak łączący zerowej szerokości na poziomie 4."
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak łączący zerowej szerokości na poziomie 3."
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak łączący zerowej szerokości na poziomie 3., znak niełamliwej spacji na poziomie 4."
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Znak rozdzielający zerowej szerokości na poziomie 3., znak łączący zerowej szerokości na poziomie 4."
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "AZERTY"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "AZERTY/cyfry"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "cyfry"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "zamieniony średnik i apostrof (przestarzałe)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "QWERTY"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "QWERTY, rozszerzony Backslash"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "QWERTY/cyfry"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "QWERTZ"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "Awestyjski"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Łączenie akcentów zamiast klawiszy akcentów"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "Międzynarodowy (łączenie Unicode z AltGr)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Międzynarodowy (łączenie Unicode z AltGr, alternatywny)"
+# Polish translation for xkeyboard-config.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2009-2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-12 19:01+0100\n"
+"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Mniejsze/Większe&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Mniejsze/Większe&gt; wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Mniejsze/Większe&gt; wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(stary) alternatywny"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(stary) alternatywny, klawisze akcentów Suna"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(stary) alternatywny, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "Kompatybilny ze 101/104 klawiszami"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/QWERTY/przecinek/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/QWERTY/przecinek/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/QWERTY/kropka/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/QWERTY/kropka/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/QWERTZ/przecinek/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/QWERTZ/przecinek/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/QWERTZ/kropka/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/QWERTZ/kropka/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/QWERTY/przecinek/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/QWERTY/przecinek/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/QWERTY/kropka/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/QWERTY/kropka/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/QWERTZ/przecinek/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/QWERTZ/przecinek/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/QWERTZ/kropka/Klawisze akcentów"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/QWERTZ/kropka/Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "ATM/telefoniczna"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Laptop Acer"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "Dodanie standardowego działania klawisza Menu"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Dodanie akcentów przeciągłych Esperanto (supersigno)"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Dodanie znaków walut do pewnych klawiszy"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "AFG"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Afgański"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "ALB"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Albański"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt i Meta pod klawiszami Alt"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt pod prawym Win, Super pod Menu"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+CapsLock"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Spacja"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Zachowanie klawiszy Alt/Win"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Alternatywny"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Anternatywny wschodni"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Alternatywny fonetyczny"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Alternatywny międzynarodowy"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Alternatywny, klawisze akcentów Suna"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternatywny, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Alternatywny, tylko latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "AND"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorski"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Dowolny klawisz Alt"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Dowolny klawisz Win"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Dowolny klawisz Win (wciśnięty)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Wariant z apostrofem (')"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apple Aluminium Keyboard (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apple Aluminium Keyboard (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apple Aluminium Keyboard (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apple Aluminium Keyboard: emulacja klawiszy PC (Print, ScrollLock, Pause, NumLock)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Laptop Apple"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "ARA"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Arabski"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "ARM"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Armeński"
+
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Wariant asturski z H i L z dolną kropką"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Laptop Asus"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "W lewym dolnym rogu"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "Z lewej 'A'"
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Austriacki"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "AZE"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Azerbejdżański"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Backslash"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Bangladeski"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Baszkirski"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "BEL"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Białoruski"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Belgijski"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Bengalski"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Bengalski Probhat"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomiczny, w stylu Dvoraka"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomiczny, w stylu Dvoraka, tylko latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "BGD"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "BGR"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Bhutański"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Hebrajski biblijny (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "BIH"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "BLR"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Bośniacko-hercegowiński"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "Oba klawisze Alt naraz"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "Oba klawisze Ctrl naraz"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "Oba klawisze Shift naraz"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Oba klawisze Shift naraz przełączają CapsLock"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Botswański"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "BRA"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Braille'a"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Brazylijski"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Bretoński"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "BRL"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "BTN"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Bułgarski"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "BWA"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Kambodżański"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "CAN"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Kanadyjski"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Capewella-Dvoraka (baybayin)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Capewella-Dvoraka (łaciński)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Capewella-QWERF 2006 (baybayin)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Capewella-QWERF 2006 (łaciński)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "CapsLock"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "CapsLock (do pierwszego układu), Shift+CapsLock (do ostatniego układu)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "CapsLock (wciśnięty), Alt+CapsLock działa jak zwykły CapsLock"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "CapsLock działa jako Shift z blokadą. Shift wstrzymuje CapsLock"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "CapsLock działa jako Shift z blokadą. Shift nie wpływa na CapsLock"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "CapsLock wyłączony"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Zachowanie klawisza CapsLock"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "CapsLock przełącza Shift wpływając na wszystkie klawisze"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "CapsLock przełącza wielkość znaków alfabetycznych"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "CapsLock używa wewnętrznej zmiany rozmiaru liter. Shift wstrzymuje CapsLock"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "CapsLock używa wewnętrznej zmiany rozmiaru liter. Shift nie wpływa na CapsLock"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Wariant kataloński z L ze środkową kropką"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Cedilla"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "CHE"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Czerokeski"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (opcja zmiany)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "Chiński"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "CHN"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Czuwaski"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Czuwaski łaciński"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Klasyczny"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Klasyczny Dvoraka"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Klasyczny, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "Szkocki gaelicki"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Colemak (baybayin)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Colemak (łaciński)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 klawiszy)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 klawiszy)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 klawiszy)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "Położenie klawisza Compose"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongijski"
+
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control pod klawiszami Alt, Alt pod klawiszami Win"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control pod klawiszami Win (oraz zwykłymi klawiszami Ctrl)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Krymskotatarski (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Krymskotatarski (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Krymskotatarski (turecki Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Krymskotatarski (turecki F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Krymskotatarski (turecki Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Chorwacki"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Położenie klawisza Ctrl"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Cyrylicki"
+
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Cyrylicki z cudzysłowami"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Cyrylicki, zamienione Z i Ż"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "CZE"
+
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Czeski"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Akcent ostry"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Akcent gravis"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Domyślne klawisze klawiatury numerycznej"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Laptop/notebook Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Laptop/notebook z serii Dell Precision M"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Laptop z serii Dell Latitude"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Duński"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "DEU"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond z serii 9801 / 9802"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "DNK"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Dvoraka"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Dvoraka (baybayin)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Dvoraka (łaciński)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvoraka (znaki przestankowe UK)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Alternatywny międzynarodowy Dvoraka (bez klawiszy akcentów)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Międzynarodowy Dvoraka (z klawiszami akcentów)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvoraka, polskie cudzysłowy pod klawiszem 1"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvoraka, polskie cudzysłowy pod klawiszem cudzysłowu"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Wschodni"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Włączenie dodatkowych znaków typograficznych"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Angielski"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Angielski (USA - międzynarodowy)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Angielski (USA - Macintosh)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Angielski ze znakiem rupi"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Enter na klawiaturze numerycznej"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "EPO"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonomiczny"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "ESP"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "Esperancki"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "EST"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Estoński"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "ETH"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Etiopski"
+
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Euro pod 2"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Euro pod 4"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Euro pod 5"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Euro pod E"
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Rozszerzony"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Rozszerzony - klawisze Win"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Rozszerzony backslash"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "Wariant z literą F (F)"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Wysp Owczych"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "FIN"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Fiński"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Klawisz czterofunkcyjny z abstrakcyjnymi separatorami"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Klawisz czterofunkcyjny z przecinkiem"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Klawisz czterofunkcyjny z kropką"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Klawisz czterofunkcyjny z kropką, tylko latin-9"
+
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Klawisz czterofunkcyjny ze znakiem momayyez"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "FRA"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "Francuski"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Francuski (Francja - alternatywny)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Francuski"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Francuski (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Francuski (stary)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Francuski Dvoraka"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Francuski, klawisze akcentów Suna"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Francuski, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "FRO"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Laptop Fujitsu-Siemens Computers AMILO"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fulani"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "Zwykła PC 101-klawiszowa"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "Zwykła PC 102-klawiszowa (Intl)"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "Zwykła PC 104-klawiszowa"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "Zwykła PC 105-klawiszowa (Intl)"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "GEO"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Gruziński"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Gruziński"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Gruziński AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Niemiecki (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Niemiecki, klawisze akcentów Suna"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Niemiecki, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Niemiecki"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "GHA"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Ghański"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "GIN"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "GRC"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Grecki"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Gwinejski"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Gudźarati"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Keyboard"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking Keyboard for Mac"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "Hausa"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Szesnastkowy"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Homofoniczny"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "HRV"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "Telefon HTC Dream"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "HUN"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Węgierski"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper pod klawiszami Win"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "Zmienny ISO"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Islandzki"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Ibo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Dołączenie tyldy górnej"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "IND"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "Indyjski"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "Międzynarodowy (klawisze akcentów pod AltGr)"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "Międzynarodowy (z klawiszami akcentów)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Irański"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Iracki"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Irlandzki"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "IRL"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "IRN"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "IRQ"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "ISL"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "ISR"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Izraelski"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "ITA"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Włoski"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Japoński"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Japoński (serie PC-98xx)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Opcje klawiatury japońskiej"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "JPN"
+
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Kałmucki"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kana 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "Blokujący klawisz Kana Lock"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Kaszubski"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "KAZ"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "Kazaski z rosyjskim"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Kazachstański"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "KEN"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Kenijski"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Sekwencja klawiszy zabijająca serwer X"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Klawisz wybierający poziom 3."
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Klawisz wybierający poziom 5."
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "Klawisze zmieniające układ"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "KGZ"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "KHM"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Kikiju"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "KOR"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Koreański"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Kutanejski"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Kurdyjski (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdyjski, arabsko-łaciński"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdyjski, łaciński Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Kurdyjski, łaciński Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Kirgijski"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Laoski"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Klawiatura laptopowa Compaq (np. Armada)"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Klawiatura internetowa laptopów/notebooków Compaq (np. Presario)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Łaciński"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Ameryki Łacińskiej"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Łaciński Unicode"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Łaciński QWERTY Unicode"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Łaciński QWERTY"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Łaciński"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Łaciński QWERTY Unicode"
+
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Łaciński z cudzysłowami"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Łotewski"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Przełączanie układu klawiszem mnożenia/dzielenia"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Lewy Alt"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Lewy Alt (wciśnięty)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "Lewy Alt zamieniony z lewym Win"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Lewy Ctrl"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Lewy Ctrl (do pierwszego układu), prawy Ctrl (do ostatniego układu)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Lewy Ctrl+lewy Shift"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Lewy Shift"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Lewy Win"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Lewy Win (do pierwszego układu), prawy Win/Menu (do ostatniego układu)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Lewy Win (wciśnięty)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Lewy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Lewy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Leworęczny"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Leworęczny Dvoraka"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Stary"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Legacy Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Klawisz tradycyjny z przecinkiem"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Klawisz tradycyjny z kropką"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Litewski"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "LKA"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (opcja zmiany)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (opcja zmiany 2)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 - dodatkowe glawisze poprzez G15daemon"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Generic Keyboard"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Dolnołużycki"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Dolnołużycki (QWERTZ)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "LTU"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "LVA"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Macedoński"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (międzynarodowy)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Macintosh - stary"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, klawisze akcentów Suna"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "CapsLock jako dodatkowy Backspace"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "CapsLock jako dodatkowy Ctrl"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "CapsLock jako dodatkowy Esc"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "CapsLock jako dodatkowy Hyper"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "CapsLock jako dodatkowy NumLock"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "CapsLock jako dodatkowy Super"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Malajalam"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Malajalam Lalitha"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Malediwski"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Maltański"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Klawiatura maltańska z układem US"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "MAO"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Maoryski"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Maryjski"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "MDV"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "Meta pod lewym Win"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "Meta pod klawiszami Win"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta pod lewym Ctrl"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Swedish"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Różne opcje kompatybilności"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "MKD"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "MLI"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "MLT"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "MMR"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "MNG"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Mongolski"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Czarnogórski"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Marokański"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Wielojęzyczny"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Wielojęzyczny, część pierwsza"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Wielojęzyczny, część druga"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Myanmarski"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "Backspace w stylu NICOLA-F"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Nativo dla esperanto"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Nativo dla klawiatur USA"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Nepalski"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Holenderski"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Nowy fonetyczny"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "NGA"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Nigeryjski"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "NLD"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Znak niełamliwej spacji na poziomie 4."
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Znak niełamliwej spacji na poziomie 4., wąskiej niełamliwej spacji na poziomie 6."
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Znak niełamliwej spacji na poziomie 4., wąskiej niełamliwej spacji na poziomie 6. (z Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "Znak niełamliwej spacji na poziomie 2."
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "Znak niełamliwej spacji na poziomie 3."
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Znak niełamliwej spacji na poziomie 3., nic na poziomie 4."
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Znak niełamliwej spacji na poziomie 3., wąskiej niełamliwej spacji na poziomie 4."
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "NOR"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Północnolapoński"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Północnolapoński, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Norweski"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "NPL"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "NumLock"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Zachowanie klawisza Delete na klawiaturze numerycznej"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Klawiatura numeryczna działająca jak w Macu"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Wybór układu klawiatury numerycznej"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC pasztuński"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC południowouzbecki"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Okcytański"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Orija"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Osetyjski"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Osetyjski, klawisze Win"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Osetyjski, stary"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "Serie PC-98xx"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "PAK"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Pakistański"
+
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Rusiński homofoniczny"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Pasztuński"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pauza"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Perski, z perską klawiaturą numeryczną"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "PHI"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Filipiński"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Fonetyczny"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Fonetyczny z klawiszami Win"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "POL"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Polski"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Politoniczny"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Portugalski"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Dvoraka programisty"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "PRT"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (baybayin)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Prawy Alt"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Prawy Alt (wciśnięty)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Prawy Alt wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Prawy Alt wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Prawy Alt nigdy nie wybierający poziomu 3."
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Prawy Alt, Shift+prawy Alt jako Multi_Key"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Prawy Ctrl"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Prawy Ctrl (wciśnięty)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Prawy Ctrl jako prawy Alt"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Prawy Ctrl+prawy Shift"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Prawy Shift"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Prawy Win"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Prawy Win (wciśnięty)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Prawy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5."
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Prawy Win wybiera poziom 5., blokuje przy naciśnięciu z innym klawiszem wybierającym poziom 5.; jedno naciśnięcie zwalnia blokadę"
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Praworęczny"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Praworęczny Dvoraka"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Rumuński"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Klawiatura rumuńska z literami niemieckimi"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Klawiatura rumuńska z literami niemieckimi, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "ROU"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Rupia pod 4"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "RUS"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Rosyjski"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Rosyjski"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Rosyjski fonetyczny"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Rosyjski fonetyczny Dvoraka"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Rosyjski fonetyczny, bez klawiszy akcentów"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "Rosyjski z kazaskim"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "ScrollLock"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Shuswap"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Średnik na poziomie 3."
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "SEN"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Senegalski"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbski"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Serbski"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Serbsko-chorwacki"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Shift anuluje CapsLock"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift nie anuluje NumLocka, wybiera poziom 3."
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift z klawiaturą numeryczną działą jak pod MS Windows"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Shift+CapsLock"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Prosty"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Słowacki"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Słoweński"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Południowoafrykański"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "Południowouzbecki"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Hiszpański"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Klawisze specjalne (Ctrl+Alt+&lt;klawisz&gt;) obsługiwane przez serwer"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Sri Lanki"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Standardowy"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Standardowy (Cedilla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Standardowy RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Standardowy RSTU przy rosyjskim układzie"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Klawisze akcentów Suna"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "SVK"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "SVN"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Zamiana Ctrl i CapsLocka"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Zamiana Esc i CapsLocka"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "SWE"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Szwedzki"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Szwajcarski"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "SYR"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Syryjski"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Syryjski"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Syryjski fonetyczny"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Tadżykistański"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Tamilski"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Klawiatura tamilska z cyframi"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Tamilski maszyny do pisania TAB"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamilski maszyny do pisania TSCII"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Tamilski Unicode"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Tanzański"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "Tatarski"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "THA"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Tajlandzki"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Tybetański"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tybetański (z liczbami ASCII)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Alternatywny tifinagh"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Alternatywny fonetyczny tifinagh"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Rozszerzony tifinagh"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Rozszerzony fonetyczny tifinagh"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh fonetyczny"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Wariant z tyldą (~)"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "TJK"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "TKM"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Pod odpowiednimi klawiszami wg układu Dvoraka."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Pod odpowiednimi klawiszami wg układu QWERTY."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Przełączanie klawiszy kursorów przez Shift + NumLock."
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Tradycyjny fonetyczny"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "TUR"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Turecki"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Turkmeński"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (tryb 102/105:EU)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (tryb 106:JP)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Maszynistki"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Maszynistki, stary"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "TZA"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "Układ UCW (tylko litery akcentowane)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "US Dvoraka z obsługą CZ UCW"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Klawiatura US z dwuznakami bośniackimi"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "Klawiatura US z literami bośniackimi"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "Klawiatura US z dwuznakami chorwacki"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "Klawiatura US z literami chorwackimi"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "Klawiatura US z literami estońskimi"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "Klawiatura US z literami włoskimi"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "Klawiatura US z literami litewskimi"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "Klawiatura US z literami słoweńskimi"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Udmurcki"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "UKR"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Ukraiński"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Dodatki Unicode (strzałki i symbole matematyczne)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Dodatki Unicode (strzałki i symbole matematyczne). Symbole matematyczne na poziomie domyślnym"
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "Brytyjski"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu - alternatywny fonetyczny"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Urdu - fonetyczny"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Urdu - klawisze Win"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Używanie dwuznaków bośniackich"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Używanie dwuznaków chorwackich"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "Używanie cudzysłowów do cytowania"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Używanie diody na klawiaturze do sygnalizacji układu alternatywnego"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "Używanie klawisza spacji do wprowadzania znaku niełamliwej spacji"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Zwykła spacja na dowolnym poziomie"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "UZB"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Uzbecki"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Wietnamski"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "VNM"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Klawiatura numeryczna Wang 724 z dodatkami Unicode (strzałki i symbole matematyczne)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Klawiatura numeryczna Wang 724 z dodatkami Unicode (strzałki i symbole matematyczne). Symbole matematyczne na poziomie domyślnym"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 AZERTY"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Zachodni"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Klawisze Win"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "Z klawiszem &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "Ze znakiem euro na 5"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "Z cudzysłowami"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "Jakucki"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Joruba"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "Zamienione Z i Ż"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "ZAF"
+
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 2."
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3."
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3., nic na poziomie 4."
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3., wąskiej niełamliwej spacji na poziomie 4."
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak niełamliwej spacji na poziomie 3., znak łączący zerowej szerokości na poziomie 4."
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak łączący zerowej szerokości na poziomie 3."
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 2., znak łączący zerowej szerokości na poziomie 3., znak niełamliwej spacji na poziomie 4."
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Znak rozdzielający zerowej szerokości na poziomie 3., znak łączący zerowej szerokości na poziomie 4."
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "AZERTY"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "AZERTY/cyfry"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "cyfry"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "zamieniony średnik i apostrof (przestarzałe)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "QWERTY"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "QWERTY, rozszerzony Backslash"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "QWERTY/cyfry"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "QWERTZ"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Awestyjski"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Łączenie akcentów zamiast klawiszy akcentów"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Międzynarodowy (łączenie Unicode z AltGr)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Międzynarodowy (łączenie Unicode z AltGr, alternatywny)"
diff --git a/xorg-server/xkeyboard-config/po/ru.po b/xorg-server/xkeyboard-config/po/ru.po
index 819cd9bef..78bedb933 100644
--- a/xorg-server/xkeyboard-config/po/ru.po
+++ b/xorg-server/xkeyboard-config/po/ru.po
@@ -1,3028 +1,3119 @@
-# translation of xkeyboard-config-1.9.ru.po to Russian
-# Copyright (C) 2002, 2009, 2010 Free Software Foundation, Inc.
-# Sergey V. Udaltsov<svu@users.sourceforge.net>
-# This file is distributed under the same license as the xkeyboard-config package.
-#
-# Sergey E Kvyato <kvantos@plotinka.ru>, 2006.
-# Nickolay V. Shmyrev <nshmyrev@yandex.ru>, 2006.
-# Misha Shnurapet <zayzayats@yandex.ru>, 2010.
-# ChALkeR <chalkerx@gmail.com>, 2010.
-# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-16 18:38+0400\n"
-"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
-"Language-Team: Russian <gnu@mx.ru>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.0\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Меньше чем/Больше чем&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "По клавише &lt;Меньше чем/Больше чем&gt; выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "По клавише &lt;Меньше чем/Больше чем&gt; выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Устарело) Альтернативная"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Устарело) Альтернативная, специальные клавиши (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Устарело) Альтернативная, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "Cовместимая c 101/104 кнопочной"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "pc101, qwerty, запятая, специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "pc101, qwerty, запятая, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "pc101, qwerty, точка, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "pc101, qwerty, точка, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "pc101, qwertz, запятая, специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "pc101, qwertz, запятая, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "pc101, qwertz, точка, специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "pc101, qwertz, точка, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "pc102, qwerty, запятая, специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "pc102, qwerty, запятая, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "pc102, qwerty, точка, специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "pc102, qwerty, точка, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "pc102, qwertz, запятая, специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "pc102, qwertz, запятая, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "pc102, qwertz, точка, специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "pc102, qwertz, точка, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "В стиле банкоматной/телефонной"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Ноутбук Acer"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Добавить обыкновенное поведение на клавишу Menu"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Добавление диакритических знаков эсперанто"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Добавление знака евро к некоторым клавишам"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Афганистан"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Акан"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Албания"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt и Meta на клавишах Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt соответствует правой клавише Win, а Super - Menu"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+Caps Lock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Пробел"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Поведение клавиши Alt/Win"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Альтернативная"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Альтернативная Восточная"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Альтернативная Фонетическая"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Альтернативная международная"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Альтернативная, специальные клавиши (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Альтернативная, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Альтернативная, только latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Андорра"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Любая клавиша Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Любая клавиша Win"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Любая клавиша Win (на время нажатия)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Вариант с апострофом (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Алюминиевая клавиатура Apple (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Алюминиевая клавиатура Apple (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Алюминиевая клавиатура Apple (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Алюминиевая клавиатура Apple: эмуляция клавиш ПК (Print, Scroll Lock, Pause, Num Lock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Ноутбук Apple"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Арабская"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Армения"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Астурлеонский вариант с нижними точками у H и L"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Ноутбук Asus"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Снизу слева"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Слева от 'A'"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Австрия"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Аватайм"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Азербайджан"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Backslash"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Башкирская"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Белоруссия"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Бельгия"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Бенгальская"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Бенгальская Пробат"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Бепо, эргономичная, похожая на Dvorak"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Бепо, эргономичная, похожая на Dvorak, только latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Бутан"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Библейский иврит (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Босния и Герцеговина"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Обе клавиши Alt, нажатые вместе"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Обе клавиши Ctrl, нажатые вместе"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Обе клавиши Shift, нажатые вместе"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Обе клавиши Shift, нажатые вместе, переключают Caps Lock"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Ботсвана"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Брайля"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Бразилия"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Бретонская"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Болгария"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Камбоджа"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Канада"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "Caps Lock (на первую раскладку), Shift+Caps Lock (на последнюю раскладку)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "Caps Lock (пока нажата), Alt+Caps Lock выполняет первоначальную функцию capslock"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock действует как Shift с блокировкой. Shift приостанавливает действие Caps Lock"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock действует как Shift с блокировкой. Shift не влияет на Caps Lock"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "Caps Lock выключен"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Поведение клавиши Caps Lock"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "Caps Lock переключает Shift, таким образом что, он действует сразу на все клавиши"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "Caps Lock переключает обычную капитализацию символов алфавита"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock включает внутреннюю капитализацию. Shift приостанавливает действие Caps Lock"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock включает внутреннюю капитализацию. Shift не влияет на Caps Lock"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Каталонский вариант с точкой в L посередине"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Седиль"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Чероки"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (альтернативный вариант)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr " Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "Китай"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Чувашия"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Чувашия, Латиница"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Классическая"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Классическая Dvorak"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Классическая, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 клавиш)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 клавиш)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 клавиш)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Положение клавиши Compose"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Конго, Демократическая республика"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control используется в качестве клавиш Alt, Alt используется в качестве клавиш Win"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control используется в качестве клавиш Win (и как обычный Control)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Крымскотатарская (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Крымскотатарская (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Крымскотатарская (турецкая Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Крымскотатарская (турецкая F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Крымскотатарская (турецкая Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Хорватия"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Положение клавиши Ctrl"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Кириллица"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Кириллица с кавычками ёлочками"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Кириллица, З и Ж переставлены местами"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Чехия"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Спец. символ Dead acute"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Спец. символ Dead grave acute"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Клавиши цифровой клавиатуры по умолчанию"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell 101-клавишный PC"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Ноутбук Dell Inspiron из серий 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Ноутбук Dell Precision из серии M"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Ноутбук Dell из серии Latitude"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Дания"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Модели Diamond 9801/9802"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Дворак"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Дворак (английская расстановка)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Дворак альтернативная международная (нет спец. клавиш)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Дворак международная, со спец. клавишами"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Дворак, польские кавычки на клавише 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Дворак, польские кавычки на клавишах с кавычками"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Восточный"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Включить дополнительные типографские символы"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Английская"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Английская (международная США)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Английская (Macintosh США)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Enter на цифровой клавиатуре"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Ergonomic"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Эсперанто"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Эстония"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Эфиопия"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Расширенная"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Расширенная, клавиши Win"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Расширенные функции Backslash"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "Вариант с F"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Острова Фаро"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Финляндия"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Четырёх-рядная клавиша с абстрактными разделителями"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Четырёх-рядная клавиша с запятой"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Четырёх-рядная клавиша с точкой"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Четырёх-рядная клавиша с точкой, ограничена latin-9"
-
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Четырёх-рядная клавиша с momayyez"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Франция"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Французская (французская альтернативная)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Французская"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Французская (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Французская (унаследованная)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Французская Dvorak"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Французская, специальные клавиши (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Французская, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Ноутбук Fujitsu-Siemens Computers AMILO"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "Обычная 101-клавишная"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "Обычная 102-клавишная (межд)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "Обычная 104-клавишная"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "Обычная 105-клавишная (межд)"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Грузия"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Грузинская"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Грузинская AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Немецкая (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Немецкая, специальные клавиши (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Немецкая, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Германия"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Гана"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Греция"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Гвинея"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Гуджарати"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Гурмукхи"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Гурмукхи Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Гирашн"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Keyboard"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking Keyboard для Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Хауза"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Шестнадцатеричная"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Хинди Болнагри"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Хинди Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Омофоническая"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Венгрия"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper соответствует клавишам Win"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "Дополнительная ISO"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Исландия"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Включить \"специальную\" тильду"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Индия"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "Международная, AltGr и спец. клавишами (dead keys)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "Международная, со спец. клавишами (dead keys)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Иннуитская"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Иран"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Ирак"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Ирландия"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Израиль"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Италия"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Япония"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Настройки японской клавиатуры"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Калмыкская"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Кана"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "Кана блокируется клавишей Lock"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Каннада"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Кашубский"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Казахский с Русским"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Казахстан"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Кения"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Комбинация клавиш для прерывания работы X-сервера"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Клавиша для выбора 3-го ряда"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Клавиша для выбора 5-го ряда"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Клавиша(и) для смены раскладки"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Кикуйу"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Коми"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Республика Корея"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Кутенай"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Курдская, (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Курдская, Арабско-латинская"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Курдская, Латиница Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Курдская, Латиница Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Киргизия"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Лаос"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Клавиатура ноутбука Compaq (например, Armada)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "«Интернет-клавиатура» ноутбука Compaq (например, Presario)"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Ноутбук eMachines из серии m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Латинская"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Латиноамериканская"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Латинская Юникодная"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Латинская Юникодная qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Латинская qwerty"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Латинская юникодная"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Латинская юникодная qwerty"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Латинская с кавычками ёлочками"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Латвия"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Переключение раскладки по клавише умножения/деления"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Левая клавиша Alt"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Левая клавиша Alt (пока нажата)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Левая клавиша Alt поменяна местами с левой клавишей Win"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Левая клавиша Ctrl"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Левый Ctrl (на первую раскладку), Правый Ctrl (на последнюю раскладку)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Левый Ctrl+Левый Shift"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Левая клавиша Shift"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Левая клавиша Win"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Левая Win (на первую раскладку), Правая Win/Menu (на последнюю раскладку)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Левая клавиша Win (пока нажата)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "По левой клавише Win выбирается 5-й ряд, блокирует, блокирует при нажатии вместе с другим выборщиком-5-го-ряда"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "По левой клавише Win выбирается 5-й ряд, блокирует, блокирует при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Левая рука"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Дворак под левую руку"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Legacy"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Старая Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Клавиша Legacy с запятой"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Клавиша Legacy с точкой"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Литва"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (альтернативный вариант)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (альтернативный вариант 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Дополнительные клавиши Logitech G15 с помощью службы G15"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Generic Keyboard"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (модель Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Нижнелужицкий"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "Нижнелужицкий (qwertz)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (межд)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Македония"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (международная)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Старый Macintosh"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, специальные клавиши (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "Использовать Caps Lock как дополнительную клавишу Backspace"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "Использовать Caps Lock как дополнительную клавишу Ctrl"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "Использовать Caps Lock как дополнительную клавишу ESC"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "Использовать Caps Lock как дополнительную клавишу Hyper"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "Использовать Caps Lock как дополнительную клавишу Num Lock"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "Использовать Caps Lock как дополнительную клавишу Super"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Малайaлам"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Малайaлам (Lalitha)"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Мальдивы"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Мали"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Мальта"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Мальтийская клавиатура с раскладкой US"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Маори"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta соответствует левой клавише Win"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta соответствует клавишам Win"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, шведская"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Разные параметры совместимости"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Монголия"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Черногория"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Марокко"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Многоязычная"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Многоязычная, первая часть"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Многоязычная, вторая часть"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Мьянма"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "Backspace в стиле NICOLA-F"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo для эсперанто"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo для клавиатур в США"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Непал"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Нидерланды"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Новая фонетическая"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Нигерия"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Символ неразрывного пробела в четвёртом ряду"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Символ неразрывного пробела в четвёртом ряду, символ тонкого неразрывного пробела в шестом ряду"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Символ неразрывного пробела в четвёртом ряду, символ тонкого неразрывного пробела в шестом ряду (с помощью Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "Символ неразрывного пробела во втором ряду"
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "Символ неразрывного пробела в третьем ряду"
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Символ неразрывного пробела в третьем ряду, ничего на четвёртом"
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Символ неразрывного пробела в третьем ряду, символ тонкого неразрывного пробела в четвёртом ряду"
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Северная Саамская"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Северная Саамская, исключая специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Норвегия"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "Num Lock"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Функция клавиши delete на цифровой клавиатуре"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Клавиши цифровой клавиатуры работают как в Mac"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Выбор раскладки цифровой клавиатуры"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC Pashto"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "Южно-узбекский OLPC"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "Окситанский"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Огхам"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Огхам IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Орийя"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "Осетинская"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "Осетинская, с клавишами Win"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "Осетинская, устаревшая"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Пакистан"
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Паннонская русинская омофоническая"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Пуштунская"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Паттачот"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Pause"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Персидская, с персидской доп. панелью"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Фонетическая"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Фонетическая с клавишами Win"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Польша"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Полифоническая"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Португалия"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Пробат"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Дворак для программистов"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Правая клавиша Alt"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Правая клавиша Alt (пока нажата)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "По правой клавише Alt выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "По правой клавише Alt выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "По правой клавише Alt никогда не выбирается третий ряд"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Правая клавиша Alt, Shift и правый Alt вместе работают как Multi_Key"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Правая клавиша Ctrl"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Правая клавиша Ctrl (пока нажата)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Правая клавиша Ctrl работает как правая клавиша Alt"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Правый Ctrl+Правый Shift"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Правая клавиша Shift"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Правая клавиша Win"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Правая клавиша Win (пока нажата)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "По правой клавише Win выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда"
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "По правой клавише Win выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Правая рука"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Дворак под правую руку"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Румыния"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Румынская клавиатура с немецкими буквами"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Румынская клавиатура с немецкими буквами, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Россия"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Русская"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Русская фонетическая"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Русский фонетический Дворак"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Русская фонетическая, исключить специальные клавиши (dead keys)"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Русская с казахской"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Точка с запятой в третьем ряду"
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Сенегал"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Сербия"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Сербская"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Shift отменяет Caps Lock"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Shift не отменяет Num Lock, а выбирает третий ряд"
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Клавиша Shift с клавишами цифровой клавиатуры работают также как в MS Windows"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Shift+Caps Lock"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "Простая"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Синдхи"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Словакия"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Словения"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Южная Африка"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Южно-узбекская"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Испания"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Специальные клавиши (Ctrl+Alt+&lt;клв&gt;) обрабатываются сервером"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Стандартная"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Стандартная (седиль)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "Стандартная RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "Стандартная RSTU, русская"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Специальные клавиши (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Поменять местами клавиши Ctrl и Caps Lock"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Поменять местами клавиши ESC и Caps Lock"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Швеция"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Швейцария"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (карманный ПК)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Сирия"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Сирийская"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Сирийская фонетическая"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Таджикистан"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Тамильская"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Тамильская клавиатура с цифрами"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Тамильская \"Печатная машинка\" TAB"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Тамильская \"Печатная машинка\" TSCII"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Тамильская Юникодная"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Танзания"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Татарская"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Телугу"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Таиланд"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Тибетская"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Тибетская (с цифрами ASCII)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Тифинагская"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Тифинагская альтернативная"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Тифинагская альтернативная фонетическая"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Тифинагская расширенная"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Тифинагская расширенная фонетическая"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Тифинагская фонетическая"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Вариант с тильдой (~)"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "На соответствующую клавишу на клавиатуре Дворак."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "На соответствующую клавишу на клавиатуре Qwerty."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Традиционная фонетическая"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Турция"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Туркмения"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:режим EU)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (106:режим JP)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Печатная машинка"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Печатная машинка, устаревшая"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "Раскладка UCW (только символы акцентов)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "Дворак США с поддержкой CZ UCW"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Клавиатура США с боснийскими диграфами"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "Клавиатура США с боснийскими буквами"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "Клавиатура США с хорватскими диграфами"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "Клавиатура США с хорватскими буквами"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "Клавиатура США с эстонскими буквами"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "Клавиатура США с итальянскими буквами"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "Клавиатура США с литовскими буквами"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "Клавиатура США со словенскими буквами"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "США"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "Удмуртская"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "Украина"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Дополнения юникода (стрелки и математические операторы)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Дополнения юникода (стрелки и математические операторы). Математические операторы в ряду по умолчанию"
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "Великобритания"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Урду, альтернативная фонетическая"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Урду, фонетическая"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Урду, с клавишами Win"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Использовать боснийские диграфы"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Использовать хорватские диграфы"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Использовать кавычки ёлочки как кавычки"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Использовать клавиатурные индикаторы для отображения дополнительных раскладок"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Клавиша пробела используется для ввода символа неразрывного пробела"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Обычный пробел в любом ряду"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Узбекистан"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Вьетнам"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Цифровая клавиатура Wang 724 с дополнениями юникода (стрелки и математические операторы)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Цифровая клавиатура Wang 724 с дополнениями юникода (стрелки и математические операторы). Математические операторы в ряду по умолчанию"
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Западная"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Клавиши Win"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "С клавишей &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "со знаком евро на клавише 5"
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "С кавычками ёлочками"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Якутская"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Йоруба"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "З и Ж переставлены местами"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Несвязывающий символ нулевой ширины во втором ряду"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду, ничего в четвёртом"
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду, тонкий неразрывный пробел в четвёртом ряду"
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду, связывающий символ нулевой ширины в четвёртом ряду"
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Несвязывающий символ нулевой ширины во втором ряду, связывающий символ нулевой ширины в третьем ряду"
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Несвязывающий символ нулевой ширины во втором ряду, связывающий символ нулевой ширины в третьем ряду, символ неразрывного пробела в четвёртом ряду"
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Несвязывающий символ нулевой ширины в третьем ряду, связывающий символ нулевой ширины в четвёртом ряду"
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "azerty/цифры"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "цифры"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "смещённые точка с запятой и кавычка (устарело)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, расширенные функции Backslash"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "qwerty/цифры"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Атсинская"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "Авестийская"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Объединённые надбуквенные знаки вместе спец. клавиш (dead keys)"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Салишская кёр-д’ален"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "Международная (объединённая с AltGr Unicode)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Международная (объединённая с AltGr Unicode, альтернативная)"
+# translation of xkeyboard-config-1.9.ru.po to Russian
+# Copyright (C) 2002, 2009, 2010 Free Software Foundation, Inc.
+# Sergey V. Udaltsov<svu@users.sourceforge.net>
+# This file is distributed under the same license as the xkeyboard-config package.
+#
+# Sergey E Kvyato <kvantos@plotinka.ru>, 2006.
+# Nickolay V. Shmyrev <nshmyrev@yandex.ru>, 2006.
+# Misha Shnurapet <zayzayats@yandex.ru>, 2010.
+# ChALkeR <chalkerx@gmail.com>, 2010.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 2.1-pre1\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2011-01-12 00:16+0000\n"
+"PO-Revision-Date: 2011-01-12 20:39+0300\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Меньше чем/Больше чем&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "По клавише &lt;Меньше чем/Больше чем&gt; выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "По клавише &lt;Меньше чем/Больше чем&gt; выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Устарело) Альтернативная"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Устарело) Альтернативная, специальные клавиши (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Устарело) Альтернативная, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "Cовместимая c 101/104 кнопочной"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "pc101, qwerty, запятая, специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "pc101, qwerty, запятая, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "pc101, qwerty, точка, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "pc101, qwerty, точка, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "pc101, qwertz, запятая, специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "pc101, qwertz, запятая, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "pc101, qwertz, точка, специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "pc101, qwertz, точка, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "pc102, qwerty, запятая, специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "pc102, qwerty, запятая, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "pc102, qwerty, точка, специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "pc102, qwerty, точка, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "pc102, qwertz, запятая, специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "pc102, qwertz, запятая, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "pc102, qwertz, точка, специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "pc102, qwertz, точка, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ATM/phone-style"
+msgstr "В стиле банкоматной/телефонной"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Laptop"
+msgstr "Ноутбук Acer"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the standard behavior to Menu key"
+msgstr "Добавить обыкновенное поведение на клавишу Menu"
+
+#: ../rules/base.xml.in.h:34
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Добавление диакритических знаков эсперанто"
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding currency signs to certain keys"
+msgstr "Добавление знаков валют к некоторым клавишам"
+
+#: ../rules/base.xml.in.h:36
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:37
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afghanistan"
+msgstr "Афганистан"
+
+#: ../rules/base.xml.in.h:39
+msgid "Akan"
+msgstr "Акан"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:41
+msgid "Albania"
+msgstr "Албания"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt и Meta на клавишах Alt"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt соответствует правой клавише Win, а Super - Menu"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt+Caps Lock"
+msgstr "Alt+Caps Lock"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Space"
+msgstr "Alt+Пробел"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Поведение клавиши Alt/Win"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "Альтернативная"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "Альтернативная Восточная"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "Альтернативная Фонетическая"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international"
+msgstr "Альтернативная международная"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Альтернативная, специальные клавиши (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Альтернативная, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "Альтернативная, только latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Андорра"
+
+#: ../rules/base.xml.in.h:59
+msgid "Any Alt key"
+msgstr "Любая клавиша Alt"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Win key"
+msgstr "Любая клавиша Win"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key (while pressed)"
+msgstr "Любая клавиша Win (на время нажатия)"
+
+#: ../rules/base.xml.in.h:62
+msgid "Apostrophe (') variant"
+msgstr "Вариант с апострофом (')"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Алюминиевая клавиатура Apple (ANSI)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Алюминиевая клавиатура Apple (ISO)"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Алюминиевая клавиатура Apple (JIS)"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Алюминиевая клавиатура Apple: эмуляция клавиш ПК (Print, Scroll Lock, Pause, Num Lock)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Laptop"
+msgstr "Ноутбук Apple"
+
+#: ../rules/base.xml.in.h:69
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:70
+msgid "Arabic"
+msgstr "Арабская"
+
+#: ../rules/base.xml.in.h:71
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:72
+msgid "Armenia"
+msgstr "Армения"
+
+#: ../rules/base.xml.in.h:73
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Астурлеонский вариант с нижними точками у H и L"
+
+#: ../rules/base.xml.in.h:74
+msgid "Asus Laptop"
+msgstr "Ноутбук Asus"
+
+#: ../rules/base.xml.in.h:75
+msgid "At bottom left"
+msgstr "Снизу слева"
+
+#: ../rules/base.xml.in.h:76
+msgid "At left of 'A'"
+msgstr "Слева от 'A'"
+
+#: ../rules/base.xml.in.h:77
+msgid "Austria"
+msgstr "Австрия"
+
+#: ../rules/base.xml.in.h:78
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:79
+msgid "Avatime"
+msgstr "Аватайм"
+
+#: ../rules/base.xml.in.h:80
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:81
+msgid "Azerbaijan"
+msgstr "Азербайджан"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:92
+msgid "Backslash"
+msgstr "Backslash"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: ../rules/base.xml.in.h:94
+msgid "Bashkirian"
+msgstr "Башкирская"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:96
+msgid "Belarus"
+msgstr "Белоруссия"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belgium"
+msgstr "Бельгия"
+
+#: ../rules/base.xml.in.h:98
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bengali"
+msgstr "Бенгальская"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali Probhat"
+msgstr "Бенгальская Пробат"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Бепо, эргономичная, похожая на Dvorak"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Бепо, эргономичная, похожая на Dvorak, только latin-9"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: ../rules/base.xml.in.h:108
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Библейский иврит (Tiro)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:110
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:111
+msgid "Bosnia and Herzegovina"
+msgstr "Босния и Герцеговина"
+
+#: ../rules/base.xml.in.h:112
+msgid "Both Alt keys together"
+msgstr "Обе клавиши Alt, нажатые вместе"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Ctrl keys together"
+msgstr "Обе клавиши Ctrl, нажатые вместе"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Shift keys together"
+msgstr "Обе клавиши Shift, нажатые вместе"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Обе клавиши Shift, нажатые вместе, переключают Caps Lock"
+
+#: ../rules/base.xml.in.h:116
+msgid "Botswana"
+msgstr "Ботсвана"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:118
+msgid "Braille"
+msgstr "Брайля"
+
+#: ../rules/base.xml.in.h:119
+msgid "Brazil"
+msgstr "Бразилия"
+
+#: ../rules/base.xml.in.h:120
+msgid "Breton"
+msgstr "Бретонская"
+
+#: ../rules/base.xml.in.h:121
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:123
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:124
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:125
+msgid "Bulgaria"
+msgstr "Болгария"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:127
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:128
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:129
+msgid "Cambodia"
+msgstr "Камбоджа"
+
+#: ../rules/base.xml.in.h:130
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:131
+msgid "Canada"
+msgstr "Канада"
+
+#: ../rules/base.xml.in.h:132
+msgid "Capewell-Dvorak (Baybayin)"
+msgstr "Кэйпвелл-Дворак (байбайин)"
+
+#: ../rules/base.xml.in.h:133
+msgid "Capewell-Dvorak (Latin)"
+msgstr "Кэйпвелл-Дворак (латиница)"
+
+#: ../rules/base.xml.in.h:134
+msgid "Capewell-QWERF 2006 (Baybayin)"
+msgstr "Кэйпвелл-QWERF 2006 (байбайин)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Capewell-QWERF 2006 (Latin)"
+msgstr "Кэйпвелл-QWERF 2006 (латиница)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (на первую раскладку), Shift+Caps Lock (на последнюю раскладку)"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (пока нажата), Alt+Caps Lock выполняет первоначальную функцию capslock"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock действует как Shift с блокировкой. Shift приостанавливает действие Caps Lock"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock действует как Shift с блокировкой. Shift не влияет на Caps Lock"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock is disabled"
+msgstr "Caps Lock выключен"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock key behavior"
+msgstr "Поведение клавиши Caps Lock"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Caps Lock переключает Shift, таким образом что, он действует сразу на все клавиши"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Caps Lock переключает обычную капитализацию символов алфавита"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock включает внутреннюю капитализацию. Shift приостанавливает действие Caps Lock"
+
+#: ../rules/base.xml.in.h:146
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock включает внутреннюю капитализацию. Shift не влияет на Caps Lock"
+
+#: ../rules/base.xml.in.h:147
+msgid "Catalan variant with middle-dot L"
+msgstr "Каталонский вариант с точкой в L посередине"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cedilla"
+msgstr "Седиль"
+
+#: ../rules/base.xml.in.h:149
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherokee"
+msgstr "Чероки"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (альтернативный вариант)"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:157
+msgid "Cherry CyMotion Master XPress"
+msgstr " Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:162
+msgid "China"
+msgstr "Китай"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash"
+msgstr "Чувашия"
+
+#: ../rules/base.xml.in.h:165
+msgid "Chuvash Latin"
+msgstr "Чувашия, Латиница"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic"
+msgstr "Классическая"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic Dvorak"
+msgstr "Классическая Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classic, eliminate dead keys"
+msgstr "Классическая, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:169
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:170
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:171
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:172
+msgid "Colemak (Baybayin)"
+msgstr "Коулмак (байбайин)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Colemak (Latin)"
+msgstr "Коулмак (латиница)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 клавиш)"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 клавиш)"
+
+#: ../rules/base.xml.in.h:177
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 клавиш)"
+
+#: ../rules/base.xml.in.h:178
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:179
+msgid "Compose key position"
+msgstr "Положение клавиши Compose"
+
+#: ../rules/base.xml.in.h:180
+msgid "Congo, Democratic Republic of the"
+msgstr "Конго, Демократическая республика"
+
+#: ../rules/base.xml.in.h:181
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:182
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control используется в качестве клавиш Alt, Alt используется в качестве клавиш Win"
+
+#: ../rules/base.xml.in.h:183
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control используется в качестве клавиш Win (и как обычный Control)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Крымскотатарская (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Крымскотатарская (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Крымскотатарская (турецкая Alt-Q)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Крымскотатарская (турецкая F)"
+
+#: ../rules/base.xml.in.h:189
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Крымскотатарская (турецкая Q)"
+
+#: ../rules/base.xml.in.h:190
+msgid "Croatia"
+msgstr "Хорватия"
+
+#: ../rules/base.xml.in.h:191
+msgid "Ctrl key position"
+msgstr "Положение клавиши Ctrl"
+
+#: ../rules/base.xml.in.h:192
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cyrillic"
+msgstr "Кириллица"
+
+#: ../rules/base.xml.in.h:194
+msgid "Cyrillic with guillemets"
+msgstr "Кириллица с кавычками ёлочками"
+
+#: ../rules/base.xml.in.h:195
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Кириллица, З и Ж переставлены местами"
+
+#: ../rules/base.xml.in.h:196
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:197
+msgid "Czechia"
+msgstr "Чехия"
+
+#: ../rules/base.xml.in.h:198
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:199
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dead acute"
+msgstr "Спец. символ Dead acute"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dead grave acute"
+msgstr "Спец. символ Dead grave acute"
+
+#: ../rules/base.xml.in.h:202
+msgid "Default numeric keypad keys"
+msgstr "Клавиши цифровой клавиатуры по умолчанию"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell 101-key PC"
+msgstr "Dell 101-клавишный PC"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Ноутбук Dell Inspiron из серий 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Ноутбук Dell Precision из серии M"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell Latitude series laptop"
+msgstr "Ноутбук Dell из серии Latitude"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:210
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:212
+msgid "Denmark"
+msgstr "Дания"
+
+#: ../rules/base.xml.in.h:213
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:215
+msgid "Diamond 9801 / 9802 series"
+msgstr "Модели Diamond 9801/9802"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak"
+msgstr "Дворак"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak (Baybayin)"
+msgstr "Дворак (байбайин)"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak (Latin)"
+msgstr "Дворак (латиница)"
+
+#: ../rules/base.xml.in.h:220
+msgid "Dvorak (UK Punctuation)"
+msgstr "Дворак (английская расстановка)"
+
+#: ../rules/base.xml.in.h:221
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Дворак альтернативная международная (нет спец. клавиш)"
+
+#: ../rules/base.xml.in.h:222
+msgid "Dvorak international (with dead keys)"
+msgstr "Дворак международная, со спец. клавишами"
+
+#: ../rules/base.xml.in.h:223
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Дворак, польские кавычки на клавише 1"
+
+#: ../rules/base.xml.in.h:224
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Дворак, польские кавычки на клавишах с кавычками"
+
+#: ../rules/base.xml.in.h:225
+msgid "Eastern"
+msgstr "Восточный"
+
+#: ../rules/base.xml.in.h:226
+msgid "Eliminate dead keys"
+msgstr "Исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:227
+msgid "Enable extra typographic characters"
+msgstr "Включить дополнительные типографские символы"
+
+#: ../rules/base.xml.in.h:228
+msgid "English"
+msgstr "Английская"
+
+#: ../rules/base.xml.in.h:229
+msgid "English (USA International)"
+msgstr "Английская (международная США)"
+
+#: ../rules/base.xml.in.h:230
+msgid "English (USA Macintosh)"
+msgstr "Английская (Macintosh США)"
+
+#: ../rules/base.xml.in.h:231
+msgid "English with RupeeSign"
+msgstr "Английская с знаком индийской рупии"
+
+#: ../rules/base.xml.in.h:232
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:233
+msgid "Enter on keypad"
+msgstr "Enter на цифровой клавиатуре"
+
+#: ../rules/base.xml.in.h:234
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:235
+msgid "Ergonomic"
+msgstr "Ergonomic"
+
+#: ../rules/base.xml.in.h:236
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:237
+msgid "Esperanto"
+msgstr "Эсперанто"
+
+#: ../rules/base.xml.in.h:238
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:239
+msgid "Estonia"
+msgstr "Эстония"
+
+#: ../rules/base.xml.in.h:240
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ethiopia"
+msgstr "Эфиопия"
+
+#: ../rules/base.xml.in.h:242
+msgid "Euro on 2"
+msgstr "Символ евро на клавише 2"
+
+#: ../rules/base.xml.in.h:243
+msgid "Euro on 4"
+msgstr "Символ евро на клавише 4"
+
+#: ../rules/base.xml.in.h:244
+msgid "Euro on 5"
+msgstr "Символ евро на клавише 5"
+
+#: ../rules/base.xml.in.h:245
+msgid "Euro on E"
+msgstr "Символ евро на клавише E"
+
+#: ../rules/base.xml.in.h:246
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:247
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:248
+msgid "Extended"
+msgstr "Расширенная"
+
+#: ../rules/base.xml.in.h:249
+msgid "Extended - Winkeys"
+msgstr "Расширенная, клавиши Win"
+
+#: ../rules/base.xml.in.h:250
+msgid "Extended Backslash"
+msgstr "Расширенные функции Backslash"
+
+#: ../rules/base.xml.in.h:251
+msgid "F-letter (F) variant"
+msgstr "Вариант с F"
+
+#: ../rules/base.xml.in.h:252
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:253
+msgid "Faroe Islands"
+msgstr "Острова Фаро"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:255
+msgid "Finland"
+msgstr "Финляндия"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:258
+msgid "Four-level key with abstract separators"
+msgstr "Четырёх-рядная клавиша с абстрактными разделителями"
+
+#: ../rules/base.xml.in.h:259
+msgid "Four-level key with comma"
+msgstr "Четырёх-рядная клавиша с запятой"
+
+#: ../rules/base.xml.in.h:260
+msgid "Four-level key with dot"
+msgstr "Четырёх-рядная клавиша с точкой"
+
+#: ../rules/base.xml.in.h:261
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Четырёх-рядная клавиша с точкой, ограничена latin-9"
+
+#: ../rules/base.xml.in.h:262
+msgid "Four-level key with momayyez"
+msgstr "Четырёх-рядная клавиша с momayyez"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:264
+msgid "France"
+msgstr "Франция"
+
+#: ../rules/base.xml.in.h:265
+msgid "Français (France Alternative)"
+msgstr "Французская (французская альтернативная)"
+
+#: ../rules/base.xml.in.h:266
+msgid "French"
+msgstr "Французская"
+
+#: ../rules/base.xml.in.h:267
+msgid "French (Macintosh)"
+msgstr "Французская (Macintosh)"
+
+#: ../rules/base.xml.in.h:268
+msgid "French (legacy)"
+msgstr "Французская (унаследованная)"
+
+#: ../rules/base.xml.in.h:269
+msgid "French Dvorak"
+msgstr "Французская Dvorak"
+
+#: ../rules/base.xml.in.h:270
+msgid "French, Sun dead keys"
+msgstr "Французская, специальные клавиши (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:271
+msgid "French, eliminate dead keys"
+msgstr "Французская, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:272
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:273
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Ноутбук Fujitsu-Siemens Computers AMILO"
+
+#: ../rules/base.xml.in.h:274
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:275
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:276
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:277
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:278
+msgid "Generic 101-key PC"
+msgstr "Обычная 101-клавишная"
+
+#: ../rules/base.xml.in.h:279
+msgid "Generic 102-key (Intl) PC"
+msgstr "Обычная 102-клавишная (межд)"
+
+#: ../rules/base.xml.in.h:280
+msgid "Generic 104-key PC"
+msgstr "Обычная 104-клавишная"
+
+#: ../rules/base.xml.in.h:281
+msgid "Generic 105-key (Intl) PC"
+msgstr "Обычная 105-клавишная (межд)"
+
+#: ../rules/base.xml.in.h:282
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:283
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:284
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:285
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:286
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:287
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:288
+msgid "Georgia"
+msgstr "Грузия"
+
+#: ../rules/base.xml.in.h:289
+msgid "Georgian"
+msgstr "Грузинская"
+
+#: ../rules/base.xml.in.h:290
+msgid "Georgian AZERTY Tskapo"
+msgstr "Грузинская AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:291
+msgid "German (Macintosh)"
+msgstr "Немецкая (Macintosh)"
+
+#: ../rules/base.xml.in.h:292
+msgid "German, Sun dead keys"
+msgstr "Немецкая, специальные клавиши (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:293
+msgid "German, eliminate dead keys"
+msgstr "Немецкая, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:294
+msgid "Germany"
+msgstr "Германия"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:296
+msgid "Ghana"
+msgstr "Гана"
+
+#: ../rules/base.xml.in.h:297
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:299
+msgid "Greece"
+msgstr "Греция"
+
+#: ../rules/base.xml.in.h:300
+msgid "Guinea"
+msgstr "Гвинея"
+
+#: ../rules/base.xml.in.h:301
+msgid "Gujarati"
+msgstr "Гуджарати"
+
+#: ../rules/base.xml.in.h:302
+msgid "Gurmukhi"
+msgstr "Гурмукхи"
+
+#: ../rules/base.xml.in.h:303
+msgid "Gurmukhi Jhelum"
+msgstr "Гурмукхи Jhelum"
+
+#: ../rules/base.xml.in.h:304
+msgid "Gyration"
+msgstr "Гирашн"
+
+#: ../rules/base.xml.in.h:305
+msgid "HTC Dream"
+msgstr "HTC Dream"
+
+#: ../rules/base.xml.in.h:306
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Keyboard"
+
+#: ../rules/base.xml.in.h:307
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking Keyboard для Mac"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hausa"
+msgstr "Хауза"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:320
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:321
+msgid "Hexadecimal"
+msgstr "Шестнадцатеричная"
+
+#: ../rules/base.xml.in.h:322
+msgid "Hindi Bolnagri"
+msgstr "Хинди Болнагри"
+
+#: ../rules/base.xml.in.h:323
+msgid "Hindi Wx"
+msgstr "Хинди Wx"
+
+#: ../rules/base.xml.in.h:324
+msgid "Homophonic"
+msgstr "Омофоническая"
+
+#: ../rules/base.xml.in.h:325
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:326
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:327
+msgid "Htc Dream phone"
+msgstr "телефон Htc Dream"
+
+#: ../rules/base.xml.in.h:328
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:329
+msgid "Hungary"
+msgstr "Венгрия"
+
+#: ../rules/base.xml.in.h:330
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper соответствует клавишам Win"
+
+#: ../rules/base.xml.in.h:331
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:332
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:333
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:334
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:335
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:336
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:337
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:338
+msgid "ISO Alternate"
+msgstr "Дополнительная ISO"
+
+#: ../rules/base.xml.in.h:339
+msgid "Iceland"
+msgstr "Исландия"
+
+#: ../rules/base.xml.in.h:340
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:341
+msgid "Include dead tilde"
+msgstr "Включить \"специальную\" тильду"
+
+#: ../rules/base.xml.in.h:342
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:343
+msgid "India"
+msgstr "Индия"
+
+#: ../rules/base.xml.in.h:344
+msgid "International (AltGr dead keys)"
+msgstr "Международная, AltGr и спец. клавишами (dead keys)"
+
+#: ../rules/base.xml.in.h:345
+msgid "International (with dead keys)"
+msgstr "Международная, со спец. клавишами (dead keys)"
+
+#: ../rules/base.xml.in.h:346
+msgid "Inuktitut"
+msgstr "Иннуитская"
+
+#: ../rules/base.xml.in.h:347 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Иран"
+
+#: ../rules/base.xml.in.h:348
+msgid "Iraq"
+msgstr "Ирак"
+
+#: ../rules/base.xml.in.h:349
+msgid "Ireland"
+msgstr "Ирландия"
+
+#: ../rules/base.xml.in.h:350
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:351
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:352
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:353
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:354
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:355
+msgid "Israel"
+msgstr "Израиль"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:357
+msgid "Italy"
+msgstr "Италия"
+
+#: ../rules/base.xml.in.h:358
+msgid "Japan"
+msgstr "Япония"
+
+#: ../rules/base.xml.in.h:359
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:360
+msgid "Japanese keyboard options"
+msgstr "Настройки японской клавиатуры"
+
+#: ../rules/base.xml.in.h:361
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:362
+msgid "Kalmyk"
+msgstr "Калмыкская"
+
+#: ../rules/base.xml.in.h:363
+msgid "Kana"
+msgstr "Кана"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kana 86"
+msgstr "Kana 86"
+
+#: ../rules/base.xml.in.h:365
+msgid "Kana Lock key is locking"
+msgstr "Кана блокируется клавишей Lock"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kannada"
+msgstr "Каннада"
+
+#: ../rules/base.xml.in.h:367
+msgid "Kashubian"
+msgstr "Кашубский"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kazakh with Russian"
+msgstr "Казахский с Русским"
+
+#: ../rules/base.xml.in.h:370
+msgid "Kazakhstan"
+msgstr "Казахстан"
+
+#: ../rules/base.xml.in.h:371
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kenya"
+msgstr "Кения"
+
+#: ../rules/base.xml.in.h:373
+msgid "Key sequence to kill the X server"
+msgstr "Комбинация клавиш для прерывания работы X-сервера"
+
+#: ../rules/base.xml.in.h:374
+msgid "Key to choose 3rd level"
+msgstr "Клавиша для выбора 3-го ряда"
+
+#: ../rules/base.xml.in.h:375
+msgid "Key to choose 5th level"
+msgstr "Клавиша для выбора 5-го ряда"
+
+#: ../rules/base.xml.in.h:376
+msgid "Key(s) to change layout"
+msgstr "Клавиша(и) для смены раскладки"
+
+#: ../rules/base.xml.in.h:377
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:379
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:380
+msgid "Kikuyu"
+msgstr "Кикуйу"
+
+#: ../rules/base.xml.in.h:381
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:382
+msgid "Komi"
+msgstr "Коми"
+
+#: ../rules/base.xml.in.h:383
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:384
+msgid "Korea, Republic of"
+msgstr "Республика Корея"
+
+#: ../rules/base.xml.in.h:385
+msgid "Ktunaxa"
+msgstr "Кутенай"
+
+#: ../rules/base.xml.in.h:386
+msgid "Kurdish, (F)"
+msgstr "Курдская, (F)"
+
+#: ../rules/base.xml.in.h:387
+msgid "Kurdish, Arabic-Latin"
+msgstr "Курдская, Арабско-латинская"
+
+#: ../rules/base.xml.in.h:388
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Курдская, Латиница Alt-Q"
+
+#: ../rules/base.xml.in.h:389
+msgid "Kurdish, Latin Q"
+msgstr "Курдская, Латиница Q"
+
+#: ../rules/base.xml.in.h:390
+msgid "Kyrgyzstan"
+msgstr "Киргизия"
+
+#: ../rules/base.xml.in.h:391
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:392
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:394
+msgid "Laos"
+msgstr "Лаос"
+
+#: ../rules/base.xml.in.h:395
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Клавиатура ноутбука Compaq (например, Armada)"
+
+#: ../rules/base.xml.in.h:396
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "«Интернет-клавиатура» ноутбука Compaq (например, Presario)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Ноутбук eMachines из серии m68xx"
+
+#: ../rules/base.xml.in.h:398
+msgid "Latin"
+msgstr "Латинская"
+
+#: ../rules/base.xml.in.h:399
+msgid "Latin American"
+msgstr "Латиноамериканская"
+
+#: ../rules/base.xml.in.h:400
+msgid "Latin Unicode"
+msgstr "Латинская Юникодная"
+
+#: ../rules/base.xml.in.h:401
+msgid "Latin Unicode qwerty"
+msgstr "Латинская Юникодная qwerty"
+
+#: ../rules/base.xml.in.h:402
+msgid "Latin qwerty"
+msgstr "Латинская qwerty"
+
+#: ../rules/base.xml.in.h:403
+msgid "Latin unicode"
+msgstr "Латинская юникодная"
+
+#: ../rules/base.xml.in.h:404
+msgid "Latin unicode qwerty"
+msgstr "Латинская юникодная qwerty"
+
+#: ../rules/base.xml.in.h:405
+msgid "Latin with guillemets"
+msgstr "Латинская с кавычками ёлочками"
+
+#: ../rules/base.xml.in.h:406
+msgid "Latvia"
+msgstr "Латвия"
+
+#: ../rules/base.xml.in.h:407
+msgid "Layout toggle on multiply/divide key"
+msgstr "Переключение раскладки по клавише умножения/деления"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Alt"
+msgstr "Левая клавиша Alt"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left Alt (while pressed)"
+msgstr "Левая клавиша Alt (пока нажата)"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left Alt is swapped with Left Win"
+msgstr "Левая клавиша Alt поменяна местами с левой клавишей Win"
+
+#: ../rules/base.xml.in.h:411
+msgid "Left Ctrl"
+msgstr "Левая клавиша Ctrl"
+
+#: ../rules/base.xml.in.h:412
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Левый Ctrl (на первую раскладку), Правый Ctrl (на последнюю раскладку)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Left Ctrl+Left Shift"
+msgstr "Левый Ctrl+Левый Shift"
+
+#: ../rules/base.xml.in.h:414
+msgid "Left Shift"
+msgstr "Левая клавиша Shift"
+
+#: ../rules/base.xml.in.h:415
+msgid "Left Win"
+msgstr "Левая клавиша Win"
+
+#: ../rules/base.xml.in.h:416
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Левая Win (на первую раскладку), Правая Win/Menu (на последнюю раскладку)"
+
+#: ../rules/base.xml.in.h:417
+msgid "Left Win (while pressed)"
+msgstr "Левая клавиша Win (пока нажата)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "По левой клавише Win выбирается 5-й ряд, блокирует, блокирует при нажатии вместе с другим выборщиком-5-го-ряда"
+
+#: ../rules/base.xml.in.h:419
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "По левой клавише Win выбирается 5-й ряд, блокирует, блокирует при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
+
+#: ../rules/base.xml.in.h:420
+msgid "Left hand"
+msgstr "Левая рука"
+
+#: ../rules/base.xml.in.h:421
+msgid "Left handed Dvorak"
+msgstr "Дворак под левую руку"
+
+#: ../rules/base.xml.in.h:422
+msgid "Legacy"
+msgstr "Legacy"
+
+#: ../rules/base.xml.in.h:423
+msgid "Legacy Wang 724"
+msgstr "Старая Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:425
+msgid "Legacy key with comma"
+msgstr "Клавиша Legacy с запятой"
+
+#: ../rules/base.xml.in.h:426
+msgid "Legacy key with dot"
+msgstr "Клавиша Legacy с точкой"
+
+#: ../rules/base.xml.in.h:427
+msgid "Lithuania"
+msgstr "Литва"
+
+#: ../rules/base.xml.in.h:428
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (альтернативный вариант)"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (альтернативный вариант 2)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Дополнительные клавиши Logitech G15 с помощью службы G15"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Generic Keyboard"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:442
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:443
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:444
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:445
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:447
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:448
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:449
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:450
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (модель Y-RB6)"
+
+#: ../rules/base.xml.in.h:451
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:452
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Lower Sorbian"
+msgstr "Нижнелужицкий"
+
+#: ../rules/base.xml.in.h:454
+msgid "Lower Sorbian (qwertz)"
+msgstr "Нижнелужицкий (qwertz)"
+
+#: ../rules/base.xml.in.h:455
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:456
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:457
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:458
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:459
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:460
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (межд)"
+
+#: ../rules/base.xml.in.h:461
+msgid "Macedonia"
+msgstr "Македония"
+
+#: ../rules/base.xml.in.h:462
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:463
+msgid "Macintosh (International)"
+msgstr "Macintosh (международная)"
+
+#: ../rules/base.xml.in.h:464
+msgid "Macintosh Old"
+msgstr "Старый Macintosh"
+
+#: ../rules/base.xml.in.h:465
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, специальные клавиши (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:466
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:467
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Использовать Caps Lock как дополнительную клавишу Backspace"
+
+#: ../rules/base.xml.in.h:468
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Использовать Caps Lock как дополнительную клавишу Ctrl"
+
+#: ../rules/base.xml.in.h:469
+msgid "Make Caps Lock an additional ESC"
+msgstr "Использовать Caps Lock как дополнительную клавишу ESC"
+
+#: ../rules/base.xml.in.h:470
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Использовать Caps Lock как дополнительную клавишу Hyper"
+
+#: ../rules/base.xml.in.h:471
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Использовать Caps Lock как дополнительную клавишу Num Lock"
+
+#: ../rules/base.xml.in.h:472
+msgid "Make Caps Lock an additional Super"
+msgstr "Использовать Caps Lock как дополнительную клавишу Super"
+
+#: ../rules/base.xml.in.h:473
+msgid "Malayalam"
+msgstr "Малайaлам"
+
+#: ../rules/base.xml.in.h:474
+msgid "Malayalam Lalitha"
+msgstr "Малайaлам (Lalitha)"
+
+#: ../rules/base.xml.in.h:475
+msgid "Maldives"
+msgstr "Мальдивы"
+
+#: ../rules/base.xml.in.h:476
+msgid "Mali"
+msgstr "Мали"
+
+#: ../rules/base.xml.in.h:477
+msgid "Malta"
+msgstr "Мальта"
+
+#: ../rules/base.xml.in.h:478
+msgid "Maltese keyboard with US layout"
+msgstr "Мальтийская клавиатура с раскладкой US"
+
+#: ../rules/base.xml.in.h:479
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:480
+msgid "Maori"
+msgstr "Маори"
+
+#: ../rules/base.xml.in.h:481
+msgid "Mari"
+msgstr "Mari"
+
+#: ../rules/base.xml.in.h:482
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:483
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:484
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:485
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:486
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:487
+msgid "Meta is mapped to Left Win"
+msgstr "Meta соответствует левой клавише Win"
+
+#: ../rules/base.xml.in.h:488
+msgid "Meta is mapped to Win keys"
+msgstr "Meta соответствует клавишам Win"
+
+#: ../rules/base.xml.in.h:489
+msgid "Meta on Left Ctrl"
+msgstr "Meta на левой клавише Ctrl"
+
+#: ../rules/base.xml.in.h:490
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:491
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:492
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, шведская"
+
+#: ../rules/base.xml.in.h:493
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:494
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:495
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:497
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:498
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:499
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:500
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:501
+msgid "Miscellaneous compatibility options"
+msgstr "Разные параметры совместимости"
+
+#: ../rules/base.xml.in.h:502
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:503
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:504
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:505
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:506
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:507
+msgid "Mongolia"
+msgstr "Монголия"
+
+#: ../rules/base.xml.in.h:508
+msgid "Montenegro"
+msgstr "Черногория"
+
+#: ../rules/base.xml.in.h:509
+msgid "Morocco"
+msgstr "Марокко"
+
+#: ../rules/base.xml.in.h:510
+msgid "Multilingual"
+msgstr "Многоязычная"
+
+#: ../rules/base.xml.in.h:511
+msgid "Multilingual, first part"
+msgstr "Многоязычная, первая часть"
+
+#: ../rules/base.xml.in.h:512
+msgid "Multilingual, second part"
+msgstr "Многоязычная, вторая часть"
+
+#: ../rules/base.xml.in.h:513
+msgid "Myanmar"
+msgstr "Мьянма"
+
+#: ../rules/base.xml.in.h:514
+msgid "NICOLA-F style Backspace"
+msgstr "Backspace в стиле NICOLA-F"
+
+#: ../rules/base.xml.in.h:515
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:517
+msgid "Nativo for Esperanto"
+msgstr "Nativo для эсперанто"
+
+#: ../rules/base.xml.in.h:518
+msgid "Nativo for USA keyboards"
+msgstr "Nativo для клавиатур в США"
+
+#: ../rules/base.xml.in.h:519
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nepal"
+msgstr "Непал"
+
+#: ../rules/base.xml.in.h:521
+msgid "Netherlands"
+msgstr "Нидерланды"
+
+#: ../rules/base.xml.in.h:522
+msgid "New phonetic"
+msgstr "Новая фонетическая"
+
+#: ../rules/base.xml.in.h:523
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:524
+msgid "Nigeria"
+msgstr "Нигерия"
+
+#: ../rules/base.xml.in.h:525
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:526
+msgid "Non-breakable space character at fourth level"
+msgstr "Символ неразрывного пробела в четвёртом ряду"
+
+#: ../rules/base.xml.in.h:527
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Символ неразрывного пробела в четвёртом ряду, символ тонкого неразрывного пробела в шестом ряду"
+
+#: ../rules/base.xml.in.h:528
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Символ неразрывного пробела в четвёртом ряду, символ тонкого неразрывного пробела в шестом ряду (с помощью Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:529
+msgid "Non-breakable space character at second level"
+msgstr "Символ неразрывного пробела во втором ряду"
+
+#: ../rules/base.xml.in.h:530
+msgid "Non-breakable space character at third level"
+msgstr "Символ неразрывного пробела в третьем ряду"
+
+#: ../rules/base.xml.in.h:531
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Символ неразрывного пробела в третьем ряду, ничего на четвёртом"
+
+#: ../rules/base.xml.in.h:532
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Символ неразрывного пробела в третьем ряду, символ тонкого неразрывного пробела в четвёртом ряду"
+
+#: ../rules/base.xml.in.h:533
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:534
+msgid "Northern Saami"
+msgstr "Северная Саамская"
+
+#: ../rules/base.xml.in.h:535
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Северная Саамская, исключая специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:536
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:537
+msgid "Norway"
+msgstr "Норвегия"
+
+#: ../rules/base.xml.in.h:538
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:539
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:540
+msgid "Numeric keypad delete key behaviour"
+msgstr "Функция клавиши Delete на цифровой клавиатуре"
+
+#: ../rules/base.xml.in.h:541
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Клавиши цифровой клавиатуры работают как в Mac"
+
+#: ../rules/base.xml.in.h:542
+msgid "Numeric keypad layout selection"
+msgstr "Выбор раскладки цифровой клавиатуры"
+
+#: ../rules/base.xml.in.h:543
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:544
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:545
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:546
+msgid "OLPC Pashto"
+msgstr "OLPC Pashto"
+
+#: ../rules/base.xml.in.h:547
+msgid "OLPC Southern Uzbek"
+msgstr "Южно-узбекский OLPC"
+
+#: ../rules/base.xml.in.h:548
+msgid "Occitan"
+msgstr "Окситанский"
+
+#: ../rules/base.xml.in.h:549
+msgid "Ogham"
+msgstr "Огхам"
+
+#: ../rules/base.xml.in.h:550
+msgid "Ogham IS434"
+msgstr "Огхам IS434"
+
+#: ../rules/base.xml.in.h:551
+msgid "Oriya"
+msgstr "Орийя"
+
+#: ../rules/base.xml.in.h:552
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:553
+msgid "Ossetian"
+msgstr "Осетинская"
+
+#: ../rules/base.xml.in.h:554
+msgid "Ossetian, Winkeys"
+msgstr "Осетинская, с клавишами Win"
+
+#: ../rules/base.xml.in.h:555
+msgid "Ossetian, legacy"
+msgstr "Осетинская, устаревшая"
+
+#: ../rules/base.xml.in.h:556
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:557
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:558
+msgid "Pakistan"
+msgstr "Пакистан"
+
+#: ../rules/base.xml.in.h:559
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Паннонская русинская омофоническая"
+
+#: ../rules/base.xml.in.h:560
+msgid "Pashto"
+msgstr "Пуштунская"
+
+#: ../rules/base.xml.in.h:561
+msgid "Pattachote"
+msgstr "Паттачот"
+
+#: ../rules/base.xml.in.h:562
+msgid "Pause"
+msgstr "Pause"
+
+#: ../rules/base.xml.in.h:563
+msgid "Persian, with Persian Keypad"
+msgstr "Персидская, с персидской доп. панелью"
+
+#: ../rules/base.xml.in.h:564
+msgid "Phi"
+msgstr "Phi"
+
+#: ../rules/base.xml.in.h:565
+msgid "Philippines"
+msgstr "Филиппины"
+
+#: ../rules/base.xml.in.h:566
+msgid "Phonetic"
+msgstr "Фонетическая"
+
+#: ../rules/base.xml.in.h:567
+msgid "Phonetic Winkeys"
+msgstr "Фонетическая с клавишами Win"
+
+#: ../rules/base.xml.in.h:568
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:569
+msgid "Poland"
+msgstr "Польша"
+
+#: ../rules/base.xml.in.h:570
+msgid "Polytonic"
+msgstr "Полифоническая"
+
+#: ../rules/base.xml.in.h:571
+msgid "Portugal"
+msgstr "Португалия"
+
+#: ../rules/base.xml.in.h:572
+msgid "Probhat"
+msgstr "Пробат"
+
+#: ../rules/base.xml.in.h:573
+msgid "Programmer Dvorak"
+msgstr "Дворак для программистов"
+
+#: ../rules/base.xml.in.h:574
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:575
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:576
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:577
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:578
+msgid "QWERTY (Baybayin)"
+msgstr "QWERTY (байбайин)"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right Alt"
+msgstr "Правая клавиша Alt"
+
+#: ../rules/base.xml.in.h:580
+msgid "Right Alt (while pressed)"
+msgstr "Правая клавиша Alt (пока нажата)"
+
+#: ../rules/base.xml.in.h:581
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "По правой клавише Alt выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда"
+
+#: ../rules/base.xml.in.h:582
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "По правой клавише Alt выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
+
+#: ../rules/base.xml.in.h:583
+msgid "Right Alt key never chooses 3rd level"
+msgstr "По правой клавише Alt никогда не выбирается третий ряд"
+
+#: ../rules/base.xml.in.h:584
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Правая клавиша Alt, Shift и правый Alt вместе работают как Multi_Key"
+
+#: ../rules/base.xml.in.h:585
+msgid "Right Ctrl"
+msgstr "Правая клавиша Ctrl"
+
+#: ../rules/base.xml.in.h:586
+msgid "Right Ctrl (while pressed)"
+msgstr "Правая клавиша Ctrl (пока нажата)"
+
+#: ../rules/base.xml.in.h:587
+msgid "Right Ctrl as Right Alt"
+msgstr "Правая клавиша Ctrl работает как правая клавиша Alt"
+
+#: ../rules/base.xml.in.h:588
+msgid "Right Ctrl+Right Shift"
+msgstr "Правый Ctrl+Правый Shift"
+
+#: ../rules/base.xml.in.h:589
+msgid "Right Shift"
+msgstr "Правая клавиша Shift"
+
+#: ../rules/base.xml.in.h:590
+msgid "Right Win"
+msgstr "Правая клавиша Win"
+
+#: ../rules/base.xml.in.h:591
+msgid "Right Win (while pressed)"
+msgstr "Правая клавиша Win (пока нажата)"
+
+#: ../rules/base.xml.in.h:592
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "По правой клавише Win выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда"
+
+#: ../rules/base.xml.in.h:593
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "По правой клавише Win выбирается 5-й ряд, блокируется при нажатии вместе с другим выборщиком-5-го-ряда, однократное нажатие снимает блокировку"
+
+#: ../rules/base.xml.in.h:594
+msgid "Right hand"
+msgstr "Правая рука"
+
+#: ../rules/base.xml.in.h:595
+msgid "Right handed Dvorak"
+msgstr "Дворак под правую руку"
+
+#: ../rules/base.xml.in.h:596
+msgid "Romania"
+msgstr "Румыния"
+
+#: ../rules/base.xml.in.h:597
+msgid "Romanian keyboard with German letters"
+msgstr "Румынская клавиатура с немецкими буквами"
+
+#: ../rules/base.xml.in.h:598
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Румынская клавиатура с немецкими буквами, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:599
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:600
+msgid "Rupee on 4"
+msgstr "Знак рупии на клавише 4"
+
+#: ../rules/base.xml.in.h:601
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:602
+msgid "Russia"
+msgstr "Россия"
+
+#: ../rules/base.xml.in.h:603
+msgid "Russian"
+msgstr "Русская"
+
+#: ../rules/base.xml.in.h:604
+msgid "Russian phonetic"
+msgstr "Русская фонетическая"
+
+#: ../rules/base.xml.in.h:605
+msgid "Russian phonetic Dvorak"
+msgstr "Русский фонетический Дворак"
+
+#: ../rules/base.xml.in.h:606
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Русская фонетическая, исключить специальные клавиши (dead keys)"
+
+#: ../rules/base.xml.in.h:607
+msgid "Russian with Kazakh"
+msgstr "Русская с казахской"
+
+#: ../rules/base.xml.in.h:608
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:609
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:610
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:611
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:612
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:613 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:614
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:615
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:616
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:617
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:618
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:619
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:620
+msgid "Semi-colon on third level"
+msgstr "Точка с запятой в третьем ряду"
+
+#: ../rules/base.xml.in.h:621
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:622
+msgid "Senegal"
+msgstr "Сенегал"
+
+#: ../rules/base.xml.in.h:623 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Сербия"
+
+#: ../rules/base.xml.in.h:624
+msgid "Serbian"
+msgstr "Сербская"
+
+#: ../rules/base.xml.in.h:625
+msgid "Serbo-Croatian"
+msgstr "Сербо-Хорватская"
+
+#: ../rules/base.xml.in.h:626
+msgid "Shift cancels Caps Lock"
+msgstr "Shift отменяет Caps Lock"
+
+#: ../rules/base.xml.in.h:627
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift не отменяет Num Lock, а выбирает третий ряд"
+
+#: ../rules/base.xml.in.h:628
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Клавиша Shift с клавишами цифровой клавиатуры работают также как в MS Windows"
+
+#: ../rules/base.xml.in.h:629
+msgid "Shift+Caps Lock"
+msgstr "Shift+Caps Lock"
+
+#: ../rules/base.xml.in.h:630
+msgid "Simple"
+msgstr "Простая"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sindhi"
+msgstr "Синдхи"
+
+#: ../rules/base.xml.in.h:632
+msgid "Slovakia"
+msgstr "Словакия"
+
+#: ../rules/base.xml.in.h:633
+msgid "Slovenia"
+msgstr "Словения"
+
+#: ../rules/base.xml.in.h:634
+msgid "South Africa"
+msgstr "Южная Африка"
+
+#: ../rules/base.xml.in.h:635
+msgid "Southern Uzbek"
+msgstr "Южно-узбекская"
+
+#: ../rules/base.xml.in.h:636
+msgid "Spain"
+msgstr "Испания"
+
+#: ../rules/base.xml.in.h:637
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Специальные клавиши (Ctrl+Alt+&lt;клв&gt;) обрабатываются сервером"
+
+#: ../rules/base.xml.in.h:638
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: ../rules/base.xml.in.h:639
+msgid "Standard"
+msgstr "Стандартная"
+
+#: ../rules/base.xml.in.h:640
+msgid "Standard (Cedilla)"
+msgstr "Стандартная (седиль)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:642
+msgid "Standard RSTU"
+msgstr "Стандартная RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:644
+msgid "Standard RSTU on Russian layout"
+msgstr "Стандартная RSTU, русская"
+
+#: ../rules/base.xml.in.h:645
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:646
+msgid "Sun dead keys"
+msgstr "Специальные клавиши (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:647
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:648
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:649
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:650
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:651
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Поменять местами клавиши Ctrl и Caps Lock"
+
+#: ../rules/base.xml.in.h:652
+msgid "Swap ESC and Caps Lock"
+msgstr "Поменять местами клавиши ESC и Caps Lock"
+
+#: ../rules/base.xml.in.h:653
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:654
+msgid "Sweden"
+msgstr "Швеция"
+
+#: ../rules/base.xml.in.h:655
+msgid "Switzerland"
+msgstr "Швейцария"
+
+#: ../rules/base.xml.in.h:656
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (карманный ПК)"
+
+#: ../rules/base.xml.in.h:657
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:658
+msgid "Syria"
+msgstr "Сирия"
+
+#: ../rules/base.xml.in.h:659
+msgid "Syriac"
+msgstr "Сирийская"
+
+#: ../rules/base.xml.in.h:660
+msgid "Syriac phonetic"
+msgstr "Сирийская фонетическая"
+
+#: ../rules/base.xml.in.h:661
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tajikistan"
+msgstr "Таджикистан"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tamil"
+msgstr "Тамильская"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tamil Keyboard with Numerals"
+msgstr "Тамильская клавиатура с цифрами"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tamil TAB Typewriter"
+msgstr "Тамильская \"Печатная машинка\" TAB"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tamil TSCII Typewriter"
+msgstr "Тамильская \"Печатная машинка\" TSCII"
+
+#: ../rules/base.xml.in.h:667
+msgid "Tamil Unicode"
+msgstr "Тамильская Юникодная"
+
+#: ../rules/base.xml.in.h:668
+msgid "Tanzania"
+msgstr "Танзания"
+
+#: ../rules/base.xml.in.h:669
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:670
+msgid "Tatar"
+msgstr "Татарская"
+
+#: ../rules/base.xml.in.h:671
+msgid "Telugu"
+msgstr "Телугу"
+
+#: ../rules/base.xml.in.h:672
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:673
+msgid "Thailand"
+msgstr "Таиланд"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tibetan"
+msgstr "Тибетская"
+
+#: ../rules/base.xml.in.h:675
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Тибетская (с цифрами ASCII)"
+
+#: ../rules/base.xml.in.h:676
+msgid "Tifinagh"
+msgstr "Тифинагская"
+
+#: ../rules/base.xml.in.h:677
+msgid "Tifinagh alternative"
+msgstr "Тифинагская альтернативная"
+
+#: ../rules/base.xml.in.h:678
+msgid "Tifinagh alternative phonetic"
+msgstr "Тифинагская альтернативная фонетическая"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tifinagh extended"
+msgstr "Тифинагская расширенная"
+
+#: ../rules/base.xml.in.h:680
+msgid "Tifinagh extended phonetic"
+msgstr "Тифинагская расширенная фонетическая"
+
+#: ../rules/base.xml.in.h:681
+msgid "Tifinagh phonetic"
+msgstr "Тифинагская фонетическая"
+
+#: ../rules/base.xml.in.h:682
+msgid "Tilde (~) variant"
+msgstr "Вариант с тильдой (~)"
+
+#: ../rules/base.xml.in.h:683
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:685
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "На соответствующую клавишу на клавиатуре Дворак."
+
+#: ../rules/base.xml.in.h:686
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "На соответствующую клавишу на клавиатуре Qwerty."
+
+#: ../rules/base.xml.in.h:687
+msgid "Toggle PointerKeys with Shift + NumLock."
+msgstr "Переключать PointerKeys с помощью Shift + NumLock."
+
+#: ../rules/base.xml.in.h:688
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:689
+msgid "Traditional phonetic"
+msgstr "Традиционная фонетическая"
+
+#: ../rules/base.xml.in.h:690
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:691
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:692
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:693
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:694
+msgid "Turkey"
+msgstr "Турция"
+
+#: ../rules/base.xml.in.h:695
+msgid "Turkmenistan"
+msgstr "Туркмения"
+
+#: ../rules/base.xml.in.h:696
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:697
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:698
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:699
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:режим EU)"
+
+#: ../rules/base.xml.in.h:700
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (106:режим JP)"
+
+#: ../rules/base.xml.in.h:701
+msgid "Typewriter"
+msgstr "Печатная машинка"
+
+#: ../rules/base.xml.in.h:702
+msgid "Typewriter, legacy"
+msgstr "Печатная машинка, устаревшая"
+
+#: ../rules/base.xml.in.h:703
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:704
+msgid "UCW layout (accented letters only)"
+msgstr "Раскладка UCW (только символы акцентов)"
+
+#: ../rules/base.xml.in.h:705
+msgid "US Dvorak with CZ UCW support"
+msgstr "Дворак США с поддержкой CZ UCW"
+
+#: ../rules/base.xml.in.h:706
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Клавиатура США с боснийскими диграфами"
+
+#: ../rules/base.xml.in.h:707
+msgid "US keyboard with Bosnian letters"
+msgstr "Клавиатура США с боснийскими буквами"
+
+#: ../rules/base.xml.in.h:708
+msgid "US keyboard with Croatian digraphs"
+msgstr "Клавиатура США с хорватскими диграфами"
+
+#: ../rules/base.xml.in.h:709
+msgid "US keyboard with Croatian letters"
+msgstr "Клавиатура США с хорватскими буквами"
+
+#: ../rules/base.xml.in.h:710
+msgid "US keyboard with Estonian letters"
+msgstr "Клавиатура США с эстонскими буквами"
+
+#: ../rules/base.xml.in.h:711
+msgid "US keyboard with Italian letters"
+msgstr "Клавиатура США с итальянскими буквами"
+
+#: ../rules/base.xml.in.h:712
+msgid "US keyboard with Lithuanian letters"
+msgstr "Клавиатура США с литовскими буквами"
+
+#: ../rules/base.xml.in.h:713
+msgid "US keyboard with Slovenian letters"
+msgstr "Клавиатура США со словенскими буквами"
+
+#: ../rules/base.xml.in.h:714 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "США"
+
+#: ../rules/base.xml.in.h:715
+msgid "Udmurt"
+msgstr "Удмуртская"
+
+#: ../rules/base.xml.in.h:716
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:717
+msgid "Ukraine"
+msgstr "Украина"
+
+#: ../rules/base.xml.in.h:718
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Дополнения юникода (стрелки и математические операторы)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Дополнения юникода (стрелки и математические операторы). Математические операторы в ряду по умолчанию"
+
+#: ../rules/base.xml.in.h:720
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:721
+msgid "United Kingdom"
+msgstr "Великобритания"
+
+#: ../rules/base.xml.in.h:722
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:723
+msgid "Urdu, Alternative phonetic"
+msgstr "Урду, альтернативная фонетическая"
+
+#: ../rules/base.xml.in.h:724
+msgid "Urdu, Phonetic"
+msgstr "Урду, фонетическая"
+
+#: ../rules/base.xml.in.h:725
+msgid "Urdu, Winkeys"
+msgstr "Урду, с клавишами Win"
+
+#: ../rules/base.xml.in.h:726
+msgid "Use Bosnian digraphs"
+msgstr "Использовать боснийские диграфы"
+
+#: ../rules/base.xml.in.h:727
+msgid "Use Croatian digraphs"
+msgstr "Использовать хорватские диграфы"
+
+#: ../rules/base.xml.in.h:728
+msgid "Use guillemets for quotes"
+msgstr "Использовать кавычки ёлочки как кавычки"
+
+#: ../rules/base.xml.in.h:729
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Использовать клавиатурные индикаторы для отображения дополнительных раскладок"
+
+#: ../rules/base.xml.in.h:730
+msgid "Using space key to input non-breakable space character"
+msgstr "Клавиша пробела используется для ввода символа неразрывного пробела"
+
+#: ../rules/base.xml.in.h:731
+msgid "Usual space at any level"
+msgstr "Обычный пробел в любом ряду"
+
+#: ../rules/base.xml.in.h:732
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:733
+msgid "Uzbekistan"
+msgstr "Узбекистан"
+
+#: ../rules/base.xml.in.h:734
+msgid "Vietnam"
+msgstr "Вьетнам"
+
+#: ../rules/base.xml.in.h:735
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:736
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:737
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Цифровая клавиатура Wang 724 с дополнениями юникода (стрелки и математические операторы)"
+
+#: ../rules/base.xml.in.h:738
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Цифровая клавиатура Wang 724 с дополнениями юникода (стрелки и математические операторы). Математические операторы в ряду по умолчанию"
+
+#: ../rules/base.xml.in.h:739
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:740
+msgid "Western"
+msgstr "Западная"
+
+#: ../rules/base.xml.in.h:741
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:742
+msgid "Winkeys"
+msgstr "Клавиши Win"
+
+#: ../rules/base.xml.in.h:743
+msgid "With &lt;\\|&gt; key"
+msgstr "С клавишей &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:744
+msgid "With EuroSign on 5"
+msgstr "С символом евро на клавише 5"
+
+#: ../rules/base.xml.in.h:745
+msgid "With guillemets"
+msgstr "С кавычками ёлочками"
+
+#: ../rules/base.xml.in.h:746
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:747
+msgid "Yakut"
+msgstr "Якутская"
+
+#: ../rules/base.xml.in.h:748
+msgid "Yoruba"
+msgstr "Йоруба"
+
+#: ../rules/base.xml.in.h:749
+msgid "Z and ZHE swapped"
+msgstr "З и Ж переставлены местами"
+
+#: ../rules/base.xml.in.h:750
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:751
+msgid "Zero-width non-joiner character at second level"
+msgstr "Несвязывающий символ нулевой ширины во втором ряду"
+
+#: ../rules/base.xml.in.h:752
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду"
+
+#: ../rules/base.xml.in.h:753
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду, ничего в четвёртом"
+
+#: ../rules/base.xml.in.h:754
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду, тонкий неразрывный пробел в четвёртом ряду"
+
+#: ../rules/base.xml.in.h:755
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Несвязывающий символ нулевой ширины во втором ряду, символ неразрывного пробела в третьем ряду, связывающий символ нулевой ширины в четвёртом ряду"
+
+#: ../rules/base.xml.in.h:756
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Несвязывающий символ нулевой ширины во втором ряду, связывающий символ нулевой ширины в третьем ряду"
+
+#: ../rules/base.xml.in.h:757
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Несвязывающий символ нулевой ширины во втором ряду, связывающий символ нулевой ширины в третьем ряду, символ неразрывного пробела в четвёртом ряду"
+
+#: ../rules/base.xml.in.h:758
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Несвязывающий символ нулевой ширины в третьем ряду, связывающий символ нулевой ширины в четвёртом ряду"
+
+#: ../rules/base.xml.in.h:759
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:760
+msgid "azerty/digits"
+msgstr "azerty/цифры"
+
+#: ../rules/base.xml.in.h:761
+msgid "digits"
+msgstr "цифры"
+
+#: ../rules/base.xml.in.h:762
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "смещённые точка с запятой и кавычка (устарело)"
+
+#: ../rules/base.xml.in.h:763
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:764
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:765
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, расширенные функции Backslash"
+
+#: ../rules/base.xml.in.h:766
+msgid "qwerty/digits"
+msgstr "qwerty/цифры"
+
+#: ../rules/base.xml.in.h:767
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Атсинская"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Авестийская"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Объединённые надбуквенные знаки вместе спец. клавиш (dead keys)"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Салишская кёр-д’ален"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Международная (объединённая с AltGr Unicode)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Международная (объединённая с AltGr Unicode, альтернативная)"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "5"
+#~ msgstr "5"
+
+#~ msgid "E"
+#~ msgstr "E"
+
+#~ msgid "LAm"
+#~ msgstr "LAm"