WO2014020696A1 - 情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体 - Google Patents

情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体 Download PDF

Info

Publication number
WO2014020696A1
WO2014020696A1 PCT/JP2012/069455 JP2012069455W WO2014020696A1 WO 2014020696 A1 WO2014020696 A1 WO 2014020696A1 JP 2012069455 W JP2012069455 W JP 2012069455W WO 2014020696 A1 WO2014020696 A1 WO 2014020696A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
input
make
break
make code
Prior art date
Application number
PCT/JP2012/069455
Other languages
English (en)
French (fr)
Inventor
十四広 宮本
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2014527867A priority Critical patent/JP5794390B2/ja
Priority to PCT/JP2012/069455 priority patent/WO2014020696A1/ja
Publication of WO2014020696A1 publication Critical patent/WO2014020696A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/0202Constructional details or processes of manufacture of the input device
    • G06F3/021Arrangements integrating additional peripherals in a keyboard, e.g. card or barcode reader, optical scanner
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/0227Cooperation and interconnection of the input arrangement with other functional units of a computer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0381Multimodal input, i.e. interface arrangements enabling the user to issue commands by simultaneous use of input devices of different nature, e.g. voice plus gesture on digitizer

Definitions

  • the present invention relates to an information processing apparatus, an input processing method, an input processing program, and a computer-readable recording medium on which the input processing program is recorded.
  • a personal computer is equipped with a keyboard.
  • PS / 2 has been used as a keyboard interface, but in recent years it has been replaced by Universal Serial Bus (USB).
  • USB Universal Serial Bus
  • the USB interface replaces the RS-232C serial port and the parallel port for connecting printers that are provided in conventional PCs, with the aim of connecting devices connected by these interfaces using the same physical interface.
  • a recent PC main body is provided with a plurality of USB connectors for connecting the plurality of devices.
  • the USB port can be seen as PS / 2, RS-232C, parallel port, etc. for the upper software by emulating it with Basic Input Output System (BIOS) or device driver Techniques are known. Since this method is provided as a standard function of the Operating System (OS), even if the interface becomes USB, the software of the device connected to it can be used as it is, and there is no need to remake it.
  • BIOS Basic Input Output System
  • OS Operating System
  • USB input device a bar code reader, a QR code (registered trademark) reader that has recently been replaced, and the like are known.
  • these input devices may be collectively referred to as a pseudo keyboard.
  • these input devices are connected using a PS / 2 interface and perform input in place of a PC keyboard.
  • these input devices are being replaced by USB interfaces.
  • an emulation method called “legacy keyboard emulation” in which a device connected to the USB interface looks like a keyboard connected to the PS / 2 interface.
  • the conventional PC has only one physical PS / 2 keyboard interface. Therefore, the keyboard and the pseudo keyboard are connected by, for example, a switching method using a changeover switch or the like, and it is not conscious that the keyboard and the pseudo keyboard are used simultaneously.
  • the output data (code) of the pseudo keyboard device is simply made special, and the output data (code) is distributed to the keyboard data. is there.
  • the code system inputted from the pseudo keyboard is different from the code of the keyboard conventionally used. This makes it impossible to use a conventional application that used the keyboard code system as it is.
  • a method (pipe) of creating a new program and relaying input data to an application can be considered.
  • SE general System Engineer
  • the present invention has been made in view of such a problem, and an object thereof is to make it possible to process input from a pseudo keyboard separately from input from a keyboard.
  • the present invention is not limited to the above-described object, and is an operational effect derived from each configuration shown in the best mode for carrying out the invention described later, and has an operational effect that cannot be obtained by conventional techniques. Can be positioned as one of the goals.
  • this information processing apparatus outputs a pair of a make code generated when one key is pressed and a break code generated when the key is released and having a certain relationship with the make code.
  • a timer for measuring an interval A timer for measuring an interval; and a determination unit that determines that the make code is input from the keyboard when the second interval is measured by the timer after the make code is input.
  • the information processing apparatus also outputs a pair of a make code that is generated when one key is pressed and a break code that is generated when the key is released and has a certain relationship with the make code.
  • a confirmation unit that confirms whether there is a make code paired with the input break code
  • the confirmation unit In the make code received up to the last two times, it is confirmed that there is a make code paired with the input break code.
  • Equipped a determination unit for determining the make code and the break code as input from the input device, the.
  • this input processing method is a keyboard that outputs a pair of a make code generated when a key is pressed and a break code generated when the key is released and having a certain relationship with the make code.
  • an input processing method in an information processing apparatus having an interface to which an input device that outputs a pair of the make code and the break code at a first interval is connected, and a make code is input , Starting time measurement of a second interval longer than the first interval, and determining that the make code is input from the keyboard when the second interval is timed after the make code is input And have.
  • this input processing method is a keyboard that outputs a pair of a make code generated when a key is pressed and a break code generated when the key is released and having a certain relationship with the make code.
  • an input processing method in an information processing apparatus having an interface to which an input device that outputs a pair of the make code and the break code at a first interval is connected, and stores the input make code
  • the storage unit confirms whether the make code paired with the input break code exists in the make code received up to two times before. And a make code paired with the inputted break code in the make code received up to the last two times.
  • this input processing program outputs a pair of a make code generated when a key is pressed and a break code generated when the key is released and having a certain relationship with the make code.
  • a make code is input to a computer having an interface to which an input device that outputs a pair of the make code and the break code at a first interval is connected, it is longer than the first interval. Time measurement of the second interval is started, and when the second interval is timed after the make code is input, a process for determining that the make code is input from the keyboard is executed.
  • the input processing program is a keyboard for outputting a pair of a make code generated when a key is pressed and a break code generated when the key is released and having a certain relationship with the make code.
  • a computer having an interface to which an input device that outputs a pair of the make code and the break code at a first interval is connected, and the inputted make code is stored in a storage unit, When input, the storage unit confirms whether or not there is a make code paired with the input break code in the make code received up to the previous two times, and received the previous two codes When it is confirmed that a make code that is paired with the input break code exists in the make code, the make code The de and brakes is determined that the input from the input device to perform the process.
  • this computer-readable recording medium records the above-described input processing program.
  • a key code input from a keyboard and a key code input from an input device can be separated.
  • 10 is a flowchart illustrating an example of realizing legacy keyboard emulation in the information processing apparatus as an example of an embodiment.
  • 10 is a flowchart illustrating an example of realizing legacy keyboard emulation in the information processing apparatus as an example of an embodiment. It is a figure which shows the modification of a structure of the information processing apparatus as an example of embodiment. It is a figure which shows the scan timing of the USB interface implement
  • FIG. 1 is a diagram illustrating a configuration of an information processing apparatus 1 as an example of an embodiment
  • FIG. 2 is a diagram illustrating an appearance thereof.
  • the information processing apparatus 1 is a computer. As shown in FIG. 2, the information processing apparatus 1 includes two or more USB interfaces 20, and a keyboard 105 and a scanner 106 are connected to the USB interfaces 20. Then, the operator performs various input operations through the keyboard 105 and the scanner 106.
  • the information processing apparatus 1 includes a central processing unit (CPU) 10, a random access memory (RAM) 102, a read only memory (ROM) 103, a platform controller hub (PCH) 104, and a keyboard (KB) 105. , A scanner (input device) 106, a keyboard controller (KBC) 107, and a display (DISP) 108.
  • the information processing apparatus 1 also includes a pointing device (not shown).
  • the ROM 103 is a storage device that stores an operating system (OS) executed by the CPU 10, programs, various data, and the like.
  • a RAM (storage unit) 102 is a storage area for storing various data and programs. When the CPU 10 executes a program, the data and program are stored and expanded for use.
  • the RAM 102 functions as a TMP buffer 15 and a KB buffer 103 that store make codes (make data) and break codes (break data) input from a keyboard 105 and a scanner 106, which will be described later.
  • the PCH 104 serves as an interface between the CPU 10 and peripheral devices, and is generally configured as a chip set.
  • the PCH 104 is provided with a plurality of USB interfaces 20 to which a keyboard 105, a scanner 106, and a keyboard controller (KBC) 107 are connected.
  • the PCH 104 includes Peripheral Component Interconnect (PCI) Express, serial AT Attachment (ATA), an interface function, and the like.
  • a keyboard 105 and a pointing device are input devices for a user to perform various input operations.
  • the keyboard 105 has a plurality of keys corresponding to characters (characters), and outputs a key code in accordance with a key pressing operation by the operator.
  • a key code a make code generated when one key is pressed and a break code generated when the key is released and having a certain relationship with the make code are defined as a pair.
  • the key code including the make code and the break code can be realized by various known methods, and detailed description thereof is omitted.
  • the scanner 106 is an input device that scans a reading target such as an image to generate input data, and is, for example, a barcode reader or a QR code reader.
  • the scanner 106 reads a bar code or a QR code, generates a key code including a make code and a break code as a pair, and inputs the key code via the PCH 104.
  • the make code and break code generated by the scanner 106 have the same format as the make code and break code generated by the keyboard 105. That is, the scanner 106 functions as a pseudo keyboard that inputs a key code to the information processing apparatus 1.
  • FIG. 3 is a diagram illustrating a key code input by the scanner 106 in the information processing apparatus as an example of the embodiment.
  • FIG. 3 shows an example in which a key code corresponding to the key input of the character string “FITP” is input from the scanner 106.
  • the make code is simply represented by the text “F”, “I”, “T”, “P” indicated by the make code, and the break code is represented by adding “O” mark on the text. .
  • the scanner 106 continuously outputs a pair of make codes and break codes corresponding to the same key at a first interval T (for example, T ⁇ 10 ms). For example, when inputting the character “F”, the scanner 106 inputs the break code “F” after the first interval T after inputting the make code “F”.
  • the keyboard controller 107 is a control device that controls data exchange between the keyboard 105 and the scanner 106 and the CPU 10, and is, for example, Intel 8042.
  • the keyboard controller 107 includes a data register and a status register (not shown) for communicating with the CPU 10. These registers are mapped to I / O ports (0x60, 0x64), and the CPU 10 exchanges with the keyboard controller 107 by reading / writing these addresses. Input from the keyboard 105 is performed at random timing. Therefore, when the keyboard controller 107 receives the key code from the keyboard 105, the keyboard controller 107 generates an interrupt (IRQ 1) to the CPU 10 via an interrupt controller (not shown).
  • IRQ 1 interrupt
  • Legacy keyboard emulation is a technology that makes a USB mouse or keyboard look like a PS / 2 keyboard or mouse, which is a traditional input device of an AT compatible PC. According to this legacy keyboard emulation, it is possible to make the software appear to have requested key input or coordinate input from the PS / 2 keyboard or mouse interface circuit (register). As a result, conventional software accessing these registers can operate as it is.
  • the legacy keyboard emulation is realized by the echo back function of the keyboard controller 107.
  • the keyboard controller 107 when key code data is set in the keyboard controller 107, the keyboard controller 107 generates an interrupt as if there was a key input, notifies the OS of the key input, and the key code data. It is to encourage the take-over of.
  • the keyboard controller 107 includes, for example, a data register (60h) and a status register (64h).
  • the keyboard controller 107 sets a key code in the data register, sets the Out put Buffer Full (OBF) bit of the status register to “1”, and interrupts the CPU 10.
  • the OS reads and sets the data set in the data register.
  • the keyboard controller 107 detects the data collection of the CPU 10, the keyboard controller 107 resets the OBF, thereby ending a series of key input operations.
  • the keyboard controller 107 has the above-described echo back function.
  • the echo back function writes an echo command (FEh) to the data register, and then writes a key code for echoing.
  • FEh echo command
  • the keyboard controller 107 sets OBF to “1” and generates an interrupt (IRQ1: INT9) to the CPU 10.
  • IRQ1: INT9 interrupts
  • the data set in the data register is notified to the OS in the same sequence as when the key input is received, so that the OS can take over the set data.
  • BIOS Basic Input Output System
  • OS identifies a keyboard device based on the identification information of the device connected to the USB port
  • the input data from the device is set in the keyboard controller 107, and the data is collected. This can be done in the same way as a conventional PS / 2 keyboard.
  • FIG. 4 is a diagram illustrating a configuration of the TMP buffer 15 and the KB buffer 16 in the information processing apparatus 1 as an example of the embodiment.
  • the TMP buffer 15 is a buffer for storing a make code and a break code input from the keyboard 105 or the scanner 106. As shown in FIG. 4, an area 151 for storing a make code, an area 152 for storing a break code, Is provided.
  • the TMP buffer 15 functions as a storage unit that stores at least two input makeup codes. Also, one break code is stored in the area 152 for storing the break code by FIFO.
  • FIFO First In and First Out
  • the KB buffer 16 is a buffer for storing a make code and a break code to be notified to the CPU 10, and includes a make buffer 161 for storing the make code and a break buffer 161 for storing the break code, as shown in FIG.
  • the make buffer 161 either the previous make code or the previous make code stored in the area 151 of the TMP buffer 15 is stored.
  • the break buffer 162 stores the break code stored in the area 152 of the TMP buffer 15.
  • the make code and break code are stored in the KB buffer 16 by the determination unit 13 described later.
  • the display 108 is an output device that displays various information and messages.
  • FIG. 2 an example of a display integrated model in which the display 108 is formed integrally with the apparatus main body of the information processing apparatus 1 is illustrated.
  • the hardware configuration of the information processing apparatus 1 is not limited to this, and can be implemented with various modifications.
  • the information processing apparatus 1 may be a notebook PC, or the apparatus main body and the display 108 may be configured separately.
  • the CPU 10 is a processing device that performs various controls and operations, and implements various functions by executing an OS and programs stored in the ROM 103 and the like. Specifically, the CPU 10 executes a device driver program (input processing program), thereby providing a key code processing unit 101 having functions as a timer 11, a confirmation unit 12, and a determination unit 13, as shown in FIG. Function.
  • a device driver program input processing program
  • the program (device driver) for realizing the function as the key code processing unit 101 is, for example, a flexible disk, CD (CD-ROM, CD-R, CD-RW, etc.), DVD (DVD-ROM, DVD). -RAM, DVD-R, DVD + R, DVD-RW, DVD + RW, HD DVD, etc.), Blu-ray disc, magnetic disc, optical disc, magneto-optical disc, etc.
  • the computer reads the program from the recording medium, transfers it to an internal storage device (not shown) or an external storage device, and uses it.
  • the program may be recorded in a storage device (recording medium) such as a magnetic disk, an optical disk, or a magneto-optical disk, and provided to the computer from the storage device via a communication path.
  • a program stored in an internal storage device is executed by a microprocessor (CPU 10 in this embodiment) of a computer.
  • the computer may read and execute the program recorded on the recording medium.
  • the computer is a concept including hardware and an operating system, and means hardware that operates under the control of the operating system. Further, when an operating system is unnecessary and hardware is operated by an application program alone, the hardware itself corresponds to a computer.
  • the hardware includes at least a microprocessor such as a CPU and means for reading a computer program recorded on a recording medium.
  • the information processing apparatus 1 has a function as a computer. ing.
  • the key code processing unit 101 When a key code is input, the key code processing unit 101 performs processing for the input key code. That is, with respect to the keys corresponding to the paired make code and break code, for example, referring to the setting of the keyboard layout on the keyboard 105 or the state of the modifier key / lock key, etc., processing is performed as key input of the corresponding character.
  • the key code input is notified to the CPU 10 (key code processing unit 101) by a key interrupt from the keyboard controller 107.
  • the key code processing unit 101 also has functions as a timer 11, a confirmation unit 12, and a determination unit 13.
  • the timer 11 starts measuring the second interval t.
  • the second interval t is longer than the first interval T that is the interval between the make code and the break code in the key code from the scanner 106 described above.
  • the second interval t is shorter than the key matrix scan period (for example, 20 ms) in the keyboard 105.
  • the second interval t is shorter than two of the first intervals T. That is, it is desirable that T ⁇ t ⁇ 2T.
  • the timer 11 When the second interval t elapses, the timer 11 outputs an interrupt (timer interrupt) signal and notifies the CPU 10 (determination unit 13). The timer 11 is retriggered when a make code of a new key code is input in the middle of timing of the second interval t, and starts counting the second interval t from the beginning.
  • the confirmation unit 12 selects a make code corresponding to the key of the input break code from the two make codes stored in the area 151 of the TMP buffer 15. Check if it exists.
  • the confirmation unit 12 confirms whether or not there is a make code that is paired with the input break code in the make codes received up to two previous times.
  • the confirming unit 12 confirms that the make code paired with the input break code exists in the make code received up to the last two times
  • the judging unit 13 receives the make code and break code from the scanner 106. It is determined that the input.
  • the determination unit 13 receives a break code that is paired with the make code from when the make code is input to when the second interval t by the timer 11 is counted, that is, when the break code relating to the same key is received.
  • the make code and break code are determined as input from the scanner 106.
  • the determination unit 13 notifies the make code and the break code determined to be input from the scanner 106 in the order of the make code and the break code. Thereafter, the determination unit 13 stores the make code remaining in the TMP buffer 15 or the break code in the make buffer 161 and the break code in the break buffer 162.
  • the determination unit 13 receives the make code (last make code) stored in the area 151 of the TMP buffer 15 from the keyboard 105. Judge that there is. That is, when the second interval t by the timer 11 is counted after the make code is input, the determination unit 13 determines that the code remaining in the TMP buffer 15 is input from the keyboard 105, and determines those codes as KB. Store in buffer 16.
  • the key code input from the scanner 106 is processed with priority over the key code input from the keyboard 105. That is, the determination unit 13 stores the make code and break code determined to have been input from the keyboard 105 in the KB buffer 16. Then, when the processing of the key code input from the scanner 106 is completed and no key code is input from the scanner 106, the key code input from the keyboard 105 is processed.
  • FIG. 6 is a diagram illustrating processing when a key code is input in the information processing apparatus 1.
  • the key code corresponding to the key input of the character string “FITP” is sequentially input from the scanner 106, and the key input “A” is performed from the keyboard 105 in the middle.
  • “x” means arbitrary key input.
  • step A1 the key code processing unit 101 determines whether or not the input key code is a make code (make). If the input key code is a make code (see YES route in step A1), the make code is stored in the TMP buffer 15 in step A2. In the example shown in FIG. 6, these make codes are stored at the timing when “F”, “A”, “I”, “T”, and “P” make codes are input.
  • step A3 the timer 11 starts measuring the second interval t, and then ends the process.
  • the timer 11 counts the second interval t. Has started. Further, when the next make code is input during the time measurement by the timer 11, the timer 11 is reset and the second interval t is measured from the beginning.
  • step A2 may be performed after step A3 is performed first, or these processes may be performed simultaneously.
  • the confirmation unit 12 stores the message in the TMP buffer 15. Check if the make code corresponding to the break code is stored.
  • the determination unit 13 In the case where the input break code corresponds to the same key as the make code input up to the last two times stored in the area 151 of the TMP buffer 15 (see YES route in step A4), the determination unit 13 These make codes and break codes are determined as input from the scanner 106. In step A ⁇ b> 5, the determination unit 13 moves a code other than the make code that matches the break code stored in the TMP buffer 15 to the KB buffer 16.
  • step A ⁇ b> 6 the key code processing unit 101 notifies the CPU 10 of the make code remaining in the TMP buffer 15.
  • step A7 the key code processing unit 101 retires the make code notified to the CPU 10 from the TMP buffer.
  • step A8 the key code processing unit 101 notifies the CPU 10 of the input break code (break code determined to be a break code in step A1).
  • step A9 The break code is stored in the break buffer 152 of the TMP buffer 15.
  • the break code “A” is stored in the break buffer 152 of the TMP buffer 15. Thereafter, the process ends.
  • step A3 when the timer 11 completes timing of the second interval t started in step A3, a timer interrupt is generated, and the key code of the make buffer 161 of the KB buffer 16 and the break buffer 162 is notified to the CPU 10 in step A10. Is done.
  • the timing of the second interval t is completed and a timer interrupt is performed, and the make code “x” stored in the KB buffer 16 is stored. Have been notified.
  • the scanner 106 and the keyboard 105 are provided as input devices and they are used together, these inputs can be separated. That is, when the confirming unit 12 confirms that the make code paired with the input break code exists in the make code received two times before, the determining unit 13 selects these make code and break code. Are determined to be input from the scanner 106.
  • the determination unit 13 When a make code is paired with the make code from when the make code is input to when the second interval t by the timer 11 is counted, that is, when a break code for the same key is received, the determination unit 13 The make code and break code are determined as input from the scanner 106. Further, when an interrupt signal is input from the timer 11, the determination unit 13 determines that the code remaining in the TMP buffer 15 is input from the keyboard 105. That is, the determination unit 13 determines that the received make code is input from the keyboard 105 when the second interval t by the timer 11 is counted after the make code is input.
  • the processing of the key code input from the scanner 106 can be reliably performed, and reliability is improved. Can be made.
  • the keyboard 105 and the scanner 106 can be shared, which is highly convenient. In this case, a common key code can be used for the scanner 106 and the keyboard 105, which is highly convenient.
  • a conventional application that used the code system of the keyboard 105 as it is can be used as it is, and it is not necessary to create a new program or the like for relaying (piping) input data to the application. Thereby, the effect that it is economical can also be show
  • the second interval t detected by the timer 11 is longer than the first interval T, which is the interval between the make code and break code that form a pair output from the scanner 106.
  • the timer 11 detects that the second interval t has elapsed since the make code was input, it can be determined that the make code is input from the keyboard 105.
  • legacy keyboard emulation using the keyboard controller 107 is realized.
  • the keyboard controller 107 has a circuit compatible with the i8042 (UPI) chip that has been traditionally used in AT compatible machines, and is a method for relaying data obtained from a USB keyboard or mouse using this circuit. .
  • UPI i8042
  • the hardware of the keyboard controller is not provided, but the hardware of the legacy keyboard emulation assist possessed by the chipset is used.
  • the hardware of the legacy keyboard emulation assist possessed by the chipset is used.
  • recent PCs have a device configuration that maintains hardware compatibility with the original IBM PC / AT, and are called legacy-free interfaces such as PS / 2 keyboards, mice, COM ports, and parallel ports. There are things that do not have.
  • USB interface common to various devices is used as an alternative to these interfaces (legacy interface). Then, by connecting a device having a function equivalent to that of a conventional device using a legacy interface to the USB interface, a conventional function is provided. Even in this case, rewriting of application software using these devices is usually unnecessary. This is because a device driver that intervenes between the application software and hardware performs emulation that makes the USB interface look like a legacy interface.
  • Legacy keyboard emulation refers to emulation for maintaining compatibility at the interface circuit level, and is realized by legacy emulation hardware of a keyboard controller or chipset and BIOS software.
  • the keyboard controller circuit may be mounted on a PC as an independent keyboard microcomputer, or may be mounted on a COM or parallel legacy interface called Super IO (SIO) or megacell.
  • SIO Super IO
  • a mobile PC is driven by a battery, and unique control is required for each PC for charge control, power supply, and display input control. For this reason, some kind of microcomputer capable of flexible handling is required as a key point of control.
  • the keyboard controller of the AT compatible machine is originally realized by firmware of 8042 which is a kind of microcomputer having a CPU inside. Therefore, in a mobile PC, control can be realized by including a code for unique control for each PC in addition to the original code of the keyboard controller.
  • ACPI Advanced Power and Configuration Interface
  • EC Embedded Controller
  • keyboard controller or legacy emulation assist hardware
  • it will remain visible to the software as a conventional keyboard / mouse interface circuit.
  • either the keyboard controller or the legacy emulation assist hardware may be used, and which one is used does not affect the effect of the present invention.
  • FIGS. 7 is a flowchart for explaining the process called from the OS (steps B1 to B4)
  • FIG. 8 is a flowchart for explaining the process when an IRQ1 interrupt is generated (step B5)
  • FIG. 9 is a flowchart when an IRQ0 interrupt is generated.
  • 6 is a flowchart (steps B6 to B10) for explaining processing.
  • the strategy routine is for passing the address of a request packet passed to the driver when the OS calls the driver when data is read, written, or controlled.
  • the driver stores the address set in the register (ES, BX) of the CPU 10 in itself (step B1).
  • the driver interrupt routine is not a hardware interrupt but a routine for processing a request to the driver, and the OS calls this routine for all requests such as read, write, and control.
  • the first request made to the device from the OS is a request called INIT for requesting initialization of the device or driver.
  • the fact that the request is INIT is indicated in the request packet when the request is called.
  • the information processing apparatus 1 performs two processes, a key input process and a timer process.
  • IRQ1 INT9 used for key input and IRQ0 (INT8) of timer interrupt are used.
  • the driver checks whether the request is an INIT request (step B2). If the request is an INIT request (see YES route in step B2), the driver records the INT8 address of the vector table and rewrites it to its own timer processing program in order to change the processing of the timer 11 (step B3). ).
  • the driver changes the key input process in response to the INIT request, so write down the address of INT9 in the interrupt vector table and write it to the address of its own key input process program (step B4).
  • Rewriting these interrupt processing programs so that their own programs are processed is called a hook, and the hook is known as a basic OS mechanism for realizing a hierarchical structure of drivers. Note that the processing order of these steps B3 and B4 is not limited to this, and step B3 may be performed after step B4, or these steps B3 and B4 may be performed simultaneously. Can be implemented.
  • the reserved address of INT9 is used as the call destination when passing the make / break code to the OS according to the result of key input judgment in the IRQ1 key input processing or IRQ0 timer processing. Further, when passing this data, the echo back function of the keyboard controller 107 is used. After performing these steps B3 and B4, the driver ends the process and returns to the OS.
  • the driver does not need to exchange data with the OS as a device. Therefore, no request processing is required other than INIT. In other words, if it is not an INIT request (see NO route in step B2), the process returns to the OS without doing anything for other requests.
  • the driver is loaded and INIT is executed, thereafter, whenever an IRQ1 key input interrupt occurs as shown in FIG. 8, the hooked key input processing program of the present invention is executed in step B5. Is done. That is, the process shown in FIG. 5 is performed.
  • the timer 11 is started by inputting the make code in the key input process, the flag a is set to “1” and then the process routine is returned (iret).
  • the hooked interrupt processing routine of the present invention is executed every time the interval timer of IRQ0 (10 ms).
  • step B6 the flag a is confirmed. If the flag a is “1” (see YES route in step B6), the activation state of the timer 11 is recognized.
  • step B7 the flag b is confirmed. If the flag B is “0” (refer to the NO route in step B7), the flag b is toggled to “1” in step B8 (step B8), and the process ends (nesting).
  • step B7 the process at the time of timer interruption (see step A10) shown in FIG. 5 is executed in step B9.
  • the flag a and the flag b are cleared in step B10, and the process is terminated (nesting).
  • the character input interval of the pseudo keyboard / code code / break code pair is within 10 ms.
  • the 1 period of the flag b indicates an interval of 10 ms that is one interval of timer interrupt.
  • FIG. 10 is a diagram illustrating a modification of the configuration of the information processing apparatus 1 as an example of the embodiment.
  • the example shown in FIG. 10 shows a configuration of the information processing apparatus 1 including a USB keyboard 105a and a USB scanner 106a that is a pseudo keyboard that performs input similar to the USB keyboard 105a.
  • the information processing apparatus 1 illustrated in FIG. 10 includes a CPU 10, a RAM 102, a PCH 104a, a keyboard 105a, and a scanner (input device) 106a.
  • the information processing apparatus 1 also includes a ROM, a display, a pointing device, and the like (not shown).
  • the PCH 104a serves as an interface between the CPU 10 and peripheral devices.
  • the PCH 104a includes an enhanced host controller interface (EHCI) 1041 and a rate matching hub (RMH) 1042.
  • the EHCI 1041 and the RMH 1042 are circuits for USB interface control inside the chip set of the PCH 104a.
  • the EHCI 1041 is connected to the internal system bus, and periodically reads a USB scan schedule from a frame list on the RAM 102 by a bus master DMA (not shown).
  • the EHCI 1041 issues a command to a device connected to the USB interface, and implements a transfer mode called USB high speed, which reads and writes data from the device and the buffer in the RAM 102.
  • the RMH 1042 is a hub that expands one high-speed port of the EHCI 1041 to a plurality of ports. In the example shown in FIG. 10, the RMH 1042 is expanded to 4 ports.
  • the RMH 1042 supports all the low speed (1.5 Mbps), full speed (12 Mbps), and high speed (480 Mbps) modes of the USB device connected to the port.
  • the RMH 1042 converts all of its interfaces to a high speed supported by the EHCI 1041, that is, exchanges data by matching the transfer rate supported by the EHCI 1041, and mediates packets with the USB device.
  • USB devices of the class of the keyboard 105a and the scanner 106a are positioned as low-speed devices in the USB specification.
  • the description will be made on the premise of the low speed mode.
  • the flow of schedule information and the flow of data are shown only on the keyboard 105a side, but there is a similar flow on the scanner 106a side.
  • FIG. 11 is a diagram showing scan timing of the USB interface realized by the information processing apparatus 1 shown in FIG.
  • the RMH 1042 continues issuing frame marker signals with a period of 1 ms to notify the bus isochronous transfer period.
  • Man-machine input devices such as the keyboard 105a and the scanner 106a have an interrupt input character. For this reason, in the USB mechanism, it is necessary to always poll (scan) whether there is an input, wait for the input of data, and take the data if there is any, and perform the input in a certain isochronous transfer mode.
  • the polling period is recognized in advance by software based on information from the device.
  • FIG. 11 shows an example in which both the keyboard 105a and the scanner 106a specify a 3 ms polling period corresponding to three 1 ms frame markers.
  • This polling means that an IN token packet is issued because both the keyboard 105a and the scanner 106a are input devices.
  • the frame list on the RAM 102 indicates that an IN packet is issued at an interval of 3 ms and the buffer address when data is input.
  • the EHCI 1041 reads out the frame marker period and issues a packet. When data is obtained, it is stored in a designated buffer.
  • FIG. 11 shows an example in which the key matrix scan of the keyboard 105a is performed at a cycle of 20 ms.
  • the format for notifying the input from the keyboard 105a is determined by the keyboard class specification.
  • FIG. 12 is a diagram showing a format of data for notifying input from the keyboard 105a.
  • the data of the keyboard 105a on the USB interface continues to return the scan code while the key is pressed. That is, it is different from the PS / 2 keyboard style that notifies the make code or break code only at the time of make / break conversion.
  • the USB interface has 6 Key scan codes up to the key can be notified.
  • This input method is the same for the scanner 106a because the scanner 106a takes the form of a pseudo keyboard.
  • an event is sent to the application software by the OS device driver only at the time of make ((Keyup) KeyDown event) and break ((Keydown) KeyUp event), as with the PS / 2 keyboard. Notified and used for it.
  • the key information input from the keyboard 105a and the scanner 106a is not fundamentally different from the character code input via the keyboard controller of the PS / 2 keyboard, except that the input is performed by USB polling scan. This is a legacy keyboard. It is a condition for realization.
  • the information processing apparatus 1 shown in FIG. 10 also uses the same method as the information processing apparatus 1 shown in FIG. 1 to separate the key code from the keyboard 105a and the key code from the scanner 106a from the application software. Needless to say, it can be performed between USB device drivers, and the same effect can be obtained. Regardless of the embodiment described above, various modifications can be made without departing from the spirit of the present invention.
  • the scanners 106 and 106a are provided as input devices.
  • the present invention is not limited to this.
  • a magnetic scanner magnetic card scanner
  • reads information such as a magnetic card. It can be implemented with various modifications.
  • this invention can be implemented and manufactured by those skilled in the art.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

 メークコードとブレークコードとを対で出力するキーボード(105)とメークコードとブレークコードとを第1間隔(T)で対を成して出力する入力装置(106)とが接続されるインタフェース(104)と、メークコードが入力されると、第1間隔よりも長い第2間隔を計時するタイマ(11)と、メークコードが入力されてからタイマ(11)による第2間隔が計時されると、メークコードをキーボード(105)からの入力と判断する判断部(13)と、を備えるように構成することにより、キーボードからの入力と入力装置からの入力とを切り分ける。

