Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
KEYBOARD OFFSET COORDINATES
Document Type and Number:
WIPO Patent Application WO/2016/081011
Kind Code:
A1
Abstract:
According to some examples, a method is provided in which a set of offsets are received from a server computing device and an image of a keyboard is presented on a display device coupled to a client computing device. The client computing device receives a user selection of a location, on the image, associated with a keyboard character shown by the image. The location is associated with a set of coordinates on the image. The client computing device applies the set of offsets to the set of coordinates to produce a set of offset coordinates. The set of offset coordinates are sent to the server computing device.

Inventors:
OHL MARTIN (US)
HANNIGAN MICHAEL J (US)
Application Number:
PCT/US2014/066870
Publication Date:
May 26, 2016
Filing Date:
November 21, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD ENTPR DEV LP (US)
International Classes:
G06F3/00
Domestic Patent References:
WO2010117374A12010-10-14
Foreign References:
US20040073809A12004-04-15
US8176324B12012-05-08
US20130222247A12013-08-29
US20130021248A12013-01-24
Attorney, Agent or Firm:
SURESH, Anup et al. (3404 E. Harmony RoadMail Stop 7, Fort Collins CO, US)
Download PDF:
Claims:
CLAIMS

1. A method, comprising:

receiving a set of offsets from a server computing device;

presenting an image of a keyboard on a display device coupled to a client computing device;

receiving, at the client computing device, a user selection of a location on the image, the location being associated with a keyboard character shown by the image, and the location being associated with a set of coordinates on the image;

applying, at the client computing device, the set of offsets to the set of coordinates to produce a set of offset coordinates; and

sending the set of offset coordinates to the server computing device.

2. The method of claim 1 , wherein the set of offsets includes at least one randomly-generated offset value.

3. The method of claim 1 , wherein the user selection of the location by a hardware keyboard coupled to the client computing device, or the user selection of the location by an onscreen virtual keyboard presented on the display device, is disabled.

4. The method of claim 1 , comprising sending, to the server computing device, a request to use the image at the client computing device for user entry of a set of characters, the keyboard character being part of the set of characters.

5. The method of claim 4, comprising receiving the image from the server computing device prior to presenting the image on the display device.

6. The method of claim 1 , comprising:

receiving, at the server computing device, the set of offset coordinates from the client computing device; and

translating, at the server computing device, the set of offset coordinates to the keyboard character, the translating being based on the set of offsets.

7. The method of claim 1 , wherein the keyboard character is part of a set of characters being sent from the client computing device to the server computing device, the set of characters comprises credit card information, the server computing device is subject to Payment Card Industry (PCI) compliance, and the client computing device is not subject to PCI compliance.

8. A computer system, comprising:

a processor;

a memory including instructions being executable by the processor to: present an image of a keyboard on a display device coupled to the client computing device;

receive a user entry of a set of characters through the image, the user entry comprising a set of user selections of points or regions on the image, each of the points or regions being associated with a keyboard character being entered for the set of characters, and each of the points or regions being associated with a set of coordinates on the image; generate offset coordinates data by applying the set of offsets to each of the sets of coordinates; and

send the offset coordinates data to the server computing device.

9. A non-transitory computer-readable medium having instructions stored thereon, the instructions being executable by a processor of a server computing device to:

send offset data to a client computing device, the offset data comprising a set of offsets;

receive offset coordinates data from the client computing device, the offset coordinates data comprising a set of offset coordinates; and

translate, based on the set of offsets, the set of offset coordinates to a keyboard character.

10. The non-transitory computer-readable medium of claim 9, wherein to translate based on the set of offsets, the instructions are executable by the processor to: remove the set of offsets from the set of offset coordinates to produce a set of coordinates; and

map the set of coordinates to the keyboard character.

11. The non-transitory computer-readable medium of claim 9, wherein the instructions are executable by the processor to generate the set of offsets to include at least one randomly-generated offset value.

12. The non-transitory computer-readable medium of claim 9, wherein the instructions are executable by the processor to receive a request from the client computing device to use an image of a keyboard at the client computing device for user entry of a set of characters, the keyboard character being part of the set of characters.

13. The non-transitory computer-readable medium of claim 12, wherein the instructions are executable by the processor to generate the set of offsets in association with the user entry of the set of characters at the client computing device.

14. The non-transitory computer-readable medium of claim 12, wherein the instructions are executable by the processor to generate and send a separate set of offsets for each character in the set of characters being entered at the client computing device using the image.

15. The non-transitory computer-readable medium of claim 12, wherein the instructions are executable by the processor to send the image to the client computing device.

Description:
KEYBOARD OFFSET COORDINATES

BACKGROUND

[0001] Users often interact with computer systems by using a human interface device, such as a keyboard, mouse, track pad, or touch-enabled display, to enter one or more characters into the computer system. During certain computer activities, characters entered by a user are considered sensitive and, as such, important to protect from access by unauthorized parties. Examples of such computer activities include those involving user authentication, those involving financial information, and those involving private information.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Certain examples are described in the following detailed description in reference to the following drawings.

[0003] FIG. 1 illustrates an environment including an example client system in communication with an example server system.

[0004] FIG. 2 illustrates an example client computing device.

[0005] FIG. 3 illustrates an example server computing device.

[0006] FIGs. 4-6 illustrate example methods for using an image of a keyboard and an offset coordinate to facilitate user entry of a keyboard character.

[0007] FIG. 7 illustrates an example method for using an image of a keyboard to facilitate user entry of a keyboard character at a client computing device, and for using an offset coordinate to facilitate communication of the user entry to a server computing device.

[0008] FIGs.8-10 illustrate example methods for using an offset coordinate to receive a keyboard character entered at a client computing device by a user.

[0009] FIG. 11 illustrates an example method for using an image of a keyboard and an offset coordinate to receive a keyboard character entered at a client computing device by a user.

