summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/input_method/xkeyboard.cc52
-rw-r--r--chrome/browser/chromeos/input_method/xkeyboard_data.h66
-rw-r--r--chrome/chrome_browser.gypi1
-rwxr-xr-xtools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py70
4 files changed, 112 insertions, 77 deletions
diff --git a/chrome/browser/chromeos/input_method/xkeyboard.cc b/chrome/browser/chromeos/input_method/xkeyboard.cc
index 29a1ab87..81ae491 100644
--- a/chrome/browser/chromeos/input_method/xkeyboard.cc
+++ b/chrome/browser/chromeos/input_method/xkeyboard.cc
@@ -16,6 +16,7 @@
#include "base/string_util.h"
#include "base/stringprintf.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
+#include "chrome/browser/chromeos/input_method/xkeyboard_data.h"
#include "chrome/browser/chromeos/system/runtime_environment.h"
#include "content/public/browser/browser_thread.h"
#include "ui/base/x/x11_util.h"
@@ -45,57 +46,6 @@ ModifierKey kCustomizableKeys[] = {
kLeftAltKey
};
-// These arrays are generated by 'gen_keyboard_overlay_data.py --altgr'
-// These are the input method IDs that shouldn't remap the right alt key.
-const char* kKeepRightAltInputMethods[] = {
- "mozc-hangul",
- "xkb:be::fra",
- "xkb:be::ger",
- "xkb:be::nld",
- "xkb:bg::bul",
- "xkb:bg:phonetic:bul",
- "xkb:br::por",
- "xkb:ca::fra",
- "xkb:ca:eng:eng",
- "xkb:ch::ger",
- "xkb:ch:fr:fra",
- "xkb:cz::cze",
- "xkb:de::ger",
- "xkb:de:neo:ger",
- "xkb:dk::dan",
- "xkb:ee::est",
- "xkb:es::spa",
- "xkb:es:cat:cat",
- "xkb:fi::fin",
- "xkb:fr::fra",
- "xkb:gb:dvorak:eng",
- "xkb:gb:extd:eng",
- "xkb:gr::gre",
- "xkb:hr::scr",
- "xkb:il::heb",
- "xkb:it::ita",
- "xkb:kr:kr104:kor",
- "xkb:latam::spa",
- "xkb:lt::lit",
- "xkb:no::nob",
- "xkb:pl::pol",
- "xkb:pt::por",
- "xkb:ro::rum",
- "xkb:se::swe",
- "xkb:si::slv",
- "xkb:sk::slo",
- "xkb:tr::tur",
- "xkb:ua::ukr",
- "xkb:us:altgr-intl:eng",
- "xkb:us:intl:eng",
-};
-
-// These are the overlay names with caps lock remapped
-const char* kCapsLockRemapped[] = {
- "xkb:de:neo:ger",
- "xkb:us:colemak:eng",
-};
-
// A string for obtaining a mask value for Num Lock.
const char kNumLockVirtualModifierString[] = "NumLock";
diff --git a/chrome/browser/chromeos/input_method/xkeyboard_data.h b/chrome/browser/chromeos/input_method/xkeyboard_data.h
new file mode 100644
index 0000000..08566aa
--- /dev/null
+++ b/chrome/browser/chromeos/input_method/xkeyboard_data.h
@@ -0,0 +1,66 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// This file was generated by 'gen_keyboard_overlay_data.py --altgr'
+
+#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_DATA_H_
+#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_DATA_H_
+
+namespace chromeos {
+namespace input_method {
+
+// These are the input method IDs that shouldn't remap the right alt key.
+const char* kKeepRightAltInputMethods[] = {
+ "mozc-hangul",
+ "xkb:be::fra",
+ "xkb:be::ger",
+ "xkb:be::nld",
+ "xkb:bg::bul",
+ "xkb:bg:phonetic:bul",
+ "xkb:br::por",
+ "xkb:ca::fra",
+ "xkb:ca:eng:eng",
+ "xkb:ch::ger",
+ "xkb:ch:fr:fra",
+ "xkb:cz::cze",
+ "xkb:de::ger",
+ "xkb:de:neo:ger",
+ "xkb:dk::dan",
+ "xkb:ee::est",
+ "xkb:es::spa",
+ "xkb:es:cat:cat",
+ "xkb:fi::fin",
+ "xkb:fr::fra",
+ "xkb:gb:dvorak:eng",
+ "xkb:gb:extd:eng",
+ "xkb:gr::gre",
+ "xkb:hr::scr",
+ "xkb:il::heb",
+ "xkb:it::ita",
+ "xkb:kr:kr104:kor",
+ "xkb:latam::spa",
+ "xkb:lt::lit",
+ "xkb:no::nob",
+ "xkb:pl::pol",
+ "xkb:pt::por",
+ "xkb:ro::rum",
+ "xkb:se::swe",
+ "xkb:si::slv",
+ "xkb:sk::slo",
+ "xkb:tr::tur",
+ "xkb:ua::ukr",
+ "xkb:us:altgr-intl:eng",
+ "xkb:us:intl:eng",
+};
+
+// These are the overlay names with caps lock remapped
+const char* kCapsLockRemapped[] = {
+ "xkb:de:neo:ger",
+ "xkb:us:colemak:eng",
+};
+
+} // input_method
+} // chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_DATA_H_
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index a112a31..5c0a293 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -526,6 +526,7 @@
'browser/chromeos/input_method/virtual_keyboard_selector.h',
'browser/chromeos/input_method/xkeyboard.cc',
'browser/chromeos/input_method/xkeyboard.h',
+ 'browser/chromeos/input_method/xkeyboard_data.h',
'browser/chromeos/language_preferences.cc',
'browser/chromeos/language_preferences.h',
'browser/chromeos/legacy_window_manager/initial_browser_window_observer.cc',
diff --git a/tools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py b/tools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py
index 7be6f29..f736130 100755
--- a/tools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py
+++ b/tools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
@@ -54,14 +54,12 @@ GRD_FILENAME = 'generated_resources.grd'
JS_OUTDIR = 'chrome/browser/resources/chromeos'
JS_FILENAME = 'keyboard_overlay_data.js'
ALTGR_OUTDIR = 'chrome/browser/chromeos/input_method'
-ALTGR_FILENAME = 'xkeyboard.cc'
+ALTGR_FILENAME = 'xkeyboard_data.h'
CC_START = r'IDS_KEYBOARD_OVERLAY_INSTRUCTIONS_HIDE },'
CC_END = r'};'
GRD_START = """Escape to hide
</message>"""
GRD_END = r' </if>'
-ALTGR_START = r"arrays are generated by 'gen_keyboard_overlay_data.py --altgr'"
-ALTGR_END = r'class XkbLayoutSets {'
LABEL_MAP = {
'glyph_arrow_down': 'down',
@@ -179,7 +177,15 @@ CC_SNIPPET_TEMPLATE=""" { "%s", %s },
"""
ALTGR_TEMPLATE=(
-"""// These are the input method IDs that shouldn't remap the right alt key.
+"""// This file was generated by 'gen_keyboard_overlay_data.py --altgr'
+
+#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_DATA_H_
+#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_DATA_H_
+
+namespace chromeos {
+namespace input_method {
+
+// These are the input method IDs that shouldn't remap the right alt key.
const char* kKeepRightAltInputMethods[] = {
%s
};
@@ -189,6 +195,10 @@ const char* kCapsLockRemapped[] = {
%s
};
+} // input_method
+} // chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_DATA_H_
""")
def SplitBehavior(behavior):
@@ -446,26 +456,11 @@ def GetPath(path_from_src):
return path
-def OutputJson(keyboard_glyph_data, hotkey_data, layouts, var_name, outdir):
- """Outputs the keyboard overlay data as a JSON file."""
- action_to_id = {}
- for (behavior, action, _) in hotkey_data:
- i18nContent = Toi18nContent(behavior)
- action_to_id[action] = i18nContent
- data = {'keyboardGlyph': keyboard_glyph_data,
- 'shortcut': action_to_id,
- 'layouts': layouts,
- 'inputMethodIdToOverlayId': INPUT_METHOD_ID_TO_OVERLAY_ID}
- if outdir:
- outpath = os.path.join(outdir, JS_FILENAME)
- else:
- outpath = GetPath(os.path.join(JS_OUTDIR, JS_FILENAME))
+def OutputFile(outpath, snippet):
+ """Output the snippet into the specified path."""
out = file(outpath, 'w')
out.write(GenerateCopyrightHeader() + '\n')
- json_data = json.dumps(data, sort_keys=True, indent=2)
- # Remove redundant spaces after ','
- json_data = json_data.replace(', \n', ',\n')
- out.write('var %s = %s;\n' % (var_name, json_data))
+ out.write(snippet)
print 'Output ' + os.path.normpath(outpath)
@@ -490,6 +485,27 @@ def RewriteFile(start, end, original_dir, original_filename, snippet,
print 'Output ' + os.path.normpath(outpath)
+def OutputJson(keyboard_glyph_data, hotkey_data, layouts, var_name, outdir):
+ """Outputs the keyboard overlay data as a JSON file."""
+ action_to_id = {}
+ for (behavior, action, _) in hotkey_data:
+ i18nContent = Toi18nContent(behavior)
+ action_to_id[action] = i18nContent
+ data = {'keyboardGlyph': keyboard_glyph_data,
+ 'shortcut': action_to_id,
+ 'layouts': layouts,
+ 'inputMethodIdToOverlayId': INPUT_METHOD_ID_TO_OVERLAY_ID}
+
+ if not outdir:
+ outdir = JS_OUTDIR
+ outpath = GetPath(os.path.join(outdir, JS_FILENAME))
+ json_data = json.dumps(data, sort_keys=True, indent=2)
+ # Remove redundant spaces after ','
+ json_data = json_data.replace(', \n', ',\n')
+ snippet = 'var %s = %s;\n' % (var_name, json_data)
+ OutputFile(outpath, snippet)
+
+
def OutputGrd(hotkey_data, outdir):
"""Outputs a part of messages in the grd file."""
snippet = cStringIO.StringIO()
@@ -539,11 +555,13 @@ def OutputAltGr(keyboard_glyph_data, outdir):
caps_lock_output.append(' "%s",' % input_method_id)
except KeyError:
pass
+
+ if not outdir:
+ outdir = ALTGR_OUTDIR
+ outpath = GetPath(os.path.join(outdir, ALTGR_FILENAME))
snippet = ALTGR_TEMPLATE % ("\n".join(sorted(altgr_output)),
"\n".join(sorted(caps_lock_output)))
-
- RewriteFile(ALTGR_START, ALTGR_END, ALTGR_OUTDIR, ALTGR_FILENAME, snippet,
- outdir)
+ OutputFile(outpath, snippet)
def main():