consoleinputstream.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 71 行

JAVA
71
字号
/*
 * $Id: ConsoleInputStream.java,v 1.1 2003/11/25 11:42:10 epr Exp $
 */
package org.jnode.driver.console;

import java.io.IOException;
import java.io.InputStream;

import org.jnode.driver.input.KeyboardEvent;
import org.jnode.driver.input.KeyboardListener;
import org.jnode.util.Queue;

/**
 * @author epr
 */
public class ConsoleInputStream extends InputStream implements KeyboardListener {
	
	private final Queue queue = new Queue();
	private boolean echo = false;

	public ConsoleInputStream(Console console) {
		console.addKeyboardListener(this);
	}

	/**
	 * @see java.io.InputStream#available()
	 * @return Available bytes
	 * @throws IOException
	 */
	public int available() throws IOException {
		return queue.size();
	}

	/**
	 * @see java.io.InputStream#read()
	 * @return int
	 * @throws IOException
	 */
	public int read() throws IOException {
		while (true) {
			KeyboardEvent event = (KeyboardEvent)queue.get();
			if (!event.isConsumed()) {
				event.consume();
				char ch = event.getKeyChar();
				if (ch != 0) {
					if (echo) {
						System.out.print(ch); 
					}
					return ch;
				}
			}
		}
	}

	/**
	 * @param event
	 * @see org.jnode.driver.input.KeyboardListener#keyPressed(org.jnode.driver.input.KeyboardEvent)
	 */
	public void keyPressed(KeyboardEvent event) {
		//log.debug("got event(" + event + ")");
		queue.add(event);
	}

	/**
	 * @param event
	 * @see org.jnode.driver.input.KeyboardListener#keyReleased(org.jnode.driver.input.KeyboardEvent)
	 */
	public void keyReleased(KeyboardEvent event) {
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?