[0010] FIG. 12 illustrates example techniques for using an image of a keypad to facilitate user entry of credit card information at a client system, and using an offset coordinate to facilitate communication of the user entry to payment systems.

DETAILED DESCRIPTION OF SPECIFIC EXAMPLES

[0011] This disclosure describes examples for using an image of a keyboard ("keyboard image") to receive user entry of one or more characters at a client system and for using offset coordinates to communicate the user entry to a server system. Various examples described herein can permit a user to enter characters at a client system without the client system actually being aware of the characters being entered, as possibly would using a hardware keyboard or an onscreen virtual keyboard. In doing so, various examples can secure entry of the characters at the client system while reducing risk of an unauthorized party intercepting the entered characters (e.g., using a keystroke logger). Additionally, various examples described herein can permit obfuscated communication of user-entered characters from a client system to a server system, thereby reducing the risk of unauthorized parties determining what characters are being communicated.

[0012] Presently, unauthorized parties are known to use various mechanisms to gain access to user-entered sensitive data, including keystroke loggers to access characters as they are entered at a keyboard, and network sniffers to access user-entered sensitive data as it is communicated between systems (e.g., over a network). Techniques described by this disclosure can be beneficial in protecting user entry of sensitive data during various computer activities, such as financial-related computer activities that are subject to data security standards defined by the Payment Card Industry (PCI).

[0013] Generally, the time and cost associated with achieving and maintaining compliance with PCI data security standards can be burdensome for a merchant. For example, under PCI data security standards, merchants (e.g., e-commerce merchants) must ensure that their systems that store, transmit, or process credit card information are compliant under PCI data security standards. This can be particularly burdensome to those merchants who own and operate call centers that deal with credit card transactions. Oftentimes agents at such call centers need to input credit card information into various systems, and, as a result, the agents workstation and local network environment are subject to compliance under PCI data security standards. Such compliance can include requiring call center sales agents involved in inputting or accessing credit card information to be physically located in a secured PCI-compliant work area. Understandably, this can be very disruptive and expensive requirement for merchants to meet.

[0014] Using examples provided herein, a call center sales agent can use their workstation to enter credit card information, such a primary account number (PAN) or a credit card verification number (CVN), without need for the agent's workstation or their local network environment to be within the scope of PCI compliance.

[0015] FIG. 1 illustrates an environment 100 including an example client system 102 in communication with an example server system 104 over a communications network 106. As shown, the client system 102 includes a display module 108, a user input module 110, a keyboard request module 112, a coordinates module 114, an offset coordinates generation module 116, and a client communications module 118. Depending on the example, the client system 102 may comprise a desktop, laptop, hand-held computing devices (e.g., personal digital assistants, smartphones, tablets, etc.), workstations, and the like. The server system 104 includes a keyboard response module 120, an offset generation module 122, an offset coordinates receiving module 124, a translation module 126, and a server communications module 128. Depending on the example, the server system 104 may comprise one or more servers, which may be operating on or implemented using one or more cloud-based resources, such as a System-as-a-Service (SaaS), Platform-as-a-Service (PaaS), or Infrastructure-as-a-Service (laaS). In various examples, the components or the arrangement of components in the environment 100 may differ from what is depicted in FIG. 1. For instance, the client system 102 or the server system 104 can include more or less components than those depicted in FIG. 1.

[0016] As used herein, modules and other components of various implementation may comprise, in whole or in part, machine-readable instructions or electronic circuitry. For example, a module may comprise computer-readable instructions executable by a processor to perform one or more functions in accordance with various examples described herein. Likewise, in another example, a module may comprise electronic circuitry to perform one or more functions in accordance with various examples described herein. The elements of a module may be combined in a single package, maintained in several packages, or maintained separately.

[0017] The communications network 106 permits data to be communicated between the client system 102 and the server system 104 in accordance with various examples described herein. In some examples, the communications network 106 may comprise one or more local or wide-area communications networks, such as the Internet, WiFi networks, cellular networks, private networks, public networks, and the like.

[0018] With respect to the client system 102, the display module 108 may facilitate display of various content on a display device coupled to, or included as part of, the client system 102. For instance, the display module 108 may facilitate display of a graphical user interface (GUI) that enables a user to interact with the client system 102. In some examples, the display module 108 facilitates the display of a keyboard image on the display device. The keyboard image may depict a set of buttons or keys representing one or more keyboard characters that a user, at the client system 102, can enter using the keyboard image. For example, the keyboard image may include one or more keys that represent any number of digits, symbols, or alphabetical letters. Depending on the example, keys depicted in the keyboard image may or may not represent keyboard characters traditionally found in physical keyboards, such as a 104-key PC keyboard, a computer keypad, a numeric keypad, and the like. Additionally, one or more keys depicted by the keyboard image may mimic the appearance of a physical keyboard. For instances, keys of the keyboard image may mimic the color, organization, arrangement, or keyboard characters represented. The keyboard image presented by the image may vary between different examples.

[0019] For some examples, the display module 108 displays a pointer or a cursor on a display device coupled to, or included as part of, the client system 102. A user at the client system 102 may use the displayed pointer or cursor to select a location on the display device. For instance, with respect to a keyboard image presented on the display device by the display module 108, the user may control the pointer or cursor to select a location comprising a point or a region of points on the keyboard image. In this way, the user can select one or more keys of the keyboard image that represent keyboard characters that the user wishes to enter through the keyboard image. As used herein, a location can include a point or a region of points.

[0020] The user input module 110 may enable a user at the client system 102 to enter user input with respect to the client system 102. For various examples, the user input module 110 accepts user input for selecting a location on content displayed on a display device by the display module 108, where the content may include a keyboard image. Depending on the example, a user at the client system 102 may utilize a human interface device, such as a pointing device that controls an onscreen pointer or cursor, to select the location. For instance, a user may use a pointing device to move the onscreen pointer or cursor over a key depicted by the keyboard image, and may use the onscreen pointer or cursor to select a point within the depicted region of the key or to select a region around the key (e.g., draw a selection box or circle) around the key. Other forms of user selection may also be utilized in selecting points or regions on the keyboard image. In certain examples, the user input module 110 may disable selection of a location on the keyboard image using a hardware keyboard or an onscreen virtual keyboard presented through the display module 108.

