OnScreen Keyboard GUI Framework

Share your advanced PureBasic knowledge/code with the community.
Mohawk70
Enthusiast
Enthusiast
Posts: 404
Joined: Thu May 11, 2006 1:04 am
Location: Florida, USA

OnScreen Keyboard GUI Framework

Post by Mohawk70 »

Do anything you want with it ! Feel free to post any improvements / modificatons in this thread for anyone to use and learn from.

Code: Select all

[size=85]
; Application : OnScreen Keyboard GUI Framework
; Author      : David Tupponce ( Mohawk70 )
; Date        : Wednesday February 23, 2016
; License     : Unrestricted - Do anything you want with it ! All I ask is that you post any modified or improved code

Global Win_OSK

Global Btn_ESC, Btn_F01, Btn_F02, Btn_F03, Btn_F04, Btn_F05, Btn_F06, Btn_F07, Btn_F08, Btn_F09, Btn_F10, Btn_F11, Btn_F12, Btn_INS, Btn_DEL
Global Btn_SQL, Btn_001, Btn_002, Btn_003, Btn_004, Btn_005, Btn_006, Btn_007, Btn_008, Btn_009, Btn_000, Btn_MIN, Btn_EQU, Btn_BAK
Global Btn_TAB, Btn_QQQ, Btn_WWW, Btn_EEE, Btn_RRR, Btn_TTT, Btn_YYY, Btn_UUU, Btn_III, Btn_OOO, Btn_PPP, Btn_SLB, Btn_SRB, Btn_FSL
Global Btn_CAP, Btn_AAA, Btn_SSS, Btn_DDD, Btn_FFF, Btn_GGG, Btn_HHH, Btn_JJJ, Btn_KKK, Btn_LLL, Btn_SEM, Btn_SQR, Btn_ENT
Global Btn_SHL, Btn_ZZZ, Btn_XXX, Btn_CCC, Btn_VVV, Btn_BBB, Btn_NNN, Btn_MMM, Btn_COM, Btn_PER, Btn_BSL, Btn_SHR
Global Btn_SPC


Enumeration FormFont
  #Font_Win_OSK_0
EndEnumeration


