[Sony Cross-Device Development Themes and Apps] venkat kamesh:
hello guys

after very day

i am presenting you new tut :p

so this is very easy tut

all you need is patience

you need

1. Framework.jar

2. Decompile framework.jar

3. open framework.jar\smali\android\inputmethodservice\InputMethodService.smali

find this

.field mToken:Landroid/os/IBinder;

after that add this

.field mVolumeKeyCursorControl:I

Now look for this method

.method public onKeyDown(ILandroid/view/KeyEvent;)Z

and completely replace this method with this

.method public onKeyDown(ILandroid/view/KeyEvent;)Z
.locals 7

const/16 v0, 0x16

const/16 v1, 0x15

const/4 v6, 0x2

const/4 v2, 0x1

const/4 v3, 0x0

invoke-virtual {p2}, Landroid/view/KeyEvent;->getKeyCode()I

move-result v4

const/4 v5, 0x4

if-ne v4, v5, :cond_1

invoke-direct {p0, v3}, Landroid/inputmethodservice/InputMethodService;->handleBack(Z)Z

move-result v0

if-eqz v0, :cond_0

invoke-virtual {p2}, Landroid/view/KeyEvent;->startTracking()V

move v0, v2

:goto_0
return v0

:cond_0
move v0, v3

goto :goto_0

:cond_1
invoke-virtual {p2}, Landroid/view/KeyEvent;->getKeyCode()I

move-result v4

const/16 v5, 0x18

if-ne v4, v5, :cond_4

invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v4

const-string/jumbo v5, "krypton_keyboard_volume_control"

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

move-result v4

iput v4, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->isInputViewShown()Z

move-result v4

if-eqz v4, :cond_3

iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

if-eqz v4, :cond_3

iget v3, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

if-ne v3, v6, :cond_2

:goto_1
invoke-virtual {p0, v0}, Landroid/inputmethodservice/InputMethodService;->sendDownUpKeyEvents(I)V

move v0, v2

goto :goto_0

:cond_2
move v0, v1

goto :goto_1

:cond_3
move v0, v3

goto :goto_0

:cond_4
invoke-virtual {p2}, Landroid/view/KeyEvent;->getKeyCode()I

move-result v4

const/16 v5, 0x19

if-ne v4, v5, :cond_7

invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v4

const-string/jumbo v5, "krypton_keyboard_volume_control"

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

move-result v4

iput v4, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->isInputViewShown()Z

move-result v4

if-eqz v4, :cond_6

iget v4, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

if-eqz v4, :cond_6

iget v3, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

if-ne v3, v6, :cond_5

:goto_2
invoke-virtual {p0, v1}, Landroid/inputmethodservice/InputMethodService;->sendDownUpKeyEvents(I)V

move v0, v2

goto :goto_0

:cond_5
move v1, v0

goto :goto_2

:cond_6
move v0, v3

goto :goto_0

:cond_7
const/4 v0, -0x1

invoke-virtual {p0, p1, p2, v0}, Landroid/inputmethodservice/InputMethodService;->doMovementKey(ILandroid/view/KeyEvent;I)Z

move-result v0

goto :goto_0
.end method

Now look for this method

.method public onKeyUp(ILandroid/view/KeyEvent;)Z

and completely replace with this method

.method public onKeyUp(ILandroid/view/KeyEvent;)Z
.locals 4

const/4 v0, 0x1

const/4 v1, 0x0

invoke-virtual {p2}, Landroid/view/KeyEvent;->getKeyCode()I

move-result v2

const/4 v3, 0x4

if-ne v2, v3, :cond_1

invoke-virtual {p2}, Landroid/view/KeyEvent;->isTracking()Z

move-result v2

if-eqz v2, :cond_1

invoke-virtual {p2}, Landroid/view/KeyEvent;->isCanceled()Z

move-result v2

if-nez v2, :cond_1

invoke-direct {p0, v0}, Landroid/inputmethodservice/InputMethodService;->handleBack(Z)Z

move-result v0

:cond_0
:goto_0
return v0

:cond_1
invoke-virtual {p2}, Landroid/view/KeyEvent;->getKeyCode()I

move-result v2

const/16 v3, 0x18

if-eq v2, v3, :cond_2

const/16 v2, 0x19

if-ne p1, v2, :cond_4

:cond_2
invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string/jumbo v3, "krypton_keyboard_volume_control"

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

move-result v2

iput v2, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

invoke-virtual {p0}, Landroid/inputmethodservice/InputMethodService;->isInputViewShown()Z

move-result v2

if-eqz v2, :cond_3

iget v2, p0, Landroid/inputmethodservice/InputMethodService;->mVolumeKeyCursorControl:I

if-nez v2, :cond_0

:cond_3
move v0, v1

goto :goto_0

:cond_4
const/4 v0, -0x2

invoke-virtual {p0, p1, p2, v0}, Landroid/inputmethodservice/InputMethodService;->doMovementKey(ILandroid/view/KeyEvent;I)Z

move-result v0

goto :goto_0
.end method

Done save and compile and replace :p

Now for settings look for post #2