[0021 ] The keyboard request mod ule 112 may send the server system 104 a request to use a keyboard image at the client system 102 for receiving a set of characters as a user entry in accordance with examples described herein. For instance, the keyboard request module 112 may send the request when a user at the client system 102 desires to enter a set of characters using the keyboard image and further desires to send the set of characters to the server system 104 (e.g., as offset coordinates data). The request may provide information regarding the set of characters the user intends to enter at the client system 102 using the keyboard image. For example, the request may specify how many characters are to be entered using the keyboard image, an identifier for the set of characters to be entered (e.g., sensitive data, such a PAN, a social-security number, or a PIN number), or the types of characters being entered (e.g., digits, symbols, alphabetical characters, or some combination thereof).

[0022] In response to the request from the keyboard request module 112, the keyboard request module 112 may receive the keyboard image from the server system 104. In certain instances, the client system 102 may possess a copy of the keyboard image prior to the request to use the keyboard image, such as a cached copy received during a previous keyboard session with the server system 104. Where the client system 102 possess a copy of the keyboard image, the keyboard request module 112 may not request or receive another copy of the keyboard image from the server system 104.

[0023] In response to the request from the keyboard request module 112, the keyboard request module 112 may receive a set of offsets from the server system 104. In accordance with some examples, the client system 102 utilizes the set of offsets received from the server system 104 with coordinates produced at the client system 102 when a keyboard image is used by a user to enter a set of characters at the client system 102. A set of offsets provided to the client system 102 may be used by the client system 102 with respect to the coordinates of a single character entered through the keyboard image, or with respect to a set of characters (e.g., a data string) entered through the keyboard image.

[0024] The coordinates module 114 may provide a set of coordinates associated with a location selected on a keyboard image by a user at the client system 102 (e.g., using the user input module 110). Depending on the example, the set of coordinates provided by the coordinates module 114 may correspond to a user-selected point, may correspond to coordinates that fall within a user- selected region, or may correspond to the coordinates that define a user-selected region. In some examples, the set of coordinates is determined according to the dimensions of the keyboard image. For instance, the set of coordinates may comprise an X-axis coordinate and a Y-axis coordinate for the location, where the X-axis coordinate and the Y-axis coordinate are based on the X and Y axes of the keyboard image. The set of coordinates provided by the coordinates modules 114 may depend on the arrangement of keys depicted in the keyboard image. For instance, where the keys of the keyboard image are exclusively arranged vertically (e.g., along a Y-axis of the keyboard image) or exclusively arranged horizontally (e.g., along an X-axis of the keyboard image), the set of coordinates determined by the coordinates module 114 may include one coordinate (e.g., a X-axis or a Y-axis coordinate) for each location selected by a user.

[0025] The offset coordinates generation module 116 may produce a set of offset coordinates based on the set of coordinate provided by the coordinates module 114, and based on the set of offsets received by the keyboard request module 112. In certain examples, the offset coordinates generation module 116 produces the set of offset coordinates by applying the set of offsets to the set of coordinates. To apply the set of offsets to the set of offset coordinates, the offset coordinates generation module 116 may perform one or more mathematical operations on the set of coordinates using the set of offsets, including addition, subtraction, multiplication, or division. The set of offsets may include a single offset to be applied to all coordinates, a separate offset for each axis (e.g., X-axis offset and Y-axis offset), or a series of offsets to be applied to a series of coordinates.

[0026] The client communications module 118 may facilitate communication between the client system 102 and the server system 104 over the communication network 106. For example, the client communications module 118 may facilitate the keyboard request module 112 sending a request to use a keyboard to the server system 104, the keyboard request module 112 receiving a response to the request, or the client system 102 sending of the set of offset coordinates to the server system 104. By communicating the set of offset coordinates from the client system 102 to the server system 104, one or more characters entered at the client system 102 using the keyboard image may effectively be communicated to the server system 104.

[0027] Referring now to the server system 104, the keyboard response module 120 may receive, from the client system 102, a request to use a keyboard image at the client system 102 to receive a set of characters as a user entry. In response to the request, the keyboard response module 120 may send the client system 102 a keyboard image for use at the client system 102. The keyboard response module 120 may respond to the request by sending the client system 102 offset data comprising a set of offsets. As described herein, the client system 102 can utilize the set of offsets with coordinates produced at the client system 102 during use of the keyboard image at the client system 102.

[0028] The offset generation module 122 may generate a set of offsets to be sent to the client system 102 by the keyboard response module 120. As described herein, the set of offsets generated may include a single for all coordinates, a separate offset for each axis (e.g., X-axis offset and Y-axis offset), or a series of offsets to be applied to a series of coordinates. In some examples, the offset generation module 122 generates the set of offsets to include one more randomly generated offset values. The offset generation module 122 may save the set of offsets for future use by the server system 104 during the offset coordinate to keyboard character translation process.

[0029] The offset coordinates receiving module 124 may receive offset coordinates data from the client system 102 where the offset coordinates data comprises a set of offset coordinates produced at the client system 102. The set of offset coordinates received from the client system 102 may be produced at the client system 102 by applying a set of offsets, provided to the client system 102 by the keyboard response module 120, to a set of coordinates produced during use of the keyboard image at the client system 102.

