[Verizon Samsung Galaxy S III] Didact74:
Here is a couple simple MODs I worked up. The IME MOD is in my Multi-Mod and the AOSP Vibrate was something AndyBones requested a few days ago. Keep in mind most of these guides from here on out will assume you are using my ROM Control settings. Its much easier to protect from updates and much easier to edit when adding new MODs.

Lets start with SecSettings....

Navigate to res/xml/rom_settings.xml

Add the following code in RED

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/rom_settings"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings.didact">
<PreferenceCategory android:title="@string/rom_settings_section_one_title" />
<ListPreference android:persistent="true" android:entries="@array/lockscreen_entries" android:title="Choose Your LockScreen" android:key="lockscreen_type_key" android:defaultValue="1" android:entryValues="@array/lockscreen_values" />
<CheckBoxPreference android:title="@string/enable_lockscreen_torch" android:key="enable_lockscreen_torch" android:summary="@string/enable_lockscreen_torch_text" />
[COLOR="red"]<CheckBoxPreference android:title="@string/enable_aosp_vibrate" android:key="aosp_vibrate" android:summary="@string/enable_aosp_vibrate_text" />
[/COLOR] <PreferenceCategory android:title="@string/rom_settings_section_two_title" />
<ListPreference android:entries="@array/clock_style_entries" android:title="@string/clock_title_enable" android:key="clock_style" android:entryValues="@array/clock_style_values" />
<ListPreference android:entries="@array/clock_ampm_entries" android:title="@string/title_clock_ampm_entries" android:key="clock_am_pm_style" android:entryValues="@array/clock_ampm_values" />
<ListPreference android:entries="@array/clock_weekday_entries" android:title="@string/enable_clock_weekday" android:key="clock_weekday" android:summary="@string/enable_clock_weekday_summary" android:entryValues="@array/clock_weekday_values" />
<PreferenceCategory android:title="@string/rom_settings_section_three_title" />
<ListPreference android:entries="@array/battery_icon_entries" android:title="@string/battery_icon" android:key="battery_icon_list" android:entryValues="@array/battery_icon_values" />
<PreferenceCategory android:title="@string/rom_settings_section_four_title" />
[COLOR="red"]<CheckBoxPreference android:title="@string/enable_ime_icon" android:key="enable_ime_icon" android:summary="@string/enable_ime_icon_text" />
[/COLOR] <CheckBoxPreference android:persistent="false" android:title="@string/long_press_volume_title" android:key="music_control" android:summary="@string/long_press_volume_summary" />
<CheckBoxPreference android:title="@string/crtanimation_title" android:key="crtanimation_toggle" android:summary="@string/crtanimation_summary" />
</PreferenceScreen>

Navigate to res/values/strings

Add the following code

<string name="enable_ime_icon">Keyboard icon</string>
<string name="enable_ime_icon_text">Enable IME keyboard icon</string>
<string name="enable_aosp_vibrate">AOSP lockscreen vibration</string>
<string name="enable_aosp_vibrate_text">Enable lockscreen vibration</string>

Navigate to smali/com/android/settings/didact/RomSettings.smali

Add the following code in RED to the # instance Fields

# instance fields
.field mBatteryIcon:Landroid/preference/ListPreference;

.field mBatteryStyle:Landroid/preference/ListPreference;

.field mClockAmPmstyle:Landroid/preference/ListPreference;

.field mClockStyle:Landroid/preference/ListPreference;

.field mClockWeekday:Landroid/preference/ListPreference;

.field mCrtAnimationPreference:Landroid/preference/CheckBoxPreference;

[COLOR="red"].field mImeIcon:Landroid/preference/CheckBoxPreference;
[/COLOR]
.field mLockScreenStylePref:Landroid/preference/ListPreference;

.field mLockScreenTorch:Landroid/preference/CheckBoxPreference;

.field mMusicControl:Landroid/preference/CheckBoxPreference;

[COLOR="red"].field mAospLockVibration:Landroid/preference/CheckBoxPreference;
[/COLOR]

Locate .method public onCreate(Landroid/os/Bundle;)V

Add the code in RED

const-string v5, "enable_lockscreen_torch"

