merge in jb-release history after reset to jb-dev
diff --git a/dictionaries/en_gb_wordlist.xml b/dictionaries/en_gb_wordlist.xml
index fe4081b..c2af46e 100644
--- a/dictionaries/en_gb_wordlist.xml
+++ b/dictionaries/en_gb_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="en_GB" description="English (UK)" date="1339787870" version="15">
+<wordlist locale="en_GB" description="English (UK)" date="1340038724" version="16">
  <w f="222" flags="">the</w>
  <w f="214" flags="">of</w>
  <w f="212" flags="">and</w>
@@ -11907,6 +11907,7 @@
  <w f="100" flags="">helmets</w>
  <w f="100" flags="">heyday</w>
  <w f="100" flags="">highlighting</w>
+ <w f="100">how've</w>
  <w f="100" flags="">hugely</w>
  <w f="100" flags="">iPhone</w>
  <w f="100" flags="">identifiable</w>
@@ -19290,6 +19291,8 @@
  <w f="90" flags="">weir</w>
  <w f="90">well-being</w>
  <w f="90" flags="">wettest</w>
+ <w f="90">when's</w>
+ <w f="90">where'll</w>
  <w f="90" flags="">whipped</w>
  <w f="90" flags="">widowers</w>
  <w f="90" flags="">winner's</w>
@@ -87399,6 +87402,7 @@
  <w f="40" flags="">housemother</w>
  <w f="40" flags="">houseware</w>
  <w f="40" flags="">housewife's</w>
+ <w f="40">how'll</w>
  <w f="40" flags="">hucksters</w>
  <w f="40" flags="">humanise</w>
  <w f="40" flags="">humbles</w>
@@ -134707,6 +134711,7 @@
  <w f="10" flags="">wettish</w>
  <w f="10" flags="">whammies</w>
  <w f="10" flags="nonword">what'd</w>
+ <w f="10">what'm</w>
  <w f="10" flags="">wheaties</w>
  <w f="10" flags="">wheelbarrow's</w>
  <w f="10" flags="">wheezers</w>
@@ -134729,6 +134734,7 @@
  <w f="10" flags="">whoas</w>
  <w f="10" flags="">whoopers</w>
  <w f="10" flags="">whopped</w>
+ <w f="10">why'll</w>
  <w f="10" flags="">widgeons</w>
  <w f="10" flags="">widgie</w>
  <w f="10" flags="">wikipedias</w>
@@ -156771,6 +156777,7 @@
  <w f="0" flags="medical">virginity</w>
  <w f="0">virginity's</w>
  <w f="0" flags="babytalk">virgins</w>
+ <w f="0">vis</w>
  <w f="0" flags="">voyeur</w>
  <w f="0" flags="n">voyeurism</w>
  <w f="0" flags="n">voyeurs</w>
diff --git a/dictionaries/en_us_wordlist.xml b/dictionaries/en_us_wordlist.xml
index 4ceba5b..3cafbd7 100644
--- a/dictionaries/en_us_wordlist.xml
+++ b/dictionaries/en_us_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="en_US" description="English (US)" date="1339787839" version="15">
+<wordlist locale="en_US" description="English (US)" date="1340038693" version="16">
  <w f="222" flags="">the</w>
  <w f="214" flags="">of</w>
  <w f="212" flags="">and</w>
@@ -12307,6 +12307,7 @@
  <w f="100" flags="">heyday</w>
  <w f="100" flags="">highlighting</w>
  <w f="100" flags="">hospitalized</w>
+ <w f="100">how've</w>
  <w f="100" flags="">hugely</w>
  <w f="100" flags="">iPhone</w>
  <w f="100" flags="">identifiable</w>
@@ -20036,6 +20037,8 @@
  <w f="90" flags="">weir</w>
  <w f="90">well-being</w>
  <w f="90" flags="">wettest</w>
+ <w f="90">when's</w>
+ <w f="90">where'll</w>
  <w f="90" flags="">whipped</w>
  <w f="90" flags="">widowers</w>
  <w f="90" flags="">winner's</w>
@@ -90336,6 +90339,7 @@
  <w f="40" flags="">housemother</w>
  <w f="40" flags="">houseware</w>
  <w f="40" flags="">housewife's</w>
+ <w f="40">how'll</w>
  <w f="40" flags="">hucksters</w>
  <w f="40" flags="">humbles</w>
  <w f="40" flags="">hurling's</w>