[0030] The translation module 126 may translate the set of offset coordinates, received through the offset coordinates receiving module 124, to one or more keyboard characters. In certain examples, the server system 104 is aware of the mapping between keyboard characters depicted on the keyboard image and coordinates of the keyboard image, which the keyboard response module 120 may provide the client system 102 at the time of request. Based on this mapping awareness, the translation module 126 can translate the set of offset coordinates to keyboard characters depicted on the keyboard image. To facilitate this translation, as shown in FIG. 1 , the translation module 126 includes an offset removal module 130 and a coordinate-to-keyboard character mapping module 132. The offset removal module 130 may use the set of offsets, previously provided by the keyboard response module 120 to the client system 102, to remove the effects of offsets on the set of offset coordinates received by the offset coordinates receiving module 124. The coordinate-to-keyboard character mapping module 132 may map the set of coordinates resulting from the offset removal module 130 to a keyboard character.

[0031] The server communications module 128 may facilitate communication between the server system 104 and the client system 102 and over the communication network 106. For instance, the server communications module 128 may facilitate the keyboard response module 120 receiving a request to use a keyboard image from the client system 102, the keyboard response module 120 sending a response to the request, and the offset coordinates receiving module 124 receiving offset coordinates data from the client system 102. By receiving the set of offset coordinates from the client system 102, one or more characters entered at the client system 102 using the keyboard image can effectively be communicated to the server system 104.

[0032] FIG. 2 illustrates an example client computing device 200. As shown, the client computing device 200 includes a computer-readable medium 206, a processor 208, and communications interface 210. Additionally, the client computing device 200 is coupled to a display device 202 and a human interface device 204. In various examples, the components or the arrangement of components of the client computing device 200 may differ from what is depicted in FIG. 2. For instance, the client computing device 200 can include more or less components than those depicted in FIG. 2.

[0033] The display device 202 may be any of various display screens that can present content to a user at the client computing device 200. The display device 202 may be separate remotely coupled to the computing device 200, as shown in FIG. 2, or integrated into the client computing device 200. The display device 202 may, for example, comprise a liquid crystal display (LCD), light emitting diode display (LED), organic light emitting diode display (OLED), active matrix organic light emitting diode display (AMOLED), retina display, or another display capable of presenting content to a user. For some examples, the content presented by the display device 202 includes an image of a keyboard, which can be utilized by various examples described herein.

[0034] In some examples, the display device 202 comprises a touchscreen layer to detect user touches, taps, and/or gestures (e.g., a resistive or capacitive touchscreen layer). Where the display device 202 has such a touchscreen layer, the display device 202 may display content and function as a human interface device with respect to the client computing device 200.

[0035] The human interface device 204 can include any device that enables a user to submit user input to the client computing device 200, such as a keyboard, mouse, touch-pad, joystick, camera, and like. For some examples, the human interface device 204 is a pointing device, such as a mouse, touchpad, or joystick, that permits a user at the client computing device 200 to select a location on an image presented on the display device 202, such as a keyboard image. To facilitate user selection of a location on an image, the human interface device 204 may control a pointer or cursor displayed on the display device 202 and may do so to move the pointer or cursor over the image during user selection. The pointer or cursor may be displayed as part of a graphical user interface (GUI) presented on the display device 202.

[0036] The computer-readable medium 206 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. For example, the computer-readable medium 206 may be a Random Access Memory (RAM), an Electrically-Erasable Programmable Readonly Memory (EEPROM), a storage drive, an optical disc, or the like. The computer-readable storage medium 206 can be encoded to store executable instructions that cause the processor 208 to perform operations in accordance with various examples described herein. In various examples, the computer- readable storage medium 206 is non-transitory. As shown in FIG. 2, the computer-readable storage medium 206 includes offset receiving instructions 212, keyboard image presenting instructions 214, user input receiving instructions 216, offset coordinates generation instructions 218, and offset coordinates sending instructions 220. [0037] The processor 208 may be one or more central processing units (CPUs), microprocessors, or other hardware devices suitable for retrieval and execution of one or more instructions stored in the computer-readable medium 206. The processor 208 may fetch, decode, and execute the instructions 212, 214, 216, 218, and 220 to enable the client computing device 200 to perform operations in accordance with various examples described herein. For some examples, the processor 208 may include one or more electronic circuits comprising a number of electronic components for performing the functionality of one or more of the instructions 212, 214, 216, 218, and 220.

[0038] The offset receiving instructions 212 may cause the processor 208 to receive a set of offsets from another computing device, such as a server computing device, through the communications interface 210. The set of offsets may be received in response to a request the processor 208 sent to the other computing device for use of a keyboard image to enter one or more characters at the client computing device 200. As described herein, the keyboard image may be one already possessed by the client computing device 200, or one the client computing device 200 receives from the other computing device in response to the request.

[0039] The keyboard image presenting instructions 214 may cause the processor 208 to present a keyboard image on the display device 202 coupled to the client computing device 200. The user input receiving instructions 216 may cause the processor 208 to receive user input from the human interface device 204 (e.g., mouse or touch pad) that facilitates user selection of a location, at a set of coordinates, on a keyboard image presented on the display device 202. The offset coordinates generation instructions 218 may cause the processor 208 to produce a set of offset coordinates by applying a set of offsets (e.g., received from another computing device) to a set of coordinates associated with a location on a keyboard image. The offset coordinates sending instructions 220 may cause the processor 208 to send a set of offset coordinates to another computing device, such as a server computing device, through the communications interface 210.

[0040] FIG. 3 illustrates an example server computing device 300. As shown, the server computing device 300 includes a computer-readable medium 302, a processor 304, and communications interface 310. In various examples, the components or the arrangement of components of the server computing device 300 may differ from what is depicted in FIG. 3. For instance, the server computing device 300 can include more or less components than those depicted in FIG. 3.

[0041] The computer-readable medium 302 may be similar to the computer-readable medium 206 of FIG. 2, and can be encoded to store executable instructions that cause the processor 306 to perform operations in accordance with various examples described herein. As shown in FIG. 3, the computer-readable storage medium 302 includes keyboard user request receiving instructions 308, offset generation instructions 310, keyboard image sending instructions 312, offset sending instructions 314, offset coordinates receiving instructions 316, and offset coordinates-to-keyboard character instructions 318.

