Author Topic: Autohotkey + 12 buttons Joystick = a Chording Keyboard!!  (Read 6880 times)

0 Members and 1 Guest are viewing this topic.

Offline Popkeymon

  • Thread Starter
  • Posts: 56
Autohotkey + 12 buttons Joystick = a Chording Keyboard!!
« on: Sat, 09 April 2011, 08:24:06 »
I am totally new to Autohotkey scripting. As I am always looking for alternative way of human-computer interaction, I bought a really cheap PS3 like USB joystick (it is cheaper than my optical mouse actually) just for exploring the possibility to turn it into a chorded keyboard.  



Here is my idea on joystick keyboarding:

Where left index button Joy5, Joy7 are for chording shift key

Joy1::A
Joy2::E
Joy3::I
Joy4::O
Joy7 & Joy1::U

AxisUp::N
AxisDown::H
AxisLeft:: D
AxisRight:: T

Joy12 :: Space
Joy11 :: Enter

Right Index
Joy8::S
Joy6::R

The other keys and symbols are then combination of chord shift plus buttons or axis.

I have tested the chord shift plus a for u with the autohotkey script. It takes time to work out the whole script and I believe it could work on all kind of gamepad and arcade stick for complete text input.

Offline Popkeymon

  • Thread Starter
  • Posts: 56
Autohotkey + 12 buttons Joystick = a Chording Keyboard!!
« Reply #1 on: Sat, 09 April 2011, 08:29:01 »
The code to get the chording shift work in autohotkey

Joy1::  
Loop
{
   GetKeyState, JoyTrigger, %A_ThisHotkey%
   if JoyTrigger = U  ; Main button released before the others were pressed.
        {
   Send a
   return
   }  

; End this thread to start waiting again for a new triggering.

   GetKeyState, JoyState2, Joy7  ; Replace these digits with your chosen buttons.

   JoyStates = %JoyState2%
   if JoyStates = D  ; The Shift key is down now, so send letter and break out of the loop.
      {
   Send u
   return
   }
   else  ; Keep waiting, but do a Sleep to prevent heavy load on CPU:
      sleep,10

   GetKeyState, JoyState3, Joy5
   JoyStates2 = %JoyState3%
   if JoyStates2 = D  ; The Shift key is down now, so send letter and break out of the loop.
      {
   Send y
   return
   }
   else  ; Keep waiting, but do a Sleep to prevent heavy load on CPU:
      sleep,10
}
return