Description

情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体
 本発明は、情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体に関する。
 一般に、Personal Computer(PC)にはキーボードが備えられている。キーボードのインタフェースとしては、従来においてはPS/2が用いられてきたが、近年ではUniversal Serial Bus(USB)に置き換わりつつある。
 USBのインタフェースは、従来のPCに備えられていたRS-232Cのシリアルポートやプリンタを接続するパラレルポートに替わるものとして、それらのインタフェースで接続される機器を同じ物理インタフェースで接続することを目指して設けられた。近年のPCの本体には、それら複数の機器を接続するために複数のUSBコネクタが備えられている。
 USBのインタフェースを利用するに際して、Basic Input Output System(BIOS)やデバイスドライバによってエミュレートすることにより、上位ソフトウェアに対して、USBポートをPS/2やRS-232C、パラレルポート等に見える様にする手法が知られている。この手法はOperating System(OS)の標準の機能として備えられているため、インタフェースがUSBになっても、それに接続された機器のソフトウェアをそのまま使用出来、新たに作り変える必要は無い。
 ところで、USBの入力機器として、バーコードリーダや、最近でそれに替わりつつあるQRコード(登録商標)リーダ等が知られている。以下、これらの入力機器を総称して擬似キーボードという場合がある。
 これらの入力機器は、従来はPS/2のインタフェースを用いて接続され、PCのキーボードに代わる入力を行なっていたが、近年では、USBのインタフェースに置き換えられつつある。
 そしてPS/2のインタフェースについても、USBのインタフェースに接続された機器をあたかもPS/2インタフェースに接続されたキーボードに見せかける、レガシィキーボードエミュレーションと呼ぶエミュレーション手法が知られている。
 しかしながら、従来のPCにおいては、PS/2のキーボードインタフェースが物理的に一つしか無かった。従って、キーボードと擬似キーボードとは、例えば、切換スイッチなどで切り換える方法によって接続する方法がとられ、キーボードと擬似キーボードとを同時に使うことは意識されていなかった。