[0042] The processor 304 may be similar to the processor 208 of FIG. 2. Accordingly, the processor 304 may fetch, decode, and execute the instructions 308, 310, 312, 314, 316, and 318 to enable the server computing device 300 to perform operations in accordance with various examples described herein. For some examples, the processor 304 may include one or more electronic circuits comprising a number of electronic components for performing the functionality of one or more of the instructions 308, 310, 312, 314, 316, and 318.

[0043] The keyboard user request receiving instructions 308 may cause the processor 304 to receive a request from another computing device, such a client computing device, to use a keyboard image for user entry of one or more characters. The processor 304 may receive the request through the communications interface 306.

[0044] The offset generation instructions 310 may cause the processor 304 to produce a set of offsets for use with user entry of one or more characters using a keyboard image at another computing device, such as a client computing device. The set of offset may be produced in response to a request to the processor 304 receiving a request from another computing device to use a keyboard image for user entry of one or more characters. [0045] The keyboard image sending instructions 312 may cause the processor 304 to send a keyboard image to another computing device, such as a client computing device, through the communications interface 306. The keyboard image may be sent in response to a request to the processor 304 receiving a request from another computing device to use a keyboard image for user entry of one or more characters.

[0046] The offset sending instructions 314 may cause the processor 304 to send a set of offsets to another computing device, such as a client computing device, through the communications interface 306. The set of offsets may be sent in response to a request to the processor 304 receiving a request from another computing device to use a keyboard image for user entry of one or more characters.

[0047] The offset coordinates receiving instructions 316 may cause the processor 304 to receive a set of offset coordinates from another computing device, such as a client computing device, through the communications interface 306. The set of offset coordinates may be received from a computing device that produced the set of offset coordinates based on user entry of one or more characters using a keyboard image at the computing device.

[0048] The offset coordinates-to-keyboard character instructions 318 may cause the processor 304 to translate a set of offset coordinates to one or more keyboard characters. To perform the translation, the processor 304 may use a set of offsets previously generated and provided for use with a keyboard image upon which the set of offset coordinates were produced. Additionally, to perform the translation, the processor 304 may use a mapping of coordinates to keyboard characters.

[0049] FIG. 4 illustrates an example method 400 for using a keyboard image an offset coordinate to facilitate user entry of a keyboard character. Although execution of method 400 is described below with reference to the client system 102 of FIG. 1, other suitable systems or devices for execution of method 400 can be possible, such as the client computing device 200 of FIG. 2. The method 400 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry. [0050] In FIG.4, the method 400 begins at block 402, with the client system 102 receiving a set of offsets. For instance, the client system 102 may receive from the server system 104 offset data including a set of offsets to be used at the client system 102 for user entry of a single character or a set of characters. Additionally, the client system 102 may receive from the server system 104 offset data include a set of offsets that applies to all coordinates equally (e.g., offset value of 20) or a set of offset having separate offsets for each of the axes (e.g., X-axis offset value of 554 and a Y-axis offset value of 471 ).

[0051 ] At block 404 , the client system 102 presents an image of a keyboard ("keyboard image") on a display device coupled to, or integrated into, the client system 102. For instance, the client system 102 may present a keyboard image of a numeric keypad, which may include a set of keys for entering digit and symbol keyboard characters.

[0052] At block 406, the client system 102 receives a user selection of a location on the keyboard image at a set of coordinates on the keyboard image. For instance, where the keyboard image presented at block 404 depicts a numeric keypad, the client system 102 may receive a user selection with respect to a key bearing the digit "2" at an X-axis coordinate of 30, and a Y-axis coordinate of 55 on the keyboard image. The user selection at the set of coordinates (30, 55) indicates a user's desire to enter the keyboard character 2 through keyboard image. The user may have selected the "2" key by moving a mouse pointer over the "2" key depicted by the keyboard image clicking a mouse button. Alternatively, the user may have moved and then held their mouse pointer over the "2" key for a predetermined set of time (e.g., 1 sec), or used their mouse pointer to draw a region (e.g., a selection square or circle) around the "2" key.

[0053] In another instance where the keyboard image presented at block 404 depicts a numeric keypad, the client system 102 may receive a sequence of user selections with respect to keys bearing the digits "1," "2," and "3." Such a sequence of user selections can indicate the user's desire to enter, through the keyboard image, a sequence of keyboard characters including the digits 1 , 2, and 3. For the sequence of user selections, each user selection may be associated with its own set of coordinates. Eventually, when the sets of coordinates for the sequence of user selections are communicated to a server system (e.g., the server system 104), the sets may be communicated individually or as a group but while maintaining the sequence of the user selections.

[0054] At block 408, the client system 102 applies the set of offsets, received at block 402, to the set of coordinates associated with the user selection, received at block 406, to produce a set of offset coordinates. For instance, where the set of coordinates include an X-axis coordinate of 30, and a Y-axis coordinate of 55, and the set of offsets include an X-axis offset value of 554 and a Y-axis offset value of 471 , the client system may add the set of offsets to the set of coordinates to produce a set of offset coordinates including an (offset) X-axis coordinate of 584 and a (offset) Y-axis coordinate of 526.

[0055] At block 410, the client system 102 sends the set of offset coordinates produced at block 408. For instance, the client system 102 may send the server system 104 offset coordinates data including the set of offset coordinates. The server system 104 may be the same entity that sent the set of offsets to the client system 102 at block 402. The method 400 stops after block 410.

[0056] FIG. 5 illustrates an example method 500 for using a keyboard image an offset coordinate to facilitate user entry of a keyboard character. Although execution of method 500 is described below with reference to the client system 102 of FIG. 1, other suitable systems or devices for execution of method 500 can be possible, such as the client computing device 200 of FIG. 2. The method 500 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry.

