Hey Guys :) firstly thanks to all that viewed my question and especially to Idle_Mind for the suggestion. I was able to find a solution and get what I need, Its still very "Buggy" and there are alot of things to sort out but the core concept was achieved. The code to the solution is as follows (Please excuse the comments in code as I do cleanup after getting everything working as it should):
Public Class Form1
Dim WithEvents intTimer As New System.Timers.Timer
Dim hitCounter As Integer = 1
Dim value As String = ""
Public Sub startTimer()
intTimer.Interval = 1500
intTimer.Start()
End Sub
Public Sub setText_1()
If Me.txtInput.InvokeRequired Then
Me.txtInput.Invoke(New MethodInvoker(AddressOf setText_1))
Else
Dim cursorPos As Integer = txtInput.SelectionStart
txtInput.Select(cursorPos + 1, 0)
Me.ActiveControl = txtInput
hitCounter = 1
value = ""
End If
End Sub
Public Sub timer_Elapsed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles intTimer.Elapsed
setText_1()
intTimer.Stop()
End Sub
Public Sub BtnLoseFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Leave, btn2.Leave, btn3.Leave, btn4.Leave, btn5.Leave, btn6.Leave, btn7.Leave, btn8.Leave, btn9.Leave
txtInput.SelectedText += value
hitCounter = 1
End Sub
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
If btn1.Focused Then
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "A"
Case 2
'txtInput.Text = "B"
value = "B"
Case 3
'txtInput.Text += "C"
value = "C"
Case Else
'txtInput.SelectedText += "1"
value = "1"
End Select
hitCounter += 1
End If
Else
hitCounter = 1
End If
End Sub
Private Sub btn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn2.Click
'hitCounter = 1
If btn2.Focused Then
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "D"
Case 2
'txtInput.Text = "B"
value = "E"
Case 3
'txtInput.Text += "C"
value = "F"
Case Else
'txtInput.SelectedText += "1"
value = "2"
End Select
hitCounter += 1
End If
End If
End Sub
Private Sub btn3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn3.Click
'hitCounter = 1
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "G"
Case 2
'txtInput.Text = "B"
value = "H"
Case 3
'txtInput.Text += "C"
value = "I"
Case Else
'txtInput.SelectedText += "1"
value = "3"
End Select
hitCounter += 1
End If
End Sub
Private Sub btn4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn4.Click
'hitCounter = 1
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "J"
Case 2
'txtInput.Text = "B"
value = "K"
Case 3
'txtInput.Text += "C"
value = "L"
Case Else
'txtInput.SelectedText += "1"
value = "4"
End Select
hitCounter += 1
End If
End Sub
Private Sub btn5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn5.Click
'hitCounter = 1
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "M"
Case 2
'txtInput.Text = "B"
value = "N"
Case 3
'txtInput.Text += "C"
value = "O"
Case Else
'txtInput.SelectedText += "1"
value = "5"
End Select
hitCounter += 1
End If
End Sub
Private Sub btn6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn6.Click
'hitCounter = 1
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "P"
Case 2
'txtInput.Text = "B"
value = "Q"
Case 3
'txtInput.Text += "C"
value = "R"
Case Else
'txtInput.SelectedText += "1"
value = "6"
End Select
hitCounter += 1
End If
End Sub
Private Sub btn7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn7.Click
'hitCounter = 1
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "S"
Case 2
'txtInput.Text = "B"
value = "T"
Case 3
'txtInput.Text += "C"
value = "U"
Case Else
'txtInput.SelectedText += "1"
value = "7"
End Select
hitCounter += 1
End If
End Sub
Private Sub btn8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn8.Click
'hitCounter = 1
startTimer()
If hitCounter <= 3 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "V"
Case 2
'txtInput.Text = "B"
value = "W"
Case 3
'txtInput.Text += "C"
value = "X"
Case Else
'txtInput.SelectedText += "1"
value = "8"
End Select
hitCounter += 1
End If
End Sub
Private Sub btn9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn9.Click
'hitCounter = 1
startTimer()
If hitCounter <= 2 Then
Select Case hitCounter
Case 1
'txtInput.Text += "A"
value = "Y"
Case 2
'txtInput.Text = "B"
value = "Z"
Case Else
'txtInput.SelectedText += "1"
value = "9"
End Select
hitCounter += 1
End If
End Sub
Private Sub btnBackSpace_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBackSpace.Click
Dim cursorPos As Integer = txtInput.SelectionStart
If txtInput.Text.Length > 0 Then
Me.ActiveControl = txtInput
txtInput.Text = txtInput.Text.Remove(cursorPos - 1, 1)
txtInput.Select(cursorPos - 1, 0)
Else
'Do nothing
Me.ActiveControl = txtInput
End If
End Sub
Private Sub btn0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn0.Click
'spacebar
Dim cursorPos As Integer = txtInput.SelectionStart
Me.ActiveControl = txtInput
txtInput.SelectedText += " "
txtInput.Select(cursorPos + 1, 0)
End Sub
End Class
A screenshot of the GUI used for testing: https://www.dropbox.com/s/8s26po807v6kkoj/keypad-test%20Interface.png
Regards,
Kavir.