invoke-static {v1, v5, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v1

if-ne v1, v2, :cond_0

move v1, v2

:goto_0
invoke-virtual {v4, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V

[COLOR="red"] const-string v1, "enable_ime_icon"

invoke-virtual {p0, v1}, Lcom/android/settings/didact/RomSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v1

check-cast v1, Landroid/preference/CheckBoxPreference;

iput-object v1, p0, Lcom/android/settings/didact/RomSettings;->mImeIcon:Landroid/preference/CheckBoxPreference;

iget-object v4, p0, Lcom/android/settings/didact/RomSettings;->mImeIcon:Landroid/preference/CheckBoxPreference;

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v1

invoke-virtual {v1}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v1

const-string v5, "enable_ime_icon"

invoke-static {v1, v5, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v1

if-ne v1, v2, :cond_1

move v1, v2

:goto_1
invoke-virtual {v4, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
[/COLOR]
const-string v1, "music_control"

invoke-virtual {p0, v1}, Lcom/android/settings/didact/RomSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v1

check-cast v1, Landroid/preference/CheckBoxPreference;

iput-object v1, p0, Lcom/android/settings/didact/RomSettings;->mMusicControl:Landroid/preference/CheckBoxPreference;

iget-object v4, p0, Lcom/android/settings/didact/RomSettings;->mMusicControl:Landroid/preference/CheckBoxPreference;

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v1

invoke-virtual {v1}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v1

const-string v5, "music_control"

invoke-static {v1, v5, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v1

if-ne v1, v2, :cond_2

move v1, v2

:goto_2
invoke-virtual {v4, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V

const-string v1, "crtanimation_toggle"

invoke-virtual {p0, v1}, Lcom/android/settings/didact/RomSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v1

check-cast v1, Landroid/preference/CheckBoxPreference;

iput-object v1, p0, Lcom/android/settings/didact/RomSettings;->mCrtAnimationPreference:Landroid/preference/CheckBoxPreference;

iget-object v4, p0, Lcom/android/settings/didact/RomSettings;->mCrtAnimationPreference:Landroid/preference/CheckBoxPreference;

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v1

invoke-virtual {v1}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v1

const-string v5, "crtanimation_toggle"

invoke-static {v1, v5, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v1

if-ne v1, v2, :cond_3

move v1, v2

:goto_3
invoke-virtual {v4, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V

[COLOR="red"]const-string v1, "aosp_vibrate"

invoke-virtual {p0, v1}, Lcom/android/settings/didact/RomSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v1

check-cast v1, Landroid/preference/CheckBoxPreference;

iput-object v1, p0, Lcom/android/settings/didact/RomSettings;->mAospLockVibration:Landroid/preference/CheckBoxPreference;

iget-object v4, p0, Lcom/android/settings/didact/RomSettings;->mAospLockVibration:Landroid/preference/CheckBoxPreference;

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v1

invoke-virtual {v1}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v1

const-string v5, "aosp_vibrate"

invoke-static {v1, v5, v3}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v1

if-ne v1, v2, :cond_4

move v1, v2

:goto_4
invoke-virtual {v4, v1}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
[/COLOR]
return-void

:cond_0
move v1, v3

goto :goto_0

[COLOR="red"]:cond_1
move v1, v3

goto :goto_1
[/COLOR]
:cond_2
move v1, v3

goto :goto_2

:cond_3
move v1, v3

goto :goto_3

[COLOR="red"]:cond_4
move v1, v3

goto :goto_4
[/COLOR].end method

Find .method public onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z

Add the following in RED

.locals 5

const/4 v0, 0x0

const/4 v1, 0x1

iget-object v2, p0, Lcom/android/settings/didact/RomSettings;->mLockScreenTorch:Landroid/preference/CheckBoxPreference;

[COLOR="red"]if-ne p2, v2, :cond_2
[/COLOR]
invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v2

invoke-virtual {v2}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "enable_lockscreen_torch"

check-cast p2, Landroid/preference/CheckBoxPreference;

invoke-virtual {p2}, Landroid/preference/CheckBoxPreference;->isChecked()Z

move-result v4

if-eqz v4, :cond_0

move v0, v1

:cond_0
invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z

:goto_0
return v1

:cond_1
invoke-super {p0, p1, p2}, Lcom/android/settings/SettingsPreferenceFragment;->onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z

move-result v1

goto :goto_0

[COLOR="red"]:cond_2
iget-object v2, p0, Lcom/android/settings/didact/RomSettings;->mImeIcon:Landroid/preference/CheckBoxPreference;

if-ne p2, v2, :cond_4

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v2

invoke-virtual {v2}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "enable_ime_icon"

check-cast p2, Landroid/preference/CheckBoxPreference;

invoke-virtual {p2}, Landroid/preference/CheckBoxPreference;->isChecked()Z

move-result v4

if-eqz v4, :cond_3

move v0, v1

:cond_3
invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z

goto :goto_0[/COLOR]

:cond_4
iget-object v2, p0, Lcom/android/settings/didact/RomSettings;->mMusicControl:Landroid/preference/CheckBoxPreference;

if-ne p2, v2, :cond_6

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v2

invoke-virtual {v2}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "music_control"

check-cast p2, Landroid/preference/CheckBoxPreference;

invoke-virtual {p2}, Landroid/preference/CheckBoxPreference;->isChecked()Z

move-result v4

if-eqz v4, :cond_5

move v0, v1

:cond_5
invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z

goto :goto_0

:cond_6
iget-object v2, p0, Lcom/android/settings/didact/RomSettings;->mCrtAnimationPreference:Landroid/preference/CheckBoxPreference;

if-ne p2, v2, :cond_8

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v2

invoke-virtual {v2}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "crtanimation_toggle"

check-cast p2, Landroid/preference/CheckBoxPreference;

invoke-virtual {p2}, Landroid/preference/CheckBoxPreference;->isChecked()Z

move-result v4

if-eqz v4, :cond_7

move v0, v1

[COLOR="red"]:cond_7
invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z

goto :goto_0

:cond_8
iget-object v2, p0, Lcom/android/settings/didact/RomSettings;->mAospLockVibration:Landroid/preference/CheckBoxPreference;

if-ne p2, v2, :cond_1

invoke-virtual {p0}, Lcom/android/settings/didact/RomSettings;->getActivity()Landroid/app/Activity;

move-result-object v2

invoke-virtual {v2}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "aosp_vibrate"

check-cast p2, Landroid/preference/CheckBoxPreference;

invoke-virtual {p2}, Landroid/preference/CheckBoxPreference;->isChecked()Z

move-result v4

if-eqz v4, :cond_9

move v0, v1

:cond_9
invoke-static {v2, v3, v0}, Landroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z

goto :goto_0[/COLOR][code][/hide]

Thats all you need for SecSettings. Recompile and push to /system/app and test the toggles. They wont do anything yet but they should be there and should be able to click them on and off.

Next we will add in the logic code forthe IME icon functionality.

Decompile Services.jar

Navigate to smali/com/android/server/InputMethodManagerService.smali

Find .method public setImeWindowStatus(Landroid/os/IBinder;II)V

Add the following in RED

[hide][code]
:try_start_0
move-object/from16 v0, p0

iget-object v12, v0, Lcom/android/server/InputMethodManagerService;->mCurToken:Landroid/os/IBinder;

move-object/from16 v0, p1

[COLOR="red"]move-object/from16 v0, p0

iget-object v12, v0, Lcom/android/server/InputMethodManagerService;->mContext:Landroid/content/Context;

invoke-virtual {v12}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v12

const-string v13, "enable_ime_icon"

const/4 v14, 0x1

invoke-static {v12, v13, v14}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v12

if-nez v12, :cond_1
[/COLOR]
:cond_0
const-string v12, "InputMethodManagerService"

new-instance v13, Ljava/lang/StringBuilder;

invoke-direct {v13}, Ljava/lang/StringBuilder;-><init>()V

const-string v14, "Ignoring setImeWindowStatus of uid "

Thats it for Services.jar. Recompile and push to /system/framework

Now for the last part. The AOSP lockscreen vibration toggle. For this we will need to decompile framework2.jar

Navigate to smali/com/android/internal/widget/multiwaveview/GlowPadView.smali

Find .method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V

Add the following code in RED

const/16 v8, 0x30

invoke-virtual {v0, v7, v8}, Landroid/content/res/TypedArray;->getInt(II)I

move-result v8

iput v8, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mGravity:I

invoke-virtual {v0}, Landroid/content/res/TypedArray;->recycle()V

[COLOR="red"]iget-object v8, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mContext:Landroid/content/Context;

invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v8

const-string v7, "aosp_vibrate"

invoke-static {v8, v7, v6}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v8

if-eqz v8, :cond_8
[/COLOR]
:goto_0
invoke-virtual {p0, v6}, Lcom/android/internal/widget/multiwaveview/GlowPadView;->setVibrateEnabled(Z)V

invoke-direct {p0}, Lcom/android/internal/widget/multiwaveview/GlowPadView;->assignDefaultsIfNeeded()V

new-instance v6, Lcom/android/internal/widget/multiwaveview/PointCloud;

So thats it. I am also including a flashable ZIP for those who are already using my Multi-Mod. I will include these in my next Multi-Mod update as well. If you are not using my Multi-Mod this flashable zip wont work for you....sorry.

Flashable ZIP Download