特開2000-10715号公報 特開2000-56907号公報
 しかしながら、インタフェースがUSBに統一され、PCに、複数のUSBを介してキーボードと擬似キーボードとを同時に接続可能となると、これらのキーボード及び擬似キーボードを同時に使いたいと言う要求が必然的に生じる。例えば、工場におけるPCを用いた試験工程において、擬似キーボードを用いた入力とキーボードを用いた入力との両方を行ないたいという要求がある。すなわち、キーボードからの入力と擬似キーボードからの入力とを切り分ける必要が生じている。
 従来のPCにおいて、キーボードからの入力と擬似キーボードからの入力とを切り分ける方法としては、例えば、単純には擬似キーボード機器の出力データ(コード)を特別なものとし、それをキーボードデータと振り分ける方法がある。しかしながら、この方法では、擬似キーボードから入力されるコード体系が従来から用いていたキーボードのコードとは異なるものとなる。これにより、キーボードのコード体系をそのまま使っていた従来のアプリケーションをそのまま使うことが出来なくなる。なお、この問題を解決するためには、新たなプログラムを作って入力データをアプリケーションに中継する方法(パイプ)が考えられる。しかしながら、一般のSystem Engineer(SE)等、システム構築関係者に新たなプログラムを配布運用させることは容易では無い。又、このプログラムを擬似キーボードの製造業者が提供するとして、かかるプログラムの作成及び配布は、ソフトウェアをあまり得意としないそれら業者にあっては大きな負担となる。
 本発明は、このような課題に鑑み創案されたもので、擬似キーボードからの入力をキーボードからの入力と区別して処理できるようにすることを目的とする。
 なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
 このため、この情報処理装置は、1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースと、メークコードが入力されると、前記第1間隔よりも長い第2間隔を計時するタイマと、前記メークコードが入力されてから前記タイマによる前記第2間隔が計時されると、前記メークコードを前記キーボードからの入力と判断する判断部と、をそなえる。
 また、この情報処理装置は、1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースと、入力されたメークコードを少なくとも2つ格納する格納部と、ブレークコードが入力されると、前記格納部において、2つ前までに受信した前記メークコードにおいて、入力された当該ブレークコードと対を成すメークコードが存在するかを確認する確認部と、前記確認部により、前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在することを確認されると、当該メークコード及びブレークコードを前記入力装置からの入力と判断する判断部と、をそなえる。
 さらに、この入力処理方法は、1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえる情報処理装置における入力処理方法であって、メークコードが入力されると、前記第1間隔よりも長い第2間隔の計時を開始するステップと、前記メークコードが入力されてから前記第2間隔が計時されると、前記メークコードを前記キーボードからの入力と判断するステップと、をそなえる。
 また、この入力処理方法は、1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえる情報処理装置における入力処理方法であって、入力されたメークコードを格納部に格納するステップと、ブレークコードが入力されると、前記格納部において、2つ前までに受信した前記メークコードにおいて、入力された当該ブレークコードと対を成すメークコードが存在するかを確認するステップと、前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在することを確認されると、当該メークコード及びブレークコードを前記入力装置からの入力と判断するステップと、をそなえる。
 さらに、この入力処理プログラムは、1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえるコンピュータに、メークコードが入力されると、前記第1間隔よりも長い第2間隔の計時を開始し、前記メークコードが入力されてから前記第2間隔が計時されると、前記メークコードを前記キーボードからの入力と判断する、処理を実行させる。
 また、この入力処理プログラムは、1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえるコンピュータに、入力されたメークコードを格納部に格納し、ブレークコードが入力されると、前記格納部において、2つ前までに受信した前記メークコードにおいて、入力された当該ブレークコードと対を成すメークコードが存在するかを確認し、前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在することを確認されると、当該メークコード及びブレークコードを前記入力装置からの入力と判断する、処理を実行させる。
 さらに、このコンピュータ読取可能な記録媒体は、上述した入力処理プログラムを記録したものである。
 一実施形態によれば、キーボードから入力されるキーコードと入力装置から入力されるキーコードとを切り分けることができる。