@@ -138233,6 +138237,7 @@
  <w f="10" flags="">wettish</w>
  <w f="10" flags="">whammies</w>
  <w f="10" flags="nonword">what'd</w>
+ <w f="10">what'm</w>
  <w f="10" flags="">wheelbarrow's</w>
  <w f="10" flags="">wheezers</w>
  <w f="10" flags="">whelm</w>
@@ -138254,6 +138259,7 @@
  <w f="10" flags="">whoas</w>
  <w f="10" flags="">whoopers</w>
  <w f="10" flags="">whopped</w>
+ <w f="10">why'll</w>
  <w f="10" flags="">widgeons</w>
  <w f="10" flags="">widgie</w>
  <w f="10" flags="">wight's</w>
@@ -160529,6 +160535,7 @@
  <w f="0" flags="medical">virginity</w>
  <w f="0">virginity's</w>
  <w f="0" flags="babytalk">virgins</w>
+ <w f="0">vis</w>
  <w f="0" flags="">voyeur</w>
  <w f="0" flags="n">voyeurism</w>
  <w f="0" flags="n">voyeurs</w>
diff --git a/dictionaries/en_wordlist.xml b/dictionaries/en_wordlist.xml
index 6b3ab31..6f594d5 100644
--- a/dictionaries/en_wordlist.xml
+++ b/dictionaries/en_wordlist.xml
@@ -1,4 +1,4 @@
-<wordlist locale="en" description="English" date="1339788037" version="15">
+<wordlist locale="en" description="English" date="1340038727" version="16">
  <w f="222" flags="">the</w>
  <w f="214" flags="">of</w>
  <w f="212" flags="">and</w>
@@ -12401,6 +12401,7 @@
  <w f="100" flags="">heyday</w>
  <w f="100" flags="">highlighting</w>
  <w f="100" flags="">hospitalized</w>
+ <w f="100">how've</w>
  <w f="100" flags="">hugely</w>
  <w f="100" flags="">iPhone</w>
  <w f="100" flags="">identifiable</w>
@@ -20230,6 +20231,8 @@
  <w f="90" flags="">weir</w>
  <w f="90">well-being</w>
  <w f="90" flags="">wettest</w>
+ <w f="90">when's</w>
+ <w f="90">where'll</w>
  <w f="90" flags="">whipped</w>
  <w f="90" flags="">widowers</w>
  <w f="90" flags="">winner's</w>
@@ -92316,6 +92319,7 @@
  <w f="40" flags="">housemother</w>
  <w f="40" flags="">houseware</w>
  <w f="40" flags="">housewife's</w>
+ <w f="40">how'll</w>
  <w f="40" flags="">hucksters</w>
  <w f="40" flags="">humanise</w>
  <w f="40" flags="">humbles</w>
@@ -142321,6 +142325,7 @@
  <w f="10" flags="">wettish</w>
  <w f="10" flags="">whammies</w>
  <w f="10" flags="nonword">what'd</w>
+ <w f="10">what'm</w>
  <w f="10" flags="">wheaties</w>
  <w f="10" flags="">wheelbarrow's</w>
  <w f="10" flags="">wheezers</w>
@@ -142343,6 +142348,7 @@
  <w f="10" flags="">whoas</w>
  <w f="10" flags="">whoopers</w>
  <w f="10" flags="">whopped</w>
+ <w f="10">why'll</w>
  <w f="10" flags="">widgeons</w>
  <w f="10" flags="">widgie</w>
  <w f="10" flags="">wight's</w>
@@ -165359,6 +165365,7 @@
  <w f="0" flags="medical">virginity</w>
  <w f="0">virginity's</w>
  <w f="0" flags="babytalk">virgins</w>
+ <w f="0">vis</w>
  <w f="0" flags="">voyeur</w>
  <w f="0" flags="n">voyeurism</w>
  <w f="0" flags="n">voyeurs</w>
diff --git a/java/res/raw/main_en.dict b/java/res/raw/main_en.dict
index c96276e..98a9361 100644
--- a/java/res/raw/main_en.dict
+++ b/java/res/raw/main_en.dict
Binary files differ
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 647350d..a54958c 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -106,8 +106,8 @@
     <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Su tastiera principale"</string>
     <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Su tastiera simboli"</string>
     <string name="voice_input_modes_off" msgid="3745699748218082014">"Non attivo"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic su tastiera principale"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic su tastiera simboli"</string>