[0057] In FIG. 5, the method 500 begins at block 502, the client system 102 requests use of a keyboard image for user entry of one or more characters at the client system 102. For instance, the client system 102 may request use of a keyboard image in this manner from the server system 104. As described herein, the request may provide information regarding the set of characters the user intends to enter at the client system 102 using the keyboard image. The request may, for example, specify how many characters are to be entered using the keyboard image, an identifier for the set of characters being entered (e.g., sensitive data, such as a PAN, a CVN, account and routing numbers, or a passport number), or the types of characters being entered (e.g., digits, symbols, alphabetical characters, or some combination thereof).

[0058] At block 504, the client system 102 receives a set of offsets in response to the request made at block 502. For example, the client system 102 may receive from the server system 104 offset data including a set of offsets to be used at the client system 102 for user entry of one or more characters using the keyboard image requested at block 502.

[0059] Remaining blocks 506-512 may be similar to those described with respect to the method 400 of FIG. 4. For example, block 506 may be similar to block 404, block 508 may be similar to 406, block 510 may be similar to block 408, and block 512 may be similar to block 410. The method 500 stops after block 512.

[0060] FIG. 6 illustrates an example method 600 for using a keyboard image an offset coordinate to facilitate user entry of a keyboard character. Although execution of method 600 is described below with reference to the client system 102 of FIG. 1, other suitable systems or devices for execution of method 600 can be possible, such as the client computing device 200 of FIG. 2. The method 600 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry.

[0061] In FIG. 6, the method 600 begins at block 602, which may be similar to block 502 described with respect to the method 500 of FIG. 5. At block 604, the client system 102 receives a keyboard image. For instance, the client system 102 may receive the keyboard image from the server system 104, which may be same entity that receives a request to use the keyboard image at block 602. The client system 102 may receive the keyboard image in response to the request made at block 602.

[0062] Remaining blocks 606-614 may be similar to those described with respect to the method 400 of FIG. 4. For example, block 606 may be similar to block 402, block 608 may be similar to 404, block 610 may be similar to block 406, block 612 may be similar to block 408, and block 614 may be similar to block 410. The method 600 stops after block 614. [0063] FIG. 7 illustrates an example method 700 for using an image of a keyboard facilitate user entry of a keyboard character at a client computing device, and for using an offset coordinate to facilitate communication of the user entry to a server computing device. Although execution of method 700 is described below with reference to the client system 102 and the server system 104 of FIG. 1 , other suitable systems or devices for execution of method 700 can be possible, such as the client computing device 200 of FIG. 2 and the server computing device 300 of FIG. 3. The method 700 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry.

[0064] In FIG. 7, the method 700 begins at block 702, with a set of offsets being received from the server system 104. In some examples, the client system 102 receives the set of offsets from the server system 104. At block 704, the client system 102 presents an keyboard image at the cl ient system 102. For some examples, the keyboard image is received from the server system 104. At block 706, the client system 102 receives a user selection of a location, on the keyboard image, at a set of coordinates. At block 708, the set of offsets, received at block 702, is applied to the set of coordinates to produce a set of offset coordinates. In some examples, the client system 102 applies the set of offsets to the set of coordinates to produce a set of offset coordinates. At block 710, the set of offset coordinates, produced at block 708, is sent to the server system. In certain examples, the client system 102 sends the set of offset coordinates to the server system 104.

[0065] At block 712, the server system 104 receives the set of offset coordinates (e.g., from the client system 102). At block 714, the server system 104 translates the set of offset coordinates to one or more keyboard characters. To translate the set of offset coordinates, the server system 104 may use the set of offsets the server system 104 sent at block 702. Additionally, to translate the set of offset coordinates, the server system 104 may use a mapping of coordinates to keyboard characters associated with the keyboard image the client system 102 presented at 704. The method 700 stops after block 714. [0066] FIG. 8 illustrates an example method 800 for using an offset coordinate to receive a keyboard character entered at a client computing device by a user. Although execution of method 800 is described below with reference to the server system 104 of FIG. 1 , other suitable systems or devices for execution of method 800 can be possible, such as the server computing device 300 of FIG. 3. The method 800 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry.

[0067] In FIG. 8, the method 800 begins at block 802, the server system 104 sends a set of offset to the client computing system 102. For example, the server system 104 may send the client system 102 offset data including a set of offsets to be used at the client system 102 for user entry of one or more characters using a keyboard image at the client system 102. At block 804, the server system 104 receives a set of offset coordinates from the client system 102. As described herein, the set of offset coordinates may be produced by the client system 102, which may apply the set of offsets, sent at block 802, to a set of coordinates associated with a location selected by a user on a keyboard image. At block 806, the server system 104 translates the set of offset coordinates, received at block 804, to one or more keyboard characters. As described herein, the server system 104 may use the set of offsets the server system 104, sent at block 802, to translate the set of offset coordinates. Additionally, the server system 104 may use a mapping of coordinates to keyboard characters, associated with a keyboard image, to translate the set of offset coordinates. The method 800 stops after block 806.

[0068] FIG. 9 illustrates an example method 900 for using an offset coordinate to receive a keyboard character entered at a client computing device by a user. Although execution of method 900 is described below with reference to the server system 104 of FIG. 1 , other suitable systems or devices for execution of method 900 can be possible, such as the server computing device 300 of FIG. 3. The method 900 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry.

[0069] In FIG. 9, the method 900 begins at block 902, the server system

104 generates a set of offsets that includes at least one randomly-generated offset value. For instance, where the server system 104 generates a set of offsets including an X-axis offset value and a Y-axis offset value, either the X-axis offset value, the Y-axis offset value, or both may be randomly generated by the server system 104.

[0070] Remaining blocks 904-908 may be similar to those described with respect to the method 800 of FIG. 8. For example, block 904 may be similar to block 802, block 906 may be similar to 804, and block 908 may be similar to block 806. The method 900 stops after block 908.