実施形態の一例としての情報処理装置の構成を示す図である。 実施形態の一例としての情報処理装置の外観を示す図である。 実施形態の一例としての情報処理装置におけるスキャナが入力するキーコードを例示する図である。 実施形態の一例としての情報処理装置におけるTMPバッファ及びKBバッファの構成を示す図である。 実施形態の一例としての情報処理装置におけるキーコードが入力された場合の処理を説明するフローチャートである。 実施形態の一例としての情報処理装置におけるキーコードが入力された場合の処理を例示する図である。 実施形態の一例としての情報処理装置においてレガシィキーボードエミュレーションを実現する例を説明するフローチャートである。 実施形態の一例としての情報処理装置においてレガシィキーボードエミュレーションを実現する例を説明するフローチャートである。 実施形態の一例としての情報処理装置においてレガシィキーボードエミュレーションを実現する例を説明するフローチャートである。 実施形態の一例としての情報処理装置の構成の変形例を示す図である。 図10に示す情報処理装置によって実現されるUSBインタフェースのスキャンタイミングを示す図である。 キーボードからの入力を通知するデータのフォーマットを示す図である。
 (A)実施形態
 以下、図面を参照して本情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
 図1は実施形態の一例としての情報処理装置1の構成を示す図、図2はその外観を示す図である。情報処理装置1はコンピュータである。
 情報処理装置1は、図2に示すように、2以上のUSBインタフェース20を備え、これらのUSBインタフェース20にキーボード105及びスキャナ106が接続されている。そして、オペレータがこれらのキーボード105及びスキャナ106を介して、種々の入力操作を行なう。
 情報処理装置1は、図1に示すように、Central Processing Unit(CPU)10,Random Access Memory(RAM)102,Read Only Memory(ROM)103,Platform Controller Hub(PCH)104,キーボード(KB)105,スキャナ(入力装置)106,キーボードコントローラ(KBC)107及びディスプレイ(DISP)108を備える。又、本情報処理装置1は、図示しないポインティングデバイス等も備える。
 ROM103は、CPU10が実行するOperating System(OS)やプログラム,種々のデータ等を格納する記憶装置である。RAM(格納部)102は、種々のデータやプログラムを格納する記憶領域であって、CPU10がプログラムを実行する際に、データやプログラムを格納・展開して用いる。又、このRAM102は、後述するキーボード105やスキャナ106から入力されるメークコード(makeデータ)やブレークコード(breakデータ)を格納する、TMPバッファ15及びKBバッファ103として機能する。
 PCH104は、CPU10と周辺機器とのインタフェースを担うものであり、一般にチップセットとして構成される。
 PCH104には複数のUSBインタフェース20が備えられ、キーボード105,スキャナ106及びキーボードコントローラ(KBC)107が接続される。更に、PCH104は、Peripheral Component Interconnect(PCI) Express、シリアルAT Attachment(ATA)、インタフェース機能等を備える。
 キーボード105及び図示しないポインティングデバイスは利用者が各種入力操作を行なう入力装置である。
 ここで、キーボード105は、キャラクタ(文字)に対応する複数のキーをそなえ、オペレータによるキーの押下操作に伴いキーコードを出力する。キーコードには、1つのキーの押下げ時点で発生されるメークコードと、このキーの解放時点で発生され、メークコードと一定の関係を有するブレークコードとが対で定義されている。なお、これらのメークコード及びブレークコードを含むキーコードは、既知の種々の手法で実現することができ、その詳細な説明は省略する。
 スキャナ106は、画像等の読み取り対象を走査して入力データを生成する入力装置であり、例えば、バーコードリーダやQRコードリーダである。本情報処理装置1においては、スキャナ106は、バーコードやQRコードを読み取り、メークコード及びブレークコードを対として含むキーコードを生成し、PCH104を介して入力する。このスキャナ106によって生成されるメークコード及びブレークコードは、キーボード105によって生成されるメークコード及びブレークコードと同じフォーマットを備える。すなわち、スキャナ106は、キーコードを情報処理装置1に入力する擬似キーボードとして機能する。
 図3は実施形態の一例としての情報処理装置におけるスキャナ106が入力するキーコードを例示する図である。この図3においては、スキャナ106から文字列“FITP”のキー入力に相当するキーコードを入力した例を示している。図中、メークコードを単にそのメークコードが示すテキスト“F”,“I”,“T”,“P”で表し、ブレークコードを、そのテキスト上に“○”印を付して表している。
 スキャナ106は、同一のキーに対応する一対のメークコード及びブレークコードを、第1間隔T(例えば、T≦10ms)で連続して出力する。例えば、スキャナ106は、文字“F”を入力する場合には、“F”のメークコードを入力してから第1間隔T後に“F”のブレークコードを入力する。
 キーボードコントローラ107は、キーボード105やスキャナ106とCPU10との間のデータのやり取りを制御する制御装置であり、例えば、Intel 8042である。キーボードコントローラ107は、CPU10との通信を行なうための図示しないデータレジスタ及びステータスレジスタを備える。これらのレジスタはI/O port(0x60,0x64)にマップされていて、CPU10はこれらのアドレスにリード/ライトを行なうことにより、キーボードコントローラ107とのやり取りを行なう。又、キーボード105からの入力はランダムなタイミングで行なわれる。そこで、キーボードコントローラ107は、キーボード105からキーコードを受信すると、図示しない割込みコントローラを介してCPU10に対して割込み(IRQ 1)を発生させる。
 すなわち、図1に例示する情報処理装置1においては、キーボードコントローラ107を用いたレガシィキーボードエミュレーションを実現している。
 レガシィキーボードエミュレーションとは、USBのマウスやキーボードを、AT互換機のPCの伝統的な入力機器であるPS/2キーボードやマウスに見せかけるための技術である。このレガシィキーボードエミュレーションによれば、ソフトウェアからはPS/2キーボードやマウスのインタフェース回路(レジスタ)からキー入力や座標入力の要求があった様に見せかけることができる。これにより、それらのレジスタをアクセスしている従来ソフトウェアがそのまま動作することを可能としている。
 図1に示したキーボードコントローラ107を備えた情報処理装置1においては、キーボードコントローラ107が有するエコーバックの機能によってレガシィキーボードエミュレーションが実現される。エコーバック機能は、キーボードコントローラ107にキーコードデータをセットすると、キーボードコントローラ107が、あたかもキー入力があったかの様に、割り込みを発生し、OSに対してキー入力を通知し、又、キーコードデータの引き取りを促すものである。
 キーボードコントローラ107は、例えば、データレジスタ(60h)とステータスレジスタ(64h)との2つを備える。キー入力を検出すると、キーボードコントローラ107は、そのデータレジスタにキーコードをセットし、ステータスレジスタのOut put Buffer Full (OBF)のビットを“1”として、CPU10に割り込みをかける。OSはキーボードコントローラ107からの割り込みに応答して、データレジスタにセットされたデータをリードして引取る。キーボードコントローラ107はCPU10のデータの引取りを検出すると、OBFをリセットし、これにより一連のキー入力動作が終了する。
 また、キーボードコントローラ107は、前述したエコーバックの機能を備える。エコーバックの機能は、データレジスタに、エコーコマンド(FEh)をライトし、続いてエコーを行なうキーコードをライトする。これによりキーボードコントローラ107はOBFを“1”にセットし、CPU10に割り込み(IRQ1:INT9)を発生する。又、データレジスタにセットされたデータを、キー入力を受けたのと同様のシーケンスによってOSに通知し、それによってOSはセットされたデータの引き取りを行なうことが出来る。
 これにより、レガシィキーボードエミュレーションが可能になる。すなわち、Basic Input Output System(BIOS)やOSは、USBポートに接続された機器の識別情報に基づき、キーボード機器であることを識別すると、それからの入力データをキーボードコントローラ107にセットし、その引き取りをPS/2の従来キーボードと同様に行なうことができる。
 キーボード105やスキャナ106から入力されたメークコードやブレークコードは、RAM102のTMPバッファ15に格納される。
 図4は実施形態の一例としての情報処理装置1におけるTMPバッファ15及びKBバッファ16の構成を示す図である。
 TMPバッファ15は、キーボード105やスキャナ106から入力されたメークコード及びブレークコードを格納するバッファであり、図4に示すように、メークコードを格納する領域151と、ブレークコードを格納する領域152とを備える。
 メークコードを格納する領域151には、2つのメークコードがFirst In, First Out(FIFO)で格納される。すなわち、TMPバッファ15には、最後に入力されたメークコード(1つ前のメークコード)と、その1つ前に入力されたメークコード(2つ前のメークコード)とが格納される。すなわち、このTMPバッファ15が、入力されたメークコードを少なくとも2つ格納する格納部として機能する。又、ブレークコードを格納する領域152には、1つのブレークコードがFIFOで格納される。
 KBバッファ16は、CPU10に通知するメークコード及びブレークコードを格納するバッファであり、図4に示すように、メークコードを格納するメークバッファ161と、ブレークコードを格納するブレークバッファ161とを備える。
 メークバッファ161には、TMPバッファ15の領域151に格納された1つ前のメークコードもしくは2つ前のメークコードのいずれかが格納される。又、ブレークバッファ162には、TMPバッファ15の領域152に格納されたブレークコードが格納される。
 KBバッファ16へのメークコードやブレークコードの格納は、後述する判断部13によって行なわれる。
 ディスプレイ108は、各種情報やメッセージを表示する出力装置である。なお、図2に示す例においては、ディスプレイ108が本情報処理装置1の装置本体と一体に形成されたディスプレイ一体モデルの例を示している。ただし、情報処理装置1のハードウェア構成は、これに限定されるものではなく種々変形して実施することができる。例えば、情報処理装置1がノートPCであってもよく、又、装置本体とディスプレイ108とを別体として構成してもよい。
 CPU10は、種々の制御や演算を行なう処理装置であり、ROM103等に格納されたOSやプログラムを実行することにより、種々の機能を実現する。具体的には、CPU10は、デバイスドライバプログラム(入力処理プログラム)を実行することにより、図1に示すように、タイマ11,確認部12及び判断部13としての機能を備えるキーコード処理部101として機能する。
 なお、このキーコード処理部101としての機能を実現するためのプログラム(デバイスドライバ)は、例えばフレキシブルディスク,CD(CD-ROM,CD-R,CD-RW等),DVD(DVD-ROM,DVD-RAM,DVD-R,DVD+R,DVD-RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って、図示しない内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
 キーコード処理部101としての機能を実現する際には、内部記憶装置(本実施形態ではRAM102やROM103)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU10)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
 なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置1がコンピュータとしての機能を有している。
 キーコード処理部101は、キーコードが入力されると、この入力されたキーコードについての処理を行なう。すなわち、対を成すメークコード及びブレークコードに対応するキーについて、例えば、キーボード105におけるキー配列の設定や修飾キー・ロックキーなどの状態を参照して、該当する文字のキー入力として処理を行なう。
 本情報処理装置1においては、キーコードの入力はキーボードコントローラ107からのキー割込みによりCPU10(キーコード処理部101)に通知される。
 また、キーコード処理部101は、タイマ11,確認部12及び判断部13としての機能を備える。
 タイマ11は、キーボード105もしくはスキャナ106からメークコードが入力されると、第2間隔tの計時を開始する。第2間隔tは、前述したスキャナ106からのキーコードにおけるメークコードとブレークコードとの間隔である第1間隔Tよりも長い。又、第2間隔tは、キーボード105におけるキーマトリクスのスキャン周期(例えば20ms)よりも短い。望ましくは、第2間隔tは、第1間隔Tの2つ分よりも短い。すなわち、T<t<2Tであることが望ましい。
 タイマ11は、第2間隔tが経過すると、割込み(タイマ割込み)信号を出力してCPU10(判断部13)に通知する。
 また、タイマ11は、第2間隔tの計時途中に新たなキーコードのメークコードが入力されるとリトリガされ、第2間隔tの計時を最初からやり直す。
 確認部12は、キーボード105もしくはスキャナ106からブレークコードが入力されると、TMPバッファ15の領域151に格納されている2つのメークコードのうち、入力されたブレークコードのキーに対応するメークコードが存在するかを確認する。
 すなわち、確認部12は、ブレークコードが入力されると、2つ前までに受信したメークコードにおいて、入力されたブレークコードと対を成すメークコードが存在するかを確認する。
 判断部13は、入力されたブレークコードと対を成すメークコードが2つ前までに受信したメークコード内に存在することを確認部12が確認すると、これらのメークコード及びブレークコードをスキャナ106からの入力と判断する。
 また、判断部13は、メークコードが入力されてからタイマ11による第2間隔tが計時されるまでに、そのメークコードと対を成す、すなわち同一のキーにかかるブレークコードを受信すると、これらのメークコード及びブレークコードをスキャナ106からの入力と判断する。
 判断部13は、スキャナ106からの入力と判断したこれらのメークコード及びブレークコードをメークコード、ブレークコードの順に通知する。その後、判断部13は、TMPバッファ15に残ったメークコード、ないしは、ブレークコードについて、メークコードをメークバッファ161に、又、ブレークコードをブレークバッファ162に、それぞれ格納する。
 また、判断部13は、タイマ11から割り込み信号が入力されると、TMPバッファ15の領域151において最後に格納されたメークコード(1つ前のメークコード)を、キーボード105から入力されたものであると判断する。すなわち、判断部13は、メークコードが入力されてからタイマ11による第2間隔tが計時されると、TMPバッファ15に残されたコードをキーボード105からの入力と判断し、それらのコードをKBバッファ16に格納する。
 本情報処理装置1においては、スキャナ106から入力されたキーコードを、キーボード105から入力されたキーコードよりも優先して処理する。すなわち、判断部13は、キーボード105から入力されたと判断したメークコード及びブレークコードをKBバッファ16に格納する。そして、スキャナ106から入力されたキーコードの処理が完了し、スキャナ106からのキーコード入力がない状態において、これらのキーボード105から入力されたキーコードを処理する。
 なお、これに限定されるものではなく、種々変形して実施することができる。例えば、スキャナ106が接続された状態やスキャナ106からのキーコード入力が行なわれている状態では、キーボード105から入力されたキーコードを破棄してもよい。
 上述の如く構成された実施形態の一例としての情報処理装置1におけるキーコードが入力された場合の処理を、図6を参照しながら、図5に示すフローチャート(ステップA1~A10)に従って説明する。図6は本情報処理装置1におけるキーコードが入力された場合の処理を例示する図である。この図6に示す例においては、スキャナ106から文字列“FITP”のキー入力に相当するキーコードが、順次、入力され、又、その途中でキーボード105から“A”のキー入力が行なわれた例を示す。なお、この図6に示す例において、“x”は、任意のキー入力を意味する。
 キーボードコントローラ107からキー割込みが行なわれると、ステップA1において、キーコード処理部101は、入力されたキーコードがメークコード(make)であるか否かを判断する。
 入力されたキーコードがメークコードである場合には(ステップA1のYESルート参照)、ステップA2において、そのメークコードをTMPバッファ15に格納する。図6に示す例においては、“F”,“A”,“I”,“T”,“P”の各メークコードが入力されたタイミングで、これらのメークコードが保存されている。
 ステップA3において、タイマ11は第2間隔tの計時を開始し、その後、処理を終了する。図6に示す例において、“F”,“A”,“I”,“T”,“P”,“x”の各メークコードが入力されると、それぞれタイマ11は第2間隔tの計時を開始している。又、タイマ11による計時途中に次のメークコードが入力されると、タイマ11はリセットされ、第2間隔tの計時を最初から行なう。
 なお、これらのステップA2,A3の順序はこれに限定されるものではなく、先にステップA3を行なってからステップA2を行なってもよく、又、これらの処理を同時に行なってもよい。
 入力されたキーコードがメークコードでない場合(ステップA1のNOルート参照)、すなわち、入力されたキーコードがブレークコードである場合には、ステップA4において、確認部12が、TMPバッファ15に、そのブレークコードに対応するメークコードが格納されているかを確認する。
 入力されたブレークコードが、TMPバッファ15の領域151に格納された2つ前までに入力されたメークコードと同じキーに対応する場合には(ステップA4のYESルート参照)、判断部13は、これらのメークコード及びブレークコードをスキャナ106からの入力と判断する。
 ステップA5において、判断部13は、TMPバッファ15に格納されているブレークコードと一致するメークコード以外のコードをKBバッファ16に移動する。
 そして、ステップA6において、キーコード処理部101は、TMPバッファ15に残されているメークコードをCPU10に通知する。
 ステップA7において、キーコード処理部101は、CPU10に通知したメークコードをTMPバッファからリタイアさせる。
 ステップA8において、キーコード処理部101は、入力されたブレークコード(ステップA1においてブレークコードと判断されたブレークコード:break)をCPU10に通知する。
 これらの処理により、図6において、“F”,“A”,“I”,“T”,“P”の各ブレークコードが入力されると、“F”,“A”,“I”,“T”,“P”の各メークコード及びブレークコードが、CPU10に通知される。なお図6の“(廃棄)”の表現は、オプション動作としてキーボードからのキーコードを保存せず、スキャナのコードと区別して廃棄する場合の例を示す。
 一方、入力されたブレークコードが、TMPバッファ15の領域151に格納された2つ前までに入力されたメークコードのいずれにも対応しない場合には(ステップA4のNOルート参照)、ステップA9において、そのブレークコードをTMPバッファ15のブレークバッファ152に保存する。図6に示す例においては、“A”のブレークコードが入力されると、この“A”のブレークコードがTMPバッファ15のブレークバッファ152に格納されている。その後、処理を終了する。
 また、タイマ11が、ステップA3において開始した第2間隔tの計時を完了すると、タイマ割込みが生成され、ステップA10において、KBバッファ16のメークバッファ161及びブレークバッファ162のキーコードが、CPU10に通知される。図6に示す例においては、“x”のメークコードが入力された後に、第2間隔tの計時が完了してタイマ割込みが行なわれ、KBバッファ16に格納された“x”のメークコードが通知されている。
 このように、実施形態の一例としての情報処理装置1によれば、入力装置としてスキャナ106とキーボード105とを備え、これらを併用する場合において、これらの入力を切り分けることができる。
 すなわち、確認部12が、入力されたブレークコードと対を成すメークコードが、2つ前までに受信したメークコード内に存在することを確認すると、判断部13が、これらのメークコード及びブレークコードをスキャナ106からの入力と判断する。
 また、メークコードが入力されてからタイマ11による第2間隔tが計時されるまでに、そのメークコードと対を成す、すなわち同一のキーにかかるブレークコードを受信すると、判断部13が、これらのメークコード及びブレークコードをスキャナ106からの入力と判断する。
 さらに、タイマ11から割り込み信号が入力されると、判断部13は、TMPバッファ15に残されたコードを、キーボード105から入力されたものであると判断する。すなわち、判断部13は、メークコードが入力されてからタイマ11による第2間隔tが計時されると、その受信したメークコードをキーボード105からの入力と判断する。
 これらにより、例えば、スキャナ106からキーコードを入力している途中にキーボード105からキー入力が行なわれても、スキャナ106から入力されるキーコードの処理を確実に行なうことができ、信頼性を向上させることができる。又、キーボード105とスキャナ106とを共用することができ利便性が高い。
 また、この際、スキャナ106とキーボード105とで共通のキーコードを使用することができ、利便性が高い。例えば、キーボード105のコード体系をそのまま使っていた従来のアプリケーションをそのまま使うことが出来、入力データをアプリケーションに中継する(パイプ)ための新たなプログラム等を作成する必要がない。これにより、経済的であるという効果も奏することができる。
 さらに、タイマ11が検知する第2間隔tが、スキャナ106から出力される対を成すメークコードとブレークコードとのとの間隔である第1間隔Tよりも長い。これにより、タイマ11がメークコードが入力されてから第2間隔tの経過を検知した場合に、そのメークコードがキーボード105からの入力であると判断することができる。
 さて、前述の如く、本情報処理装置1においては、キーボードコントローラ107を用いたレガシィキーボードエミュレーションを実現している。
 一般に、レガシィキーボードエミュレーションとしては二つの実現方法が知られている。第1の実現方法としては、図1に示したような、キーボードコントローラ107を用いる手法である。キーボードコントローラ107は、AT互換機で伝統的に使われて来たi8042(UPI)チップと互換の回路を備え、この回路を使ってUSBキーボやマウスから得られたデータを中継入力する方法である。
 第2の実現方法としては、キーボードコントローラのハードウェアは備えず、チップセットの持つレガシィキーボードエミュレーションアシストのハードウェアを使って行なう方法である。
 ところで、近年のPCには、当初のIBM社PC/ATとのハードウェア互換を保った機器構成を有するものと、レガシィフリーと呼ぶ、PS/2キーボードやマウス、COMポート、パラレルポートなどのインタフェースを備えないものとがある。
 レガシィフリーのPCではこれらのインタフェース(レガシィインタフェース)の代替として、種々の機器に共通のUSBインタフェースが用いられる。そして、このUSBインタフェースにレガシィのインタフェースを使った従来の機器と同等の機能を有する機器を接続することで、従来通りの機能が提供される。
 この場合においても、それら機器を使ったアプリケーションソフトウェアの書き換えは通常は不要である。これはアプリケーションソフトウェアとハードウェアとの間で両者のやりとりを介在するデバイスドライバがUSBインタフェースをレガシィのインタフェースに見せかけるエミュレーションを行なうからである。
 しかしながら、キーボードやマウス等、一般にブートデバイスと呼ばれるデバイスは、OSの立ち上げ作業の段階で元々必要とされる。従って、これらのデバイスに関しては、OSの配下のデバイスドライバによるエミュレートはそもそも期待出来ず、インタフェース回路のレベルでの互換が求められる。
 レガシィキーボードエミュレーションとは、このインタフェース回路レベルでの互換を維持するためのエミュレーションを指し、キーボードコントローラやチップセットのレガシィエミュレーションのハードウェアとBIOSのソフトウェアによって実現される。
 キーボードコントローラの回路は独立したキーボードマイコンとしてPCに実装される場合と、Super IO (SIO)やメガセルと呼ばれる、COMやパラレルのレガシィなインフェースとにまとめたチップとして実装される場合がある。
 一般にモバイルPCでは、電池駆動を行ない、それの充電制御や電源、表示入力制御にPC毎にユニークな制御が必要とされる。そのため、制御の要として柔軟な対応の可能な何らかのマイコンが必要とされている。AT互換機のキーボードコントローラは元々、内部にCPUを備えたある種のマイコンである8042のファームウェアによって実現されている。そのため、モバイルPCではキーボードコントローラ本来のコードに追加する形でPC毎のユニークな制御のためのコードを盛り込んで制御を実現出来る。
 このためモバイルPCではキーボードマイコンとして独立して実装する場合が多い。又、キーボードコントローラのインタフェース回路を、キーボードやマウスからのデータ入力以外の、何らかの制御の目的に使用することは、Windows(登録商標)システムのベースである、Advanced Power and Configuration Interface (ACPI)仕様の実装でも想定されている。ACPIでは、それの仕様によって実現される、例えば明るさセンサなど、諸機能のハードウェア制御機能を実装したキーボードコントローラのことをEmbedded Controller (EC)と呼ぶ。
 キーボードコントローラとレガシィエミュレーションアシストのハードウェアとのどちらを使うにしても、それによってソフトウェアからは従来のキーボード/マウスのインタフェース回路として見えることは変わらない。すなわち、キーボードコントローラとレガシィエミュレーションアシストのハードウェアとのどちらを用いてもよく、どちらを用いるかで本発明の効果に影響を与えるものでは無い。
 次に、実施形態の一例としての情報処理装置1において、DOSのデバイスドライバ(ドライバ)でレガシィキーボードエミュレーションを実現する例を、図7~図9に示すフローチャートに従って説明する。なお、図7はOSからコールされた処理を説明するフローチャート(ステップB1~B4)、図8はIRQ1の割込み発生時の処理を説明するフローチャート(ステップB5)、図9はIRQ0の割込み発生時の処理を説明するフローチャート(ステップB6~B10)である。
 DOSのドライバのOSからコールされるエントリポイントには、ステラテジィルーチン、割り込みルーチンの2つがある。ステラテジィルーチンとは、OSがデータのリードやライト、コントロールなどに際してドライバをコールしたときに渡されるリクエストパケットのアドレスをドライバに渡すためのものである。ドライバはこのルーチンがコールされると、CPU10のレジスタ(ES、BX)にセットされたアドレスを自身に保存する(ステップB1)。
 ドライバの割り込みルーチンとはハードウェア割り込みのことでは無く、ドライバに対するリクエストを処理するためのルーチンのことで、OSは、リードやライト,コントロール等のリクエストは、全てこのルーチンをコールする。
 OSからの最初にデバイスに対して行なわれるリクエストは、INITと呼ばれる、デバイスやドライバの初期化を要求するためのリクエストである。なお、リクエストがINITであることはリクエストがコールされたときのリクエストパケットに示されている。
 本情報処理装置1においては、キー入力処理とタイマ処理との2つの処理を行なうものであり、図7~図9においては、キー入力に使われるIRQ1(INT9)と、タイマ割り込みのIRQ0(INT8)とを使う例を示している。
 一方、割込みルーチンがコールされると、ドライバはINITのリクエストであるか否かを確認する(ステップB2)。INITのリクエストである場合には(ステップB2のYESルート参照)、ドライバは、タイマ11の処理変更を行なうため、ベクタテーブルのINT8のアドレスを控え、同様に自身のタイマ処理プログラムに書き換える(ステップB3)。
 また、ドライバはINITのリクエストによって、キー入力の処理変更を行なうため、割り込みベクタテーブルのINT9のアドレスを控え、それに替えて自身のキー入力処理のプログラムのアドレスに書き込む(ステップB4)。これらの割り込み処理プログラムを書き換え、自身のプログラムが処理される様にすることをフックと言い、フックはドライバの階層構造を実現する基本的なOSの仕組みとして知られている。なお、これらのステップB3,B4の処理順序はこれに限定されるものではなく、ステップB4の後にステップB3を行なったり、又、これらのステップB3とステップB4とを同時に行なってもよく、種々変形して実施することができる。
 INT9の控えられたアドレスは、IRQ1のキー入力処理や、IRQ0のタイマ処理で、キー入力の判定の結果によって、OSにメーク、ブレークのコードを渡すときのコール先として使われる。またこのデータを渡すときは、キーボードコントローラ107のエコーバックの機能を使用する。ドライバは、これらのステップB3,B4を行なった後、処理を終了しOSに戻る。
 また、ドライバはデバイスとしてOSとデータをやり取りする必要は無い。このため、INIT以外にリクエストの処理は必要無い。すなわち、INITのリクエストではない場合には(ステップB2のNOルート参照)、これ以外のリクエストに関しては何もせずOSに戻る。
 ドライバがロードされ、INITが実行されると、それ以降は、図8に示すように、IRQ1のキー入力の割り込みが起こるたび、ステップB5において、フックした本発明のキー入力の処理のプログラムが実行される。すなわち、図5に示した処理が行なわれる。キー入力処理でメークコードが入力されることにより、タイマ11が起動されるときには、フラグaを“1”とした後、処理ルーチンから戻る(iret)。
 一方、フックした本発明の割り込み処理ルーチンは、図9に示すように、IRQ0(10ms)のインターバルタイマのたびに実行される。
 ステップB6において、フラグaを確認する。このフラグaが“1”であれば(ステップB6のYESルート参照)、タイマ11の起動状態を認識する。次に、ステップB7において、フラグbを確認する。フラグBが“0”であれば(ステップB7のNOルート参照)、ステップB8において、フラグbを“1”にトグルし(ステップB8)、処理を終了する(ネスト)。
 一方、フラグBが“1”である場合には(ステップB7のYESルート参照)、ステップB9において、図5に示した、タイマ割込み時の処理(ステップA10参照)を実行する。このタイマ割込み時の処理を終えると、ステップB10において、フラグa,フラグbをクリアして、処理を終了する(ネスト)。
 なお、前述の如く、本実施携帯においては、擬似キーボードのメ(イ)―クコード/ブレークコードのペアの文字入力の間隔を10ms以内であることを想定している。そして、フラグbの1の期間はタイマ割り込みの1回のインターバルである10msの間隔を示す。
 (B)変形例
 上述した実施形態においては、キー入力をレシィキーボードエミュレーションで行なう例について示したが、これに限定されるものではなく、種々変形して実施することができる。例えば、キー入力をUSB本来の形で行なってもよい。
 図10は実施形態の一例としての情報処理装置1の構成の変形例を示す図である。この図10に示す例においては、USBキーボード105aと、このUSBキーボード105aを模して入力を行なう擬似キーボードであるUSBスキャナ106aとを備える情報処理装置1の構成を示す。
 すなわち、図10に示す例においては、レガシィキーボードエミュレーションを使わずに、USBインタフェースのままで本発明を実施する。なお、USBのままのインタフェースによって機器を活用するのに好適なOSとしてWindowsを想定している。
 図10に示す情報処理装置1は、CPU10,RAM102,PCH104a,キーボード105a及びスキャナ(入力装置)106aを備える。又、本情報処理装置1は、図示しないROMやディスプレイ,ポインティングデバイス等も備える。
 なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。
 PCH104aは、CPU10と周辺機器とのインタフェースを担う。PCH104aは、Enhanced Host Controller Interface(EHCI)1041及びRate Matching Hub(RMH)1042を備える。EHCI1041及びRMH1042は、PCH104aのチップセット内部のUSBインタフェース制御のための回路である。EHCI1041は、内部システムバスに接続され、図示しないバスマスタDMAによってRAM102上のフレームリストからUSBのスキャンスケジュールを周期的に読み出す。EHCI1041は、USBインタフェースに接続されたデバイスにコマンドを発行し、デバイスとRAM102上のバッファのデータを読み書きする、USBのハイスピードと呼ぶ転送モードを実現する。
 RMH1042は、EHCI1041のハイスピードの1ポートを複数ポートに拡張するハブである。図10に示す例では、RMH1042は、4ポートに拡張している。
 RMH1042は、そのポートに接続されたUSBデバイスの、ロウスピード(1.5Mbps),フルスピード(12Mbps)及びハイスピード(480Mbps)の全てのモードに対応する。RMH1042は、そのインタフェースを全てEHCI1041のサポートするハイスピードに変換して、つまりEHCI1041のサポートする転送レートにレートマッチングしてやりとりし、USBデバイスとのパケットの仲介を行なう。
 キーボード105aやスキャナ106aのクラスのUSBデバイスは、USBの仕様上のロウスピードのデバイスに位置付けられている。以下、ロウスピードのモードを前提として説明を行なう。
 なお、図10に示す例では、便宜上、キーボード105a側だけにスケジュール情報の流れとデータの流れを示しているが、スキャナ106a側にも同様の流れがある。
 図11は図10に示す情報処理装置1によって実現されるUSBインタフェースのスキャンタイミングを示す図である。
 ロウスピードのデバイスに対しては、RMH1042は1msの周期のフレームマーカー信号を発行し続けて、バスのアイソクロナス転送の周期を通知する。キーボード105aやスキャナ106a等のマンマシン系入力機器は、割り込み入力的性格を有する。そのため、USBの仕組みでは、入力があるかどうかを常にポーリング(スキャン)してデータの入力を待ち、データがあればそれを引き取る、ある種のアイソクロナス転送のモードによって入力を行なう必要がある。又、そのポーリングの周期はデバイスからの情報によってソフトウェアに予め認識される。
 図11においては、キーボード105a及びスキャナ106aのどちらのデバイスも、1msのフレームマーカー3つ分の、3msのポーリング周期を指定している例を示す。又、このポーリングとは、デバイスがキーボード105aとスキャナ106aとのどちらも入力デバイスであるため、INのトークンパケット発行の意味になる。
 RAM102上のフレームリストには、INのパケットを3ms間隔で発行することや、データが入力された場合のバッファのアドレスが示される。EHCI1041は、フレームマーカーの周期でこれを読み出し、パケットを発行する。又、データが得られるとそれを指定のバッファに格納する。
 キーボード105aやスキャナ106aのデバイスとRMH1042のUSBホストとのやりとりは、キーボード105aやスキャナ106aからの入力が無ければINのパケットに対してNACKが返され、入力があるとDATAのパケットが返される。
 図11においては、キーボード105aのキーマトリクスのスキャンは20msの周期で行なわれている例を示す。又、キーボード105aからの入力を通知するフォーマットはキーボードクラス仕様で決められている。
 図12はキーボード105aからの入力を通知するデータのフォーマットを示す図である。
 USBインタフェース上での キーボード105aのデータは、キー押下が発生すると、そのスキャンコードをキーが押されている間中返し続ける。すなわち、メーク、ブレークの変換時点でのみメークコードもしくはブレークコードを通知するPS/2キーボードのスタイルとは異なる。
 図12に示すように、ShiftキーやControlキーのような、文字キーとの同時押下で使われる修飾キー(モディファイアキー)のデータとしてフラグ形式で通知されるキーを除くと、USBのインタフェースでは6キー分までのキーのスキャンコードの通知を行なうことができる。この入力方法は、スキャナ106aが疑似キーボードとしての体裁をとっているため、スキャナ106aに於いても同様である。
 キー情報がRAM102に取り込まれると、OSのデバイスドライバによって、PS/2のキーボードと同様に、メーク((Keyup)KeyDownイベント)、ブレーク((Keydown)KeyUpイベント)時点に限定してアプリケーションソフトウェアにイベント通知され、それに利用される。
 キーボード105aやスキャナ106aからのキー情報の入力はUSBのポーリングのスキャンによって取り込まれる点を除けば、PS/2キーボードのキーボードコントローラを介した文字コード入力と根本的に変わらないし、このことがレガシィキーボード実現の条件になっている。
 従って、図10に示した情報処理装置1においても、図1に示した情報処理装置1と同様の方法で、キーボード105aからのキーコードとスキャナ106aからのキーコードとのふるい分けを、アプリケーションソフトウェアとUSBデバイスドライバの間で行なうことができ、又、これにより同様の効果を奏することができることは言うまでもない。
 なお、上述した実施形態に関わらず、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
 例えば、上述した実施形態及び変形例においては、入力装置としてスキャナ106,106aを備えているが、これに限定されるものではなく、例えば、磁気カード等の情報を読み取る磁気スキャナ(磁気カードスキャナ)等、種々変形して実施することができる。
 なお、本発明の各実施形態が開示されていれば、本発明を当業者によって実施・製造することが可能である。
 1  情報処理装置,PC
 10  CPU
 11  タイマ
 12  確認部
 13  判断部
 15  TMPバッファ
 16  KBバッファ
 101  キーコード処理部
 102  RAM
 103  ROM
 104,104a  PCH
 105,105a  キーボード
 106,106a  スキャナ
 107  キーボードコントローラ
 108  ディスプレイ
 151,152  領域
 161  メークバッファ
 162  ブレークバッファ
 1041  EHCI
 1042  RMH

