ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

How to Change Key Colors in RapidQ

Updated on January 28, 2010

I can't write code. Okay, I can write code, but then after I write it, it doesn't work, and I have trouble debugging it. So my ability to write code is a little like my ability to speak Chinese. I can speak Chinese, but when I do, hardly anybody can understand what I said.

This can be a problem.

How Our TouchScreen Works

When I first got the touchscreen computers, I did not really understand how the screen knew it had been touched. Well, not the screen, but the computer attached to the screen. Here were a few of my initial conjectures:

  • light
  • heat
  • chemical reaction

It turns out it is none of the above in the case of the touchscreen Project Bow has been given. The answer is pressure. You press on the screen, and only by pressing on it can you let it know that you have touched a particular spot.

(This is unfortunate for us at Project Bow, because for our purposes, it would have been better if it had a light sensor. Then we could put the touchscreen behind the zoo glass, and Bow could control it without actually touching it.)

Anyway, the answer is pressure. But how is that pressure measured? Ours is a resistive touchscreen. It  is made of two flexible sheets and a gap of air between them. When we touch one spot on the screen, contact is made between the two sheets, and this contact is measured in terms of electrical resistance.

But what if we touch two spots on the screen at the same time? We end up selecting a spot somewhere in between.

This design is good for cooperative users who always try to use a product the way it was intended. It is not so good for creative types like Bow, who like to explore every avenue of attack.

Somehow, we need to limit Bow to pressing a single key, so we can prove that his key use is selecting the words he spells.


Recently, I've had two touchscreen computers donated to Project Bow by two separate donors. This is good, because we need to find a way to show the world that Bow is literate. He can write.

In the past, we have been unable to prove this because:

  • Bow is faster than we are.
  • He spells out words faster than we can see
  • If we don't see what he said, then communication does not take place.
  • The only reason Bow spells is in order to communicate.
  • Bow takes our hands and uses them as pointers, because otherwise we can't see what he says. He doesn't need our hands in order to point. He needs them as a way to direct our attention.
  • The scientific community assumes that some sort of cuing from us is taking place, and Bow's communication is not his own.
  • To solve this problem, we need a communication device that will allow Bow to spell at his own rate of speed and will sound out what he says so that we can communicate without seeing what he said.

So here we are with two computers that could be potentially harnessed to meet these needs. But in order to use them, we have to understand the limitations and obstacles that stand in our way.


Some of the technical challenges involved in implementing this project are:

  • Bow must not be able to take apart the computer, destroy it or damage it -- a physical limitation.
  • Bow must not be able to reprogram the computer -- a software problem with physical ramifications. Anyone can reset a computer by pressing all the keys, including control and function keys, in all possible combinations. Human adults don't do this, but chimpanzees are given to trial and error attacks at almost every system. Bow must be denied the rights of a superuser, at least until we can prove he's literate.
  • the text-to-speech interpreter must operate in real time, or Bow will be discouraged from using it.
  • the keys on the touchscreen should be so configured that Bow cannot access a third key by pressing on two keys at the same time.
  • Bow should find the screen and its combination of keys sufficiently engaging to keep his attention.
  • The keys must be big enough and far enough apart so that Bow's hand coordination will be sufficient to hit a single key at will.

RapidQ IDE (Integrated Development Environment)

Image Credit: Wikipedia
Image Credit: Wikipedia
Dim saystr as string

Dim SV as QOLEObject
    SV.CreateObject("SAPI.SpVoice")
    
saystr="hello, world"

SV.speak(saystr)

The operating system we are using is Windows XP. The programming language is RapidQ. RapidQ is a Basic Interpreter which was developed by William Yu around the year two thousand. He allowed everyone to have it for free.

For some reason, RapidQ executables all work in Windows XP, but those that contain speech-to-text do not work on Vista.

The secret behind RapidQ is that it incorporates the applications that are already in the operating system into itself, so that the RapidQ code doesn't have to do much, except coordinate between already existing bits of code that are available to it.

In the demo program "Hello World" that I was given, for instance, none of the speech-to-text work is actually in the RapidQ program. The program merely sends a string to the SAPI speech application that comes built into the operating system.

I was given a fully operative touch screen speech-to-text executable written by volunteers, together with the RapidQ source code that created it. Because Bow does not know how to use the space bar, my volunteer programmers even included the special feature that the end of the string would be determined based on the length of time that elapses after the last key is pressed. That is, wait too long and whatever you type gets pronounced.

I've been asked not to share the RapidQ code for all that with you, so I will only be discussing the small bit of programming that has been left for me to do. What is it? Change the color of the keys.

That's laughable, right? There should be a property called color, and changing the color of a key should be easy. But for some reason it's not.

The current developer who is actively using RapidQ, someone called Burkley, has written a demo program to show how to make buttons have interesting colors. My mission? To learn how this is done and use this knowledge on the Project Bow text-to-speech touchscreen keyboard.

I'm supposed to read the demo program linked above and figure out from it how to change the colors of the keys in Bow's keyboard. Bow does not seem to want to let me do this, as he creates all sorts of distractions if I try to work on this project. He doesn't seem to mind as much when I write hubs about less abstract subjects, like his own misbehavior. Right now he is sitting in the chair behind me and watching me type. I had to resort to this means of keeping him quiet. Otherwise, he was blowing raspberries and peeing in the potty every fifteen minutes.

From reading the comments, I've gathered that this is a way to pair two button colors, one for when the button that is being selected (by touch or by mouse hovering over the button) and one for when nobody is selecting the button.

Here are some of the questions in my mind as I read this:

  • what if two buttons are being selected at once?
  • how was the default color set?
  • are the numbers for the colors just variables that stand for something else?
  • there is reference to bitmaps, but bit maps ought to be binary numbers (usually displayed in hex) , and I don't see anything that looks like that in the code

I suppose the best way to find out is to try to incorporate some of this demo program into something else and see what it does. But Bow is blowing raspberries, and it's almost lunchtime, so I think I'll stop here for now.

I'll let you know if I make any further progress....


working

This website uses cookies

As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://corp.maven.io/privacy-policy

Show Details
Necessary
HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
LoginThis is necessary to sign in to the HubPages Service.
Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
AkismetThis is used to detect comment spam. (Privacy Policy)
HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
Features
Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
MavenThis supports the Maven widget and search functionality. (Privacy Policy)
Marketing
Google AdSenseThis is an ad network. (Privacy Policy)
Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
Index ExchangeThis is an ad network. (Privacy Policy)
SovrnThis is an ad network. (Privacy Policy)
Facebook AdsThis is an ad network. (Privacy Policy)
Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
AppNexusThis is an ad network. (Privacy Policy)
OpenxThis is an ad network. (Privacy Policy)
Rubicon ProjectThis is an ad network. (Privacy Policy)
TripleLiftThis is an ad network. (Privacy Policy)
Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
Statistics
Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)
ClickscoThis is a data management platform studying reader behavior (Privacy Policy)