[0071] FIG. 10 illustrates an example method 1000 for using an offset coordinate to receive a keyboard character entered at a client computing device by a user. Although execution of method 1000 is described below with reference to the server system 104 of FIG. 1 , other suitable systems or devices for execution of method 1000 can be possible, such as the server computing device 300 of FIG. 3. The method 1000 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry.

[0072] In FIG. 10, the method 1000 begins at block 1002, the server system 104 receives a request from the client system 102 to use a keyboard image for user entry of a set of characters. As described herein, the request may provide information regarding the set of characters the user intends to enter at the client system 102 using the keyboard image. Depending on the example, the request may specify how many characters are to be entered using the keyboard image, an identifier for the set of characters being entered (e.g., sensitive data, such as a PAN, a CVN, account and routing numbers, or a passport number), or the types of characters being entered (e.g., digits, symbols, alphabetical characters, or some combination thereof).

[0073] At block 1004, the server system 104 may send a set of offsets to the client system 102. For instance, the server system 104 may send offset data including a set of offsets to the client system 102 in response to the request received by the server system 104 at block 1002.

[0074] Remaining blocks 1006-1008 may be similar to those described with respect to the method 800 of FIG.8. For example, block 1006 may be similar to 804, and block 1008 may be similar to block 806. The method 1000 stops after block 1008.

[0075] FIG. 11 illustrates an example method 1100 for using a keyboard image and an offset coordinate to receive a keyboard character entered at a client computing device by a user. Although execution of method 1100 is described below with reference to the server system 104 of FIG. 1 , other suitable systems or devices for execution of method 1100 can be possible, such as the server computing device 300 of FIG. 3. The method 1100 may be implemented in the form of executable instructions stored on a computer-readable medium or in the form of electronic circuitry.

[0076] In FIG. 11, the method 1100 begins at block 1102, which may be similar to block 1002 described with respect to the method 1000 of FIG. 10. At block 1104, the server system 104 may send a keyboard image to the client system 102. For instance, the server system 104 may send the keyboard image to the client system 102 in response to the request received by the server system 104 at block 1102.

[0077] Remaining blocks 1106-1110 may be similar to those described with respect to the method 800 of FIG.8. For example, block 1106 may be similar to block 802, block 1108 may be similar to 804, and block 1110 may be similar to block 806. The method 1100 stops after block 1110.

[0078] FIG. 12 illustrates example techniques for using an image of a keypad to facilitate user entry of credit card information at a client system, and using an offset coordinate to facilitate communication of the user entry to payment systems. In particular, FIG. 12 presents a payment transaction environment 1200 including a client system 1206, a payment gateway system 1208, and a payment processing system 1210. As shown, the client system 1206 is part of the non- PCI portion 1202 of the payment transaction environment 1200 and, accordingly, is not subject to Payment Card Industry (PCI) compliance. The payment gateway system 1208 and the payment processing system 1210 are part of the PCI portion 1204 of the payment transaction environment 1200.

[0079] In FIG. 12, the payment gateway system 1208 includes a web server 1212, a keypad server 1214, and a datastore 1216, and the payment processing system 1210 includes a tokenizer 1218. For some implementations, the client system 1206 is similar to the client system 102 of FIG.1 or similar to the client computing device 200 of FIG. 2. Additionally, for some implementations, the keypad server 1214 is similar to the server system 104 of FIG. 1 or similar to the server computing device 300 of FIG. 3. Depending on the example, the datastore 1216 can include any organization of data, including a data structure that stores or organizes data in a manner that permits efficient fetching or storage of the data. The datastore 1216 can include traditional database, tables, comma- separate values (CSV) files, and the like.

[0080] In some examples, the client system 1206 may be accessible to a client user interested in submitting a payment transaction. Examples of the client user can include a consumer, a merchant (e.g., e -commerce merchant), a sales agent (e.g., call center sales agent), and the like. As shown in FIG. 12, at block 1220 the client user accesses a credit card payment web page at the client system 1206. For instance, the client user may access the credit card payment web page through a web browser application, or some other web-enabled application, operating on the client system 1206. The client system 1206 receives the credit card payment web page from the web server 1212 over a Secure Socket Layer (SSL)-encrypted Hypertext Transfer Protocol (HTTP) connection 1222.

[0081] For some examples, the credit card payment web page includes a variety of fields to facilitate processing of a payment transaction, including fields for gathering information regarding the credit card being used in the payment transaction. In various examples, the credit card payment web page includes a field for receiving the credit card type (e.g., Visa®, MasterCard®, Discover®, etc.), a field for receiving the credit cardholder's name, a field for credit cardholder's billing address, a field for receiving a primary account number (PAN), a field for receiving a credit card verification number (CVN), a field for receiving an expiration date, or some combination thereof. To facilitate entry of a value for one or more numeric fields included by the credit card payment web page (e.g., PAN, CVN, or the expiration date) at the client system 1206, at the client system 1206, the credit card payment web page causes the client system 1206 to initialize (e.g., using an initialization process 1224) and request (e.g., using a request process 1226) a keypad from the keypad server 1214 to enter the value. According to some implementations, the credit card payment web page can include executable code (e.g., script) that causes the client system 1206 to perform the initialization process 1224. As described herein, the entry of characters entered through the requested keypad can result in the entered characters to be communicated from the client system 1206 to the keypad server 1214 as offset coordinates data.

[0082] During the initialization process 1224, the client system 1206 and the keypad server 1214 can communicate various types of initialization data between themselves. For example, during the initialization process 1224, the client system 1206 can send the keypad server 1214 an order identifier (ID) that allows the keypad server 1214 to associate a set of field values, entered at the client system 1206 through the requested keypad, to an appropriate pending order. In response, the keypad server 1214 can send the client system 1206 a keypad session identifier, which the client system 1206 can subsequently use when requesting a keypad from the keypad server 1214 and communicating offset coordinates to the keypad server 1214 for one or more characters at the client system 1206 through the requested keypad (e.g., offset coordinates data communicated for characters of a specific field value being entered at the client system 1206 through the requested keypad).