Claims (16)

  1.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースと、
     メークコードが入力されると、前記第1間隔よりも長い第2間隔を計時するタイマと、
     前記メークコードが入力されてから前記タイマによる前記第2間隔が計時されると、前記メークコードを前記キーボードからの入力と判断する判断部と、
    をそなえることを特徴とする情報処理装置。
  2.  前記判断部が、
     前記メークコードが入力されてから前記タイマによる前記第2間隔が計時されるまでに、当該メークコードと対を成すブレークコードを受信すると、前記メークコード及びブレークコードを前記入力装置からの入力と判断する、
    ことを特徴とする請求項1記載の情報処理装置。
  3.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースと、
     入力されたメークコードを少なくとも2つ格納する格納部と、
     ブレークコードが入力されると、前記格納部において、2つ前までに受信した前記メークコードにおいて、入力された当該ブレークコードと対を成すメークコードが存在するかを確認する確認部と、
     前記確認部により、前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在することを確認されると、当該メークコード及びブレークコードを前記入力装置からの入力と判断する判断部と、
    をそなえることを特徴とする情報処理装置。
  4.  前記判断部が、前記確認部により、前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在しないことを確認されると、当該メークコード及びブレークコードを前記キーボードからの入力と判断する判断部と、
    をそなえることを特徴とする、請求項3記載の情報処理装置。
  5.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえる情報処理装置における入力処理方法であって、
     メークコードが入力されると、前記第1間隔よりも長い第2間隔の計時を開始するステップと、
     前記メークコードが入力されてから前記第2間隔が計時されると、前記メークコードを前記キーボードからの入力と判断するステップと、
    をそなえることを特徴とする入力処理方法。
  6.  前記メークコードが入力されてから前記第2間隔が計時されるまでに、当該メークコードと対を成すブレークコードを受信すると、前記メークコード及びブレークコードを前記入力装置からの入力と判断する、
    ことを特徴とする請求項5記載の入力処理方法。
  7.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえる情報処理装置における入力処理方法であって、
     入力されたメークコードを格納部に格納するステップと、
     ブレークコードが入力されると、前記格納部において、2つ前までに受信した前記メークコードにおいて、入力された当該ブレークコードと対を成すメークコードが存在するかを確認するステップと、
     前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在することを確認されると、当該メークコード及びブレークコードを前記入力装置からの入力と判断するステップと、
    をそなえることを特徴とする入力処理方法。
  8.  前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在しないことを確認されると、当該メークコード及びブレークコードを前記キーボードからの入力と判断するステップと、
    をそなえることを特徴とする請求項7記載の入力処理方法。
  9.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえるコンピュータに、
     メークコードが入力されると、前記第1間隔よりも長い第2間隔の計時を開始し、
     前記メークコードが入力されてから前記第2間隔が計時されると、前記メークコードを前記キーボードからの入力と判断する、
    処理を実行させることを特徴とする入力処理プログラム。
  10.  前記メークコードが入力されてから前記第2間隔が計時されるまでに、当該メークコードと対を成すブレークコードを受信すると、前記メークコード及びブレークコードを前記入力装置からの入力と判断する、
    処理を前記コンピュータに実行させることを特徴とする請求項9記載の入力処理プログラム。
  11.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえるコンピュータに、
     入力されたメークコードを格納部に格納し、
     ブレークコードが入力されると、前記格納部において、2つ前までに受信した前記メークコードにおいて、入力された当該ブレークコードと対を成すメークコードが存在するかを確認し、
     前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在することを確認されると、当該メークコード及びブレークコードを前記入力装置からの入力と判断する、
    処理を実行させる入力処理プログラム。
  12.  前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在しないことを確認されると、当該メークコード及びブレークコードを前記キーボードからの入力と判断する、
    処理を前記コンピュータに実行させることを特徴とする請求項11記載の入力処理プログラム。
  13.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえるコンピュータに、
     メークコードが入力されると、前記第1間隔よりも長い第2間隔の計時を開始し、
     前記メークコードが入力されてから前記第2間隔が計時されると、前記メークコードを前記キーボードからの入力と判断する、
    処理を実行させる入力処理プログラムを記録したコンピュータ読取可能な記録媒体。
  14.  前記メークコードが入力されてから前記第2間隔が計時されるまでに、当該メークコードと対を成すブレークコードを受信すると、前記メークコード及びブレークコードを前記入力装置からの入力と判断する、
    処理を前記コンピュータに実行させることを特徴とする請求項13記載の入力処理プログラムを記録したコンピュータ読取可能な記録媒体。
  15.  1つのキーの押下げ時点で発生されるメークコードと、該キーの解放時点で発生され、該メークコードと一定の関係を有するブレークコードとを対で出力するキーボードと、前記メークコードと前記ブレークコードとを第1間隔で対を成して出力する入力装置とが接続されるインタフェースをそなえるコンピュータに、
     入力されたメークコードを格納部に格納し、
     ブレークコードが入力されると、前記格納部において、2つ前までに受信した前記メークコードにおいて、入力された当該ブレークコードと対を成すメークコードが存在するかを確認し、
     前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在することを確認されると、当該メークコード及びブレークコードを前記入力装置からの入力と判断する、
    処理を実行させる入力処理プログラムを記録したコンピュータ読取可能な記録媒体。
  16.  前記2つ前までに受信したメークコードにおいて、前記入力されたブレークコードと対を成すメークコードが存在しないことを確認されると、当該メークコード及びブレークコードを前記キーボードからの入力と判断する、
    処理を前記コンピュータに実行させることを特徴とする請求項15記載の入力処理プログラムを記録したコンピュータ読取可能な記録媒体。