Procedure OnScreenKeyboard()
  Win_OSK = OpenWindow(#PB_Any, #PB_Ignore, #PB_Ignore, 620, 245, "OnScreen Keyboard GUI", #PB_Window_TitleBar | #PB_Window_SystemMenu | #PB_Window_BorderLess | #PB_Window_ScreenCentered )
  SetWindowColor(Win_OSK,RGB(120,120,120))
  ; /* FN KEYS */
  Btn_ESC = ButtonGadget(#PB_Any, 010, 010, 040, 030, "ESC")
  Btn_F01 = ButtonGadget(#PB_Any, 070, 010, 030, 030, "F1")
  Btn_F02 = ButtonGadget(#PB_Any, 105, 010, 030, 030, "F2")
  Btn_F03 = ButtonGadget(#PB_Any, 140, 010, 030, 030, "F3")
  Btn_F04 = ButtonGadget(#PB_Any, 175, 010, 030, 030, "F4")
  Btn_F05 = ButtonGadget(#PB_Any, 210, 010, 030, 030, "F5")
  Btn_F06 = ButtonGadget(#PB_Any, 245, 010, 030, 030, "F6")
  Btn_F07 = ButtonGadget(#PB_Any, 280, 010, 030, 030, "F7")
  Btn_F08 = ButtonGadget(#PB_Any, 315, 010, 030, 030, "F8")
  Btn_F09 = ButtonGadget(#PB_Any, 350, 010, 030, 030, "F9")
  Btn_F10 = ButtonGadget(#PB_Any, 385, 010, 030, 030, "F10")
  Btn_F11 = ButtonGadget(#PB_Any, 420, 010, 030, 030, "F11")
  Btn_F12 = ButtonGadget(#PB_Any, 455, 010, 030, 030, "F12")
  Btn_INS = ButtonGadget(#PB_Any, 500, 010, 050, 030, "INS")
  Btn_DEL = ButtonGadget(#PB_Any, 560, 010, 050, 030, "DEL")
  ; /* ROW 2 */
  Btn_SQL = ButtonGadget(#PB_Any, 010, 050, 030, 030, "`")
  Btn_001 = ButtonGadget(#PB_Any, 050, 050, 030, 030, "1")
  Btn_002 = ButtonGadget(#PB_Any, 090, 050, 030, 030, "2")
  Btn_003 = ButtonGadget(#PB_Any, 130, 050, 030, 030, "3")
  Btn_004 = ButtonGadget(#PB_Any, 170, 050, 030, 030, "4")
  Btn_005 = ButtonGadget(#PB_Any, 210, 050, 030, 030, "5")
  Btn_006 = ButtonGadget(#PB_Any, 250, 050, 030, 030, "6")
  Btn_007 = ButtonGadget(#PB_Any, 290, 050, 030, 030, "7")
  Btn_008 = ButtonGadget(#PB_Any, 330, 050, 030, 030, "8")
  Btn_009 = ButtonGadget(#PB_Any, 370, 050, 030, 030, "9")
  Btn_000 = ButtonGadget(#PB_Any, 410, 050, 030, 030, "0")
  Btn_MIN = ButtonGadget(#PB_Any, 450, 050, 030, 030, "-")  
  Btn_EQU = ButtonGadget(#PB_Any, 490, 050, 030, 030, "=")
  Btn_BAK = ButtonGadget(#PB_Any, 530, 050, 080, 030, "Backspace")
  ; /* ROW 3 */
  Btn_TAB = ButtonGadget(#PB_Any, 010, 090, 050, 030, "TAB")
  Btn_QUP = ButtonGadget(#PB_Any, 070, 090, 030, 030, "Q")
  Btn_WUP = ButtonGadget(#PB_Any, 110, 090, 030, 030, "W")
  Btn_EUP = ButtonGadget(#PB_Any, 150, 090, 030, 030, "E")
  Btn_RUP = ButtonGadget(#PB_Any, 190, 090, 030, 030, "R")
  Btn_TUP = ButtonGadget(#PB_Any, 230, 090, 030, 030, "T")
  Btn_YUP = ButtonGadget(#PB_Any, 270, 090, 030, 030, "Y")
  Btn_UUP = ButtonGadget(#PB_Any, 310, 090, 030, 030, "U")
  Btn_IUP = ButtonGadget(#PB_Any, 350, 090, 030, 030, "I")
  Btn_OUP = ButtonGadget(#PB_Any, 390, 090, 030, 030, "O")
  Btn_PUP = ButtonGadget(#PB_Any, 430, 090, 030, 030, "P")
  Btn_SLB = ButtonGadget(#PB_Any, 470, 090, 030, 030, "[")
  Btn_SRB = ButtonGadget(#PB_Any, 510, 090, 030, 030, "]")
  Btn_FSL = ButtonGadget(#PB_Any, 550, 090, 060, 030, "\")
  ; /* ROW 4 */
  Btn_CAP = ButtonGadget(#PB_Any, 010, 130, 060, 030, "CAPS")
  Btn_AAA = ButtonGadget(#PB_Any, 080, 130, 030, 030, "A")
  Btn_SSS = ButtonGadget(#PB_Any, 120, 130, 030, 030, "S")
  Btn_DDD = ButtonGadget(#PB_Any, 160, 130, 030, 030, "D")
  Btn_FFF = ButtonGadget(#PB_Any, 200, 130, 030, 030, "F")
  Btn_GGG = ButtonGadget(#PB_Any, 240, 130, 030, 030, "G")
  Btn_HHH = ButtonGadget(#PB_Any, 280, 130, 030, 030, "H")
  Btn_JJJ = ButtonGadget(#PB_Any, 360, 130, 030, 030, "J")
  Btn_KKK = ButtonGadget(#PB_Any, 320, 130, 030, 030, "K")
  Btn_LLL = ButtonGadget(#PB_Any, 400, 130, 030, 030, "L")
  Btn_SEM = ButtonGadget(#PB_Any, 440, 130, 030, 030, ";")
  Btn_SQR = ButtonGadget(#PB_Any, 480, 130, 030, 030, "'")
  Btn_ENT = ButtonGadget(#PB_Any, 520, 130, 090, 030, "Enter")
  ; /* ROW 5 */
  Btn_SHL = ButtonGadget(#PB_Any, 010, 170, 070, 030, "SHIFT")
  Btn_ZZZ = ButtonGadget(#PB_Any, 090, 170, 030, 030, "Z")
  Btn_XXX = ButtonGadget(#PB_Any, 130, 170, 030, 030, "X")
  Btn_CCC = ButtonGadget(#PB_Any, 170, 170, 030, 030, "C")
  Btn_VVV = ButtonGadget(#PB_Any, 210, 170, 030, 030, "V")
  Btn_BBB = ButtonGadget(#PB_Any, 250, 170, 030, 030, "B")
  Btn_NNN = ButtonGadget(#PB_Any, 290, 170, 030, 030, "N")
  Btn_MMM = ButtonGadget(#PB_Any, 330, 170, 030, 030, "M")
  Btn_COM = ButtonGadget(#PB_Any, 370, 170, 030, 030, ",")
  Btn_PER = ButtonGadget(#PB_Any, 410, 170, 030, 030, ".")
  Btn_BSL = ButtonGadget(#PB_Any, 450, 170, 030, 030, "/")
  Btn_SHR = ButtonGadget(#PB_Any, 490, 170, 120, 30, "SHIFT")
  ; /* ROW 6 */
  Btn_SPC = ButtonGadget(#PB_Any, 10, 210, 600, 030, "SPACE")
EndProcedure

Procedure Win_OSK_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False
    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect
    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure

OnScreenKeyboard()

Repeat
  event = WaitWindowEvent()
Until Win_OSK_Events(event) = #False
[/size]
HP Z800 Workstation
CPU : Dual Xeon 5690 3.46GHz
RAM : 96GB RAM ( 8GB x 12 )
PSU : 1100W
GPU : NVIDIA RTX 3050 8GB
STORAGE : 9TB
(4) 2TB Seagate IronWolf Pro HDD
(1) 1TB Samsung 870 EVO SSD
User avatar
VB6_to_PBx
Enthusiast
Enthusiast
Posts: 627
Joined: Mon May 09, 2011 9:36 am

Re: OnScreen Keyboard GUI Framework

Post by VB6_to_PBx »

neat idea ,
thanks :)
 
PureBasic .... making tiny electrons do what you want !

"With every mistake we must surely be learning" - George Harrison
User avatar
Kwai chang caine
Always Here
Always Here
Posts: 5494
Joined: Sun Nov 05, 2006 11:42 pm
Location: Lyon - France

Re: OnScreen Keyboard GUI Framework

Post by Kwai chang caine »

Simple and nice :D
Thanks for sharing 8)
ImageThe happiness is a road...
Not a destination
User avatar
electrochrisso
Addict
Addict
Posts: 989
Joined: Mon May 14, 2007 2:13 am
Location: Darling River

Re: OnScreen Keyboard GUI Framework

Post by electrochrisso »

Looks good Mohawk, I can use this after some modifications for a typing tutor program I am going to make, what I want to do is simulate the mouse clicking on the button gadgets effect when the user types the keys on the computer keyboard. :)
PureBasic! Purely the best 8)
davido
Addict
Addict
Posts: 1890
Joined: Fri Nov 09, 2012 11:04 pm
Location: Uttoxeter, UK

Re: OnScreen Keyboard GUI Framework

Post by davido »

@Mohawk70,

Looks very nice, thank you for sharing. :D
DE AA EB
yrreti
Enthusiast
Enthusiast
Posts: 546
Joined: Tue Oct 31, 2006 4:34 am

Re: OnScreen Keyboard GUI Framework

Post by yrreti »

Nice job Mohawk70

Real nice attractive layout, and a very good starter point for adding the necessary
event code underneath it.
Thanks for sharing.

yrreti
Mohawk70
Enthusiast
Enthusiast
Posts: 404
Joined: Thu May 11, 2006 1:04 am
Location: Florida, USA

Re: OnScreen Keyboard GUI Framework

Post by Mohawk70 »

I'm glad people are finding this useful ! I started working on this because the built in onscreen keyboard in Windiws 7 wasn't working for what I was trying to do ( osk.exe ) and decided to build my own.
HP Z800 Workstation
CPU : Dual Xeon 5690 3.46GHz
RAM : 96GB RAM ( 8GB x 12 )
PSU : 1100W
GPU : NVIDIA RTX 3050 8GB
STORAGE : 9TB
(4) 2TB Seagate IronWolf Pro HDD
(1) 1TB Samsung 870 EVO SSD
Post Reply