diff --git a/frame.js b/frame.js
index 7f7c6a77..c8ed6435 100644
--- a/frame.js
+++ b/frame.js
@@ -120,7 +120,17 @@ Volcanos(chat.ONDAEMON, {help: "推荐引擎", _init: function(can, name) { if (
pwd: function(can, msg, arg) { can._wss_name = can.ondaemon._list[0] = arg[0] },
toast: function(can, msg, arg) { can.core.CallFunc(can.user.toast, {can: can, msg: msg, cmds: arg}) },
refresh: function(can, msg, sub) { sub.Update() },
+ input: function(can, msg, sub, arg) {
+ can.page.Select(can, sub._target, "input:focus", function(target) {
+ // can.page.Select(can, sub._target, "input", function(target) {
+ target.value += arg[0]
+ })
+ },
action: function(can, msg, sub, arg) {
+ if (can.page.Select(can, sub._option, "input.args[name="+arg[0]+"]", function(target) {
+ target.focus()
+ return target
+ }).length > 0) { return }
var _sub = can.core.Value(sub, chat._OUTPUTS_CURRENT)
if (_sub && _sub.onaction) {
_sub.onaction && _sub.onaction._daemon({}, _sub, arg)
diff --git a/page/index.html b/page/index.html
index bb1ed14d..c6cd6ce7 100644
--- a/page/index.html
+++ b/page/index.html
@@ -1,6 +1,6 @@
-
+
volcanos
diff --git a/plugin/input/keyboard.css b/plugin/input/keyboard.css
index f592d8f8..4d0af724 100644
--- a/plugin/input/keyboard.css
+++ b/plugin/input/keyboard.css
@@ -1,72 +1,70 @@
-fieldset.input.keyboard div.output div.small.key {
+fieldset.keyboard div.output div.key {
+ font-size:24px; text-align:center;
+ background-color:green; color:white; padding:0; margin:5px;
+ height:40px; width:40px; float:left;
+}
+fieldset.keyboard div.output div.key.double {
font-size:16px; white-space:pre;
}
-fieldset.input.keyboard div.output div.key {
- color:white;
- margin:5px;
- background-color:green;
- font-size:24px; text-align:center;
- height:40px; width:40px; float:left;
- padding:0;
-}
-fieldset.input.keyboard div.output div.key.Tab {
- width:60px;
- background-color:red;
-}
-fieldset.input.keyboard div.output div.key.CapsLock {
- width:70px;
- background-color:red;
-}
-fieldset.input.keyboard div.output div.key.Ctrl {
- width:70px;
- background-color:red;
-}
-fieldset.input.keyboard div.output div.key.Win {
- width:60px;
- background-color:red;
-}
-fieldset.input.keyboard div.output div.key.special {
+fieldset.keyboard div.output div.key.special {
font-size:16px;
-}
-fieldset.input.keyboard div.output div.key span {
- display:block;
- margin-top:2px;
-}
-fieldset.input.keyboard div.output div.key.special span {
- display:block;
- margin-top:10px;
-}
-fieldset.input.keyboard div.output div.key.Alt {
- width:60px;
background-color:red;
}
-fieldset.input.keyboard div.output div.key.Shift {
- width:90px;
- background-color:red;
+fieldset.keyboard div.output div.key.special.hold {
+ background-color:green;
}
-fieldset.input.keyboard div.output div.key.tail {
+fieldset.keyboard div.output div.key.tail {
width:70px;
- background-color:red;
}
-fieldset.input.keyboard div.output div.key.Shift.tail {
- width:140px;
- background-color:red;
+fieldset.keyboard div.output div.key.Tab {
+ width:60px;
}
-fieldset.input.keyboard div.output div.key.Enter {
- width:110px;
- background-color:red;
+fieldset.keyboard div.output div.key.Ctrl {
+ width:70px;
}
-fieldset.input.keyboard div.output div.key.Space {
- width:300px;
- background-color:red;
-}
-fieldset.input.keyboard div.output div.key.Backspace {
+fieldset.keyboard div.output div.key.Shift {
width:90px;
- background-color:red;
}
-fieldset.input.keyboard div.output br {
+fieldset.keyboard div.output div.key.Win {
+ width:60px;
+}
+fieldset.keyboard div.output div.key.Alt {
+ width:60px;
+}
+fieldset.keyboard div.output div.key.Space {
+ width:300px;
+}
+fieldset.keyboard div.output div.key.Shift.tail {
+ width:140px;
+}
+fieldset.keyboard div.output div.key.Enter {
+ width:110px;
+}
+fieldset.keyboard div.output div.key.Backspace {
+ width:90px;
+}
+fieldset.keyboard div.output div.key span {
+ margin-top:2px; display:block;
+}
+fieldset.keyboard div.output div.key.special span {
+ margin-top:10px; display:block;
+}
+fieldset.keyboard div.output br {
clear:both;
}
-fieldset.input.keyboard div.output div.key:hover {
+fieldset.keyboard div.output div.key:hover {
+ background-color:red;
+}
+fieldset.keyboard div.output div.key.special:hover {
background-color:green;
}
+fieldset.keyboard div.output {
+ min-width:750px;
+}
+
+table.content td input {
+ width:50px;
+}
+body.mobile table.content td input {
+ width:80px;
+}
diff --git a/plugin/input/keyboard.js b/plugin/input/keyboard.js
index a960f18f..720d31ee 100644
--- a/plugin/input/keyboard.js
+++ b/plugin/input/keyboard.js
@@ -8,22 +8,23 @@ Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: {
_make: function(event, can, meta, cb, target, last) {
var sub = target._can; if (sub && sub._cbs) { return }
cb(function(sub, cbs) { sub._cbs = cbs
+ can.onfigure.keyboard._show(can, sub, target)
+
+ })
+ },
+ _show: function(can, sub, target) {
can.require(["/plugin/input/keyboard.css"])
- var msg = can.request({}); can.onfigure.keyboard._normal(can, msg)
- var keys = {}
+ var msg = can.request({}); can.onfigure.keyboard._normal(can, msg)
+ var keys = {}; function hold(value, div) { keys[value.name] = div, can.page.ClassList.add(can, div, "hold") }
msg.Table(function(value) { value.type == "head" && can.page.Append(can, can._output, "br")
- var t = value.type+" "+value.name+(value.name.indexOf("\n")>-1? " small": value.name.length>1? " special": "")
+ var t = value.type+" "+value.name+(value.name.indexOf("\n")>-1? " double": value.name.length>1? " special": "")
var div = can.page.Append(can, sub._output, [{view: t, list: [{text: [value.name]}], onclick: function(event) {
switch (value.name) {
case "Ctrl":
- can._ctrl = !can._ctrl
- keys[value.name] = div
- can.page.style(can, div, "background-color", "green")
+ can._ctrl = !can._ctrl, hold(value, div)
break
case "Shift":
- can._shift = !can._shift
- keys[value.name] = div
- can.page.style(can, div, "background-color", "green")
+ can._shift = !can._shift, hold(value, div)
break
case "Backspace":
target.value = target.value.slice(0, -1)
@@ -33,6 +34,10 @@ Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: {
case "Esc":
break
default:
+ if (can.base.isFunc(target)) {
+ target(value.name)
+ return
+ }
can._shift = can._shift||event.shiftKey
if (value.name == "Space") {
target.value += " "
@@ -44,14 +49,13 @@ Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: {
} else {
target.value += value.name
}
- can.core.Item(keys, function(key, target) {
- can.page.style(can, target, "background-color", "")
+ can.core.Item(keys, function(key, div) {
+ can.page.ClassList.del(can, div, "hold")
}), can._ctrl = false, can._shift = false
}
target.focus(), can.user.toast(can, value.name)
} }]).first
})
- })
},
_normal: function(can, msg) {
msg.Push({type: "key head", name: "Esc"})
diff --git a/plugin/local/chat/keyboard.js b/plugin/local/chat/keyboard.js
new file mode 100644
index 00000000..d566e2f1
--- /dev/null
+++ b/plugin/local/chat/keyboard.js
@@ -0,0 +1,11 @@
+Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) {
+ can.onappend.table(can, msg)
+ can.onappend.board(can, msg)
+ var meta = {}
+ msg.Table(function(value, key) { meta[value.key] = value.value })
+ can.require(["/plugin/input/keyboard.js"], function() {
+ can.onfigure.keyboard._show(can, can, function(value) {
+ can.runAction(can.request({}, meta, can.Option()), "input", [value])
+ })
+ })
+}})