PCT/JP2012/069455 2012-07-31 2012-07-31 情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体 WO2014020696A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014527867A JP5794390B2 (ja) 2012-07-31 2012-07-31 情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体
PCT/JP2012/069455 WO2014020696A1 (ja) 2012-07-31 2012-07-31 情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/069455 WO2014020696A1 (ja) 2012-07-31 2012-07-31 情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体

Publications (1)

Publication Number Publication Date
WO2014020696A1 true WO2014020696A1 (ja) 2014-02-06

Family

ID=50027427

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/069455 WO2014020696A1 (ja) 2012-07-31 2012-07-31 情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体

Country Status (2)

Country Link
JP (1) JP5794390B2 (ja)
WO (1) WO2014020696A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06161629A (ja) * 1992-11-18 1994-06-10 Pfu Ltd キーボード電源制御方式
JPH0736594A (ja) * 1993-07-20 1995-02-07 Internatl Business Mach Corp <Ibm> 信号入力装置及び信号入力方法
JPH07261901A (ja) * 1994-03-16 1995-10-13 Hitachi Ltd インタフェース変換装置およびこれを備えたキーボード装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07334373A (ja) * 1993-12-24 1995-12-22 Seiko Epson Corp エミュレートシステム及びエミュレート方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06161629A (ja) * 1992-11-18 1994-06-10 Pfu Ltd キーボード電源制御方式
JPH0736594A (ja) * 1993-07-20 1995-02-07 Internatl Business Mach Corp <Ibm> 信号入力装置及び信号入力方法
JPH07261901A (ja) * 1994-03-16 1995-10-13 Hitachi Ltd インタフェース変換装置およびこれを備えたキーボード装置

