/** * Created : July 27, 2012 * * @author pquiring */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javaforce.*; import javaforce.linux.*; public class KeyboardWindow extends javax.swing.JWindow implements ActionListener, LayoutManager { /** * Creates new form Keyboard */ public KeyboardWindow() { initComponents(); setLayout(this); x11id = Linux.x11_get_id(this); JFLog.log("Keyboard.window=0x" + Long.toString(x11id, 16)); Linux.x11_set_dock(x11id); initTable(); hide.setIcon(IconCache.loadIcon("jfdesktop-keyboard-down")); setAlwaysOnTop(true); toFront(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanel1 = new javax.swing.JPanel(); q = new javax.swing.JButton(); w = new javax.swing.JButton(); e = new javax.swing.JButton(); r = new javax.swing.JButton(); t = new javax.swing.JButton(); y = new javax.swing.JButton(); u = new javax.swing.JButton(); i = new javax.swing.JButton(); o = new javax.swing.JButton(); p = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); a = new javax.swing.JButton(); s = new javax.swing.JButton(); d = new javax.swing.JButton(); f = new javax.swing.JButton(); g = new javax.swing.JButton(); h = new javax.swing.JButton(); j = new javax.swing.JButton(); k = new javax.swing.JButton(); l = new javax.swing.JButton(); backspace = new javax.swing.JButton(); jPanel3 = new javax.swing.JPanel(); shift = new javax.swing.JToggleButton(); z = new javax.swing.JButton(); x = new javax.swing.JButton(); c = new javax.swing.JButton(); v = new javax.swing.JButton(); b = new javax.swing.JButton(); n = new javax.swing.JButton(); m = new javax.swing.JButton(); enter = new javax.swing.JButton(); jPanel4 = new javax.swing.JPanel(); mode = new javax.swing.JButton(); comma = new javax.swing.JButton(); space = new javax.swing.JButton(); period = new javax.swing.JButton(); hide = new javax.swing.JButton(); setAlwaysOnTop(true); setName("keyboard"); getContentPane().setLayout(new java.awt.GridLayout(4, 1)); jPanel1.setLayout(new java.awt.GridLayout(1, 0)); q.setText("q"); jPanel1.add(q); w.setText("w"); jPanel1.add(w); e.setText("e"); jPanel1.add(e); r.setText("r"); jPanel1.add(r); t.setText("t"); jPanel1.add(t); y.setText("y"); jPanel1.add(y); u.setText("u"); jPanel1.add(u); i.setText("i"); jPanel1.add(i); o.setText("o"); jPanel1.add(o); p.setText("p"); jPanel1.add(p); getContentPane().add(jPanel1); jPanel2.setLayout(new java.awt.GridLayout(1, 0)); a.setText("a"); jPanel2.add(a); s.setText("s"); jPanel2.add(s); d.setText("d"); jPanel2.add(d); f.setText("f"); jPanel2.add(f); g.setText("g"); jPanel2.add(g); h.setText("h"); jPanel2.add(h); j.setText("j"); jPanel2.add(j); k.setText("k"); jPanel2.add(k); l.setText("l"); jPanel2.add(l); backspace.setText("<"); backspace.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { backspaceActionPerformed(evt); } }); jPanel2.add(backspace); getContentPane().add(jPanel2); jPanel3.setLayout(new java.awt.GridLayout(1, 0)); shift.setText("Shift"); jPanel3.add(shift); z.setText("z"); jPanel3.add(z); x.setText("x"); jPanel3.add(x); c.setText("c"); jPanel3.add(c); v.setText("v"); jPanel3.add(v); b.setText("b"); jPanel3.add(b); n.setText("n"); jPanel3.add(n); m.setText("m"); jPanel3.add(m); enter.setText("Enter"); enter.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { enterActionPerformed(evt); } }); jPanel3.add(enter); getContentPane().add(jPanel3); jPanel4.setLayout(new java.awt.GridLayout(1, 0)); mode.setText("?123"); mode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { modeActionPerformed(evt); } }); jPanel4.add(mode); comma.setText(","); jPanel4.add(comma); space.setText("Space"); space.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { spaceActionPerformed(evt); } }); jPanel4.add(space); period.setText("."); jPanel4.add(period); hide.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hideActionPerformed(evt); } }); jPanel4.add(hide); getContentPane().add(jPanel4); pack(); }// </editor-fold>//GEN-END:initComponents private void modeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_modeActionPerformed symMode = !symMode; if (symMode) { mode.setText("ABC"); } else { mode.setText("?123"); } for(int idx=0;idx<table.length;idx++) { JButton button = (JButton)table[idx][0]; button.setText((String)table[idx][symMode ? 2 : 1]); } }//GEN-LAST:event_modeActionPerformed private void spaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_spaceActionPerformed int keycode = Linux.x11_keysym_to_keycode(' '); Linux.x11_send_event(keycode, true); JF.sleep(10); Linux.x11_send_event(keycode, false); }//GEN-LAST:event_spaceActionPerformed private void hideActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_hideActionPerformed Dock.dock.hideKeyboard(); }//GEN-LAST:event_hideActionPerformed private void backspaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backspaceActionPerformed Linux.x11_send_event(22, true); JF.sleep(10); Linux.x11_send_event(22, false); }//GEN-LAST:event_backspaceActionPerformed private void enterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enterActionPerformed Linux.x11_send_event(36, true); JF.sleep(10); Linux.x11_send_event(36, false); }//GEN-LAST:event_enterActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton a; private javax.swing.JButton b; private javax.swing.JButton backspace; private javax.swing.JButton c; private javax.swing.JButton comma; private javax.swing.JButton d; private javax.swing.JButton e; private javax.swing.JButton enter; private javax.swing.JButton f; private javax.swing.JButton g; private javax.swing.JButton h; private javax.swing.JButton hide; private javax.swing.JButton i; private javax.swing.JButton j; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JButton k; private javax.swing.JButton l; private javax.swing.JButton m; private javax.swing.JButton mode; private javax.swing.JButton n; private javax.swing.JButton o; private javax.swing.JButton p; private javax.swing.JButton period; private javax.swing.JButton q; private javax.swing.JButton r; private javax.swing.JButton s; private javax.swing.JToggleButton shift; private javax.swing.JButton space; private javax.swing.JButton t; private javax.swing.JButton u; private javax.swing.JButton v; private javax.swing.JButton w; private javax.swing.JButton x; private javax.swing.JButton y; private javax.swing.JButton z; // End of variables declaration//GEN-END:variables private long x11id; private boolean symMode; //symbol mode private Object[][] table; private void initTable() { table = new Object[][] { {q, "q", "1"}, {w, "w", "2"}, {e, "e", "3"}, {r, "r", "4"}, {t, "t", "5"}, {y, "y", "6"}, {u, "u", "7"}, {i, "i", "8"}, {o, "o", "9"}, {p, "p", "0"}, {a, "a", "!"}, {s, "s", "@"}, {d, "d", "#"}, {f, "f", "$"}, {g, "g", "%"}, {h, "h", "^"}, {j, "j", "&"}, {k, "k", "*"}, {l, "l", "-"}, {z, "z", "("}, {x, "x", ")"}, {c, "c", "="}, {v, "v", "["}, {b, "b", "]"}, {n, "n", ":"}, {m, "m", ";"}, {comma, ",", "'"}, {period, ".", "\""} }; for(int idx=0;idx<table.length;idx++) { JButton button = (JButton)table[idx][0]; button.addActionListener(this); } } public void actionPerformed(ActionEvent ae) { Linux.x11_set_dock(x11id); JButton button = (JButton)ae.getSource(); String txt = button.getText(); int keycode = Linux.x11_keysym_to_keycode(txt.charAt(0)); if (!symMode && shift.isSelected()) { keycode += 0x100; //X11_SHIFT } Linux.x11_send_event(keycode, true); JF.sleep(10); Linux.x11_send_event(keycode, false); } public void setPosition(int keyboadHeight, int dockHeight) { if (keyboadHeight == 0) keyboadHeight = 1; Rectangle s = JF.getMaximumBounds(); setBounds(0, s.height - dockHeight - keyboadHeight, s.width, keyboadHeight); } public void addLayoutComponent(String string, Component cmpnt) { } public void removeLayoutComponent(Component cmpnt) { } public Dimension preferredLayoutSize(Container p) { return new Dimension(1,1); } public Dimension minimumLayoutSize(Container p) { return new Dimension(1,1); } public void layoutContainer(Container p) { int width = getWidth(); jPanel1.setBounds(0, 0, width, 50); jPanel2.setBounds(0, 50, width, 50); jPanel3.setBounds(0, 100, width, 50); jPanel4.setBounds(0, 150, width, 50); } }