+    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Microfono su tastiera principale"</string>
+    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Microfono su tastiera simboli"</string>
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Comandi vocali disatt."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configura metodi di immissione"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string>
@@ -140,6 +140,6 @@
     <string name="not_now" msgid="6172462888202790482">"Non ora"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Esiste già uno stile di inuput uguale: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
     <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modalità Studio sull\'usabilità"</string>
-    <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Impostazioni durata vibrazione alla pressione di un tasto"</string>
-    <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Impostazioni volume audio alla pressione di un tasto"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="1829950405285211668">"Durata vibrazione alla pressione tasto"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="5875933757082305040">"Volume audio alla pressione di un tasto"</string>
 </resources>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 82c867e..da51cb3 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -135,7 +135,7 @@
     <string name="save" msgid="7646738597196767214">"Hifadhi"</string>
     <string name="subtype_locale" msgid="8576443440738143764">"Lugha"</string>
     <string name="keyboard_layout_set" msgid="4309233698194565609">"Mpangilio"</string>
-    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Unaweza kugeuza kukufaa mfumo wako ma maingizo ili kuwezeshwa kabla ya kuanza kuutumia. Unataka kuuwesha sasa?"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Mtindo wa ingizo lako maalum unahitaji kuwa umewezeshwa kabla uanze kulitumia. Unataka kuuwesha sasa?"</string>
     <string name="enable" msgid="5031294444630523247">"Wezesha"</string>
     <string name="not_now" msgid="6172462888202790482">"Sio sasa"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Mfumo sawa wa maingizo tayari upo: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index d5268ea..8d3319d 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -62,7 +62,7 @@
     <integer name="config_long_press_key_timeout">400</integer>
     <!-- Long pressing shift will invoke caps-lock if > 0, never invoke caps-lock if == 0 -->
     <integer name="config_long_press_shift_key_timeout">1200</integer>
-    <integer name="config_ignore_alt_code_key_timeout">700</integer>
+    <integer name="config_ignore_alt_code_key_timeout">350</integer>
     <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
          false -->
     <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
diff --git a/java/res/xml-sw600dp/key_apostrophe.xml b/java/res/xml-sw600dp/key_apostrophe.xml
index 0c838db..2aec347 100644
--- a/java/res/xml-sw600dp/key_apostrophe.xml
+++ b/java/res/xml-sw600dp/key_apostrophe.xml
@@ -28,6 +28,16 @@
             <Key
                 latin:keyLabel="-" />
         </case>
+        <case
+            latin:languageCode="fa"
+        >
+            <Key
+                latin:keyLabel="!text/keylabel_for_apostrophe"
+                latin:keyHintLabel="!text/keyhintlabel_for_apostrophe"
+                latin:keyLabelFlags="hasPopupHint"
+                latin:moreKeys="!text/more_keys_for_apostrophe"
+                latin:keyStyle="hasShiftedLetterHintStyle" />
+        </case>
         <default>
             <Key
                 latin:keyLabel="!text/keylabel_for_apostrophe"
diff --git a/java/res/xml-sw600dp/key_dash.xml b/java/res/xml-sw600dp/key_dash.xml
index 118b67f..b139c29 100644
--- a/java/res/xml-sw600dp/key_dash.xml
+++ b/java/res/xml-sw600dp/key_dash.xml
@@ -34,6 +34,7 @@
             <Key
                 latin:keyLabel="."
                 latin:keyHintLabel="!text/keyhintlabel_for_arabic_diacritics"
+                latin:keyLabelFlags="hasPopupHint"
                 latin:moreKeys="!text/more_keys_for_arabic_diacritics"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
         </case>
diff --git a/java/res/xml-sw600dp/rowkeys_farsi3.xml b/java/res/xml-sw600dp/rowkeys_farsi3.xml
index cb81840..998ba72 100644
--- a/java/res/xml-sw600dp/rowkeys_farsi3.xml
+++ b/java/res/xml-sw600dp/rowkeys_farsi3.xml
@@ -27,11 +27,12 @@
     <!-- U+0637: "ط" ARABIC LETTER TAH -->
     <Key
         latin:keyLabel="&#x0637;" />
-    <!-- U+0632: "ز" ARABIC LETTER ZAIN
-         U+0698: "ژ" ARABIC LETTER JEH -->
+    <!-- U+0698: "ژ" ARABIC LETTER JEH -->
     <Key