[0083] When the client user at the client system 1206 wishes to enter characters for a value of a field included on the credit card payment web page, the credit card payment web page can cause the client system 1206 to request a keypad (during the request process 1226), from the keypad server 1214, to enter characters for the field value. During the request process 1226, the client system 1206 may specify the field the client user at the client system 1206 intends to enter using the requested keypad. For instance, the client system 1206 may specify the name of the credit card information field to be provided through the requested keypad, such as the PAN, CVN, or expiration date. The client system 1206 may specify the length of the field value the client user at the client system 1206 intends to enter using the requested keypad. The client system 1206 may further specify types of characters the client user at the client system 1206 intends to enter using the requested keypad.

[0084] In response to the request process 1226, the keypad server 1214 can send an image of a keypad ("keypad image") to be used at the client system 1206 for entry of a field value. In certain instances, the client system 1206 may possess a copy of the keypad image (e.g., a cached copy from a previous keypad session) prior to the request 1224 and, as such, may not request or receive another copy of the image from the keypad server 1214. In various implementations, the keypad image depicts keys that represent characters the client user may enter using the image, including digits, symbols, and alphabetical letters. The keypad image may mimic the appearance of physical keypads, such as those commonly found on physical computer keyboard. The appearance of the keypad depicted by the keypad image may vary between different examples.

[0085] In response the request process 1226, the keypad server 1214 can also send offset data to the client system 1206, which the client system 1206 can subsequently utilize to generate offset coordinates data communicated to the keypad server 1214, as described herein. The request process 1226 may include the client system 1206 providing the keypad server 1214 with a keypad session identifier, which may have been provided to the client system 1206 during the initialization process 1224. The keypad server 1214 may associate the offset data sent to the client system 1206 with the keypad session received from the client system 1206. In this way, when the client system 1206 includes the keypad session identifier with offset coordinates data that the client system 1206 send to the keypad server 1214, the keypad server 1214 can translate the offset coordinates data using the appropriate offset data.

[0086] The credit card payment web page may cause the client system 1206 to present a keypad image 1230 at the client system 1206 (during process 1228) to enter characters for a value of a field (e.g., PAN or CVN) included on the credit card payment web page. The client user at the client system 1206 can enter one or more characters using the keypad image 1230, and may do so by selecting points or regions on the keypad image 1230 that correspond to keyboard characters the client user wishes to enter. For some examples, the client user selects the points or regions using a displayed pointer or cursor controlled by the client user. Additionally, the client system 1206 may prevent the client user from selecting such points or regions using a hardware keyboard or an onscreen virtual keyboard, thereby preventing the client user from using the keypad image to directly enter characters (e.g., numeric or alpha-numeric characters) for the value of the field.

[0087] For some examples, certain credit card information, such as a PAN, a CVN, or an expiration date, is received from the client system 1206 exclusively through the keypad image 1230, whereby the client user may use the keypad image to click on digits depicted on the keyboard image to enter the credit card information. In this way, these and other examples, place the client user and the client system 1206 to remain outside the scope of PCI compliance, as actual the actual character entered are not flowing through the client system 1206 and the client system 1206 is not aware of the actual characters entered.

[0088] Using the coordinates of the points or regions selected (e.g. , X-axis and Y-axis coordinates) by the client user and the offset data received from the keypad server 1214, the client system 1206 may produce offset coordinates data 1232. The client system 1206 sends the offset coordinates data 1232 to the keypad server 1214 for further processing. With the offset coordinate data 1232, the client system 1206 may include the keypad session identifier, which the keypad server 1214 can use to identify the appropriate offset data to be used during translation of the offset coordinates to one or more keyboard characters.

[0089] During process 1234, the keypad server 1214 may save the offset coordinates data 1232 to the datastore 1216 for use during later translation and credit card processing. Additionally or alternatively, the keypad server 1214 may translate the offset coordinates data 1232 to coordinates data using the appropriate offset data, or may translate the offset coordinates data 1232 to one or more keyboard characters using the appropriate offset data. During process 1234, the resulting translated coordinates data may be saved to the datastore 1216 for use during later mapping and credit card processing, or the resulting translated keyboard characters) may be saved to the datastore 1216 for later credit card processing. [0090] Eventually, other payment information may be collected 1236 from the client user by the credit card payment web page and submitted (as 1238) by the client system 1206 to the keypad server 1214. The other payment information may include, without limitation, the merchant name, order identifier, customer identifier, customer information (e.g., first name, last name, etc.), cardholder billing address, customer shipping address, and transaction amount. For some examples, the other payment information does not include the primary account number (PAN) and the credit card verification number (CVN), which may be submitted to the keypad server 1214 as offset coordinates data produced through use of the keypad image, as described herein.

[0091] With the other payment information, the client system 1206 may include the keypad session identifier may include the keypad session identifier, which the keypad server 1214 can use to retrieve relevant information (during process 1240) from the datastore 1216 that was received at the keypad server 1214 as offset coordinates data. Where the stored information comprises coordinates or offset coordinates, the keypad server 1214 may perform an appropriate translation process to obtain the information in plaintext form.

[0092] Once information from the datastore 1214 is in acceptable form (e.g., PAN and CVN in plaintext), the keypad server 1214 can combine the some or all of the information obtained from the datastore 1214 (e.g., PAN and CVN) with some or all of the other payment information 1238 (e.g., cardholder billing address) received from the client system 1206. The keypad server 1214 may submit the resulting combined information to the tokenizer 1218 (e.g., over an HTTPS connection 1240) for additional payment processing.

[0093] In the foregoing description, numerous details are set forth to provide an understanding of the subject disclosed herein. However, implementations may be practiced without some or all of these details. Other implementations may include modifications and variations from the details discussed above. It is intended that the appended claims cover such modifications and variations.