Also Published As

Publication number Publication date
JP5794390B2 (ja) 2015-10-14
JPWO2014020696A1 (ja) 2016-07-11

Similar Documents

Publication Publication Date Title
EP1271332B1 (en) A multifunction semiconductor storage device
CN100592271C (zh) 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法
JP3026796B1 (ja) コンピュータと周辺デバイスの接続装置および接続方法
US9858235B2 (en) Emulated legacy bus operation over a bit-serial bus
TW201027295A (en) Methods to communicate a timestamp to a storage system
US20120159136A1 (en) Computer system boot enhancements with user override
WO2024051122A1 (zh) 一种PCIe中断处理方法、装置、设备及非易失性可读存储介质
JP2010519606A (ja) ソフトウェアを使用したエミュレーションにより光記憶装置及び/又はリムーバブルディスクとして実行されるコンピュータ周辺機器及びその実行方法
US7644222B2 (en) Low latency event communication system and method
TW201027338A (en) External storage device having a self-contained security function
JP3964142B2 (ja) エミュレート装置及び部品、情報処理装置、エミュレーション方法、記録媒体、プログラム
TW201229770A (en) Operation method for a computer system
EP3707597B1 (en) Bitwise writing apparatus for system-on-chip system
CN111124985A (zh) 一种移动终端只读控制方法及装置
Woods et al. Groundhog-a serial ata host bus adapter (hba) for fpgas
US20040210681A1 (en) Streamlining ATA device initialization
TW201112130A (en) Controllers and methods for controlling data transfer, and electronic systems
US20090172214A1 (en) Usb host controller
JP5794390B2 (ja) 情報処理装置、入力処理方法、入力処理プログラム及び入力処理プログラムを記録したコンピュータ読取可能な記録媒体
JP4404023B2 (ja) データ転送制御装置及び電子機器
US8214569B2 (en) Method for reading and writing non-standard register of serial advanced technology attachment (SATA) device
JP4576082B2 (ja) メモリカードコントローラ及びメモリカードコントロール方法
CN101976230A (zh) 通用序列总线传输转译器及输入请求同步传输方法
US7694004B2 (en) Bit-granular writes of control registers
CN209690902U (zh) 一种共享打印机的usb接口

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12882289

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014527867

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12882289

Country of ref document: EP

Kind code of ref document: A1