-        latin:keyLabel="&#x0632;"
-        latin:moreKeys="&#x0698;" />
+        latin:keyLabel="&#x0698;" />
+    <!-- U+0632: "ز" ARABIC LETTER ZAIN -->
+    <Key
+        latin:keyLabel="&#x0632;" />
     <!-- U+0631: "ر" ARABIC LETTER REH -->
     <Key
         latin:keyLabel="&#x0631;" />
@@ -49,4 +50,7 @@
     <Key
         latin:keyLabel="&#x0648;"
         latin:moreKeys="&#x0624;" />
+    <!-- U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE -->
+    <Key
+        latin:keyLabel="&#x0622;" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_farsi.xml b/java/res/xml-sw600dp/rows_farsi.xml
index 1ce6586..52c2d93 100644
--- a/java/res/xml-sw600dp/rows_farsi.xml
+++ b/java/res/xml-sw600dp/rows_farsi.xml
@@ -44,8 +44,6 @@
         <include
             latin:keyboardLayout="@xml/rowkeys_farsi3"
             latin:keyXPos="4.091%p" />
-        <include
-            latin:keyboardLayout="@xml/keys_comma_period" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
diff --git a/java/res/xml-sw768dp/rows_farsi.xml b/java/res/xml-sw768dp/rows_farsi.xml
index 28031bb..4b4c970 100644
--- a/java/res/xml-sw768dp/rows_farsi.xml
+++ b/java/res/xml-sw768dp/rows_farsi.xml
@@ -52,8 +52,6 @@
         <include
             latin:keyboardLayout="@xml/rowkeys_farsi3"
             latin:keyXPos="13.829%p" />
-        <include
-            latin:keyboardLayout="@xml/keys_comma_period" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
index 7d5d714..70e38fd 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
@@ -275,11 +275,6 @@
         return false;
     }
 
-    @Override
-    public AccessibilityNodeInfoCompat findAccessibilityFocus(int virtualViewId) {
-        return createAccessibilityNodeInfo(mAccessibilityFocusedView);
-    }
-
     /**
      * Sends an accessibility event for the given {@link Key}.
      *
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 1e3a0a5..8c218c6 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -1101,14 +1101,16 @@
         // U+060C: "،" ARABIC COMMA
         // U+061B: "؛" ARABIC SEMICOLON
         // U+061F: "؟" ARABIC QUESTION MARK
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
         /* 98 */ "\u060C",
         /* 99 */ "!",
         /* 100 */ "!,\\,",
         /* 101 */ "\u061F",
         /* 102 */ "\u061F,?",
-        /* 103 */ null,
-        /* 104 */ null,
-        /* 105 */ "\u061F,\u061B,!,:,-,/,\',\"",
+        /* 103 */ "\u060C",
+        /* 104 */ "\u061F",
+        /* 105 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB",
     };
 
     /* Language fi: Finnish */
diff --git a/tools/maketext/res/values-fa/donottranslate-more-keys.xml b/tools/maketext/res/values-fa/donottranslate-more-keys.xml
index e64af95..3519eea 100644
--- a/tools/maketext/res/values-fa/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-fa/donottranslate-more-keys.xml
@@ -63,13 +63,17 @@
     <string name="more_keys_for_symbols_percent">\\%,&#x2030;</string>
     <!-- U+060C: "،" ARABIC COMMA
          U+061B: "؛" ARABIC SEMICOLON
-         U+061F: "؟" ARABIC QUESTION MARK -->
+         U+061F: "؟" ARABIC QUESTION MARK
+         U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+         U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
     <string name="keylabel_for_tablet_comma">"&#x060C;"</string>
     <string name="keyhintlabel_for_tablet_comma">"!"</string>
     <string name="more_keys_for_tablet_comma">"!,\\,"</string>
     <string name="keyhintlabel_for_tablet_period">"&#x061F;"</string>
     <string name="more_keys_for_tablet_period">"&#x061F;,\?"</string>
-    <string name="more_keys_for_apostrophe">"&#x061F;,&#x061B;,!,:,-,/,\',\""</string>
+    <string name="keylabel_for_apostrophe">&#x060C;</string>
+    <string name="keyhintlabel_for_apostrophe">&#x061F;</string>
+    <string name="more_keys_for_apostrophe">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;"</string>
     <!-- U+061F: "؟" ARABIC QUESTION MARK
          U+060C: "،" ARABIC COMMA
          U+061B: "؛" ARABIC SEMICOLON -->